f7a40505e0d66103dd6a89983c12ea1a3309ed36
[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 Sun Apr 20 11:44:59 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 case "$d_quad:$use64bitint" in
5485 $undef:$define)
5486         cat >&4 <<EOF
5487
5488 *** You have chosen to use 64-bit integers,
5489 *** but none cannot be found.
5490 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5491 *** Cannot continue, aborting.
5492
5493 EOF
5494         exit 1
5495         ;;
5496 esac
5497
5498 : check for length of double
5499 echo " "
5500 case "$doublesize" in
5501 '')
5502         echo "Checking to see how big your double precision numbers are..." >&4
5503         $cat >try.c <<EOCP
5504 #include <stdio.h>
5505 #$i_stdlib I_STDLIB
5506 #ifdef I_STDLIB
5507 #include <stdlib.h>
5508 #endif
5509 int main()
5510 {
5511     printf("%d\n", (int)sizeof(double));
5512     exit(0);
5513 }
5514 EOCP
5515         set try
5516         if eval $compile_ok; then
5517                 doublesize=`$run ./try`
5518                 echo "Your double is $doublesize bytes long."
5519         else
5520                 dflt='8'
5521                 echo "(I can't seem to compile the test program.  Guessing...)"
5522                 rp="What is the size of a double precision number (in bytes)?"
5523                 . ./myread
5524                 doublesize="$ans"
5525         fi
5526         ;;
5527 esac
5528 $rm -f try.c try
5529
5530 : check for long doubles
5531 echo " "
5532 echo "Checking to see if you have long double..." >&4
5533 echo 'int main() { long double x = 7.0; }' > try.c
5534 set try
5535 if eval $compile; then
5536         val="$define"
5537         echo "You have long double."
5538 else
5539         val="$undef"
5540         echo "You do not have long double."
5541 fi
5542 $rm try.*
5543 set d_longdbl
5544 eval $setvar
5545
5546 : check for length of long double
5547 case "${d_longdbl}${longdblsize}" in
5548 $define)
5549         echo " "
5550         echo "Checking to see how big your long doubles are..." >&4
5551         $cat >try.c <<'EOCP'
5552 #include <stdio.h>
5553 int main()
5554 {
5555         printf("%d\n", sizeof(long double));
5556 }
5557 EOCP
5558         set try
5559         set try
5560         if eval $compile; then
5561                 longdblsize=`$run ./try`
5562                 echo "Your long doubles are $longdblsize bytes long."
5563         else
5564                 dflt='8'
5565                 echo " "
5566                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5567                 rp="What is the size of a long double (in bytes)?"
5568                 . ./myread
5569                 longdblsize="$ans"
5570         fi
5571         if $test "X$doublesize" = "X$longdblsize"; then
5572                 echo "(That isn't any different from an ordinary double.)"
5573         fi      
5574         ;;
5575 esac
5576 $rm -f try.* try
5577
5578 : determine the architecture name
5579 echo " "
5580 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5581         tarch=`arch`"-$osname"
5582 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5583         if uname -m > tmparch 2>&1 ; then
5584                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5585                         -e 's/$/'"-$osname/" tmparch`
5586         else
5587                 tarch="$osname"
5588         fi
5589         $rm -f tmparch
5590 else
5591         tarch="$osname"
5592 fi
5593 case "$myarchname" in
5594 ''|"$tarch") ;;
5595 *)
5596         echo "(Your architecture name used to be $myarchname.)"
5597         archname=''
5598         ;;
5599 esac
5600 case "$targetarch" in
5601 '') ;;
5602 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5603 esac
5604 myarchname="$tarch"
5605 case "$archname" in
5606 '') dflt="$tarch";;
5607 *) dflt="$archname";;
5608 esac
5609 rp='What is your architecture name'
5610 . ./myread
5611 archname="$ans"
5612 case "$usethreads" in
5613 $define)
5614         echo "Threads selected." >&4
5615         case "$archname" in
5616         *-thread*) echo "...and architecture name already has -thread." >&4
5617                 ;;
5618         *)      archname="$archname-thread"
5619                 echo "...setting architecture name to $archname." >&4
5620                 ;;
5621         esac
5622         ;;
5623 esac
5624 case "$usemultiplicity" in
5625 $define)
5626         echo "Multiplicity selected." >&4
5627         case "$archname" in
5628         *-multi*) echo "...and architecture name already has -multi." >&4
5629                 ;;
5630         *)      archname="$archname-multi"
5631                 echo "...setting architecture name to $archname." >&4
5632                 ;;
5633         esac
5634         ;;
5635 esac
5636 case "$use64bitint$use64bitall" in
5637 *"$define"*)
5638         case "$archname64" in
5639         '')
5640                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5641                 ;;
5642         *)
5643                 case "$use64bitint" in
5644                 "$define") echo "64 bit integers selected." >&4 ;;
5645                 esac
5646                 case "$use64bitall" in
5647                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5648                 esac
5649                 case "$archname" in
5650                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5651                         ;;
5652                 *)      archname="$archname-$archname64"
5653                         echo "...setting architecture name to $archname." >&4
5654                         ;;
5655                 esac
5656                 ;;
5657         esac
5658 esac
5659 case "$uselongdouble" in
5660 $define)
5661         echo "Long doubles selected." >&4
5662         case "$longdblsize" in
5663         $doublesize)
5664                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5665                 ;;
5666         *)
5667                 case "$archname" in
5668                 *-ld*) echo "...and architecture name already has -ld." >&4
5669                         ;;
5670                 *)      archname="$archname-ld"
5671                         echo "...setting architecture name to $archname." >&4
5672                         ;;
5673                 esac
5674                 ;;
5675         esac
5676         ;;
5677 esac
5678 case "$useperlio" in
5679 $define)
5680         echo "Perlio selected." >&4
5681         ;;
5682 *)
5683         echo "Perlio not selected, using stdio." >&4
5684         case "$archname" in
5685         *-stdio*) echo "...and architecture name already has -stdio." >&4
5686                 ;;
5687         *)      archname="$archname-stdio"
5688                 echo "...setting architecture name to $archname." >&4
5689                 ;;
5690         esac
5691         ;;
5692 esac
5693
5694 : determine root of directory hierarchy where package will be installed.
5695 case "$prefix" in
5696 '')
5697         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5698         ;;
5699 *?/)
5700         dflt=`echo "$prefix" | sed 's/.$//'`
5701         ;;
5702 *)
5703         dflt="$prefix"
5704         ;;
5705 esac
5706 $cat <<EOM
5707
5708 By default, $package will be installed in $dflt/bin, manual pages
5709 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5710 installation directories. Typically this is something like /usr/local.
5711 If you wish to have binaries under /usr/bin but other parts of the
5712 installation under /usr/local, that's ok: you will be prompted
5713 separately for each of the installation directories, the prefix being
5714 only used to set the defaults.
5715
5716 EOM
5717 fn=d~
5718 rp='Installation prefix to use?'
5719 . ./getfile
5720 oldprefix=''
5721 case "$prefix" in
5722 '') ;;
5723 *)
5724         case "$ans" in
5725         "$prefix") ;;
5726         *) oldprefix="$prefix";;
5727         esac
5728         ;;
5729 esac
5730 prefix="$ans"
5731 prefixexp="$ansexp"
5732
5733 case "$afsroot" in
5734 '')     afsroot=/afs ;;
5735 *)      afsroot=$afsroot ;;
5736 esac
5737
5738 : is AFS running?
5739 echo " "
5740 case "$afs" in
5741 $define|true)   afs=true ;;
5742 $undef|false)   afs=false ;;
5743 *)      if test -d $afsroot; then
5744                 afs=true
5745         else
5746                 afs=false
5747         fi
5748         ;;
5749 esac
5750 if $afs; then
5751         echo "AFS may be running... I'll be extra cautious then..." >&4
5752 else
5753         echo "AFS does not seem to be running..." >&4
5754 fi
5755
5756 : determine installation prefix for where package is to be installed.
5757 if $afs; then 
5758 $cat <<EOM
5759
5760 Since you are running AFS, I need to distinguish the directory in which
5761 files will reside from the directory in which they are installed (and from
5762 which they are presumably copied to the former directory by occult means).
5763
5764 EOM
5765         case "$installprefix" in
5766         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5767         *) dflt="$installprefix";;
5768         esac
5769 else
5770 $cat <<EOM
5771
5772 In some special cases, particularly when building $package for distribution,
5773 it is convenient to distinguish the directory in which files should be
5774 installed from the directory ($prefix) in which they will
5775 eventually reside.  For most users, these two directories are the same.
5776
5777 EOM
5778         case "$installprefix" in
5779         '') dflt=$prefix ;;
5780         *) dflt=$installprefix;;
5781         esac
5782 fi
5783 fn=d~
5784 rp='What installation prefix should I use for installing files?'
5785 . ./getfile
5786 installprefix="$ans"
5787 installprefixexp="$ansexp"
5788
5789 : set the prefixit variable, to compute a suitable default value
5790 prefixit='case "$3" in
5791 ""|none)
5792         case "$oldprefix" in
5793         "") eval "$1=\"\$$2\"";;
5794         *)
5795                 case "$3" in
5796                 "") eval "$1=";;
5797                 none)
5798                         eval "tp=\"\$$2\"";
5799                         case "$tp" in
5800                         ""|" ") eval "$1=\"\$$2\"";;
5801                         *) eval "$1=";;
5802                         esac;;
5803                 esac;;
5804         esac;;
5805 *)
5806         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5807         case "$tp" in
5808         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5809         /*-$oldprefix/*|\~*-$oldprefix/*)
5810                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5811         *) eval "$1=\"\$$2\"";;
5812         esac;;
5813 esac'
5814
5815 : get the patchlevel
5816 echo " "
5817 echo "Getting the current patchlevel..." >&4
5818 if $test -r $rsrc/patchlevel.h;then
5819         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5820         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5821         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5822         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5823         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5824         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5825        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5826 else
5827         revision=0
5828         patchlevel=0
5829         subversion=0
5830         api_revision=0
5831         api_version=0
5832         api_subversion=0
5833         perl_patchlevel=0
5834         $echo "(You do not have patchlevel.h.  Eek.)"
5835 fi
5836 if $test -r $rsrc/.patch ; then  
5837         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5838                 perl_patchlevel=`cat $rsrc/.patch`
5839         fi
5840 fi
5841 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5842 version_patchlevel_string="version $patchlevel subversion $subversion"
5843 case "$perl_patchlevel" in
5844 0|'') ;;
5845 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5846 esac
5847
5848 $echo "(You have $package $version_patchlevel_string.)"
5849
5850 case "$osname" in
5851 dos|vms)
5852         : XXX Should be a Configure test for double-dots in filenames.
5853         version=`echo $revision $patchlevel $subversion | \
5854                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5855         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5856                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5857         ;;
5858 *)
5859         version=`echo $revision $patchlevel $subversion | \
5860                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5861         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5862                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5863         ;;
5864 esac
5865 : Special case the 5.005_xx maintenance series, which used 5.005
5866 : without any subversion label as a subdirectory in $sitelib
5867 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5868         api_versionstring='5.005'
5869 fi
5870
5871 : determine installation style
5872 : For now, try to deduce it from prefix unless it is already set.
5873 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5874 case "$installstyle" in
5875 '')     case "$prefix" in
5876                 *perl*) dflt='lib';;
5877                 *) dflt='lib/perl5' ;;
5878         esac
5879         ;;
5880 *)      dflt="$installstyle" ;;
5881 esac
5882 : Probably not worth prompting for this since we prompt for all
5883 : the directories individually, and the prompt would be too long and
5884 : confusing anyway.
5885 installstyle=$dflt
5886
5887 : determine where private library files go
5888 : Usual default is /usr/local/lib/perl5/$version.
5889 : Also allow things like /opt/perl/lib/$version, since 
5890 : /opt/perl/lib/perl5... would be redundant.
5891 : The default "style" setting is made in installstyle.U
5892 case "$installstyle" in
5893 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5894 *)       set dflt privlib lib/$version ;;
5895 esac
5896 eval $prefixit
5897 $cat <<EOM
5898
5899 There are some auxiliary files for $package that need to be put into a
5900 private library directory that is accessible by everyone.
5901
5902 EOM
5903 fn=d~+
5904 rp='Pathname where the private library files will reside?'
5905 . ./getfile
5906 privlib="$ans"
5907 privlibexp="$ansexp"
5908 : Change installation prefix, if necessary.
5909 if $test X"$prefix" != X"$installprefix"; then
5910         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5911 else
5912         installprivlib="$privlibexp"
5913 fi
5914
5915 : set the prefixup variable, to restore leading tilda escape
5916 prefixup='case "$prefixexp" in
5917 "$prefix") ;;
5918 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5919 esac'
5920
5921 : determine where public architecture dependent libraries go
5922 set archlib archlib
5923 eval $prefixit
5924 : privlib default is /usr/local/lib/$package/$version
5925 : archlib default is /usr/local/lib/$package/$version/$archname
5926 : privlib may have an optional trailing /share.
5927 tdflt=`echo $privlib | $sed 's,/share$,,'`
5928 tdflt=$tdflt/$archname
5929 case "$archlib" in
5930 '')     dflt=$tdflt
5931         ;;
5932 *)      dflt="$archlib"
5933     ;;
5934 esac
5935 $cat <<EOM
5936
5937 $spackage contains architecture-dependent library files.  If you are
5938 sharing libraries in a heterogeneous environment, you might store
5939 these files in a separate location.  Otherwise, you can just include
5940 them with the rest of the public library files.
5941
5942 EOM
5943 fn=d+~
5944 rp='Where do you want to put the public architecture-dependent libraries?'
5945 . ./getfile
5946 archlib="$ans"
5947 archlibexp="$ansexp"
5948 if $test X"$archlib" = X"$privlib"; then
5949         d_archlib="$undef"
5950 else
5951         d_archlib="$define"
5952 fi
5953 : Change installation prefix, if necessary.
5954 if $test X"$prefix" != X"$installprefix"; then
5955         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5956 else
5957         installarchlib="$archlibexp"
5958 fi
5959
5960 : see if setuid scripts can be secure
5961 $cat <<EOM
5962
5963 Some kernels have a bug that prevents setuid #! scripts from being
5964 secure.  Some sites have disabled setuid #! scripts because of this.
5965
5966 First let's decide if your kernel supports secure setuid #! scripts.
5967 (If setuid #! scripts would be secure but have been disabled anyway,
5968 don't say that they are secure if asked.)
5969
5970 EOM
5971
5972 val="$undef"
5973 if $test -d /dev/fd; then
5974         echo "#!$ls" >reflect
5975         chmod +x,u+s reflect
5976         ./reflect >flect 2>&1
5977         if $contains "/dev/fd" flect >/dev/null; then
5978                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5979                 val="$define"
5980         else
5981                 $cat <<EOM
5982 If you are not sure if they are secure, I can check but I'll need a
5983 username and password different from the one you are using right now.
5984 If you don't have such a username or don't want me to test, simply
5985 enter 'none'.
5986
5987 EOM
5988                 rp='Other username to test security of setuid scripts with?'
5989                 dflt='none'
5990                 . ./myread
5991                 case "$ans" in
5992                 n|none)
5993                         case "$d_suidsafe" in
5994                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5995                                 dflt=n;;
5996                         "$undef")
5997                                 echo "Well, the $hint value is *not* secure." >&4
5998                                 dflt=n;;
5999                         *)      echo "Well, the $hint value *is* secure." >&4
6000                                 dflt=y;;
6001                         esac
6002                         ;;
6003                 *)
6004                         $rm -f reflect flect
6005                         echo "#!$ls" >reflect
6006                         chmod +x,u+s reflect
6007                         echo >flect
6008                         chmod a+w flect
6009                         echo '"su" will (probably) prompt you for '"$ans's password."
6010                         su $ans -c './reflect >flect'
6011                         if $contains "/dev/fd" flect >/dev/null; then
6012                                 echo "Okay, it looks like setuid scripts are secure." >&4
6013                                 dflt=y
6014                         else
6015                                 echo "I don't think setuid scripts are secure." >&4
6016                                 dflt=n
6017                         fi
6018                         ;;
6019                 esac
6020                 rp='Does your kernel have *secure* setuid scripts?'
6021                 . ./myread
6022                 case "$ans" in
6023                 [yY]*)  val="$define";;
6024                 *)      val="$undef";;
6025                 esac
6026         fi
6027 else
6028         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6029         echo "(That's for file descriptors, not floppy disks.)"
6030         val="$undef"
6031 fi
6032 set d_suidsafe
6033 eval $setvar
6034
6035 $rm -f reflect flect
6036
6037 : now see if they want to do setuid emulation
6038 echo " "
6039 val="$undef"
6040 case "$d_suidsafe" in
6041 "$define")
6042         val="$undef"
6043         echo "No need to emulate SUID scripts since they are secure here." >&4
6044         ;;
6045 *)
6046         $cat <<EOM
6047 Some systems have disabled setuid scripts, especially systems where
6048 setuid scripts cannot be secure.  On systems where setuid scripts have
6049 been disabled, the setuid/setgid bits on scripts are currently
6050 useless.  It is possible for $package to detect those bits and emulate
6051 setuid/setgid in a secure fashion.  This emulation will only work if
6052 setuid scripts have been disabled in your kernel.
6053
6054 EOM
6055         case "$d_dosuid" in
6056         "$define") dflt=y ;;
6057         *) dflt=n ;;
6058         esac
6059         rp="Do you want to do setuid/setgid emulation?"
6060         . ./myread
6061         case "$ans" in
6062         [yY]*)  val="$define";;
6063         *)      val="$undef";;
6064         esac
6065         ;;
6066 esac
6067 set d_dosuid
6068 eval $setvar
6069
6070 : see if this is a malloc.h system
6071 : we want a real compile instead of Inhdr because some systems have a
6072 : malloc.h that just gives a compile error saying to use stdlib.h instead
6073 echo " "
6074 $cat >try.c <<EOCP
6075 #include <stdlib.h>
6076 #include <malloc.h>
6077 int main () { return 0; }
6078 EOCP
6079 set try
6080 if eval $compile; then
6081     echo "<malloc.h> found." >&4
6082     val="$define"
6083 else
6084     echo "<malloc.h> NOT found." >&4
6085     val="$undef"
6086 fi
6087 $rm -f try.c try
6088 set i_malloc
6089 eval $setvar
6090
6091 : check for void type
6092 echo " "
6093 echo "Checking to see how well your C compiler groks the void type..." >&4
6094 case "$voidflags" in
6095 '')
6096         $cat >try.c <<EOCP
6097 #$i_stdlib I_STDLIB
6098 #ifdef I_STDLIB
6099 #include <stdlib.h>
6100 #endif
6101 #if TRY & 1
6102 void sub() {
6103 #else
6104 sub() {
6105 #endif
6106         extern void moo();      /* function returning void */
6107         void (*goo)();          /* ptr to func returning void */
6108 #if TRY & 8
6109         void *hue;              /* generic ptr */
6110 #endif
6111 #if TRY & 2
6112         void (*foo[10])();
6113 #endif
6114
6115 #if TRY & 4
6116         if(goo == moo) {
6117                 exit(0);
6118         }
6119 #endif
6120         exit(0);
6121 }
6122 int main() { sub(); }
6123 EOCP
6124         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6125                 voidflags=$defvoidused
6126         echo "Good.  It appears to support void to the level $package wants.">&4
6127                 if $contains warning .out >/dev/null 2>&1; then
6128                         echo "However, you might get some warnings that look like this:"
6129                         $cat .out
6130                 fi
6131         else
6132 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6133                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6134                         echo "It supports 1..."
6135                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6136                                 echo "It also supports 2..."
6137                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6138                                         voidflags=7
6139                                         echo "And it supports 4 but not 8 definitely."
6140                                 else
6141                                         echo "It doesn't support 4..."
6142                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6143                                                 voidflags=11
6144                                                 echo "But it supports 8."
6145                                         else
6146                                                 voidflags=3
6147                                                 echo "Neither does it support 8."
6148                                         fi
6149                                 fi
6150                         else
6151                                 echo "It does not support 2..."
6152                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6153                                         voidflags=13
6154                                         echo "But it supports 4 and 8."
6155                                 else
6156                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6157                                                 voidflags=5
6158                                                 echo "And it supports 4 but has not heard about 8."
6159                                         else
6160                                                 echo "However it supports 8 but not 4."
6161                                         fi
6162                                 fi
6163                         fi
6164                 else
6165                         echo "There is no support at all for void."
6166                         voidflags=0
6167                 fi
6168         fi
6169 esac
6170 case "$voidflags" in
6171 "$defvoidused") ;;
6172 *)      $cat >&4 <<'EOM'
6173   Support flag bits are:
6174     1: basic void declarations.
6175     2: arrays of pointers to functions returning void.
6176     4: operations between pointers to and addresses of void functions.
6177     8: generic void pointers.
6178 EOM
6179         dflt="$voidflags";
6180         rp="Your void support flags add up to what?"
6181         . ./myread
6182         voidflags="$ans"
6183         ;;
6184 esac
6185 $rm -f try.* .out
6186
6187 : check for length of pointer
6188 echo " "
6189 case "$ptrsize" in
6190 '')
6191         echo "Checking to see how big your pointers are..." >&4
6192         if test "$voidflags" -gt 7; then
6193                 echo '#define VOID_PTR char *' > try.c
6194         else
6195                 echo '#define VOID_PTR void *' > try.c
6196         fi
6197         $cat >>try.c <<EOCP
6198 #include <stdio.h>
6199 #$i_stdlib I_STDLIB
6200 #ifdef I_STDLIB
6201 #include <stdlib.h>
6202 #endif
6203 int main()
6204 {
6205     printf("%d\n", (int)sizeof(VOID_PTR));
6206     exit(0);
6207 }
6208 EOCP
6209         set try
6210         if eval $compile_ok; then
6211                 ptrsize=`$run ./try`
6212                 echo "Your pointers are $ptrsize bytes long."
6213         else
6214                 dflt='4'
6215                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6216                 rp="What is the size of a pointer (in bytes)?"
6217                 . ./myread
6218                 ptrsize="$ans"
6219         fi
6220         ;;
6221 esac
6222 $rm -f try.c try
6223 case "$use64bitall" in
6224 "$define"|true|[yY]*)
6225         case "$ptrsize" in
6226         4)      cat <<EOM >&4
6227
6228 *** You have chosen a maximally 64-bit build,
6229 *** but your pointers are only 4 bytes wide.
6230 *** Please rerun Configure without -Duse64bitall.
6231 EOM
6232                 case "$d_quad" in
6233                 define)
6234                         cat <<EOM >&4
6235 *** Since you have quads, you could possibly try with -Duse64bitint.
6236 EOM
6237                         ;;
6238                 esac
6239                 cat <<EOM >&4
6240 *** Cannot continue, aborting.
6241
6242 EOM
6243
6244                 exit 1
6245                 ;;
6246         esac
6247         ;;
6248 esac
6249
6250
6251 : determine which malloc to compile in
6252 echo " "
6253 case "$usemymalloc" in
6254 [yY]*|true|$define)     dflt='y' ;;
6255 [nN]*|false|$undef)     dflt='n' ;;
6256 *)      case "$ptrsize" in
6257         4) dflt='y' ;;
6258         *) dflt='n' ;;
6259         esac
6260         ;;
6261 esac
6262 rp="Do you wish to attempt to use the malloc that comes with $package?"
6263 . ./myread
6264 usemymalloc="$ans"
6265 case "$ans" in
6266 y*|true)
6267         usemymalloc='y'
6268         mallocsrc='malloc.c'
6269         mallocobj="malloc$_o"
6270         d_mymalloc="$define"
6271         case "$libs" in
6272         *-lmalloc*)
6273                 : Remove malloc from list of libraries to use
6274                 echo "Removing unneeded -lmalloc from library list" >&4
6275                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6276                 shift
6277                 libs="$*"
6278                 echo "libs = $libs" >&4
6279                 ;;
6280         esac
6281         ;;
6282 *)
6283         usemymalloc='n'
6284         mallocsrc=''
6285         mallocobj=''
6286         d_mymalloc="$undef"
6287         ;;
6288 esac
6289
6290 : compute the return types of malloc and free
6291 echo " "
6292 $cat >malloc.c <<END
6293 #$i_malloc I_MALLOC
6294 #$i_stdlib I_STDLIB
6295 #include <stdio.h>
6296 #include <sys/types.h>
6297 #ifdef I_MALLOC
6298 #include <malloc.h>
6299 #endif
6300 #ifdef I_STDLIB
6301 #include <stdlib.h>
6302 #endif
6303 #ifdef TRY_MALLOC
6304 void *malloc();
6305 #endif
6306 #ifdef TRY_FREE
6307 void free();
6308 #endif
6309 END
6310 case "$malloctype" in
6311 '')
6312         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6313                 malloctype='void *'
6314         else
6315                 malloctype='char *'
6316         fi
6317         ;;
6318 esac
6319 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6320
6321 case "$freetype" in
6322 '')
6323         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6324                 freetype='void'
6325         else
6326                 freetype='int'
6327         fi
6328         ;;
6329 esac
6330 echo "Your system uses $freetype free(), it would seem." >&4
6331 $rm -f malloc.[co]
6332 $cat <<EOM
6333
6334 After $package is installed, you may wish to install various
6335 add-on modules and utilities.  Typically, these add-ons will
6336 be installed under $prefix with the rest
6337 of this package.  However, you may wish to install such add-ons
6338 elsewhere under a different prefix.
6339
6340 If you do not wish to put everything under a single prefix, that's
6341 ok.  You will be prompted for the individual locations; this siteprefix
6342 is only used to suggest the defaults.
6343
6344 The default should be fine for most people.
6345
6346 EOM
6347 fn=d~+
6348 rp='Installation prefix to use for add-on modules and utilities?'
6349 : XXX Here might be another good place for an installstyle setting.
6350 case "$siteprefix" in
6351 '') dflt=$prefix ;;
6352 *)  dflt=$siteprefix ;;
6353 esac
6354 . ./getfile
6355 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6356 oldsiteprefix=''
6357 case "$siteprefix" in
6358 '') ;;
6359 *)      case "$ans" in
6360         "$prefix") ;;
6361         *) oldsiteprefix="$prefix";;
6362         esac
6363         ;;
6364 esac
6365 siteprefix="$ans"
6366 siteprefixexp="$ansexp"
6367
6368 : determine where site specific libraries go.
6369 : Usual default is /usr/local/lib/perl5/site_perl/$version
6370 : The default "style" setting is made in installstyle.U
6371 : XXX No longer works with Prefixit stuff.
6372 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6373 case "$sitelib" in
6374 '') case "$installstyle" in
6375         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6376         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6377         esac
6378         ;;
6379 *)      dflt="$sitelib"
6380         ;;
6381 esac
6382 $cat <<EOM
6383
6384 The installation process will create a directory for
6385 site-specific extensions and modules.  Most users find it convenient
6386 to place all site-specific files in this directory rather than in the
6387 main distribution directory.
6388
6389 EOM
6390 fn=d~+
6391 rp='Pathname for the site-specific library files?'
6392 . ./getfile
6393 sitelib="$ans"
6394 sitelibexp="$ansexp"
6395 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6396 : Change installation prefix, if necessary.
6397 if $test X"$prefix" != X"$installprefix"; then
6398         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6399 else
6400         installsitelib="$sitelibexp"
6401 fi
6402
6403 : determine where site specific architecture-dependent libraries go.
6404 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6405 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6406 : sitelib may have an optional trailing /share.
6407 case "$sitearch" in
6408 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6409         dflt="$dflt/$archname"
6410         ;;
6411 *)      dflt="$sitearch"
6412         ;;
6413 esac
6414 set sitearch sitearch none
6415 eval $prefixit
6416 $cat <<EOM
6417
6418 The installation process will also create a directory for
6419 architecture-dependent site-specific extensions and modules.
6420
6421 EOM
6422 fn=d~+
6423 rp='Pathname for the site-specific architecture-dependent library files?'
6424 . ./getfile
6425 sitearch="$ans"
6426 sitearchexp="$ansexp"
6427 : Change installation prefix, if necessary.
6428 if $test X"$prefix" != X"$installprefix"; then
6429         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6430 else
6431         installsitearch="$sitearchexp"
6432 fi
6433
6434 $cat <<EOM
6435
6436 The installation process will also create a directory for
6437 vendor-supplied add-ons.  Vendors who supply perl with their system
6438 may find it convenient to place all vendor-supplied files in this
6439 directory rather than in the main distribution directory.  This will
6440 ease upgrades between binary-compatible maintenance versions of perl.
6441
6442 Of course you may also use these directories in whatever way you see
6443 fit.  For example, you might use them to access modules shared over a
6444 company-wide network.
6445
6446 The default answer should be fine for most people.
6447 This causes further questions about vendor add-ons to be skipped
6448 and no vendor-specific directories will be configured for perl.
6449
6450 EOM
6451 rp='Do you want to configure vendor-specific add-on directories?'
6452 case "$usevendorprefix" in
6453 define|true|[yY]*) dflt=y ;;
6454 *)      : User may have set vendorprefix directly on Configure command line.
6455         case "$vendorprefix" in
6456         ''|' ') dflt=n ;;
6457         *)      dflt=y ;;
6458         esac
6459         ;;
6460 esac
6461 . ./myread
6462 case "$ans" in
6463 [yY]*)  fn=d~+
6464         rp='Installation prefix to use for vendor-supplied add-ons?'
6465         case "$vendorprefix" in
6466         '') dflt='' ;;
6467         *)  dflt=$vendorprefix ;;
6468         esac
6469         . ./getfile
6470         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6471         oldvendorprefix=''
6472         case "$vendorprefix" in
6473         '') ;;
6474         *)      case "$ans" in
6475                 "$prefix") ;;
6476                 *) oldvendorprefix="$prefix";;
6477                 esac
6478                 ;;
6479         esac
6480         usevendorprefix="$define"
6481         vendorprefix="$ans"
6482         vendorprefixexp="$ansexp"
6483         ;;
6484 *)      usevendorprefix="$undef"
6485         vendorprefix=''
6486         vendorprefixexp=''
6487         ;;
6488 esac
6489
6490 case "$vendorprefix" in
6491 '')     d_vendorlib="$undef"
6492         vendorlib=''
6493         vendorlibexp=''
6494         ;;
6495 *)      d_vendorlib="$define"
6496         : determine where vendor-supplied modules go.
6497         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6498         case "$vendorlib" in
6499         '')
6500                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6501                 case "$installstyle" in
6502                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6503                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6504                 esac
6505                 ;;
6506         *)      dflt="$vendorlib"
6507                 ;;
6508         esac
6509         fn=d~+
6510         rp='Pathname for the vendor-supplied library files?'
6511         . ./getfile
6512         vendorlib="$ans"
6513         vendorlibexp="$ansexp"
6514         ;;
6515 esac
6516 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6517 : Change installation prefix, if necessary.
6518 if $test X"$prefix" != X"$installprefix"; then
6519         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6520 else
6521         installvendorlib="$vendorlibexp"
6522 fi
6523
6524 case "$vendorprefix" in
6525 '')     d_vendorarch="$undef"
6526         vendorarch=''
6527         vendorarchexp=''
6528         ;;
6529 *)      d_vendorarch="$define"
6530         : determine where vendor-supplied architecture-dependent libraries go.
6531         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6532         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6533         : vendorlib may have an optional trailing /share.
6534         case "$vendorarch" in
6535         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6536                 dflt="$dflt/$archname"
6537                 ;;
6538         *)      dflt="$vendorarch" ;;
6539         esac
6540         fn=d~+
6541         rp='Pathname for vendor-supplied architecture-dependent files?'
6542         . ./getfile
6543         vendorarch="$ans"
6544         vendorarchexp="$ansexp"
6545         ;;
6546 esac
6547 : Change installation prefix, if necessary.
6548 if $test X"$prefix" != X"$installprefix"; then
6549         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6550 else
6551         installvendorarch="$vendorarchexp"
6552 fi
6553
6554 : Final catch-all directories to search
6555 $cat <<EOM
6556
6557 Lastly, you can have perl look in other directories for extensions and
6558 modules in addition to those already specified.
6559 These directories will be searched after 
6560         $sitearch 
6561         $sitelib 
6562 EOM
6563 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6564 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6565 echo ' '
6566 case "$otherlibdirs" in
6567 ''|' ') dflt='none' ;;
6568 *)      dflt="$otherlibdirs" ;;
6569 esac
6570 $cat <<EOM
6571 Enter a colon-separated set of extra paths to include in perl's @INC
6572 search path, or enter 'none' for no extra paths.
6573
6574 EOM
6575
6576 rp='Colon-separated list of additional directories for perl to search?'
6577 . ./myread
6578 case "$ans" in
6579 ' '|''|none)    otherlibdirs=' ' ;;     
6580 *)      otherlibdirs="$ans" ;;
6581 esac
6582 case "$otherlibdirs" in
6583 ' ') val=$undef ;;
6584 *)      val=$define ;;
6585 esac
6586 set d_perl_otherlibdirs
6587 eval $setvar
6588
6589 : Cruising for prototypes
6590 echo " "
6591 echo "Checking out function prototypes..." >&4
6592 $cat >prototype.c <<EOCP
6593 #$i_stdlib I_STDLIB
6594 #ifdef I_STDLIB
6595 #include <stdlib.h>
6596 #endif
6597 int main(int argc, char *argv[]) {
6598         exit(0);}
6599 EOCP
6600 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6601         echo "Your C compiler appears to support function prototypes."
6602         val="$define"
6603 else
6604         echo "Your C compiler doesn't seem to understand function prototypes."
6605         val="$undef"
6606 fi
6607 set prototype
6608 eval $setvar
6609 $rm -f prototype*
6610
6611 case "$prototype" in
6612 "$define") ;;
6613 *)      ansi2knr='ansi2knr'
6614         echo " "
6615         cat <<EOM >&4
6616
6617 $me:  FATAL ERROR:
6618 This version of $package can only be compiled by a compiler that 
6619 understands function prototypes.  Unfortunately, your C compiler 
6620         $cc $ccflags
6621 doesn't seem to understand them.  Sorry about that.
6622
6623 If GNU cc is available for your system, perhaps you could try that instead.  
6624
6625 Eventually, we hope to support building Perl with pre-ANSI compilers.
6626 If you would like to help in that effort, please contact <perlbug@perl.org>.
6627
6628 Aborting Configure now.
6629 EOM
6630         exit 2
6631         ;;
6632 esac
6633
6634 : determine where public executables go
6635 echo " "
6636 set dflt bin bin
6637 eval $prefixit
6638 fn=d~
6639 rp='Pathname where the public executables will reside?'
6640 . ./getfile
6641 if $test "X$ansexp" != "X$binexp"; then
6642         installbin=''
6643 fi
6644 bin="$ans"
6645 binexp="$ansexp"
6646 : Change installation prefix, if necessary.
6647 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6648 if $test X"$prefix" != X"$installprefix"; then
6649         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6650 else
6651         installbin="$binexp"
6652 fi
6653
6654 echo " "
6655 case "$extras" in
6656 '') dflt='n';;
6657 *) dflt='y';;
6658 esac
6659 cat <<EOM
6660 Perl can be built with extra modules or bundles of modules which
6661 will be fetched from the CPAN and installed alongside Perl.
6662
6663 Notice that you will need access to the CPAN; either via the Internet,
6664 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6665 be asked later to configure the CPAN.pm module which will in turn do
6666 the installation of the rest of the extra modules or bundles.)
6667
6668 Notice also that if the modules require any external software such as
6669 libraries and headers (the libz library and the zlib.h header for the
6670 Compress::Zlib module, for example) you MUST have any such software
6671 already installed, this configuration process will NOT install such
6672 things for you.
6673
6674 If this doesn't make any sense to you, just accept the default '$dflt'.
6675 EOM
6676 rp='Install any extra modules (y or n)?'
6677 . ./myread
6678 case "$ans" in
6679 y|Y)
6680         cat <<EOM
6681
6682 Please list any extra modules or bundles to be installed from CPAN,
6683 with spaces between the names.  The names can be in any format the
6684 'install' command of CPAN.pm will understand.  (Answer 'none',
6685 without the quotes, to install no extra modules or bundles.)
6686 EOM
6687         rp='Extras?'
6688         dflt="$extras"
6689         . ./myread
6690         extras="$ans"
6691 esac
6692 case "$extras" in
6693 ''|'none')
6694         val=''
6695         $rm -f ../extras.lst
6696         ;;
6697 *)      echo "(Saving the list of extras for later...)"
6698         echo "$extras" > ../extras.lst
6699         val="'$extras'"
6700         ;;
6701 esac
6702 set extras
6703 eval $setvar
6704 echo " "
6705
6706 : determine where html pages for programs go
6707 set html1dir html1dir none
6708 eval $prefixit
6709 $cat <<EOM
6710
6711 If you wish to install html files for programs in $spackage, indicate 
6712 the appropriate directory here.  To skip installing html files,
6713 answer "none".
6714 EOM
6715 case "$html1dir" in
6716 ''|none|$undef|' ') dflt=none ;;
6717 *) dflt=$html1dir ;;
6718 esac
6719 fn=dn+~
6720 rp="Directory for the main $spackage html pages?"
6721 . ./getfile
6722 html1dir="$ans"
6723 html1direxp="$ansexp"
6724 : Use ' ' for none so value is preserved next time through Configure
6725 $test X"$html1dir" = "X" && html1dir=' '
6726 : Change installation prefix, if necessary.
6727 if $test X"$prefix" != X"$installprefix"; then
6728         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6729 else
6730         installhtml1dir="$html1direxp"
6731 fi
6732
6733 : determine where html pages for libraries and modules go
6734 set html3dir html3dir none
6735 eval $prefixit
6736 $cat <<EOM
6737
6738 If you wish to install html files for modules associated with $spackage,
6739 indicate the appropriate directory here.  To skip installing html files,
6740 answer "none".
6741 EOM
6742 : There is no obvious default.  If they have specified html1dir, then
6743 : try to key off that, possibly changing .../html1 into .../html3.
6744 case "$html3dir" in
6745 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6746 *) dflt=$html3dir ;;
6747 esac
6748 fn=dn+~
6749 rp="Directory for the $spackage module html pages?"
6750 . ./getfile
6751 html3dir="$ans"
6752 html3direxp="$ansexp"
6753 : Use ' ' for none so value is preserved next time through Configure
6754 $test X"$html3dir" = "X" && html3dir=' '
6755 : Change installation prefix, if necessary.
6756 if $test X"$prefix" != X"$installprefix"; then
6757         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6758 else
6759         installhtml3dir="$html3direxp"
6760 fi
6761
6762 : Find perl5.005 or later.
6763 echo "Looking for a previously installed perl5.005 or later... "
6764 case "$perl5" in
6765 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6766                 : Check if this perl is recent and can load a simple module
6767                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6768                         perl5=$tdir/perl
6769                         break;
6770                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6771                         perl5=$tdir/perl5
6772                         break;
6773                 fi
6774         done
6775         ;;
6776 *)      perl5="$perl5"
6777         ;;
6778 esac
6779 case "$perl5" in
6780 '')     echo "None found.  That's ok.";;
6781 *)      echo "Using $perl5." ;;
6782 esac
6783
6784 : Determine list of previous versions to include in @INC
6785 $cat > getverlist <<EOPL
6786 #!$perl5 -w
6787 use File::Basename;
6788 \$api_versionstring = "$api_versionstring";
6789 \$version = "$version";
6790 \$stem = "$sitelib_stem";
6791 \$archname = "$archname";
6792 EOPL
6793         $cat >> getverlist <<'EOPL'
6794 # Can't have leading @ because metaconfig interprets it as a command!
6795 ;@inc_version_list=();
6796 # XXX Redo to do opendir/readdir? 
6797 if (-d $stem) {
6798     chdir($stem);
6799     ;@candidates = glob("5.*");
6800 }
6801 else {
6802     ;@candidates = ();
6803 }
6804
6805 # XXX ToDo:  These comparisons must be reworked when two-digit
6806 # subversions come along, so that 5.7.10 compares as greater than
6807 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6808 # widespread that we can use the built-in version vectors rather
6809 # than reinventing them here.  For 5.6.0, however, we must
6810 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6811 foreach $d (@candidates) {
6812     if ($d lt $version) {
6813         if ($d ge $api_versionstring) {
6814             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6815         }
6816         elsif ($d ge "5.005") {
6817             unshift(@inc_version_list, grep { -d } $d);
6818         }
6819     }
6820     else {
6821         # Skip newer version.  I.e. don't look in
6822         # 5.7.0 if we're installing 5.6.1.
6823     }
6824 }
6825
6826 if (@inc_version_list) {
6827     print join(' ', @inc_version_list);
6828 }
6829 else {
6830     # Blank space to preserve value for next Configure run.
6831     print " ";
6832 }
6833 EOPL
6834 chmod +x getverlist
6835 case "$inc_version_list" in
6836 '')     if test -x "$perl5$exe_ext"; then
6837                 dflt=`$perl5 getverlist`
6838         else
6839                 dflt='none'
6840         fi
6841         ;;
6842 $undef) dflt='none' ;;
6843 *)  eval dflt=\"$inc_version_list\" ;;
6844 esac
6845 case "$dflt" in
6846 ''|' ') dflt=none ;;
6847 esac
6848 case "$dflt" in
6849 5.005) dflt=none ;;
6850 esac
6851 $cat <<EOM
6852
6853 In order to ease the process of upgrading, this version of perl 
6854 can be configured to use modules built and installed with earlier 
6855 versions of perl that were installed under $prefix.  Specify here
6856 the list of earlier versions that this version of perl should check.
6857 If Configure detected no earlier versions of perl installed under
6858 $prefix, then the list will be empty.  Answer 'none' to tell perl
6859 to not search earlier versions.
6860
6861 The default should almost always be sensible, so if you're not sure,
6862 just accept the default.
6863 EOM
6864
6865 rp='List of earlier versions to include in @INC?'
6866 . ./myread
6867 case "$ans" in
6868 [Nn]one|''|' ') inc_version_list=' ' ;;
6869 *) inc_version_list="$ans" ;;
6870 esac
6871 case "$inc_version_list" in
6872 ''|' ') 
6873         inc_version_list_init='0';;
6874 *)      inc_version_list_init=`echo $inc_version_list |
6875                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6876         ;;
6877 esac
6878 $rm -f getverlist
6879
6880 : determine whether to install perl also as /usr/bin/perl
6881
6882 echo " "
6883 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6884         $cat <<EOM
6885 Many scripts expect perl to be installed as /usr/bin/perl.
6886
6887 If you want to, I can install the perl you are about to compile
6888 as /usr/bin/perl (in addition to $bin/perl).
6889 EOM
6890         if test -f /usr/bin/perl; then
6891             $cat <<EOM
6892
6893 However, please note that because you already have a /usr/bin/perl,
6894 overwriting that with a new Perl would very probably cause problems.
6895 Therefore I'm assuming you don't want to do that (unless you insist).
6896
6897 EOM
6898             case "$installusrbinperl" in
6899             "$define"|[yY]*)    dflt='y';;
6900             *)                  dflt='n';;
6901             esac
6902         else
6903             $cat <<EOM
6904
6905 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6906
6907 EOM
6908             case "$installusrbinperl" in
6909             "$undef"|[nN]*)     dflt='n';;
6910             *)                  dflt='y';;
6911             esac
6912         fi
6913         rp="Do you want to install perl as /usr/bin/perl?"
6914         . ./myread
6915         case "$ans" in
6916         [yY]*)  val="$define";;
6917         *)      val="$undef" ;;
6918         esac
6919 else
6920         val="$undef"
6921 fi
6922 set installusrbinperl
6923 eval $setvar
6924
6925 echo " "
6926 echo "Checking for GNU C Library..." >&4
6927 cat >try.c <<'EOCP'
6928 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6929    alone are insufficient to distinguish different versions, such as
6930    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6931    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6932 */
6933 #include <stdio.h>
6934 int main(void)
6935 {
6936 #ifdef __GLIBC__
6937 #   ifdef __GLIBC_MINOR__
6938 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6939 #           include <gnu/libc-version.h>
6940             printf("%s\n",  gnu_get_libc_version());
6941 #       else
6942             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6943 #       endif
6944 #   else
6945         printf("%d\n",  __GLIBC__);
6946 #   endif
6947     return 0;
6948 #else
6949     return 1;
6950 #endif
6951 }
6952 EOCP
6953 set try
6954 if eval $compile_ok && $run ./try > glibc.ver; then
6955         val="$define"
6956         gnulibc_version=`$cat glibc.ver`
6957         echo "You are using the GNU C Library version $gnulibc_version"
6958 else
6959         val="$undef"
6960         gnulibc_version=''
6961         echo "You are not using the GNU C Library"
6962 fi
6963 $rm -f try try.* glibc.ver
6964 set d_gnulibc
6965 eval $setvar
6966
6967 : see if nm is to be used to determine whether a symbol is defined or not
6968 case "$usenm" in
6969 '')
6970         dflt=''
6971         case "$d_gnulibc" in
6972         "$define")
6973                 echo " "
6974                 echo "nm probably won't work on the GNU C Library." >&4
6975                 dflt=n
6976                 ;;
6977         esac
6978         case "$dflt" in
6979         '') 
6980                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
6981                         echo " "
6982                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
6983                         echo "'nm' won't be sufficient on this sytem." >&4
6984                         dflt=n
6985                 fi
6986                 ;;
6987         esac
6988         case "$dflt" in
6989         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
6990                 if $test $dflt -gt 20; then
6991                         dflt=y
6992                 else
6993                         dflt=n
6994                 fi
6995                 ;;
6996         esac
6997         ;;
6998 *)
6999         case "$usenm" in
7000         true|$define) dflt=y;;
7001         *) dflt=n;;
7002         esac
7003         ;;
7004 esac
7005 $cat <<EOM
7006
7007 I can use $nm to extract the symbols from your C libraries. This
7008 is a time consuming task which may generate huge output on the disk (up
7009 to 3 megabytes) but that should make the symbols extraction faster. The
7010 alternative is to skip the 'nm' extraction part and to compile a small
7011 test program instead to determine whether each symbol is present. If
7012 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7013 this may be the best solution.
7014
7015 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7016
7017 EOM
7018 rp="Shall I use $nm to extract C symbols from the libraries?"
7019 . ./myread
7020 case "$ans" in
7021 [Nn]*) usenm=false;;
7022 *) usenm=true;;
7023 esac
7024
7025 runnm=$usenm
7026 case "$reuseval" in
7027 true) runnm=false;;
7028 esac
7029
7030 : nm options which may be necessary
7031 case "$nm_opt" in
7032 '') if $test -f /mach_boot; then
7033                 nm_opt=''       # Mach
7034         elif $test -d /usr/ccs/lib; then
7035                 nm_opt='-p'     # Solaris (and SunOS?)
7036         elif $test -f /dgux; then
7037                 nm_opt='-p'     # DG-UX
7038         elif $test -f /lib64/rld; then
7039                 nm_opt='-p'     # 64-bit Irix
7040         else
7041                 nm_opt=''
7042         fi;;
7043 esac
7044
7045 : nm options which may be necessary for shared libraries but illegal
7046 : for archive libraries.  Thank you, Linux.
7047 case "$nm_so_opt" in
7048 '')     case "$myuname" in
7049         *linux*)
7050                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7051                         nm_so_opt='--dynamic'
7052                 fi
7053                 ;;
7054         esac
7055         ;;
7056 esac
7057
7058 case "$runnm" in
7059 true)
7060 : get list of predefined functions in a handy place
7061 echo " "
7062 case "$libc" in
7063 '') libc=unknown
7064         case "$libs" in
7065         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7066         esac
7067         ;;
7068 esac
7069 case "$libs" in
7070 '') ;;
7071 *)  for thislib in $libs; do
7072         case "$thislib" in
7073         -lc|-lc_s)
7074                 : Handle C library specially below.
7075                 ;;
7076         -l*)
7077                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7078                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7079                         :
7080                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7081                         :
7082                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7083                         :
7084                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7085                         :
7086                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7087                         :
7088                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7089                         :
7090                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7091                         :
7092                 else
7093                         try=''
7094                 fi
7095                 libnames="$libnames $try"
7096                 ;;
7097         *) libnames="$libnames $thislib" ;;
7098         esac
7099         done
7100         ;;
7101 esac
7102 xxx=normal
7103 case "$libc" in
7104 unknown)
7105         set /lib/libc.$so
7106         for xxx in $libpth; do
7107                 $test -r $1 || set $xxx/libc.$so
7108                 : The messy sed command sorts on library version numbers.
7109                 $test -r $1 || \
7110                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7111                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7112                                 h
7113                                 s/[0-9][0-9]*/0000&/g
7114                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7115                                 G
7116                                 s/\n/ /' | \
7117                          $sort | $sed -e 's/^.* //'`
7118                 eval set \$$#
7119         done
7120         $test -r $1 || set /usr/ccs/lib/libc.$so
7121         $test -r $1 || set /lib/libsys_s$_a
7122         ;;
7123 *)
7124         set blurfl
7125         ;;
7126 esac
7127 if $test -r "$1"; then
7128         echo "Your (shared) C library seems to be in $1."
7129         libc="$1"
7130 elif $test -r /lib/libc && $test -r /lib/clib; then
7131         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7132         xxx=apollo
7133         libc='/lib/clib /lib/libc'
7134         if $test -r /lib/syslib; then
7135                 echo "(Your math library is in /lib/syslib.)"
7136                 libc="$libc /lib/syslib"
7137         fi
7138 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7139         echo "Your C library seems to be in $libc, as you said before."
7140 elif $test -r $incpath/usr/lib/libc$_a; then
7141         libc=$incpath/usr/lib/libc$_a;
7142         echo "Your C library seems to be in $libc.  That's fine."
7143 elif $test -r /lib/libc$_a; then
7144         libc=/lib/libc$_a;
7145         echo "Your C library seems to be in $libc.  You're normal."
7146 else
7147         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7148                 :
7149         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7150                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7151         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7152                 :
7153         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7154                 :
7155         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7156                 :
7157         else
7158                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7159         fi
7160         if $test -r "$tans"; then
7161                 echo "Your C library seems to be in $tans, of all places."
7162                 libc=$tans
7163         else
7164                 libc='blurfl'
7165         fi
7166 fi
7167 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7168         dflt="$libc"
7169         cat <<EOM
7170
7171 If the guess above is wrong (which it might be if you're using a strange
7172 compiler, or your machine supports multiple models), you can override it here.
7173
7174 EOM
7175 else
7176         dflt=''
7177         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7178         cat >&4 <<EOM
7179 I can't seem to find your C library.  I've looked in the following places:
7180
7181 EOM
7182         $sed 's/^/      /' libpath
7183         cat <<EOM
7184
7185 None of these seems to contain your C library. I need to get its name...
7186
7187 EOM
7188 fi
7189 fn=f
7190 rp='Where is your C library?'
7191 . ./getfile
7192 libc="$ans"
7193
7194 echo " "
7195 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7196 set X `cat libnames`
7197 shift
7198 xxx=files
7199 case $# in 1) xxx=file; esac
7200 echo "Extracting names from the following $xxx for later perusal:" >&4
7201 echo " "
7202 $sed 's/^/      /' libnames >&4
7203 echo " "
7204 $echo $n "This may take a while...$c" >&4
7205
7206 for file in $*; do
7207         case $file in
7208         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7209         *) $nm $nm_opt $file 2>/dev/null;;
7210         esac
7211 done >libc.tmp
7212
7213 $echo $n ".$c"
7214 $grep fprintf libc.tmp > libc.ptf
7215 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7216 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7217 xxx='[ADTSIW]'
7218 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
7219         eval $xscan;\
7220         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7221                 eval $xrun
7222 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7223         eval $xscan;\
7224         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7225                 eval $xrun
7226 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7227         eval $xscan;\
7228         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7229                 eval $xrun
7230 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7231         eval $xscan;\
7232         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7233                 eval $xrun
7234 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7235         eval $xscan;\
7236         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7237                 eval $xrun
7238 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7239         eval $xscan;\
7240         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7241                 eval $xrun
7242 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7243                                 -e '/ file/d' -e '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/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7248         eval $xscan;\
7249         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7250                 eval $xrun
7251 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7252         eval $xscan;\
7253         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7254                 eval $xrun
7255 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7256         eval $xscan;\
7257         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7258                 eval $xrun
7259 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7260         eval $xscan;\
7261         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7262                 eval $xrun
7263 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7264         eval $xscan;\
7265         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7266                 eval $xrun
7267 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7268         eval $xscan;\
7269         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7270                 eval $xrun
7271 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7272         eval $xscan;\
7273         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7274                 eval $xrun
7275 else
7276         $nm -p $* 2>/dev/null >libc.tmp
7277         $grep fprintf libc.tmp > libc.ptf
7278         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7279                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7280         then
7281                 nm_opt='-p'
7282                 eval $xrun
7283         else
7284                 echo " "
7285                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7286                 com=''
7287                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7288                         for thisname in $libnames $libc; do
7289                                 $ar t $thisname >>libc.tmp
7290                         done
7291                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7292                         echo "Ok." >&4
7293                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7294                         # Repeat libc to extract forwarders to DLL entries too
7295                         for thisname in $libnames $libc; do
7296                                 $ar tv $thisname >>libc.tmp
7297                                 # Revision 50 of EMX has bug in $ar.
7298                                 # it will not extract forwarders to DLL entries
7299                                 # Use emximp which will extract exactly them.
7300                                 emximp -o tmp.imp $thisname \
7301                                     2>/dev/null && \
7302                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7303                                     < tmp.imp >>libc.tmp
7304                                 $rm tmp.imp
7305                         done
7306                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7307                         echo "Ok." >&4
7308                 else
7309                         echo "$ar didn't seem to work right." >&4
7310                         echo "Maybe this is a Cray...trying bld instead..." >&4
7311                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7312                         then
7313                                 for thisname in $libnames; do
7314                                         bld t $libnames | \
7315                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7316                                         $ar t $thisname >>libc.tmp
7317                                 done
7318                                 echo "Ok." >&4
7319                         else
7320                                 echo "That didn't work either.  Giving up." >&4
7321                                 exit 1
7322                         fi
7323                 fi
7324         fi
7325 fi
7326 nm_extract="$com"
7327 case "$PASE" in
7328 define)
7329     echo " "
7330     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7331     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7332     ;;
7333 *)  if $test -f /lib/syscalls.exp; then
7334         echo " "
7335         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7336         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7337     fi
7338     ;;
7339 esac
7340 ;;
7341 esac
7342 $rm -f libnames libpath
7343
7344 : see if dld is available
7345 set dld.h i_dld
7346 eval $inhdr
7347
7348 : is a C symbol defined?
7349 csym='tlook=$1;
7350 case "$3" in
7351 -v) tf=libc.tmp; tc=""; tdc="";;
7352 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
7353 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
7354 esac;
7355 tx=yes;
7356 case "$reuseval-$4" in
7357 true-) ;;
7358 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7359 esac;
7360 case "$tx" in
7361 yes)
7362         case "$runnm" in
7363         true)
7364                 if $contains $tlook $tf >/dev/null 2>&1;
7365                 then tval=true;
7366                 else tval=false;
7367                 fi;;
7368         *)
7369                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7370                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
7371                 then tval=true;
7372                 else tval=false;
7373                 fi;
7374                 $rm -f t t.c;;
7375         esac;;
7376 *)
7377         case "$tval" in
7378         $define) tval=true;;
7379         *) tval=false;;
7380         esac;;
7381 esac;
7382 eval "$2=$tval"'
7383
7384 : define an is-in-libc? function
7385 inlibc='echo " "; td=$define; tu=$undef;
7386 sym=$1; var=$2; eval "was=\$$2";
7387 tx=yes;
7388 case "$reuseval$was" in
7389 true) ;;
7390 true*) tx=no;;
7391 esac;
7392 case "$tx" in
7393 yes)
7394         set $sym tres -f;
7395         eval $csym;
7396         case "$tres" in
7397         true)
7398                 echo "$sym() found." >&4;
7399                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7400         *)
7401                 echo "$sym() NOT found." >&4;
7402                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7403         esac;;
7404 *)
7405         case "$was" in
7406         $define) echo "$sym() found." >&4;;
7407         *) echo "$sym() NOT found." >&4;;
7408         esac;;
7409 esac'
7410
7411 : see if dlopen exists
7412 xxx_runnm="$runnm"
7413 runnm=false
7414 set dlopen d_dlopen
7415 eval $inlibc
7416 runnm="$xxx_runnm"
7417
7418 : determine which dynamic loading, if any, to compile in
7419 echo " "
7420 dldir="ext/DynaLoader"
7421 case "$usedl" in
7422 $define|y|true)
7423         dflt='y'
7424         usedl="$define"
7425         ;;
7426 $undef|n|false)
7427         dflt='n'
7428         usedl="$undef"
7429         ;;
7430 *) 
7431         dflt='n'
7432         case "$d_dlopen" in
7433             $define) dflt='y' ;;
7434         esac
7435         case "$i_dld" in
7436             $define) dflt='y' ;;
7437         esac
7438         : Does a dl_xxx.xs file exist for this operating system
7439         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7440         ;;
7441 esac
7442 rp="Do you wish to use dynamic loading?"
7443 . ./myread
7444 usedl="$ans"
7445 case "$ans" in
7446 y*) usedl="$define"
7447         case "$dlsrc" in
7448         '')
7449                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7450                         dflt="$dldir/dl_${osname}.xs"
7451                 elif $test "$d_dlopen" = "$define" ; then
7452                         dflt="$dldir/dl_dlopen.xs"
7453                 elif $test "$i_dld" = "$define" ; then
7454                         dflt="$dldir/dl_dld.xs"
7455                 else
7456                         dflt=''
7457                 fi
7458                 ;;
7459         *)      dflt="$dldir/$dlsrc"
7460                 ;;
7461         esac
7462     echo "The following dynamic loading files are available:"
7463         : Can not go over to $dldir because getfile has path hard-coded in.
7464         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7465         rp="Source file to use for dynamic loading"
7466         fn="fne"
7467         gfpth="$src"
7468         . ./getfile
7469         usedl="$define"
7470         : emulate basename
7471         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7472
7473         $cat << EOM
7474
7475 Some systems may require passing special flags to $cc -c to
7476 compile modules that will be used to create a shared library.
7477 To use no flags, say "none".
7478
7479 EOM
7480     case "$cccdlflags" in
7481     '') case "$gccversion" in
7482                 '') case "$osname" in
7483                         hpux)   dflt='+z' ;;
7484                         next)   dflt='none' ;;
7485                         irix*)  dflt='-KPIC' ;;
7486                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7487                         sunos)  dflt='-pic' ;;
7488                         *)      dflt='none' ;;
7489                     esac
7490                         ;;
7491                 *)  case "$osname" in
7492                         darwin) dflt='none' ;;
7493                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7494                         *)      dflt='-fpic' ;;
7495                     esac ;;
7496             esac ;;
7497         ' ') dflt='none' ;;
7498     *)  dflt="$cccdlflags" ;;
7499     esac
7500     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7501     . ./myread
7502     case "$ans" in
7503     none) cccdlflags=' ' ;;
7504     *) cccdlflags="$ans" ;;
7505     esac
7506
7507     cat << EOM
7508
7509 Some systems use ld to create libraries that can be dynamically loaded,
7510 while other systems (such as those using ELF) use $cc.
7511
7512 EOM
7513         case "$ld" in
7514         '')     $cat >try.c <<EOM
7515 /* Test for whether ELF binaries are produced */
7516 #include <fcntl.h>
7517 #$i_stdlib I_STDLIB
7518 #ifdef I_STDLIB
7519 #include <stdlib.h>
7520 #endif
7521 int main() {
7522         char b[4];
7523         int i = open("a.out",O_RDONLY);
7524         if(i == -1) 
7525                 exit(1); /* fail */
7526         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7527                 exit(0); /* succeed (yes, it's ELF) */
7528         else
7529                 exit(1); /* fail */
7530 }
7531 EOM
7532                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7533                         cat <<EOM
7534 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7535 EOM
7536                         dflt="$cc"
7537                 else
7538                         echo "I'll use ld to build dynamic libraries."
7539                         dflt='ld'
7540                 fi
7541                 rm -f try.c a.out
7542                 ;;
7543         *)      dflt="$ld"
7544                 ;;
7545         esac
7546
7547     rp="What command should be used to create dynamic libraries?"
7548     . ./myread
7549         ld="$ans"
7550
7551     cat << EOM
7552
7553 Some systems may require passing special flags to $ld to create a
7554 library that can be dynamically loaded.  If your ld flags include
7555 -L/other/path options to locate libraries outside your loader's normal
7556 search path, you may need to specify those -L options here as well.  To
7557 use no flags, say "none".
7558
7559 EOM
7560     case "$lddlflags" in
7561     '') case "$osname" in
7562                         beos) dflt='-nostart' ;;
7563                         hpux) dflt='-b';
7564                               case "$gccversion" in
7565                               '') dflt="$dflt +vnocompatwarnings" ;;
7566                               esac
7567                               ;;        
7568                         linux|irix*)    dflt='-shared' ;;
7569                         next)  dflt='none' ;;
7570                         solaris) dflt='-G' ;;
7571                         sunos) dflt='-assert nodefinitions' ;;
7572                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7573                 *)     dflt='none' ;;
7574                         esac
7575                         ;;
7576     *) dflt="$lddlflags" ;;
7577     esac
7578
7579         : Try to guess additional flags to pick up local libraries.
7580         : Be careful not to append to a plain 'none'
7581         case "$dflt" in
7582         none) dflt='' ;;
7583         esac
7584         for thisflag in $ldflags; do
7585                 case "$thisflag" in
7586                 -L*|-R*|-Wl,-R*)
7587                         case " $dflt " in
7588                         *" $thisflag "*) ;;
7589                         *) dflt="$dflt $thisflag" ;;
7590                         esac
7591                         ;;
7592                 esac
7593         done
7594
7595         case "$dflt" in
7596         ''|' ') dflt='none' ;;
7597         esac
7598
7599     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7600     . ./myread
7601     case "$ans" in
7602     none) lddlflags=' ' ;;
7603     *) lddlflags="$ans" ;;
7604     esac
7605
7606         cat <<EOM
7607
7608 Some systems may require passing special flags to $cc to indicate that
7609 the resulting executable will use dynamic linking.  To use no flags,
7610 say "none".
7611
7612 EOM
7613     case "$ccdlflags" in
7614     '') case "$osname" in
7615                 hpux)   dflt='-Wl,-E' ;;
7616                 linux)  dflt='-rdynamic' ;;
7617                 next)   dflt='none' ;;
7618                 sunos)  dflt='none' ;;
7619                 *)      dflt='none' ;;
7620             esac ;;
7621     ' ')  dflt='none' ;;
7622     *)  dflt="$ccdlflags" ;;
7623     esac
7624     rp="Any special flags to pass to $cc to use dynamic linking?"
7625     . ./myread
7626     case "$ans" in
7627     none) ccdlflags=' ' ;;
7628     *) ccdlflags="$ans" ;;
7629     esac
7630     ;;
7631 *)  usedl="$undef"
7632         ld='ld'
7633     dlsrc='dl_none.xs'
7634     lddlflags=''
7635     ccdlflags=''
7636     ;;
7637 esac
7638
7639 also=''
7640 case "$usedl" in
7641 $undef)
7642         # No dynamic loading being used, so don't bother even to prompt.
7643         useshrplib='false'
7644         ;;
7645 *)      case "$useshrplib" in
7646         '')     case "$osname" in
7647                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7648                         dflt=y
7649                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7650                         ;;
7651                 next*)
7652                         case "$osvers" in
7653                         4*)     dflt=y
7654                                 also='Building a shared libperl is needed for MAB support.'
7655                                 ;;
7656                         *)      dflt=n
7657                                 ;;
7658                         esac
7659                         ;;
7660                 *)      dflt=n
7661                         ;;
7662                 esac
7663                 ;;
7664         $define|true|[Yy]*)
7665                 dflt=y
7666                 ;;
7667         *)      dflt=n
7668                 ;;
7669         esac
7670         $cat << EOM
7671
7672 The perl executable is normally obtained by linking perlmain.c with
7673 libperl${_a}, any static extensions (usually just DynaLoader), and
7674 any other libraries needed on this system (such as -lm, etc.).  Since
7675 your system supports dynamic loading, it is probably possible to build
7676 a shared libperl.$so.  If you will have more than one executable linked
7677 to libperl.$so, this will significantly reduce the size of each
7678 executable, but it may have a noticeable affect on performance.  The
7679 default is probably sensible for your system.
7680 $also
7681
7682 EOM
7683         rp="Build a shared libperl.$so (y/n)"
7684         . ./myread
7685         case "$ans" in
7686         true|$define|[Yy]*)
7687                 useshrplib='true'  ;;
7688         *)      useshrplib='false' ;;
7689         esac
7690         ;;
7691 esac
7692
7693 case "$useshrplib" in
7694 true)
7695         case "$libperl" in
7696         '')
7697                 # Figure out a good name for libperl.so.  Since it gets stored in
7698                 # a version-specific architecture-dependent library, the version
7699                 # number isn't really that important, except for making cc/ld happy.
7700                 #
7701                 # A name such as libperl.so.3.1
7702                 majmin="libperl.$so.$patchlevel.$subversion"
7703                 # A name such as libperl.so.301
7704                 majonly=`echo $patchlevel $subversion |
7705                         $awk '{printf "%d%02d", $1, $2}'`
7706                 majonly=libperl.$so.$majonly
7707                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7708                 # rely on figuring it out from the naming of libc.
7709                 case "${osname}${osvers}" in
7710                 next4*)
7711                         dflt=libperl.5.$so
7712                         # XXX How handle the --version stuff for MAB?
7713                         ;;
7714                 linux*)  # ld won't link with a bare -lperl otherwise.
7715                         dflt=libperl.$so
7716                         ;;
7717                 cygwin*) # ld links against an importlib
7718                         dflt=libperl$lib_ext
7719                         ;;
7720                 *)      # Try to guess based on whether libc has major.minor.
7721                         case "$libc" in
7722                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7723                         *libc.$so.[0-9]*) dflt=$majonly ;;
7724                         *)      dflt=libperl.$so ;;
7725                         esac
7726                         ;;
7727                 esac
7728                 ;;
7729         *)      dflt=$libperl
7730                 ;;
7731         esac
7732         cat << EOM
7733
7734 I need to select a good name for the shared libperl.  If your system uses
7735 library names with major and minor numbers, then you might want something
7736 like $majmin.  Alternatively, if your system uses a single version
7737 number for shared libraries, then you might want to use $majonly.
7738 Or, your system might be quite happy with a simple libperl.$so.
7739
7740 Since the shared libperl will get installed into a version-specific
7741 architecture-dependent directory, the version number of the shared perl
7742 library probably isn't important, so the default should be o.k.
7743
7744 EOM
7745         rp='What name do you want to give to the shared libperl?'
7746         . ./myread
7747         libperl=$ans
7748         echo "Ok, I'll use $libperl"
7749         ;;
7750 *)
7751         libperl="libperl${_a}"
7752         ;;
7753 esac
7754
7755 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7756 case "$shrpdir" in
7757 '') ;;
7758 *)      $cat >&4 <<EOM
7759 WARNING:  Use of the shrpdir variable for the installation location of
7760 the shared $libperl is not supported.  It was never documented and
7761 will not work in this version.  Let me (perlbug@perl.org)
7762 know of any problems this may cause.
7763
7764 EOM
7765         case "$shrpdir" in
7766         "$archlibexp/CORE")
7767                 $cat >&4 <<EOM
7768 But your current setting of $shrpdir is
7769 the default anyway, so it's harmless.
7770 EOM
7771                 ;;
7772         *)
7773                 $cat >&4 <<EOM
7774 Further, your current attempted setting of $shrpdir
7775 conflicts with the value of $archlibexp/CORE
7776 that installperl will use.
7777 EOM
7778                 ;;
7779         esac
7780         ;;
7781 esac
7782
7783 # How will the perl executable find the installed shared $libperl?
7784 # Add $xxx to ccdlflags.
7785 # If we can't figure out a command-line option, use $shrpenv to
7786 # set env LD_RUN_PATH.  The main perl makefile uses this.
7787 shrpdir=$archlibexp/CORE
7788 xxx=''
7789 tmp_shrpenv=''
7790 if "$useshrplib"; then
7791     case "$osname" in 
7792         aix)
7793                 # We'll set it in Makefile.SH...
7794                 ;;
7795         solaris)
7796                 xxx="-R $shrpdir"
7797                 ;;
7798         freebsd|netbsd|openbsd)
7799                 xxx="-Wl,-R$shrpdir"
7800                 ;;
7801         bsdos|linux|irix*|dec_osf)
7802                 xxx="-Wl,-rpath,$shrpdir"
7803                 ;;
7804         next)
7805                 # next doesn't like the default...
7806                 ;;
7807         beos)
7808                 # beos doesn't like the default, either.
7809                 ;;
7810         hpux*)
7811                 # hpux doesn't like the default, either.
7812                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7813                 ;;
7814         *)
7815                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7816                 ;;
7817         esac
7818         case "$xxx" in
7819         '') ;;
7820         *)      
7821                 # Only add $xxx if it isn't already in ccdlflags.
7822                 case " $ccdlflags " in
7823                 *" $xxx "*)     ;;
7824                 *)      ccdlflags="$ccdlflags $xxx"
7825                         cat <<EOM >&4
7826
7827 Adding $xxx to the flags
7828 passed to $ld so that the perl executable will find the 
7829 installed shared $libperl.
7830
7831 EOM
7832                         ;;
7833                 esac
7834                 ;;
7835         esac
7836 fi
7837 # Fix ccdlflags in AIX for building external extensions.
7838 # (For building Perl itself bare -bE:perl.exp is needed,
7839 #  Makefile.SH takes care of this.)
7840 case "$osname" in
7841 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7842 esac
7843 # Respect a hint or command-line value.
7844 case "$shrpenv" in
7845 '') shrpenv="$tmp_shrpenv" ;;
7846 esac
7847 case "$ldlibpthname" in
7848 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7849 none)   ldlibpthname='' ;;
7850 esac
7851
7852 : determine where manual pages are on this system
7853 echo " "
7854 case "$sysman" in
7855 '') 
7856         syspath='/usr/share/man/man1 /usr/man/man1'
7857         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7858         syspath="$syspath /usr/man/u_man/man1"
7859         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7860         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7861         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7862         sysman=`./loc . /usr/man/man1 $syspath`
7863         ;;
7864 esac
7865 if $test -d "$sysman"; then
7866         echo "System manual is in $sysman." >&4
7867 else
7868         echo "Could not find manual pages in source form." >&4
7869 fi
7870
7871 : determine where manual pages go
7872 set man1dir man1dir none
7873 eval $prefixit
7874 $cat <<EOM
7875
7876 $spackage has manual pages available in source form.
7877 EOM
7878 case "$nroff" in
7879 nroff)
7880         echo "However, you don't have nroff, so they're probably useless to you."
7881         case "$man1dir" in
7882         '') man1dir="none";;
7883         esac;;
7884 esac
7885 echo "If you don't want the manual sources installed, answer 'none'."
7886 case "$man1dir" in
7887 ' ') dflt=none
7888         ;;
7889 '')
7890         lookpath="$prefixexp/share/man/man1"
7891         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7892         lookpath="$lookpath $prefixexp/man/p_man/man1"
7893         lookpath="$lookpath $prefixexp/man/u_man/man1"
7894         lookpath="$lookpath $prefixexp/man/man.1"
7895         case "$sysman" in
7896         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7897         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7898         esac
7899         set dflt
7900         eval $prefixup
7901         ;;
7902 *)  dflt="$man1dir"
7903         ;;
7904 esac
7905 echo " "
7906 fn=dn+~
7907 rp="Where do the main $spackage manual pages (source) go?"
7908 . ./getfile
7909 if $test "X$man1direxp" != "X$ansexp"; then
7910         installman1dir=''
7911 fi
7912 man1dir="$ans"
7913 man1direxp="$ansexp"
7914 case "$man1dir" in
7915 '')     man1dir=' '
7916         installman1dir='';;
7917 esac
7918
7919 : Change installation prefix, if necessary.
7920 if $test X"$prefix" != X"$installprefix"; then
7921         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7922 else
7923         installman1dir="$man1direxp"
7924 fi
7925
7926 : What suffix to use on installed man pages
7927
7928 case "$man1dir" in
7929 ' ')
7930         man1ext='0'
7931         ;;
7932 *)
7933         rp="What suffix should be used for the main $spackage man pages?"
7934         case "$man1ext" in
7935         '')     case "$man1dir" in
7936                 *1)  dflt=1 ;;
7937                 *1p) dflt=1p ;;
7938                 *1pm) dflt=1pm ;;
7939                 *l) dflt=l;;
7940                 *n) dflt=n;;
7941                 *o) dflt=o;;
7942                 *p) dflt=p;;
7943                 *C) dflt=C;;
7944                 *L) dflt=L;;
7945                 *L1) dflt=L1;;
7946                 *) dflt=1;;
7947                 esac
7948                 ;;
7949         *)      dflt="$man1ext";;
7950         esac
7951         . ./myread
7952         man1ext="$ans"
7953         ;;
7954 esac
7955
7956 : see if we can have long filenames
7957 echo " "
7958 first=123456789abcdef
7959 $rm -f $first
7960 if (echo hi >$first) 2>/dev/null; then
7961         if $test -f 123456789abcde; then
7962                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7963                 val="$undef"
7964         else
7965                 echo 'You can have filenames longer than 14 characters.'>&4
7966                 val="$define"
7967         fi
7968 else
7969         $cat <<'EOM'
7970 You can't have filenames longer than 14 chars.
7971 You can't even think about them!
7972 EOM
7973         val="$undef"
7974 fi 
7975 set d_flexfnam
7976 eval $setvar
7977 $rm -rf 123456789abcde*
7978
7979 : determine where library module manual pages go
7980 set man3dir man3dir none
7981 eval $prefixit
7982 $cat <<EOM
7983
7984 $spackage has manual pages for many of the library modules.
7985 EOM
7986
7987 case "$nroff" in
7988 nroff)
7989         $cat <<'EOM'
7990 However, you don't have nroff, so they're probably useless to you.
7991 EOM
7992         case "$man3dir" in
7993         '') man3dir="none";;
7994         esac;;
7995 esac
7996
7997 case "$d_flexfnam" in
7998 undef)
7999         $cat <<'EOM'
8000 However, your system can't handle the long file names like File::Basename.3. 
8001 EOM
8002         case "$man3dir" in
8003         '') man3dir="none";;
8004         esac;;
8005 esac
8006
8007 echo "If you don't want the manual sources installed, answer 'none'."
8008 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8009 case "$man3dir" in
8010 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8011         if $test -d "$privlib/man/man3"; then
8012                 cat <<EOM >&4
8013
8014 WARNING:  Previous versions of perl installed man3 pages into
8015 $privlib/man/man3.  This version will suggest a 
8016 new default of $dflt.  
8017 EOM
8018                 tdflt=$dflt
8019                 dflt='n'
8020                 rp='Do you wish to preserve the old behavior?(y/n)'
8021                 . ./myread
8022                 case "$ans" in
8023                 y*) dflt="$privlib/man/man3" ;;
8024                 *)  dflt=$tdflt ;;
8025                 esac
8026     fi
8027         ;;
8028 *)      dflt="$man3dir" ;;
8029 esac
8030 case "$dflt" in
8031 ' ') dflt=none ;;
8032 esac
8033 echo " "
8034 fn=dn+~
8035 rp="Where do the $package library man pages (source) go?"
8036 . ./getfile
8037 man3dir="$ans"
8038 man3direxp="$ansexp"
8039 case "$man3dir" in
8040 '')     man3dir=' '
8041         installman3dir='';;
8042 esac
8043
8044 : Change installation prefix, if necessary.
8045 if $test X"$prefix" != X"$installprefix"; then
8046         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8047 else
8048         installman3dir="$man3direxp"
8049 fi
8050
8051 : What suffix to use on installed man pages
8052 case "$man3dir" in
8053 ' ')
8054         man3ext='0'
8055         ;;
8056 *)
8057         rp="What suffix should be used for the $package library man pages?"
8058         case "$man3ext" in
8059         '')     case "$man3dir" in
8060                 *3)  dflt=3 ;;
8061                 *3p) dflt=3p ;;
8062                 *3pm) dflt=3pm ;;
8063                 *l) dflt=l;;
8064                 *n) dflt=n;;
8065                 *o) dflt=o;;
8066                 *p) dflt=p;;
8067                 *C) dflt=C;;
8068                 *L) dflt=L;;
8069                 *L3) dflt=L3;;
8070                 *) dflt=3;;
8071                 esac
8072                 ;;
8073         *)      dflt="$man3ext";;
8074         esac
8075         . ./myread
8076         man3ext="$ans"
8077         ;;
8078 esac
8079
8080 : see if we have to deal with yellow pages, now NIS.
8081 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8082         if $test -f /usr/etc/nibindd; then
8083                 echo " "
8084                 echo "I'm fairly confident you're on a NeXT."
8085                 echo " "
8086                 rp='Do you get the hosts file via NetInfo?'
8087                 dflt=y
8088                 case "$hostcat" in
8089                 nidump*) ;;
8090                 '') ;;
8091                 *) dflt=n;;
8092                 esac
8093                 . ./myread
8094                 case "$ans" in
8095                 y*) hostcat='nidump hosts .';;
8096                 *)      case "$hostcat" in
8097                         nidump*) hostcat='';;
8098                         esac
8099                         ;;
8100                 esac
8101         fi
8102         case "$hostcat" in
8103         nidump*) ;;
8104         *)
8105                 case "$hostcat" in
8106                 *ypcat*) dflt=y;;
8107                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8108                                 dflt=y
8109                         else
8110                                 dflt=n
8111                         fi;;
8112                 *) dflt=n;;
8113                 esac
8114                 echo " "
8115                 rp='Are you getting the hosts file via yellow pages?'
8116                 . ./myread
8117                 case "$ans" in
8118                 y*) hostcat='ypcat hosts';;
8119                 *) hostcat='cat /etc/hosts';;
8120                 esac
8121                 ;;
8122         esac
8123 fi
8124 case "$hostcat" in
8125 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8126 esac
8127 case "$groupcat" in
8128 '') test -f /etc/group && groupcat='cat /etc/group';;
8129 esac
8130 case "$passcat" in
8131 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8132 esac
8133
8134 : now get the host name
8135 echo " "
8136 echo "Figuring out host name..." >&4
8137 case "$myhostname" in
8138 '') cont=true
8139         echo 'Maybe "hostname" will work...'
8140         if tans=`sh -c hostname 2>&1` ; then
8141                 myhostname=$tans
8142                 phostname=hostname
8143                 cont=''
8144         fi
8145         ;;
8146 *) cont='';;
8147 esac
8148 if $test "$cont"; then
8149         if ./xenix; then
8150                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8151                 if tans=`cat /etc/systemid 2>&1` ; then
8152                         myhostname=$tans
8153                         phostname='cat /etc/systemid'
8154                         echo "Whadyaknow.  Xenix always was a bit strange..."
8155                         cont=''
8156                 fi
8157         elif $test -r /etc/systemid; then
8158                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8159         fi
8160 fi
8161 if $test "$cont"; then
8162         echo 'No, maybe "uuname -l" will work...'
8163         if tans=`sh -c 'uuname -l' 2>&1` ; then
8164                 myhostname=$tans
8165                 phostname='uuname -l'
8166         else
8167                 echo 'Strange.  Maybe "uname -n" will work...'
8168                 if tans=`sh -c 'uname -n' 2>&1` ; then
8169                         myhostname=$tans
8170                         phostname='uname -n'
8171                 else
8172                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8173                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8174                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8175                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8176                         else
8177                                 case "$myhostname" in
8178                                 '') echo "Does this machine have an identity crisis or something?"
8179                                         phostname='';;
8180                                 *)
8181                                         echo "Well, you said $myhostname before..."
8182                                         phostname='echo $myhostname';;
8183                                 esac
8184                         fi
8185                 fi
8186         fi
8187 fi
8188 case "$myhostname" in
8189 '') myhostname=noname ;;
8190 esac
8191 : you do not want to know about this
8192 set $myhostname
8193 myhostname=$1
8194
8195 : verify guess
8196 if $test "$myhostname" ; then
8197         dflt=y
8198         rp='Your host name appears to be "'$myhostname'".'" Right?"
8199         . ./myread
8200         case "$ans" in
8201         y*) ;;
8202         *) myhostname='';;
8203         esac
8204 fi
8205
8206 : bad guess or no guess
8207 while $test "X$myhostname" = X ; do
8208         dflt=''
8209         rp="Please type the (one word) name of your host:"
8210         . ./myread
8211         myhostname="$ans"
8212 done
8213
8214 : translate upper to lower if necessary
8215 case "$myhostname" in
8216 *[A-Z]*)
8217         echo "(Normalizing case in your host name)"
8218         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8219         ;;
8220 esac
8221
8222 case "$myhostname" in
8223 *.*)
8224         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8225         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8226         echo "(Trimming domain name from host name--host name is now $myhostname)"
8227         ;;
8228 *) case "$mydomain" in
8229         '')
8230                 {
8231                         test "X$hostcat" = "Xypcat hosts" &&
8232                         ypmatch "$myhostname" hosts 2>/dev/null |\
8233                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8234                         $test -s hosts
8235                 } || {
8236                         test "X$hostcat" != "X" &&
8237                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8238                                         /[       ]$myhostname[  . ]/p" > hosts
8239                 }
8240                 tmp_re="[       . ]"
8241                 if $test -f hosts; then
8242                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8243                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8244                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8245                                 hosts | $sort | $uniq | \
8246                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8247                         case `$echo X$dflt` in
8248                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8249                                 dflt=.
8250                                 ;;
8251                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8252                                 ;;
8253                         esac
8254                 else
8255                         echo "(I cannot locate a hosts database anywhere)"
8256                         dflt=.
8257                 fi
8258                 case "$dflt" in
8259                 .)
8260                         tans=`./loc resolv.conf X /etc /usr/etc`
8261                         if $test -f "$tans"; then
8262                                 echo "(Attempting domain name extraction from $tans)"
8263                                 dflt=.`$sed -n -e 's/   / /g' \
8264                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8265                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8266                                 case "$dflt" in
8267                                 .) dflt=.`$sed -n -e 's/        / /g' \
8268                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8269                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8270                                         ;;
8271                                 esac
8272                         fi
8273                         ;;
8274                 esac
8275                 case "$dflt" in
8276                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8277                         dflt=.`sh -c domainname 2>/dev/null`
8278                         case "$dflt" in
8279                         '') dflt='.';;
8280                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8281                         esac
8282                         ;;
8283                 esac
8284                 case "$dflt$osname" in
8285                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8286                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8287                         ;;
8288                 esac
8289                 case "$dflt" in
8290                 .) echo "(Lost all hope -- silly guess then)"
8291                         dflt='.nonet'
8292                         ;;
8293                 esac
8294                 $rm -f hosts
8295                 ;;
8296         *) dflt="$mydomain";;
8297         esac;;
8298 esac
8299 echo " "
8300 rp="What is your domain name?"
8301 . ./myread
8302 tans="$ans"
8303 case "$ans" in
8304 '') ;;
8305 .*) ;;
8306 *) tans=".$tans";;
8307 esac
8308 mydomain="$tans"
8309
8310 : translate upper to lower if necessary
8311 case "$mydomain" in
8312 *[A-Z]*)
8313         echo "(Normalizing case in your domain name)"
8314         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8315         ;;
8316 esac
8317
8318 : a little sanity check here
8319 case "$phostname" in
8320 '') ;;
8321 *)
8322         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8323         $myhostname$mydomain|$myhostname) ;;
8324         *)
8325                 case "$phostname" in
8326                 sed*)
8327                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8328                         ;;
8329                 *)
8330                         echo "(That doesn't agree with your $phostname command, by the way.)"
8331                         ;;
8332                 esac
8333         ;;
8334         esac
8335         ;;
8336 esac
8337
8338 $cat <<EOM
8339
8340 I need to get your e-mail address in Internet format if possible, i.e.
8341 something like user@host.domain. Please answer accurately since I have
8342 no easy means to double check it. The default value provided below
8343 is most probably close to reality but may not be valid from outside
8344 your organization...
8345
8346 EOM
8347 cont=x
8348 while test "$cont"; do
8349         case "$cf_email" in
8350         '') dflt="$cf_by@$myhostname$mydomain";;
8351         *) dflt="$cf_email";;
8352         esac
8353         rp='What is your e-mail address?'
8354         . ./myread
8355         cf_email="$ans"
8356         case "$cf_email" in
8357         *@*.*) cont='' ;;
8358         *)
8359                 rp='Address does not look like an Internet one.  Use it anyway?'
8360                 case "$fastread" in
8361                 yes) dflt=y ;;
8362                 *) dflt=n ;;
8363                 esac
8364                 . ./myread
8365                 case "$ans" in
8366                 y*) cont='' ;;
8367                 *) echo " " ;;
8368                 esac
8369                 ;;
8370         esac
8371 done
8372
8373 $cat <<EOM
8374
8375 If you or somebody else will be maintaining perl at your site, please
8376 fill in the correct e-mail address here so that they may be contacted
8377 if necessary. Currently, the "perlbug" program included with perl
8378 will send mail to this address in addition to perlbug@perl.org. You may
8379 enter "none" for no administrator.
8380
8381 EOM
8382 case "$perladmin" in
8383 '') dflt="$cf_email";;
8384 *) dflt="$perladmin";;
8385 esac
8386 rp='Perl administrator e-mail address'
8387 . ./myread
8388 perladmin="$ans"
8389
8390 : determine whether to only install version-specific parts.
8391 echo " "
8392 $cat <<EOM
8393 Do you want to install only the version-specific parts of the perl
8394 distribution?  Usually you do *not* want to do this.
8395 EOM
8396 case "$versiononly" in
8397 "$define"|[Yy]*|true) dflt='y' ;;
8398 *) dflt='n';
8399 esac
8400 rp="Do you want to install only the version-specific parts of perl?"
8401 . ./myread
8402 case "$ans" in
8403 [yY]*)  val="$define";;
8404 *)      val="$undef" ;;
8405 esac
8406 set versiononly
8407 eval $setvar
8408
8409 case "$versiononly" in
8410 "$define") inc_version_list=''
8411            inc_version_list_init=0
8412            ;;
8413 esac
8414
8415 : figure out how to guarantee perl startup
8416 case "$startperl" in
8417 '')
8418         case "$sharpbang" in
8419         *!)
8420                 $cat <<EOH
8421
8422 I can use the #! construct to start perl on your system. This will
8423 make startup of perl scripts faster, but may cause problems if you
8424 want to share those scripts and perl is not in a standard place
8425 ($binexp/perl) on all your platforms. The alternative is to force
8426 a shell by starting the script with a single ':' character.
8427
8428 EOH
8429                 case "$versiononly" in
8430                 "$define")      dflt="$binexp/perl$version";;  
8431                 *)              dflt="$binexp/perl";;
8432                 esac
8433                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8434                 . ./myread
8435                 case "$ans" in
8436                 none)   startperl=": # use perl";;
8437                 *)      startperl="#!$ans"
8438                         if $test 30 -lt `echo "$ans" | wc -c`; then
8439                                 $cat >&4 <<EOM
8440
8441 WARNING:  Some systems limit the #! command to 32 characters.
8442 If you experience difficulty running Perl scripts with #!, try
8443 installing Perl in a directory with a shorter pathname.
8444
8445 EOM
8446                         fi ;;
8447                 esac
8448                 ;;
8449         *) startperl=": # use perl"
8450                 ;;
8451         esac
8452         ;;
8453 esac
8454 echo "I'll use $startperl to start perl scripts."
8455
8456 : figure best path for perl in scripts
8457 case "$perlpath" in
8458 '')
8459         case "$versiononly" in
8460         "$define")      perlpath="$binexp/perl$version";;
8461         *)              perlpath="$binexp/perl";;
8462         esac
8463         case "$startperl" in
8464         *!*) ;;
8465         *)
8466                 $cat <<EOH
8467
8468 I will use the "eval 'exec'" idiom to start Perl on your system.
8469 I can use the full path of your Perl binary for this purpose, but
8470 doing so may cause problems if you want to share those scripts and
8471 Perl is not always in a standard place ($binexp/perl).
8472
8473 EOH
8474                 dflt="$binexp/perl"
8475                 rp="What path shall I use in \"eval 'exec'\"?"
8476                 . ./myread
8477                 perlpath="$ans"
8478                 ;;
8479         esac
8480         ;;
8481 esac
8482 case "$startperl" in
8483 *!*)    ;;
8484 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8485 esac
8486
8487 : determine where public executable scripts go
8488 set scriptdir scriptdir
8489 eval $prefixit
8490 case "$scriptdir" in
8491 '')
8492         dflt="$bin"
8493         : guess some guesses
8494         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8495         $test -d /usr/share/bin     && dflt=/usr/share/bin
8496         $test -d /usr/local/script  && dflt=/usr/local/script
8497         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8498         $test -d $prefixexp/script  && dflt=$prefixexp/script
8499         set dflt
8500         eval $prefixup
8501         ;;
8502 *)  dflt="$scriptdir"
8503         ;;
8504 esac
8505 $cat <<EOM
8506  
8507 Some installations have a separate directory just for executable scripts so
8508 that they can mount it across multiple architectures but keep the scripts in
8509 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8510 Or you might just lump your scripts in with all your other executables.
8511  
8512 EOM
8513 fn=d~
8514 rp='Where do you keep publicly executable scripts?'
8515 . ./getfile
8516 if $test "X$ansexp" != "X$scriptdirexp"; then
8517         installscript=''
8518 fi
8519 scriptdir="$ans"
8520 scriptdirexp="$ansexp"
8521 : Change installation prefix, if necessary.
8522 if $test X"$prefix" != X"$installprefix"; then
8523         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8524 else
8525         installscript="$scriptdirexp"
8526 fi
8527
8528 : determine where add-on public executables go
8529 case "$sitebin" in
8530 '')     dflt=$siteprefix/bin ;;
8531 *)      dflt=$sitebin ;;
8532 esac
8533 fn=d~
8534 rp='Pathname where the add-on public executables should be installed?'
8535 . ./getfile
8536 sitebin="$ans"
8537 sitebinexp="$ansexp"
8538 : Change installation prefix, if necessary.
8539 if $test X"$prefix" != X"$installprefix"; then
8540         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8541 else
8542         installsitebin="$sitebinexp"
8543 fi
8544
8545 : determine where add-on html pages go
8546 : There is no standard location, so try to copy the previously-selected 
8547 : directory structure for the core html pages.
8548 case "$sitehtml1" in
8549 '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8550 *)      dflt=$sitehtml1 ;;
8551 esac
8552 case "$dflt" in
8553 ''|' ') dflt=none ;;
8554 esac
8555 fn=dn+~
8556 rp='Pathname where the site-specific html pages should be installed?'
8557 . ./getfile
8558 sitehtml1="$ans"
8559 sitehtml1exp="$ansexp"
8560 : Use ' ' for none so value is preserved next time through Configure
8561 $test X"$sitehtml1" = "X" && sitehtml1=' '
8562 : Change installation prefix, if necessary.
8563 if $test X"$prefix" != X"$installprefix"; then
8564         installsitehtml1=`echo "$sitehtml1exp" | $sed "s#^$prefix#$installprefix#"`
8565 else
8566         installsitehtml1="$sitehtml1exp"
8567 fi
8568
8569 : determine where add-on library html pages go
8570 : There is no standard location, so try to copy the previously-selected
8571 : directory structure for the core html pages.
8572 case "$sitehtml3" in
8573 '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8574 *)      dflt=$sitehtml3 ;;
8575 esac
8576 case "$dflt" in
8577 ''|' ') dflt=none ;;
8578 esac
8579 fn=dn+~
8580 rp='Pathname where the site-specific library html pages should be installed?'
8581 . ./getfile
8582 sitehtml3="$ans"
8583 sitehtml3exp="$ansexp"
8584 : Use ' ' for none so value is preserved next time through Configure
8585 $test X"$sitehtml3" = "X" && sitehtml3=' '
8586 : Change installation prefix, if necessary.
8587 if $test X"$prefix" != X"$installprefix"; then
8588         installsitehtml3=`echo "$sitehtml3exp" | $sed "s#^$prefix#$installprefix#"`
8589 else
8590         installsitehtml3="$sitehtml3exp"
8591 fi
8592
8593 : determine where add-on manual pages go
8594 case "$siteman1" in
8595 '')     dflt=`echo "$man1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8596 *)      dflt=$siteman1 ;;
8597 esac
8598 case "$dflt" in
8599 ''|' ') dflt=none ;;
8600 esac
8601 fn=dn+~
8602 rp='Pathname where the site-specific manual pages should be installed?'
8603 . ./getfile
8604 siteman1="$ans"
8605 siteman1exp="$ansexp"
8606 : Use ' ' for none so value is preserved next time through Configure
8607 $test X"$siteman1" = "X" && siteman1=' '
8608 : Change installation prefix, if necessary.
8609 if $test X"$prefix" != X"$installprefix"; then
8610         installsiteman1=`echo "$siteman1exp" | $sed "s#^$prefix#$installprefix#"`
8611 else
8612         installsiteman1="$siteman1exp"
8613 fi
8614
8615 : determine where add-on library man pages go
8616 case "$siteman3" in
8617 '')     dflt=`echo "$man3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8618 *)      dflt=$siteman3 ;;
8619 esac
8620 case "$dflt" in
8621 ''|' ') dflt=none ;;
8622 esac
8623 fn=dn+~
8624 rp='Pathname where the site-specific library manual pages should be installed?'
8625 . ./getfile
8626 siteman3="$ans"
8627 siteman3exp="$ansexp"
8628 : Use ' ' for none so value is preserved next time through Configure
8629 $test X"$siteman3" = "X" && siteman3=' '
8630 : Change installation prefix, if necessary.
8631 if $test X"$prefix" != X"$installprefix"; then
8632         installsiteman3=`echo "$siteman3exp" | $sed "s#^$prefix#$installprefix#"`
8633 else
8634         installsiteman3="$siteman3exp"
8635 fi
8636
8637 : determine where add-on public executable scripts go
8638 case "$sitescript" in
8639 '')     dflt=$siteprefix/script
8640         $test -d $dflt || dflt=$sitebin ;;
8641 *)  dflt="$sitescript" ;;
8642 esac
8643 fn=d~+
8644 rp='Pathname where add-on public executable scripts should be installed?'
8645 . ./getfile
8646 sitescript="$ans"
8647 sitescriptexp="$ansexp"
8648 : Change installation prefix, if necessary.
8649 if $test X"$prefix" != X"$installprefix"; then
8650         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8651 else
8652         installsitescript="$sitescriptexp"
8653 fi
8654
8655 : define an is-a-typedef? function
8656 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8657 case "$inclist" in
8658 "") inclist="sys/types.h";;
8659 esac;
8660 eval "varval=\$$var";
8661 case "$varval" in
8662 "")
8663         $rm -f temp.c;
8664         for inc in $inclist; do
8665                 echo "#include <$inc>" >>temp.c;
8666         done;
8667         echo "#ifdef $type" >> temp.c;
8668         echo "printf(\"We have $type\");" >> temp.c;
8669         echo "#endif" >> temp.c;
8670         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8671         if $contains $type temp.E >/dev/null 2>&1; then
8672                 eval "$var=\$type";
8673         else
8674                 eval "$var=\$def";
8675         fi;
8676         $rm -f temp.?;;
8677 *) eval "$var=\$varval";;
8678 esac'
8679
8680 : define an is-a-typedef? function that prompts if the type is not available.
8681 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8682 case "$inclist" in
8683 "") inclist="sys/types.h";;
8684 esac;
8685 eval "varval=\$$var";
8686 case "$varval" in
8687 "")
8688         $rm -f temp.c;
8689         for inc in $inclist; do
8690                 echo "#include <$inc>" >>temp.c;
8691         done;
8692         echo "#ifdef $type" >> temp.c;
8693         echo "printf(\"We have $type\");" >> temp.c;
8694         echo "#endif" >> temp.c;
8695         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8696         echo " " ;
8697         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8698         if $contains $type temp.E >/dev/null 2>&1; then
8699                 echo "$type found." >&4;
8700                 eval "$var=\$type";
8701         else
8702                 echo "$type NOT found." >&4;
8703                 dflt="$def";
8704                 . ./myread ;
8705                 eval "$var=\$ans";
8706         fi;
8707         $rm -f temp.?;;
8708 *) eval "$var=\$varval";;
8709 esac'
8710
8711 : see what type lseek is declared as in the kernel
8712 rp="What is the type used for lseek's offset on this system?"
8713 set off_t lseektype long stdio.h sys/types.h
8714 eval $typedef_ask
8715
8716 echo " "
8717 echo "Checking to see how big your file offsets are..." >&4
8718 $cat >try.c <<EOCP
8719 #include <sys/types.h>
8720 #include <stdio.h>
8721 int main()
8722 {
8723     printf("%d\n", (int)sizeof($lseektype));
8724     return(0); 
8725 }
8726 EOCP
8727 set try
8728 if eval $compile_ok; then
8729         lseeksize=`$run ./try`
8730         echo "Your file offsets are $lseeksize bytes long."
8731 else
8732         dflt=$longsize
8733         echo " "
8734         echo "(I can't seem to compile the test program.  Guessing...)"
8735         rp="What is the size of your file offsets (in bytes)?"
8736         . ./myread
8737         lseeksize="$ans"
8738 fi
8739 $rm -f try.c try
8740
8741 : see what type file positions are declared as in the library
8742 rp="What is the type for file position used by fsetpos()?"
8743 set fpos_t fpostype long stdio.h sys/types.h
8744 eval $typedef_ask
8745
8746 echo " "
8747 case "$fpostype" in
8748 *_t) zzz="$fpostype"    ;;
8749 *)   zzz="fpos_t"       ;;
8750 esac
8751 echo "Checking the size of $zzz..." >&4 
8752 cat > try.c <<EOCP
8753 #include <sys/types.h>
8754 #include <stdio.h>
8755 #$i_stdlib I_STDLIB
8756 #ifdef I_STDLIB
8757 #include <stdlib.h>
8758 #endif
8759 int main() {
8760     printf("%d\n", (int)sizeof($fpostype));
8761     exit(0);
8762 }
8763 EOCP
8764 set try
8765 if eval $compile_ok; then
8766         yyy=`$run ./try`
8767         case "$yyy" in
8768         '')     fpossize=4
8769                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8770                 ;;
8771         *)      fpossize=$yyy
8772                 echo "Your $zzz is $fpossize bytes long."
8773                 ;;
8774         esac
8775 else
8776         dflt="$longsize"
8777         echo " " >&4
8778         echo "(I can't compile the test program.  Guessing...)" >&4
8779         rp="What is the size of your file positions (in bytes)?"
8780         . ./myread
8781         fpossize="$ans"
8782 fi
8783
8784 # Backward compatibility (uselfs is deprecated).
8785 case "$uselfs" in
8786 "$define"|true|[yY]*)
8787         cat <<EOM >&4
8788
8789 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8790 EOM
8791         uselargefiles="$define"
8792         ;;
8793 esac                          
8794
8795 case "$lseeksize:$fpossize" in
8796 8:8) cat <<EOM
8797
8798 You can have files larger than 2 gigabytes.
8799 EOM
8800    val="$define" ;;
8801 *)    case "$uselargefiles" in
8802    "$undef"|false|[nN]*) dflt='n' ;;
8803    *)   dflt='y' ;;
8804    esac
8805    cat <<EOM
8806
8807 Perl can be built to understand large files (files larger than 2 gigabytes)
8808 on some systems.  To do so, Configure can be run with -Duselargefiles.
8809
8810 If this doesn't make any sense to you, just accept the default '$dflt'.
8811 EOM
8812    rp='Try to understand large files, if available?'
8813    . ./myread
8814    case "$ans" in
8815    y|Y)         val="$define" ;;
8816    *)           val="$undef"  ;;
8817    esac
8818    ;;
8819 esac
8820 set uselargefiles
8821 eval $setvar
8822 case "$uselargefiles" in
8823 "$define")
8824 : Look for a hint-file generated 'call-back-unit'.  If the
8825 : user has specified that a large files perl is to be built,
8826 : we may need to set or change some other defaults.
8827         if $test -f uselargefiles.cbu; then
8828                 echo "Your platform has some specific hints for large file builds, using them..."
8829                 . ./uselargefiles.cbu
8830                 echo " "
8831                 echo "Rechecking to see how big your file offsets are..." >&4
8832                 $cat >try.c <<EOCP
8833 #include <sys/types.h>
8834 #include <stdio.h>
8835 int main()
8836 {
8837     printf("%d\n", (int)sizeof($lseektype));
8838     return(0); 
8839 }
8840 EOCP
8841                 set try
8842                 if eval $compile_ok; then
8843                         lseeksize=`$run ./try`
8844                         $echo "Your file offsets are now $lseeksize bytes long."
8845                 else
8846                         dflt="$lseeksize"
8847                         echo " "
8848                         echo "(I can't seem to compile the test program.  Guessing...)"
8849                         rp="What is the size of your file offsets (in bytes)?"
8850                         . ./myread
8851                         lseeksize="$ans"
8852                 fi
8853                 case "$fpostype" in
8854                 *_t) zzz="$fpostype"    ;;
8855                 *)   zzz="fpos_t"       ;;
8856                 esac
8857                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8858                 $cat > try.c <<EOCP
8859 #include <sys/types.h>
8860 #include <stdio.h>
8861 #$i_stdlib I_STDLIB
8862 #ifdef I_STDLIB
8863 #include <stdlib.h>
8864 #endif
8865 int main() {
8866     printf("%d\n", (int)sizeof($fpostype));
8867     return(0);
8868 }
8869 EOCP
8870                 set try
8871                 if eval $compile_ok; then
8872                         yyy=`$run ./try`
8873                         dflt="$lseeksize"
8874                         case "$yyy" in
8875                         '')     echo " "
8876                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8877                                 ;;
8878                         *)      fpossize=$yyy
8879                                 echo " $fpossize bytes." >&4
8880                                 ;;
8881                         esac
8882                 else
8883                         dflt="$fpossize"
8884                         echo " "
8885                         echo "(I can't compile the test program.  Guessing...)" >&4
8886                         rp="What is the size of your file positions (in bytes)?"
8887                         . ./myread
8888                         fpossize="$ans"
8889                 fi
8890                 $rm -f try.c try
8891         fi
8892         ;;
8893 esac
8894
8895 case "$vendorprefix" in
8896 '')     d_vendorbin="$undef"
8897         vendorbin=''
8898         vendorbinexp=''
8899         ;;
8900 *)      d_vendorbin="$define"
8901         : determine where vendor-supplied executables go.
8902         case "$vendorbin" in
8903         '') dflt=$vendorprefix/bin ;;
8904         *)      dflt="$vendorbin" ;;
8905         esac
8906         fn=d~+
8907         rp='Pathname for the vendor-supplied executables directory?'
8908         . ./getfile
8909         vendorbin="$ans"
8910         vendorbinexp="$ansexp"
8911         ;;
8912 esac
8913 : Change installation prefix, if necessary.
8914 if $test X"$prefix" != X"$installprefix"; then
8915         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8916 else
8917         installvendorbin="$vendorbinexp"
8918 fi
8919
8920 case "$vendorprefix" in
8921 '')     vendorhtml1=''
8922         vendorhtml1exp=''
8923         ;;
8924 *)      : determine where vendor-supplied html pages go.
8925         : There is no standard location, so try to copy the previously-selected
8926         : directory structure for the core html pages.
8927         : XXX Better default suggestions would be welcome.
8928         case "$vendorhtml1" in
8929         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8930         *)      dflt=$vendorhtml1 ;;
8931         esac
8932         case "$dflt" in
8933         ''|' ') dflt=none ;;
8934         esac
8935         fn=dn+~
8936         rp='Pathname for the vendor-supplied html pages?'
8937         . ./getfile
8938         vendorhtml1="$ans"
8939         vendorhtml1exp="$ansexp"
8940         ;;
8941 esac
8942 : Use ' ' for none so value is preserved next time through Configure
8943 $test X"$vendorhtml1" = "X" && vendorhtml1=' '
8944 : Change installation prefix, if necessary.
8945 if $test X"$prefix" != X"$installprefix"; then
8946         installvendorhtml1=`echo $vendorhtml1exp | $sed "s#^$prefix#$installprefix#"`
8947 else
8948         installvendorhtml1="$vendorhtml1exp"
8949 fi
8950
8951 case "$vendorprefix" in
8952 '')     vendorhtml3=''
8953         vendorhtml3exp=''
8954         ;;
8955 *)      : determine where vendor-supplied module html pages go.
8956         : There is no standard location, so try to copy the previously-selected
8957         : directory structure for the core html pages.
8958         : XXX Better default suggestions would be welcome.
8959         case "$vendorhtml3" in
8960         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8961         *)      dflt=$vendorhtml3 ;;
8962         esac
8963         case "$dflt" in
8964         ''|' ') dflt=none ;;
8965         esac
8966         fn=dn+~
8967         rp='Pathname for the vendor-supplied html pages?'
8968         . ./getfile
8969         vendorhtml3="$ans"
8970         vendorhtml3exp="$ansexp"
8971         ;;
8972 esac
8973 : Use ' ' for none so value is preserved next time through Configure
8974 $test X"$vendorhtml3" = "X" && vendorhtml3=' '
8975 : Change installation prefix, if necessary.
8976 if $test X"$prefix" != X"$installprefix"; then
8977         installvendorhtml3=`echo $vendorhtml3exp | $sed "s#^$prefix#$installprefix#"`
8978 else
8979         installvendorhtml3="$vendorhtml3exp"
8980 fi
8981
8982 case "$vendorprefix" in
8983 '')     vendorman1=''
8984         vendorman1exp=''
8985         ;;
8986 *)      : determine where vendor-supplied manual pages go.
8987         case "$vendorman1" in
8988         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8989         *)      dflt=$vendorman1 ;;
8990         esac
8991         case "$dflt" in
8992         ''|' ') dflt=none ;;
8993         esac
8994         fn=nd~+
8995         rp='Pathname for the vendor-supplied manual section 1 pages?'
8996         . ./getfile
8997         vendorman1="$ans"
8998         vendorman1exp="$ansexp"
8999         ;;
9000 esac
9001 : Use ' ' for none so value is preserved next time through Configure
9002 $test X"$vendorman1" = "X" && vendorman1=' '
9003 : Change installation prefix, if necessary.
9004 if $test X"$prefix" != X"$installprefix"; then
9005         installvendorman1=`echo "$vendorman1exp" | $sed "s#^$prefix#$installprefix#"`
9006 else
9007         installvendorman1="$vendorman1exp"
9008 fi
9009
9010 case "$vendorprefix" in
9011 '')     vendorman3=''
9012         vendorman3exp=''
9013         ;;
9014 *)      : determine where vendor-supplied module manual pages go.
9015         case "$vendorman3" in
9016         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9017         *)      dflt=$vendorman3 ;;
9018         esac
9019         case "$dflt" in
9020         ''|' ') dflt=none ;;
9021         esac
9022         fn=nd~+
9023         rp='Pathname for the vendor-supplied manual section 3 pages?'
9024         . ./getfile
9025         vendorman3="$ans"
9026         vendorman3exp="$ansexp"
9027         ;;
9028 esac
9029 : Use ' ' for none so value is preserved next time through Configure
9030 $test X"$vendorman3" = "X" && vendorman3=' '
9031 : Change installation prefix, if necessary.
9032 if $test X"$prefix" != X"$installprefix"; then
9033         installvendorman3=`echo "$vendorman3exp" | $sed "s#^$prefix#$installprefix#"`
9034 else
9035         installvendorman3="$vendorman3exp"
9036 fi
9037
9038 case "$vendorprefix" in
9039 '')     d_vendorscript="$undef"
9040         vendorscript=''
9041         vendorscriptexp=''
9042         ;;
9043 *)      d_vendorscript="$define"
9044         : determine where vendor-supplied scripts go.
9045         case "$vendorscript" in
9046         '')     dflt=$vendorprefix/script
9047                 $test -d $dflt || dflt=$vendorbin ;;
9048         *)  dflt="$vendorscript" ;;
9049         esac
9050         $cat <<EOM
9051
9052 The installation process will create a directory for 
9053 vendor-supplied scripts.
9054
9055 EOM
9056         fn=d~+
9057         rp='Pathname for the vendor-supplied scripts directory?'
9058         . ./getfile
9059         vendorscript="$ans"
9060         vendorscriptexp="$ansexp"
9061         ;;
9062 esac
9063 : Change installation prefix, if necessary.
9064 if $test X"$prefix" != X"$installprefix"; then
9065         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9066 else
9067         installvendorscript="$vendorscriptexp"
9068 fi
9069
9070 : see if qgcvt exists
9071 set qgcvt d_qgcvt
9072 eval $inlibc
9073
9074 echo " "
9075
9076 if $test X"$d_longdbl" = X"$define"; then
9077
9078 echo "Checking how to print long doubles..." >&4
9079
9080 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9081         $cat >try.c <<'EOCP'
9082 #include <sys/types.h>
9083 #include <stdio.h>
9084 int main() {
9085   double d = 123.456;
9086   printf("%.3f\n", d);
9087 }
9088 EOCP
9089         set try
9090         if eval $compile; then
9091                 yyy=`$run ./try`
9092                 case "$yyy" in
9093                 123.456)
9094                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9095                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9096                         echo "We will use %f."
9097                         ;;
9098                 esac
9099         fi
9100 fi
9101
9102 if $test X"$sPRIfldbl" = X; then
9103         $cat >try.c <<'EOCP'
9104 #include <sys/types.h>
9105 #include <stdio.h>
9106 int main() {
9107   long double d = 123.456;
9108   printf("%.3Lf\n", d);
9109 }
9110 EOCP
9111         set try
9112         if eval $compile; then
9113                 yyy=`$run ./try`
9114                 case "$yyy" in
9115                 123.456)
9116                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9117                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9118                         echo "We will use %Lf."
9119                         ;;
9120                 esac
9121         fi
9122 fi
9123
9124 if $test X"$sPRIfldbl" = X; then
9125         $cat >try.c <<'EOCP'
9126 #include <sys/types.h>
9127 #include <stdio.h>
9128 int main() {
9129   long double d = 123.456;
9130   printf("%.3llf\n", d);
9131 }
9132 EOCP
9133         set try
9134         if eval $compile; then
9135                 yyy=`$run ./try`
9136                 case "$yyy" in
9137                 123.456)
9138                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9139                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9140                         echo "We will use %llf."
9141                         ;;
9142                 esac
9143         fi
9144 fi
9145
9146 if $test X"$sPRIfldbl" = X; then
9147         $cat >try.c <<'EOCP'
9148 #include <sys/types.h>
9149 #include <stdio.h>
9150 int main() {
9151   long double d = 123.456;
9152   printf("%.3lf\n", d);
9153 }
9154 EOCP
9155         set try
9156         if eval $compile; then
9157                 yyy=`$run ./try`
9158                 case "$yyy" in
9159                 123.456)
9160                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9161                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9162                         echo "We will use %lf."
9163                         ;;
9164                 esac
9165         fi
9166 fi
9167
9168 if $test X"$sPRIfldbl" = X; then
9169         echo "Cannot figure out how to print long doubles." >&4
9170 else
9171         sSCNfldbl=$sPRIfldbl    # expect consistency
9172 fi
9173
9174 $rm -f try try.*
9175
9176 fi # d_longdbl
9177
9178 case "$sPRIfldbl" in
9179 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9180         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9181         d_SCNfldbl="$undef";
9182         ;;
9183 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9184         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9185         d_SCNfldbl="$define";
9186         ;;
9187 esac
9188
9189 : Check how to convert floats to strings.
9190
9191 if test "X$d_Gconvert" = X; then
9192
9193 echo " "
9194 echo "Checking for an efficient way to convert floats to strings."
9195 echo " " > try.c
9196 case "$uselongdouble" in
9197 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9198 esac
9199 case "$d_longdbl" in
9200 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9201 esac
9202 case "$d_PRIgldbl" in
9203 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9204 esac
9205 $cat >>try.c <<EOP
9206 #ifdef TRY_gconvert
9207 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9208 char *myname = "gconvert";
9209 #endif
9210 #ifdef TRY_gcvt
9211 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9212 char *myname = "gcvt";
9213 #endif
9214 #ifdef TRY_qgcvt
9215 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9216 char *myname = "qgcvt";
9217 #define DOUBLETYPE long double
9218 #endif
9219 #ifdef TRY_sprintf
9220 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9221 #ifdef HAS_PRIgldbl
9222 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9223 #else
9224 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9225 #endif
9226 #else
9227 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9228 #endif
9229 char *myname = "sprintf";
9230 #endif
9231
9232 #ifndef DOUBLETYPE
9233 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9234 #define DOUBLETYPE long double
9235 #else
9236 #define DOUBLETYPE double
9237 #endif
9238 #endif
9239
9240 #include <stdio.h>
9241
9242 #define I_STDLIB $i_stdlib
9243 #ifdef I_STDLIB
9244 #include <stdlib.h>
9245 #endif
9246
9247 int
9248 checkit(expect, got)
9249 char *expect;
9250 char *got;
9251 {
9252     if (strcmp(expect, got)) {
9253                 printf("%s oddity:  Expected %s, got %s\n",
9254                         myname, expect, got);
9255                 exit(1);
9256         }
9257 }
9258
9259 int main()
9260
9261         char buf[64]; 
9262         buf[63] = '\0';
9263
9264         /* This must be 1st test on (which?) platform */
9265         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9266         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9267         checkit("0.1", buf);
9268
9269         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9270         checkit("0.01", buf);
9271
9272         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9273         checkit("0.001", buf);
9274
9275         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9276         checkit("0.0001", buf);
9277
9278         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9279         if (strlen(buf) > 5)
9280             checkit("9e-005", buf); /* for Microsoft ?? */
9281         else
9282             checkit("9e-05", buf);
9283
9284         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9285         checkit("1", buf);
9286
9287         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9288         checkit("1.1", buf);
9289
9290         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9291         checkit("1.01", buf);
9292
9293         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9294         checkit("1.001", buf);
9295
9296         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9297         checkit("1.0001", buf);
9298
9299         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9300         checkit("1.00001", buf);
9301
9302         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9303         checkit("1.000001", buf);
9304
9305         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9306         checkit("0", buf);
9307
9308         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9309         checkit("-1", buf);
9310
9311         /* Some Linux gcvt's give 1.e+5 here. */
9312         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9313         checkit("100000", buf);
9314         
9315         /* Some Linux gcvt's give -1.e+5 here. */
9316         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9317         checkit("-100000", buf);
9318
9319         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9320         checkit("123.456", buf);
9321
9322         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9323         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9324         /* 34 should be enough to scare even long double
9325          * places into using the e notation. */
9326         if (strlen(buf) > 5)
9327             checkit("1e+034", buf); /* for Microsoft */
9328         else
9329             checkit("1e+34", buf);
9330
9331         /* For Perl, if you add additional tests here, also add them to
9332          * t/base/num.t for benefit of platforms not using Configure or
9333          * overriding d_Gconvert */
9334
9335         exit(0);
9336 }
9337 EOP
9338 : first add preferred functions to our list
9339 xxx_list=""
9340 for xxx_convert in $gconvert_preference; do
9341     case $xxx_convert in
9342     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9343     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9344     esac 
9345 done
9346 : then add any others
9347 for xxx_convert in gconvert gcvt sprintf; do
9348     case "$xxx_list" in
9349     *$xxx_convert*) ;;
9350     *) xxx_list="$xxx_list $xxx_convert" ;;
9351     esac 
9352 done
9353
9354 case "$d_longdbl$uselongdouble" in
9355 "$define$define")
9356     : again, add prefered functions to our list first
9357     xxx_ld_list=""
9358     for xxx_convert in $gconvert_ld_preference; do
9359         case $xxx_convert in
9360         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9361         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9362         esac
9363     done
9364     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9365     for xxx_convert in qgcvt sprintf $xxx_list; do
9366         case "$xxx_ld_list" in
9367         $xxx_convert*|*" $xxx_convert"*) ;;
9368         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9369         esac
9370     done
9371     : if sprintf cannot do long doubles, move it to the end
9372     if test "$d_PRIgldbl" != "$define"; then
9373         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9374     fi
9375     : if no qgcvt, remove it
9376     if test "$d_qgcvt" != "$define"; then
9377         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9378     fi
9379     : use the ld_list
9380     xxx_list="$xxx_ld_list"
9381     ;;
9382 esac
9383
9384 for xxx_convert in $xxx_list; do
9385         echo "Trying $xxx_convert..."
9386         $rm -f try try$_o
9387         set try -DTRY_$xxx_convert
9388         if eval $compile; then
9389                 echo "$xxx_convert() found." >&4
9390                 if $run ./try; then
9391                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9392                         break;
9393                 else
9394                         echo "...But $xxx_convert didn't work as I expected."
9395                         xxx_convert=''
9396                 fi
9397         else
9398                 echo "$xxx_convert NOT found." >&4
9399         fi
9400 done
9401
9402 if test X$xxx_convert = X; then
9403     echo "*** WHOA THERE!!! ***" >&4
9404     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9405     xxx_convert=sprintf
9406 fi
9407
9408 case "$xxx_convert" in
9409 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9410 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9411 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9412 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9413    "$define$define$define")
9414       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9415    "$define$define$undef")
9416       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9417    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9418    esac
9419    ;;  
9420 esac
9421
9422 fi
9423
9424 : see if _fwalk exists
9425 set fwalk d__fwalk
9426 eval $inlibc
9427
9428 : Initialize h_fcntl
9429 h_fcntl=false
9430
9431 : Initialize h_sysfile
9432 h_sysfile=false
9433
9434 : access call always available on UNIX
9435 set access d_access
9436 eval $inlibc
9437
9438 : locate the flags for 'access()'
9439 case "$d_access" in
9440 "$define")
9441         echo " "
9442         $cat >access.c <<EOCP
9443 #include <sys/types.h>
9444 #ifdef I_FCNTL
9445 #include <fcntl.h>
9446 #endif
9447 #ifdef I_SYS_FILE
9448 #include <sys/file.h>
9449 #endif
9450 #ifdef I_UNISTD
9451 #include <unistd.h>
9452 #endif
9453 #$i_stdlib I_STDLIB
9454 #ifdef I_STDLIB
9455 #include <stdlib.h>
9456 #endif
9457 int main() {
9458         exit(R_OK);
9459 }
9460 EOCP
9461         : check sys/file.h first, no particular reason here
9462         if $test `./findhdr sys/file.h` && \
9463                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9464                 h_sysfile=true;
9465                 echo "<sys/file.h> defines the *_OK access constants." >&4
9466         elif $test `./findhdr fcntl.h` && \
9467                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9468                 h_fcntl=true;
9469                 echo "<fcntl.h> defines the *_OK access constants." >&4
9470         elif $test `./findhdr unistd.h` && \
9471                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9472                 echo "<unistd.h> defines the *_OK access constants." >&4
9473         else
9474                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9475         fi
9476         ;;
9477 esac
9478 $rm -f access*
9479
9480 : see if accessx exists
9481 set accessx d_accessx
9482 eval $inlibc
9483
9484 : see if aintl exists
9485 set aintl d_aintl
9486 eval $inlibc
9487
9488 : see if alarm exists
9489 set alarm d_alarm
9490 eval $inlibc
9491
9492 : see if POSIX threads are available
9493 set pthread.h i_pthread
9494 eval $inhdr
9495
9496 : define a fucntion to check prototypes
9497 $cat > protochk <<EOSH
9498 $startsh
9499 cc="$cc"
9500 optimize="$optimize"
9501 ccflags="$ccflags"
9502 prototype="$prototype"
9503 define="$define"
9504 rm=$rm
9505 usethreads=$usethreads
9506 i_pthread=$i_pthread
9507 pthread_h_first=$pthread_h_first
9508 EOSH
9509
9510 $cat >> protochk <<'EOSH'
9511
9512 $rm -f try.c
9513 foo="$1"
9514 shift
9515 while test $# -ge 2; do
9516         case "$1" in
9517                 $define) echo "#include <$2>" >> try.c ;;
9518                 literal) echo "$2" >> try.c ;;
9519         esac
9520     # Extra magic for the benefit of systems that need pthread.h
9521     # to be included early to correctly detect threadsafe functions.
9522     # Such functions must guarantee themselves, though, that the usethreads
9523     # and i_pthread have been defined, before calling protochk.
9524     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9525         echo "#include <pthread.h>" >> try.c
9526         pthread_h_done=yes
9527     fi
9528     shift 2
9529 done
9530 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9531 cat >> try.c <<'EOCP'
9532 #ifdef CAN_PROTOTYPE
9533 #define _(args) args
9534 #else
9535 #define _(args) ()
9536 #endif
9537 EOCP
9538 echo "$foo" >> try.c
9539 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9540 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9541 status=$?
9542 $rm -f try.[co]
9543 exit $status
9544 EOSH
9545 chmod +x protochk
9546 $eunicefix protochk
9547
9548 hasproto='varname=$1; func=$2; shift; shift;
9549 while $test $# -ge 2; do
9550         case "$1" in
9551         $define) echo "#include <$2>";;
9552         esac ;
9553     shift 2;
9554 done > try.c;
9555 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9556 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9557         echo "$func() prototype found.";
9558         val="$define";
9559 else
9560         echo "$func() prototype NOT found.";
9561         val="$undef";
9562 fi;
9563 set $varname;
9564 eval $setvar;
9565 $rm -f try.c tryout.c'
9566
9567 : see if sys/types.h has to be included
9568 set sys/types.h i_systypes
9569 eval $inhdr
9570
9571 : see if sys/select.h has to be included
9572 set sys/select.h i_sysselct
9573 eval $inhdr
9574
9575 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9576 while $test $# -ge 2; do
9577         case "$1" in
9578         $define) echo "#include <$2>";;
9579         esac ;
9580     shift 2;
9581 done > try.c;
9582 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9583 set try;
9584 if eval $compile; then
9585         val="$define";
9586 else
9587         val="$undef";
9588 fi;
9589 set $varname;
9590 eval $setvar;
9591 $rm -f try.c try.o'
9592
9593 : see if we should include time.h, sys/time.h, or both
9594 echo " "
9595 if test "X$timeincl" = X; then
9596         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9597         $echo $n "I'm now running the test program...$c"
9598         $cat >try.c <<EOCP
9599 #include <sys/types.h>
9600 #ifdef I_TIME
9601 #include <time.h>
9602 #endif
9603 #ifdef I_SYSTIME
9604 #ifdef SYSTIMEKERNEL
9605 #define KERNEL
9606 #endif
9607 #include <sys/time.h>
9608 #endif
9609 #ifdef I_SYSSELECT
9610 #include <sys/select.h>
9611 #endif
9612 #$i_stdlib I_STDLIB
9613 #ifdef I_STDLIB
9614 #include <stdlib.h>
9615 #endif
9616 int main()
9617 {
9618         struct tm foo;
9619 #ifdef S_TIMEVAL
9620         struct timeval bar;
9621 #endif
9622 #ifdef S_TIMEZONE
9623         struct timezone tzp;
9624 #endif
9625         if (foo.tm_sec == foo.tm_sec)
9626                 exit(0);
9627 #ifdef S_TIMEVAL
9628         if (bar.tv_sec == bar.tv_sec)
9629                 exit(0);
9630 #endif
9631         exit(1);
9632 }
9633 EOCP
9634         flags=''
9635         for s_timezone in '-DS_TIMEZONE' ''; do
9636         sysselect=''
9637         for s_timeval in '-DS_TIMEVAL' ''; do
9638         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9639         for i_time in '' '-DI_TIME'; do
9640         for i_systime in '-DI_SYSTIME' ''; do
9641                 case "$flags" in
9642                 '') $echo $n ".$c"
9643                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9644                         if eval $compile; then
9645                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9646                                 shift
9647                                 flags="$*"
9648                                 echo " "
9649                                 $echo $n "Succeeded with $flags$c"
9650                         fi
9651                         ;;
9652                 esac
9653         done
9654         done
9655         done
9656         done
9657         done
9658         timeincl=''
9659         echo " "
9660         case "$flags" in
9661         *SYSTIMEKERNEL*) i_systimek="$define"
9662                 timeincl=`./findhdr sys/time.h`
9663                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9664         *) i_systimek="$undef";;
9665         esac
9666         case "$flags" in
9667         *I_TIME*) i_time="$define"
9668                 timeincl=`./findhdr time.h`" $timeincl"
9669                 echo "We'll include <time.h>." >&4;;
9670         *) i_time="$undef";;
9671         esac
9672         case "$flags" in
9673         *I_SYSTIME*) i_systime="$define"
9674                 timeincl=`./findhdr sys/time.h`" $timeincl"
9675                 echo "We'll include <sys/time.h>." >&4;;
9676         *) i_systime="$undef";;
9677         esac
9678         $rm -f try.c try
9679 fi
9680 : see if struct tm knows about tm_zone
9681 case "$i_systime$i_time" in
9682 *$define*) 
9683         echo " "
9684         echo "Checking to see if your struct tm has tm_zone field..." >&4
9685         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9686         eval $hasfield
9687         ;;
9688 *)      val="$undef"
9689         set d_tm_tm_zone
9690         eval $setvar
9691         ;;
9692 esac
9693 case "$d_tm_tm_zone" in
9694 "$define")      echo "Yes, it does."   ;;
9695 *)              echo "No, it doesn't." ;;
9696 esac
9697 : see if struct tm knows about tm_gmtoff
9698 case "$i_systime$i_time" in
9699 *$define*) 
9700         echo " "
9701         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9702         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9703         eval $hasfield
9704         ;;
9705 *)      val="$undef"
9706         set d_tm_tm_gmtoff
9707         eval $setvar
9708         ;;
9709 esac
9710 case "$d_tm_tm_gmtoff" in
9711 "$define")      echo "Yes, it does."   ;;
9712 *)              echo "No, it doesn't." ;;
9713 esac
9714
9715 : see if asctime_r exists
9716 set asctime_r d_asctime_r
9717 eval $inlibc
9718 case "$d_asctime_r" in
9719 "$define")
9720         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9721         case "$d_asctime_r_proto:$usethreads" in
9722         ":define")      d_asctime_r_proto=define
9723                 set d_asctime_r_proto asctime_r $hdrs
9724                 eval $hasproto ;;
9725         *)      ;;
9726         esac
9727         case "$d_asctime_r_proto" in
9728         define)
9729         case "$asctime_r_proto" in
9730         ''|0) try='char* asctime_r(const struct tm*, char*);'
9731         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9732         esac
9733         case "$asctime_r_proto" in
9734         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9735         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9736         esac
9737         case "$asctime_r_proto" in
9738         ''|0) try='int asctime_r(const struct tm*, char*);'
9739         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9740         esac
9741         case "$asctime_r_proto" in
9742         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9743         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9744         esac
9745         case "$asctime_r_proto" in
9746         ''|0)   d_asctime_r=undef
9747                 asctime_r_proto=0
9748                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9749         * )     case "$asctime_r_proto" in
9750                 REENTRANT_PROTO*) ;;
9751                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9752                 esac
9753                 echo "Prototype: $try" ;;
9754         esac
9755         ;;
9756         *)      case "$usethreads" in
9757                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9758                 esac
9759                 d_asctime_r=undef
9760                 asctime_r_proto=0
9761                 ;;
9762         esac
9763         ;;
9764 *)      asctime_r_proto=0
9765         ;;
9766 esac
9767
9768 : see if atolf exists
9769 set atolf d_atolf
9770 eval $inlibc
9771
9772 : see if atoll exists
9773 set atoll d_atoll
9774 eval $inlibc
9775
9776 : Look for GNU-cc style attribute checking
9777 echo " "
9778 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9779 $cat >attrib.c <<'EOCP'
9780 #include <stdio.h>
9781 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
9782 EOCP
9783 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9784         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9785                 echo "Your C compiler doesn't fully support __attribute__."
9786                 val="$undef"
9787         else
9788                 echo "Your C compiler supports __attribute__."
9789                 val="$define"
9790         fi
9791 else
9792         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9793         val="$undef"
9794 fi
9795 set d_attribut
9796 eval $setvar
9797 $rm -f attrib*
9798
9799 : see if bcmp exists
9800 set bcmp d_bcmp
9801 eval $inlibc
9802
9803 : see if bcopy exists
9804 set bcopy d_bcopy
9805 eval $inlibc
9806
9807 : see if this is a unistd.h system
9808 set unistd.h i_unistd
9809 eval $inhdr
9810
9811 : see if getpgrp exists
9812 set getpgrp d_getpgrp
9813 eval $inlibc
9814
9815 case "$d_getpgrp" in
9816 "$define")
9817         echo " "
9818         echo "Checking to see which flavor of getpgrp is in use..."
9819         $cat >try.c <<EOP
9820 #$i_unistd I_UNISTD
9821 #include <sys/types.h>
9822 #ifdef I_UNISTD
9823 #  include <unistd.h>
9824 #endif
9825 #$i_stdlib I_STDLIB
9826 #ifdef I_STDLIB
9827 #include <stdlib.h>
9828 #endif
9829 int main()
9830 {
9831         if (getuid() == 0) {
9832                 printf("(I see you are running Configure as super-user...)\n");
9833                 setuid(1);
9834         }
9835 #ifdef TRY_BSD_PGRP
9836         if (getpgrp(1) == 0)
9837                 exit(0);
9838 #else
9839         if (getpgrp() > 0)
9840                 exit(0);
9841 #endif
9842         exit(1);
9843 }
9844 EOP
9845         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9846                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9847                 val="$define"
9848         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9849                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9850                 val="$undef"
9851         else
9852                 echo "I can't seem to compile and run the test program."
9853                 if ./usg; then
9854                         xxx="a USG one, i.e. you use getpgrp()."
9855                 else
9856                         # SVR4 systems can appear rather BSD-ish.
9857                         case "$i_unistd" in
9858                         $undef)
9859                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9860                                 val="$define"
9861                                 ;;
9862                         $define)
9863                                 xxx="probably a USG one, i.e. you use getpgrp()."
9864                                 val="$undef"
9865                                 ;;
9866                         esac
9867                 fi
9868                 echo "Assuming your getpgrp is $xxx" >&4
9869         fi
9870         ;;
9871 *) val="$undef";;
9872 esac
9873 set d_bsdgetpgrp
9874 eval $setvar
9875 $rm -f try try.*
9876
9877 : see if setpgrp exists
9878 set setpgrp d_setpgrp
9879 eval $inlibc
9880
9881 case "$d_setpgrp" in
9882 "$define")
9883         echo " "
9884         echo "Checking to see which flavor of setpgrp is in use..."
9885         $cat >try.c <<EOP
9886 #$i_unistd I_UNISTD
9887 #include <sys/types.h>
9888 #ifdef I_UNISTD
9889 #  include <unistd.h>
9890 #endif
9891 #$i_stdlib I_STDLIB
9892 #ifdef I_STDLIB
9893 #include <stdlib.h>
9894 #endif
9895 int main()
9896 {
9897         if (getuid() == 0) {
9898                 printf("(I see you are running Configure as super-user...)\n");
9899                 setuid(1);
9900         }
9901 #ifdef TRY_BSD_PGRP
9902         if (-1 == setpgrp(1, 1))
9903                 exit(0);
9904 #else
9905         if (setpgrp() != -1)
9906                 exit(0);
9907 #endif
9908         exit(1);
9909 }
9910 EOP
9911         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9912                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9913                 val="$define"
9914         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9915                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9916                 val="$undef"
9917         else
9918                 echo "(I can't seem to compile and run the test program.)"
9919                 if ./usg; then
9920                         xxx="a USG one, i.e. you use setpgrp()."
9921                 else
9922                         # SVR4 systems can appear rather BSD-ish.
9923                         case "$i_unistd" in
9924                         $undef)
9925                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9926                                 val="$define"
9927                                 ;;
9928                         $define)
9929                                 xxx="probably a USG one, i.e. you use setpgrp()."
9930                                 val="$undef"
9931                                 ;;
9932                         esac
9933                 fi
9934                 echo "Assuming your setpgrp is $xxx" >&4
9935         fi
9936         ;;
9937 *) val="$undef";;
9938 esac
9939 set d_bsdsetpgrp
9940 eval $setvar
9941 $rm -f try try.*
9942 : see if bzero exists
9943 set bzero d_bzero
9944 eval $inlibc
9945
9946 : see if signal is declared as pointer to function returning int or void
9947 echo " "
9948 xxx=`./findhdr signal.h`
9949 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9950 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9951         echo "You have int (*signal())() instead of void." >&4
9952         val="$undef"
9953 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9954         echo "You have void (*signal())()." >&4
9955         val="$define"
9956 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9957         echo "You have int (*signal())() instead of void." >&4
9958         val="$undef"
9959 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9960         echo "You have void (*signal())()." >&4
9961         val="$define"
9962 else
9963         case "$d_voidsig" in
9964         '')
9965         echo "I can't determine whether signal handler returns void or int..." >&4
9966                 dflt=void
9967                 rp="What type does your signal handler return?"
9968                 . ./myread
9969                 case "$ans" in
9970                 v*) val="$define";;
9971                 *) val="$undef";;
9972                 esac;;
9973         "$define")
9974                 echo "As you already told me, signal handler returns void." >&4
9975                 val="$define"
9976                 ;;
9977         *)      echo "As you already told me, signal handler returns int." >&4
9978                 val="$undef"
9979                 ;;
9980         esac
9981 fi
9982 set d_voidsig
9983 eval $setvar
9984 case "$d_voidsig" in
9985 "$define") signal_t="void";;
9986 *) signal_t="int";;
9987 esac
9988 $rm -f $$.tmp
9989
9990 : check for ability to cast large floats to 32-bit ints.
9991 echo " "
9992 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9993 if $test "$intsize" -ge 4; then
9994         xxx=int
9995 else
9996         xxx=long
9997 fi
9998 $cat >try.c <<EOCP
9999 #include <stdio.h>
10000 #$i_stdlib I_STDLIB
10001 #ifdef I_STDLIB
10002 #include <stdlib.h>
10003 #endif
10004 #include <sys/types.h>
10005 #include <signal.h>
10006 $signal_t blech(s) int s; { exit(3); }
10007 int main()
10008 {
10009         $xxx i32;
10010         double f, g;
10011         int result = 0;
10012         char str[16];
10013         signal(SIGFPE, blech);
10014
10015         /* Don't let compiler optimize the test away.  Store the number 
10016            in a writable string for gcc to pass to sscanf under HP/UX.
10017         */
10018         sprintf(str, "2147483647");
10019         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10020         g = 10 * f;
10021         i32  = ($xxx) g;
10022
10023         /* x86 processors will probably give 0x8000 0000, which is a
10024        sign change.  We don't want that.  We want to mimic SPARC
10025            behavior here, which is to preserve the sign and give
10026            back 0x7fff ffff.
10027         */
10028         if (i32 != ($xxx) f)
10029                 result |= 1;
10030         exit(result);
10031 }
10032 EOCP
10033 set try
10034 if eval $compile_ok; then
10035         $run ./try
10036         yyy=$?
10037 else
10038         echo "(I can't seem to compile the test program--assuming it can't)"
10039         yyy=1
10040 fi
10041 case "$yyy" in
10042 0)      val="$define"
10043         echo "Yup, it can."
10044         ;;
10045 *)      val="$undef"
10046         echo "Nope, it can't."
10047         ;;
10048 esac
10049 set d_casti32
10050 eval $setvar
10051 $rm -f try try.*
10052
10053 : check for ability to cast negative floats to unsigned
10054 echo " "
10055 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10056 $cat >try.c <<EOCP
10057 #include <stdio.h>
10058 #$i_stdlib I_STDLIB
10059 #ifdef I_STDLIB
10060 #include <stdlib.h>
10061 #endif
10062 #include <sys/types.h>
10063 #include <signal.h>
10064 $signal_t blech(s) int s; { exit(7); }
10065 $signal_t blech_in_list(s) int s; { exit(4); }
10066 unsigned long dummy_long(p) unsigned long p; { return p; }
10067 unsigned int dummy_int(p) unsigned int p; { return p; }
10068 unsigned short dummy_short(p) unsigned short p; { return p; }
10069 int main()
10070 {
10071         double f;
10072         unsigned long along;
10073         unsigned int aint;
10074         unsigned short ashort;
10075         int result = 0;
10076         char str[16];
10077         
10078         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10079            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10080            optimized the whole file away
10081         */
10082         /* Store the number in a writable string for gcc to pass to 
10083            sscanf under HP/UX.
10084         */
10085         sprintf(str, "-123");
10086         sscanf(str, "%lf", &f);  /* f = -123.; */
10087
10088         signal(SIGFPE, blech);
10089         along = (unsigned long)f;
10090         aint = (unsigned int)f;
10091         ashort = (unsigned short)f;
10092         if (along != (unsigned long)-123)
10093                 result |= 1;
10094         if (aint != (unsigned int)-123)
10095                 result |= 1;
10096         if (ashort != (unsigned short)-123)
10097                 result |= 1;
10098         sprintf(str, "1073741824.");
10099         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10100         f = f + f;
10101         along = 0;
10102         along = (unsigned long)f;
10103         if (along != 0x80000000)
10104                 result |= 2;
10105         f -= 1.;
10106         along = 0;
10107         along = (unsigned long)f;
10108         if (along != 0x7fffffff)
10109                 result |= 1;
10110         f += 2.;
10111         along = 0;
10112         along = (unsigned long)f;
10113         if (along != 0x80000001)
10114                 result |= 2;
10115         if (result)
10116                 exit(result);
10117         signal(SIGFPE, blech_in_list);
10118         sprintf(str, "123.");
10119         sscanf(str, "%lf", &f);  /* f = 123.; */
10120         along = dummy_long((unsigned long)f);
10121         aint = dummy_int((unsigned int)f);
10122         ashort = dummy_short((unsigned short)f);
10123         if (along != (unsigned long)123)
10124                 result |= 4;
10125         if (aint != (unsigned int)123)
10126                 result |= 4;
10127         if (ashort != (unsigned short)123)
10128                 result |= 4;
10129         exit(result);
10130
10131 }
10132 EOCP
10133 set try
10134 if eval $compile_ok; then
10135         $run ./try
10136         castflags=$?
10137 else
10138         echo "(I can't seem to compile the test program--assuming it can't)"
10139         castflags=7
10140 fi
10141 case "$castflags" in
10142 0)      val="$define"
10143         echo "Yup, it can."
10144         ;;
10145 *)      val="$undef"
10146         echo "Nope, it can't."
10147         ;;
10148 esac
10149 set d_castneg
10150 eval $setvar
10151 $rm -f try.*
10152
10153 : see if vprintf exists
10154 echo " "
10155 if set vprintf val -f d_vprintf; eval $csym; $val; then
10156         echo 'vprintf() found.' >&4
10157         val="$define"
10158         $cat >try.c <<EOF
10159 #include <varargs.h>
10160 #$i_stdlib I_STDLIB
10161 #ifdef I_STDLIB
10162 #include <stdlib.h>
10163 #endif
10164
10165 int main() { xxx("foo"); }
10166
10167 xxx(va_alist)
10168 va_dcl
10169 {
10170         va_list args;
10171         char buf[10];
10172
10173         va_start(args);
10174         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10175 }
10176 EOF
10177         set try
10178         if eval $compile && $run ./try; then
10179                 echo "Your vsprintf() returns (int)." >&4
10180                 val2="$undef"
10181         else
10182                 echo "Your vsprintf() returns (char*)." >&4
10183                 val2="$define"
10184         fi
10185 else
10186         echo 'vprintf() NOT found.' >&4
10187                 val="$undef"
10188                 val2="$undef"
10189 fi
10190 $rm -f try try.*
10191 set d_vprintf
10192 eval $setvar
10193 val=$val2
10194 set d_charvspr
10195 eval $setvar
10196
10197 : see if chown exists
10198 set chown d_chown
10199 eval $inlibc
10200
10201 : see if chroot exists
10202 set chroot d_chroot
10203 eval $inlibc
10204
10205 : see if chsize exists
10206 set chsize d_chsize
10207 eval $inlibc
10208
10209 : see if class exists
10210 set class d_class
10211 eval $inlibc
10212
10213 hasstruct='varname=$1; struct=$2; shift; shift;
10214 while $test $# -ge 2; do
10215         case "$1" in
10216         $define) echo "#include <$2>";;
10217         esac ;
10218     shift 2;
10219 done > try.c;
10220 echo "int main () { struct $struct foo; }" >> try.c;
10221 set try;
10222 if eval $compile; then
10223         val="$define";
10224 else
10225         val="$undef";
10226 fi;
10227 set $varname;
10228 eval $setvar;
10229 $rm -f try.c try.o'
10230
10231 socketlib=''
10232 sockethdr=''
10233 : see whether socket exists
10234 echo " "
10235 $echo $n "Hmm... $c" >&4
10236 if set socket val -f d_socket; eval $csym; $val; then
10237         echo "Looks like you have Berkeley networking support." >&4
10238         d_socket="$define"
10239         if set setsockopt val -f; eval $csym; $val; then
10240                 d_oldsock="$undef"
10241         else
10242                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10243                 d_oldsock="$define"
10244         fi
10245 else
10246         if $contains socklib libc.list >/dev/null 2>&1; then
10247                 echo "Looks like you have Berkeley networking support." >&4
10248                 d_socket="$define"
10249                 : we will have to assume that it supports the 4.2 BSD interface
10250                 d_oldsock="$undef"
10251         else
10252                 echo "You don't have Berkeley networking in libc$_a..." >&4
10253                 if test "X$d_socket" = "X$define"; then
10254                    echo "...but you seem to believe that you have sockets." >&4
10255                 else
10256                         for net in net socket
10257                         do
10258                                 if test -f /usr/lib/lib$net$_a; then
10259                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10260                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10261                                         if $contains socket libc.list >/dev/null 2>&1; then
10262                                                 d_socket="$define"
10263                                                 socketlib="-l$net"
10264                                                 case "$net" in
10265                                                 net)
10266                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10267                                                         sockethdr="-I/usr/netinclude"
10268                                                         ;;
10269                                                 esac
10270                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10271                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10272                                                         d_oldsock="$undef"
10273                                                 else
10274                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10275                                                         d_oldsock="$define"
10276                                                 fi
10277                                                 break
10278                                         fi
10279                                 fi
10280                         done
10281                         if test "X$d_socket" != "X$define"; then
10282                            echo "or anywhere else I see." >&4
10283                            d_socket="$undef"
10284                            d_oldsock="$undef"
10285                         fi
10286                 fi
10287         fi
10288 fi
10289
10290 : see if socketpair exists
10291 set socketpair d_sockpair
10292 eval $inlibc
10293
10294
10295 echo " "
10296 echo "Checking the availability of certain socket constants..." >&4
10297 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10298         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10299         $cat >try.c <<EOF
10300 #include <sys/types.h>
10301 #include <sys/socket.h>
10302 int main() {
10303     int i = $ENUM;
10304 }
10305 EOF
10306         val="$undef"
10307         set try; if eval $compile; then
10308                 val="$define"
10309         fi
10310         set d_${enum}; eval $setvar
10311         $rm -f try.c try
10312 done
10313
10314 : see if this is a sys/uio.h system
10315 set sys/uio.h i_sysuio
10316 eval $inhdr
10317
10318
10319 echo " "
10320 echo "Checking to see if your system supports struct cmsghdr..." >&4
10321 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10322 eval $hasstruct
10323 case "$d_cmsghdr_s" in
10324 "$define")      echo "Yes, it does."   ;;
10325 *)              echo "No, it doesn't." ;;
10326 esac
10327
10328
10329 : check for const keyword
10330 echo " "
10331 echo 'Checking to see if your C compiler knows about "const"...' >&4
10332 $cat >const.c <<'EOCP'
10333 typedef struct spug { int drokk; } spug;
10334 int main()
10335 {
10336         const char *foo;
10337         const spug y;
10338 }
10339 EOCP
10340 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10341         val="$define"
10342         echo "Yup, it does."
10343 else
10344         val="$undef"
10345         echo "Nope, it doesn't."
10346 fi
10347 set d_const
10348 eval $setvar
10349
10350 : see if copysignl exists
10351 set copysignl d_copysignl
10352 eval $inlibc
10353
10354 : see if crypt exists
10355 echo " "
10356 set crypt d_crypt
10357 eval $inlibc
10358 case "$d_crypt" in
10359 $define) cryptlib='' ;;
10360 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10361                 echo 'crypt() found.' >&4
10362                 val="$define"
10363                 cryptlib=''
10364         else
10365                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10366                 if $test -z "$cryptlib"; then
10367                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10368                 else
10369                         cryptlib=-lcrypt
10370                 fi
10371                 if $test -z "$cryptlib"; then
10372                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10373                 else
10374                         cryptlib=-lcrypt
10375                 fi
10376                 if $test -z "$cryptlib"; then
10377                         cryptlib=`./loc libcrypt$_a "" $libpth`
10378                 else
10379                         cryptlib=-lcrypt
10380                 fi
10381                 if $test -z "$cryptlib"; then
10382                         echo 'crypt() NOT found.' >&4
10383                         val="$undef"
10384                 else
10385                         val="$define"
10386                 fi
10387         fi
10388         set d_crypt
10389         eval $setvar
10390         ;;
10391 esac
10392
10393 : see if this is a crypt.h system
10394 set crypt.h i_crypt
10395 eval $inhdr
10396
10397 : see if crypt_r exists
10398 set crypt_r d_crypt_r
10399 eval $inlibc
10400 case "$d_crypt_r" in
10401 "$define")
10402         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10403         case "$d_crypt_r_proto:$usethreads" in
10404         ":define")      d_crypt_r_proto=define
10405                 set d_crypt_r_proto crypt_r $hdrs
10406                 eval $hasproto ;;
10407         *)      ;;
10408         esac
10409         case "$d_crypt_r_proto" in
10410         define)
10411         case "$crypt_r_proto" in
10412         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10413         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10414         esac
10415         case "$crypt_r_proto" in
10416         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10417         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10418         esac
10419         case "$crypt_r_proto" in
10420         ''|0)   d_crypt_r=undef
10421                 crypt_r_proto=0
10422                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10423         * )     case "$crypt_r_proto" in
10424                 REENTRANT_PROTO*) ;;
10425                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10426                 esac
10427                 echo "Prototype: $try" ;;
10428         esac
10429         ;;
10430         *)      case "$usethreads" in
10431                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10432                 esac
10433                 d_crypt_r=undef
10434                 crypt_r_proto=0
10435                 ;;
10436         esac
10437         ;;
10438 *)      crypt_r_proto=0
10439         ;;
10440 esac
10441
10442 : get csh whereabouts
10443 case "$csh" in
10444 'csh') val="$undef" ;;
10445 *) val="$define" ;;
10446 esac
10447 set d_csh
10448 eval $setvar
10449 : Respect a hint or command line value for full_csh.
10450 case "$full_csh" in
10451 '') full_csh=$csh ;;
10452 esac
10453
10454 : see if ctermid_r exists
10455 set ctermid_r d_ctermid_r
10456 eval $inlibc
10457 case "$d_ctermid_r" in
10458 "$define")
10459         hdrs="$i_systypes sys/types.h define stdio.h "
10460         case "$d_ctermid_r_proto:$usethreads" in
10461         ":define")      d_ctermid_r_proto=define
10462                 set d_ctermid_r_proto ctermid_r $hdrs
10463                 eval $hasproto ;;
10464         *)      ;;
10465         esac
10466         case "$d_ctermid_r_proto" in
10467         define)
10468         case "$ctermid_r_proto" in
10469         ''|0) try='char* ctermid_r(char*);'
10470         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10471         esac
10472         case "$ctermid_r_proto" in
10473         ''|0)   d_ctermid_r=undef
10474                 ctermid_r_proto=0
10475                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10476         * )     case "$ctermid_r_proto" in
10477                 REENTRANT_PROTO*) ;;
10478                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10479                 esac
10480                 echo "Prototype: $try" ;;
10481         esac
10482         ;;
10483         *)      case "$usethreads" in
10484                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10485                 esac
10486                 d_ctermid_r=undef
10487                 ctermid_r_proto=0
10488                 ;;
10489         esac
10490         ;;
10491 *)      ctermid_r_proto=0
10492         ;;
10493 esac
10494
10495 : see if ctime_r exists
10496 set ctime_r d_ctime_r
10497 eval $inlibc
10498 case "$d_ctime_r" in
10499 "$define")
10500         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10501         case "$d_ctime_r_proto:$usethreads" in
10502         ":define")      d_ctime_r_proto=define
10503                 set d_ctime_r_proto ctime_r $hdrs
10504                 eval $hasproto ;;
10505         *)      ;;
10506         esac
10507         case "$d_ctime_r_proto" in
10508         define)
10509         case "$ctime_r_proto" in
10510         ''|0) try='char* ctime_r(const time_t*, char*);'
10511         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10512         esac
10513         case "$ctime_r_proto" in
10514         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10515         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10516         esac
10517         case "$ctime_r_proto" in
10518         ''|0) try='int ctime_r(const time_t*, char*);'
10519         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10520         esac
10521         case "$ctime_r_proto" in
10522         ''|0) try='int ctime_r(const time_t*, char*, int);'
10523         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10524         esac
10525         case "$ctime_r_proto" in
10526         ''|0)   d_ctime_r=undef
10527                 ctime_r_proto=0
10528                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10529         * )     case "$ctime_r_proto" in
10530                 REENTRANT_PROTO*) ;;
10531                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10532                 esac
10533                 echo "Prototype: $try" ;;
10534         esac
10535         ;;
10536         *)      case "$usethreads" in
10537                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10538                 esac
10539                 d_ctime_r=undef
10540                 ctime_r_proto=0
10541                 ;;
10542         esac
10543         ;;
10544 *)      ctime_r_proto=0
10545         ;;
10546 esac
10547
10548 : see if cuserid exists
10549 set cuserid d_cuserid
10550 eval $inlibc
10551
10552 : see if this is a limits.h system
10553 set limits.h i_limits
10554 eval $inhdr
10555
10556 : see if this is a float.h system
10557 set float.h i_float
10558 eval $inhdr
10559
10560 : See if number of significant digits in a double precision number is known
10561 echo " "
10562 $cat >dbl_dig.c <<EOM
10563 #$i_limits I_LIMITS
10564 #$i_float I_FLOAT
10565 #ifdef I_LIMITS
10566 #include <limits.h>
10567 #endif
10568 #ifdef I_FLOAT
10569 #include <float.h>
10570 #endif
10571 #ifdef DBL_DIG
10572 printf("Contains DBL_DIG");
10573 #endif
10574 EOM
10575 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10576 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10577         echo "DBL_DIG found." >&4
10578         val="$define"
10579 else
10580         echo "DBL_DIG NOT found." >&4
10581         val="$undef"
10582 fi
10583 $rm -f dbl_dig.?
10584 set d_dbl_dig
10585 eval $setvar
10586
10587 : see if dbm.h is available
10588 : see if dbmclose exists
10589 set dbmclose d_dbmclose
10590 eval $inlibc
10591
10592 case "$d_dbmclose" in
10593 $define)
10594         set dbm.h i_dbm
10595         eval $inhdr
10596         case "$i_dbm" in
10597         $define)
10598                 val="$undef"
10599                 set i_rpcsvcdbm
10600                 eval $setvar
10601                 ;;
10602         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10603                 eval $inhdr
10604                 ;;
10605         esac
10606         ;;
10607 *)      echo "We won't be including <dbm.h>"
10608         val="$undef"
10609         set i_dbm
10610         eval $setvar
10611         val="$undef"
10612         set i_rpcsvcdbm
10613         eval $setvar
10614         ;;
10615 esac
10616
10617 : see if prototype for dbminit is available
10618 echo " "
10619 set d_dbminitproto dbminit $i_dbm dbm.h
10620 eval $hasproto
10621
10622 : see if difftime exists
10623 set difftime d_difftime
10624 eval $inlibc
10625
10626 : see if this is a dirent system
10627 echo " "
10628 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10629         val="$define"
10630         echo "<dirent.h> found." >&4
10631 else
10632         val="$undef"
10633         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10634                 echo "<sys/dir.h> found." >&4
10635                 echo " "
10636         else
10637                 xinc=`./findhdr sys/ndir.h`
10638         fi
10639         echo "<dirent.h> NOT found." >&4
10640 fi
10641 set i_dirent
10642 eval $setvar
10643
10644 : Look for type of directory structure.
10645 echo " "
10646 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10647
10648 case "$direntrytype" in
10649 ''|' ')
10650         case "$i_dirent" in
10651         $define) guess1='struct dirent' ;;
10652         *) guess1='struct direct'  ;;
10653         esac
10654         ;;
10655 *)      guess1="$direntrytype"
10656         ;;
10657 esac
10658
10659 case "$guess1" in
10660 'struct dirent') guess2='struct direct' ;;
10661 *) guess2='struct dirent' ;;
10662 esac
10663                 
10664 if $contains "$guess1" try.c >/dev/null 2>&1; then
10665         direntrytype="$guess1"
10666         echo "Your directory entries are $direntrytype." >&4
10667 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10668         direntrytype="$guess2"
10669         echo "Your directory entries seem to be $direntrytype." >&4
10670 else
10671         echo "I don't recognize your system's directory entries." >&4
10672         rp="What type is used for directory entries on this system?"
10673         dflt="$guess1"
10674         . ./myread
10675         direntrytype="$ans"
10676 fi
10677 $rm -f try.c
10678
10679
10680 : see if the directory entry stores field length
10681 echo " "
10682 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10683 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10684         echo "Good, your directory entry keeps length information in d_namlen." >&4
10685         val="$define"
10686 else
10687         echo "Your directory entry does not know about the d_namlen field." >&4
10688         val="$undef"
10689 fi
10690 set d_dirnamlen
10691 eval $setvar
10692 $rm -f try.c
10693
10694 : see if this is an sysdir system
10695 set sys/dir.h i_sysdir
10696 eval $inhdr
10697
10698 : see if this is an sysndir system
10699 set sys/ndir.h i_sysndir
10700 eval $inhdr
10701
10702 : Look for dirfd
10703 echo " "
10704 $cat >dirfd.c <<EOM
10705 #include <stdio.h>
10706 #$i_stdlib I_STDLIB
10707 #ifdef I_STDLIB
10708 #include <stdlib.h>
10709 #endif
10710 #$i_dirent I_DIRENT             /**/
10711 #$i_sysdir I_SYS_DIR            /**/
10712 #$i_sysndir I_SYS_NDIR          /**/
10713 #$i_systypes I_SYS_TYPES        /**/
10714 #if defined(I_SYS_TYPES)
10715 #include <sys/types.h>
10716 #endif
10717 #if defined(I_DIRENT)
10718 #include <dirent.h>
10719 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10720 #include <sys/dir.h>
10721 #endif
10722 #else
10723 #ifdef I_SYS_NDIR
10724 #include <sys/ndir.h>
10725 #else
10726 #ifdef I_SYS_DIR
10727 #ifdef hp9000s500
10728 #include <ndir.h>       /* may be wrong in the future */
10729 #else
10730 #include <sys/dir.h>
10731 #endif
10732 #endif
10733 #endif
10734 #endif 
10735 int main() {
10736         DIR *dirp = opendir(".");
10737         if (dirfd(dirp) >= 0)
10738                 exit(0);
10739         else
10740                 exit(1);
10741 }
10742 EOM
10743 set dirfd
10744 if eval $compile; then
10745         val="$define"
10746 fi
10747 case "$val" in
10748 $define)        echo "dirfd() found." >&4       ;;
10749 *)              echo "dirfd() NOT found." >&4   ;;
10750 esac
10751 set d_dirfd
10752 eval $setvar
10753 $rm -f dirfd*
10754
10755 : see if dlerror exists
10756 xxx_runnm="$runnm"
10757 runnm=false
10758 set dlerror d_dlerror
10759 eval $inlibc
10760 runnm="$xxx_runnm"
10761
10762 : see if dlfcn is available
10763 set dlfcn.h i_dlfcn
10764 eval $inhdr
10765
10766 case "$usedl" in
10767 $define|y|true)
10768         $cat << EOM
10769
10770 On a few systems, the dynamically loaded modules that perl generates and uses
10771 will need a different extension than shared libs. The default will probably
10772 be appropriate.
10773
10774 EOM
10775         case "$dlext" in
10776         '')     dflt="$so" ;;
10777         *)      dflt="$dlext" ;;
10778         esac
10779         rp='What is the extension of dynamically loaded modules'
10780         . ./myread
10781         dlext="$ans"
10782         ;;
10783 *)
10784         dlext="none"
10785         ;;
10786 esac
10787
10788 : Check if dlsym need a leading underscore
10789 echo " "
10790 val="$undef"
10791
10792 case "$dlsrc" in
10793 dl_dlopen.xs)
10794         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10795         $cat >dyna.c <<'EOM'
10796 fred () { }
10797 EOM
10798
10799 $cat >fred.c<<EOM
10800
10801 #include <stdio.h>
10802 #$i_stdlib I_STDLIB
10803 #ifdef I_STDLIB
10804 #include <stdlib.h>
10805 #endif
10806 #$i_dlfcn I_DLFCN
10807 #ifdef I_DLFCN
10808 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10809 #else
10810 #include <sys/types.h>
10811 #include <nlist.h>
10812 #include <link.h>
10813 #endif
10814
10815 extern int fred() ;
10816
10817 int main()
10818 {
10819     void * handle ;
10820     void * symbol ;
10821 #ifndef RTLD_LAZY
10822     int mode = 1 ;
10823 #else
10824     int mode = RTLD_LAZY ;
10825 #endif
10826     handle = dlopen("./dyna.$dlext", mode) ;
10827     if (handle == NULL) {
10828         printf ("1\n") ;
10829         fflush (stdout) ;
10830         exit(0);
10831     }
10832     symbol = dlsym(handle, "fred") ;
10833     if (symbol == NULL) {
10834         /* try putting a leading underscore */
10835         symbol = dlsym(handle, "_fred") ;
10836         if (symbol == NULL) {
10837             printf ("2\n") ;
10838             fflush (stdout) ;
10839             exit(0);
10840         }
10841         printf ("3\n") ;
10842     }
10843     else
10844         printf ("4\n") ;
10845     fflush (stdout) ;
10846     exit(0);
10847 }
10848 EOM
10849         : Call the object file tmp-dyna.o in case dlext=o.
10850         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10851                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10852                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10853                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10854                 xxx=`$run ./fred`
10855                 case $xxx in
10856                 1)      echo "Test program failed using dlopen." >&4
10857                         echo "Perhaps you should not use dynamic loading." >&4;;
10858                 2)      echo "Test program failed using dlsym." >&4
10859                         echo "Perhaps you should not use dynamic loading." >&4;;
10860                 3)      echo "dlsym needs a leading underscore" >&4
10861                         val="$define" ;;
10862                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10863                 esac
10864         else
10865                 echo "I can't compile and run the test program." >&4
10866                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10867         fi
10868         ;;
10869 esac
10870                 
10871 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10872
10873 set d_dlsymun
10874 eval $setvar
10875
10876 : see if drand48_r exists
10877 set drand48_r d_drand48_r
10878 eval $inlibc
10879 case "$d_drand48_r" in
10880 "$define")
10881         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10882         case "$d_drand48_r_proto:$usethreads" in
10883         ":define")      d_drand48_r_proto=define
10884                 set d_drand48_r_proto drand48_r $hdrs
10885                 eval $hasproto ;;
10886         *)      ;;
10887         esac
10888         case "$d_drand48_r_proto" in
10889         define)
10890         case "$drand48_r_proto" in
10891         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10892         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10893         esac
10894         case "$drand48_r_proto" in
10895         ''|0)   d_drand48_r=undef
10896                 drand48_r_proto=0
10897                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10898         * )     case "$drand48_r_proto" in
10899                 REENTRANT_PROTO*) ;;
10900                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10901                 esac
10902                 echo "Prototype: $try" ;;
10903         esac
10904         ;;
10905         *)      case "$usethreads" in
10906                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10907                 esac
10908                 d_drand48_r=undef
10909                 drand48_r_proto=0
10910                 ;;
10911         esac
10912         ;;
10913 *)      drand48_r_proto=0
10914         ;;
10915 esac
10916
10917 : see if prototype for drand48 is available
10918 echo " "
10919 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10920 eval $hasproto
10921
10922 : see if dup2 exists
10923 set dup2 d_dup2
10924 eval $inlibc
10925
10926 : see if eaccess exists
10927 set eaccess d_eaccess
10928 eval $inlibc
10929
10930 : see if endgrent exists
10931 set endgrent d_endgrent
10932 eval $inlibc
10933
10934 : see if this is an grp system
10935 set grp.h i_grp
10936 eval $inhdr
10937
10938 case "$i_grp" in
10939 $define)
10940         xxx=`./findhdr grp.h`
10941         $cppstdin $cppflags $cppminus < $xxx >$$.h
10942
10943         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10944                 val="$define"
10945         else
10946                 val="$undef"
10947         fi
10948         set d_grpasswd
10949         eval $setvar
10950
10951         $rm -f $$.h
10952         ;;
10953 *)
10954         val="$undef";
10955         set d_grpasswd; eval $setvar
10956         ;;
10957 esac
10958
10959 : see if endgrent_r exists
10960 set endgrent_r d_endgrent_r
10961 eval $inlibc
10962 case "$d_endgrent_r" in
10963 "$define")
10964         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
10965         case "$d_endgrent_r_proto:$usethreads" in
10966         ":define")      d_endgrent_r_proto=define
10967                 set d_endgrent_r_proto endgrent_r $hdrs
10968                 eval $hasproto ;;
10969         *)      ;;
10970         esac
10971         case "$d_endgrent_r_proto" in
10972         define)
10973         case "$endgrent_r_proto" in
10974         ''|0) try='int endgrent_r(FILE**);'
10975         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
10976         esac
10977         case "$endgrent_r_proto" in
10978         ''|0) try='void endgrent_r(FILE**);'
10979         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
10980         esac
10981         case "$endgrent_r_proto" in
10982         ''|0)   d_endgrent_r=undef
10983                 endgrent_r_proto=0
10984                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
10985         * )     case "$endgrent_r_proto" in
10986                 REENTRANT_PROTO*) ;;
10987                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
10988                 esac
10989                 echo "Prototype: $try" ;;
10990         esac
10991         ;;
10992         *)      case "$usethreads" in
10993                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
10994                 esac
10995                 d_endgrent_r=undef
10996                 endgrent_r_proto=0
10997                 ;;
10998         esac
10999         ;;
11000 *)      endgrent_r_proto=0
11001         ;;
11002 esac
11003
11004 : see if endhostent exists
11005 set endhostent d_endhent
11006 eval $inlibc
11007
11008 : see if this is a netdb.h system
11009 set netdb.h i_netdb
11010 eval $inhdr
11011
11012 : see if endhostent_r exists
11013 set endhostent_r d_endhostent_r
11014 eval $inlibc
11015 case "$d_endhostent_r" in
11016 "$define")
11017         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11018         case "$d_endhostent_r_proto:$usethreads" in
11019         ":define")      d_endhostent_r_proto=define
11020                 set d_endhostent_r_proto endhostent_r $hdrs
11021                 eval $hasproto ;;
11022         *)      ;;
11023         esac
11024         case "$d_endhostent_r_proto" in
11025         define)
11026         case "$endhostent_r_proto" in
11027         ''|0) try='int endhostent_r(struct hostent_data*);'
11028         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11029         esac
11030         case "$endhostent_r_proto" in
11031         ''|0) try='void endhostent_r(struct hostent_data*);'
11032         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11033         esac
11034         case "$endhostent_r_proto" in
11035         ''|0)   d_endhostent_r=undef
11036                 endhostent_r_proto=0
11037                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11038         * )     case "$endhostent_r_proto" in
11039                 REENTRANT_PROTO*) ;;
11040                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11041                 esac
11042                 echo "Prototype: $try" ;;
11043         esac
11044         ;;
11045         *)      case "$usethreads" in
11046                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11047                 esac
11048                 d_endhostent_r=undef
11049                 endhostent_r_proto=0
11050                 ;;
11051         esac
11052         ;;
11053 *)      endhostent_r_proto=0
11054         ;;
11055 esac
11056
11057 : see if endnetent exists
11058 set endnetent d_endnent
11059 eval $inlibc
11060
11061 : see if endnetent_r exists
11062 set endnetent_r d_endnetent_r
11063 eval $inlibc
11064 case "$d_endnetent_r" in
11065 "$define")
11066         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11067         case "$d_endnetent_r_proto:$usethreads" in
11068         ":define")      d_endnetent_r_proto=define
11069                 set d_endnetent_r_proto endnetent_r $hdrs
11070                 eval $hasproto ;;
11071         *)      ;;
11072         esac
11073         case "$d_endnetent_r_proto" in
11074         define)
11075         case "$endnetent_r_proto" in
11076         ''|0) try='int endnetent_r(struct netent_data*);'
11077         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11078         esac
11079         case "$endnetent_r_proto" in
11080         ''|0) try='void endnetent_r(struct netent_data*);'
11081         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11082         esac
11083         case "$endnetent_r_proto" in
11084         ''|0)   d_endnetent_r=undef
11085                 endnetent_r_proto=0
11086                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11087         * )     case "$endnetent_r_proto" in
11088                 REENTRANT_PROTO*) ;;
11089                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11090                 esac
11091                 echo "Prototype: $try" ;;
11092         esac
11093         ;;
11094         *)      case "$usethreads" in
11095                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11096                 esac
11097                 d_endnetent_r=undef
11098                 endnetent_r_proto=0
11099                 ;;
11100         esac
11101         ;;
11102 *)      endnetent_r_proto=0
11103         ;;
11104 esac
11105
11106 : see if endprotoent exists
11107 set endprotoent d_endpent
11108 eval $inlibc
11109
11110 : see if endprotoent_r exists
11111 set endprotoent_r d_endprotoent_r
11112 eval $inlibc
11113 case "$d_endprotoent_r" in
11114 "$define")
11115         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11116         case "$d_endprotoent_r_proto:$usethreads" in
11117         ":define")      d_endprotoent_r_proto=define
11118                 set d_endprotoent_r_proto endprotoent_r $hdrs
11119                 eval $hasproto ;;
11120         *)      ;;
11121         esac
11122         case "$d_endprotoent_r_proto" in
11123         define)
11124         case "$endprotoent_r_proto" in
11125         ''|0) try='int endprotoent_r(struct protoent_data*);'
11126         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11127         esac
11128         case "$endprotoent_r_proto" in
11129         ''|0) try='void endprotoent_r(struct protoent_data*);'
11130         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11131         esac
11132         case "$endprotoent_r_proto" in
11133         ''|0)   d_endprotoent_r=undef
11134                 endprotoent_r_proto=0
11135                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11136         * )     case "$endprotoent_r_proto" in
11137                 REENTRANT_PROTO*) ;;
11138                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11139                 esac
11140                 echo "Prototype: $try" ;;
11141         esac
11142         ;;
11143         *)      case "$usethreads" in
11144                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11145                 esac
11146                 d_endprotoent_r=undef
11147                 endprotoent_r_proto=0
11148                 ;;
11149         esac
11150         ;;
11151 *)      endprotoent_r_proto=0
11152         ;;
11153 esac
11154
11155 : see if endpwent exists
11156 set endpwent d_endpwent
11157 eval $inlibc
11158
11159 : see if this is a pwd.h system
11160 set pwd.h i_pwd
11161 eval $inhdr
11162
11163 case "$i_pwd" in
11164 $define)
11165         xxx=`./findhdr pwd.h`
11166         $cppstdin $cppflags $cppminus < $xxx >$$.h
11167
11168         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11169                 val="$define"
11170         else
11171                 val="$undef"
11172         fi
11173         set d_pwquota
11174         eval $setvar
11175
11176         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11177                 val="$define"
11178         else
11179                 val="$undef"
11180         fi
11181         set d_pwage
11182         eval $setvar
11183
11184         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11185                 val="$define"
11186         else
11187                 val="$undef"
11188         fi
11189         set d_pwchange
11190         eval $setvar
11191
11192         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11193                 val="$define"
11194         else
11195                 val="$undef"
11196         fi
11197         set d_pwclass
11198         eval $setvar
11199
11200         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11201                 val="$define"
11202         else
11203                 val="$undef"
11204         fi
11205         set d_pwexpire
11206         eval $setvar
11207
11208         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11209                 val="$define"
11210         else
11211                 val="$undef"
11212         fi
11213         set d_pwcomment
11214         eval $setvar
11215
11216         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11217                 val="$define"
11218         else
11219                 val="$undef"
11220         fi
11221         set d_pwgecos
11222         eval $setvar
11223
11224         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11225                 val="$define"
11226         else
11227                 val="$undef"
11228         fi
11229         set d_pwpasswd
11230         eval $setvar
11231
11232         $rm -f $$.h
11233         ;;
11234 *)
11235         val="$undef"; 
11236         set d_pwquota; eval $setvar
11237         set d_pwage; eval $setvar
11238         set d_pwchange; eval $setvar
11239         set d_pwclass; eval $setvar
11240         set d_pwexpire; eval $setvar
11241         set d_pwcomment; eval $setvar
11242         set d_pwgecos; eval $setvar
11243         set d_pwpasswd; eval $setvar
11244         ;;
11245 esac
11246
11247 : see if endpwent_r exists
11248 set endpwent_r d_endpwent_r
11249 eval $inlibc
11250 case "$d_endpwent_r" in
11251 "$define")
11252         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11253         case "$d_endpwent_r_proto:$usethreads" in
11254         ":define")      d_endpwent_r_proto=define
11255                 set d_endpwent_r_proto endpwent_r $hdrs
11256                 eval $hasproto ;;
11257         *)      ;;
11258         esac
11259         case "$d_endpwent_r_proto" in
11260         define)
11261         case "$endpwent_r_proto" in
11262         ''|0) try='int endpwent_r(FILE**);'
11263         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11264         esac
11265         case "$endpwent_r_proto" in
11266         ''|0) try='void endpwent_r(FILE**);'
11267         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11268         esac
11269         case "$endpwent_r_proto" in
11270         ''|0)   d_endpwent_r=undef
11271                 endpwent_r_proto=0
11272                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11273         * )     case "$endpwent_r_proto" in
11274                 REENTRANT_PROTO*) ;;
11275                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11276                 esac
11277                 echo "Prototype: $try" ;;
11278         esac
11279         ;;
11280         *)      case "$usethreads" in
11281                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11282                 esac
11283                 d_endpwent_r=undef
11284                 endpwent_r_proto=0
11285                 ;;
11286         esac
11287         ;;
11288 *)      endpwent_r_proto=0
11289         ;;
11290 esac
11291
11292 : see if endservent exists
11293 set endservent d_endsent
11294 eval $inlibc
11295
11296 : see if endservent_r exists
11297 set endservent_r d_endservent_r
11298 eval $inlibc
11299 case "$d_endservent_r" in
11300 "$define")
11301         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11302         case "$d_endservent_r_proto:$usethreads" in
11303         ":define")      d_endservent_r_proto=define
11304                 set d_endservent_r_proto endservent_r $hdrs
11305                 eval $hasproto ;;
11306         *)      ;;
11307         esac
11308         case "$d_endservent_r_proto" in
11309         define)
11310         case "$endservent_r_proto" in
11311         ''|0) try='int endservent_r(struct servent_data*);'
11312         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11313         esac
11314         case "$endservent_r_proto" in
11315         ''|0) try='void endservent_r(struct servent_data*);'
11316         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11317         esac
11318         case "$endservent_r_proto" in
11319         ''|0)   d_endservent_r=undef
11320                 endservent_r_proto=0
11321                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11322         * )     case "$endservent_r_proto" in
11323                 REENTRANT_PROTO*) ;;
11324                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11325                 esac
11326                 echo "Prototype: $try" ;;
11327         esac
11328         ;;
11329         *)      case "$usethreads" in
11330                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11331                 esac
11332                 d_endservent_r=undef
11333                 endservent_r_proto=0
11334                 ;;
11335         esac
11336         ;;
11337 *)      endservent_r_proto=0
11338         ;;
11339 esac
11340
11341 : Locate the flags for 'open()'
11342 echo " "
11343 $cat >try.c <<EOCP
11344 #include <sys/types.h>
11345 #ifdef I_FCNTL
11346 #include <fcntl.h>
11347 #endif
11348 #ifdef I_SYS_FILE
11349 #include <sys/file.h>
11350 #endif
11351 #$i_stdlib I_STDLIB
11352 #ifdef I_STDLIB
11353 #include <stdlib.h>
11354 #endif
11355 int main() {
11356         if(O_RDONLY);
11357 #ifdef O_TRUNC
11358         exit(0);
11359 #else
11360         exit(1);
11361 #endif
11362 }
11363 EOCP
11364 : check sys/file.h first to get FREAD on Sun
11365 if $test `./findhdr sys/file.h` && \
11366                 set try -DI_SYS_FILE && eval $compile; then
11367         h_sysfile=true;
11368         echo "<sys/file.h> defines the O_* constants..." >&4
11369         if $run ./try; then
11370                 echo "and you have the 3 argument form of open()." >&4
11371                 val="$define"
11372         else
11373                 echo "but not the 3 argument form of open().  Oh, well." >&4
11374                 val="$undef"
11375         fi
11376 elif $test `./findhdr fcntl.h` && \
11377                 set try -DI_FCNTL && eval $compile; then
11378         h_fcntl=true;
11379         echo "<fcntl.h> defines the O_* constants..." >&4
11380         if $run ./try; then
11381                 echo "and you have the 3 argument form of open()." >&4
11382                 val="$define"
11383         else
11384                 echo "but not the 3 argument form of open().  Oh, well." >&4
11385                 val="$undef"
11386         fi
11387 else
11388         val="$undef"
11389         echo "I can't find the O_* constant definitions!  You got problems." >&4
11390 fi
11391 set d_open3
11392 eval $setvar
11393 $rm -f try try.*
11394
11395 : see which of string.h or strings.h is needed
11396 echo " "
11397 strings=`./findhdr string.h`
11398 if $test "$strings" && $test -r "$strings"; then
11399         echo "Using <string.h> instead of <strings.h>." >&4
11400         val="$define"
11401 else
11402         val="$undef"
11403         strings=`./findhdr strings.h`
11404         if $test "$strings" && $test -r "$strings"; then
11405                 echo "Using <strings.h> instead of <string.h>." >&4
11406         else
11407                 echo "No string header found -- You'll surely have problems." >&4
11408         fi
11409 fi
11410 set i_string
11411 eval $setvar
11412 case "$i_string" in
11413 "$undef") strings=`./findhdr strings.h`;;
11414 *)        strings=`./findhdr string.h`;;
11415 esac
11416
11417 : see if this is a sys/file.h system
11418 val=''
11419 set sys/file.h val
11420 eval $inhdr
11421
11422 : do we need to include sys/file.h ?
11423 case "$val" in
11424 "$define")
11425         echo " "
11426         if $h_sysfile; then
11427                 val="$define"
11428                 echo "We'll be including <sys/file.h>." >&4
11429         else
11430                 val="$undef"
11431                 echo "We won't be including <sys/file.h>." >&4
11432         fi
11433         ;;
11434 *)
11435         h_sysfile=false
11436         ;;
11437 esac
11438 set i_sysfile
11439 eval $setvar
11440
11441 : see if fcntl.h is there
11442 val=''
11443 set fcntl.h val
11444 eval $inhdr
11445
11446 : see if we can include fcntl.h
11447 case "$val" in
11448 "$define")
11449         echo " "
11450         if $h_fcntl; then
11451                 val="$define"
11452                 echo "We'll be including <fcntl.h>." >&4
11453         else
11454                 val="$undef"
11455                 if $h_sysfile; then
11456         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11457                 else
11458                         echo "We won't be including <fcntl.h>." >&4
11459                 fi
11460         fi
11461         ;;
11462 *)
11463         h_fcntl=false
11464         val="$undef"
11465         ;;
11466 esac
11467 set i_fcntl
11468 eval $setvar
11469
11470 : check for non-blocking I/O stuff
11471 case "$h_sysfile" in
11472 true) echo "#include <sys/file.h>" > head.c;;
11473 *)
11474        case "$h_fcntl" in
11475        true) echo "#include <fcntl.h>" > head.c;;
11476        *) echo "#include <sys/fcntl.h>" > head.c;;
11477        esac
11478        ;;
11479 esac
11480 echo " "
11481 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11482 case "$o_nonblock" in
11483 '')
11484         $cat head.c > try.c
11485         $cat >>try.c <<EOCP
11486 #include <stdio.h>
11487 #$i_stdlib I_STDLIB
11488 #ifdef I_STDLIB
11489 #include <stdlib.h>
11490 #endif
11491 #$i_fcntl I_FCNTL
11492 #ifdef I_FCNTL
11493 #include <fcntl.h>
11494 #endif
11495 int main() {
11496 #ifdef O_NONBLOCK
11497         printf("O_NONBLOCK\n");
11498         exit(0);
11499 #endif
11500 #ifdef O_NDELAY
11501         printf("O_NDELAY\n");
11502         exit(0);
11503 #endif
11504 #ifdef FNDELAY
11505         printf("FNDELAY\n");
11506         exit(0);
11507 #endif
11508         exit(0);
11509 }
11510 EOCP
11511         set try
11512         if eval $compile_ok; then
11513                 o_nonblock=`$run ./try`
11514                 case "$o_nonblock" in
11515                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11516                 *) echo "Seems like we can use $o_nonblock.";;
11517                 esac
11518         else
11519                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11520         fi
11521         ;;
11522 *) echo "Using $hint value $o_nonblock.";;
11523 esac
11524 $rm -f try try.* .out core
11525
11526 echo " "
11527 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11528 case "$eagain" in
11529 '')
11530         $cat head.c > try.c
11531         $cat >>try.c <<EOCP
11532 #include <errno.h>
11533 #include <sys/types.h>
11534 #include <signal.h>
11535 #include <stdio.h> 
11536 #$i_stdlib I_STDLIB
11537 #ifdef I_STDLIB
11538 #include <stdlib.h>
11539 #endif
11540 #$i_fcntl I_FCNTL
11541 #ifdef I_FCNTL
11542 #include <fcntl.h>
11543 #endif
11544 #define MY_O_NONBLOCK $o_nonblock
11545 #ifndef errno  /* XXX need better Configure test */
11546 extern int errno;
11547 #endif
11548 #$i_unistd I_UNISTD
11549 #ifdef I_UNISTD
11550 #include <unistd.h>
11551 #endif
11552 #$i_string I_STRING
11553 #ifdef I_STRING
11554 #include <string.h>
11555 #else
11556 #include <strings.h>
11557 #endif
11558 $signal_t blech(x) int x; { exit(3); }
11559 EOCP
11560         $cat >> try.c <<'EOCP'
11561 int main()
11562 {
11563         int pd[2];
11564         int pu[2];
11565         char buf[1];
11566         char string[100];
11567
11568         pipe(pd);       /* Down: child -> parent */
11569         pipe(pu);       /* Up: parent -> child */
11570         if (0 != fork()) {
11571                 int ret;
11572                 close(pd[1]);   /* Parent reads from pd[0] */
11573                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11574 #ifdef F_SETFL
11575                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11576                         exit(1);
11577 #else
11578                 exit(4);
11579 #endif
11580                 signal(SIGALRM, blech);
11581                 alarm(5);
11582                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11583                         exit(2);
11584                 sprintf(string, "%d\n", ret);
11585                 write(2, string, strlen(string));
11586                 alarm(0);
11587 #ifdef EAGAIN
11588                 if (errno == EAGAIN) {
11589                         printf("EAGAIN\n");
11590                         goto ok;
11591                 }
11592 #endif
11593 #ifdef EWOULDBLOCK
11594                 if (errno == EWOULDBLOCK)
11595                         printf("EWOULDBLOCK\n");
11596 #endif
11597         ok:
11598                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11599                 sleep(2);                               /* Give it time to close our pipe */
11600                 alarm(5);
11601                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11602                 alarm(0);
11603                 sprintf(string, "%d\n", ret);
11604                 write(4, string, strlen(string));
11605                 exit(0);
11606         }
11607
11608         close(pd[0]);                   /* We write to pd[1] */
11609         close(pu[1]);                   /* We read from pu[0] */
11610         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11611         close(pd[1]);                   /* Pipe pd is now fully closed! */
11612         exit(0);                                /* Bye bye, thank you for playing! */
11613 }
11614 EOCP
11615         set try
11616         if eval $compile_ok; then
11617                 echo "$startsh" >mtry
11618                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11619                 chmod +x mtry
11620                 ./mtry >/dev/null 2>&1
11621                 case $? in
11622                 0) eagain=`$cat try.out`;;
11623                 1) echo "Could not perform non-blocking setting!";;
11624                 2) echo "I did a successful read() for something that was not there!";;
11625                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11626                 4) echo "Could not find F_SETFL!";;
11627                 *) echo "Something terribly wrong happened during testing.";;
11628                 esac
11629                 rd_nodata=`$cat try.ret`
11630                 echo "A read() system call with no data present returns $rd_nodata."
11631                 case "$rd_nodata" in
11632                 0|-1) ;;
11633                 *)
11634                         echo "(That's peculiar, fixing that to be -1.)"
11635                         rd_nodata=-1
11636                         ;;
11637                 esac
11638                 case "$eagain" in
11639                 '')
11640                         echo "Forcing errno EAGAIN on read() with no data available."
11641                         eagain=EAGAIN
11642                         ;;
11643                 *)
11644                         echo "Your read() sets errno to $eagain when no data is available."
11645                         ;;
11646                 esac
11647                 status=`$cat try.err`
11648                 case "$status" in
11649                 0) echo "And it correctly returns 0 to signal EOF.";;
11650                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11651                 *) echo "However, your read() returns '$status' on EOF??";;
11652                 esac
11653                 val="$define"
11654                 if test "$status" = "$rd_nodata"; then
11655                         echo "WARNING: you can't distinguish between EOF and no data!"
11656                         val="$undef"
11657                 fi
11658         else
11659                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11660                 eagain=EAGAIN
11661         fi
11662         set d_eofnblk
11663         eval $setvar
11664         ;;
11665 *)
11666         echo "Using $hint value $eagain."
11667         echo "Your read() returns $rd_nodata when no data is present."
11668         case "$d_eofnblk" in
11669         "$define") echo "And you can see EOF because read() returns 0.";;
11670         "$undef") echo "But you can't see EOF status from read() returned value.";;
11671         *)
11672                 echo "(Assuming you can't see EOF status from read anyway.)"
11673                 d_eofnblk=$undef
11674                 ;;
11675         esac
11676         ;;
11677 esac
11678 $rm -f try try.* .out core head.c mtry
11679
11680 : see if fchdir exists
11681 set fchdir d_fchdir
11682 eval $inlibc
11683
11684 : see if fchmod exists
11685 set fchmod d_fchmod
11686 eval $inlibc
11687
11688 : see if fchown exists
11689 set fchown d_fchown
11690 eval $inlibc
11691
11692 : see if this is an fcntl system
11693 set fcntl d_fcntl
11694 eval $inlibc
11695
11696 echo " "
11697 : See if fcntl-based locking works.
11698 $cat >try.c <<EOCP
11699 #$i_stdlib I_STDLIB
11700 #ifdef I_STDLIB
11701 #include <stdlib.h>
11702 #endif
11703 #include <unistd.h>
11704 #include <fcntl.h>
11705 #include <signal.h>
11706 $signal_t blech(x) int x; { exit(3); }
11707 int main() {
11708 #if defined(F_SETLK) && defined(F_SETLKW)
11709      struct flock flock;
11710      int retval, fd;
11711      fd = open("try.c", O_RDONLY);
11712      flock.l_type = F_RDLCK;
11713      flock.l_whence = SEEK_SET;
11714      flock.l_start = flock.l_len = 0;
11715      signal(SIGALRM, blech);
11716      alarm(10);
11717      retval = fcntl(fd, F_SETLK, &flock);
11718      close(fd);
11719      (retval < 0 ? exit(2) : exit(0));
11720 #else
11721      exit(2);
11722 #endif
11723 }
11724 EOCP
11725 echo "Checking if fcntl-based file locking works... "
11726 case "$d_fcntl" in
11727 "$define")
11728         set try
11729         if eval $compile_ok; then
11730                 if $run ./try; then
11731                         echo "Yes, it seems to work."
11732                         val="$define"
11733                 else
11734                         echo "Nope, it didn't work."
11735                         val="$undef"
11736                         case "$?" in
11737                         3) $cat >&4 <<EOM
11738 ***
11739 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
11740 *** This is (almost) impossible.
11741 *** If your NFS lock daemons are not feeling well, something like
11742 *** this may happen, please investigate.  Cannot continue, aborting.
11743 ***
11744 EOM
11745                                 exit 1
11746                                 ;;
11747                         esac
11748                 fi
11749         else
11750                 echo "I'm unable to compile the test program, so I'll assume not."
11751                 val="$undef"
11752         fi
11753         ;;
11754 *) val="$undef";
11755         echo "Nope, since you don't even have fcntl()."
11756         ;;
11757 esac
11758 set d_fcntl_can_lock
11759 eval $setvar
11760 $rm -f try*
11761
11762
11763 : check for fd_set items
11764 $cat <<EOM
11765
11766 Checking to see how well your C compiler handles fd_set and friends ...
11767 EOM
11768 $cat >try.c <<EOCP
11769 #$i_stdlib I_STDLIB
11770 #ifdef I_STDLIB
11771 #include <stdlib.h>
11772 #endif
11773 #$i_systime I_SYS_TIME
11774 #$i_sysselct I_SYS_SELECT
11775 #$d_socket HAS_SOCKET
11776 #include <sys/types.h>
11777 #ifdef HAS_SOCKET
11778 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11779 #endif
11780 #ifdef I_SYS_TIME
11781 #include <sys/time.h>
11782 #endif
11783 #ifdef I_SYS_SELECT
11784 #include <sys/select.h>
11785 #endif
11786 int main() {
11787         fd_set fds;
11788
11789 #ifdef TRYBITS
11790         if(fds.fds_bits);
11791 #endif
11792
11793 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
11794         exit(0);
11795 #else
11796         exit(1);
11797 #endif
11798 }
11799 EOCP
11800 set try -DTRYBITS
11801 if eval $compile; then
11802         d_fds_bits="$define"
11803         d_fd_set="$define"
11804         echo "Well, your system knows about the normal fd_set typedef..." >&4
11805         if $run ./try; then
11806                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
11807                 d_fd_macros="$define"
11808         else
11809                 $cat >&4 <<'EOM'
11810 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
11811 EOM
11812                 d_fd_macros="$undef"
11813         fi
11814 else
11815         $cat <<'EOM'
11816 Hmm, your compiler has some difficulty with fd_set.  Checking further...
11817 EOM
11818         set try
11819         if eval $compile; then
11820                 d_fds_bits="$undef"
11821                 d_fd_set="$define"
11822                 echo "Well, your system has some sort of fd_set available..." >&4
11823                 if $run ./try; then
11824                         echo "and you have the normal fd_set macros." >&4
11825                         d_fd_macros="$define"
11826                 else
11827                         $cat <<'EOM'
11828 but not the normal fd_set macros!  Gross!  More work for me...
11829 EOM
11830                         d_fd_macros="$undef"
11831                 fi
11832         else
11833         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
11834                 d_fd_set="$undef"
11835                 d_fds_bits="$undef"
11836                 d_fd_macros="$undef"
11837         fi
11838 fi
11839 $rm -f try try.*
11840
11841 : see if fgetpos exists
11842 set fgetpos d_fgetpos
11843 eval $inlibc
11844
11845 : see if finite exists
11846 set finite d_finite
11847 eval $inlibc
11848
11849 : see if finitel exists
11850 set finitel d_finitel
11851 eval $inlibc
11852
11853 : see if flock exists
11854 set flock d_flock
11855 eval $inlibc
11856
11857 : see if prototype for flock is available
11858 echo " "
11859 set d_flockproto flock $i_sysfile sys/file.h
11860 eval $hasproto
11861
11862 : see if fork exists
11863 set fork d_fork
11864 eval $inlibc
11865
11866 : see if fp_class exists
11867 set fp_class d_fp_class
11868 eval $inlibc
11869
11870 : see if pathconf exists
11871 set pathconf d_pathconf
11872 eval $inlibc
11873
11874 : see if fpathconf exists
11875 set fpathconf d_fpathconf
11876 eval $inlibc
11877
11878 : see if fpclass exists
11879 set fpclass d_fpclass
11880 eval $inlibc
11881
11882 : see if fpclassify exists
11883 set fpclassify d_fpclassify
11884 eval $inlibc
11885
11886 : see if fpclassl exists
11887 set fpclassl d_fpclassl
11888 eval $inlibc
11889
11890
11891 : check for fpos64_t
11892 echo " "
11893 echo "Checking to see if you have fpos64_t..." >&4
11894 $cat >try.c <<EOCP
11895 #include <stdio.h>
11896 int main() { fpos64_t x = 7; }
11897 EOCP
11898 set try
11899 if eval $compile; then
11900         val="$define"
11901         echo "You have fpos64_t."
11902 else
11903         val="$undef"
11904         echo "You do not have fpos64_t."
11905         case "$fpossize" in
11906         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
11907         esac
11908 fi
11909 $rm -f try.* try
11910 set d_fpos64_t
11911 eval $setvar
11912
11913 : see if frexpl exists
11914 set frexpl d_frexpl
11915 eval $inlibc
11916
11917 : see if this is a sys/param system
11918 set sys/param.h i_sysparam
11919 eval $inhdr
11920
11921 : see if this is a sys/mount.h system
11922 set sys/mount.h i_sysmount
11923 eval $inhdr
11924
11925
11926 echo " "
11927 echo "Checking to see if your system supports struct fs_data..." >&4
11928 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
11929 eval $hasstruct
11930 case "$d_fs_data_s" in
11931 "$define")      echo "Yes, it does."   ;;
11932 *)              echo "No, it doesn't." ;;
11933 esac
11934
11935 : see if fseeko exists
11936 set fseeko d_fseeko
11937 eval $inlibc
11938 case "$longsize" in
11939 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
11940 esac
11941
11942 : see if fsetpos exists
11943 set fsetpos d_fsetpos
11944 eval $inlibc
11945
11946
11947 : see if fstatfs exists
11948 set fstatfs d_fstatfs
11949 eval $inlibc
11950
11951
11952 : see if statvfs exists
11953 set statvfs d_statvfs
11954 eval $inlibc
11955
11956 : see if fstatvfs exists
11957 set fstatvfs d_fstatvfs
11958 eval $inlibc
11959
11960
11961 : see if fsync exists
11962 set fsync d_fsync
11963 eval $inlibc
11964
11965 : see if ftello exists
11966 set ftello d_ftello
11967 eval $inlibc
11968 case "$longsize" in
11969 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
11970 esac
11971
11972 : see if getcwd exists
11973 set getcwd d_getcwd
11974 eval $inlibc
11975
11976 : see if getespwnam exists
11977 set getespwnam d_getespwnam
11978 eval $inlibc
11979
11980
11981 : see if getfsstat exists
11982 set getfsstat d_getfsstat
11983 eval $inlibc
11984
11985 : see if getgrent exists
11986 set getgrent d_getgrent
11987 eval $inlibc
11988
11989 : see if getgrent_r exists
11990 set getgrent_r d_getgrent_r
11991 eval $inlibc
11992 case "$d_getgrent_r" in
11993 "$define")
11994         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11995         case "$d_getgrent_r_proto:$usethreads" in
11996         ":define")      d_getgrent_r_proto=define
11997                 set d_getgrent_r_proto getgrent_r $hdrs
11998                 eval $hasproto ;;
11999         *)      ;;
12000         esac
12001         case "$d_getgrent_r_proto" in
12002         define)
12003         case "$getgrent_r_proto" in
12004         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12005         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12006         esac
12007         case "$getgrent_r_proto" in
12008         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12009         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12010         esac
12011         case "$getgrent_r_proto" in
12012         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12013         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12014         esac
12015         case "$getgrent_r_proto" in
12016         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12017         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12018         esac
12019         case "$getgrent_r_proto" in
12020         ''|0) try='int getgrent_r(struct group*, char*, int);'
12021         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12022         esac
12023         case "$getgrent_r_proto" in
12024         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12025         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12026         esac
12027         case "$getgrent_r_proto" in
12028         ''|0)   d_getgrent_r=undef
12029                 getgrent_r_proto=0
12030                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12031         * )     case "$getgrent_r_proto" in
12032                 REENTRANT_PROTO*) ;;
12033                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12034                 esac
12035                 echo "Prototype: $try" ;;
12036         esac
12037         ;;
12038         *)      case "$usethreads" in
12039                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12040                 esac
12041                 d_getgrent_r=undef
12042                 getgrent_r_proto=0
12043                 ;;
12044         esac
12045         ;;
12046 *)      getgrent_r_proto=0
12047         ;;
12048 esac
12049
12050 : see if getgrgid_r exists
12051 set getgrgid_r d_getgrgid_r
12052 eval $inlibc
12053 case "$d_getgrgid_r" in
12054 "$define")
12055         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12056         case "$d_getgrgid_r_proto:$usethreads" in
12057         ":define")      d_getgrgid_r_proto=define
12058                 set d_getgrgid_r_proto getgrgid_r $hdrs
12059                 eval $hasproto ;;
12060         *)      ;;
12061         esac
12062         case "$d_getgrgid_r_proto" in
12063         define)
12064         case "$getgrgid_r_proto" in
12065         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12066         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12067         esac
12068         case "$getgrgid_r_proto" in
12069         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12070         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12071         esac
12072         case "$getgrgid_r_proto" in
12073         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12074         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12075         esac
12076         case "$getgrgid_r_proto" in
12077         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12078         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12079         esac
12080         case "$getgrgid_r_proto" in
12081         ''|0)   d_getgrgid_r=undef
12082                 getgrgid_r_proto=0
12083                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12084         * )     case "$getgrgid_r_proto" in
12085                 REENTRANT_PROTO*) ;;
12086                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12087                 esac
12088                 echo "Prototype: $try" ;;
12089         esac
12090         ;;
12091         *)      case "$usethreads" in
12092                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12093                 esac
12094                 d_getgrgid_r=undef
12095                 getgrgid_r_proto=0
12096                 ;;
12097         esac
12098         ;;
12099 *)      getgrgid_r_proto=0
12100         ;;
12101 esac
12102
12103 : see if getgrnam_r exists
12104 set getgrnam_r d_getgrnam_r
12105 eval $inlibc
12106 case "$d_getgrnam_r" in
12107 "$define")
12108         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12109         case "$d_getgrnam_r_proto:$usethreads" in
12110         ":define")      d_getgrnam_r_proto=define
12111                 set d_getgrnam_r_proto getgrnam_r $hdrs
12112                 eval $hasproto ;;
12113         *)      ;;
12114         esac
12115         case "$d_getgrnam_r_proto" in
12116         define)
12117         case "$getgrnam_r_proto" in
12118         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12119         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12120         esac
12121         case "$getgrnam_r_proto" in
12122         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12123         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12124         esac
12125         case "$getgrnam_r_proto" in
12126         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12127         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12128         esac
12129         case "$getgrnam_r_proto" in
12130         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12131         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12132         esac
12133         case "$getgrnam_r_proto" in
12134         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12135         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12136         esac
12137         case "$getgrnam_r_proto" in
12138         ''|0)   d_getgrnam_r=undef
12139                 getgrnam_r_proto=0
12140                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12141         * )     case "$getgrnam_r_proto" in
12142                 REENTRANT_PROTO*) ;;
12143                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12144                 esac
12145                 echo "Prototype: $try" ;;
12146         esac
12147         ;;
12148         *)      case "$usethreads" in
12149                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12150                 esac
12151                 d_getgrnam_r=undef
12152                 getgrnam_r_proto=0
12153                 ;;
12154         esac
12155         ;;
12156 *)      getgrnam_r_proto=0
12157         ;;
12158 esac
12159
12160 : see if gethostbyaddr exists
12161 set gethostbyaddr d_gethbyaddr
12162 eval $inlibc
12163
12164 : see if gethostbyname exists
12165 set gethostbyname d_gethbyname
12166 eval $inlibc
12167
12168 : see if gethostent exists
12169 set gethostent d_gethent
12170 eval $inlibc
12171
12172 : see how we will look up host name
12173 echo " "
12174 call=''
12175 if set gethostname val -f d_gethname; eval $csym; $val; then
12176         echo 'gethostname() found.' >&4
12177         d_gethname="$define"
12178         call=gethostname
12179 fi
12180 if set uname val -f d_uname; eval $csym; $val; then
12181         if ./xenix; then
12182                 $cat <<'EOM'
12183 uname() was found, but you're running xenix, and older versions of xenix
12184 have a broken uname(). If you don't really know whether your xenix is old
12185 enough to have a broken system call, use the default answer.
12186
12187 EOM
12188                 dflt=y
12189                 case "$d_uname" in
12190                 "$define") dflt=n;;
12191                 esac
12192                 rp='Is your uname() broken?'
12193                 . ./myread
12194                 case "$ans" in
12195                 n*) d_uname="$define"; call=uname;;
12196                 esac
12197         else
12198                 echo 'uname() found.' >&4
12199                 d_uname="$define"
12200                 case "$call" in
12201                 '') call=uname ;;
12202                 esac
12203         fi
12204 fi
12205 case "$d_gethname" in
12206 '') d_gethname="$undef";;
12207 esac
12208 case "$d_uname" in
12209 '') d_uname="$undef";;
12210 esac
12211 case "$d_uname$d_gethname" in
12212 *define*)
12213         dflt=n
12214         cat <<EOM
12215  
12216 Every now and then someone has a $call() that lies about the hostname
12217 but can't be fixed for political or economic reasons.  If you wish, I can
12218 pretend $call() isn't there and maybe compute hostname at run-time
12219 thanks to the '$phostname' command.
12220
12221 EOM
12222         rp="Shall I ignore $call() from now on?"
12223         . ./myread
12224         case "$ans" in
12225         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12226         esac;;
12227 esac
12228 case "$phostname" in
12229 '') aphostname='';;
12230 *) case "$aphostname" in
12231         /*) ;;
12232         *) set X $phostname
12233                 shift
12234                 file=$1
12235                 shift
12236                 file=`./loc $file $file $pth`
12237                 aphostname=`echo $file $*`
12238                 ;;
12239         esac
12240         ;;
12241 esac
12242 case "$d_uname$d_gethname" in
12243 *define*) ;;
12244 *)
12245         case "$phostname" in
12246         '')
12247                 echo "There will be no way for $package to get your hostname." >&4;;
12248         *)
12249         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12250                 ;;
12251         esac;;
12252 esac
12253 case "$d_phostname" in
12254 '') d_phostname="$undef";;
12255 esac
12256
12257 : see if gethostbyaddr_r exists
12258 set gethostbyaddr_r d_gethostbyaddr_r
12259 eval $inlibc
12260 case "$d_gethostbyaddr_r" in
12261 "$define")
12262         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12263         case "$d_gethostbyaddr_r_proto:$usethreads" in
12264         ":define")      d_gethostbyaddr_r_proto=define
12265                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12266                 eval $hasproto ;;
12267         *)      ;;
12268         esac
12269         case "$d_gethostbyaddr_r_proto" in
12270         define)
12271         case "$gethostbyaddr_r_proto" in
12272         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12273         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12274         esac
12275         case "$gethostbyaddr_r_proto" in
12276         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12277         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12278         esac
12279         case "$gethostbyaddr_r_proto" in
12280         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12281         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12282         esac
12283         case "$gethostbyaddr_r_proto" in
12284         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12285         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12286         esac
12287         case "$gethostbyaddr_r_proto" in
12288         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12289         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12290         esac
12291         case "$gethostbyaddr_r_proto" in
12292         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12293         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12294         esac
12295         case "$gethostbyaddr_r_proto" in
12296         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12297         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12298         esac
12299         case "$gethostbyaddr_r_proto" in
12300         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12301         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12302         esac
12303         case "$gethostbyaddr_r_proto" in
12304         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12305         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12306         esac
12307         case "$gethostbyaddr_r_proto" in
12308         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12309         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12310         esac
12311         case "$gethostbyaddr_r_proto" in
12312         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12313         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12314         esac
12315         case "$gethostbyaddr_r_proto" in
12316         ''|0)   d_gethostbyaddr_r=undef
12317                 gethostbyaddr_r_proto=0
12318                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12319         * )     case "$gethostbyaddr_r_proto" in
12320                 REENTRANT_PROTO*) ;;
12321                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12322                 esac
12323                 echo "Prototype: $try" ;;
12324         esac
12325         ;;
12326         *)      case "$usethreads" in
12327                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12328                 esac
12329                 d_gethostbyaddr_r=undef
12330                 gethostbyaddr_r_proto=0
12331                 ;;
12332         esac
12333         ;;
12334 *)      gethostbyaddr_r_proto=0
12335         ;;
12336 esac
12337
12338 : see if gethostbyname_r exists
12339 set gethostbyname_r d_gethostbyname_r
12340 eval $inlibc
12341 case "$d_gethostbyname_r" in
12342 "$define")
12343         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12344         case "$d_gethostbyname_r_proto:$usethreads" in
12345         ":define")      d_gethostbyname_r_proto=define
12346                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12347                 eval $hasproto ;;
12348         *)      ;;
12349         esac
12350         case "$d_gethostbyname_r_proto" in
12351         define)
12352         case "$gethostbyname_r_proto" in
12353         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12354         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12355         esac
12356         case "$gethostbyname_r_proto" in
12357         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12358         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12359         esac
12360         case "$gethostbyname_r_proto" in
12361         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12362         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12363         esac
12364         case "$gethostbyname_r_proto" in
12365         ''|0)   d_gethostbyname_r=undef
12366                 gethostbyname_r_proto=0
12367                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12368         * )     case "$gethostbyname_r_proto" in
12369                 REENTRANT_PROTO*) ;;
12370                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12371                 esac
12372                 echo "Prototype: $try" ;;
12373         esac
12374         ;;
12375         *)      case "$usethreads" in
12376                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12377                 esac
12378                 d_gethostbyname_r=undef
12379                 gethostbyname_r_proto=0
12380                 ;;
12381         esac
12382         ;;
12383 *)      gethostbyname_r_proto=0
12384         ;;
12385 esac
12386
12387 : see if gethostent_r exists
12388 set gethostent_r d_gethostent_r
12389 eval $inlibc
12390 case "$d_gethostent_r" in
12391 "$define")
12392         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12393         case "$d_gethostent_r_proto:$usethreads" in
12394         ":define")      d_gethostent_r_proto=define
12395                 set d_gethostent_r_proto gethostent_r $hdrs
12396                 eval $hasproto ;;
12397         *)      ;;
12398         esac
12399         case "$d_gethostent_r_proto" in
12400         define)
12401         case "$gethostent_r_proto" in
12402         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12403         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12404         esac
12405         case "$gethostent_r_proto" in
12406         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12407         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12408         esac
12409         case "$gethostent_r_proto" in
12410         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12411         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12412         esac
12413         case "$gethostent_r_proto" in
12414         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12415         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12416         esac
12417         case "$gethostent_r_proto" in
12418         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12419         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12420         esac
12421         case "$gethostent_r_proto" in
12422         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12423         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12424         esac
12425         case "$gethostent_r_proto" in
12426         ''|0)   d_gethostent_r=undef
12427                 gethostent_r_proto=0
12428                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12429         * )     case "$gethostent_r_proto" in
12430                 REENTRANT_PROTO*) ;;
12431                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12432                 esac
12433                 echo "Prototype: $try" ;;
12434         esac
12435         ;;
12436         *)      case "$usethreads" in
12437                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12438                 esac
12439                 d_gethostent_r=undef
12440                 gethostent_r_proto=0
12441                 ;;
12442         esac
12443         ;;
12444 *)      gethostent_r_proto=0
12445         ;;
12446 esac
12447
12448 : see if prototypes for various gethostxxx netdb.h functions are available
12449 echo " "
12450 set d_gethostprotos gethostent $i_netdb netdb.h
12451 eval $hasproto
12452
12453 : see if getitimer exists
12454 set getitimer d_getitimer
12455 eval $inlibc
12456
12457 : see if getlogin exists
12458 set getlogin d_getlogin
12459 eval $inlibc
12460
12461 : see if getlogin_r exists
12462 set getlogin_r d_getlogin_r
12463 eval $inlibc
12464 case "$d_getlogin_r" in
12465 "$define")
12466         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12467         case "$d_getlogin_r_proto:$usethreads" in
12468         ":define")      d_getlogin_r_proto=define
12469                 set d_getlogin_r_proto getlogin_r $hdrs
12470                 eval $hasproto ;;
12471         *)      ;;
12472         esac
12473         case "$d_getlogin_r_proto" in
12474         define)
12475         case "$getlogin_r_proto" in
12476         ''|0) try='int getlogin_r(char*, size_t);'
12477         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12478         esac
12479         case "$getlogin_r_proto" in
12480         ''|0) try='int getlogin_r(char*, int);'
12481         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12482         esac
12483         case "$getlogin_r_proto" in
12484         ''|0) try='char* getlogin_r(char*, size_t);'
12485         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12486         esac
12487         case "$getlogin_r_proto" in
12488         ''|0) try='char* getlogin_r(char*, int);'
12489         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12490         esac
12491         case "$getlogin_r_proto" in
12492         ''|0)   d_getlogin_r=undef
12493                 getlogin_r_proto=0
12494                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12495         * )     case "$getlogin_r_proto" in
12496                 REENTRANT_PROTO*) ;;
12497                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12498                 esac
12499                 echo "Prototype: $try" ;;
12500         esac
12501         ;;
12502         *)      case "$usethreads" in
12503                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12504                 esac
12505                 d_getlogin_r=undef
12506                 getlogin_r_proto=0
12507                 ;;
12508         esac
12509         ;;
12510 *)      getlogin_r_proto=0
12511         ;;
12512 esac
12513
12514 : see if getmnt exists
12515 set getmnt d_getmnt
12516 eval $inlibc
12517
12518 : see if getmntent exists
12519 set getmntent d_getmntent
12520 eval $inlibc
12521
12522 : see if getnetbyaddr exists
12523 set getnetbyaddr d_getnbyaddr
12524 eval $inlibc
12525
12526 : see if getnetbyname exists
12527 set getnetbyname d_getnbyname
12528 eval $inlibc
12529
12530 : see if getnetent exists
12531 set getnetent d_getnent
12532 eval $inlibc
12533
12534 : see if getnetbyaddr_r exists
12535 set getnetbyaddr_r d_getnetbyaddr_r
12536 eval $inlibc
12537 case "$d_getnetbyaddr_r" in
12538 "$define")
12539         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12540         case "$d_getnetbyaddr_r_proto:$usethreads" in
12541         ":define")      d_getnetbyaddr_r_proto=define
12542                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12543                 eval $hasproto ;;
12544         *)      ;;
12545         esac
12546         case "$d_getnetbyaddr_r_proto" in
12547         define)
12548         case "$getnetbyaddr_r_proto" in
12549         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12550         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12551         esac
12552         case "$getnetbyaddr_r_proto" in
12553         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12554         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12555         esac
12556         case "$getnetbyaddr_r_proto" in
12557         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12558         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12559         esac
12560         case "$getnetbyaddr_r_proto" in
12561         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12562         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12563         esac
12564         case "$getnetbyaddr_r_proto" in
12565         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12566         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12567         esac
12568         case "$getnetbyaddr_r_proto" in
12569         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12570         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12571         esac
12572         case "$getnetbyaddr_r_proto" in
12573         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12574         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12575         esac
12576         case "$getnetbyaddr_r_proto" in
12577         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12578         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12579         esac
12580         case "$getnetbyaddr_r_proto" in
12581         ''|0)   d_getnetbyaddr_r=undef
12582                 getnetbyaddr_r_proto=0
12583                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12584         * )     case "$getnetbyaddr_r_proto" in
12585                 REENTRANT_PROTO*) ;;
12586                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12587                 esac
12588                 echo "Prototype: $try" ;;
12589         esac
12590         ;;
12591         *)      case "$usethreads" in
12592                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12593                 esac
12594                 d_getnetbyaddr_r=undef
12595                 getnetbyaddr_r_proto=0
12596                 ;;
12597         esac
12598         ;;
12599 *)      getnetbyaddr_r_proto=0
12600         ;;
12601 esac
12602
12603 : see if getnetbyname_r exists
12604 set getnetbyname_r d_getnetbyname_r
12605 eval $inlibc
12606 case "$d_getnetbyname_r" in
12607 "$define")
12608         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12609         case "$d_getnetbyname_r_proto:$usethreads" in
12610         ":define")      d_getnetbyname_r_proto=define
12611                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12612                 eval $hasproto ;;
12613         *)      ;;
12614         esac
12615         case "$d_getnetbyname_r_proto" in
12616         define)
12617         case "$getnetbyname_r_proto" in
12618         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12619         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12620         esac
12621         case "$getnetbyname_r_proto" in
12622         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12623         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12624         esac
12625         case "$getnetbyname_r_proto" in
12626         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12627         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12628         esac
12629         case "$getnetbyname_r_proto" in
12630         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12631         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12632         esac
12633         case "$getnetbyname_r_proto" in
12634         ''|0)   d_getnetbyname_r=undef
12635                 getnetbyname_r_proto=0
12636                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12637         * )     case "$getnetbyname_r_proto" in
12638                 REENTRANT_PROTO*) ;;
12639                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12640                 esac
12641                 echo "Prototype: $try" ;;
12642         esac
12643         ;;
12644         *)      case "$usethreads" in
12645                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12646                 esac
12647                 d_getnetbyname_r=undef
12648                 getnetbyname_r_proto=0
12649                 ;;
12650         esac
12651         ;;
12652 *)      getnetbyname_r_proto=0
12653         ;;
12654 esac
12655
12656 : see if getnetent_r exists
12657 set getnetent_r d_getnetent_r
12658 eval $inlibc
12659 case "$d_getnetent_r" in
12660 "$define")
12661         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12662         case "$d_getnetent_r_proto:$usethreads" in
12663         ":define")      d_getnetent_r_proto=define
12664                 set d_getnetent_r_proto getnetent_r $hdrs
12665                 eval $hasproto ;;
12666         *)      ;;
12667         esac
12668         case "$d_getnetent_r_proto" in
12669         define)
12670         case "$getnetent_r_proto" in
12671         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12672         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12673         esac
12674         case "$getnetent_r_proto" in
12675         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12676         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12677         esac
12678         case "$getnetent_r_proto" in
12679         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
12680         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
12681         esac
12682         case "$getnetent_r_proto" in
12683         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
12684         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
12685         esac
12686         case "$getnetent_r_proto" in
12687         ''|0) try='int getnetent_r(struct netent*, char*, int);'
12688         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
12689         esac
12690         case "$getnetent_r_proto" in
12691         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
12692         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
12693         esac
12694         case "$getnetent_r_proto" in
12695         ''|0)   d_getnetent_r=undef
12696                 getnetent_r_proto=0
12697                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
12698         * )     case "$getnetent_r_proto" in
12699                 REENTRANT_PROTO*) ;;
12700                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
12701                 esac
12702                 echo "Prototype: $try" ;;
12703         esac
12704         ;;
12705         *)      case "$usethreads" in
12706                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
12707                 esac
12708                 d_getnetent_r=undef
12709                 getnetent_r_proto=0
12710                 ;;
12711         esac
12712         ;;
12713 *)      getnetent_r_proto=0
12714         ;;
12715 esac
12716
12717 : see if prototypes for various getnetxxx netdb.h functions are available
12718 echo " "
12719 set d_getnetprotos getnetent $i_netdb netdb.h
12720 eval $hasproto
12721
12722 : see if getpagesize exists
12723 set getpagesize d_getpagsz
12724 eval $inlibc
12725
12726
12727 : see if getprotobyname exists
12728 set getprotobyname d_getpbyname
12729 eval $inlibc
12730
12731 : see if getprotobynumber exists
12732 set getprotobynumber d_getpbynumber
12733 eval $inlibc
12734
12735 : see if getprotoent exists
12736 set getprotoent d_getpent
12737 eval $inlibc
12738
12739 : see if getpgid exists
12740 set getpgid d_getpgid
12741 eval $inlibc
12742
12743 : see if getpgrp2 exists
12744 set getpgrp2 d_getpgrp2
12745 eval $inlibc
12746
12747 : see if getppid exists
12748 set getppid d_getppid
12749 eval $inlibc
12750
12751 : see if getpriority exists
12752 set getpriority d_getprior
12753 eval $inlibc
12754
12755 : see if getprotobyname_r exists
12756 set getprotobyname_r d_getprotobyname_r
12757 eval $inlibc
12758 case "$d_getprotobyname_r" in
12759 "$define")
12760         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12761         case "$d_getprotobyname_r_proto:$usethreads" in
12762         ":define")      d_getprotobyname_r_proto=define
12763                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
12764                 eval $hasproto ;;
12765         *)      ;;
12766         esac
12767         case "$d_getprotobyname_r_proto" in
12768         define)
12769         case "$getprotobyname_r_proto" in
12770         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
12771         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
12772         esac
12773         case "$getprotobyname_r_proto" in
12774         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
12775         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
12776         esac
12777         case "$getprotobyname_r_proto" in
12778         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
12779         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
12780         esac
12781         case "$getprotobyname_r_proto" in
12782         ''|0)   d_getprotobyname_r=undef
12783                 getprotobyname_r_proto=0
12784                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
12785         * )     case "$getprotobyname_r_proto" in
12786                 REENTRANT_PROTO*) ;;
12787                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
12788                 esac
12789                 echo "Prototype: $try" ;;
12790         esac
12791         ;;
12792         *)      case "$usethreads" in
12793                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
12794                 esac
12795                 d_getprotobyname_r=undef
12796                 getprotobyname_r_proto=0
12797                 ;;
12798         esac
12799         ;;
12800 *)      getprotobyname_r_proto=0
12801         ;;
12802 esac
12803
12804 : see if getprotobynumber_r exists
12805 set getprotobynumber_r d_getprotobynumber_r
12806 eval $inlibc
12807 case "$d_getprotobynumber_r" in
12808 "$define")
12809         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12810         case "$d_getprotobynumber_r_proto:$usethreads" in
12811         ":define")      d_getprotobynumber_r_proto=define
12812                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
12813                 eval $hasproto ;;
12814         *)      ;;
12815         esac
12816         case "$d_getprotobynumber_r_proto" in
12817         define)
12818         case "$getprotobynumber_r_proto" in
12819         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
12820         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
12821         esac
12822         case "$getprotobynumber_r_proto" in
12823         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
12824         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
12825         esac
12826         case "$getprotobynumber_r_proto" in
12827         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
12828         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
12829         esac
12830         case "$getprotobynumber_r_proto" in
12831         ''|0)   d_getprotobynumber_r=undef
12832                 getprotobynumber_r_proto=0
12833                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
12834         * )     case "$getprotobynumber_r_proto" in
12835                 REENTRANT_PROTO*) ;;
12836                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
12837                 esac
12838                 echo "Prototype: $try" ;;
12839         esac
12840         ;;
12841         *)      case "$usethreads" in
12842                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
12843                 esac
12844                 d_getprotobynumber_r=undef
12845                 getprotobynumber_r_proto=0
12846                 ;;
12847         esac
12848         ;;
12849 *)      getprotobynumber_r_proto=0
12850         ;;
12851 esac
12852
12853 : see if getprotoent_r exists
12854 set getprotoent_r d_getprotoent_r
12855 eval $inlibc
12856 case "$d_getprotoent_r" in
12857 "$define")
12858         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12859         case "$d_getprotoent_r_proto:$usethreads" in
12860         ":define")      d_getprotoent_r_proto=define
12861                 set d_getprotoent_r_proto getprotoent_r $hdrs
12862                 eval $hasproto ;;
12863         *)      ;;
12864         esac
12865         case "$d_getprotoent_r_proto" in
12866         define)
12867         case "$getprotoent_r_proto" in
12868         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
12869         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
12870         esac
12871         case "$getprotoent_r_proto" in
12872         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
12873         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
12874         esac
12875         case "$getprotoent_r_proto" in
12876         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
12877         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
12878         esac
12879         case "$getprotoent_r_proto" in
12880         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
12881         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
12882         esac
12883         case "$getprotoent_r_proto" in
12884         ''|0)   d_getprotoent_r=undef
12885                 getprotoent_r_proto=0
12886                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
12887         * )     case "$getprotoent_r_proto" in
12888                 REENTRANT_PROTO*) ;;
12889                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
12890                 esac
12891                 echo "Prototype: $try" ;;
12892         esac
12893         ;;
12894         *)      case "$usethreads" in
12895                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
12896                 esac
12897                 d_getprotoent_r=undef
12898                 getprotoent_r_proto=0
12899                 ;;
12900         esac
12901         ;;
12902 *)      getprotoent_r_proto=0
12903         ;;
12904 esac
12905
12906 : see if prototypes for various getprotoxxx netdb.h functions are available
12907 echo " "
12908 set d_getprotoprotos getprotoent $i_netdb netdb.h
12909 eval $hasproto
12910
12911 : see if getprpwnam exists
12912 set getprpwnam d_getprpwnam
12913 eval $inlibc
12914
12915 : see if getpwent exists
12916 set getpwent d_getpwent
12917 eval $inlibc
12918
12919 : see if getpwent_r exists
12920 set getpwent_r d_getpwent_r
12921 eval $inlibc
12922 case "$d_getpwent_r" in
12923 "$define")
12924         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12925         case "$d_getpwent_r_proto:$usethreads" in
12926         ":define")      d_getpwent_r_proto=define
12927                 set d_getpwent_r_proto getpwent_r $hdrs
12928                 eval $hasproto ;;
12929         *)      ;;
12930         esac
12931         case "$d_getpwent_r_proto" in
12932         define)
12933         case "$getpwent_r_proto" in
12934         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
12935         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
12936         esac
12937         case "$getpwent_r_proto" in
12938         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
12939         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
12940         esac
12941         case "$getpwent_r_proto" in
12942         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
12943         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
12944         esac
12945         case "$getpwent_r_proto" in
12946         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
12947         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
12948         esac
12949         case "$getpwent_r_proto" in
12950         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
12951         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
12952         esac
12953         case "$getpwent_r_proto" in
12954         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
12955         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
12956         esac
12957         case "$getpwent_r_proto" in
12958         ''|0)   d_getpwent_r=undef
12959                 getpwent_r_proto=0
12960                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
12961         * )     case "$getpwent_r_proto" in
12962                 REENTRANT_PROTO*) ;;
12963                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
12964                 esac
12965                 echo "Prototype: $try" ;;
12966         esac
12967         ;;
12968         *)      case "$usethreads" in
12969                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
12970                 esac
12971                 d_getpwent_r=undef
12972                 getpwent_r_proto=0
12973                 ;;
12974         esac
12975         ;;
12976 *)      getpwent_r_proto=0
12977         ;;
12978 esac
12979
12980 : see if getpwnam_r exists
12981 set getpwnam_r d_getpwnam_r
12982 eval $inlibc
12983 case "$d_getpwnam_r" in
12984 "$define")
12985         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12986         case "$d_getpwnam_r_proto:$usethreads" in
12987         ":define")      d_getpwnam_r_proto=define
12988                 set d_getpwnam_r_proto getpwnam_r $hdrs
12989                 eval $hasproto ;;
12990         *)      ;;
12991         esac
12992         case "$d_getpwnam_r_proto" in
12993         define)
12994         case "$getpwnam_r_proto" in
12995         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
12996         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
12997         esac
12998         case "$getpwnam_r_proto" in
12999         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13000         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13001         esac
13002         case "$getpwnam_r_proto" in
13003         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13004         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13005         esac
13006         case "$getpwnam_r_proto" in
13007         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13008         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13009         esac
13010         case "$getpwnam_r_proto" in
13011         ''|0)   d_getpwnam_r=undef
13012                 getpwnam_r_proto=0
13013                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13014         * )     case "$getpwnam_r_proto" in
13015                 REENTRANT_PROTO*) ;;
13016                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13017                 esac
13018                 echo "Prototype: $try" ;;
13019         esac
13020         ;;
13021         *)      case "$usethreads" in
13022                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13023                 esac
13024                 d_getpwnam_r=undef
13025                 getpwnam_r_proto=0
13026                 ;;
13027         esac
13028         ;;
13029 *)      getpwnam_r_proto=0
13030         ;;
13031 esac
13032
13033 : see if getpwuid_r exists
13034 set getpwuid_r d_getpwuid_r
13035 eval $inlibc
13036 case "$d_getpwuid_r" in
13037 "$define")
13038         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13039         case "$d_getpwuid_r_proto:$usethreads" in
13040         ":define")      d_getpwuid_r_proto=define
13041                 set d_getpwuid_r_proto getpwuid_r $hdrs
13042                 eval $hasproto ;;
13043         *)      ;;
13044         esac
13045         case "$d_getpwuid_r_proto" in
13046         define)
13047         case "$getpwuid_r_proto" in
13048         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13049         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13050         esac
13051         case "$getpwuid_r_proto" in
13052         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13053         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13054         esac
13055         case "$getpwuid_r_proto" in
13056         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13057         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13058         esac
13059         case "$getpwuid_r_proto" in
13060         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13061         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13062         esac
13063         case "$getpwuid_r_proto" in
13064         ''|0)   d_getpwuid_r=undef
13065                 getpwuid_r_proto=0
13066                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13067         * )     case "$getpwuid_r_proto" in
13068                 REENTRANT_PROTO*) ;;
13069                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13070                 esac
13071                 echo "Prototype: $try" ;;
13072         esac
13073         ;;
13074         *)      case "$usethreads" in
13075                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13076                 esac
13077                 d_getpwuid_r=undef
13078                 getpwuid_r_proto=0
13079                 ;;
13080         esac
13081         ;;
13082 *)      getpwuid_r_proto=0
13083         ;;
13084 esac
13085
13086
13087 : see if getservbyname exists
13088 set getservbyname d_getsbyname
13089 eval $inlibc
13090
13091 : see if getservbyport exists
13092 set getservbyport d_getsbyport
13093 eval $inlibc
13094
13095 : see if getservent exists
13096 set getservent d_getsent
13097 eval $inlibc
13098
13099 : see if getservbyname_r exists
13100 set getservbyname_r d_getservbyname_r
13101 eval $inlibc
13102 case "$d_getservbyname_r" in
13103 "$define")
13104         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13105         case "$d_getservbyname_r_proto:$usethreads" in
13106         ":define")      d_getservbyname_r_proto=define
13107                 set d_getservbyname_r_proto getservbyname_r $hdrs
13108                 eval $hasproto ;;
13109         *)      ;;
13110         esac
13111         case "$d_getservbyname_r_proto" in
13112         define)
13113         case "$getservbyname_r_proto" in
13114         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13115         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13116         esac
13117         case "$getservbyname_r_proto" in
13118         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13119         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13120         esac
13121         case "$getservbyname_r_proto" in
13122         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13123         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13124         esac
13125         case "$getservbyname_r_proto" in
13126         ''|0)   d_getservbyname_r=undef
13127                 getservbyname_r_proto=0
13128                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13129         * )     case "$getservbyname_r_proto" in
13130                 REENTRANT_PROTO*) ;;
13131                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13132                 esac
13133                 echo "Prototype: $try" ;;
13134         esac
13135         ;;
13136         *)      case "$usethreads" in
13137                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13138                 esac
13139                 d_getservbyname_r=undef
13140                 getservbyname_r_proto=0
13141                 ;;
13142         esac
13143         ;;
13144 *)      getservbyname_r_proto=0
13145         ;;
13146 esac
13147
13148 : see if getservbyport_r exists
13149 set getservbyport_r d_getservbyport_r
13150 eval $inlibc
13151 case "$d_getservbyport_r" in
13152 "$define")
13153         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13154         case "$d_getservbyport_r_proto:$usethreads" in
13155         ":define")      d_getservbyport_r_proto=define
13156                 set d_getservbyport_r_proto getservbyport_r $hdrs
13157                 eval $hasproto ;;
13158         *)      ;;
13159         esac
13160         case "$d_getservbyport_r_proto" in
13161         define)
13162         case "$getservbyport_r_proto" in
13163         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13164         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13165         esac
13166         case "$getservbyport_r_proto" in
13167         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13168         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13169         esac
13170         case "$getservbyport_r_proto" in
13171         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13172         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13173         esac
13174         case "$getservbyport_r_proto" in
13175         ''|0)   d_getservbyport_r=undef
13176                 getservbyport_r_proto=0
13177                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13178         * )     case "$getservbyport_r_proto" in
13179                 REENTRANT_PROTO*) ;;
13180                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13181                 esac
13182                 echo "Prototype: $try" ;;
13183         esac
13184         ;;
13185         *)      case "$usethreads" in
13186                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13187                 esac
13188                 d_getservbyport_r=undef
13189                 getservbyport_r_proto=0
13190                 ;;
13191         esac
13192         ;;
13193 *)      getservbyport_r_proto=0
13194         ;;
13195 esac
13196
13197 : see if getservent_r exists
13198 set getservent_r d_getservent_r
13199 eval $inlibc
13200 case "$d_getservent_r" in
13201 "$define")
13202         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13203         case "$d_getservent_r_proto:$usethreads" in
13204         ":define")      d_getservent_r_proto=define
13205                 set d_getservent_r_proto getservent_r $hdrs
13206                 eval $hasproto ;;
13207         *)      ;;
13208         esac
13209         case "$d_getservent_r_proto" in
13210         define)
13211         case "$getservent_r_proto" in
13212         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13213         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13214         esac
13215         case "$getservent_r_proto" in
13216         ''|0) try='int getservent_r(struct servent*, char*, int);'
13217         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13218         esac
13219         case "$getservent_r_proto" in
13220         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13221         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13222         esac
13223         case "$getservent_r_proto" in
13224         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13225         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13226         esac
13227         case "$getservent_r_proto" in
13228         ''|0)   d_getservent_r=undef
13229                 getservent_r_proto=0
13230                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13231         * )     case "$getservent_r_proto" in
13232                 REENTRANT_PROTO*) ;;
13233                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13234                 esac
13235                 echo "Prototype: $try" ;;
13236         esac
13237         ;;
13238         *)      case "$usethreads" in
13239                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13240                 esac
13241                 d_getservent_r=undef
13242                 getservent_r_proto=0
13243                 ;;
13244         esac
13245         ;;
13246 *)      getservent_r_proto=0
13247         ;;
13248 esac
13249
13250 : see if prototypes for various getservxxx netdb.h functions are available
13251 echo " "
13252 set d_getservprotos getservent $i_netdb netdb.h
13253 eval $hasproto
13254
13255 : see if getspnam exists
13256 set getspnam d_getspnam
13257 eval $inlibc
13258
13259 : see if this is a shadow.h system
13260 set shadow.h i_shadow
13261 eval $inhdr
13262
13263 : see if getspnam_r exists
13264 set getspnam_r d_getspnam_r
13265 eval $inlibc
13266 case "$d_getspnam_r" in
13267 "$define")
13268         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13269         case "$d_getspnam_r_proto:$usethreads" in
13270         ":define")      d_getspnam_r_proto=define
13271                 set d_getspnam_r_proto getspnam_r $hdrs
13272                 eval $hasproto ;;
13273         *)      ;;
13274         esac
13275         case "$d_getspnam_r_proto" in
13276         define)
13277         case "$getspnam_r_proto" in
13278         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13279         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13280         esac
13281         case "$getspnam_r_proto" in
13282         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13283         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13284         esac
13285         case "$getspnam_r_proto" in
13286         ''|0)   d_getspnam_r=undef
13287                 getspnam_r_proto=0
13288                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13289         * )     case "$getspnam_r_proto" in
13290                 REENTRANT_PROTO*) ;;
13291                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13292                 esac
13293                 echo "Prototype: $try" ;;
13294         esac
13295         ;;
13296         *)      case "$usethreads" in
13297                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13298                 esac
13299                 d_getspnam_r=undef
13300                 getspnam_r_proto=0
13301                 ;;
13302         esac
13303         ;;
13304 *)      getspnam_r_proto=0
13305         ;;
13306 esac
13307
13308 : see if gettimeofday or ftime exists
13309 set gettimeofday d_gettimeod
13310 eval $inlibc
13311 case "$d_gettimeod" in
13312 "$undef")
13313         set ftime d_ftime 
13314         eval $inlibc
13315         ;;
13316 *)
13317         val="$undef"; set d_ftime; eval $setvar
13318         ;;
13319 esac
13320 case "$d_gettimeod$d_ftime" in
13321 "$undef$undef")
13322         echo " "
13323         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13324         ;;
13325 esac
13326
13327 : see if gmtime_r exists
13328 set gmtime_r d_gmtime_r
13329 eval $inlibc
13330 case "$d_gmtime_r" in
13331 "$define")
13332         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13333         case "$d_gmtime_r_proto:$usethreads" in
13334         ":define")      d_gmtime_r_proto=define
13335                 set d_gmtime_r_proto gmtime_r $hdrs
13336                 eval $hasproto ;;
13337         *)      ;;
13338         esac
13339         case "$d_gmtime_r_proto" in
13340         define)
13341         case "$gmtime_r_proto" in
13342         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13343         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13344         esac
13345         case "$gmtime_r_proto" in
13346         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13347         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13348         esac
13349         case "$gmtime_r_proto" in
13350         ''|0)   d_gmtime_r=undef
13351                 gmtime_r_proto=0
13352                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13353         * )     case "$gmtime_r_proto" in
13354                 REENTRANT_PROTO*) ;;
13355                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13356                 esac
13357                 echo "Prototype: $try" ;;
13358         esac
13359         ;;
13360         *)      case "$usethreads" in
13361                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13362                 esac
13363                 d_gmtime_r=undef
13364                 gmtime_r_proto=0
13365                 ;;
13366         esac
13367         ;;
13368 *)      gmtime_r_proto=0
13369         ;;
13370 esac
13371
13372 : see if hasmntopt exists
13373 set hasmntopt d_hasmntopt
13374 eval $inlibc
13375
13376 : see if this is a netinet/in.h or sys/in.h system
13377 set netinet/in.h i_niin sys/in.h i_sysin
13378 eval $inhdr
13379
13380 : see if arpa/inet.h has to be included
13381 set arpa/inet.h i_arpainet
13382 eval $inhdr
13383
13384 : see if htonl --and friends-- exists
13385 val=''
13386 set htonl val
13387 eval $inlibc
13388
13389 : Maybe they are macros.
13390 case "$val" in
13391 $undef)
13392         $cat >htonl.c <<EOM
13393 #include <stdio.h>
13394 #include <sys/types.h>
13395 #$i_niin I_NETINET_IN
13396 #$i_sysin I_SYS_IN
13397 #$i_arpainet I_ARPA_INET
13398 #ifdef I_NETINET_IN
13399 #include <netinet/in.h>
13400 #endif
13401 #ifdef I_SYS_IN
13402 #include <sys/in.h>
13403 #endif
13404 #ifdef I_ARPA_INET
13405 #include <arpa/inet.h>
13406 #endif
13407 #ifdef htonl
13408 printf("Defined as a macro.");
13409 #endif
13410 EOM
13411         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13412         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13413                 val="$define"
13414                 echo "But it seems to be defined as a macro." >&4
13415         fi
13416         $rm -f htonl.?
13417         ;;
13418 esac
13419 set d_htonl
13420 eval $setvar
13421
13422 : see if ilogbl exists
13423 set ilogbl d_ilogbl
13424 eval $inlibc
13425
13426 : index or strchr
13427 echo " "
13428 if set index val -f; eval $csym; $val; then
13429         if set strchr val -f d_strchr; eval $csym; $val; then
13430                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13431                         val="$define"
13432                         vali="$undef"
13433                         echo "strchr() found." >&4
13434                 else
13435                         val="$undef"
13436                         vali="$define"
13437                         echo "index() found." >&4
13438                 fi
13439         else
13440                 val="$undef"
13441                 vali="$define"
13442                 echo "index() found." >&4
13443         fi
13444 else
13445         if set strchr val -f d_strchr; eval $csym; $val; then
13446                 val="$define"
13447                 vali="$undef"
13448                 echo "strchr() found." >&4
13449         else
13450                 echo "No index() or strchr() found!" >&4
13451                 val="$undef"
13452                 vali="$undef"
13453         fi
13454 fi
13455 set d_strchr; eval $setvar
13456 val="$vali"
13457 set d_index; eval $setvar
13458
13459 : check whether inet_aton exists
13460 set inet_aton d_inetaton
13461 eval $inlibc
13462
13463 : Look for isascii
13464 echo " "
13465 $cat >isascii.c <<EOCP
13466 #include <stdio.h>
13467 #include <ctype.h>
13468 #$i_stdlib I_STDLIB
13469 #ifdef I_STDLIB
13470 #include <stdlib.h>
13471 #endif
13472 int main() {
13473         int c = 'A';
13474         if (isascii(c))
13475                 exit(0);
13476         else
13477                 exit(1);
13478 }
13479 EOCP
13480 set isascii
13481 if eval $compile; then
13482         echo "isascii() found." >&4
13483         val="$define"
13484 else
13485         echo "isascii() NOT found." >&4
13486         val="$undef"
13487 fi
13488 set d_isascii
13489 eval $setvar
13490 $rm -f isascii*
13491
13492 : see if isfinite exists
13493 set isfinite d_isfinite
13494 eval $inlibc
13495
13496 : see if isinf exists
13497 set isinf d_isinf
13498 eval $inlibc
13499
13500 : see if isnan exists
13501 set isnan d_isnan
13502 eval $inlibc
13503
13504 : see if isnanl exists
13505 set isnanl d_isnanl
13506 eval $inlibc
13507
13508 : see if killpg exists
13509 set killpg d_killpg
13510 eval $inlibc
13511
13512 : see if lchown exists
13513 echo " "
13514 $cat > try.c <<'EOCP'
13515 /* System header to define __stub macros and hopefully few prototypes,
13516     which can conflict with char lchown(); below.  */
13517 #include <assert.h>
13518 /* Override any gcc2 internal prototype to avoid an error.  */
13519 /* We use char because int might match the return type of a gcc2
13520    builtin and then its argument prototype would still apply.  */
13521 char lchown();
13522 int main() {
13523     /*  The GNU C library defines this for functions which it implements
13524         to always fail with ENOSYS.  Some functions are actually named
13525         something starting with __ and the normal name is an alias.  */
13526 #if defined (__stub_lchown) || defined (__stub___lchown)
13527 choke me
13528 #else
13529 lchown();
13530 #endif
13531 ; return 0; }
13532 EOCP
13533 set try
13534 if eval $compile; then
13535     $echo "lchown() found." >&4
13536     val="$define"
13537 else
13538     $echo "lchown() NOT found." >&4
13539     val="$undef"
13540 fi
13541 set d_lchown
13542 eval $setvar
13543
13544 : See if number of significant digits in a double precision number is known
13545 echo " "
13546 $cat >ldbl_dig.c <<EOM
13547 #$i_limits I_LIMITS
13548 #$i_float I_FLOAT
13549 #ifdef I_LIMITS
13550 #include <limits.h>
13551 #endif
13552 #ifdef I_FLOAT
13553 #include <float.h>
13554 #endif
13555 #ifdef LDBL_DIG
13556 printf("Contains LDBL_DIG");
13557 #endif
13558 EOM
13559 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13560 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13561         echo "LDBL_DIG found." >&4
13562         val="$define"
13563 else
13564         echo "LDBL_DIG NOT found." >&4
13565         val="$undef"
13566 fi
13567 $rm -f ldbl_dig.?
13568 set d_ldbl_dig
13569 eval $setvar
13570
13571 : see if link exists
13572 set link d_link
13573 eval $inlibc
13574
13575 : see if localtime_r exists
13576 set localtime_r d_localtime_r
13577 eval $inlibc
13578 case "$d_localtime_r" in
13579 "$define")
13580         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13581         case "$d_localtime_r_proto:$usethreads" in
13582         ":define")      d_localtime_r_proto=define
13583                 set d_localtime_r_proto localtime_r $hdrs
13584                 eval $hasproto ;;
13585         *)      ;;
13586         esac
13587         case "$d_localtime_r_proto" in
13588         define)
13589         case "$localtime_r_proto" in
13590         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13591         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13592         esac
13593         case "$localtime_r_proto" in
13594         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13595         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13596         esac
13597         case "$localtime_r_proto" in
13598         ''|0)   d_localtime_r=undef
13599                 localtime_r_proto=0
13600                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13601         * )     case "$localtime_r_proto" in
13602                 REENTRANT_PROTO*) ;;
13603                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13604                 esac
13605                 echo "Prototype: $try" ;;
13606         esac
13607         ;;
13608         *)      case "$usethreads" in
13609                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13610                 esac
13611                 d_localtime_r=undef
13612                 localtime_r_proto=0
13613                 ;;
13614         esac
13615         ;;
13616 *)      localtime_r_proto=0
13617         ;;
13618 esac
13619
13620 : see if localeconv exists
13621 set localeconv d_locconv
13622 eval $inlibc
13623
13624 : see if lockf exists
13625 set lockf d_lockf
13626 eval $inlibc
13627
13628 : see if prototype for lseek is available
13629 echo " "
13630 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13631 eval $hasproto
13632
13633 : see if lstat exists
13634 set lstat d_lstat
13635 eval $inlibc
13636
13637 : see if madvise exists
13638 set madvise d_madvise
13639 eval $inlibc
13640
13641 : see if mblen exists
13642 set mblen d_mblen
13643 eval $inlibc
13644
13645 : see if mbstowcs exists
13646 set mbstowcs d_mbstowcs
13647 eval $inlibc
13648
13649 : see if mbtowc exists
13650 set mbtowc d_mbtowc
13651 eval $inlibc
13652
13653 : see if memchr exists
13654 set memchr d_memchr
13655 eval $inlibc
13656
13657 : see if memcmp exists
13658 set memcmp d_memcmp
13659 eval $inlibc
13660
13661 : see if memcpy exists
13662 set memcpy d_memcpy
13663 eval $inlibc
13664
13665 : see if memmove exists
13666 set memmove d_memmove
13667 eval $inlibc
13668
13669 : see if memset exists
13670 set memset d_memset
13671 eval $inlibc
13672
13673 : see if mkdir exists
13674 set mkdir d_mkdir
13675 eval $inlibc
13676
13677 : see if mkdtemp exists
13678 set mkdtemp d_mkdtemp
13679 eval $inlibc
13680
13681 : see if mkfifo exists
13682 set mkfifo d_mkfifo
13683 eval $inlibc
13684
13685 : see if mkstemp exists
13686 set mkstemp d_mkstemp
13687 eval $inlibc
13688
13689 : see if mkstemps exists
13690 set mkstemps d_mkstemps
13691 eval $inlibc
13692
13693 : see if mktime exists
13694 set mktime d_mktime
13695 eval $inlibc
13696
13697 : see if this is a sys/mman.h system
13698 set sys/mman.h i_sysmman
13699 eval $inhdr
13700
13701 : see if mmap exists
13702 set mmap d_mmap
13703 eval $inlibc
13704 : see what shmat returns
13705 : default to something harmless
13706 mmaptype='void *'
13707 case "$i_sysmman$d_mmap" in
13708 "$define$define")
13709         $cat >mmap.c <<'END'
13710 #include <sys/mman.h>
13711 void *mmap();
13712 END
13713         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
13714                 mmaptype='void *'
13715         else
13716                 mmaptype='caddr_t'
13717         fi
13718         echo "and it returns ($mmaptype)." >&4
13719         ;;
13720 esac
13721
13722
13723
13724 : see if sqrtl exists
13725 set sqrtl d_sqrtl
13726 eval $inlibc
13727
13728 : see if modfl exists
13729 set modfl d_modfl
13730 eval $inlibc
13731
13732 : see if prototype for modfl is available
13733 echo " "
13734 set d_modflproto modfl math.h
13735 eval $hasproto
13736
13737 d_modfl_pow32_bug="$undef"
13738
13739 case "$d_longdbl$d_modfl" in
13740 $define$define)
13741         $cat <<EOM
13742 Checking to see whether your modfl() is okay for large values...
13743 EOM
13744 $cat >try.c <<EOCP
13745 #include <math.h> 
13746 #include <stdio.h>
13747 EOCP
13748 if $test "X$d_modflproto" != "X$define"; then
13749         $cat >>try.c <<EOCP
13750 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
13751 long double modfl (long double, long double *);
13752 EOCP
13753 fi
13754 $cat >>try.c <<EOCP
13755 int main() {
13756     long double nv = 4294967303.15;
13757     long double v, w;
13758     v = modfl(nv, &w);         
13759 #ifdef __GLIBC__
13760     printf("glibc");
13761 #endif
13762     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
13763     return 0;
13764 }
13765 EOCP
13766         case "$osname:$gccversion" in
13767         aix:)   saveccflags="$ccflags"
13768                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
13769         esac
13770         set try
13771         if eval $compile; then
13772                 foo=`$run ./try`
13773                 case "$foo" in
13774                 *" 4294967303.150000 1.150000 4294967302.000000")
13775                         echo >&4 "Your modfl() is broken for large values."
13776                         d_modfl_pow32_bug="$define"
13777                         case "$foo" in
13778                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
13779                         ;;
13780                         esac
13781                         ;;
13782                 *" 4294967303.150000 0.150000 4294967303.000000")
13783                         echo >&4 "Your modfl() seems okay for large values."
13784                         ;;
13785                 *)      echo >&4 "I don't understand your modfl() at all."
13786                         d_modfl="$undef"
13787                         ;;
13788                 esac
13789                 $rm -f try.* try core core.try.*
13790         else
13791                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
13792                 d_modfl="$undef"
13793         fi
13794         case "$osname:$gccversion" in
13795         aix:)   ccflags="$saveccflags" ;; # restore
13796         esac
13797         ;;
13798 esac
13799
13800 if $test "$uselongdouble" = "$define"; then
13801     message=none
13802     case "$d_sqrtl:$d_modfl" in
13803     $define:$define)
13804         : You have both
13805         ;;
13806     $define:$undef)
13807         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
13808             echo "You have both aintl and copysignl, so I can emulate modfl."
13809         else
13810             message="I could not find modfl."
13811         fi
13812         ;;
13813     $undef:$define)
13814         message="I could not find sqrtl."
13815         ;;
13816     $undef:$undef)
13817         message="I found neither sqrtl nor modfl."
13818         ;;
13819     esac
13820
13821     if $test "$message" != none; then
13822         $cat <<EOM >&4
13823
13824 *** You requested the use of long doubles but you do not seem to have
13825 *** the mathematic functions for long doubles.
13826 *** ($message)
13827 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
13828 *** Cannot continue, aborting.
13829
13830 EOM
13831
13832         exit 1
13833     fi
13834 fi
13835
13836 : see if mprotect exists
13837 set mprotect d_mprotect
13838 eval $inlibc
13839
13840 : see if msgctl exists
13841 set msgctl d_msgctl
13842 eval $inlibc
13843
13844 : see if msgget exists
13845 set msgget d_msgget
13846 eval $inlibc
13847
13848 : see if msgsnd exists
13849 set msgsnd d_msgsnd
13850 eval $inlibc
13851
13852 : see if msgrcv exists
13853 set msgrcv d_msgrcv
13854 eval $inlibc
13855
13856 : see how much of the 'msg*(2)' library is present.
13857 h_msg=true
13858 echo " "
13859 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
13860 *"$undef"*) h_msg=false;;
13861 esac
13862 case "$osname" in
13863 freebsd)
13864     case "`ipcs 2>&1`" in
13865     "SVID messages"*"not configured"*)
13866         echo "Your $osname does not have the msg*(2) configured." >&4
13867         h_msg=false
13868         val="$undef"
13869         set msgctl d_msgctl
13870         eval $setvar
13871         set msgget d_msgget
13872         eval $setvar
13873         set msgsnd d_msgsnd
13874         eval $setvar
13875         set msgrcv d_msgrcv
13876         eval $setvar
13877         ;;
13878     esac
13879     ;;
13880 esac
13881 : we could also check for sys/ipc.h ...
13882 if $h_msg && $test `./findhdr sys/msg.h`; then
13883         echo "You have the full msg*(2) library." >&4
13884         val="$define"
13885 else
13886         echo "You don't have the full msg*(2) library." >&4
13887         val="$undef"
13888 fi
13889 set d_msg
13890 eval $setvar
13891
13892
13893 echo " "
13894 echo "Checking to see if your system supports struct msghdr..." >&4
13895 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
13896 eval $hasstruct
13897 case "$d_msghdr_s" in
13898 "$define")      echo "Yes, it does."   ;;
13899 *)              echo "No, it doesn't." ;;
13900 esac
13901
13902
13903 : see if msync exists
13904 set msync d_msync
13905 eval $inlibc
13906
13907 : see if munmap exists
13908 set munmap d_munmap
13909 eval $inlibc
13910
13911 : see if nanosleep exists
13912 set nanosleep d_nanosleep
13913 eval $inlibc
13914
13915 : see if nice exists
13916 set nice d_nice
13917 eval $inlibc
13918
13919 : see if this is a langinfo.h system
13920 set langinfo.h i_langinfo
13921 eval $inhdr
13922
13923 : see if nl_langinfo exists
13924 set nl_langinfo d_nl_langinfo
13925 eval $inlibc
13926
13927 : check for length of character
13928 echo " "
13929 case "$charsize" in
13930 '')
13931         echo "Checking to see how big your characters are (hey, you never know)..." >&4
13932         $cat >try.c <<EOCP
13933 #include <stdio.h>
13934 #$i_stdlib I_STDLIB
13935 #ifdef I_STDLIB
13936 #include <stdlib.h>
13937 #endif
13938 int main()
13939 {
13940     printf("%d\n", (int)sizeof(char));
13941     exit(0);
13942 }
13943 EOCP
13944         set try
13945         if eval $compile_ok; then
13946                 dflt=`$run ./try`
13947         else
13948                 dflt='1'
13949                 echo "(I can't seem to compile the test program.  Guessing...)"
13950         fi
13951         ;;
13952 *)
13953         dflt="$charsize"
13954         ;;
13955 esac
13956 rp="What is the size of a character (in bytes)?"
13957 . ./myread
13958 charsize="$ans"
13959 $rm -f try.c try
13960
13961 : check for volatile keyword
13962 echo " "
13963 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
13964 $cat >try.c <<'EOCP'
13965 int main()
13966 {
13967         typedef struct _goo_struct goo_struct;
13968         goo_struct * volatile goo = ((goo_struct *)0);
13969         struct _goo_struct {
13970                 long long_int;
13971                 int reg_int;
13972                 char char_var;
13973         };
13974         typedef unsigned short foo_t;
13975         char *volatile foo;
13976         volatile int bar;
13977         volatile foo_t blech;
13978         foo = foo;
13979 }
13980 EOCP
13981 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
13982         val="$define"
13983         echo "Yup, it does."
13984 else
13985         val="$undef"
13986         echo "Nope, it doesn't."
13987 fi
13988 set d_volatile
13989 eval $setvar
13990 $rm -f try.*
13991
13992
13993 echo " "
13994 $echo "Choosing the C types to be used for Perl's internal types..." >&4
13995
13996 case "$use64bitint:$d_quad:$quadtype" in
13997 define:define:?*)
13998         ivtype="$quadtype"
13999         uvtype="$uquadtype"
14000         ivsize=8
14001         uvsize=8
14002         ;;
14003 *)      ivtype="long"
14004         uvtype="unsigned long"
14005         ivsize=$longsize
14006         uvsize=$longsize
14007         ;;
14008 esac
14009
14010 case "$uselongdouble:$d_longdbl" in
14011 define:define)
14012         nvtype="long double"
14013         nvsize=$longdblsize
14014         ;;
14015 *)      nvtype=double
14016         nvsize=$doublesize
14017         ;;
14018 esac
14019
14020 $echo "(IV will be "$ivtype", $ivsize bytes)"
14021 $echo "(UV will be "$uvtype", $uvsize bytes)"
14022 $echo "(NV will be "$nvtype", $nvsize bytes)"
14023
14024 $cat >try.c <<EOCP
14025 #$i_inttypes I_INTTYPES
14026 #ifdef I_INTTYPES
14027 #include <inttypes.h>
14028 #endif
14029 #include <stdio.h>
14030 int main() {
14031 #ifdef INT8
14032    int8_t i =  INT8_MAX;
14033   uint8_t u = UINT8_MAX;
14034   printf("int8_t\n");
14035 #endif
14036 #ifdef INT16
14037    int16_t i =  INT16_MAX;
14038   uint16_t i = UINT16_MAX;
14039   printf("int16_t\n");
14040 #endif
14041 #ifdef INT32
14042    int32_t i =  INT32_MAX;
14043   uint32_t u = UINT32_MAX;
14044   printf("int32_t\n");
14045 #endif
14046 }
14047 EOCP
14048
14049 case "$i8type" in
14050 '')     case "$charsize" in
14051         1)      i8type=char
14052                 u8type="unsigned char"
14053                 i8size=$charsize
14054                 u8size=$charsize
14055                 ;;
14056         esac
14057         ;;
14058 esac
14059 case "$i8type" in
14060 '')     set try -DINT8
14061         if eval $compile; then
14062                 case "`$run ./try`" in
14063                 int8_t) i8type=int8_t
14064                         u8type=uint8_t
14065                         i8size=1
14066                         u8size=1
14067                         ;;
14068                 esac
14069         fi
14070         ;;
14071 esac
14072 case "$i8type" in
14073 '')     if $test $charsize -ge 1; then
14074                 i8type=char
14075                 u8type="unsigned char"
14076                 i8size=$charsize
14077                 u8size=$charsize
14078         fi
14079         ;;
14080 esac
14081
14082 case "$i16type" in
14083 '')     case "$shortsize" in
14084         2)      i16type=short
14085                 u16type="unsigned short"
14086                 i16size=$shortsize
14087                 u16size=$shortsize
14088                 ;;
14089         esac
14090         ;;
14091 esac
14092 case "$i16type" in
14093 '')     set try -DINT16
14094         if eval $compile; then
14095                 case "`$run ./try`" in
14096                 int16_t)
14097                         i16type=int16_t
14098                         u16type=uint16_t
14099                         i16size=2
14100                         u16size=2
14101                         ;;
14102                 esac
14103         fi
14104         ;;
14105 esac
14106 case "$i16type" in
14107 '')     if $test $shortsize -ge 2; then
14108                 i16type=short
14109                 u16type="unsigned short"
14110                 i16size=$shortsize
14111                 u16size=$shortsize
14112         fi
14113         ;;
14114 esac
14115
14116 case "$i32type" in
14117 '')     case "$longsize" in
14118         4)      i32type=long
14119                 u32type="unsigned long"
14120                 i32size=$longsize
14121                 u32size=$longsize
14122                 ;;
14123         *)      case "$intsize" in
14124                 4)      i32type=int
14125                         u32type="unsigned int"
14126                         i32size=$intsize
14127                         u32size=$intsize
14128                         ;;
14129                 esac
14130                 ;;
14131         esac
14132         ;;
14133 esac
14134 case "$i32type" in
14135 '')     set try -DINT32
14136         if eval $compile; then
14137                 case "`$run ./try`" in
14138                 int32_t)
14139                         i32type=int32_t
14140                         u32type=uint32_t
14141                         i32size=4
14142                         u32size=4
14143                         ;;
14144                 esac
14145         fi
14146         ;;
14147 esac
14148 case "$i32type" in
14149 '')     if $test $intsize -ge 4; then
14150                 i32type=int
14151                 u32type="unsigned int"
14152                 i32size=$intsize
14153                 u32size=$intsize
14154         fi
14155         ;;
14156 esac
14157
14158 case "$i64type" in
14159 '')     case "$d_quad:$quadtype" in
14160         define:?*)
14161                 i64type="$quadtype"
14162                 u64type="$uquadtype"
14163                 i64size=8
14164                 u64size=8
14165                 ;;
14166         esac
14167         ;;
14168 esac
14169
14170 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14171 : volatile so that the compiler has to store it out to memory.
14172 if test X"$d_volatile" = X"$define"; then
14173         volatile=volatile
14174 fi
14175 $cat <<EOP >try.c
14176 #include <stdio.h>
14177 #$i_stdlib I_STDLIB
14178 #ifdef I_STDLIB
14179 #include <stdlib.h>
14180 #endif
14181 #include <sys/types.h>
14182 #include <signal.h>
14183 #ifdef SIGFPE
14184 $volatile int bletched = 0;
14185 $signal_t blech(s) int s; { bletched = 1; }
14186 #endif
14187 int main() {
14188     $uvtype u = 0;
14189     $nvtype d;
14190     int     n = 8 * $uvsize;
14191     int     i;
14192 #ifdef SIGFPE
14193     signal(SIGFPE, blech);
14194 #endif
14195
14196     for (i = 0; i < n; i++) {
14197       u = u << 1 | ($uvtype)1;
14198       d = ($nvtype)u;
14199       if (($uvtype)d != u)
14200         break;
14201       if (d <= 0)
14202         break;
14203       d = ($nvtype)(u - 1);
14204       if (($uvtype)d != (u - 1))
14205         break;
14206 #ifdef SIGFPE
14207       if (bletched) {
14208         break;
14209 #endif
14210       } 
14211     }
14212     printf("%d\n", ((i == n) ? -n : i));
14213     exit(0);
14214 }
14215 EOP
14216 set try
14217
14218 d_nv_preserves_uv="$undef"
14219 if eval $compile; then
14220         nv_preserves_uv_bits="`$run ./try`"
14221 fi
14222 case "$nv_preserves_uv_bits" in
14223 \-[1-9]*)       
14224         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14225         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14226         d_nv_preserves_uv="$define"
14227         ;;
14228 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14229         d_nv_preserves_uv="$undef" ;;
14230 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14231         nv_preserves_uv_bits="$undef" ;;
14232 esac
14233
14234 $rm -f try.* try
14235
14236
14237 : check for off64_t
14238 echo " "
14239 echo "Checking to see if you have off64_t..." >&4
14240 $cat >try.c <<EOCP
14241 #include <sys/types.h>
14242 #include <unistd.h>
14243 int main() { off64_t x = 7; }
14244 EOCP
14245 set try
14246 if eval $compile; then
14247         val="$define"
14248         echo "You have off64_t."
14249 else
14250         val="$undef"
14251         echo "You do not have off64_t."
14252         case "$lseeksize" in
14253         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14254         esac
14255 fi
14256 $rm -f try.* try
14257 set d_off64_t
14258 eval $setvar
14259
14260 : how to create joinable pthreads
14261 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14262         echo " "
14263         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14264         $cat >try.c <<'EOCP'
14265 #include <pthread.h>
14266 int main() {
14267     int detachstate = JOINABLE;
14268 }
14269 EOCP
14270         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14271         if eval $compile; then
14272                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14273                 val="$undef" # Yes, undef.
14274                 set d_old_pthread_create_joinable
14275                 eval $setvar
14276                 val=""
14277                 set old_pthread_create_joinable
14278                 eval $setvar
14279         else
14280                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14281                 if eval $compile; then
14282                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14283                         val="$define"
14284                         set d_old_pthread_create_joinable
14285                         eval $setvar
14286                         val=PTHREAD_CREATE_UNDETACHED
14287                         set old_pthread_create_joinable
14288                         eval $setvar
14289                 else            
14290                         set try -DJOINABLE=__UNDETACHED
14291                         if eval $compile; then
14292                                 echo "You seem to use __UNDETACHED." >&4
14293                                 val="$define"
14294                                 set d_old_pthread_create_joinable
14295                                 eval $setvar
14296                                 val=__UNDETACHED
14297                                 set old_pthread_create_joinable
14298                                 eval $setvar
14299                         else
14300                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14301                                 val="$define"
14302                                 set d_old_pthread_create_joinable
14303                                 eval $setvar
14304                                 val=0
14305                                 set old_pthread_create_joinable
14306                                 eval $setvar
14307                         fi
14308                 fi
14309         fi
14310         $rm -f try try.*
14311 else
14312     d_old_pthread_create_joinable="$undef"
14313     old_pthread_create_joinable=""
14314 fi
14315
14316 : see if pause exists
14317 set pause d_pause
14318 eval $inlibc
14319
14320 : see if pipe exists
14321 set pipe d_pipe
14322 eval $inlibc
14323
14324 : see if poll exists
14325 set poll d_poll
14326 eval $inlibc
14327
14328 : see if readlink exists
14329 set readlink d_readlink
14330 eval $inlibc
14331
14332 echo " "
14333 procselfexe=''
14334 val="$undef"
14335 case "$d_readlink" in
14336 "$define")
14337         if $issymlink /proc/self/exe ; then
14338                 $ls -l /proc/self/exe > reflect
14339                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14340                         echo "You have Linux-like /proc/self/exe."
14341                         procselfexe='"/proc/self/exe"'
14342                         val="$define"
14343                 fi
14344         fi
14345         if $issymlink /proc/curproc/file ; then
14346                 $ls -l /proc/curproc/file > reflect
14347                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14348                         echo "You have BSD-like /proc/curproc/file."
14349                         procselfexe='"/proc/curproc/file"'
14350                         val="$define"
14351                 fi
14352         fi
14353         ;;
14354 esac
14355 $rm -f reflect
14356 set d_procselfexe
14357 eval $setvar
14358
14359 : see whether the pthread_atfork exists
14360 $cat >try.c <<EOP
14361 #include <pthread.h>
14362 #include <stdio.h>
14363 int main() {
14364 #ifdef  PTHREAD_ATFORK
14365         pthread_atfork(NULL,NULL,NULL);
14366 #endif
14367 }
14368 EOP
14369
14370 : see if pthread_atfork exists
14371 set try -DPTHREAD_ATFORK
14372 if eval $compile; then
14373     val="$define"
14374 else
14375     val="$undef"
14376 fi
14377 case "$usethreads" in
14378 $define)
14379         case "$val" in
14380         $define) echo 'pthread_atfork found.' >&4        ;;
14381         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14382         esac
14383 esac
14384 set d_pthread_atfork
14385 eval $setvar
14386
14387
14388 : see whether the various POSIXish _yields exist
14389 $cat >try.c <<EOP
14390 #include <pthread.h>
14391 #include <stdio.h>
14392 int main() {
14393 #ifdef SCHED_YIELD
14394         sched_yield();
14395 #else
14396 #ifdef PTHREAD_YIELD
14397         pthread_yield();
14398 #else
14399 #ifdef PTHREAD_YIELD_NULL
14400         pthread_yield(NULL);
14401 #endif
14402 #endif
14403 #endif
14404 }
14405 EOP
14406 : see if sched_yield exists
14407 set try -DSCHED_YIELD
14408 if eval $compile; then
14409     val="$define"
14410     sched_yield='sched_yield()'
14411 else
14412     val="$undef"
14413 fi
14414 case "$usethreads" in
14415 $define)
14416         case "$val" in
14417         $define) echo 'sched_yield() found.' >&4        ;;
14418         *)       echo 'sched_yield() NOT found.' >&4    ;;
14419         esac
14420 esac
14421 set d_sched_yield
14422 eval $setvar
14423
14424 : see if pthread_yield exists
14425 set try -DPTHREAD_YIELD
14426 if eval $compile; then
14427     val="$define"
14428     case "$sched_yield" in
14429     '') sched_yield='pthread_yield()' ;;
14430     esac
14431 else
14432     set try -DPTHREAD_YIELD_NULL
14433     if eval $compile; then
14434         val="$define"
14435         case "$sched_yield" in
14436         '') sched_yield='pthread_yield(NULL)' ;;
14437         esac
14438     else
14439         val="$undef"
14440     fi
14441 fi
14442 case "$usethreads" in
14443 $define)
14444         case "$val" in
14445         $define) echo 'pthread_yield() found.' >&4      ;;
14446         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14447         esac
14448         ;;
14449 esac
14450 set d_pthread_yield
14451 eval $setvar
14452
14453 case "$sched_yield" in
14454 '') sched_yield=undef ;;
14455 esac
14456
14457 $rm -f try try.*
14458
14459 : see if random_r exists
14460 set random_r d_random_r
14461 eval $inlibc
14462 case "$d_random_r" in
14463 "$define")
14464         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14465         case "$d_random_r_proto:$usethreads" in
14466         ":define")      d_random_r_proto=define
14467                 set d_random_r_proto random_r $hdrs
14468                 eval $hasproto ;;
14469         *)      ;;
14470         esac
14471         case "$d_random_r_proto" in
14472         define)
14473         case "$random_r_proto" in
14474         ''|0) try='int random_r(int*, struct random_data*);'
14475         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14476         esac
14477         case "$random_r_proto" in
14478         ''|0) try='int random_r(long*, struct random_data*);'
14479         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14480         esac
14481         case "$random_r_proto" in
14482         ''|0) try='int random_r(struct random_data*, int32_t*);'
14483         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14484         esac
14485         case "$random_r_proto" in
14486         ''|0)   d_random_r=undef
14487                 random_r_proto=0
14488                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14489         * )     case "$random_r_proto" in
14490                 REENTRANT_PROTO*) ;;
14491                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14492                 esac
14493                 echo "Prototype: $try" ;;
14494         esac
14495         ;;
14496         *)      case "$usethreads" in
14497                 define) echo "random_r has no prototype, not using it." >&4 ;;
14498                 esac
14499                 d_random_r=undef
14500                 random_r_proto=0
14501                 ;;
14502         esac
14503         ;;
14504 *)      random_r_proto=0
14505         ;;
14506 esac
14507
14508 : see if readdir and friends exist
14509 set readdir d_readdir
14510 eval $inlibc
14511 set seekdir d_seekdir
14512 eval $inlibc
14513 set telldir d_telldir
14514 eval $inlibc
14515 set rewinddir d_rewinddir
14516 eval $inlibc
14517
14518 : see if readdir64_r exists
14519 set readdir64_r d_readdir64_r
14520 eval $inlibc
14521 case "$d_readdir64_r" in
14522 "$define")
14523         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14524         case "$d_readdir64_r_proto:$usethreads" in
14525         ":define")      d_readdir64_r_proto=define
14526                 set d_readdir64_r_proto readdir64_r $hdrs
14527                 eval $hasproto ;;
14528         *)      ;;
14529         esac
14530         case "$d_readdir64_r_proto" in
14531         define)
14532         case "$readdir64_r_proto" in
14533         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14534         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14535         esac
14536         case "$readdir64_r_proto" in
14537         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14538         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14539         esac
14540         case "$readdir64_r_proto" in
14541         ''|0)   d_readdir64_r=undef
14542                 readdir64_r_proto=0
14543                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14544         * )     case "$readdir64_r_proto" in
14545                 REENTRANT_PROTO*) ;;
14546                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14547                 esac
14548                 echo "Prototype: $try" ;;
14549         esac
14550         ;;
14551         *)      case "$usethreads" in
14552                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14553                 esac
14554                 d_readdir64_r=undef
14555                 readdir64_r_proto=0
14556                 ;;
14557         esac
14558         ;;
14559 *)      readdir64_r_proto=0
14560         ;;
14561 esac
14562
14563 : see if readdir_r exists
14564 set readdir_r d_readdir_r
14565 eval $inlibc
14566 case "$d_readdir_r" in
14567 "$define")
14568         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14569         case "$d_readdir_r_proto:$usethreads" in
14570         ":define")      d_readdir_r_proto=define
14571                 set d_readdir_r_proto readdir_r $hdrs
14572                 eval $hasproto ;;
14573         *)      ;;
14574         esac
14575         case "$d_readdir_r_proto" in
14576         define)
14577         case "$readdir_r_proto" in
14578         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14579         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14580         esac
14581         case "$readdir_r_proto" in
14582         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14583         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14584         esac
14585         case "$readdir_r_proto" in
14586         ''|0)   d_readdir_r=undef
14587                 readdir_r_proto=0
14588                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14589         * )     case "$readdir_r_proto" in
14590                 REENTRANT_PROTO*) ;;
14591                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14592                 esac
14593                 echo "Prototype: $try" ;;
14594         esac
14595         ;;
14596         *)      case "$usethreads" in
14597                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14598                 esac
14599                 d_readdir_r=undef
14600                 readdir_r_proto=0
14601                 ;;
14602         esac
14603         ;;
14604 *)      readdir_r_proto=0
14605         ;;
14606 esac
14607
14608 : see if readv exists
14609 set readv d_readv
14610 eval $inlibc
14611
14612 : see if recvmsg exists
14613 set recvmsg d_recvmsg
14614 eval $inlibc
14615
14616 : see if rename exists
14617 set rename d_rename
14618 eval $inlibc
14619
14620 : see if rmdir exists
14621 set rmdir d_rmdir
14622 eval $inlibc
14623
14624 : see if memory.h is available.
14625 val=''
14626 set memory.h val
14627 eval $inhdr
14628
14629 : See if it conflicts with string.h
14630 case "$val" in
14631 $define)
14632         case "$strings" in
14633         '') ;;
14634         *)
14635                 $cppstdin $cppflags $cppminus < $strings > mem.h
14636                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14637                         echo " "
14638                         echo "We won't be including <memory.h>."
14639                         val="$undef"
14640                 fi
14641                 $rm -f mem.h
14642                 ;;
14643         esac
14644 esac
14645 set i_memory
14646 eval $setvar
14647
14648 : can bcopy handle overlapping blocks?
14649 echo " "
14650 val="$undef"
14651 case "$d_memmove" in
14652 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14653 *)      case "$d_bcopy" in
14654         "$define")
14655                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14656                 $cat >try.c <<EOCP
14657 #$i_memory I_MEMORY
14658 #$i_stdlib I_STDLIB
14659 #$i_string I_STRING
14660 #$i_unistd I_UNISTD
14661 EOCP
14662         $cat >>try.c <<'EOCP'
14663 #include <stdio.h>
14664 #ifdef I_MEMORY
14665 #  include <memory.h>
14666 #endif
14667 #ifdef I_STDLIB
14668 #  include <stdlib.h>
14669 #endif
14670 #ifdef I_STRING
14671 #  include <string.h>
14672 #else
14673 #  include <strings.h>
14674 #endif
14675 #ifdef I_UNISTD
14676 #  include <unistd.h>  /* Needed for NetBSD */
14677 #endif
14678 int main()
14679 {
14680 char buf[128], abc[128];
14681 char *b;
14682 int len;
14683 int off;
14684 int align;
14685
14686 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14687    try to store the string in read-only memory. */
14688 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
14689
14690 for (align = 7; align >= 0; align--) {
14691         for (len = 36; len; len--) {
14692                 b = buf+align;
14693                 bcopy(abc, b, len);
14694                 for (off = 1; off <= len; off++) {
14695                         bcopy(b, b+off, len);
14696                         bcopy(b+off, b, len);
14697                         if (bcmp(b, abc, len))
14698                                 exit(1);
14699                 }
14700         }
14701 }
14702 exit(0);
14703 }
14704 EOCP
14705                 set try
14706                 if eval $compile_ok; then
14707                         if ./try 2>/dev/null; then
14708                                 echo "Yes, it can."
14709                                 val="$define"
14710                         else
14711                                 echo "It can't, sorry."
14712                         fi
14713                 else
14714                         echo "(I can't compile the test program, so we'll assume not...)"
14715                 fi
14716                 ;;
14717         esac
14718         $rm -f try.* try core
14719         ;;
14720 esac
14721 set d_safebcpy
14722 eval $setvar
14723
14724 : can memcpy handle overlapping blocks?
14725 echo " "
14726 val="$undef"
14727 case "$d_memmove" in
14728 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
14729 *)      case "$d_memcpy" in
14730         "$define")
14731                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
14732                 $cat >try.c <<EOCP
14733 #$i_memory I_MEMORY
14734 #$i_stdlib I_STDLIB
14735 #$i_string I_STRING
14736 #$i_unistd I_UNISTD
14737 EOCP
14738         $cat >>try.c <<'EOCP'
14739 #include <stdio.h>
14740 #ifdef I_MEMORY
14741 #  include <memory.h>
14742 #endif
14743 #ifdef I_STDLIB
14744 #  include <stdlib.h>
14745 #endif
14746 #ifdef I_STRING
14747 #  include <string.h>
14748 #else
14749 #  include <strings.h>
14750 #endif
14751 #ifdef I_UNISTD
14752 #  include <unistd.h>  /* Needed for NetBSD */
14753 #endif
14754 int main()
14755 {
14756 char buf[128], abc[128];
14757 char *b;
14758 int len;
14759 int off;
14760 int align;
14761
14762 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14763    try to store the string in read-only memory. */
14764 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
14765
14766 for (align = 7; align >= 0; align--) {
14767         for (len = 36; len; len--) {
14768                 b = buf+align;
14769                 memcpy(b, abc, len);
14770                 for (off = 1; off <= len; off++) {
14771                         memcpy(b+off, b, len);
14772                         memcpy(b, b+off, len);
14773                         if (memcmp(b, abc, len))
14774                                 exit(1);
14775                 }
14776         }
14777 }
14778 exit(0);
14779 }
14780 EOCP
14781                 set try
14782                 if eval $compile_ok; then
14783                         if ./try 2>/dev/null; then
14784                                 echo "Yes, it can."
14785                                 val="$define"
14786                         else
14787                                 echo "It can't, sorry."
14788                         fi
14789                 else
14790                         echo "(I can't compile the test program, so we'll assume not...)"
14791                 fi
14792                 ;;
14793         esac
14794         $rm -f try.* try core
14795         ;;
14796 esac
14797 set d_safemcpy
14798 eval $setvar
14799
14800 : can memcmp be trusted to compare relative magnitude?
14801 val="$undef"
14802 case "$d_memcmp" in
14803 "$define")
14804         echo " "
14805         echo "Checking if your memcmp() can compare relative magnitude..." >&4
14806         $cat >try.c <<EOCP
14807 #$i_memory I_MEMORY
14808 #$i_stdlib I_STDLIB
14809 #$i_string I_STRING
14810 #$i_unistd I_UNISTD
14811 EOCP
14812         $cat >>try.c <<'EOCP'
14813 #include <stdio.h>
14814 #ifdef I_MEMORY
14815 #  include <memory.h>
14816 #endif
14817 #ifdef I_STDLIB
14818 #  include <stdlib.h>
14819 #endif
14820 #ifdef I_STRING
14821 #  include <string.h>
14822 #else
14823 #  include <strings.h>
14824 #endif
14825 #ifdef I_UNISTD
14826 #  include <unistd.h>  /* Needed for NetBSD */
14827 #endif
14828 int main()
14829 {
14830 char a = -1;
14831 char b = 0;
14832 if ((a < b) && memcmp(&a, &b, 1) < 0)
14833         exit(1);
14834 exit(0);
14835 }
14836 EOCP
14837         set try
14838         if eval $compile_ok; then
14839                 if $run ./try 2>/dev/null; then
14840                         echo "Yes, it can."
14841                         val="$define"
14842                 else
14843                         echo "No, it can't (it uses signed chars)."
14844                 fi
14845         else
14846                 echo "(I can't compile the test program, so we'll assume not...)"
14847         fi
14848         ;;
14849 esac
14850 $rm -f try.* try core
14851 set d_sanemcmp
14852 eval $setvar
14853
14854 : see if prototype for sbrk is available
14855 echo " "
14856 set d_sbrkproto sbrk $i_unistd unistd.h
14857 eval $hasproto
14858
14859 : see if scalbnl exists
14860 set scalbnl d_scalbnl
14861 eval $inlibc
14862
14863 : see if select exists
14864 set select d_select
14865 eval $inlibc
14866
14867 : see if semctl exists
14868 set semctl d_semctl
14869 eval $inlibc
14870
14871 : see if semget exists
14872 set semget d_semget
14873 eval $inlibc
14874
14875 : see if semop exists
14876 set semop d_semop
14877 eval $inlibc
14878
14879 : see how much of the 'sem*(2)' library is present.
14880 h_sem=true
14881 echo " "
14882 case "$d_semctl$d_semget$d_semop" in
14883 *"$undef"*) h_sem=false;;
14884 esac
14885 case "$osname" in
14886 freebsd)
14887     case "`ipcs 2>&1`" in
14888     "SVID messages"*"not configured"*)
14889         echo "Your $osname does not have the sem*(2) configured." >&4
14890         h_sem=false
14891         val="$undef"
14892         set semctl d_semctl
14893         eval $setvar
14894         set semget d_semget
14895         eval $setvar
14896         set semop d_semop
14897         eval $setvar
14898         ;;
14899     esac
14900     ;;
14901 esac
14902 : we could also check for sys/ipc.h ...
14903 if $h_sem && $test `./findhdr sys/sem.h`; then
14904         echo "You have the full sem*(2) library." >&4
14905         val="$define"
14906 else
14907         echo "You don't have the full sem*(2) library." >&4
14908         val="$undef"
14909 fi
14910 set d_sem
14911 eval $setvar
14912
14913 : see whether sys/sem.h defines union semun
14914 echo " "
14915 $cat > try.c <<'END'
14916 #include <sys/types.h>
14917 #include <sys/ipc.h>
14918 #include <sys/sem.h>
14919 int main () { union semun semun; semun.buf = 0; }
14920 END
14921 set try
14922 if eval $compile; then
14923     echo "You have union semun in <sys/sem.h>." >&4
14924     val="$define"
14925 else
14926     echo "You do not have union semun in <sys/sem.h>." >&4
14927     val="$undef"
14928 fi
14929 $rm -f try try.c try.h
14930 set d_union_semun
14931 eval $setvar
14932
14933 : see how to do semctl IPC_STAT
14934 case "$d_sem" in
14935 $define)
14936     : see whether semctl IPC_STAT can use union semun
14937     echo " "
14938     $cat > try.h <<END
14939 #ifndef S_IRUSR
14940 #   ifdef S_IREAD
14941 #       define S_IRUSR S_IREAD
14942 #       define S_IWUSR S_IWRITE
14943 #       define S_IXUSR S_IEXEC
14944 #   else
14945 #       define S_IRUSR 0400
14946 #       define S_IWUSR 0200
14947 #       define S_IXUSR 0100
14948 #   endif
14949 #   define S_IRGRP (S_IRUSR>>3)
14950 #   define S_IWGRP (S_IWUSR>>3)
14951 #   define S_IXGRP (S_IXUSR>>3)
14952 #   define S_IROTH (S_IRUSR>>6)
14953 #   define S_IWOTH (S_IWUSR>>6)
14954 #   define S_IXOTH (S_IXUSR>>6)
14955 #endif
14956 #ifndef S_IRWXU
14957 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
14958 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
14959 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
14960 #endif
14961 END
14962
14963     $cat > try.c <<END
14964 #include <sys/types.h>
14965 #include <sys/ipc.h>
14966 #include <sys/sem.h>
14967 #include <sys/stat.h>
14968 #include <stdio.h>
14969 #include <errno.h>
14970 #include "try.h"
14971 #ifndef errno
14972 extern int errno;
14973 #endif
14974 #$d_union_semun HAS_UNION_SEMUN
14975 int main() {
14976     union semun
14977 #ifndef HAS_UNION_SEMUN
14978     {
14979         int val;
14980         struct semid_ds *buf;
14981         unsigned short *array;
14982     }
14983 #endif
14984     arg;
14985     int sem, st;
14986
14987 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
14988     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14989     if (sem > -1) {
14990         struct semid_ds argbuf;
14991         arg.buf = &argbuf;
14992 #       ifdef IPC_STAT
14993         st = semctl(sem, 0, IPC_STAT, arg);
14994         if (st == 0)
14995             printf("semun\n");
14996         else
14997 #       endif /* IPC_STAT */
14998             printf("semctl IPC_STAT failed: errno = %d\n", errno);
14999 #       ifdef IPC_RMID
15000         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15001 #       endif /* IPC_RMID */
15002             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15003     } else
15004 #endif /* IPC_PRIVATE && ... */
15005         printf("semget failed: errno = %d\n", errno);
15006   return 0;
15007 }
15008 END
15009     val="$undef"
15010     set try
15011     if eval $compile; then
15012         xxx=`$run ./try`
15013         case "$xxx" in
15014         semun) val="$define" ;;
15015         esac
15016     fi
15017     $rm -f try try.c
15018     set d_semctl_semun
15019     eval $setvar
15020     case "$d_semctl_semun" in
15021     $define)
15022         echo "You can use union semun for semctl IPC_STAT." >&4
15023         also='also'
15024         ;;
15025     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15026         also=''
15027         ;;
15028     esac
15029
15030     : see whether semctl IPC_STAT can use struct semid_ds pointer
15031     $cat > try.c <<'END'
15032 #include <sys/types.h>
15033 #include <sys/ipc.h>
15034 #include <sys/sem.h>
15035 #include <sys/stat.h>
15036 #include "try.h"
15037 #include <stdio.h>
15038 #include <errno.h>
15039 #ifndef errno
15040 extern int errno;
15041 #endif
15042 int main() {
15043     struct semid_ds arg;
15044     int sem, st;
15045
15046 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15047     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15048     if (sem > -1) {
15049 #       ifdef IPC_STAT
15050         st = semctl(sem, 0, IPC_STAT, &arg);
15051         if (st == 0)
15052             printf("semid_ds\n");
15053         else
15054 #       endif /* IPC_STAT */
15055             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15056 #       ifdef IPC_RMID
15057         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15058 #       endif /* IPC_RMID */
15059             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15060     } else
15061 #endif /* IPC_PRIVATE && ... */
15062         printf("semget failed: errno = %d\n", errno);
15063
15064     return 0;
15065 }
15066 END
15067     val="$undef"
15068     set try
15069     if eval $compile; then
15070         xxx=`$run ./try`
15071         case "$xxx" in
15072         semid_ds) val="$define" ;;
15073         esac
15074     fi
15075     $rm -f try try.c
15076     set d_semctl_semid_ds
15077     eval $setvar
15078     case "$d_semctl_semid_ds" in
15079     $define)
15080         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15081         ;;
15082     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15083         ;;
15084     esac
15085     $rm -f try.h
15086     ;;
15087 *)  val="$undef"
15088
15089     # We do not have the full sem*(2) library, so assume we can not
15090     # use either.
15091
15092     set d_semctl_semun
15093     eval $setvar
15094
15095     set d_semctl_semid_ds
15096     eval $setvar
15097     ;;
15098 esac
15099
15100 : see if sendmsg exists
15101 set sendmsg d_sendmsg
15102 eval $inlibc
15103
15104 : see if setegid exists
15105 set setegid d_setegid
15106 eval $inlibc
15107
15108 : see if seteuid exists
15109 set seteuid d_seteuid
15110 eval $inlibc
15111
15112 : see if setgrent exists
15113 set setgrent d_setgrent
15114 eval $inlibc
15115
15116 : see if setgrent_r exists
15117 set setgrent_r d_setgrent_r
15118 eval $inlibc
15119 case "$d_setgrent_r" in
15120 "$define")
15121         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15122         case "$d_setgrent_r_proto:$usethreads" in
15123         ":define")      d_setgrent_r_proto=define
15124                 set d_setgrent_r_proto setgrent_r $hdrs
15125                 eval $hasproto ;;
15126         *)      ;;
15127         esac
15128         case "$d_setgrent_r_proto" in
15129         define)
15130         case "$setgrent_r_proto" in
15131         ''|0) try='int setgrent_r(FILE**);'
15132         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15133         esac
15134         case "$setgrent_r_proto" in
15135         ''|0) try='void setgrent_r(FILE**);'
15136         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15137         esac
15138         case "$setgrent_r_proto" in
15139         ''|0)   d_setgrent_r=undef
15140                 setgrent_r_proto=0
15141                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15142         * )     case "$setgrent_r_proto" in
15143                 REENTRANT_PROTO*) ;;
15144                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15145                 esac
15146                 echo "Prototype: $try" ;;
15147         esac
15148         ;;
15149         *)      case "$usethreads" in
15150                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15151                 esac
15152                 d_setgrent_r=undef
15153                 setgrent_r_proto=0
15154                 ;;
15155         esac
15156         ;;
15157 *)      setgrent_r_proto=0
15158         ;;
15159 esac
15160
15161 : see if sethostent exists
15162 set sethostent d_sethent
15163 eval $inlibc
15164
15165 : see if sethostent_r exists
15166 set sethostent_r d_sethostent_r
15167 eval $inlibc
15168 case "$d_sethostent_r" in
15169 "$define")
15170         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15171         case "$d_sethostent_r_proto:$usethreads" in
15172         ":define")      d_sethostent_r_proto=define
15173                 set d_sethostent_r_proto sethostent_r $hdrs
15174                 eval $hasproto ;;
15175         *)      ;;
15176         esac
15177         case "$d_sethostent_r_proto" in
15178         define)
15179         case "$sethostent_r_proto" in
15180         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15181         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15182         esac
15183         case "$sethostent_r_proto" in
15184         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15185         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15186         esac
15187         case "$sethostent_r_proto" in
15188         ''|0)   d_sethostent_r=undef
15189                 sethostent_r_proto=0
15190                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15191         * )     case "$sethostent_r_proto" in
15192                 REENTRANT_PROTO*) ;;
15193                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15194                 esac
15195                 echo "Prototype: $try" ;;
15196         esac
15197         ;;
15198         *)      case "$usethreads" in
15199                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15200                 esac
15201                 d_sethostent_r=undef
15202                 sethostent_r_proto=0
15203                 ;;
15204         esac
15205         ;;
15206 *)      sethostent_r_proto=0
15207         ;;
15208 esac
15209
15210 : see if setitimer exists
15211 set setitimer d_setitimer
15212 eval $inlibc
15213
15214 : see if setlinebuf exists
15215 set setlinebuf d_setlinebuf
15216 eval $inlibc
15217
15218 : see if setlocale exists
15219 set setlocale d_setlocale
15220 eval $inlibc
15221
15222 : see if locale.h is available
15223 set locale.h i_locale
15224 eval $inhdr
15225
15226 : see if setlocale_r exists
15227 set setlocale_r d_setlocale_r
15228 eval $inlibc
15229 case "$d_setlocale_r" in
15230 "$define")
15231         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15232         case "$d_setlocale_r_proto:$usethreads" in
15233         ":define")      d_setlocale_r_proto=define
15234                 set d_setlocale_r_proto setlocale_r $hdrs
15235                 eval $hasproto ;;
15236         *)      ;;
15237         esac
15238         case "$d_setlocale_r_proto" in
15239         define)
15240         case "$setlocale_r_proto" in
15241         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15242         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15243         esac
15244         case "$setlocale_r_proto" in
15245         ''|0)   d_setlocale_r=undef
15246                 setlocale_r_proto=0
15247                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15248         * )     case "$setlocale_r_proto" in
15249                 REENTRANT_PROTO*) ;;
15250                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15251                 esac
15252                 echo "Prototype: $try" ;;
15253         esac
15254         ;;
15255         *)      case "$usethreads" in
15256                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15257                 esac
15258                 d_setlocale_r=undef
15259                 setlocale_r_proto=0
15260                 ;;
15261         esac
15262         ;;
15263 *)      setlocale_r_proto=0
15264         ;;
15265 esac
15266
15267 : see if setnetent exists
15268 set setnetent d_setnent
15269 eval $inlibc
15270
15271 : see if setnetent_r exists
15272 set setnetent_r d_setnetent_r
15273 eval $inlibc
15274 case "$d_setnetent_r" in
15275 "$define")
15276         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15277         case "$d_setnetent_r_proto:$usethreads" in
15278         ":define")      d_setnetent_r_proto=define
15279                 set d_setnetent_r_proto setnetent_r $hdrs
15280                 eval $hasproto ;;
15281         *)      ;;
15282         esac
15283         case "$d_setnetent_r_proto" in
15284         define)
15285         case "$setnetent_r_proto" in
15286         ''|0) try='int setnetent_r(int, struct netent_data*);'
15287         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15288         esac
15289         case "$setnetent_r_proto" in
15290         ''|0) try='void setnetent_r(int, struct netent_data*);'
15291         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15292         esac
15293         case "$setnetent_r_proto" in
15294         ''|0)   d_setnetent_r=undef
15295                 setnetent_r_proto=0
15296                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15297         * )     case "$setnetent_r_proto" in
15298                 REENTRANT_PROTO*) ;;
15299                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15300                 esac
15301                 echo "Prototype: $try" ;;
15302         esac
15303         ;;
15304         *)      case "$usethreads" in
15305                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15306                 esac
15307                 d_setnetent_r=undef
15308                 setnetent_r_proto=0
15309                 ;;
15310         esac
15311         ;;
15312 *)      setnetent_r_proto=0
15313         ;;
15314 esac
15315
15316 : see if setprotoent exists
15317 set setprotoent d_setpent
15318 eval $inlibc
15319
15320 : see if setpgid exists
15321 set setpgid d_setpgid
15322 eval $inlibc
15323
15324 : see if setpgrp2 exists
15325 set setpgrp2 d_setpgrp2
15326 eval $inlibc
15327
15328 : see if setpriority exists
15329 set setpriority d_setprior
15330 eval $inlibc
15331
15332 : see if setproctitle exists
15333 set setproctitle d_setproctitle
15334 eval $inlibc
15335
15336 : see if setprotoent_r exists
15337 set setprotoent_r d_setprotoent_r
15338 eval $inlibc
15339 case "$d_setprotoent_r" in
15340 "$define")
15341         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15342         case "$d_setprotoent_r_proto:$usethreads" in
15343         ":define")      d_setprotoent_r_proto=define
15344                 set d_setprotoent_r_proto setprotoent_r $hdrs
15345                 eval $hasproto ;;
15346         *)      ;;
15347         esac
15348         case "$d_setprotoent_r_proto" in
15349         define)
15350         case "$setprotoent_r_proto" in
15351         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15352         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15353         esac
15354         case "$setprotoent_r_proto" in
15355         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15356         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15357         esac
15358         case "$setprotoent_r_proto" in
15359         ''|0)   d_setprotoent_r=undef
15360                 setprotoent_r_proto=0
15361                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15362         * )     case "$setprotoent_r_proto" in
15363                 REENTRANT_PROTO*) ;;
15364                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15365                 esac
15366                 echo "Prototype: $try" ;;
15367         esac
15368         ;;
15369         *)      case "$usethreads" in
15370                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15371                 esac
15372                 d_setprotoent_r=undef
15373                 setprotoent_r_proto=0
15374                 ;;
15375         esac
15376         ;;
15377 *)      setprotoent_r_proto=0
15378         ;;
15379 esac
15380
15381 : see if setpwent exists
15382 set setpwent d_setpwent
15383 eval $inlibc
15384
15385 : see if setpwent_r exists
15386 set setpwent_r d_setpwent_r
15387 eval $inlibc
15388 case "$d_setpwent_r" in
15389 "$define")
15390         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15391         case "$d_setpwent_r_proto:$usethreads" in
15392         ":define")      d_setpwent_r_proto=define
15393                 set d_setpwent_r_proto setpwent_r $hdrs
15394                 eval $hasproto ;;
15395         *)      ;;
15396         esac
15397         case "$d_setpwent_r_proto" in
15398         define)
15399         case "$setpwent_r_proto" in
15400         ''|0) try='int setpwent_r(FILE**);'
15401         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15402         esac
15403         case "$setpwent_r_proto" in
15404         ''|0) try='void setpwent_r(FILE**);'
15405         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15406         esac
15407         case "$setpwent_r_proto" in
15408         ''|0)   d_setpwent_r=undef
15409                 setpwent_r_proto=0
15410                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15411         * )     case "$setpwent_r_proto" in
15412                 REENTRANT_PROTO*) ;;
15413                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15414                 esac
15415                 echo "Prototype: $try" ;;
15416         esac
15417         ;;
15418         *)      case "$usethreads" in
15419                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15420                 esac
15421                 d_setpwent_r=undef
15422                 setpwent_r_proto=0
15423                 ;;
15424         esac
15425         ;;
15426 *)      setpwent_r_proto=0
15427         ;;
15428 esac
15429
15430 : see if setregid exists
15431 set setregid d_setregid
15432 eval $inlibc
15433 set setresgid d_setresgid
15434 eval $inlibc
15435
15436 : see if setreuid exists
15437 set setreuid d_setreuid
15438 eval $inlibc
15439 set setresuid d_setresuid
15440 eval $inlibc
15441
15442 : see if setrgid exists
15443 set setrgid d_setrgid
15444 eval $inlibc
15445
15446 : see if setruid exists
15447 set setruid d_setruid
15448 eval $inlibc
15449
15450 : see if setservent exists
15451 set setservent d_setsent
15452 eval $inlibc
15453
15454 : see if setservent_r exists
15455 set setservent_r d_setservent_r
15456 eval $inlibc
15457 case "$d_setservent_r" in
15458 "$define")
15459         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15460         case "$d_setservent_r_proto:$usethreads" in
15461         ":define")      d_setservent_r_proto=define
15462                 set d_setservent_r_proto setservent_r $hdrs
15463                 eval $hasproto ;;
15464         *)      ;;
15465         esac
15466         case "$d_setservent_r_proto" in
15467         define)
15468         case "$setservent_r_proto" in
15469         ''|0) try='int setservent_r(int, struct servent_data*);'
15470         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15471         esac
15472         case "$setservent_r_proto" in
15473         ''|0) try='void setservent_r(int, struct servent_data*);'
15474         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15475         esac
15476         case "$setservent_r_proto" in
15477         ''|0)   d_setservent_r=undef
15478                 setservent_r_proto=0
15479                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15480         * )     case "$setservent_r_proto" in
15481                 REENTRANT_PROTO*) ;;
15482                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15483                 esac
15484                 echo "Prototype: $try" ;;
15485         esac
15486         ;;
15487         *)      case "$usethreads" in
15488                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15489                 esac
15490                 d_setservent_r=undef
15491                 setservent_r_proto=0
15492                 ;;
15493         esac
15494         ;;
15495 *)      setservent_r_proto=0
15496         ;;
15497 esac
15498
15499 : see if setsid exists
15500 set setsid d_setsid
15501 eval $inlibc
15502
15503 : see if setvbuf exists
15504 set setvbuf d_setvbuf
15505 eval $inlibc
15506
15507 : see if sfio.h is available
15508 set sfio.h i_sfio
15509 eval $inhdr
15510
15511
15512 : see if sfio library is available
15513 case "$i_sfio" in
15514 $define)
15515         val=''
15516         set sfreserve val
15517         eval $inlibc
15518         ;;
15519 *)
15520         val="$undef"
15521         ;;
15522 esac
15523 : Ok, but do we want to use it.
15524 case "$val" in
15525 $define)
15526         case "$usesfio" in
15527         true|$define|[yY]*) dflt='y';;
15528         *) dflt='n';;
15529         esac
15530         echo "$package can use the sfio library, but it is experimental."
15531         case "$useperlio" in
15532         "$undef")
15533             echo "For sfio also the PerlIO abstraction layer is needed."
15534             echo "Earlier you said you wouldn't want that."
15535             ;;
15536         esac
15537         rp="You seem to have sfio available, do you want to try using it?"
15538         . ./myread
15539         case "$ans" in
15540         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15541                 useperlio="$define"
15542                 val="$define"
15543                 ;;
15544         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15545                 val="$undef"
15546                 ;;
15547         esac
15548         ;;
15549 *)      case "$usesfio" in
15550         true|$define|[yY]*)
15551                 echo "Sorry, cannot find sfio on this machine." >&4
15552                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15553                 val="$undef"
15554                 ;;
15555         esac
15556         ;;
15557 esac
15558 set d_sfio
15559 eval $setvar
15560 case "$d_sfio" in
15561 $define) usesfio='true';;
15562 *) usesfio='false';;
15563 esac
15564 case "$d_sfio" in
15565 $define) ;;
15566 *)      : Remove sfio from list of libraries to use
15567         case "$libs" in
15568         *-lsfio*)
15569                 echo "Removing unneeded -lsfio from library list" >&4
15570                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15571                 shift
15572                 libs="$*"
15573                 echo "libs = $libs" >&4
15574                 ;;
15575         esac
15576 ;;
15577 esac
15578
15579
15580 : see if shmctl exists
15581 set shmctl d_shmctl
15582 eval $inlibc
15583
15584 : see if shmget exists
15585 set shmget d_shmget
15586 eval $inlibc
15587
15588 : see if shmat exists
15589 set shmat d_shmat
15590 eval $inlibc
15591 : see what shmat returns
15592 case "$d_shmat" in
15593 "$define")
15594         $cat >shmat.c <<'END'
15595 #include <sys/shm.h>
15596 void *shmat();
15597 END
15598         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15599                 shmattype='void *'
15600         else
15601                 shmattype='char *'
15602         fi
15603         echo "and it returns ($shmattype)." >&4
15604         : see if a prototype for shmat is available
15605         xxx=`./findhdr sys/shm.h`
15606         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15607         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15608                 val="$define"
15609         else
15610                 val="$undef"
15611         fi
15612         $rm -f shmat.[co]
15613         ;;
15614 *)
15615         val="$undef"
15616         ;;
15617 esac
15618 set d_shmatprototype
15619 eval $setvar
15620
15621 : see if shmdt exists
15622 set shmdt d_shmdt
15623 eval $inlibc
15624
15625 : see how much of the 'shm*(2)' library is present.
15626 h_shm=true
15627 echo " "
15628 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15629 *"$undef"*) h_shm=false;;
15630 esac
15631 case "$osname" in
15632 freebsd)
15633     case "`ipcs 2>&1`" in
15634     "SVID shared memory"*"not configured"*)
15635         echo "Your $osname does not have the shm*(2) configured." >&4
15636         h_shm=false
15637         val="$undef"
15638         set shmctl d_shmctl
15639         evat $setvar
15640         set shmget d_shmget
15641         evat $setvar
15642         set shmat d_shmat
15643         evat $setvar
15644         set shmdt d_shmdt
15645         evat $setvar
15646         ;;
15647     esac
15648     ;;
15649 esac
15650 : we could also check for sys/ipc.h ...
15651 if $h_shm && $test `./findhdr sys/shm.h`; then
15652         echo "You have the full shm*(2) library." >&4
15653         val="$define"
15654 else
15655         echo "You don't have the full shm*(2) library." >&4
15656         val="$undef"
15657 fi
15658 set d_shm
15659 eval $setvar
15660
15661 echo " "
15662 : see if we have sigaction
15663 if set sigaction val -f d_sigaction; eval $csym; $val; then
15664         echo 'sigaction() found.' >&4
15665         $cat > try.c <<EOP
15666 #include <stdio.h>
15667 #include <sys/types.h>
15668 #include <signal.h>
15669 #$i_stdlib I_STDLIB
15670 #ifdef I_STDLIB
15671 #include <stdlib.h>
15672 #endif
15673 int main()
15674 {
15675     struct sigaction act, oact;
15676     act.sa_flags = 0;
15677     oact.sa_handler = 0;
15678     /* so that act and oact are used */
15679     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
15680 }
15681 EOP
15682         set try
15683         if eval $compile_ok; then
15684                 val="$define"
15685         else
15686                 echo "But you don't seem to have a useable struct sigaction." >&4
15687                 val="$undef"
15688         fi
15689 else
15690         echo 'sigaction NOT found.' >&4
15691         val="$undef"
15692 fi
15693 set d_sigaction; eval $setvar
15694 $rm -f try try$_o try.c
15695
15696 : see if sigprocmask exists
15697 set sigprocmask d_sigprocmask
15698 eval $inlibc
15699
15700 : see if sigsetjmp exists
15701 echo " "
15702 case "$d_sigsetjmp" in
15703 '')
15704         $cat >try.c <<EOP
15705 #include <setjmp.h>
15706 #$i_stdlib I_STDLIB
15707 #ifdef I_STDLIB
15708 #include <stdlib.h>
15709 #endif
15710 sigjmp_buf env;
15711 int set = 1;
15712 int main()
15713 {
15714         if (sigsetjmp(env,1))
15715                 exit(set);
15716         set = 0;
15717         siglongjmp(env, 1);
15718         exit(1);
15719 }
15720 EOP
15721         set try
15722         if eval $compile; then
15723                 if $run ./try >/dev/null 2>&1; then
15724                         echo "POSIX sigsetjmp found." >&4
15725                         val="$define"
15726                 else
15727                         $cat >&4 <<EOM
15728 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
15729 I'll ignore them.
15730 EOM
15731                         val="$undef"
15732                 fi
15733         else
15734                 echo "sigsetjmp not found." >&4
15735                 val="$undef"
15736         fi
15737         ;;
15738 *) val="$d_sigsetjmp"
15739         case "$d_sigsetjmp" in
15740         $define) echo "POSIX sigsetjmp found." >&4;;
15741         $undef) echo "sigsetjmp not found." >&4;;
15742         esac
15743         ;;
15744 esac
15745 set d_sigsetjmp
15746 eval $setvar
15747 $rm -f try.c try
15748
15749 : see if sockatmark exists
15750 set sockatmark d_sockatmark
15751 eval $inlibc
15752
15753 : see if prototype for sockatmark is available
15754 echo " "
15755 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
15756 eval $hasproto
15757
15758 : see if socks5_init exists
15759 set socks5_init d_socks5_init
15760 eval $inlibc
15761
15762 : see if srand48_r exists
15763 set srand48_r d_srand48_r
15764 eval $inlibc
15765 case "$d_srand48_r" in
15766 "$define")
15767         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15768         case "$d_srand48_r_proto:$usethreads" in
15769         ":define")      d_srand48_r_proto=define
15770                 set d_srand48_r_proto srand48_r $hdrs
15771                 eval $hasproto ;;
15772         *)      ;;
15773         esac
15774         case "$d_srand48_r_proto" in
15775         define)
15776         case "$srand48_r_proto" in
15777         ''|0) try='int srand48_r(long, struct drand48_data*);'
15778         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
15779         esac
15780         case "$srand48_r_proto" in
15781         ''|0)   d_srand48_r=undef
15782                 srand48_r_proto=0
15783                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
15784         * )     case "$srand48_r_proto" in
15785                 REENTRANT_PROTO*) ;;
15786                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
15787                 esac
15788                 echo "Prototype: $try" ;;
15789         esac
15790         ;;
15791         *)      case "$usethreads" in
15792                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
15793                 esac
15794                 d_srand48_r=undef
15795                 srand48_r_proto=0
15796                 ;;
15797         esac
15798         ;;
15799 *)      srand48_r_proto=0
15800         ;;
15801 esac
15802
15803 : see if srandom_r exists
15804 set srandom_r d_srandom_r
15805 eval $inlibc
15806 case "$d_srandom_r" in
15807 "$define")
15808         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15809         case "$d_srandom_r_proto:$usethreads" in
15810         ":define")      d_srandom_r_proto=define
15811                 set d_srandom_r_proto srandom_r $hdrs
15812                 eval $hasproto ;;
15813         *)      ;;
15814         esac
15815         case "$d_srandom_r_proto" in
15816         define)
15817         case "$srandom_r_proto" in
15818         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
15819         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
15820         esac
15821         case "$srandom_r_proto" in
15822         ''|0)   d_srandom_r=undef
15823                 srandom_r_proto=0
15824                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
15825         * )     case "$srandom_r_proto" in
15826                 REENTRANT_PROTO*) ;;
15827                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
15828                 esac
15829                 echo "Prototype: $try" ;;
15830         esac
15831         ;;
15832         *)      case "$usethreads" in
15833                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
15834                 esac
15835                 d_srandom_r=undef
15836                 srandom_r_proto=0
15837                 ;;
15838         esac
15839         ;;
15840 *)      srandom_r_proto=0
15841         ;;
15842 esac
15843
15844 : see if prototype for setresgid is available
15845 echo " "
15846 set d_sresgproto setresgid $i_unistd unistd.h
15847 eval $hasproto
15848
15849 : see if prototype for setresuid is available
15850 echo " "
15851 set d_sresuproto setresuid $i_unistd unistd.h
15852 eval $hasproto
15853
15854 : see if sys/stat.h is available
15855 set sys/stat.h i_sysstat
15856 eval $inhdr
15857
15858
15859 : see if stat knows about block sizes
15860 echo " "
15861 echo "Checking to see if your struct stat has st_blocks field..." >&4
15862 set d_statblks stat st_blocks $i_sysstat sys/stat.h
15863 eval $hasfield
15864
15865
15866 : see if this is a sys/vfs.h system
15867 set sys/vfs.h i_sysvfs
15868 eval $inhdr
15869
15870
15871 : see if this is a sys/statfs.h system
15872 set sys/statfs.h i_sysstatfs
15873 eval $inhdr
15874
15875
15876 echo " "
15877 echo "Checking to see if your system supports struct statfs..." >&4
15878 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
15879 eval $hasstruct
15880 case "$d_statfs_s" in
15881 "$define")      echo "Yes, it does."   ;;
15882 *)              echo "No, it doesn't." ;;
15883 esac
15884
15885
15886
15887 : see if struct statfs knows about f_flags
15888 case "$d_statfs_s" in
15889 define) 
15890         echo " "
15891         echo "Checking to see if your struct statfs has f_flags field..." >&4
15892         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
15893         eval $hasfield
15894         ;;
15895 *)      val="$undef"
15896         set d_statfs_f_flags
15897         eval $setvar
15898         ;;
15899 esac
15900 case "$d_statfs_f_flags" in
15901 "$define")      echo "Yes, it does."   ;;
15902 *)              echo "No, it doesn't." ;;
15903 esac
15904
15905 : see if _ptr and _cnt from stdio act std
15906 echo " "
15907
15908 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
15909         echo "(Looks like you have stdio.h from BSD.)"
15910         case "$stdio_ptr" in
15911         '') stdio_ptr='((fp)->_p)'
15912                 ptr_lval=$define
15913                 ;;
15914         *)      ptr_lval=$d_stdio_ptr_lval;;
15915         esac
15916         case "$stdio_cnt" in
15917         '') stdio_cnt='((fp)->_r)'
15918                 cnt_lval=$define
15919                 ;;
15920         *)      cnt_lval=$d_stdio_cnt_lval;;
15921         esac
15922         case "$stdio_base" in
15923         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
15924         esac
15925         case "$stdio_bufsiz" in
15926         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
15927         esac
15928 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
15929         echo "(Looks like you have stdio.h from Linux.)"
15930         case "$stdio_ptr" in
15931         '') stdio_ptr='((fp)->_IO_read_ptr)'
15932                 ptr_lval=$define
15933                 ;;
15934         *)      ptr_lval=$d_stdio_ptr_lval;;
15935         esac
15936         case "$stdio_cnt" in
15937         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
15938                 cnt_lval=$undef
15939                 ;;
15940         *)      cnt_lval=$d_stdio_cnt_lval;;
15941         esac
15942         case "$stdio_base" in
15943         '') stdio_base='((fp)->_IO_read_base)';;
15944         esac
15945         case "$stdio_bufsiz" in
15946         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
15947         esac
15948 else
15949         case "$stdio_ptr" in
15950         '') stdio_ptr='((fp)->_ptr)'
15951                 ptr_lval=$define
15952                 ;;
15953         *)      ptr_lval=$d_stdio_ptr_lval;;
15954         esac
15955         case "$stdio_cnt" in
15956         '') stdio_cnt='((fp)->_cnt)'
15957                 cnt_lval=$define
15958                 ;;
15959         *)      cnt_lval=$d_stdio_cnt_lval;;
15960         esac
15961         case "$stdio_base" in
15962         '') stdio_base='((fp)->_base)';;
15963         esac
15964         case "$stdio_bufsiz" in
15965         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
15966         esac
15967 fi
15968
15969 : test whether _ptr and _cnt really work
15970 echo "Checking how std your stdio is..." >&4
15971 $cat >try.c <<EOP
15972 #include <stdio.h>
15973 #$i_stdlib I_STDLIB
15974 #ifdef I_STDLIB
15975 #include <stdlib.h>
15976 #endif
15977 #define FILE_ptr(fp)    $stdio_ptr
15978 #define FILE_cnt(fp)    $stdio_cnt
15979 int main() {
15980         FILE *fp = fopen("try.c", "r");
15981         char c = getc(fp);
15982         if (
15983                 18 <= FILE_cnt(fp) &&
15984                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15985         )
15986                 exit(0);
15987         exit(1);
15988 }
15989 EOP
15990 val="$undef"
15991 set try
15992 if eval $compile && $to try.c; then
15993         if $run ./try; then
15994                 echo "Your stdio acts pretty std."
15995                 val="$define"
15996         else
15997                 echo "Your stdio isn't very std."
15998         fi
15999 else
16000         echo "Your stdio doesn't appear very std."
16001 fi
16002 $rm -f try.c try
16003
16004 # glibc 2.2.90 and above apparently change stdio streams so Perl's
16005 # direct buffer manipulation no longer works.  The Configure tests
16006 # should be changed to correctly detect this, but until then,
16007 # the following check should at least let perl compile and run.
16008 # (This quick fix should be updated before 5.8.1.)
16009 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
16010 # A. Dougherty, June 3, 2002.
16011 case "$d_gnulibc" in
16012 $define)
16013         case "$gnulibc_version" in
16014         2.[01]*)  ;;
16015         2.2) ;;
16016         2.2.[0-9]) ;;
16017         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
16018                 val="$undef"
16019                 ;;
16020         esac
16021         ;;
16022 esac
16023 set d_stdstdio
16024 eval $setvar
16025
16026 : Can _ptr be used as an lvalue?
16027 case "$d_stdstdio$ptr_lval" in
16028 $define$define) val=$define ;;
16029 *) val=$undef ;;
16030 esac
16031 set d_stdio_ptr_lval
16032 eval $setvar
16033
16034 : Can _cnt be used as an lvalue?
16035 case "$d_stdstdio$cnt_lval" in
16036 $define$define) val=$define ;;
16037 *) val=$undef ;;
16038 esac
16039 set d_stdio_cnt_lval
16040 eval $setvar
16041
16042
16043 : test whether setting _ptr sets _cnt as a side effect
16044 d_stdio_ptr_lval_sets_cnt="$undef"
16045 d_stdio_ptr_lval_nochange_cnt="$undef"
16046 case "$d_stdio_ptr_lval$d_stdstdio" in
16047 $define$define)
16048         echo "Checking to see what happens if we set the stdio ptr..." >&4
16049 $cat >try.c <<EOP
16050 #include <stdio.h>
16051 /* Can we scream? */
16052 /* Eat dust sed :-) */
16053 /* In the buffer space, no one can hear you scream. */
16054 #$i_stdlib I_STDLIB
16055 #ifdef I_STDLIB
16056 #include <stdlib.h>
16057 #endif
16058 #define FILE_ptr(fp)    $stdio_ptr
16059 #define FILE_cnt(fp)    $stdio_cnt
16060 #include <sys/types.h>
16061 int main() {
16062         FILE *fp = fopen("try.c", "r");
16063         int c;
16064         char *ptr;
16065         size_t cnt;
16066         if (!fp) {
16067             puts("Fail even to read");
16068             exit(1);
16069         }
16070         c = getc(fp); /* Read away the first # */
16071         if (c == EOF) {
16072             puts("Fail even to read");
16073             exit(1);
16074         }
16075         if (!(
16076                 18 <= FILE_cnt(fp) &&
16077                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
16078         )) {
16079                 puts("Fail even to read");
16080                 exit (1);
16081         }
16082         ptr = (char*) FILE_ptr(fp);
16083         cnt = (size_t)FILE_cnt(fp);
16084
16085         FILE_ptr(fp) += 42;
16086
16087         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
16088                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
16089                 exit (1);
16090         }
16091         if (FILE_cnt(fp) <= 20) {
16092                 printf ("Fail (<20 chars to test)");
16093                 exit (1);
16094         }
16095         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
16096                 puts("Fail compare");
16097                 exit (1);
16098         }
16099         if (cnt == FILE_cnt(fp)) {
16100                 puts("Pass_unchanged");
16101                 exit (0);
16102         }       
16103         if (FILE_cnt(fp) == (cnt - 42)) {
16104                 puts("Pass_changed");
16105                 exit (0);
16106         }
16107         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
16108         return 1;
16109
16110 }
16111 EOP
16112         set try
16113         if eval $compile && $to try.c; then
16114                 case `$run ./try` in
16115                 Pass_changed)
16116                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
16117                         d_stdio_ptr_lval_sets_cnt="$define" ;;
16118                 Pass_unchanged)
16119                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
16120                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
16121                 Fail*)
16122                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
16123                 *)
16124                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
16125         esac
16126         else
16127                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
16128         fi
16129         $rm -f try.c try
16130         ;;
16131 esac
16132
16133 : see if _base is also standard
16134 val="$undef"
16135 case "$d_stdstdio" in
16136 $define)
16137         $cat >try.c <<EOP
16138 #include <stdio.h>
16139 #$i_stdlib I_STDLIB
16140 #ifdef I_STDLIB
16141 #include <stdlib.h>
16142 #endif
16143 #define FILE_base(fp)   $stdio_base
16144 #define FILE_bufsiz(fp) $stdio_bufsiz
16145 int main() {
16146         FILE *fp = fopen("try.c", "r");
16147         char c = getc(fp);
16148         if (
16149                 19 <= FILE_bufsiz(fp) &&
16150                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
16151         )
16152                 exit(0);
16153         exit(1);
16154 }
16155 EOP
16156         set try
16157         if eval $compile && $to try.c; then
16158                 if $run ./try; then
16159                         echo "And its _base field acts std."
16160                         val="$define"
16161                 else
16162                         echo "But its _base field isn't std."
16163                 fi
16164         else
16165                 echo "However, it seems to be lacking the _base field."
16166         fi
16167         $rm -f try.c try
16168         ;;
16169 esac
16170 set d_stdiobase
16171 eval $setvar
16172
16173 $cat >&4 <<EOM
16174 Checking how to access stdio streams by file descriptor number...
16175 EOM
16176 case "$stdio_stream_array" in
16177 '')     $cat >try.c <<EOCP
16178 #include <stdio.h>
16179 int main() {
16180   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16181     printf("yes\n");
16182 }
16183 EOCP
16184         for s in _iob __iob __sF
16185         do
16186                 set try -DSTDIO_STREAM_ARRAY=$s
16187                 if eval $compile; then
16188                         case "`$run ./try`" in
16189                         yes)    stdio_stream_array=$s; break ;;
16190                         esac
16191                 fi
16192         done
16193         $rm -f try.* try$exe_ext
16194 esac
16195 case "$stdio_stream_array" in
16196 '')     $cat >&4 <<EOM
16197 I can't figure out how to access stdio streams by file descriptor number.
16198 EOM
16199         d_stdio_stream_array="$undef"
16200         ;;
16201 *)      $cat >&4 <<EOM
16202 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16203 EOM
16204         d_stdio_stream_array="$define"
16205         ;;
16206 esac
16207
16208 : see if strcoll exists
16209 set strcoll d_strcoll
16210 eval $inlibc
16211
16212 : check for structure copying
16213 echo " "
16214 echo "Checking to see if your C compiler can copy structs..." >&4
16215 $cat >try.c <<'EOCP'
16216 int main()
16217 {
16218         struct blurfl {
16219                 int dyick;
16220         } foo, bar;
16221
16222         foo = bar;
16223 }
16224 EOCP
16225 if $cc -c try.c >/dev/null 2>&1 ; then
16226         val="$define"
16227         echo "Yup, it can."
16228 else
16229         val="$undef"
16230         echo "Nope, it can't."
16231 fi
16232 set d_strctcpy
16233 eval $setvar
16234 $rm -f try.*
16235
16236 : see if strerror and/or sys_errlist[] exist
16237 echo " "
16238 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16239     if set strerror val -f d_strerror; eval $csym; $val; then
16240                 echo 'strerror() found.' >&4
16241                 d_strerror="$define"
16242                 d_strerrm='strerror(e)'
16243                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16244                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16245                         d_syserrlst="$define"
16246                 else
16247                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16248                         d_syserrlst="$undef"
16249                 fi
16250     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16251                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16252                 echo 'strerror() found in string header.' >&4
16253                 d_strerror="$define"
16254                 d_strerrm='strerror(e)'
16255                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16256                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16257                                 d_syserrlst="$define"
16258                 else
16259                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16260                         d_syserrlst="$undef"
16261                 fi
16262     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16263                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16264                 d_strerror="$undef"
16265                 d_syserrlst="$define"
16266                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16267     else
16268                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16269                 d_strerror="$undef"
16270                 d_syserrlst="$undef"
16271                 d_strerrm='"unknown"'
16272     fi
16273 fi
16274
16275 : see if strerror_r exists
16276 set strerror_r d_strerror_r
16277 eval $inlibc
16278 case "$d_strerror_r" in
16279 "$define")
16280         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16281         case "$d_strerror_r_proto:$usethreads" in
16282         ":define")      d_strerror_r_proto=define
16283                 set d_strerror_r_proto strerror_r $hdrs
16284                 eval $hasproto ;;
16285         *)      ;;
16286         esac
16287         case "$d_strerror_r_proto" in
16288         define)
16289         case "$strerror_r_proto" in
16290         ''|0) try='int strerror_r(int, char*, size_t);'
16291         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16292         esac
16293         case "$strerror_r_proto" in
16294         ''|0) try='int strerror_r(int, char*, int);'
16295         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16296         esac
16297         case "$strerror_r_proto" in
16298         ''|0) try='char* strerror_r(int, char*, size_t);'
16299         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16300         esac
16301         case "$strerror_r_proto" in
16302         ''|0)   d_strerror_r=undef
16303                 strerror_r_proto=0
16304                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16305         * )     case "$strerror_r_proto" in
16306                 REENTRANT_PROTO*) ;;
16307                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16308                 esac
16309                 echo "Prototype: $try" ;;
16310         esac
16311         ;;
16312         *)      case "$usethreads" in
16313                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16314                 esac
16315                 d_strerror_r=undef
16316                 strerror_r_proto=0
16317                 ;;
16318         esac
16319         ;;
16320 *)      strerror_r_proto=0
16321         ;;
16322 esac
16323
16324 : see if strftime exists
16325 set strftime d_strftime
16326 eval $inlibc
16327
16328 : see if strtod exists
16329 set strtod d_strtod
16330 eval $inlibc
16331
16332 : see if strtol exists
16333 set strtol d_strtol
16334 eval $inlibc
16335
16336 : see if strtold exists
16337 set strtold d_strtold
16338 eval $inlibc
16339
16340 : see if strtoll exists
16341 set strtoll d_strtoll
16342 eval $inlibc
16343
16344 case "$d_longlong-$d_strtoll" in
16345 "$define-$define")
16346         $cat <<EOM
16347 Checking whether your strtoll() works okay...
16348 EOM
16349         $cat >try.c <<'EOCP'
16350 #include <errno.h>
16351 #ifdef __hpux
16352 #define strtoll __strtoll
16353 #endif
16354 #ifdef __EMX__
16355 #define strtoll _strtoll
16356 #endif
16357 #include <stdio.h>
16358 extern long long int strtoll(char *s, char **, int); 
16359 static int bad = 0;
16360 int check(char *s, long long ell, int een) {
16361         long long gll;
16362         errno = 0;
16363         gll = strtoll(s, 0, 10);
16364         if (!((gll == ell) && (errno == een)))
16365                 bad++;
16366 }
16367 int main() {
16368         check(" 1",                                      1LL, 0);
16369         check(" 0",                                      0LL, 0);
16370         check("-1",                                     -1LL, 0);
16371         check("-9223372036854775808", -9223372036854775808LL, 0);
16372         check("-9223372036854775808", -9223372036854775808LL, 0);
16373         check(" 9223372036854775807",  9223372036854775807LL, 0);
16374         check("-9223372036854775808", -9223372036854775808LL, 0);
16375         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16376         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16377         if (!bad)
16378                 printf("ok\n");
16379 }
16380 EOCP
16381         set try
16382         if eval $compile; then
16383                 yyy=`$run ./try`
16384                 case "$yyy" in
16385                 ok) echo "Your strtoll() seems to be working okay." ;;
16386                 *) cat <<EOM >&4
16387 Your strtoll() doesn't seem to be working okay.
16388 EOM
16389                    d_strtoll="$undef"
16390                    ;;
16391                 esac
16392         else
16393                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16394                 d_strtoll="$undef"
16395         fi
16396         ;;
16397 esac
16398
16399 : see if strtoq exists
16400 set strtoq d_strtoq
16401 eval $inlibc
16402
16403 : see if strtoul exists
16404 set strtoul d_strtoul
16405 eval $inlibc
16406
16407 case "$d_strtoul" in
16408 "$define")
16409         $cat <<EOM
16410 Checking whether your strtoul() works okay...
16411 EOM
16412         $cat >try.c <<'EOCP'
16413 #include <errno.h>
16414 #include <stdio.h>
16415 extern unsigned long int strtoul(char *s, char **, int); 
16416 static int bad = 0;
16417 void check(char *s, unsigned long eul, int een) {
16418         unsigned long gul;
16419         errno = 0;
16420         gul = strtoul(s, 0, 10);
16421         if (!((gul == eul) && (errno == een)))
16422                 bad++;
16423 }
16424 int main() {
16425         check(" 1", 1L, 0);
16426         check(" 0", 0L, 0);
16427 EOCP
16428         case "$longsize" in
16429         8)
16430             $cat >>try.c <<'EOCP'
16431         check("18446744073709551615", 18446744073709551615UL, 0);
16432         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16433 #if 0 /* strtoul() for /^-/ strings is undefined. */
16434         check("-1", 18446744073709551615UL, 0);
16435         check("-18446744073709551614", 2, 0);
16436         check("-18446744073709551615", 1, 0);
16437         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16438         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16439 #endif
16440 EOCP
16441                 ;;
16442         4)
16443                     $cat >>try.c <<'EOCP'
16444         check("4294967295", 4294967295UL, 0);
16445         check("4294967296", 4294967295UL, ERANGE);
16446 #if 0 /* strtoul() for /^-/ strings is undefined. */
16447         check("-1", 4294967295UL, 0);
16448         check("-4294967294", 2, 0);
16449         check("-4294967295", 1, 0);
16450         check("-4294967296", 4294967295UL, ERANGE);
16451         check("-4294967297", 4294967295UL, ERANGE);
16452 #endif
16453 EOCP
16454                 ;;
16455         *)
16456 : Should we write these tests to be more portable by sprintf-ing
16457 : ~0 and then manipulating that char string as input for strtol?
16458                 ;;
16459         esac
16460         $cat >>try.c <<'EOCP'
16461         if (!bad)
16462                 printf("ok\n");
16463         return 0;
16464 }
16465 EOCP
16466         set try
16467         if eval $compile; then
16468                 case "`$run ./try`" in
16469                 ok) echo "Your strtoul() seems to be working okay." ;;
16470                 *) cat <<EOM >&4
16471 Your strtoul() doesn't seem to be working okay.
16472 EOM
16473                    d_strtoul="$undef"
16474                    ;;
16475                 esac
16476         fi
16477         ;;
16478 esac
16479
16480 : see if strtoull exists
16481 set strtoull d_strtoull
16482 eval $inlibc
16483
16484 case "$d_longlong-$d_strtoull" in
16485 "$define-$define")
16486         $cat <<EOM
16487 Checking whether your strtoull() works okay...
16488 EOM
16489         $cat >try.c <<'EOCP'
16490 #include <errno.h>
16491 #ifdef __hpux
16492 #define strtoull __strtoull
16493 #endif
16494 #include <stdio.h>
16495 extern unsigned long long int strtoull(char *s, char **, int); 
16496 static int bad = 0;
16497 int check(char *s, long long eull, int een) {
16498         long long gull;
16499         errno = 0;
16500         gull = strtoull(s, 0, 10);
16501         if (!((gull == eull) && (errno == een)))
16502                 bad++;
16503 }
16504 int main() {
16505         check(" 1",                                        1LL, 0);
16506         check(" 0",                                        0LL, 0);
16507         check("18446744073709551615",  18446744073709551615ULL, 0);
16508         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16509 #if 0 /* strtoull() for /^-/ strings is undefined. */
16510         check("-1",                    18446744073709551615ULL, 0);
16511         check("-18446744073709551614",                     2LL, 0);
16512         check("-18446744073709551615",                     1LL, 0);
16513         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16514         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16515 #endif
16516         if (!bad)
16517                 printf("ok\n");
16518 }
16519 EOCP
16520         set try
16521         if eval $compile; then
16522                 case "`$run ./try`" in
16523                 ok) echo "Your strtoull() seems to be working okay." ;;
16524                 *) cat <<EOM >&4
16525 Your strtoull() doesn't seem to be working okay.
16526 EOM
16527                    d_strtoull="$undef"
16528                    ;;
16529                 esac
16530         fi
16531         ;;
16532 esac
16533
16534 : see if strtouq exists
16535 set strtouq d_strtouq
16536 eval $inlibc
16537
16538 case "$d_strtouq" in
16539 "$define")
16540         $cat <<EOM
16541 Checking whether your strtouq() works okay...
16542 EOM
16543         $cat >try.c <<'EOCP'
16544 #include <errno.h>
16545 #include <stdio.h>
16546 extern unsigned long long int strtouq(char *s, char **, int); 
16547 static int bad = 0;
16548 void check(char *s, unsigned long long eull, int een) {
16549         unsigned long long gull;
16550         errno = 0;
16551         gull = strtouq(s, 0, 10);
16552         if (!((gull == eull) && (errno == een)))
16553                 bad++;
16554 }
16555 int main() {
16556         check(" 1",                                        1LL, 0);
16557         check(" 0",                                        0LL, 0);
16558         check("18446744073709551615",  18446744073709551615ULL, 0);
16559         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16560 #if 0 /* strtouq() for /^-/ strings is undefined. */
16561         check("-1",                    18446744073709551615ULL, 0);
16562         check("-18446744073709551614",                     2LL, 0);
16563         check("-18446744073709551615",                     1LL, 0);
16564         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16565         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16566 #endif
16567         if (!bad)
16568                 printf("ok\n");
16569         return 0;
16570 }
16571 EOCP
16572         set try
16573         if eval $compile; then
16574                 case "`$run ./try`" in
16575                 ok) echo "Your strtouq() seems to be working okay." ;;
16576                 *) cat <<EOM >&4
16577 Your strtouq() doesn't seem to be working okay.
16578 EOM
16579                    d_strtouq="$undef"
16580                    ;;
16581                 esac
16582         fi
16583         ;;
16584 esac
16585
16586 : see if strxfrm exists
16587 set strxfrm d_strxfrm
16588 eval $inlibc
16589
16590 : see if symlink exists
16591 set symlink d_symlink
16592 eval $inlibc
16593
16594 : see if syscall exists
16595 set syscall d_syscall
16596 eval $inlibc
16597
16598 : see if prototype for syscall is available
16599 echo " "
16600 set d_syscallproto syscall $i_unistd unistd.h
16601 eval $hasproto
16602
16603 : see if sysconf exists
16604 set sysconf d_sysconf
16605 eval $inlibc
16606
16607 : see if system exists
16608 set system d_system
16609 eval $inlibc
16610
16611 : see if tcgetpgrp exists
16612 set tcgetpgrp d_tcgetpgrp
16613 eval $inlibc
16614
16615 : see if tcsetpgrp exists
16616 set tcsetpgrp d_tcsetpgrp
16617 eval $inlibc
16618
16619 : see if prototype for telldir is available
16620 echo " "
16621 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16622 eval $hasproto
16623
16624 : see if time exists
16625 echo " "
16626 if test "X$d_time" = X -o X"$timetype" = X; then
16627     if set time val -f d_time; eval $csym; $val; then
16628                 echo 'time() found.' >&4
16629                 val="$define"
16630                 rp="What is the type returned by time() on this system?"
16631                 set time_t timetype long stdio.h sys/types.h
16632                 eval $typedef_ask
16633     else
16634                 echo 'time() not found, hope that will do.' >&4
16635                 val="$undef"
16636                 timetype='int';
16637     fi
16638     set d_time
16639     eval $setvar
16640 fi
16641
16642 : see if this is a sys/times.h system
16643 set sys/times.h i_systimes
16644 eval $inhdr
16645
16646 : see if times exists
16647 echo " "
16648 if set times val -f d_times; eval $csym; $val; then
16649         echo 'times() found.' >&4
16650         d_times="$define"
16651         inc=''
16652         case "$i_systimes" in
16653         "$define") inc='sys/times.h';;
16654         esac
16655         rp="What is the type returned by times() on this system?"
16656         set clock_t clocktype long stdio.h sys/types.h $inc
16657         eval $typedef_ask
16658 else
16659         echo 'times() NOT found, hope that will do.' >&4
16660         d_times="$undef"
16661         clocktype='int'
16662 fi
16663
16664 : see if tmpnam_r exists
16665 set tmpnam_r d_tmpnam_r
16666 eval $inlibc
16667 case "$d_tmpnam_r" in
16668 "$define")
16669         hdrs="$i_systypes sys/types.h define stdio.h "
16670         case "$d_tmpnam_r_proto:$usethreads" in
16671         ":define")      d_tmpnam_r_proto=define
16672                 set d_tmpnam_r_proto tmpnam_r $hdrs
16673                 eval $hasproto ;;
16674         *)      ;;
16675         esac
16676         case "$d_tmpnam_r_proto" in
16677         define)
16678         case "$tmpnam_r_proto" in
16679         ''|0) try='char* tmpnam_r(char*);'
16680         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16681         esac
16682         case "$tmpnam_r_proto" in
16683         ''|0)   d_tmpnam_r=undef
16684                 tmpnam_r_proto=0
16685                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16686         * )     case "$tmpnam_r_proto" in
16687                 REENTRANT_PROTO*) ;;
16688                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16689                 esac
16690                 echo "Prototype: $try" ;;
16691         esac
16692         ;;
16693         *)      case "$usethreads" in
16694                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16695                 esac
16696                 d_tmpnam_r=undef
16697                 tmpnam_r_proto=0
16698                 ;;
16699         esac
16700         ;;
16701 *)      tmpnam_r_proto=0
16702         ;;
16703 esac
16704
16705 : see if truncate exists
16706 set truncate d_truncate
16707 eval $inlibc
16708
16709 : see if ttyname_r exists
16710 set ttyname_r d_ttyname_r
16711 eval $inlibc
16712 case "$d_ttyname_r" in
16713 "$define")
16714         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16715         case "$d_ttyname_r_proto:$usethreads" in
16716         ":define")      d_ttyname_r_proto=define
16717                 set d_ttyname_r_proto ttyname_r $hdrs
16718                 eval $hasproto ;;
16719         *)      ;;
16720         esac
16721         case "$d_ttyname_r_proto" in
16722         define)
16723         case "$ttyname_r_proto" in
16724         ''|0) try='int ttyname_r(int, char*, size_t);'
16725         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16726         esac
16727         case "$ttyname_r_proto" in
16728         ''|0) try='int ttyname_r(int, char*, int);'
16729         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16730         esac
16731         case "$ttyname_r_proto" in
16732         ''|0) try='char* ttyname_r(int, char*, int);'
16733         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16734         esac
16735         case "$ttyname_r_proto" in
16736         ''|0)   d_ttyname_r=undef
16737                 ttyname_r_proto=0
16738                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16739         * )     case "$ttyname_r_proto" in
16740                 REENTRANT_PROTO*) ;;
16741                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16742                 esac
16743                 echo "Prototype: $try" ;;
16744         esac
16745         ;;
16746         *)      case "$usethreads" in
16747                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16748                 esac
16749                 d_ttyname_r=undef
16750                 ttyname_r_proto=0
16751                 ;;
16752         esac
16753         ;;
16754 *)      ttyname_r_proto=0
16755         ;;
16756 esac
16757
16758 : see if tzname[] exists
16759 echo " "
16760 if set tzname val -a d_tzname; eval $csym; $val; then
16761         val="$define"
16762         echo 'tzname[] found.' >&4
16763 else
16764         val="$undef"
16765         echo 'tzname[] NOT found.' >&4
16766 fi
16767 set d_tzname
16768 eval $setvar
16769
16770 case "$osname" in
16771 next|rhapsody|darwin) multiarch="$define" ;;
16772 esac
16773 case "$multiarch" in
16774 ''|[nN]*) multiarch="$undef" ;;
16775 esac
16776
16777 : check for ordering of bytes in a UV
16778 echo " "
16779 case "$usecrosscompile$multiarch" in
16780 *$define*)
16781         $cat <<EOM
16782 You seem to be either cross-compiling or doing a multiarchitecture build,
16783 skipping the byteorder check.
16784
16785 EOM
16786         byteorder='ffff'
16787         ;;
16788 *)
16789         case "$byteorder" in
16790         '')
16791                 $cat <<'EOM'
16792 In the following, larger digits indicate more significance.  A big-endian
16793 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16794 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16795 machines may have weird orders like 3412.  A Cray will report 87654321,
16796 an Alpha will report 12345678. If the test program works the default is
16797 probably right.
16798 I'm now running the test program...
16799 EOM
16800                 $cat >try.c <<EOCP
16801 #include <stdio.h>
16802 #$i_stdlib I_STDLIB
16803 #ifdef I_STDLIB
16804 #include <stdlib.h>
16805 #endif
16806 #include <sys/types.h>
16807 typedef $uvtype UV;
16808 int main()
16809 {
16810         int i;
16811         union {
16812                 UV l;
16813                 char c[$uvsize];
16814         } u;
16815
16816         if ($uvsize > 4)
16817                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16818         else
16819                 u.l = (UV)0x04030201;
16820         for (i = 0; i < $uvsize; i++)
16821                 printf("%c", u.c[i]+'0');
16822         printf("\n");
16823         exit(0);
16824 }
16825 EOCP
16826                 xxx_prompt=y
16827                 set try
16828                 if eval $compile && ./try > /dev/null; then
16829                         dflt=`$run ./try`
16830                         case "$dflt" in
16831                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16832                                 echo "(The test program ran ok.)"
16833                                 echo "byteorder=$dflt"
16834                                 xxx_prompt=n
16835                         ;;
16836                         ????|????????) echo "(The test program ran ok.)" ;;
16837                         *) echo "(The test program didn't run right for some reason.)" ;;
16838                         esac
16839                 else
16840                         dflt='4321'
16841                         cat <<'EOM'
16842 (I can't seem to compile the test program.  Guessing big-endian...)
16843 EOM
16844                 fi
16845                 case "$xxx_prompt" in
16846                 y)
16847                         rp="What is the order of bytes in $uvtype?"
16848                         . ./myread
16849                         byteorder="$ans"
16850                         ;;
16851                 *)      byteorder=$dflt
16852                         ;;
16853                 esac
16854                 ;;
16855         esac
16856         $rm -f try.c try
16857         ;;
16858 esac
16859
16860
16861 $cat <<EOM
16862
16863 Checking to see whether you can access character data unalignedly...
16864 EOM
16865 case "$d_u32align" in
16866 '')   $cat >try.c <<EOCP
16867 #include <stdio.h>
16868 #$i_stdlib I_STDLIB
16869 #ifdef I_STDLIB
16870 #include <stdlib.h>
16871 #endif
16872 #define U32 $u32type
16873 #define BYTEORDER 0x$byteorder
16874 #define U8 $u8type
16875 #include <signal.h>
16876 #ifdef SIGBUS
16877 $signal_t bletch(s) int s; { exit(4); }
16878 #endif
16879 int main() {
16880 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16881     U8 buf[8];
16882     U32 *up;
16883     int i;
16884
16885     if (sizeof(U32) != 4) {
16886         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16887         exit(1);
16888     }
16889
16890     fflush(stdout);
16891
16892 #ifdef SIGBUS
16893     signal(SIGBUS, bletch);
16894 #endif
16895
16896     buf[0] = 0;
16897     buf[1] = 0;
16898     buf[2] = 0;
16899     buf[3] = 1;
16900     buf[5] = 0;
16901     buf[6] = 0;
16902     buf[7] = 0;
16903     buf[8] = 1;
16904
16905     for (i = 0; i < 4; i++) {
16906         up = (U32*)(buf + i);
16907         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16908                (*up == 1 << (8*(3-i)))  /* little-endian */
16909               )
16910            )
16911         {
16912             printf("read failed (%x)\n", *up);
16913             exit(2);
16914         }
16915     }
16916
16917     /* write test */
16918     for (i = 0; i < 4; i++) {
16919         up = (U32*)(buf + i);
16920         *up = 0xBeef;
16921         if (*up != 0xBeef) {
16922             printf("write failed (%x)\n", *up);
16923             exit(3);
16924         }
16925     }
16926
16927     exit(0);
16928 #else
16929     printf("1\n");
16930     exit(1);
16931 #endif
16932     return 0;
16933 }
16934 EOCP
16935 set try
16936 if eval $compile_ok; then
16937         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16938         $run ./try 2>&1 >/dev/null
16939         case "$?" in
16940         0)      cat >&4 <<EOM
16941 You can access character data pretty unalignedly.
16942 EOM
16943                 d_u32align="$undef"
16944                 ;;
16945         *)      cat >&4 <<EOM
16946 It seems that you must access character data in an aligned manner.
16947 EOM
16948                 d_u32align="$define"
16949                 ;;
16950         esac
16951 else
16952         rp='Can you access character data at unaligned addresses?'
16953         dflt='n'
16954         . ./myread
16955         case "$ans" in
16956         [yY]*)  d_u32align="$undef"  ;;
16957         *)      d_u32align="$define" ;;
16958         esac
16959 fi
16960 $rm -f core core.try.* try.core
16961 ;;
16962 esac
16963
16964 : see if ualarm exists
16965 set ualarm d_ualarm
16966 eval $inlibc
16967
16968 : see if umask exists
16969 set umask d_umask
16970 eval $inlibc
16971
16972 : see if unordered exists
16973 set unordered d_unordered
16974 eval $inlibc
16975
16976 : see if usleep exists
16977 set usleep d_usleep
16978 eval $inlibc
16979
16980 : see if prototype for usleep is available
16981 echo " "
16982 set d_usleepproto usleep $i_unistd unistd.h
16983 eval $hasproto
16984
16985 : see if ustat exists
16986 set ustat d_ustat
16987 eval $inlibc
16988
16989 : backward compatibility for d_hvfork
16990 if test X$d_hvfork != X; then
16991         d_vfork="$d_hvfork"
16992         d_hvfork=''
16993 fi
16994 : see if there is a vfork
16995 val=''
16996 set vfork val
16997 eval $inlibc
16998
16999 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17000 : perl on Solaris 2.x, and probably elsewhere.
17001 case "$val" in
17002 $define)
17003         echo " "
17004         case "$usevfork" in
17005         false) dflt='n';;
17006         *) dflt='y';;
17007         esac
17008         cat <<'EOM'
17009  
17010 Perl can only use a vfork() that doesn't suffer from strict
17011 restrictions on calling functions or modifying global data in
17012 the child.  For example, glibc-2.1 contains such a vfork()
17013 that is unsuitable.  If your system provides a proper fork()
17014 call, chances are that you do NOT want perl to use vfork().
17015
17016 EOM
17017         rp="Do you still want to use vfork()?"
17018         . ./myread
17019         case "$ans" in
17020         y|Y) ;;
17021         *)
17022                 echo "Ok, we won't use vfork()."
17023                 val="$undef"
17024                 ;;
17025         esac
17026         ;;
17027 esac
17028 set d_vfork
17029 eval $setvar
17030 case "$d_vfork" in
17031 $define) usevfork='true';;
17032 *) usevfork='false';;
17033 esac
17034
17035 : see if closedir exists
17036 set closedir d_closedir
17037 eval $inlibc
17038
17039 case "$d_closedir" in
17040 "$define")
17041         echo " "
17042         echo "Checking whether closedir() returns a status..." >&4
17043         cat > try.c <<EOM
17044 #$i_dirent I_DIRENT             /**/
17045 #$i_sysdir I_SYS_DIR            /**/
17046 #$i_sysndir I_SYS_NDIR          /**/
17047 #$i_systypes I_SYS_TYPES        /**/
17048
17049 #if defined(I_SYS_TYPES)
17050 #include <sys/types.h>
17051 #endif
17052 #if defined(I_DIRENT)
17053 #include <dirent.h>
17054 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17055 #include <sys/dir.h>
17056 #endif
17057 #else
17058 #ifdef I_SYS_NDIR
17059 #include <sys/ndir.h>
17060 #else
17061 #ifdef I_SYS_DIR
17062 #ifdef hp9000s500
17063 #include <ndir.h>       /* may be wrong in the future */
17064 #else
17065 #include <sys/dir.h>
17066 #endif
17067 #endif
17068 #endif
17069 #endif 
17070 int main() { return closedir(opendir(".")); }
17071 EOM
17072         set try
17073         if eval $compile_ok; then
17074                 if $run ./try > /dev/null 2>&1 ; then
17075                         echo "Yes, it does."
17076                         val="$undef"
17077                 else
17078                         echo "No, it doesn't."
17079                         val="$define"
17080                 fi
17081         else
17082                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17083                 val="$define"
17084         fi
17085         ;;
17086 *)
17087         val="$undef";
17088         ;;
17089 esac
17090 set d_void_closedir
17091 eval $setvar
17092 $rm -f try try.*
17093 : see if there is a wait4
17094 set wait4 d_wait4
17095 eval $inlibc
17096
17097 : see if waitpid exists
17098 set waitpid d_waitpid
17099 eval $inlibc
17100
17101 : see if wcstombs exists
17102 set wcstombs d_wcstombs
17103 eval $inlibc
17104
17105 : see if wctomb exists
17106 set wctomb d_wctomb
17107 eval $inlibc
17108
17109 : see if writev exists
17110 set writev d_writev
17111 eval $inlibc
17112
17113 : preserve RCS keywords in files with variable substitution, grrr
17114 Date='$Date'
17115 Id='$Id'
17116 Log='$Log'
17117 RCSfile='$RCSfile'
17118 Revision='$Revision'
17119
17120 : check for alignment requirements
17121 echo " "
17122 case "$usecrosscompile$multiarch" in
17123 *$define*)
17124         $cat <<EOM
17125 You seem to be either cross-compiling or doing a multiarchitecture build,
17126 skipping the memory alignment check.
17127
17128 EOM
17129         case "$alignbytes" in
17130         '') alignbytes=8 ;;
17131         esac
17132         ;;
17133 *)
17134         case "$alignbytes" in
17135         '') echo "Checking alignment constraints..." >&4
17136                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17137                         $cat >try.c <<'EOCP'
17138 typedef long double NV;
17139 EOCP
17140                 else
17141                         $cat >try.c <<'EOCP'
17142 typedef double NV;
17143 EOCP
17144                 fi
17145                 $cat >>try.c <<'EOCP'
17146 #include <stdio.h>
17147 struct foobar {
17148         char foo;
17149         NV bar;
17150 } try_algn;
17151 int main()
17152 {
17153     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17154     return(0);
17155 }
17156 EOCP
17157                 set try
17158                 if eval $compile_ok; then
17159                         dflt=`$run ./try`
17160                 else
17161                         dflt='8'
17162                         echo "(I can't seem to compile the test program...)"
17163                 fi
17164                 ;;
17165         *) dflt="$alignbytes"
17166                 ;;
17167         esac
17168         rp="Doubles must be aligned on a how-many-byte boundary?"
17169         . ./myread
17170         alignbytes="$ans"
17171         $rm -f try.c try
17172         ;;
17173 esac
17174
17175
17176 : set the base revision
17177 baserev=5.0
17178
17179 : how do we catenate cpp tokens here?
17180 echo " "
17181 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
17182 $cat >cpp_stuff.c <<'EOCP'
17183 #define RCAT(a,b)a/**/b
17184 #define ACAT(a,b)a ## b
17185 RCAT(Rei,ser)
17186 ACAT(Cir,cus)
17187 EOCP
17188 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17189 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17190         echo "Oh!  Smells like ANSI's been here." >&4
17191         echo "We can catify or stringify, separately or together!"
17192         cpp_stuff=42
17193 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17194         echo "Ah, yes!  The good old days!" >&4
17195         echo "However, in the good old days we don't know how to stringify and"
17196         echo "catify at the same time."
17197         cpp_stuff=1
17198 else
17199         $cat >&4 <<EOM
17200 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
17201 to have to edit the values of CAT[2-5] in config.h...
17202 EOM
17203         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17204 fi
17205 $rm -f cpp_stuff.*
17206
17207 : see if this is a db.h system
17208 set db.h i_db
17209 eval $inhdr
17210
17211 case "$i_db" in
17212 $define)
17213         : Check db version.
17214         echo " "
17215         echo "Checking Berkeley DB version ..." >&4
17216         $cat >try.c <<EOCP
17217 #$d_const HASCONST
17218 #ifndef HASCONST
17219 #define const
17220 #endif
17221 #include <sys/types.h>
17222 #include <stdio.h>
17223 #$i_stdlib I_STDLIB
17224 #ifdef I_STDLIB
17225 #include <stdlib.h>
17226 #endif
17227 #include <db.h>
17228 int main(int argc, char *argv[])
17229 {
17230 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17231     int Major, Minor, Patch ;
17232     unsigned long Version ;
17233     (void)db_version(&Major, &Minor, &Patch) ;
17234     if (argc == 2) {
17235         printf("%d %d %d %d %d %d\n",
17236                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17237                Major, Minor, Patch);
17238         exit(0);
17239     }
17240     printf("You have Berkeley DB Version 2 or greater.\n");
17241
17242     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17243                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17244     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17245                 Major, Minor, Patch) ;
17246
17247     /* check that db.h & libdb are compatible */
17248     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17249         printf("db.h and libdb are incompatible.\n") ;
17250         exit(3);        
17251     }
17252
17253     printf("db.h and libdb are compatible.\n") ;
17254
17255     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17256                 + DB_VERSION_PATCH ;
17257
17258     /* needs to be >= 2.3.4 */
17259     if (Version < 2003004) {
17260     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17261         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17262         exit(2);        
17263     }
17264
17265     exit(0);
17266 #else
17267 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17268     if (argc == 2) {
17269         printf("1 0 0\n");
17270         exit(0);
17271     }
17272     printf("You have Berkeley DB Version 1.\n");
17273     exit(0);    /* DB version < 2: the coast is clear. */
17274 #else
17275     exit(1);    /* <db.h> not Berkeley DB? */
17276 #endif
17277 #endif
17278 }
17279 EOCP
17280         set try
17281         if eval $compile_ok && $run ./try; then
17282                 echo 'Looks OK.' >&4
17283                 set `$run ./try 1`
17284                 db_version_major=$1
17285                 db_version_minor=$2
17286                 db_version_patch=$3
17287         else
17288                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17289                 i_db=$undef
17290                 case " $libs " in
17291                 *"-ldb "*)
17292                         : Remove db from list of libraries to use
17293                         echo "Removing unusable -ldb from library list" >&4
17294                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17295                         shift
17296                         libs="$*"
17297                         echo "libs = $libs" >&4
17298                         ;;
17299                 esac
17300         fi
17301         $rm -f try.*
17302         ;;
17303 esac
17304
17305 case "$i_db" in
17306 define)
17307         : Check the return type needed for hash 
17308         echo " "
17309         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17310         $cat >try.c <<EOCP
17311 #$d_const HASCONST
17312 #ifndef HASCONST
17313 #define const
17314 #endif
17315 #include <sys/types.h>
17316 #include <db.h>
17317
17318 #ifndef DB_VERSION_MAJOR
17319 u_int32_t hash_cb (ptr, size)
17320 const void *ptr;
17321 size_t size;
17322 {
17323 }
17324 HASHINFO info;
17325 int main()
17326 {
17327         info.hash = hash_cb;
17328 }
17329 #endif
17330 EOCP
17331         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17332                 if $contains warning try.out >>/dev/null 2>&1 ; then
17333                         db_hashtype='int'
17334                 else
17335                         db_hashtype='u_int32_t'
17336                 fi
17337         else
17338                 : XXX Maybe we should just give up here.
17339                 db_hashtype=u_int32_t
17340                 $cat try.out >&4
17341                 echo "Help:  I can't seem to compile the db test program." >&4
17342                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17343         fi
17344         $rm -f try.*
17345         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17346         ;;
17347 *)      db_hashtype=u_int32_t
17348         ;;
17349 esac
17350 case "$i_db" in
17351 define)
17352         : Check the return type needed for prefix 
17353         echo " "
17354         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17355         cat >try.c <<EOCP
17356 #$d_const HASCONST
17357 #ifndef HASCONST
17358 #define const
17359 #endif
17360 #include <sys/types.h>
17361 #include <db.h>
17362
17363 #ifndef DB_VERSION_MAJOR
17364 size_t prefix_cb (key1, key2)
17365 const DBT *key1;
17366 const DBT *key2;
17367 {
17368 }
17369 BTREEINFO info;
17370 int main()
17371 {
17372         info.prefix = prefix_cb;
17373 }
17374 #endif
17375 EOCP
17376         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17377                 if $contains warning try.out >>/dev/null 2>&1 ; then
17378                         db_prefixtype='int'
17379                 else
17380                         db_prefixtype='size_t'
17381                 fi
17382         else
17383                 db_prefixtype='size_t'
17384                 : XXX Maybe we should just give up here.
17385                 $cat try.out >&4
17386                 echo "Help:  I can't seem to compile the db test program." >&4
17387                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17388         fi
17389         $rm -f try.*
17390         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17391         ;;
17392 *)      db_prefixtype='size_t'
17393         ;;
17394 esac
17395
17396
17397 : How can we generate normalized random numbers ?
17398 echo " "
17399 echo "Looking for a random number function..." >&4
17400 case "$randfunc" in
17401 '')
17402         if set drand48 val -f; eval $csym; $val; then
17403                 dflt="drand48"
17404                 echo "Good, found drand48()." >&4
17405         elif set random val -f; eval $csym; $val; then
17406                 dflt="random"
17407                 echo "OK, found random()." >&4
17408         else
17409                 dflt="rand"
17410                 echo "Yick, looks like I have to use rand()." >&4
17411         fi
17412         echo " "
17413         ;;
17414 *)
17415         dflt="$randfunc"
17416         ;;
17417 esac
17418 cont=true
17419
17420 case "$ccflags" in
17421 *-Dmy_rand=*|*-Dmy_srand=*)
17422         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17423         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17424         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17425         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17426         ;;
17427 esac
17428
17429 while $test "$cont"; do
17430         rp="Use which function to generate random numbers?"
17431         . ./myread
17432         if $test "$ans" = "$dflt"; then
17433                 : null
17434         else
17435                 randbits=''
17436         fi
17437         randfunc="$ans"
17438         if set $ans val -f; eval $csym; $val; then
17439                 cont=''
17440         else
17441                 dflt=y
17442                 rp="I cannot find function $ans. Use that name anyway?"
17443                 . ./myread
17444                 dflt=rand
17445                 case "$ans" in
17446                         [yY]*) cont='';;
17447                 esac
17448         fi
17449         case "$cont" in
17450         '')
17451                 case "$randfunc" in
17452                 drand48)
17453                         drand01="drand48()"
17454                         seedfunc="srand48"
17455                         randbits=48
17456                         randseedtype=long
17457                         ;;
17458                 rand|random)
17459                         case "$randbits" in
17460                         '')
17461 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17462                                 $cat >try.c <<EOCP
17463 #$i_unistd I_UNISTD
17464 #$i_stdlib I_STDLIB
17465 #include <stdio.h>
17466 #ifdef I_UNISTD
17467 #  include <unistd.h>
17468 #endif
17469 #ifdef I_STDLIB
17470 #  include <stdlib.h>
17471 #endif
17472 int main()
17473 {
17474         register int i;
17475         register unsigned long tmp;
17476         register unsigned long max = 0L;
17477
17478         for (i = 1000; i; i--) {
17479                 tmp = (unsigned long) $randfunc();
17480                 if (tmp > max) max = tmp;
17481         }
17482         for (i = 0; max; i++)
17483                 max /= 2;
17484         printf("%d\n",i);
17485 }
17486 EOCP
17487                                 set try
17488                                 if eval $compile_ok; then
17489                                         dflt=`try`
17490                                 else
17491                                         dflt='?'
17492                                         echo "(I can't seem to compile the test program...)"
17493                                 fi
17494                                 ;;
17495                         *)
17496                                 dflt="$randbits"
17497                                 ;;
17498                         esac
17499                         rp="How many bits does your $randfunc() function produce?"
17500                         . ./myread
17501                         randbits="$ans"
17502                         $rm -f try.c try
17503                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17504                         seedfunc="s$randfunc"
17505                         randseedtype=unsigned
17506                         ;;
17507                 *)
17508                         dflt="31"
17509                         rp="How many bits does your $randfunc() function produce?"
17510                         . ./myread
17511                         randbits="$ans"
17512                         seedfunc="s$randfunc"
17513                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17514                         if set $seedfunc val -f; eval $csym; $val; then
17515                                 echo "(Using $seedfunc() to seed random generator)"
17516                         else
17517                                 echo "(Warning: no $seedfunc() to seed random generator)"
17518                                 seedfunc=rand
17519                         fi
17520                         randseedtype=unsigned
17521                         ;;
17522                 esac
17523                 ;;
17524         esac
17525 done
17526
17527 echo " "
17528 echo "Determining whether or not we are on an EBCDIC system..." >&4
17529 $cat >try.c <<'EOM'
17530 int main()
17531 {
17532   if ('M'==0xd4) return 0;
17533   return 1;
17534 }
17535 EOM
17536
17537 val=$undef
17538 set try
17539 if eval $compile_ok; then
17540         if $run ./try; then
17541                 echo "You seem to speak EBCDIC." >&4
17542                 val="$define"
17543         else
17544                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17545         fi
17546 else
17547         echo "I'm unable to compile the test program." >&4
17548         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17549 fi
17550 $rm -f try try.*
17551 set ebcdic
17552 eval $setvar
17553
17554 echo " "
17555 $cat >&4 <<EOM
17556 Checking how to flush all pending stdio output...
17557 EOM
17558 # I only know how to find the first 32 possibly open files on SunOS.
17559 # See also hints/sunos_4_1.sh and util.c  --AD
17560 case "$osname" in
17561 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17562 esac
17563 $cat >>try.c <<EOCP
17564 #include <stdio.h>
17565 #$i_stdlib I_STDLIB
17566 #ifdef I_STDLIB
17567 #include <stdlib.h>
17568 #endif
17569 #$i_unistd I_UNISTD
17570 #ifdef I_UNISTD
17571 # include <unistd.h>
17572 #endif
17573 #$d_sysconf HAS_SYSCONF
17574 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17575 #ifdef HAS_STDIO_STREAM_ARRAY
17576 # define STDIO_STREAM_ARRAY $stdio_stream_array
17577 #endif
17578 int main() {
17579   FILE* p;
17580   unlink("try.out");
17581   p = fopen("try.out", "w");
17582 #ifdef TRY_FPUTC
17583   fputc('x', p);
17584 #else
17585 # ifdef TRY_FPRINTF
17586   fprintf(p, "x");
17587 # endif
17588 #endif
17589 #ifdef TRY_FFLUSH_NULL
17590   fflush(NULL);
17591 #endif
17592 #ifdef TRY_FFLUSH_ALL
17593   {
17594     long open_max = -1;
17595 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17596     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17597 # else
17598 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17599     open_max = sysconf(_SC_OPEN_MAX);
17600 #  else
17601 #   ifdef FOPEN_MAX
17602     open_max = FOPEN_MAX;
17603 #   else
17604 #    ifdef OPEN_MAX
17605     open_max = OPEN_MAX;
17606 #    else
17607 #     ifdef _NFILE
17608     open_max = _NFILE;
17609 #     endif
17610 #    endif
17611 #   endif
17612 #  endif
17613 # endif 
17614 # ifdef HAS_STDIO_STREAM_ARRAY
17615     if (open_max > 0) {
17616       long i;
17617       for (i = 0; i < open_max; i++)
17618             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17619                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17620                 STDIO_STREAM_ARRAY[i]._flag)
17621                 fflush(&STDIO_STREAM_ARRAY[i]);
17622     }   
17623   }
17624 # endif
17625 #endif
17626   _exit(42);
17627 }
17628 EOCP
17629 : first we have to find out how _not_ to flush
17630 $to try.c
17631 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17632     output=''
17633     set try -DTRY_FPUTC
17634     if eval $compile; then
17635             $run ./try 2>/dev/null
17636             code="$?"
17637             $from try.out
17638             if $test ! -s try.out -a "X$code" = X42; then
17639                 output=-DTRY_FPUTC
17640             fi
17641     fi
17642     case "$output" in
17643     '')
17644             set try -DTRY_FPRINTF
17645             if eval $compile; then
17646                     $run ./try 2>/dev/null
17647                     code="$?"
17648                     $from try.out
17649                     if $test ! -s try.out -a "X$code" = X42; then
17650                         output=-DTRY_FPRINTF
17651                     fi
17652             fi
17653         ;;
17654     esac
17655 fi
17656 : check for fflush NULL behaviour
17657 case "$fflushNULL" in
17658 '')     set try -DTRY_FFLUSH_NULL $output
17659         if eval $compile; then
17660                 $run ./try 2>/dev/null
17661                 code="$?"
17662                 $from try.out
17663                 if $test -s try.out -a "X$code" = X42; then
17664                         fflushNULL="`$cat try.out`"
17665                 else
17666                         if $test "X$code" != X42; then
17667                                 $cat >&4 <<EOM
17668 (If this test failed, don't worry, we'll try another method shortly.)
17669 EOM
17670                         fi
17671                 fi
17672         fi
17673         $rm -f core try.core core.try.*
17674         case "$fflushNULL" in
17675         x)      $cat >&4 <<EOM
17676 Your fflush(NULL) works okay for output streams.
17677 Let's see if it clobbers input pipes...
17678 EOM
17679 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17680 # bug that improperly flushes the input end of pipes.  So we avoid the
17681 # autoflush on fork/system/exec support for now. :-(
17682 $cat >tryp.c <<EOCP
17683 #include <stdio.h>
17684 int
17685 main(int argc, char **argv)
17686 {
17687     char buf[1024];
17688     int i;
17689     char *bp = buf;
17690     while (1) {
17691         while ((i = getc(stdin)) != -1
17692                && (*bp++ = i) != '\n'
17693                && bp < &buf[1024])
17694         /* DO NOTHING */ ;
17695         *bp = '\0';
17696         fprintf(stdout, "%s", buf);
17697         fflush(NULL);
17698         if (i == -1)
17699             return 0;
17700         bp = buf;
17701     }
17702 }
17703 EOCP
17704                 fflushNULL="$define"
17705                 set tryp
17706                 if eval $compile; then
17707                     $rm -f tryp.out
17708                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17709                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17710                        $cat >&4 <<EOM
17711 fflush(NULL) seems to behave okay with input streams.
17712 EOM
17713                         fflushNULL="$define"
17714                     else
17715                         $cat >&4 <<EOM
17716 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17717 EOM
17718                         fflushNULL="$undef"
17719                     fi
17720                 fi
17721                 $rm -f core tryp.c tryp.core core.tryp.*
17722                 ;;
17723         '')     $cat >&4 <<EOM
17724 Your fflush(NULL) isn't working (contrary to ANSI C).
17725 EOM
17726                 fflushNULL="$undef"
17727                 ;;
17728         *)      $cat >&4 <<EOM
17729 Cannot figure out whether your fflush(NULL) works or not.
17730 I'm assuming it doesn't (contrary to ANSI C).
17731 EOM
17732                 fflushNULL="$undef"
17733                 ;;
17734         esac
17735         ;;
17736 $define|true|[yY]*)
17737         fflushNULL="$define"
17738         ;;
17739 *)
17740         fflushNULL="$undef"
17741         ;;
17742 esac
17743 : check explicit looping only if NULL did not work, and if the pipe
17744 : bug does not show up on an explicit flush too
17745 case "$fflushNULL" in
17746 "$undef")
17747         $cat >tryp.c <<EOCP
17748 #include <stdio.h>
17749 int
17750 main(int argc, char **argv)
17751 {
17752     char buf[1024];
17753     int i;
17754     char *bp = buf;
17755     while (1) {
17756         while ((i = getc(stdin)) != -1
17757                && (*bp++ = i) != '\n'
17758                && bp < &buf[1024])
17759         /* DO NOTHING */ ;
17760         *bp = '\0';
17761         fprintf(stdout, "%s", buf);
17762         fflush(stdin);
17763         if (i == -1)
17764             return 0;
17765         bp = buf;
17766     }
17767 }
17768 EOCP
17769         set tryp
17770         if eval $compile; then
17771             $rm -f tryp.out
17772             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17773             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17774                $cat >&4 <<EOM
17775 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17776 EOM
17777                 : now check for fflushall behaviour
17778                 case "$fflushall" in
17779                 '')     set try -DTRY_FFLUSH_ALL $output
17780                         if eval $compile; then
17781                                 $cat >&4 <<EOM
17782 (Now testing the other method--but note that this also may fail.)
17783 EOM
17784                                 $run ./try 2>/dev/null
17785                                 code=$?
17786                                 $from try.out
17787                                 if $test -s try.out -a "X$code" = X42; then
17788                                         fflushall="`$cat try.out`"
17789                                 fi
17790                         fi
17791                         $rm -f core try.core core.try.*
17792                         case "$fflushall" in
17793                         x)      $cat >&4 <<EOM
17794 Whew. Flushing explicitly all the stdio streams works.
17795 EOM
17796                                 fflushall="$define"
17797                                 ;;
17798                         '')     $cat >&4 <<EOM
17799 Sigh. Flushing explicitly all the stdio streams doesn't work.
17800 EOM
17801                                 fflushall="$undef"
17802                                 ;;
17803                         *)      $cat >&4 <<EOM
17804 Cannot figure out whether flushing stdio streams explicitly works or not.
17805 I'm assuming it doesn't.
17806 EOM
17807                                 fflushall="$undef"
17808                                 ;;
17809                         esac
17810                         ;;
17811                 "$define"|true|[yY]*)
17812                         fflushall="$define"
17813                         ;;
17814                 *)
17815                         fflushall="$undef"
17816                         ;;
17817                 esac
17818             else
17819                 $cat >&4 <<EOM
17820 All is futile.  Even fflush(stdin) clobbers input pipes!
17821 EOM
17822                 fflushall="$undef"
17823             fi
17824         else
17825             fflushall="$undef"
17826         fi
17827         $rm -f core tryp.c tryp.core core.tryp.*
17828         ;;
17829 *)      fflushall="$undef"
17830         ;;
17831 esac
17832
17833 case "$fflushNULL$fflushall" in
17834 undefundef)
17835         $cat <<EOM
17836 OK, I give up.  I cannot figure out how to flush pending stdio output.
17837 We won't be flushing handles at all before fork/exec/popen.
17838 EOM
17839         ;;
17840 esac
17841 $rm -f try.* try$exe_ext
17842
17843 : Store the full pathname to the ar program for use in the C program
17844 : Respect a hint or command line value for full_ar.
17845 case "$full_ar" in
17846 '') full_ar=$ar ;;
17847 esac
17848
17849 : Store the full pathname to the sed program for use in the C program
17850 full_sed=$sed
17851
17852 : see what type gids are declared as in the kernel
17853 echo " "
17854 echo "Looking for the type for group ids returned by getgid()."
17855 set gid_t gidtype xxx stdio.h sys/types.h
17856 eval $typedef
17857 case "$gidtype" in
17858 xxx)
17859         xxx=`./findhdr sys/user.h`
17860         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17861         case $1 in
17862         unsigned) dflt="$1 $2" ;;
17863         *) dflt="$1" ;;
17864         esac
17865         ;;
17866 *) dflt="$gidtype";;
17867 esac
17868 case "$gidtype" in
17869 gid_t) echo "gid_t found." ;;
17870 *)      rp="What is the type for group ids returned by getgid()?"
17871         . ./myread
17872         gidtype="$ans"
17873         ;;
17874 esac
17875
17876 echo " "
17877 case "$gidtype" in
17878 *_t) zzz="$gidtype"     ;;
17879 *)   zzz="gid"          ;;
17880 esac
17881 echo "Checking the size of $zzz..." >&4 
17882 cat > try.c <<EOCP
17883 #include <sys/types.h>
17884 #include <stdio.h>
17885 #$i_stdlib I_STDLIB
17886 #ifdef I_STDLIB
17887 #include <stdlib.h>
17888 #endif
17889 int main() {
17890     printf("%d\n", (int)sizeof($gidtype));
17891     exit(0);
17892 }
17893 EOCP
17894 set try
17895 if eval $compile_ok; then
17896         yyy=`$run ./try`
17897         case "$yyy" in
17898         '')     gidsize=4
17899                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17900                 ;;
17901         *)      gidsize=$yyy
17902                 echo "Your $zzz is $gidsize bytes long."
17903                 ;;
17904         esac
17905 else
17906         gidsize=4
17907         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17908 fi
17909
17910
17911 echo " "
17912 case "$gidtype" in
17913 *_t) zzz="$gidtype"     ;;
17914 *)   zzz="gid"          ;;
17915 esac
17916 echo "Checking the sign of $zzz..." >&4 
17917 cat > try.c <<EOCP
17918 #include <sys/types.h>
17919 #include <stdio.h>
17920 int main() {
17921         $gidtype foo = -1;
17922         if (foo < 0)
17923                 printf("-1\n");
17924         else
17925                 printf("1\n");
17926 }
17927 EOCP
17928 set try
17929 if eval $compile; then
17930         yyy=`$run ./try`
17931         case "$yyy" in
17932         '')     gidsign=1
17933                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17934                 ;;
17935         *)      gidsign=$yyy
17936                 case "$gidsign" in
17937                  1) echo "Your $zzz is unsigned." ;;
17938                 -1) echo "Your $zzz is signed."   ;;
17939                 esac
17940                 ;;
17941         esac
17942 else
17943         gidsign=1
17944         echo "(I can't compile the test program--guessing unsigned.)" >&4
17945 fi
17946
17947
17948 echo " "
17949
17950 if $test X"$quadtype" != X; then
17951
17952 echo "Checking how to print 64-bit integers..." >&4
17953
17954 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
17955         $cat >try.c <<'EOCP'
17956 #include <sys/types.h>
17957 #include <stdio.h>
17958 int main() {
17959   int q = 12345678901;
17960   printf("%ld\n", q);
17961 }
17962 EOCP
17963         set try
17964         if eval $compile; then
17965                 yyy=`$run ./try`
17966                 case "$yyy" in
17967                 12345678901)
17968                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
17969                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
17970                         echo "We will use %d."
17971                         ;;
17972                 esac
17973         fi
17974 fi
17975
17976 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
17977         $cat >try.c <<'EOCP'
17978 #include <sys/types.h>
17979 #include <stdio.h>
17980 int main() {
17981   long q = 12345678901;
17982   printf("%ld\n", q);
17983 }
17984 EOCP
17985         set try
17986         if eval $compile; then
17987                 yyy=`$run ./try`
17988                 case "$yyy" in
17989                 12345678901)
17990                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
17991                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
17992                         echo "We will use %ld."
17993                         ;;
17994                 esac
17995         fi
17996 fi
17997
17998 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
17999         $cat >try.c <<'EOCP'
18000 #include <sys/types.h>
18001 #include <inttypes.h>
18002 #include <stdio.h>
18003 int main() {
18004   int64_t q = 12345678901;
18005   printf("%" PRId64 "\n", q);
18006 }
18007 EOCP
18008         set try
18009         if eval $compile; then
18010                 yyy=`$run ./try`
18011                 case "$yyy" in
18012                 12345678901)
18013                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18014                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18015                         echo "We will use the C9X style."
18016                         ;;
18017                 esac
18018         fi
18019 fi
18020
18021 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18022         $cat >try.c <<EOCP
18023 #include <sys/types.h>
18024 #include <stdio.h>
18025 int main() {
18026   $quadtype q = 12345678901;
18027   printf("%Ld\n", q);
18028 }
18029 EOCP
18030         set try
18031         if eval $compile; then
18032                 yyy=`$run ./try`
18033                 case "$yyy" in
18034                 12345678901)
18035                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18036                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18037                         echo "We will use %Ld."
18038                         ;;
18039                 esac
18040         fi
18041 fi
18042
18043 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18044         $cat >try.c <<'EOCP'
18045 #include <sys/types.h>
18046 #include <stdio.h>
18047 int main() {
18048   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18049   printf("%lld\n", q);
18050 }
18051 EOCP
18052         set try
18053         if eval $compile; then
18054                 yyy=`$run ./try`
18055                 case "$yyy" in
18056                 12345678901)
18057                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18058                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18059                         echo "We will use the %lld style."
18060                         ;;
18061                 esac
18062         fi
18063 fi
18064
18065 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18066         $cat >try.c <<EOCP
18067 #include <sys/types.h>
18068 #include <stdio.h>
18069 int main() {
18070   $quadtype q = 12345678901;
18071   printf("%qd\n", q);
18072 }
18073 EOCP
18074         set try
18075         if eval $compile; then
18076                 yyy=`$run ./try`
18077                 case "$yyy" in
18078                 12345678901)
18079                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18080                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18081                         echo "We will use %qd."
18082                         ;;
18083                 esac
18084         fi
18085 fi
18086
18087 if $test X"$sPRId64" = X; then
18088         echo "Cannot figure out how to print 64-bit integers." >&4
18089 fi
18090
18091 $rm -f try try.*
18092
18093 fi
18094
18095 case "$sPRId64" in
18096 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18097         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18098         ;;
18099 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18100         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18101         ;;
18102 esac
18103
18104
18105 echo " "
18106 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18107
18108 if $test X"$ivsize" = X8; then
18109         ivdformat="$sPRId64"
18110         uvuformat="$sPRIu64"
18111         uvoformat="$sPRIo64"
18112         uvxformat="$sPRIx64"
18113         uvXUformat="$sPRIXU64"
18114 else
18115         if $test X"$ivsize" = X"$longsize"; then
18116                 ivdformat='"ld"'
18117                 uvuformat='"lu"'
18118                 uvoformat='"lo"'
18119                 uvxformat='"lx"'
18120                 uvXUformat='"lX"'
18121         else
18122                 if $test X"$ivsize" = X"$intsize"; then
18123                         ivdformat='"d"'
18124                         uvuformat='"u"'
18125                         uvoformat='"o"'
18126                         uvxformat='"x"'
18127                         uvXUformat='"X"'
18128                 else
18129                         : far out
18130                         if $test X"$ivsize" = X"$shortsize"; then
18131                                 ivdformat='"hd"'
18132                                 uvuformat='"hu"'
18133                                 uvoformat='"ho"'
18134                                 uvxformat='"hx"'
18135                                 uvXUformat='"hX"'
18136                         fi
18137                 fi
18138         fi
18139 fi
18140
18141 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18142         nveformat="$sPRIeldbl"
18143         nvfformat="$sPRIfldbl"
18144         nvgformat="$sPRIgldbl"
18145         nvEUformat="$sPRIEUldbl"
18146         nvFUformat="$sPRIFUldbl"
18147         nvGUformat="$sPRIGUldbl"
18148 else
18149         nveformat='"e"'
18150         nvfformat='"f"'
18151         nvgformat='"g"'
18152         nvEUformat='"E"'
18153         nvFUformat='"F"'
18154         nvGUformat='"G"'
18155 fi
18156
18157 case "$ivdformat" in
18158 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18159     exit 1
18160     ;;
18161 esac
18162
18163
18164 echo " "
18165 $echo "Checking the format string to be used for gids..." >&4
18166
18167 case "$gidsign" in
18168 -1)     if $test X"$gidsize" = X"$ivsize"; then
18169                 gidformat="$ivdformat"
18170         else
18171                 if $test X"$gidsize" = X"$longsize"; then
18172                         gidformat='"ld"'
18173                 else
18174                         if $test X"$gidsize" = X"$intsize"; then
18175                                 gidformat='"d"'
18176                         else
18177                                 if $test X"$gidsize" = X"$shortsize"; then
18178                                         gidformat='"hd"'
18179                                 fi
18180                         fi
18181                 fi
18182         fi
18183         ;;
18184 *)      if $test X"$gidsize" = X"$uvsize"; then
18185                 gidformat="$uvuformat"
18186         else
18187                 if $test X"$gidsize" = X"$longsize"; then
18188                         gidformat='"lu"'
18189                 else
18190                         if $test X"$gidsize" = X"$intsize"; then
18191                                 gidformat='"u"'
18192                         else
18193                                 if $test X"$gidsize" = X"$shortsize"; then
18194                                         gidformat='"hu"'
18195                                 fi
18196                         fi
18197                 fi
18198         fi
18199         ;;
18200 esac
18201
18202 : see if getgroups exists
18203 set getgroups d_getgrps
18204 eval $inlibc
18205
18206 : see if setgroups exists
18207 set setgroups d_setgrps
18208 eval $inlibc
18209
18210
18211 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18212 echo " "
18213 case "$d_getgrps$d_setgrps" in
18214 *define*)
18215         case "$groupstype" in
18216         '') dflt="$gidtype" ;;
18217         *)  dflt="$groupstype" ;;
18218         esac
18219         $cat <<EOM
18220 What type of pointer is the second argument to getgroups() and setgroups()?
18221 Usually this is the same as group ids, $gidtype, but not always.
18222
18223 EOM
18224         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18225         . ./myread
18226         groupstype="$ans"
18227         ;;
18228 *)  groupstype="$gidtype";;
18229 esac
18230
18231 echo " "
18232 echo "Checking if your $make program sets \$(MAKE)..." >&4
18233 case "$make_set_make" in
18234 '')
18235         $sed 's/^X //' > testmake.mak << 'EOF'
18236 Xall:
18237 X       @echo 'maketemp="$(MAKE)"'
18238 EOF
18239         case "`$make -f testmake.mak 2>/dev/null`" in
18240         *maketemp=*) make_set_make='#' ;;
18241         *)      make_set_make="MAKE=$make" ;;
18242         esac
18243         $rm -f testmake.mak
18244         ;;
18245 esac
18246 case "$make_set_make" in
18247 '#') echo "Yup, it does.";;
18248 *) echo "Nope, it doesn't.";;
18249 esac
18250
18251 : see what type is used for mode_t
18252 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18253 set mode_t modetype int stdio.h sys/types.h
18254 eval $typedef_ask
18255
18256 : see if stdarg is available
18257 echo " "
18258 if $test `./findhdr stdarg.h`; then
18259         echo "<stdarg.h> found." >&4
18260         valstd="$define"
18261 else
18262         echo "<stdarg.h> NOT found." >&4
18263         valstd="$undef"
18264 fi
18265
18266 : see if varags is available
18267 echo " "
18268 if $test `./findhdr varargs.h`; then
18269         echo "<varargs.h> found." >&4
18270 else
18271         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18272 fi
18273
18274 : set up the varargs testing programs
18275 $cat > varargs.c <<EOP
18276 #ifdef I_STDARG
18277 #include <stdarg.h>
18278 #endif
18279 #ifdef I_VARARGS
18280 #include <varargs.h>
18281 #endif
18282
18283 #ifdef I_STDARG
18284 int f(char *p, ...)
18285 #else
18286 int f(va_alist)
18287 va_dcl
18288 #endif
18289 {
18290         va_list ap;
18291 #ifndef I_STDARG
18292         char *p;
18293 #endif
18294 #ifdef I_STDARG
18295         va_start(ap,p);
18296 #else
18297         va_start(ap);
18298         p = va_arg(ap, char *);
18299 #endif
18300         va_end(ap);
18301 }
18302 EOP
18303 $cat > varargs <<EOP
18304 $startsh
18305 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18306         echo "true"
18307 else
18308         echo "false"
18309 fi
18310 $rm -f varargs$_o
18311 EOP
18312 chmod +x varargs
18313
18314 : now check which varargs header should be included
18315 echo " "
18316 i_varhdr=''
18317 case "$valstd" in
18318 "$define")
18319         if `./varargs I_STDARG`; then
18320                 val='stdarg.h'
18321         elif `./varargs I_VARARGS`; then
18322                 val='varargs.h'
18323         fi
18324         ;;
18325 *)
18326         if `./varargs I_VARARGS`; then
18327                 val='varargs.h'
18328         fi
18329         ;;
18330 esac
18331 case "$val" in
18332 '')
18333 echo "I could not find the definition for va_dcl... You have problems..." >&4
18334         val="$undef"; set i_stdarg; eval $setvar
18335         val="$undef"; set i_varargs; eval $setvar
18336         ;;
18337 *) 
18338         set i_varhdr
18339         eval $setvar
18340         case "$i_varhdr" in
18341         stdarg.h)
18342                 val="$define"; set i_stdarg; eval $setvar
18343                 val="$undef"; set i_varargs; eval $setvar
18344                 ;;
18345         varargs.h)
18346                 val="$undef"; set i_stdarg; eval $setvar
18347                 val="$define"; set i_varargs; eval $setvar
18348                 ;;
18349         esac
18350         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18351 esac
18352 $rm -f varargs*
18353
18354 : see if we need va_copy
18355 echo " "
18356 case "$i_stdarg" in
18357 "$define")
18358         $cat >try.c <<EOCP
18359 #include <stdarg.h>
18360 #include <stdio.h>
18361 #$i_stdlib I_STDLIB
18362 #ifdef I_STDLIB
18363 #include <stdlib.h>
18364 #endif
18365 #include <signal.h>
18366
18367 int
18368 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18369 {
18370   return vfprintf(f, fmt, *valp);
18371 }
18372  
18373 int    
18374 myvfprintf(FILE *f, const  char *fmt, va_list val)
18375 {
18376   return ivfprintf(f, fmt, &val);
18377 }
18378       
18379 int
18380 myprintf(char *fmt, ...) 
18381 {
18382   va_list val;
18383   va_start(val, fmt);
18384   return myvfprintf(stdout, fmt, val); 
18385 }         
18386
18387 int
18388 main(int ac, char **av)
18389 {
18390   signal(SIGSEGV, exit);
18391
18392   myprintf("%s%cs all right, then\n", "that", '\'');                            
18393   exit(0);      
18394 }
18395 EOCP
18396         set try
18397         if eval $compile && $run ./try 2>&1 >/dev/null; then
18398                 case "`$run ./try`" in
18399                 "that's all right, then")
18400                         okay=yes
18401                         ;;
18402                 esac
18403         fi
18404         case "$okay" in
18405         yes)    echo "It seems that you don't need va_copy()." >&4
18406                 need_va_copy="$undef"
18407                 ;;
18408         *)      echo "It seems that va_copy() or similar will be needed." >&4
18409                 need_va_copy="$define"
18410                 ;;
18411         esac
18412         $rm -f try.* core core.* *.core *.core.*
18413         ;;
18414 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18415         ;;
18416 esac
18417
18418 : see what type is used for size_t
18419 rp="What is the type used for the length parameter for string functions?"
18420 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18421 eval $typedef_ask
18422
18423 : check for type of arguments to gethostbyaddr. 
18424 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18425         case "$d_gethbyaddr" in
18426         $define)
18427                 $cat <<EOM
18428
18429 Checking to see what type of arguments are accepted by gethostbyaddr().
18430 EOM
18431                 hdrs="$define sys/types.h
18432                         $d_socket sys/socket.h 
18433                         $i_niin netinet/in.h 
18434                         $i_netdb netdb.h
18435                         $i_unistd unistd.h"
18436                 : The first arg can 'char *' or 'void *'
18437                 : The second arg is some of integral type
18438                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18439                         for yyy in size_t long int; do
18440                                 case "$netdb_host_type" in
18441                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18442                                         if ./protochk "$try" $hdrs; then
18443                                                 echo "Your system accepts $xxx for the first arg."
18444                                                 echo "...and $yyy for the second arg."
18445                                                 netdb_host_type="$xxx"
18446                                                 netdb_hlen_type="$yyy"
18447                                         fi
18448                                         ;;
18449                                 esac
18450                         done
18451                 done
18452                 : In case none of those worked, prompt the user.
18453                 case "$netdb_host_type" in
18454                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18455                         dflt='char *'
18456                         . ./myread
18457                         netdb_host_type=$ans
18458                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18459                         dflt="$sizetype"
18460                         . ./myread
18461                         netdb_hlen_type=$ans
18462                         ;;
18463                 esac
18464                 ;;
18465         *)      : no gethostbyaddr, so pick harmless defaults
18466                 netdb_host_type='char *'
18467                 netdb_hlen_type="$sizetype"
18468                 ;;
18469         esac
18470         # Remove the "const" if needed. -- but then we'll have a 
18471         # prototype clash!
18472         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18473 fi
18474
18475 : check for type of argument to gethostbyname. 
18476 if test "X$netdb_name_type" = X ; then
18477         case "$d_gethbyname" in
18478         $define)
18479                 $cat <<EOM
18480
18481 Checking to see what type of argument is accepted by gethostbyname().
18482 EOM
18483                 hdrs="$define sys/types.h
18484                         $d_socket sys/socket.h 
18485                         $i_niin netinet/in.h 
18486                         $i_netdb netdb.h
18487                         $i_unistd unistd.h"
18488                 for xxx in "const char *" "char *"; do
18489                         case "$netdb_name_type" in
18490                         '')     try="extern struct hostent *gethostbyname($xxx);"
18491                                 if ./protochk "$try" $hdrs; then
18492                                         echo "Your system accepts $xxx."
18493                                         netdb_name_type="$xxx"
18494                                 fi
18495                                 ;;
18496                         esac
18497                 done
18498                 : In case none of those worked, prompt the user.
18499                 case "$netdb_name_type" in
18500                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18501                         dflt='char *'
18502                         . ./myread
18503                         netdb_name_type=$ans
18504                         ;;
18505                 esac
18506                 ;;
18507         *)      : no gethostbyname, so pick harmless default
18508                 netdb_name_type='char *'
18509                 ;;
18510         esac
18511 fi
18512
18513 : check for type of 1st argument to getnetbyaddr. 
18514 if test "X$netdb_net_type" = X ; then
18515         case "$d_getnbyaddr" in
18516         $define)
18517                 $cat <<EOM
18518
18519 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18520 EOM
18521                 hdrs="$define sys/types.h
18522                         $d_socket sys/socket.h 
18523                         $i_niin netinet/in.h 
18524                         $i_netdb netdb.h
18525                         $i_unistd unistd.h"
18526                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18527                         case "$netdb_net_type" in
18528                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18529                                 if ./protochk "$try" $hdrs; then
18530                                         echo "Your system accepts $xxx."
18531                                         netdb_net_type="$xxx"
18532                                 fi
18533                                 ;;
18534                         esac
18535                 done
18536                 : In case none of those worked, prompt the user.
18537                 case "$netdb_net_type" in
18538                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18539                         dflt='long'
18540                         . ./myread
18541                         netdb_net_type=$ans
18542                         ;;
18543                 esac
18544                 ;;
18545         *)      : no getnetbyaddr, so pick harmless default
18546                 netdb_net_type='long'
18547                 ;;
18548         esac
18549 fi
18550 : locate the preferred pager for this system
18551 fn=f/
18552 case "$pager" in
18553 '')
18554         dflt=''
18555         case "$pg" in
18556         /*) dflt=$pg;;
18557         [a-zA-Z]:/*) dflt=$pg;;
18558         esac
18559         case "$more" in
18560         /*) dflt=$more;;
18561         [a-zA-Z]:/*) dflt=$more;;
18562         esac
18563         case "$less" in
18564         /*) dflt=$less;;
18565         [a-zA-Z]:/*) dflt=$less;;
18566         esac
18567         case "$dflt" in
18568         '') dflt=/usr/ucb/more;;
18569         esac
18570         ;;
18571 *)      dflt="$pager"
18572         : Instruct ./getfile to trust the hinted or previous pager value,
18573         : even if it does not begin with a slash.  For example, on os2,
18574         : pager might be cmd /c more.  See comments in UU/getfile.
18575         fn="f/($pager)"
18576         ;;
18577 esac
18578 echo " "
18579 rp='What pager is used on your system?'
18580 . ./getfile
18581 pager="$ans"
18582
18583 : see what type pids are declared as in the kernel
18584 rp="What is the type of process ids on this system?"
18585 set pid_t pidtype int stdio.h sys/types.h
18586 eval $typedef_ask
18587
18588 : Find earliest binary compatible site_perl subdirectory perl can use.
18589 xs_apiversion=$version # The current site_perl version.
18590 : Find earliest pure perl site_perl subdirectory perl can use.
18591 : The versioned directories started at 5.005.
18592 pm_apiversion='5.005'
18593
18594 : see if ar generates random libraries by itself
18595 echo " "
18596 echo "Checking how to generate random libraries on your machine..." >&4
18597 echo 'int bar1() { return bar2(); }' > bar1.c
18598 echo 'int bar2() { return 2; }' > bar2.c
18599 $cat > foo.c <<EOP
18600 #$i_stdlib I_STDLIB
18601 #ifdef I_STDLIB
18602 #include <stdlib.h>
18603 #endif
18604 int main() { printf("%d\n", bar1()); exit(0); }
18605 EOP
18606 $cc $ccflags -c bar1.c >/dev/null 2>&1
18607 $cc $ccflags -c bar2.c >/dev/null 2>&1
18608 $cc $ccflags -c foo.c >/dev/null 2>&1
18609 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18610 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18611         $run ./foobar >/dev/null 2>&1; then
18612         echo "$ar appears to generate random libraries itself."
18613         orderlib=false
18614         ranlib=":"
18615 elif $ar ts bar$_a >/dev/null 2>&1 &&
18616         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18617         $run ./foobar >/dev/null 2>&1; then
18618                 echo "a table of contents needs to be added with '$ar ts'."
18619                 orderlib=false
18620                 ranlib="$ar ts"
18621 else
18622         case "$ranlib" in
18623         :) ranlib='';;
18624         '')
18625                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18626                 $test -f $ranlib || ranlib=''
18627                 ;;
18628         esac
18629         if $test -n "$ranlib"; then
18630                 echo "your system has '$ranlib'; we'll use that."
18631                 orderlib=false
18632         else
18633                 echo "your system doesn't seem to support random libraries"
18634                 echo "so we'll use lorder and tsort to order the libraries."
18635                 orderlib=true
18636                 ranlib=":"
18637         fi
18638 fi
18639 $rm -f foo* bar* 
18640
18641 : check for type of arguments to select. 
18642 case "$selecttype" in
18643 '') case "$d_select" in
18644         $define)
18645                 echo " "
18646                 $cat <<EOM
18647 Checking to see what type of arguments are accepted by select().
18648 EOM
18649                 hdrs="$define sys/types.h
18650                         $i_systime sys/time.h 
18651                         $i_sysselct sys/select.h
18652                         $d_socket sys/socket.h"
18653                 : The first arg can be int, unsigned, or size_t
18654                 : The last arg may or may not be 'const'
18655                 val=''
18656                 : void pointer has been seen but using that
18657                 : breaks the selectminbits test
18658                 for xxx in 'fd_set *' 'int *'; do
18659                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18660                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18661                                         case "$val" in
18662                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18663                                                 if ./protochk "$try" $hdrs; then
18664                                                         echo "Your system accepts $xxx."
18665                                                         val="$xxx"
18666                                                 fi
18667                                                 ;;
18668                                         esac
18669                                 done
18670                         done
18671                 done
18672                 case "$val" in
18673                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18674                         case "$d_fd_set" in
18675                                 $define) dflt="fd_set *" ;;
18676                                 *)              dflt="int *" ;;
18677                         esac
18678                         . ./myread
18679                         val=$ans
18680                         ;;
18681                 esac
18682                 selecttype="$val"
18683                 ;;
18684         *)      : no select, so pick a harmless default
18685                 selecttype='int *'
18686                 ;;
18687         esac
18688         ;;
18689 esac
18690
18691 : check for the select 'width'
18692 case "$selectminbits" in
18693 '') safebits=`expr $ptrsize \* 8`
18694     case "$d_select" in
18695         $define)
18696                 $cat <<EOM
18697
18698 Checking to see on how many bits at a time your select() operates...
18699 EOM
18700                 $cat >try.c <<EOCP
18701 #include <sys/types.h>
18702 #$i_time I_TIME
18703 #$i_systime I_SYS_TIME
18704 #$i_systimek I_SYS_TIME_KERNEL
18705 #ifdef I_TIME
18706 #   include <time.h>
18707 #endif
18708 #ifdef I_SYS_TIME
18709 #   ifdef I_SYS_TIME_KERNEL
18710 #       define KERNEL
18711 #   endif
18712 #   include <sys/time.h>
18713 #   ifdef I_SYS_TIME_KERNEL
18714 #       undef KERNEL
18715 #   endif
18716 #endif
18717 #$i_sysselct I_SYS_SELECT
18718 #ifdef I_SYS_SELECT
18719 #include <sys/select.h>
18720 #endif
18721 #$d_socket HAS_SOCKET
18722 #ifdef HAS_SOCKET
18723 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18724 #endif
18725 #include <stdio.h>
18726 #$i_stdlib I_STDLIB
18727 #ifdef I_STDLIB
18728 #include <stdlib.h>
18729 #endif
18730 $selecttype b;
18731 #define S sizeof(*(b))
18732 #define MINBITS 64
18733 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18734 #define NBITS  (NBYTES * 8)
18735 int main() {
18736     char *s = malloc(NBYTES);
18737     struct timeval t;
18738     int i;
18739     FILE* fp;
18740     int fd;
18741
18742     if (!s)
18743         exit(1);
18744     fclose(stdin);
18745     fp = fopen("try.c", "r");
18746     if (fp == 0)
18747       exit(2);
18748     fd = fileno(fp);
18749     if (fd < 0)
18750       exit(3);
18751     b = ($selecttype)s;
18752     for (i = 0; i < NBITS; i++)
18753         FD_SET(i, b);
18754     t.tv_sec  = 0;
18755     t.tv_usec = 0;
18756     select(fd + 1, b, 0, 0, &t);
18757     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18758     free(s);
18759     printf("%d\n", i + 1);
18760     return 0;
18761 }
18762 EOCP
18763                 set try
18764                 if eval $compile_ok; then
18765                         selectminbits=`$run ./try`
18766                         case "$selectminbits" in
18767                         '')     cat >&4 <<EOM
18768 Cannot figure out on how many bits at a time your select() operates.
18769 I'll play safe and guess it is $safebits bits.
18770 EOM
18771                                 selectminbits=$safebits
18772                                 bits="$safebits bits"
18773                                 ;;
18774                         1)      bits="1 bit" ;;
18775                         *)      bits="$selectminbits bits" ;;
18776                         esac
18777                         echo "Your select() operates on $bits at a time." >&4
18778                 else
18779                         rp='What is the minimum number of bits your select() operates on?'
18780                         case "$byteorder" in
18781                         12345678)       dflt=64 ;;
18782                         1234)           dflt=32 ;;
18783                         *)              dflt=1  ;;
18784                         esac
18785                         . ./myread
18786                         val=$ans
18787                         selectminbits="$val"
18788                 fi
18789                 $rm -f try.* try
18790                 ;;
18791         *)      : no select, so pick a harmless default
18792                 selectminbits=$safebits
18793                 ;;
18794         esac
18795         ;;
18796 esac
18797
18798 : Trace out the files included by signal.h, then look for SIGxxx names.
18799 : Remove SIGARRAYSIZE used by HPUX.
18800 : Remove SIGSTKSIZE used by Linux.
18801 : Remove SIGSTKSZ used by Posix.
18802 : Remove SIGTYP void lines used by OS2.
18803 : Some cpps, like os390, dont give the file name anywhere
18804 if [ "X$fieldn" = X ]; then
18805         : Just make some guesses.  We check them later.
18806         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18807 else
18808         xxx=`echo '#include <signal.h>' |
18809         $cppstdin $cppminus $cppflags 2>/dev/null |
18810         $grep '^[       ]*#.*include' | 
18811         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18812 fi
18813 : Check this list of files to be sure we have parsed the cpp output ok.
18814 : This will also avoid potentially non-existent files, such 
18815 : as ../foo/bar.h
18816 xxxfiles=''
18817 for xx in $xxx /dev/null ; do
18818         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18819 done
18820 : If we have found no files, at least try signal.h
18821 case "$xxxfiles" in
18822 '')     xxxfiles=`./findhdr signal.h` ;;
18823 esac
18824 xxx=`awk '
18825 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18826         print substr($2, 4, 20)
18827 }
18828 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18829         print substr($3, 4, 20)
18830 }' $xxxfiles`
18831 : Append some common names just in case the awk scan failed.
18832 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18833 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18834 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18835 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18836 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18837
18838 : generate a few handy files for later
18839 $cat > signal.c <<EOCP
18840 #include <sys/types.h>
18841 #include <signal.h>
18842 #$i_stdlib I_STDLIB
18843 #ifdef I_STDLIB
18844 #include <stdlib.h>
18845 #endif
18846 #include <stdio.h>
18847 int main() {
18848
18849 /* Strange style to avoid deeply-nested #if/#else/#endif */
18850 #ifndef NSIG
18851 #  ifdef _NSIG
18852 #    define NSIG (_NSIG)
18853 #  endif
18854 #endif
18855
18856 #ifndef NSIG
18857 #  ifdef SIGMAX
18858 #    define NSIG (SIGMAX+1)
18859 #  endif
18860 #endif
18861
18862 #ifndef NSIG
18863 #  ifdef SIG_MAX
18864 #    define NSIG (SIG_MAX+1)
18865 #  endif
18866 #endif
18867
18868 #ifndef NSIG
18869 #  ifdef MAXSIG
18870 #    define NSIG (MAXSIG+1)
18871 #  endif
18872 #endif
18873
18874 #ifndef NSIG
18875 #  ifdef MAX_SIG
18876 #    define NSIG (MAX_SIG+1)
18877 #  endif
18878 #endif
18879
18880 #ifndef NSIG
18881 #  ifdef SIGARRAYSIZE
18882 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18883 #  endif
18884 #endif
18885
18886 #ifndef NSIG
18887 #  ifdef _sys_nsig
18888 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18889 #  endif
18890 #endif
18891
18892 /* Default to some arbitrary number that's big enough to get most
18893    of the common signals.
18894 */
18895 #ifndef NSIG
18896 #    define NSIG 50
18897 #endif
18898
18899 printf("NSIG %d\n", NSIG);
18900
18901 #ifndef JUST_NSIG
18902
18903 EOCP
18904
18905 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18906 {
18907         printf "#ifdef SIG"; printf $1; printf "\n"
18908         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18909         printf $1; printf ");\n"
18910         printf "#endif\n"
18911 }
18912 END {
18913         printf "#endif /* JUST_NSIG */\n";
18914         printf "exit(0);\n}\n";
18915 }
18916 ' >>signal.c
18917 $cat >signal.awk <<'EOP'
18918 BEGIN { ndups = 0 }
18919 $1 ~ /^NSIG$/ { nsig = $2 }
18920 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18921     if ($2 > maxsig) { maxsig = $2 }
18922     if (sig_name[$2]) {
18923         dup_name[ndups] = $1
18924         dup_num[ndups] = $2
18925         ndups++ 
18926     }
18927     else {
18928         sig_name[$2] = $1
18929         sig_num[$2] = $2
18930     }
18931 }
18932 END { 
18933     if (nsig == 0) {
18934         nsig = maxsig + 1
18935     }
18936     printf("NSIG %d\n", nsig);
18937     for (n = 1; n < nsig; n++) {
18938         if (sig_name[n]) {
18939             printf("%s %d\n", sig_name[n], sig_num[n])
18940         }
18941         else {
18942             printf("NUM%d %d\n", n, n) 
18943         }
18944     }
18945     for (n = 0; n < ndups; n++) {
18946         printf("%s %d\n", dup_name[n], dup_num[n])
18947     }
18948 }
18949 EOP
18950 $cat >signal_cmd <<EOS
18951 $startsh
18952 if $test -s signal.lst; then
18953     echo "Using your existing signal.lst file"
18954         exit 0
18955 fi
18956 xxx="$xxx"
18957 EOS
18958 $cat >>signal_cmd <<'EOS'
18959
18960 set signal
18961 if eval $compile_ok; then
18962         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
18963 else
18964         echo "(I can't seem be able to compile the whole test program)" >&4
18965         echo "(I'll try it in little pieces.)" >&4
18966         set signal -DJUST_NSIG
18967         if eval $compile_ok; then
18968                 $run ./signal$_exe > signal.nsg
18969                 $cat signal.nsg
18970         else
18971                 echo "I can't seem to figure out how many signals you have." >&4
18972                 echo "Guessing 50." >&4
18973                 echo 'NSIG 50' > signal.nsg
18974         fi
18975         : Now look at all the signal names, one at a time.
18976         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
18977                 $cat > signal.c <<EOCP
18978 #include <sys/types.h>
18979 #include <signal.h>
18980 #include <stdio.h>
18981 int main() {
18982 printf("$xx %d\n", SIG${xx});
18983 return 0;
18984 }
18985 EOCP
18986                 set signal
18987                 if eval $compile; then
18988                         echo "SIG${xx} found."
18989                         $run ./signal$_exe  >> signal.ls1
18990                 else
18991                         echo "SIG${xx} NOT found."
18992                 fi
18993         done
18994         if $test -s signal.ls1; then
18995                 $cat signal.nsg signal.ls1 |
18996                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
18997         fi
18998
18999 fi
19000 if $test -s signal.lst; then
19001         :
19002 else
19003         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19004         echo 'kill -l' >signal
19005         set X `csh -f <signal`
19006         $rm -f signal
19007         shift
19008         case $# in
19009         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19010         esac
19011         echo $@ | $tr ' ' $trnl | \
19012             $awk '{ printf "%s %d\n", $1, ++s; }
19013                   END { printf "NSIG %d\n", ++s }' >signal.lst
19014 fi
19015 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19016 EOS
19017 chmod a+x signal_cmd
19018 $eunicefix signal_cmd
19019
19020 : generate list of signal names
19021 echo " "
19022 case "$sig_name_init" in
19023 '') doinit=yes ;;
19024 *)  case "$sig_num_init" in
19025     ''|*,*) doinit=yes ;;
19026     esac ;;
19027 esac
19028 case "$doinit" in
19029 yes)
19030         echo "Generating a list of signal names and numbers..." >&4
19031         . ./signal_cmd
19032         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19033         sig_name=`$awk 'BEGIN { printf "ZERO " }
19034                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19035         sig_num=`$awk  'BEGIN { printf "0 " }
19036                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19037         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19038                              !/^NSIG/   { printf "\"%s\", ", $1 }
19039                              END        { printf "0\n" }' signal.lst`
19040         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19041                              !/^NSIG/   { printf "%d, ", $2}
19042                              END        { printf "0\n"}' signal.lst`
19043         ;;
19044 esac
19045 echo "The following $sig_count signals are available:"
19046 echo " "
19047 echo $sig_name | $awk \
19048 'BEGIN { linelen = 0 }
19049 {
19050         for (i = 1; i <= NF; i++) {
19051                 name = "SIG" $i " "
19052                 linelen = linelen + length(name)
19053                 if (linelen > 70) {
19054                         printf "\n"
19055                         linelen = length(name)
19056                 }
19057                 printf "%s", name
19058         }
19059         printf "\n"
19060 }'
19061 sig_size=`echo $sig_name | awk '{print NF}'`
19062 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19063
19064 echo " "
19065 case "$sizetype" in
19066 *_t) zzz="$sizetype"    ;;
19067 *)   zzz="filesize"     ;;
19068 esac
19069 echo "Checking the size of $zzz..." >&4 
19070 cat > try.c <<EOCP
19071 #include <sys/types.h>
19072 #include <stdio.h>
19073 #$i_stdlib I_STDLIB
19074 #ifdef I_STDLIB
19075 #include <stdlib.h>
19076 #endif
19077 int main() {
19078     printf("%d\n", (int)sizeof($sizetype));
19079     exit(0);
19080 }
19081 EOCP
19082 set try
19083 if eval $compile_ok; then
19084         yyy=`$run ./try`
19085         case "$yyy" in
19086         '')     sizesize=4
19087                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19088                 ;;
19089         *)      sizesize=$yyy
19090                 echo "Your $zzz size is $sizesize bytes."
19091                 ;;
19092         esac
19093 else
19094         sizesize=4
19095         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19096 fi
19097
19098
19099 : check for socklen_t
19100 echo " "
19101 echo "Checking to see if you have socklen_t..." >&4
19102 $cat >try.c <<EOCP
19103 #include <sys/types.h>
19104 #$d_socket HAS_SOCKET
19105 #ifdef HAS_SOCKET
19106 #include <sys/socket.h>
19107 #endif
19108 int main() { socklen_t x = 16; }
19109 EOCP
19110 set try
19111 if eval $compile; then
19112         val="$define"
19113         echo "You have socklen_t."
19114 else
19115         val="$undef"
19116         echo "You do not have socklen_t."
19117         case "$sizetype" in
19118         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19119         esac
19120 fi
19121 $rm -f try try.*
19122 set d_socklen_t
19123 eval $setvar
19124
19125 : see if this is a socks.h system
19126 set socks.h i_socks
19127 eval $inhdr
19128
19129 : check for type of the size argument to socket calls
19130 case "$d_socket" in
19131 "$define")
19132         $cat <<EOM
19133
19134 Checking to see what type is the last argument of accept().
19135 EOM
19136         yyy=''
19137         case "$d_socklen_t" in
19138         "$define") yyy="$yyy socklen_t"
19139         esac
19140         yyy="$yyy $sizetype int long unsigned"
19141         for xxx in $yyy; do
19142                 case "$socksizetype" in
19143                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19144                         case "$usesocks" in
19145                         "$define")
19146                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19147                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19148                                         socksizetype="$xxx"
19149                                 fi
19150                                 ;;
19151                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19152                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19153                                         socksizetype="$xxx"
19154                                 fi
19155                                 ;;
19156                         esac
19157                         ;;
19158                 esac
19159         done
19160 : In case none of those worked, prompt the user.
19161         case "$socksizetype" in
19162         '')     rp='What is the type for socket address structure sizes?'
19163                 dflt='int'
19164                 . ./myread
19165                 socksizetype=$ans
19166                 ;;
19167         esac
19168         ;;
19169 *)      : no sockets, so pick relatively harmless default
19170         socksizetype='int'
19171         ;;
19172 esac
19173
19174 : see what type is used for signed size_t
19175 set ssize_t ssizetype int stdio.h sys/types.h
19176 eval $typedef
19177 dflt="$ssizetype"
19178 $cat > try.c <<EOM
19179 #include <stdio.h>
19180 #$i_stdlib I_STDLIB
19181 #ifdef I_STDLIB
19182 #include <stdlib.h>
19183 #endif
19184 #include <sys/types.h>
19185 #define Size_t $sizetype
19186 #define SSize_t $dflt
19187 int main()
19188 {
19189         if (sizeof(Size_t) == sizeof(SSize_t))
19190                 printf("$dflt\n");
19191         else if (sizeof(Size_t) == sizeof(int))
19192                 printf("int\n");
19193         else 
19194                 printf("long\n");
19195         exit(0);
19196 }
19197 EOM
19198 echo " "
19199 set try
19200 if eval $compile_ok && $run ./try > /dev/null; then
19201         ssizetype=`$run ./try`
19202         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19203 else
19204         $cat >&4 <<EOM
19205 Help! I can't compile and run the ssize_t test program: please enlighten me!
19206 (This is probably a misconfiguration in your system or libraries, and
19207 you really ought to fix it.  Still, I'll try anyway.)
19208
19209 I need a type that is the same size as $sizetype, but is guaranteed to
19210 be signed.  Common values are ssize_t, int and long.
19211
19212 EOM
19213         rp="What signed type is the same size as $sizetype?"
19214         . ./myread
19215         ssizetype="$ans"
19216 fi
19217 $rm -f try try.*
19218
19219 : see what type of char stdio uses.
19220 echo " "
19221 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19222 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19223         echo "Your stdio uses unsigned chars." >&4
19224         stdchar="unsigned char"
19225 else
19226         echo "Your stdio uses signed chars." >&4
19227         stdchar="char"
19228 fi
19229 $rm -f stdioh
19230
19231
19232
19233 : see what type uids are declared as in the kernel
19234 echo " "
19235 echo "Looking for the type for user ids returned by getuid()."
19236 set uid_t uidtype xxx stdio.h sys/types.h
19237 eval $typedef
19238 case "$uidtype" in
19239 xxx)
19240         xxx=`./findhdr sys/user.h`
19241         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19242         case $1 in
19243         unsigned) dflt="$1 $2" ;;
19244         *) dflt="$1" ;;
19245         esac
19246         ;;
19247 *) dflt="$uidtype";;
19248 esac
19249 case "$uidtype" in
19250 uid_t)  echo "uid_t found." ;;
19251 *)      rp="What is the type for user ids returned by getuid()?"
19252         . ./myread
19253         uidtype="$ans"
19254         ;;
19255 esac
19256
19257 echo " "
19258 case "$uidtype" in
19259 *_t) zzz="$uidtype"     ;;
19260 *)   zzz="uid"          ;;
19261 esac
19262 echo "Checking the size of $zzz..." >&4 
19263 cat > try.c <<EOCP
19264 #include <sys/types.h>
19265 #include <stdio.h>
19266 #$i_stdlib I_STDLIB
19267 #ifdef I_STDLIB
19268 #include <stdlib.h>
19269 #endif
19270 int main() {
19271     printf("%d\n", (int)sizeof($uidtype));
19272     exit(0);
19273 }
19274 EOCP
19275 set try
19276 if eval $compile_ok; then
19277         yyy=`$run ./try`
19278         case "$yyy" in
19279         '')     uidsize=4
19280                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19281                 ;;
19282         *)      uidsize=$yyy
19283                 echo "Your $zzz is $uidsize bytes long."
19284                 ;;
19285         esac
19286 else
19287         uidsize=4
19288         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19289 fi
19290
19291 echo " "
19292 case "$uidtype" in
19293 *_t) zzz="$uidtype"     ;;
19294 *)   zzz="uid"          ;;
19295 esac
19296 echo "Checking the sign of $zzz..." >&4
19297 cat > try.c <<EOCP
19298 #include <sys/types.h>
19299 #include <stdio.h>
19300 int main() {
19301         $uidtype foo = -1;
19302         if (foo < 0)
19303                 printf("-1\n");
19304         else
19305                 printf("1\n");
19306 }
19307 EOCP
19308 set try
19309 if eval $compile; then
19310         yyy=`$run ./try`
19311         case "$yyy" in
19312         '')     uidsign=1
19313                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19314                 ;;
19315         *)      uidsign=$yyy
19316                 case "$uidsign" in
19317                  1) echo "Your $zzz is unsigned." ;;
19318                 -1) echo "Your $zzz is signed."   ;;
19319                 esac
19320                 ;;
19321         esac
19322 else
19323         uidsign=1
19324         echo "(I can't compile the test program--guessing unsigned.)" >&4
19325 fi
19326
19327
19328
19329 echo " "
19330 $echo "Checking the format string to be used for uids..." >&4
19331
19332 case "$uidsign" in
19333 -1)     if $test X"$uidsize" = X"$ivsize"; then
19334                 uidformat="$ivdformat"
19335         else
19336                 if $test X"$uidsize" = X"$longsize"; then
19337                         uidformat='"ld"'
19338                 else
19339                         if $test X"$uidsize" = X"$intsize"; then
19340                                 uidformat='"d"'
19341                         else
19342                                 if $test X"$uidsize" = X"$shortsize"; then
19343                                         uidformat='"hd"'
19344                                 fi
19345                         fi
19346                 fi
19347         fi
19348         ;;
19349 *)      if $test X"$uidsize" = X"$uvsize"; then
19350                 uidformat="$uvuformat"
19351         else
19352                 if $test X"$uidsize" = X"$longsize"; then
19353                         uidformat='"lu"'
19354                 else
19355                         if $test X"$uidsize" = X"$intsize"; then
19356                                 uidformat='"u"'
19357                         else
19358                                 if $test X"$uidsize" = X"$shortsize"; then
19359                                         uidformat='"hu"'
19360                                 fi
19361                         fi
19362                 fi
19363         fi
19364         ;;
19365 esac
19366
19367 : determine compiler compiler
19368 case "$yacc" in
19369 '')
19370         dflt=yacc;;
19371 *)
19372         dflt="$yacc";;
19373 esac
19374 echo " "
19375 comp='yacc'
19376 if $test -f "$byacc$_exe"; then
19377         dflt="$byacc"
19378         comp="byacc or $comp"
19379 fi
19380 if $test -f "$bison$_exe"; then
19381         comp="$comp or bison -y"
19382 fi
19383 rp="Which compiler compiler ($comp) shall I use?"
19384 . ./myread
19385 yacc="$ans"
19386 case "$yacc" in
19387 *bis*)
19388         case "$yacc" in
19389         *-y*) ;;
19390         *)
19391                 yacc="$yacc -y"
19392                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19393                 ;;
19394         esac
19395         ;;
19396 esac
19397
19398 : see if this is a fp.h system
19399 set fp.h i_fp
19400 eval $inhdr
19401
19402 : see if this is a fp_class.h system
19403 set fp_class.h i_fp_class
19404 eval $inhdr
19405
19406 : see if this is a ieeefp.h system
19407 case "$i_ieeefp" in
19408 '' ) set ieeefp.h i_ieeefp
19409      eval $inhdr
19410      ;;
19411 esac
19412
19413 : see if this is a libutil.h system
19414 set libutil.h i_libutil
19415 eval $inhdr
19416
19417 : see if mach cthreads are available
19418 if test "X$usethreads" = "X$define"; then
19419         set mach/cthreads.h i_machcthr
19420         eval $inhdr
19421 else
19422         i_machcthr="$undef"
19423 fi
19424
19425
19426
19427 : see if this is a math.h system
19428 set math.h i_math
19429 eval $inhdr
19430
19431 : see if this is a mntent.h system
19432 set mntent.h i_mntent
19433 eval $inhdr
19434
19435 : see if ndbm.h is available
19436 set ndbm.h t_ndbm
19437 eval $inhdr
19438
19439 case "$t_ndbm" in
19440 $undef)
19441     # Some Linux distributions such as RedHat 7.1 put the
19442     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19443     if $test -f /usr/include/gdbm/ndbm.h; then
19444         echo '<gdbm/ndbm.h> found.'
19445         ccflags="$ccflags -I/usr/include/gdbm"
19446         cppflags="$cppflags -I/usr/include/gdbm"
19447         t_ndbm=$define
19448     fi
19449     ;;
19450 esac
19451
19452 case "$t_ndbm" in
19453 $define)
19454         : see if dbm_open exists
19455         set dbm_open d_dbm_open
19456         eval $inlibc
19457         case "$d_dbm_open" in
19458         $undef)
19459                 t_ndbm="$undef"
19460                 echo "We won't be including <ndbm.h>"
19461                 ;;
19462         esac
19463         ;;
19464 esac
19465 val="$t_ndbm"
19466 set i_ndbm
19467 eval $setvar
19468
19469 : see if net/errno.h is available
19470 val=''
19471 set net/errno.h val
19472 eval $inhdr
19473
19474 : Unfortunately, it causes problems on some systems.  Arrgh.
19475 case "$val" in
19476 $define)
19477         cat > try.c <<'EOM'
19478 #include <stdio.h>
19479 #include <errno.h>
19480 #include <net/errno.h>
19481 int func()
19482 {
19483         return ENOTSOCK;
19484 }
19485 EOM
19486         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19487                 echo "We'll be including <net/errno.h>." >&4
19488         else
19489                 echo "We won't be including <net/errno.h>." >&4
19490                 val="$undef"
19491         fi
19492         $rm -f try.* try
19493         ;;
19494 esac
19495 set i_neterrno
19496 eval $setvar
19497
19498 : see if netinet/tcp.h is available
19499 set netinet/tcp.h i_netinettcp
19500 eval $inhdr
19501
19502 : see if this is a poll.h system
19503 set poll.h i_poll
19504 eval $inhdr
19505
19506 : see if this is a prot.h system
19507 set prot.h i_prot
19508 eval $inhdr
19509
19510 echo " "
19511 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19512 $cat <<'EOSH' > Cppsym.know
19513 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19514 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19515 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19516 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19517 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19518 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19519 bull c cadmus clipper CMU COFF COMPILER_VERSION
19520 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19521 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19522 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19523 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19524 GLIBC GLIBC_MINOR
19525 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19526 H3050R H3050RX hbullx20 hcx host_mips
19527 hp200 hp300 hp700 HP700 hp800 hp9000
19528 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19529 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19530 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19531 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19532 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19533 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19534 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19535 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19536 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19537 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19538 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19539 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19540 MATH_HAS_NO_SIDE_EFFECTS
19541 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19542 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19543 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19544 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19545 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19546 NetBSD news1500 news1700 news1800 news1900 news3700
19547 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19548 ns32016 ns32332 ns32k nsc32000
19549 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19550 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19551 pc532 pdp11 PGC PIC plexus PORTAR posix
19552 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19553 POSIX_C_SOURCE POSIX_SOURCE POWER
19554 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19555 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19556 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19557 sony sony_news sonyrisc sparc sparclite spectrum
19558 stardent stdc STDC_EXT stratos sun sun3 sun386
19559 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19560 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19561 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19562 sysV68 sysV88 Tek4132 Tek4300 titan
19563 TM3200 TM5400 TM5600
19564 tower tower32 tower32_200 tower32_600 tower32_700
19565 tower32_800 tower32_850 tss
19566 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19567 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19568 unix UNIX95 UNIX99 unixpc unos
19569 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19570 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19571 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19572 USGr4 USGr4_2
19573 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19574 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19575 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19576 z8000
19577 EOSH
19578 # Maybe put other stuff here too.
19579 cat <<EOSH >>Cppsym.know
19580 $osname
19581 EOSH
19582 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19583 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19584 $cat Cppsym.know > Cppsym.c
19585 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19586 $rm -f Cppsym.a Cppsym.b Cppsym.c
19587 cat <<EOSH > Cppsym
19588 $startsh
19589 if $test \$# -gt 0; then
19590     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19591     if $test -s Cppsym.got; then
19592         $rm -f Cppsym.got
19593         exit 0
19594     fi
19595     $rm -f Cppsym.got
19596     exit 1
19597 else
19598     $tr " " "$trnl" | ./Cppsym.try
19599     exit 0
19600 fi
19601 EOSH
19602 chmod +x Cppsym
19603 $eunicefix Cppsym
19604 cat <<EOSH > Cppsym.try
19605 $startsh
19606 cat <<'EOCP' > try.c
19607 #include <stdio.h>
19608 int main() {
19609 EOCP
19610 $awk \\
19611 EOSH
19612 cat <<'EOSH' >> Cppsym.try
19613 'length($1) > 0 {
19614     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
19615     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
19616     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
19617     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
19618 }'       >> try.c
19619 echo 'return 0;}' >> try.c
19620 EOSH
19621 cat <<EOSH >> Cppsym.try
19622 ccflags="$ccflags"
19623 case "$osname-$gccversion" in
19624 irix-) ccflags="\$ccflags -woff 1178" ;;
19625 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19626 esac
19627 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19628 EOSH
19629 chmod +x Cppsym.try
19630 $eunicefix Cppsym.try
19631 ./Cppsym < Cppsym.know > Cppsym.true
19632 : now check the C compiler for additional symbols
19633 postprocess_cc_v=''
19634 case "$osname" in
19635 aix) postprocess_cc_v="|$tr , ' '" ;;
19636 esac
19637 $cat >ccsym <<EOS
19638 $startsh
19639 $cat >tmp.c <<EOF
19640 extern int foo;
19641 EOF
19642 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19643 do
19644         case "\$i" in
19645         -D*) echo "\$i" | $sed 's/^-D//';;
19646         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19647         esac
19648 done
19649 $rm -f try.c
19650 EOS
19651 postprocess_cc_v=''
19652 chmod +x ccsym
19653 $eunicefix ccsym
19654 ./ccsym > ccsym1.raw
19655 if $test -s ccsym1.raw; then
19656        $sort ccsym1.raw | $uniq >ccsym.raw
19657 else
19658        mv ccsym1.raw ccsym.raw
19659 fi
19660
19661 $awk '/\=/ { print $0; next }
19662         { print $0"=1" }' ccsym.raw >ccsym.list
19663 $awk '/\=/ { print $0; next }
19664         { print $0"=1" }' Cppsym.true >ccsym.true
19665 $comm -13 ccsym.true ccsym.list >ccsym.own
19666 $comm -12 ccsym.true ccsym.list >ccsym.com
19667 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19668 also=''
19669 if $test -z ccsym.raw; then
19670         echo "Your C compiler doesn't seem to define any symbols!" >&4
19671         echo " "
19672         echo "However, your C preprocessor defines the following symbols:"
19673         $cat Cppsym.true
19674         ccsymbols=''
19675         cppsymbols=`$cat Cppsym.true`
19676         cppsymbols=`echo $cppsymbols`
19677         cppccsymbols="$cppsymbols"
19678 else
19679         if $test -s ccsym.com; then
19680                 echo "Your C compiler and pre-processor define these symbols:"
19681                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19682                 also='also '
19683                 symbols='ones'
19684                 cppccsymbols=`$cat ccsym.com`
19685                 cppccsymbols=`echo $cppccsymbols`
19686                 $test "$silent" || sleep 1
19687         fi
19688         if $test -s ccsym.cpp; then
19689                 $test "$also" && echo " "
19690                 echo "Your C pre-processor ${also}defines the following symbols:"
19691                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19692                 also='further '
19693                 cppsymbols=`$cat ccsym.cpp`
19694                 cppsymbols=`echo $cppsymbols`
19695                 $test "$silent" || sleep 1
19696         fi
19697         if $test -s ccsym.own; then
19698                 $test "$also" && echo " "
19699                 echo "Your C compiler ${also}defines the following cpp symbols:"
19700                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19701                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19702                 ccsymbols=`$cat ccsym.own`
19703                 ccsymbols=`echo $ccsymbols`
19704                 $test "$silent" || sleep 1
19705         fi
19706 fi
19707
19708 : see if this is a termio system
19709 val="$undef"
19710 val2="$undef"
19711 val3="$undef"
19712 if $test `./findhdr termios.h`; then
19713         set tcsetattr i_termios
19714         eval $inlibc
19715         val3="$i_termios"
19716 fi
19717 echo " "
19718 case "$val3" in
19719 "$define") echo "You have POSIX termios.h... good!" >&4;;
19720 *) if ./Cppsym pyr; then
19721                 case "`/bin/universe`" in
19722                 ucb) if $test `./findhdr sgtty.h`; then
19723                                 val2="$define"
19724                                 echo "<sgtty.h> found." >&4
19725                         else
19726                                 echo "System is pyramid with BSD universe."
19727                                 echo "<sgtty.h> not found--you could have problems." >&4
19728                         fi;;
19729                 *) if $test `./findhdr termio.h`; then
19730                                 val="$define"
19731                                 echo "<termio.h> found." >&4
19732                         else
19733                                 echo "System is pyramid with USG universe."
19734                                 echo "<termio.h> not found--you could have problems." >&4
19735                         fi;;
19736                 esac
19737         elif ./usg; then
19738                 if $test `./findhdr termio.h`; then
19739                         echo "<termio.h> found." >&4
19740                         val="$define"
19741                 elif $test `./findhdr sgtty.h`; then
19742                         echo "<sgtty.h> found." >&4
19743                         val2="$define"
19744                 else
19745 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19746                 fi
19747         else
19748                 if $test `./findhdr sgtty.h`; then
19749                         echo "<sgtty.h> found." >&4
19750                         val2="$define"
19751                 elif $test `./findhdr termio.h`; then
19752                         echo "<termio.h> found." >&4
19753                         val="$define"
19754                 else
19755 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19756                 fi
19757         fi;;
19758 esac
19759 set i_termio; eval $setvar
19760 val=$val2; set i_sgtty; eval $setvar
19761 val=$val3; set i_termios; eval $setvar
19762
19763 : see if stddef is available
19764 set stddef.h i_stddef
19765 eval $inhdr
19766
19767 : see if this is a sunmath.h system
19768 set sunmath.h i_sunmath
19769 eval $inhdr
19770
19771 : see if sys/access.h is available
19772 set sys/access.h i_sysaccess
19773 eval $inhdr
19774
19775 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19776 set sys/filio.h i_sysfilio
19777 eval $inhdr
19778 echo " "
19779 if $test `./findhdr sys/ioctl.h`; then
19780         val="$define"
19781         echo '<sys/ioctl.h> found.' >&4
19782 else
19783         val="$undef"
19784         if $test $i_sysfilio = "$define"; then
19785             echo '<sys/ioctl.h> NOT found.' >&4
19786         else
19787                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19788                 $test $i_termio = "$define" && xxx="termio.h"
19789                 $test $i_termios = "$define" && xxx="termios.h"
19790 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19791         fi
19792 fi
19793 set i_sysioctl
19794 eval $setvar
19795
19796 : see if socket ioctl defs are in sys/sockio.h
19797 echo " "
19798 xxx=`./findhdr sys/sockio.h`
19799 if $test "$xxx"; then
19800         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19801                 val="$define"
19802                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19803         else
19804                 val="$undef"
19805                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19806         fi
19807 else
19808         val="$undef"
19809         $cat <<EOM
19810 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19811 EOM
19812 fi
19813 set i_syssockio
19814 eval $setvar
19815
19816
19817 : see if this is a syslog.h system
19818 set syslog.h i_syslog
19819 eval $inhdr
19820
19821
19822 : see if this is a sys/mode.h system
19823 set sys/mode.h i_sysmode
19824 eval $inhdr
19825
19826 : see if sys/resource.h has to be included
19827 set sys/resource.h i_sysresrc
19828 eval $inhdr
19829
19830 : see if sys/security.h is available
19831 set sys/security.h i_syssecrt
19832 eval $inhdr
19833
19834 : see if this is a sys/statvfs.h system
19835 set sys/statvfs.h i_sysstatvfs
19836 eval $inhdr
19837
19838 : see if this is a sys/un.h system
19839 set sys/un.h i_sysun
19840 eval $inhdr
19841
19842
19843 : see if this is a sys/utsname.h system
19844 set sys/utsname.h i_sysutsname
19845 eval $inhdr
19846
19847 : see if this is a syswait system
19848 set sys/wait.h i_syswait
19849 eval $inhdr
19850
19851 : see if this is a ustat.h system
19852 set ustat.h i_ustat
19853 eval $inhdr
19854
19855 : see if this is an utime system
19856 set utime.h i_utime
19857 eval $inhdr
19858
19859 : see if this is a values.h system
19860 set values.h i_values
19861 eval $inhdr
19862
19863 : see if this is a vfork system
19864 case "$d_vfork" in
19865 "$define")
19866         set vfork.h i_vfork
19867         eval $inhdr
19868         ;;
19869 *)
19870         i_vfork="$undef"
19871         ;;
19872 esac
19873
19874 : see if gdbm.h is available
19875 set gdbm.h t_gdbm
19876 eval $inhdr
19877 case "$t_gdbm" in
19878 $define)
19879         : see if gdbm_open exists
19880         set gdbm_open d_gdbm_open
19881         eval $inlibc
19882         case "$d_gdbm_open" in
19883         $undef)
19884                 t_gdbm="$undef"
19885                 echo "We won't be including <gdbm.h>"
19886                 ;;
19887         esac
19888         ;;
19889 esac
19890 val="$t_gdbm"
19891 set i_gdbm
19892 eval $setvar
19893
19894 echo " "
19895 echo "Looking for extensions..." >&4
19896 : If we are using the old config.sh, known_extensions may contain
19897 : old or inaccurate or duplicate values.
19898 known_extensions=''
19899 nonxs_extensions=''
19900 : We do not use find because it might not be available.
19901 : We do not just use MANIFEST because the user may have dropped
19902 : some additional extensions into the source tree and expect them
19903 : to be built.
19904
19905 : Function to recursively find available extensions, ignoring DynaLoader
19906 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19907 find_extensions='
19908     for xxx in *; do
19909        case "$xxx" in
19910            DynaLoader|dynaload) ;;
19911            *)
19912            if $test -f $xxx/$xxx.xs; then
19913                known_extensions="$known_extensions $1$xxx";
19914            elif $test -f $xxx/Makefile.PL; then
19915                nonxs_extensions="$nonxs_extensions $1$xxx";
19916            else
19917                if $test -d $xxx -a $# -lt 10; then
19918                    set $1$xxx/ $*;
19919                    cd "$xxx";
19920                    eval $find_extensions;
19921                    cd ..;
19922                    shift;
19923                fi;
19924            fi
19925            ;;
19926        esac;
19927     done'
19928 tdir=`pwd`
19929 cd "$rsrc/ext"
19930 set X
19931 shift
19932 eval $find_extensions
19933 # Special case:  Add in threads/shared since it is not picked up by the
19934 # recursive find above (and adding in general recursive finding breaks
19935 # SDBM_File/sdbm).  A.D.  10/25/2001.
19936 known_extensions="$known_extensions threads/shared"
19937 set X $nonxs_extensions
19938 shift
19939 nonxs_extensions="$*"
19940 set X $known_extensions
19941 shift
19942 known_extensions="$*"
19943 cd "$tdir"
19944
19945 : Now see which are supported on this system.
19946 avail_ext=''
19947 for xxx in $known_extensions ; do
19948         case "$xxx" in
19949         DB_File|db_file)
19950                 case "$i_db" in
19951                 $define) avail_ext="$avail_ext $xxx" ;;
19952                 esac
19953                 ;;
19954         GDBM_File|gdbm_fil)
19955                 case "$i_gdbm" in 
19956                 $define) avail_ext="$avail_ext $xxx" ;;
19957                 esac
19958                 ;;
19959         I18N/Langinfo|i18n_lan)
19960                 case "$i_langinfo$d_nl_langinfo" in 
19961                 $define$define) avail_ext="$avail_ext $xxx" ;;
19962                 esac
19963                 ;;
19964         NDBM_File|ndbm_fil)
19965                 case "$i_ndbm" in
19966                 $define)
19967                     case "$osname-$use64bitint" in
19968                     hpux-define)
19969                         case "$libs" in
19970                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
19971                         esac
19972                         ;;
19973                     *) avail_ext="$avail_ext $xxx" ;;
19974                     esac
19975                     ;;
19976                 esac
19977                 ;;
19978         ODBM_File|odbm_fil) 
19979                 case "${i_dbm}${i_rpcsvcdbm}" in
19980                 *"${define}"*)
19981                     case "$osname-$use64bitint" in
19982                     hpux-define)
19983                         case "$libs" in
19984                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
19985                         esac
19986                         ;;
19987                     *) avail_ext="$avail_ext $xxx" ;;
19988                     esac
19989                     ;;
19990                 esac
19991                 ;;
19992         POSIX|posix)
19993                 case "$useposix" in
19994                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19995                 esac
19996                 ;;
19997         Opcode|opcode)
19998                 case "$useopcode" in
19999                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20000                 esac
20001                 ;;
20002         Socket|socket)
20003                 case "$d_socket" in 
20004                 true|$define|y)
20005                     case "$osname" in
20006                     beos) ;; # not unless BONE
20007                     *) avail_ext="$avail_ext $xxx" ;;
20008                     esac
20009                     ;;
20010                 esac
20011                 ;;
20012         Sys/Syslog|sys/syslog)
20013                 : XXX syslog requires socket
20014                 case "$d_socket" in 
20015                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20016                 esac
20017                 ;;
20018         Thread|thread)
20019                 case "$usethreads" in
20020                 true|$define|y)
20021                         case "$useithreads" in
20022                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20023                         esac
20024                 esac
20025                 ;;
20026         XS/APItest|xs/apitest)
20027                 # This is just for testing.  Skip it unless we have dynamic loading.
20028
20029                 case "$usedl" in
20030                 $define) avail_ext="$avail_ext $xxx" ;;
20031                 esac
20032                 ;;
20033         XS/Typemap|xs/typemap)
20034                 # This is just for testing.  Skip it unless we have dynamic loading.
20035                 case "$usedl" in
20036                 $define) avail_ext="$avail_ext $xxx" ;;
20037                 esac
20038                 ;;
20039         threads|threads/shared)
20040                 # threads and threads::shared are special cases.
20041                 # To stop people from asking "Perl 5.8.0 was supposed
20042                 # to have this new fancy threads implementation but my
20043                 # perl doesn't have it" and from people trying to
20044                 # (re)install the threads module using CPAN.pm and
20045                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20046                 # the threads.pm and threads/shared.pm will always be
20047                 # there, croaking informatively ("you need to rebuild
20048                 # all of Perl with threads, sorry") when threads haven't
20049                 # been compiled in.
20050                 # --jhi
20051                 avail_ext="$avail_ext $xxx"
20052                 ;;
20053         IPC/SysV|ipc/sysv)
20054                 : XXX Do we need a useipcsysv variable here
20055                 case "${d_msg}${d_sem}${d_shm}" in 
20056                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20057                 esac
20058                 ;;
20059         *)      avail_ext="$avail_ext $xxx"
20060                 ;;
20061         esac
20062 done
20063
20064 set X $avail_ext
20065 shift
20066 avail_ext="$*"
20067
20068 : Now see which nonxs extensions are supported on this system.
20069 : For now assume all are.
20070 nonxs_ext=''
20071 for xxx in $nonxs_extensions ; do
20072         case "$xxx" in
20073         *)      nonxs_ext="$nonxs_ext $xxx"
20074                 ;;
20075         esac
20076 done
20077
20078 set X $nonxs_ext
20079 shift
20080 nonxs_ext="$*"
20081
20082 case $usedl in
20083 $define)
20084         $cat <<EOM
20085 A number of extensions are supplied with $package.  You may choose to
20086 compile these extensions for dynamic loading (the default), compile
20087 them into the $package executable (static loading), or not include
20088 them at all.  Answer "none" to include no extensions.
20089 Note that DynaLoader is always built and need not be mentioned here.
20090
20091 EOM
20092         case "$dynamic_ext" in
20093         '')
20094                 : Exclude those listed in static_ext
20095                 dflt=''
20096                 for xxx in $avail_ext; do
20097                         case " $static_ext " in
20098                         *" $xxx "*) ;;
20099                         *) dflt="$dflt $xxx" ;;
20100                         esac
20101                 done
20102                 set X $dflt
20103                 shift
20104                 dflt="$*"
20105                 ;;
20106         *)      dflt="$dynamic_ext"
20107                 # Perhaps we are reusing an old out-of-date config.sh.
20108                 case "$hint" in
20109                 previous)
20110                         if test X"$dynamic_ext" != X"$avail_ext"; then
20111                                 $cat <<EOM
20112 NOTICE:  Your previous config.sh list may be incorrect. 
20113 The extensions now available to you are 
20114         ${avail_ext}
20115 but the default list from your previous config.sh is
20116         ${dynamic_ext} 
20117
20118 EOM
20119                         fi
20120                         ;;
20121                 esac
20122                 ;;
20123         esac
20124         case "$dflt" in
20125         '')     dflt=none;;
20126         esac
20127         rp="What extensions do you wish to load dynamically?"
20128         . ./myread
20129         case "$ans" in
20130         none) dynamic_ext=' ' ;;
20131         *) dynamic_ext="$ans" ;;
20132         esac
20133
20134         case "$static_ext" in
20135         '')
20136                 : Exclude those already listed in dynamic linking
20137                 dflt=''
20138                 for xxx in $avail_ext; do
20139                         case " $dynamic_ext " in
20140                         *" $xxx "*) ;;
20141                         *) dflt="$dflt $xxx" ;;
20142                         esac
20143                 done
20144                 set X $dflt
20145                 shift
20146                 dflt="$*"
20147                 ;;
20148         *)  dflt="$static_ext" 
20149                 ;;
20150         esac
20151
20152         case "$dflt" in
20153         '')     dflt=none;;
20154         esac
20155         rp="What extensions do you wish to load statically?"
20156         . ./myread
20157         case "$ans" in
20158         none) static_ext=' ' ;;
20159         *) static_ext="$ans" ;;
20160         esac
20161         ;;
20162 *)
20163         $cat <<EOM
20164 A number of extensions are supplied with $package.  Answer "none" 
20165 to include no extensions. 
20166 Note that DynaLoader is always built and need not be mentioned here.
20167
20168 EOM
20169         case "$static_ext" in
20170         '') dflt="$avail_ext" ;;
20171         *)      dflt="$static_ext"
20172                 # Perhaps we are reusing an old out-of-date config.sh.
20173                 case "$hint" in
20174                 previous)
20175                         if test X"$static_ext" != X"$avail_ext"; then
20176                                 $cat <<EOM
20177 NOTICE:  Your previous config.sh list may be incorrect. 
20178 The extensions now available to you are 
20179         ${avail_ext}
20180 but the default list from your previous config.sh is
20181         ${static_ext} 
20182
20183 EOM
20184                         fi
20185                         ;;
20186                 esac
20187                 ;;
20188         esac
20189         : Exclude those that are not xs extensions
20190         case "$dflt" in
20191         '')     dflt=none;;
20192         esac
20193         rp="What extensions do you wish to include?"
20194         . ./myread
20195         case "$ans" in
20196         none) static_ext=' ' ;;
20197         *) static_ext="$ans" ;;
20198         esac
20199         ;;
20200 esac
20201 #        
20202 # Encode is a special case.  If we are building Encode as a static
20203 # extension, we need to explicitly list its subextensions as well.
20204 # For other nested extensions, this is handled automatically by
20205 # the appropriate Makefile.PL.
20206 case " $static_ext " in
20207         *" Encode "*) # Add the subextensions of Encode
20208         cd "$rsrc/ext"
20209         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20210                 static_ext="$static_ext Encode/$xxx"
20211         done
20212         cd "$tdir"
20213         ;;
20214 esac
20215
20216 set X $dynamic_ext $static_ext $nonxs_ext
20217 shift
20218 extensions="$*"
20219
20220 case "$onlyextensions" in
20221 '') ;;
20222 *)  keepextensions=''
20223     echo "You have requested that only certains extensions be included..." >&4
20224     for i in $onlyextensions; do
20225         case " $extensions " in
20226         *" $i "*)
20227             echo "Keeping extension $i."
20228             keepextensions="$keepextensions $i"
20229             ;;
20230         *) echo "Ignoring extension $i." ;;
20231         esac
20232     done
20233     extensions="$keepextensions"
20234     ;;
20235 esac
20236
20237 case "$noextensions" in
20238 '') ;;
20239 *)  keepextensions=''
20240     echo "You have requested that certain extensions be ignored..." >&4
20241     for i in $extensions; do
20242         case " $i " in
20243         " $noextensions ") echo "Ignoring extension $i." ;;
20244         *) echo "Keeping extension $i.";
20245            keepextensions="$keepextensions $i"
20246            ;;
20247         esac
20248     done
20249     extensions="$keepextensions"
20250     ;;
20251 esac
20252
20253 case "$extensions" in
20254 *"_File "*" Fcntl "*" IO "*) ;;
20255 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20256    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20257    ;;
20258 esac
20259
20260 : Remove libraries needed only for extensions
20261 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20262 : The exception is SunOS 4.x, which needs them.
20263 case "${osname}X${osvers}" in
20264 sunos*X4*)
20265     perllibs="$libs"
20266     ;;
20267 *) case "$usedl" in
20268     $define|true|[yY]*)
20269             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20270             shift
20271             perllibs="$*"
20272             ;;
20273     *)  perllibs="$libs"
20274             ;;
20275     esac
20276     ;;
20277 esac
20278
20279 : Remove build directory name from cppstdin so it can be used from
20280 : either the present location or the final installed location.
20281 echo " "
20282 : Get out of the UU directory to get correct path name.
20283 cd ..
20284 case "$cppstdin" in
20285 `pwd`/cppstdin)
20286         echo "Stripping down cppstdin path name"
20287         cppstdin=cppstdin
20288         ;;
20289 esac
20290 cd UU
20291
20292 : end of configuration questions
20293 echo " "
20294 echo "End of configuration questions."
20295 echo " "
20296
20297 : back to where it started
20298 if test -d ../UU; then
20299         cd ..
20300 fi
20301
20302 : configuration may be patched via a 'config.arch' file
20303 if $test -f config.arch; then
20304         echo "I see a config.arch file, loading it."
20305         . ./config.arch
20306 fi
20307
20308 : configuration may be patched via a 'config.over' file
20309 if $test -f config.over; then
20310         echo " "
20311         dflt=y
20312         rp='I see a config.over file.  Do you wish to load it?'
20313         . UU/myread
20314         case "$ans" in
20315         n*) echo "OK, I'll ignore it.";;
20316         *)      . ./config.over
20317                 echo "Configuration override changes have been loaded."
20318                 ;;
20319         esac
20320 fi
20321
20322 : in case they want portability, strip down executable paths
20323 case "$d_portable" in
20324 "$define")
20325         echo " "
20326         echo "Stripping down executable paths..." >&4
20327         for file in $loclist $trylist; do
20328                 eval temp=\$$file
20329                 eval $file=`basename $temp`
20330         done
20331         ;;
20332 esac
20333
20334 : create config.sh file
20335 echo " "
20336 echo "Creating config.sh..." >&4
20337 $spitshell <<EOT >config.sh
20338 $startsh
20339 #
20340 # This file was produced by running the Configure script. It holds all the
20341 # definitions figured out by Configure. Should you modify one of these values,
20342 # do not forget to propagate your changes by running "Configure -der". You may
20343 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20344 #
20345
20346 # Package name      : $package
20347 # Source directory  : $src
20348 # Configuration time: $cf_time
20349 # Configured by     : $cf_by
20350 # Target system     : $myuname
20351
20352 Author='$Author'
20353 Date='$Date'
20354 Header='$Header'
20355 Id='$Id'
20356 Locker='$Locker'
20357 Log='$Log'
20358 Mcc='$Mcc'
20359 RCSfile='$RCSfile'
20360 Revision='$Revision'
20361 Source='$Source'
20362 State='$State'
20363 _a='$_a'
20364 _exe='$_exe'
20365 _o='$_o'
20366 afs='$afs'
20367 afsroot='$afsroot'
20368 alignbytes='$alignbytes'
20369 ansi2knr='$ansi2knr'
20370 aphostname='$aphostname'
20371 api_revision='$api_revision'
20372 api_subversion='$api_subversion'
20373 api_version='$api_version'
20374 api_versionstring='$api_versionstring'
20375 ar='$ar'
20376 archlib='$archlib'
20377 archlibexp='$archlibexp'
20378 archname64='$archname64'
20379 archname='$archname'
20380 archobjs='$archobjs'
20381 asctime_r_proto='$asctime_r_proto'
20382 awk='$awk'
20383 baserev='$baserev'
20384 bash='$bash'
20385 bin='$bin'
20386 binexp='$binexp'
20387 bison='$bison'
20388 byacc='$byacc'
20389 byteorder='$byteorder'
20390 c='$c'
20391 castflags='$castflags'
20392 cat='$cat'
20393 cc='$cc'
20394 cccdlflags='$cccdlflags'
20395 ccdlflags='$ccdlflags'
20396 ccflags='$ccflags'
20397 ccflags_uselargefiles='$ccflags_uselargefiles'
20398 ccname='$ccname'
20399 ccsymbols='$ccsymbols'
20400 ccversion='$ccversion'
20401 cf_by='$cf_by'
20402 cf_email='$cf_email'
20403 cf_time='$cf_time'
20404 charsize='$charsize'
20405 chgrp='$chgrp'
20406 chmod='$chmod'
20407 chown='$chown'
20408 clocktype='$clocktype'
20409 comm='$comm'
20410 compress='$compress'
20411 contains='$contains'
20412 cp='$cp'
20413 cpio='$cpio'
20414 cpp='$cpp'
20415 cpp_stuff='$cpp_stuff'
20416 cppccsymbols='$cppccsymbols'
20417 cppflags='$cppflags'
20418 cpplast='$cpplast'
20419 cppminus='$cppminus'
20420 cpprun='$cpprun'
20421 cppstdin='$cppstdin'
20422 cppsymbols='$cppsymbols'
20423 crypt_r_proto='$crypt_r_proto'
20424 cryptlib='$cryptlib'
20425 csh='$csh'
20426 ctermid_r_proto='$ctermid_r_proto'
20427 ctime_r_proto='$ctime_r_proto'
20428 d_Gconvert='$d_Gconvert'
20429 d_PRIEUldbl='$d_PRIEUldbl'
20430 d_PRIFUldbl='$d_PRIFUldbl'
20431 d_PRIGUldbl='$d_PRIGUldbl'
20432 d_PRIXU64='$d_PRIXU64'
20433 d_PRId64='$d_PRId64'
20434 d_PRIeldbl='$d_PRIeldbl'
20435 d_PRIfldbl='$d_PRIfldbl'
20436 d_PRIgldbl='$d_PRIgldbl'
20437 d_PRIi64='$d_PRIi64'
20438 d_PRIo64='$d_PRIo64'
20439 d_PRIu64='$d_PRIu64'
20440 d_PRIx64='$d_PRIx64'
20441 d_SCNfldbl='$d_SCNfldbl'
20442 d__fwalk='$d__fwalk'
20443 d_access='$d_access'
20444 d_accessx='$d_accessx'
20445 d_aintl='$d_aintl'
20446 d_alarm='$d_alarm'
20447 d_archlib='$d_archlib'
20448 d_asctime_r='$d_asctime_r'
20449 d_atolf='$d_atolf'
20450 d_atoll='$d_atoll'
20451 d_attribut='$d_attribut'
20452 d_bcmp='$d_bcmp'
20453 d_bcopy='$d_bcopy'
20454 d_bsd='$d_bsd'
20455 d_bsdgetpgrp='$d_bsdgetpgrp'
20456 d_bsdsetpgrp='$d_bsdsetpgrp'
20457 d_bzero='$d_bzero'
20458 d_casti32='$d_casti32'
20459 d_castneg='$d_castneg'
20460 d_charvspr='$d_charvspr'
20461 d_chown='$d_chown'
20462 d_chroot='$d_chroot'
20463 d_chsize='$d_chsize'
20464 d_class='$d_class'
20465 d_closedir='$d_closedir'
20466 d_cmsghdr_s='$d_cmsghdr_s'
20467 d_const='$d_const'
20468 d_copysignl='$d_copysignl'
20469 d_crypt='$d_crypt'
20470 d_crypt_r='$d_crypt_r'
20471 d_csh='$d_csh'
20472 d_ctermid_r='$d_ctermid_r'
20473 d_ctime_r='$d_ctime_r'
20474 d_cuserid='$d_cuserid'
20475 d_dbl_dig='$d_dbl_dig'
20476 d_dbminitproto='$d_dbminitproto'
20477 d_difftime='$d_difftime'
20478 d_dirfd='$d_dirfd'
20479 d_dirnamlen='$d_dirnamlen'
20480 d_dlerror='$d_dlerror'
20481 d_dlopen='$d_dlopen'
20482 d_dlsymun='$d_dlsymun'
20483 d_dosuid='$d_dosuid'
20484 d_drand48_r='$d_drand48_r'
20485 d_drand48proto='$d_drand48proto'
20486 d_dup2='$d_dup2'
20487 d_eaccess='$d_eaccess'
20488 d_endgrent='$d_endgrent'
20489 d_endgrent_r='$d_endgrent_r'
20490 d_endhent='$d_endhent'
20491 d_endhostent_r='$d_endhostent_r'
20492 d_endnent='$d_endnent'
20493 d_endnetent_r='$d_endnetent_r'
20494 d_endpent='$d_endpent'
20495 d_endprotoent_r='$d_endprotoent_r'
20496 d_endpwent='$d_endpwent'
20497 d_endpwent_r='$d_endpwent_r'
20498 d_endsent='$d_endsent'
20499 d_endservent_r='$d_endservent_r'
20500 d_eofnblk='$d_eofnblk'
20501 d_eunice='$d_eunice'
20502 d_fchdir='$d_fchdir'
20503 d_fchmod='$d_fchmod'
20504 d_fchown='$d_fchown'
20505 d_fcntl='$d_fcntl'
20506 d_fcntl_can_lock='$d_fcntl_can_lock'
20507 d_fd_macros='$d_fd_macros'
20508 d_fd_set='$d_fd_set'
20509 d_fds_bits='$d_fds_bits'
20510 d_fgetpos='$d_fgetpos'
20511 d_finite='$d_finite'
20512 d_finitel='$d_finitel'
20513 d_flexfnam='$d_flexfnam'
20514 d_flock='$d_flock'
20515 d_flockproto='$d_flockproto'
20516 d_fork='$d_fork'
20517 d_fp_class='$d_fp_class'
20518 d_fpathconf='$d_fpathconf'
20519 d_fpclass='$d_fpclass'
20520 d_fpclassify='$d_fpclassify'
20521 d_fpclassl='$d_fpclassl'
20522 d_fpos64_t='$d_fpos64_t'
20523 d_frexpl='$d_frexpl'
20524 d_fs_data_s='$d_fs_data_s'
20525 d_fseeko='$d_fseeko'
20526 d_fsetpos='$d_fsetpos'
20527 d_fstatfs='$d_fstatfs'
20528 d_fstatvfs='$d_fstatvfs'
20529 d_fsync='$d_fsync'
20530 d_ftello='$d_ftello'
20531 d_ftime='$d_ftime'
20532 d_getcwd='$d_getcwd'
20533 d_getespwnam='$d_getespwnam'
20534 d_getfsstat='$d_getfsstat'
20535 d_getgrent='$d_getgrent'
20536 d_getgrent_r='$d_getgrent_r'
20537 d_getgrgid_r='$d_getgrgid_r'
20538 d_getgrnam_r='$d_getgrnam_r'
20539 d_getgrps='$d_getgrps'
20540 d_gethbyaddr='$d_gethbyaddr'
20541 d_gethbyname='$d_gethbyname'
20542 d_gethent='$d_gethent'
20543 d_gethname='$d_gethname'
20544 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20545 d_gethostbyname_r='$d_gethostbyname_r'
20546 d_gethostent_r='$d_gethostent_r'
20547 d_gethostprotos='$d_gethostprotos'
20548 d_getitimer='$d_getitimer'
20549 d_getlogin='$d_getlogin'
20550 d_getlogin_r='$d_getlogin_r'
20551 d_getmnt='$d_getmnt'
20552 d_getmntent='$d_getmntent'
20553 d_getnbyaddr='$d_getnbyaddr'
20554 d_getnbyname='$d_getnbyname'
20555 d_getnent='$d_getnent'
20556 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20557 d_getnetbyname_r='$d_getnetbyname_r'
20558 d_getnetent_r='$d_getnetent_r'
20559 d_getnetprotos='$d_getnetprotos'
20560 d_getpagsz='$d_getpagsz'
20561 d_getpbyname='$d_getpbyname'
20562 d_getpbynumber='$d_getpbynumber'
20563 d_getpent='$d_getpent'
20564 d_getpgid='$d_getpgid'
20565 d_getpgrp2='$d_getpgrp2'
20566 d_getpgrp='$d_getpgrp'
20567 d_getppid='$d_getppid'
20568 d_getprior='$d_getprior'
20569 d_getprotobyname_r='$d_getprotobyname_r'
20570 d_getprotobynumber_r='$d_getprotobynumber_r'
20571 d_getprotoent_r='$d_getprotoent_r'
20572 d_getprotoprotos='$d_getprotoprotos'
20573 d_getprpwnam='$d_getprpwnam'
20574 d_getpwent='$d_getpwent'
20575 d_getpwent_r='$d_getpwent_r'
20576 d_getpwnam_r='$d_getpwnam_r'
20577 d_getpwuid_r='$d_getpwuid_r'
20578 d_getsbyname='$d_getsbyname'
20579 d_getsbyport='$d_getsbyport'
20580 d_getsent='$d_getsent'
20581 d_getservbyname_r='$d_getservbyname_r'
20582 d_getservbyport_r='$d_getservbyport_r'
20583 d_getservent_r='$d_getservent_r'
20584 d_getservprotos='$d_getservprotos'
20585 d_getspnam='$d_getspnam'
20586 d_getspnam_r='$d_getspnam_r'
20587 d_gettimeod='$d_gettimeod'
20588 d_gmtime_r='$d_gmtime_r'
20589 d_gnulibc='$d_gnulibc'
20590 d_grpasswd='$d_grpasswd'
20591 d_hasmntopt='$d_hasmntopt'
20592 d_htonl='$d_htonl'
20593 d_ilogbl='$d_ilogbl'
20594 d_index='$d_index'
20595 d_inetaton='$d_inetaton'
20596 d_int64_t='$d_int64_t'
20597 d_isascii='$d_isascii'
20598 d_isfinite='$d_isfinite'
20599 d_isinf='$d_isinf'
20600 d_isnan='$d_isnan'
20601 d_isnanl='$d_isnanl'
20602 d_killpg='$d_killpg'
20603 d_lchown='$d_lchown'
20604 d_ldbl_dig='$d_ldbl_dig'
20605 d_link='$d_link'
20606 d_localtime_r='$d_localtime_r'
20607 d_locconv='$d_locconv'
20608 d_lockf='$d_lockf'
20609 d_longdbl='$d_longdbl'
20610 d_longlong='$d_longlong'
20611 d_lseekproto='$d_lseekproto'
20612 d_lstat='$d_lstat'
20613 d_madvise='$d_madvise'
20614 d_mblen='$d_mblen'
20615 d_mbstowcs='$d_mbstowcs'
20616 d_mbtowc='$d_mbtowc'
20617 d_memchr='$d_memchr'
20618 d_memcmp='$d_memcmp'
20619 d_memcpy='$d_memcpy'
20620 d_memmove='$d_memmove'
20621 d_memset='$d_memset'
20622 d_mkdir='$d_mkdir'
20623 d_mkdtemp='$d_mkdtemp'
20624 d_mkfifo='$d_mkfifo'
20625 d_mkstemp='$d_mkstemp'
20626 d_mkstemps='$d_mkstemps'
20627 d_mktime='$d_mktime'
20628 d_mmap='$d_mmap'
20629 d_modfl='$d_modfl'
20630 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20631 d_modflproto='$d_modflproto'
20632 d_mprotect='$d_mprotect'
20633 d_msg='$d_msg'
20634 d_msg_ctrunc='$d_msg_ctrunc'
20635 d_msg_dontroute='$d_msg_dontroute'
20636 d_msg_oob='$d_msg_oob'
20637 d_msg_peek='$d_msg_peek'
20638 d_msg_proxy='$d_msg_proxy'
20639 d_msgctl='$d_msgctl'
20640 d_msgget='$d_msgget'
20641 d_msghdr_s='$d_msghdr_s'
20642 d_msgrcv='$d_msgrcv'
20643 d_msgsnd='$d_msgsnd'
20644 d_msync='$d_msync'
20645 d_munmap='$d_munmap'
20646 d_mymalloc='$d_mymalloc'
20647 d_nanosleep='$d_nanosleep'
20648 d_nice='$d_nice'
20649 d_nl_langinfo='$d_nl_langinfo'
20650 d_nv_preserves_uv='$d_nv_preserves_uv'
20651 d_off64_t='$d_off64_t'
20652 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20653 d_oldpthreads='$d_oldpthreads'
20654 d_oldsock='$d_oldsock'
20655 d_open3='$d_open3'
20656 d_pathconf='$d_pathconf'
20657 d_pause='$d_pause'
20658 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20659 d_phostname='$d_phostname'
20660 d_pipe='$d_pipe'
20661 d_poll='$d_poll'
20662 d_portable='$d_portable'
20663 d_procselfexe='$d_procselfexe'
20664 d_pthread_atfork='$d_pthread_atfork'
20665 d_pthread_yield='$d_pthread_yield'
20666 d_pwage='$d_pwage'
20667 d_pwchange='$d_pwchange'
20668 d_pwclass='$d_pwclass'
20669 d_pwcomment='$d_pwcomment'
20670 d_pwexpire='$d_pwexpire'
20671 d_pwgecos='$d_pwgecos'
20672 d_pwpasswd='$d_pwpasswd'
20673 d_pwquota='$d_pwquota'
20674 d_qgcvt='$d_qgcvt'
20675 d_quad='$d_quad'
20676 d_random_r='$d_random_r'
20677 d_readdir64_r='$d_readdir64_r'
20678 d_readdir='$d_readdir'
20679 d_readdir_r='$d_readdir_r'
20680 d_readlink='$d_readlink'
20681 d_readv='$d_readv'
20682 d_recvmsg='$d_recvmsg'
20683 d_rename='$d_rename'
20684 d_rewinddir='$d_rewinddir'
20685 d_rmdir='$d_rmdir'
20686 d_safebcpy='$d_safebcpy'
20687 d_safemcpy='$d_safemcpy'
20688 d_sanemcmp='$d_sanemcmp'
20689 d_sbrkproto='$d_sbrkproto'
20690 d_scalbnl='$d_scalbnl'
20691 d_sched_yield='$d_sched_yield'
20692 d_scm_rights='$d_scm_rights'
20693 d_seekdir='$d_seekdir'
20694 d_select='$d_select'
20695 d_sem='$d_sem'
20696 d_semctl='$d_semctl'
20697 d_semctl_semid_ds='$d_semctl_semid_ds'
20698 d_semctl_semun='$d_semctl_semun'
20699 d_semget='$d_semget'
20700 d_semop='$d_semop'
20701 d_sendmsg='$d_sendmsg'
20702 d_setegid='$d_setegid'
20703 d_seteuid='$d_seteuid'
20704 d_setgrent='$d_setgrent'
20705 d_setgrent_r='$d_setgrent_r'
20706 d_setgrps='$d_setgrps'
20707 d_sethent='$d_sethent'
20708 d_sethostent_r='$d_sethostent_r'
20709 d_setitimer='$d_setitimer'
20710 d_setlinebuf='$d_setlinebuf'
20711 d_setlocale='$d_setlocale'
20712 d_setlocale_r='$d_setlocale_r'
20713 d_setnent='$d_setnent'
20714 d_setnetent_r='$d_setnetent_r'
20715 d_setpent='$d_setpent'
20716 d_setpgid='$d_setpgid'
20717 d_setpgrp2='$d_setpgrp2'
20718 d_setpgrp='$d_setpgrp'
20719 d_setprior='$d_setprior'
20720 d_setproctitle='$d_setproctitle'
20721 d_setprotoent_r='$d_setprotoent_r'
20722 d_setpwent='$d_setpwent'
20723 d_setpwent_r='$d_setpwent_r'
20724 d_setregid='$d_setregid'
20725 d_setresgid='$d_setresgid'
20726 d_setresuid='$d_setresuid'
20727 d_setreuid='$d_setreuid'
20728 d_setrgid='$d_setrgid'
20729 d_setruid='$d_setruid'
20730 d_setsent='$d_setsent'
20731 d_setservent_r='$d_setservent_r'
20732 d_setsid='$d_setsid'
20733 d_setvbuf='$d_setvbuf'
20734 d_sfio='$d_sfio'
20735 d_shm='$d_shm'
20736 d_shmat='$d_shmat'
20737 d_shmatprototype='$d_shmatprototype'
20738 d_shmctl='$d_shmctl'
20739 d_shmdt='$d_shmdt'
20740 d_shmget='$d_shmget'
20741 d_sigaction='$d_sigaction'
20742 d_sigprocmask='$d_sigprocmask'
20743 d_sigsetjmp='$d_sigsetjmp'
20744 d_sockatmark='$d_sockatmark'
20745 d_sockatmarkproto='$d_sockatmarkproto'
20746 d_socket='$d_socket'
20747 d_socklen_t='$d_socklen_t'
20748 d_sockpair='$d_sockpair'
20749 d_socks5_init='$d_socks5_init'
20750 d_sqrtl='$d_sqrtl'
20751 d_srand48_r='$d_srand48_r'
20752 d_srandom_r='$d_srandom_r'
20753 d_sresgproto='$d_sresgproto'
20754 d_sresuproto='$d_sresuproto'
20755 d_statblks='$d_statblks'
20756 d_statfs_f_flags='$d_statfs_f_flags'
20757 d_statfs_s='$d_statfs_s'
20758 d_statvfs='$d_statvfs'
20759 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20760 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20761 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20762 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20763 d_stdio_stream_array='$d_stdio_stream_array'
20764 d_stdiobase='$d_stdiobase'
20765 d_stdstdio='$d_stdstdio'
20766 d_strchr='$d_strchr'
20767 d_strcoll='$d_strcoll'
20768 d_strctcpy='$d_strctcpy'
20769 d_strerrm='$d_strerrm'
20770 d_strerror='$d_strerror'
20771 d_strerror_r='$d_strerror_r'
20772 d_strftime='$d_strftime'
20773 d_strtod='$d_strtod'
20774 d_strtol='$d_strtol'
20775 d_strtold='$d_strtold'
20776 d_strtoll='$d_strtoll'
20777 d_strtoq='$d_strtoq'
20778 d_strtoul='$d_strtoul'
20779 d_strtoull='$d_strtoull'
20780 d_strtouq='$d_strtouq'
20781 d_strxfrm='$d_strxfrm'
20782 d_suidsafe='$d_suidsafe'
20783 d_symlink='$d_symlink'
20784 d_syscall='$d_syscall'
20785 d_syscallproto='$d_syscallproto'
20786 d_sysconf='$d_sysconf'
20787 d_sysernlst='$d_sysernlst'
20788 d_syserrlst='$d_syserrlst'
20789 d_system='$d_system'
20790 d_tcgetpgrp='$d_tcgetpgrp'
20791 d_tcsetpgrp='$d_tcsetpgrp'
20792 d_telldir='$d_telldir'
20793 d_telldirproto='$d_telldirproto'
20794 d_time='$d_time'
20795 d_times='$d_times'
20796 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20797 d_tm_tm_zone='$d_tm_tm_zone'
20798 d_tmpnam_r='$d_tmpnam_r'
20799 d_truncate='$d_truncate'
20800 d_ttyname_r='$d_ttyname_r'
20801 d_tzname='$d_tzname'
20802 d_u32align='$d_u32align'
20803 d_ualarm='$d_ualarm'
20804 d_umask='$d_umask'
20805 d_uname='$d_uname'
20806 d_union_semun='$d_union_semun'
20807 d_unordered='$d_unordered'
20808 d_usleep='$d_usleep'
20809 d_usleepproto='$d_usleepproto'
20810 d_ustat='$d_ustat'
20811 d_vendorarch='$d_vendorarch'
20812 d_vendorbin='$d_vendorbin'
20813 d_vendorlib='$d_vendorlib'
20814 d_vendorscript='$d_vendorscript'
20815 d_vfork='$d_vfork'
20816 d_void_closedir='$d_void_closedir'
20817 d_voidsig='$d_voidsig'
20818 d_voidtty='$d_voidtty'
20819 d_volatile='$d_volatile'
20820 d_vprintf='$d_vprintf'
20821 d_wait4='$d_wait4'
20822 d_waitpid='$d_waitpid'
20823 d_wcstombs='$d_wcstombs'
20824 d_wctomb='$d_wctomb'
20825 d_writev='$d_writev'
20826 d_xenix='$d_xenix'
20827 date='$date'
20828 db_hashtype='$db_hashtype'
20829 db_prefixtype='$db_prefixtype'
20830 db_version_major='$db_version_major'
20831 db_version_minor='$db_version_minor'
20832 db_version_patch='$db_version_patch'
20833 defvoidused='$defvoidused'
20834 direntrytype='$direntrytype'
20835 dlext='$dlext'
20836 dlsrc='$dlsrc'
20837 doublesize='$doublesize'
20838 drand01='$drand01'
20839 drand48_r_proto='$drand48_r_proto'
20840 dynamic_ext='$dynamic_ext'
20841 eagain='$eagain'
20842 ebcdic='$ebcdic'
20843 echo='$echo'
20844 egrep='$egrep'
20845 emacs='$emacs'
20846 endgrent_r_proto='$endgrent_r_proto'
20847 endhostent_r_proto='$endhostent_r_proto'
20848 endnetent_r_proto='$endnetent_r_proto'
20849 endprotoent_r_proto='$endprotoent_r_proto'
20850 endpwent_r_proto='$endpwent_r_proto'
20851 endservent_r_proto='$endservent_r_proto'
20852 eunicefix='$eunicefix'
20853 exe_ext='$exe_ext'
20854 expr='$expr'
20855 extensions='$extensions'
20856 extras='$extras'
20857 fflushNULL='$fflushNULL'
20858 fflushall='$fflushall'
20859 find='$find'
20860 firstmakefile='$firstmakefile'
20861 flex='$flex'
20862 fpossize='$fpossize'
20863 fpostype='$fpostype'
20864 freetype='$freetype'
20865 from='$from'
20866 full_ar='$full_ar'
20867 full_csh='$full_csh'
20868 full_sed='$full_sed'
20869 gccansipedantic='$gccansipedantic'
20870 gccosandvers='$gccosandvers'
20871 gccversion='$gccversion'
20872 getgrent_r_proto='$getgrent_r_proto'
20873 getgrgid_r_proto='$getgrgid_r_proto'
20874 getgrnam_r_proto='$getgrnam_r_proto'
20875 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20876 gethostbyname_r_proto='$gethostbyname_r_proto'
20877 gethostent_r_proto='$gethostent_r_proto'
20878 getlogin_r_proto='$getlogin_r_proto'
20879 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20880 getnetbyname_r_proto='$getnetbyname_r_proto'
20881 getnetent_r_proto='$getnetent_r_proto'
20882 getprotobyname_r_proto='$getprotobyname_r_proto'
20883 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20884 getprotoent_r_proto='$getprotoent_r_proto'
20885 getpwent_r_proto='$getpwent_r_proto'
20886 getpwnam_r_proto='$getpwnam_r_proto'
20887 getpwuid_r_proto='$getpwuid_r_proto'
20888 getservbyname_r_proto='$getservbyname_r_proto'
20889 getservbyport_r_proto='$getservbyport_r_proto'
20890 getservent_r_proto='$getservent_r_proto'
20891 getspnam_r_proto='$getspnam_r_proto'
20892 gidformat='$gidformat'
20893 gidsign='$gidsign'
20894 gidsize='$gidsize'
20895 gidtype='$gidtype'
20896 glibpth='$glibpth'
20897 gmake='$gmake'
20898 gmtime_r_proto='$gmtime_r_proto'
20899 gnulibc_version='$gnulibc_version'
20900 grep='$grep'
20901 groupcat='$groupcat'
20902 groupstype='$groupstype'
20903 gzip='$gzip'
20904 h_fcntl='$h_fcntl'
20905 h_sysfile='$h_sysfile'
20906 hint='$hint'
20907 hostcat='$hostcat'
20908 html1dir='$html1dir'
20909 html1direxp='$html1direxp'
20910 html3dir='$html3dir'
20911 html3direxp='$html3direxp'
20912 i16size='$i16size'
20913 i16type='$i16type'
20914 i32size='$i32size'
20915 i32type='$i32type'
20916 i64size='$i64size'
20917 i64type='$i64type'
20918 i8size='$i8size'
20919 i8type='$i8type'
20920 i_arpainet='$i_arpainet'
20921 i_bsdioctl='$i_bsdioctl'
20922 i_crypt='$i_crypt'
20923 i_db='$i_db'
20924 i_dbm='$i_dbm'
20925 i_dirent='$i_dirent'
20926 i_dld='$i_dld'
20927 i_dlfcn='$i_dlfcn'
20928 i_fcntl='$i_fcntl'
20929 i_float='$i_float'
20930 i_fp='$i_fp'
20931 i_fp_class='$i_fp_class'
20932 i_gdbm='$i_gdbm'
20933 i_grp='$i_grp'
20934 i_ieeefp='$i_ieeefp'
20935 i_inttypes='$i_inttypes'
20936 i_langinfo='$i_langinfo'
20937 i_libutil='$i_libutil'
20938 i_limits='$i_limits'
20939 i_locale='$i_locale'
20940 i_machcthr='$i_machcthr'
20941 i_malloc='$i_malloc'
20942 i_math='$i_math'
20943 i_memory='$i_memory'
20944 i_mntent='$i_mntent'
20945 i_ndbm='$i_ndbm'
20946 i_netdb='$i_netdb'
20947 i_neterrno='$i_neterrno'
20948 i_netinettcp='$i_netinettcp'
20949 i_niin='$i_niin'
20950 i_poll='$i_poll'
20951 i_prot='$i_prot'
20952 i_pthread='$i_pthread'
20953 i_pwd='$i_pwd'
20954 i_rpcsvcdbm='$i_rpcsvcdbm'
20955 i_sfio='$i_sfio'
20956 i_sgtty='$i_sgtty'
20957 i_shadow='$i_shadow'
20958 i_socks='$i_socks'
20959 i_stdarg='$i_stdarg'
20960 i_stddef='$i_stddef'
20961 i_stdlib='$i_stdlib'
20962 i_string='$i_string'
20963 i_sunmath='$i_sunmath'
20964 i_sysaccess='$i_sysaccess'
20965 i_sysdir='$i_sysdir'
20966 i_sysfile='$i_sysfile'
20967 i_sysfilio='$i_sysfilio'
20968 i_sysin='$i_sysin'
20969 i_sysioctl='$i_sysioctl'
20970 i_syslog='$i_syslog'
20971 i_sysmman='$i_sysmman'
20972 i_sysmode='$i_sysmode'
20973 i_sysmount='$i_sysmount'
20974 i_sysndir='$i_sysndir'
20975 i_sysparam='$i_sysparam'
20976 i_sysresrc='$i_sysresrc'
20977 i_syssecrt='$i_syssecrt'
20978 i_sysselct='$i_sysselct'
20979 i_syssockio='$i_syssockio'
20980 i_sysstat='$i_sysstat'
20981 i_sysstatfs='$i_sysstatfs'
20982 i_sysstatvfs='$i_sysstatvfs'
20983 i_systime='$i_systime'
20984 i_systimek='$i_systimek'
20985 i_systimes='$i_systimes'
20986 i_systypes='$i_systypes'
20987 i_sysuio='$i_sysuio'
20988 i_sysun='$i_sysun'
20989 i_sysutsname='$i_sysutsname'
20990 i_sysvfs='$i_sysvfs'
20991 i_syswait='$i_syswait'
20992 i_termio='$i_termio'
20993 i_termios='$i_termios'
20994 i_time='$i_time'
20995 i_unistd='$i_unistd'
20996 i_ustat='$i_ustat'
20997 i_utime='$i_utime'
20998 i_values='$i_values'
20999 i_varargs='$i_varargs'
21000 i_varhdr='$i_varhdr'
21001 i_vfork='$i_vfork'
21002 ignore_versioned_solibs='$ignore_versioned_solibs'
21003 inc_version_list='$inc_version_list'
21004 inc_version_list_init='$inc_version_list_init'
21005 incpath='$incpath'
21006 inews='$inews'
21007 installarchlib='$installarchlib'
21008 installbin='$installbin'
21009 installhtml1dir='$installhtml1dir'
21010 installhtml3dir='$installhtml3dir'
21011 installman1dir='$installman1dir'
21012 installman3dir='$installman3dir'
21013 installprefix='$installprefix'
21014 installprefixexp='$installprefixexp'
21015 installprivlib='$installprivlib'
21016 installscript='$installscript'
21017 installsitearch='$installsitearch'
21018 installsitebin='$installsitebin'
21019 installsitehtml1='$installsitehtml1'
21020 installsitehtml3='$installsitehtml3'
21021 installsitelib='$installsitelib'
21022 installsiteman1='$installsiteman1'
21023 installsiteman3='$installsiteman3'
21024 installsitescript='$installsitescript'
21025 installstyle='$installstyle'
21026 installusrbinperl='$installusrbinperl'
21027 installvendorarch='$installvendorarch'
21028 installvendorbin='$installvendorbin'
21029 installvendorhtml1='$installvendorhtml1'
21030 installvendorhtml3='$installvendorhtml3'
21031 installvendorlib='$installvendorlib'
21032 installvendorman1='$installvendorman1'
21033 installvendorman3='$installvendorman3'
21034 installvendorscript='$installvendorscript'
21035 intsize='$intsize'
21036 issymlink='$issymlink'
21037 ivdformat='$ivdformat'
21038 ivsize='$ivsize'
21039 ivtype='$ivtype'
21040 known_extensions='$known_extensions'
21041 ksh='$ksh'
21042 ld='$ld'
21043 lddlflags='$lddlflags'
21044 ldflags='$ldflags'
21045 ldflags_uselargefiles='$ldflags_uselargefiles'
21046 ldlibpthname='$ldlibpthname'
21047 less='$less'
21048 lib_ext='$lib_ext'
21049 libc='$libc'
21050 libperl='$libperl'
21051 libpth='$libpth'
21052 libs='$libs'
21053 libsdirs='$libsdirs'
21054 libsfiles='$libsfiles'
21055 libsfound='$libsfound'
21056 libspath='$libspath'
21057 libswanted='$libswanted'
21058 libswanted_uselargefiles='$libswanted_uselargefiles'
21059 line='$line'
21060 lint='$lint'
21061 lkflags='$lkflags'
21062 ln='$ln'
21063 lns='$lns'
21064 localtime_r_proto='$localtime_r_proto'
21065 locincpth='$locincpth'
21066 loclibpth='$loclibpth'
21067 longdblsize='$longdblsize'
21068 longlongsize='$longlongsize'
21069 longsize='$longsize'
21070 lp='$lp'
21071 lpr='$lpr'
21072 ls='$ls'
21073 lseeksize='$lseeksize'
21074 lseektype='$lseektype'
21075 mail='$mail'
21076 mailx='$mailx'
21077 make='$make'
21078 make_set_make='$make_set_make'
21079 mallocobj='$mallocobj'
21080 mallocsrc='$mallocsrc'
21081 malloctype='$malloctype'
21082 man1dir='$man1dir'
21083 man1direxp='$man1direxp'
21084 man1ext='$man1ext'
21085 man3dir='$man3dir'
21086 man3direxp='$man3direxp'
21087 man3ext='$man3ext'
21088 mips_type='$mips_type'
21089 mkdir='$mkdir'
21090 mmaptype='$mmaptype'
21091 modetype='$modetype'
21092 more='$more'
21093 multiarch='$multiarch'
21094 mv='$mv'
21095 myarchname='$myarchname'
21096 mydomain='$mydomain'
21097 myhostname='$myhostname'
21098 myuname='$myuname'
21099 n='$n'
21100 need_va_copy='$need_va_copy'
21101 netdb_hlen_type='$netdb_hlen_type'
21102 netdb_host_type='$netdb_host_type'
21103 netdb_name_type='$netdb_name_type'
21104 netdb_net_type='$netdb_net_type'
21105 nm='$nm'
21106 nm_opt='$nm_opt'
21107 nm_so_opt='$nm_so_opt'
21108 nonxs_ext='$nonxs_ext'
21109 nroff='$nroff'
21110 nvEUformat='$nvEUformat'
21111 nvFUformat='$nvFUformat'
21112 nvGUformat='$nvGUformat'
21113 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21114 nveformat='$nveformat'
21115 nvfformat='$nvfformat'
21116 nvgformat='$nvgformat'
21117 nvsize='$nvsize'
21118 nvtype='$nvtype'
21119 o_nonblock='$o_nonblock'
21120 obj_ext='$obj_ext'
21121 old_pthread_create_joinable='$old_pthread_create_joinable'
21122 optimize='$optimize'
21123 orderlib='$orderlib'
21124 osname='$osname'
21125 osvers='$osvers'
21126 otherlibdirs='$otherlibdirs'
21127 package='$package'
21128 pager='$pager'
21129 passcat='$passcat'
21130 patchlevel='$patchlevel'
21131 path_sep='$path_sep'
21132 perl5='$perl5'
21133 perl='$perl'
21134 perl_patchlevel='$perl_patchlevel'
21135 perladmin='$perladmin'
21136 perllibs='$perllibs'
21137 perlpath='$perlpath'
21138 pg='$pg'
21139 phostname='$phostname'
21140 pidtype='$pidtype'
21141 plibpth='$plibpth'
21142 pm_apiversion='$pm_apiversion'
21143 pmake='$pmake'
21144 pr='$pr'
21145 prefix='$prefix'
21146 prefixexp='$prefixexp'
21147 privlib='$privlib'
21148 privlibexp='$privlibexp'
21149 procselfexe='$procselfexe'
21150 prototype='$prototype'
21151 ptrsize='$ptrsize'
21152 quadkind='$quadkind'
21153 quadtype='$quadtype'
21154 randbits='$randbits'
21155 randfunc='$randfunc'
21156 random_r_proto='$random_r_proto'
21157 randseedtype='$randseedtype'
21158 ranlib='$ranlib'
21159 rd_nodata='$rd_nodata'
21160 readdir64_r_proto='$readdir64_r_proto'
21161 readdir_r_proto='$readdir_r_proto'
21162 revision='$revision'
21163 rm='$rm'
21164 rmail='$rmail'
21165 run='$run'
21166 runnm='$runnm'
21167 sPRIEUldbl='$sPRIEUldbl'
21168 sPRIFUldbl='$sPRIFUldbl'
21169 sPRIGUldbl='$sPRIGUldbl'
21170 sPRIXU64='$sPRIXU64'
21171 sPRId64='$sPRId64'
21172 sPRIeldbl='$sPRIeldbl'
21173 sPRIfldbl='$sPRIfldbl'
21174 sPRIgldbl='$sPRIgldbl'
21175 sPRIi64='$sPRIi64'
21176 sPRIo64='$sPRIo64'
21177 sPRIu64='$sPRIu64'
21178 sPRIx64='$sPRIx64'
21179 sSCNfldbl='$sSCNfldbl'
21180 sched_yield='$sched_yield'
21181 scriptdir='$scriptdir'
21182 scriptdirexp='$scriptdirexp'
21183 sed='$sed'
21184 seedfunc='$seedfunc'
21185 selectminbits='$selectminbits'
21186 selecttype='$selecttype'
21187 sendmail='$sendmail'
21188 setgrent_r_proto='$setgrent_r_proto'
21189 sethostent_r_proto='$sethostent_r_proto'
21190 setlocale_r_proto='$setlocale_r_proto'
21191 setnetent_r_proto='$setnetent_r_proto'
21192 setprotoent_r_proto='$setprotoent_r_proto'
21193 setpwent_r_proto='$setpwent_r_proto'
21194 setservent_r_proto='$setservent_r_proto'
21195 sh='$sh'
21196 shar='$shar'
21197 sharpbang='$sharpbang'
21198 shmattype='$shmattype'
21199 shortsize='$shortsize'
21200 shrpenv='$shrpenv'
21201 shsharp='$shsharp'
21202 sig_count='$sig_count'
21203 sig_name='$sig_name'
21204 sig_name_init='$sig_name_init'
21205 sig_num='$sig_num'
21206 sig_num_init='$sig_num_init'
21207 sig_size='$sig_size'
21208 signal_t='$signal_t'
21209 sitearch='$sitearch'
21210 sitearchexp='$sitearchexp'
21211 sitebin='$sitebin'
21212 sitebinexp='$sitebinexp'
21213 sitehtml1='$sitehtml1'
21214 sitehtml1exp='$sitehtml1exp'
21215 sitehtml3='$sitehtml3'
21216 sitehtml3exp='$sitehtml3exp'
21217 sitelib='$sitelib'
21218 sitelib_stem='$sitelib_stem'
21219 sitelibexp='$sitelibexp'
21220 siteman1='$siteman1'
21221 siteman1exp='$siteman1exp'
21222 siteman3='$siteman3'
21223 siteman3exp='$siteman3exp'
21224 siteprefix='$siteprefix'
21225 siteprefixexp='$siteprefixexp'
21226 sitescript='$sitescript'
21227 sitescriptexp='$sitescriptexp'
21228 sizesize='$sizesize'
21229 sizetype='$sizetype'
21230 sleep='$sleep'
21231 smail='$smail'
21232 so='$so'
21233 sockethdr='$sockethdr'
21234 socketlib='$socketlib'
21235 socksizetype='$socksizetype'
21236 sort='$sort'
21237 spackage='$spackage'
21238 spitshell='$spitshell'
21239 srand48_r_proto='$srand48_r_proto'
21240 srandom_r_proto='$srandom_r_proto'
21241 src='$src'
21242 ssizetype='$ssizetype'
21243 startperl='$startperl'
21244 startsh='$startsh'
21245 static_ext='$static_ext'
21246 stdchar='$stdchar'
21247 stdio_base='$stdio_base'
21248 stdio_bufsiz='$stdio_bufsiz'
21249 stdio_cnt='$stdio_cnt'
21250 stdio_filbuf='$stdio_filbuf'
21251 stdio_ptr='$stdio_ptr'
21252 stdio_stream_array='$stdio_stream_array'
21253 strerror_r_proto='$strerror_r_proto'
21254 strings='$strings'
21255 submit='$submit'
21256 subversion='$subversion'
21257 sysman='$sysman'
21258 tail='$tail'
21259 tar='$tar'
21260 targetarch='$targetarch'
21261 tbl='$tbl'
21262 tee='$tee'
21263 test='$test'
21264 timeincl='$timeincl'
21265 timetype='$timetype'
21266 tmpnam_r_proto='$tmpnam_r_proto'
21267 to='$to'
21268 touch='$touch'
21269 tr='$tr'
21270 trnl='$trnl'
21271 troff='$troff'
21272 ttyname_r_proto='$ttyname_r_proto'
21273 u16size='$u16size'
21274 u16type='$u16type'
21275 u32size='$u32size'
21276 u32type='$u32type'
21277 u64size='$u64size'
21278 u64type='$u64type'
21279 u8size='$u8size'
21280 u8type='$u8type'
21281 uidformat='$uidformat'
21282 uidsign='$uidsign'
21283 uidsize='$uidsize'
21284 uidtype='$uidtype'
21285 uname='$uname'
21286 uniq='$uniq'
21287 uquadtype='$uquadtype'
21288 use5005threads='$use5005threads'
21289 use64bitall='$use64bitall'
21290 use64bitint='$use64bitint'
21291 usecrosscompile='$usecrosscompile'
21292 usedl='$usedl'
21293 useithreads='$useithreads'
21294 uselargefiles='$uselargefiles'
21295 uselongdouble='$uselongdouble'
21296 usemorebits='$usemorebits'
21297 usemultiplicity='$usemultiplicity'
21298 usemymalloc='$usemymalloc'
21299 usenm='$usenm'
21300 useopcode='$useopcode'
21301 useperlio='$useperlio'
21302 useposix='$useposix'
21303 usereentrant='$usereentrant'
21304 usesfio='$usesfio'
21305 useshrplib='$useshrplib'
21306 usesocks='$usesocks'
21307 usethreads='$usethreads'
21308 usevendorprefix='$usevendorprefix'
21309 usevfork='$usevfork'
21310 usrinc='$usrinc'
21311 uuname='$uuname'
21312 uvXUformat='$uvXUformat'
21313 uvoformat='$uvoformat'
21314 uvsize='$uvsize'
21315 uvtype='$uvtype'
21316 uvuformat='$uvuformat'
21317 uvxformat='$uvxformat'
21318 vendorarch='$vendorarch'
21319 vendorarchexp='$vendorarchexp'
21320 vendorbin='$vendorbin'
21321 vendorbinexp='$vendorbinexp'
21322 vendorhtml1='$vendorhtml1'
21323 vendorhtml1exp='$vendorhtml1exp'
21324 vendorhtml3='$vendorhtml3'
21325 vendorhtml3exp='$vendorhtml3exp'
21326 vendorlib='$vendorlib'
21327 vendorlib_stem='$vendorlib_stem'
21328 vendorlibexp='$vendorlibexp'
21329 vendorman1='$vendorman1'
21330 vendorman1exp='$vendorman1exp'
21331 vendorman3='$vendorman3'
21332 vendorman3exp='$vendorman3exp'
21333 vendorprefix='$vendorprefix'
21334 vendorprefixexp='$vendorprefixexp'
21335 vendorscript='$vendorscript'
21336 vendorscriptexp='$vendorscriptexp'
21337 version='$version'
21338 version_patchlevel_string='$version_patchlevel_string'
21339 versiononly='$versiononly'
21340 vi='$vi'
21341 voidflags='$voidflags'
21342 xlibpth='$xlibpth'
21343 xs_apiversion='$xs_apiversion'
21344 yacc='$yacc'
21345 yaccflags='$yaccflags'
21346 zcat='$zcat'
21347 zip='$zip'
21348 EOT
21349
21350 : Add in command line options if available
21351 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21352
21353 : add special variables
21354 $test -f $src/patchlevel.h && \
21355 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21356 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21357 echo "PERL_CONFIG_SH=true" >>config.sh
21358
21359 : propagate old symbols
21360 if $test -f UU/config.sh; then
21361         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21362         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21363         $sort | $uniq -u >UU/oldsyms
21364         set X `cat UU/oldsyms`
21365         shift
21366         case $# in
21367         0) ;;
21368         *)
21369                 cat <<EOM
21370 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21371 EOM
21372                 echo "# Variables propagated from previous config.sh file." >>config.sh
21373                 for sym in `cat UU/oldsyms`; do
21374                         echo "    Propagating $hint variable "'$'"$sym..."
21375                         eval 'tmp="$'"${sym}"'"'
21376                         echo "$tmp" | \
21377                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21378                 done
21379                 ;;
21380         esac
21381 fi
21382
21383 : Finish up by extracting the .SH files
21384 case "$alldone" in
21385 exit)
21386         $rm -rf UU
21387         echo "Extraction done."
21388         exit 0
21389         ;;
21390 cont)
21391         ;;
21392 '')
21393         dflt=''
21394         nostick=true
21395         $cat <<EOM
21396
21397 If you'd like to make any changes to the config.sh file before I begin
21398 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21399
21400 EOM
21401         rp="Press return or use a shell escape to edit config.sh:"
21402         . UU/myread
21403         nostick=''
21404         case "$ans" in
21405         '') ;;
21406         *) : in case they cannot read
21407                 sh 1>&4 -c "$ans";;
21408         esac
21409         ;;
21410 esac
21411
21412 : if this fails, just run all the .SH files by hand
21413 . ./config.sh
21414
21415 echo " "
21416 exec 1>&4
21417 pwd=`pwd`
21418 . ./UU/extract
21419 cd "$pwd"
21420
21421 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21422         dflt=y
21423         case "$silent" in
21424         true) ;;
21425         *)
21426                 $cat <<EOM
21427
21428 Now you need to generate make dependencies by running "$make depend".
21429 You might prefer to run it in background: "$make depend > makedepend.out &"
21430 It can take a while, so you might not want to run it right now.
21431
21432 EOM
21433                 ;;
21434         esac
21435         rp="Run $make depend now?"
21436         . UU/myread
21437         case "$ans" in
21438         y*)
21439                 $make depend && echo "Now you must run '$make'."
21440                 ;;
21441         *)
21442                 echo "You must run '$make depend' then '$make'."
21443                 ;;
21444         esac
21445 elif test -f [Mm]akefile; then
21446         echo " "
21447         echo "Now you must run a $make."
21448 else
21449         echo "Configure done."
21450 fi
21451
21452 if $test -f Policy.sh; then
21453     $cat <<EOM
21454
21455 If you compile $package on a different machine or from a different object
21456 directory, copy the Policy.sh file from this object directory to the
21457 new one before you run Configure -- this will help you with most of
21458 the policy defaults.
21459
21460 EOM
21461 fi
21462 if $test -f config.msg; then
21463     echo "Hmm.  I also noted the following information while running:"
21464     echo " "
21465     $cat config.msg >&4
21466     $rm -f config.msg
21467 fi
21468 $rm -f kit*isdone ark*isdone
21469 $rm -rf UU
21470
21471 : End of Configure
21472