Big patch from Alan Burlison to make Solaris long doubles work.
[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 Tue Apr  1 20:39:33 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_copysign=''
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 echo " "
5485 echo "Checking for GNU C Library..." >&4
5486 cat >try.c <<'EOCP'
5487 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
5488    alone are insufficient to distinguish different versions, such as
5489    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
5490    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
5491 */
5492 #include <stdio.h>
5493 int main(void)
5494 {
5495 #ifdef __GLIBC__
5496 #   ifdef __GLIBC_MINOR__
5497 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
5498 #           include <gnu/libc-version.h>
5499             printf("%s\n",  gnu_get_libc_version());
5500 #       else
5501             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
5502 #       endif
5503 #   else
5504         printf("%d\n",  __GLIBC__);
5505 #   endif
5506     return 0;
5507 #else
5508     return 1;
5509 #endif
5510 }
5511 EOCP
5512 set try
5513 if eval $compile_ok && $run ./try > glibc.ver; then
5514         val="$define"
5515         gnulibc_version=`$cat glibc.ver`
5516         echo "You are using the GNU C Library version $gnulibc_version"
5517 else
5518         val="$undef"
5519         gnulibc_version=''
5520         echo "You are not using the GNU C Library"
5521 fi
5522 $rm -f try try.* glibc.ver
5523 set d_gnulibc
5524 eval $setvar
5525
5526 : see if nm is to be used to determine whether a symbol is defined or not
5527 case "$usenm" in
5528 '')
5529         dflt=''
5530         case "$d_gnulibc" in
5531         "$define")
5532                 echo " "
5533                 echo "nm probably won't work on the GNU C Library." >&4
5534                 dflt=n
5535                 ;;
5536         esac
5537         case "$dflt" in
5538         '') 
5539                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
5540                         echo " "
5541                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5542                         echo "'nm' won't be sufficient on this sytem." >&4
5543                         dflt=n
5544                 fi
5545                 ;;
5546         esac
5547         case "$dflt" in
5548         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5549                 if $test $dflt -gt 20; then
5550                         dflt=y
5551                 else
5552                         dflt=n
5553                 fi
5554                 ;;
5555         esac
5556         ;;
5557 *)
5558         case "$usenm" in
5559         true|$define) dflt=y;;
5560         *) dflt=n;;
5561         esac
5562         ;;
5563 esac
5564 $cat <<EOM
5565
5566 I can use $nm to extract the symbols from your C libraries. This
5567 is a time consuming task which may generate huge output on the disk (up
5568 to 3 megabytes) but that should make the symbols extraction faster. The
5569 alternative is to skip the 'nm' extraction part and to compile a small
5570 test program instead to determine whether each symbol is present. If
5571 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5572 this may be the best solution.
5573
5574 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5575
5576 EOM
5577 rp="Shall I use $nm to extract C symbols from the libraries?"
5578 . ./myread
5579 case "$ans" in
5580 [Nn]*) usenm=false;;
5581 *) usenm=true;;
5582 esac
5583
5584 runnm=$usenm
5585 case "$reuseval" in
5586 true) runnm=false;;
5587 esac
5588
5589 : nm options which may be necessary
5590 case "$nm_opt" in
5591 '') if $test -f /mach_boot; then
5592                 nm_opt=''       # Mach
5593         elif $test -d /usr/ccs/lib; then
5594                 nm_opt='-p'     # Solaris (and SunOS?)
5595         elif $test -f /dgux; then
5596                 nm_opt='-p'     # DG-UX
5597         elif $test -f /lib64/rld; then
5598                 nm_opt='-p'     # 64-bit Irix
5599         else
5600                 nm_opt=''
5601         fi;;
5602 esac
5603
5604 : nm options which may be necessary for shared libraries but illegal
5605 : for archive libraries.  Thank you, Linux.
5606 case "$nm_so_opt" in
5607 '')     case "$myuname" in
5608         *linux*)
5609                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5610                         nm_so_opt='--dynamic'
5611                 fi
5612                 ;;
5613         esac
5614         ;;
5615 esac
5616
5617 case "$runnm" in
5618 true)
5619 : get list of predefined functions in a handy place
5620 echo " "
5621 case "$libc" in
5622 '') libc=unknown
5623         case "$libs" in
5624         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5625         esac
5626         ;;
5627 esac
5628 case "$libs" in
5629 '') ;;
5630 *)  for thislib in $libs; do
5631         case "$thislib" in
5632         -lc|-lc_s)
5633                 : Handle C library specially below.
5634                 ;;
5635         -l*)
5636                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5637                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5638                         :
5639                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5640                         :
5641                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5642                         :
5643                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5644                         :
5645                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5646                         :
5647                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5648                         :
5649                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5650                         :
5651                 else
5652                         try=''
5653                 fi
5654                 libnames="$libnames $try"
5655                 ;;
5656         *) libnames="$libnames $thislib" ;;
5657         esac
5658         done
5659         ;;
5660 esac
5661 xxx=normal
5662 case "$libc" in
5663 unknown)
5664         set /lib/libc.$so
5665         for xxx in $libpth; do
5666                 $test -r $1 || set $xxx/libc.$so
5667                 : The messy sed command sorts on library version numbers.
5668                 $test -r $1 || \
5669                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5670                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5671                                 h
5672                                 s/[0-9][0-9]*/0000&/g
5673                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5674                                 G
5675                                 s/\n/ /' | \
5676                          $sort | $sed -e 's/^.* //'`
5677                 eval set \$$#
5678         done
5679         $test -r $1 || set /usr/ccs/lib/libc.$so
5680         $test -r $1 || set /lib/libsys_s$_a
5681         ;;
5682 *)
5683         set blurfl
5684         ;;
5685 esac
5686 if $test -r "$1"; then
5687         echo "Your (shared) C library seems to be in $1."
5688         libc="$1"
5689 elif $test -r /lib/libc && $test -r /lib/clib; then
5690         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5691         xxx=apollo
5692         libc='/lib/clib /lib/libc'
5693         if $test -r /lib/syslib; then
5694                 echo "(Your math library is in /lib/syslib.)"
5695                 libc="$libc /lib/syslib"
5696         fi
5697 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5698         echo "Your C library seems to be in $libc, as you said before."
5699 elif $test -r $incpath/usr/lib/libc$_a; then
5700         libc=$incpath/usr/lib/libc$_a;
5701         echo "Your C library seems to be in $libc.  That's fine."
5702 elif $test -r /lib/libc$_a; then
5703         libc=/lib/libc$_a;
5704         echo "Your C library seems to be in $libc.  You're normal."
5705 else
5706         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5707                 :
5708         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5709                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5710         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5711                 :
5712         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5713                 :
5714         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5715                 :
5716         else
5717                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5718         fi
5719         if $test -r "$tans"; then
5720                 echo "Your C library seems to be in $tans, of all places."
5721                 libc=$tans
5722         else
5723                 libc='blurfl'
5724         fi
5725 fi
5726 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5727         dflt="$libc"
5728         cat <<EOM
5729
5730 If the guess above is wrong (which it might be if you're using a strange
5731 compiler, or your machine supports multiple models), you can override it here.
5732
5733 EOM
5734 else
5735         dflt=''
5736         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5737         cat >&4 <<EOM
5738 I can't seem to find your C library.  I've looked in the following places:
5739
5740 EOM
5741         $sed 's/^/      /' libpath
5742         cat <<EOM
5743
5744 None of these seems to contain your C library. I need to get its name...
5745
5746 EOM
5747 fi
5748 fn=f
5749 rp='Where is your C library?'
5750 . ./getfile
5751 libc="$ans"
5752
5753 echo " "
5754 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5755 set X `cat libnames`
5756 shift
5757 xxx=files
5758 case $# in 1) xxx=file; esac
5759 echo "Extracting names from the following $xxx for later perusal:" >&4
5760 echo " "
5761 $sed 's/^/      /' libnames >&4
5762 echo " "
5763 $echo $n "This may take a while...$c" >&4
5764
5765 for file in $*; do
5766         case $file in
5767         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5768         *) $nm $nm_opt $file 2>/dev/null;;
5769         esac
5770 done >libc.tmp
5771
5772 $echo $n ".$c"
5773 $grep fprintf libc.tmp > libc.ptf
5774 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5775 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
5776 xxx='[ADTSIW]'
5777 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5778         eval $xscan;\
5779         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5780                 eval $xrun
5781 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5782         eval $xscan;\
5783         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5784                 eval $xrun
5785 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5786         eval $xscan;\
5787         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5788                 eval $xrun
5789 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5790         eval $xscan;\
5791         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5792                 eval $xrun
5793 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5794         eval $xscan;\
5795         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5796                 eval $xrun
5797 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5798         eval $xscan;\
5799         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5800                 eval $xrun
5801 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5802                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5803         eval $xscan;\
5804         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5805                 eval $xrun
5806 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5807         eval $xscan;\
5808         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5809                 eval $xrun
5810 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5811         eval $xscan;\
5812         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5813                 eval $xrun
5814 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5815         eval $xscan;\
5816         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5817                 eval $xrun
5818 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5819         eval $xscan;\
5820         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5821                 eval $xrun
5822 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5823         eval $xscan;\
5824         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5825                 eval $xrun
5826 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5827         eval $xscan;\
5828         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5829                 eval $xrun
5830 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5831         eval $xscan;\
5832         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5833                 eval $xrun
5834 else
5835         $nm -p $* 2>/dev/null >libc.tmp
5836         $grep fprintf libc.tmp > libc.ptf
5837         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5838                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5839         then
5840                 nm_opt='-p'
5841                 eval $xrun
5842         else
5843                 echo " "
5844                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5845                 com=''
5846                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5847                         for thisname in $libnames $libc; do
5848                                 $ar t $thisname >>libc.tmp
5849                         done
5850                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5851                         echo "Ok." >&4
5852                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5853                         # Repeat libc to extract forwarders to DLL entries too
5854                         for thisname in $libnames $libc; do
5855                                 $ar tv $thisname >>libc.tmp
5856                                 # Revision 50 of EMX has bug in $ar.
5857                                 # it will not extract forwarders to DLL entries
5858                                 # Use emximp which will extract exactly them.
5859                                 emximp -o tmp.imp $thisname \
5860                                     2>/dev/null && \
5861                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5862                                     < tmp.imp >>libc.tmp
5863                                 $rm tmp.imp
5864                         done
5865                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5866                         echo "Ok." >&4
5867                 else
5868                         echo "$ar didn't seem to work right." >&4
5869                         echo "Maybe this is a Cray...trying bld instead..." >&4
5870                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5871                         then
5872                                 for thisname in $libnames; do
5873                                         bld t $libnames | \
5874                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5875                                         $ar t $thisname >>libc.tmp
5876                                 done
5877                                 echo "Ok." >&4
5878                         else
5879                                 echo "That didn't work either.  Giving up." >&4
5880                                 exit 1
5881                         fi
5882                 fi
5883         fi
5884 fi
5885 nm_extract="$com"
5886 case "$PASE" in
5887 define)
5888     echo " "
5889     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
5890     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
5891     ;;
5892 *)  if $test -f /lib/syscalls.exp; then
5893         echo " "
5894         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5895         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5896     fi
5897     ;;
5898 esac
5899 ;;
5900 esac
5901 $rm -f libnames libpath
5902
5903 : is a C symbol defined?
5904 csym='tlook=$1;
5905 case "$3" in
5906 -v) tf=libc.tmp; tc=""; tdc="";;
5907 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5908 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5909 esac;
5910 tx=yes;
5911 case "$reuseval-$4" in
5912 true-) ;;
5913 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5914 esac;
5915 case "$tx" in
5916 yes)
5917         case "$runnm" in
5918         true)
5919                 if $contains $tlook $tf >/dev/null 2>&1;
5920                 then tval=true;
5921                 else tval=false;
5922                 fi;;
5923         *)
5924                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5925                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5926                 then tval=true;
5927                 else tval=false;
5928                 fi;
5929                 $rm -f t t.c;;
5930         esac;;
5931 *)
5932         case "$tval" in
5933         $define) tval=true;;
5934         *) tval=false;;
5935         esac;;
5936 esac;
5937 eval "$2=$tval"'
5938
5939 : define an is-in-libc? function
5940 inlibc='echo " "; td=$define; tu=$undef;
5941 sym=$1; var=$2; eval "was=\$$2";
5942 tx=yes;
5943 case "$reuseval$was" in
5944 true) ;;
5945 true*) tx=no;;
5946 esac;
5947 case "$tx" in
5948 yes)
5949         set $sym tres -f;
5950         eval $csym;
5951         case "$tres" in
5952         true)
5953                 echo "$sym() found." >&4;
5954                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5955         *)
5956                 echo "$sym() NOT found." >&4;
5957                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5958         esac;;
5959 *)
5960         case "$was" in
5961         $define) echo "$sym() found." >&4;;
5962         *) echo "$sym() NOT found." >&4;;
5963         esac;;
5964 esac'
5965
5966 : see if sqrtl exists
5967 set sqrtl d_sqrtl
5968 eval $inlibc
5969
5970 hasproto='varname=$1; func=$2; shift; shift;
5971 while $test $# -ge 2; do
5972         case "$1" in
5973         $define) echo "#include <$2>";;
5974         esac ;
5975     shift 2;
5976 done > try.c;
5977 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
5978 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
5979         echo "$func() prototype found.";
5980         val="$define";
5981 else
5982         echo "$func() prototype NOT found.";
5983         val="$undef";
5984 fi;
5985 set $varname;
5986 eval $setvar;
5987 $rm -f try.c tryout.c'
5988
5989 : check for length of double
5990 echo " "
5991 case "$doublesize" in
5992 '')
5993         echo "Checking to see how big your double precision numbers are..." >&4
5994         $cat >try.c <<EOCP
5995 #include <stdio.h>
5996 #$i_stdlib I_STDLIB
5997 #ifdef I_STDLIB
5998 #include <stdlib.h>
5999 #endif
6000 int main()
6001 {
6002     printf("%d\n", (int)sizeof(double));
6003     exit(0);
6004 }
6005 EOCP
6006         set try
6007         if eval $compile_ok; then
6008                 doublesize=`$run ./try`
6009                 echo "Your double is $doublesize bytes long."
6010         else
6011                 dflt='8'
6012                 echo "(I can't seem to compile the test program.  Guessing...)"
6013                 rp="What is the size of a double precision number (in bytes)?"
6014                 . ./myread
6015                 doublesize="$ans"
6016         fi
6017         ;;
6018 esac
6019 $rm -f try.c try
6020
6021 : check for long doubles
6022 echo " "
6023 echo "Checking to see if you have long double..." >&4
6024 echo 'int main() { long double x = 7.0; }' > try.c
6025 set try
6026 if eval $compile; then
6027         val="$define"
6028         echo "You have long double."
6029 else
6030         val="$undef"
6031         echo "You do not have long double."
6032 fi
6033 $rm try.*
6034 set d_longdbl
6035 eval $setvar
6036
6037 : check for length of long double
6038 case "${d_longdbl}${longdblsize}" in
6039 $define)
6040         echo " "
6041         echo "Checking to see how big your long doubles are..." >&4
6042         $cat >try.c <<'EOCP'
6043 #include <stdio.h>
6044 int main()
6045 {
6046         printf("%d\n", sizeof(long double));
6047 }
6048 EOCP
6049         set try
6050         set try
6051         if eval $compile; then
6052                 longdblsize=`$run ./try`
6053                 echo "Your long doubles are $longdblsize bytes long."
6054         else
6055                 dflt='8'
6056                 echo " "
6057                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6058                 rp="What is the size of a long double (in bytes)?"
6059                 . ./myread
6060                 longdblsize="$ans"
6061         fi
6062         if $test "X$doublesize" = "X$longdblsize"; then
6063                 echo "(That isn't any different from an ordinary double.)"
6064         fi      
6065         ;;
6066 esac
6067 $rm -f try.* try
6068
6069 echo " "
6070
6071 if $test X"$d_longdbl" = X"$define"; then
6072
6073 echo "Checking how to print long doubles..." >&4
6074
6075 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
6076         $cat >try.c <<'EOCP'
6077 #include <sys/types.h>
6078 #include <stdio.h>
6079 int main() {
6080   double d = 123.456;
6081   printf("%.3f\n", d);
6082 }
6083 EOCP
6084         set try
6085         if eval $compile; then
6086                 yyy=`$run ./try`
6087                 case "$yyy" in
6088                 123.456)
6089                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
6090                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
6091                         echo "We will use %f."
6092                         ;;
6093                 esac
6094         fi
6095 fi
6096
6097 if $test X"$sPRIfldbl" = X; then
6098         $cat >try.c <<'EOCP'
6099 #include <sys/types.h>
6100 #include <stdio.h>
6101 int main() {
6102   long double d = 123.456;
6103   printf("%.3Lf\n", d);
6104 }
6105 EOCP
6106         set try
6107         if eval $compile; then
6108                 yyy=`$run ./try`
6109                 case "$yyy" in
6110                 123.456)
6111                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
6112                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
6113                         echo "We will use %Lf."
6114                         ;;
6115                 esac
6116         fi
6117 fi
6118
6119 if $test X"$sPRIfldbl" = X; then
6120         $cat >try.c <<'EOCP'
6121 #include <sys/types.h>
6122 #include <stdio.h>
6123 int main() {
6124   long double d = 123.456;
6125   printf("%.3llf\n", d);
6126 }
6127 EOCP
6128         set try
6129         if eval $compile; then
6130                 yyy=`$run ./try`
6131                 case "$yyy" in
6132                 123.456)
6133                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
6134                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
6135                         echo "We will use %llf."
6136                         ;;
6137                 esac
6138         fi
6139 fi
6140
6141 if $test X"$sPRIfldbl" = X; then
6142         $cat >try.c <<'EOCP'
6143 #include <sys/types.h>
6144 #include <stdio.h>
6145 int main() {
6146   long double d = 123.456;
6147   printf("%.3lf\n", d);
6148 }
6149 EOCP
6150         set try
6151         if eval $compile; then
6152                 yyy=`$run ./try`
6153                 case "$yyy" in
6154                 123.456)
6155                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
6156                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
6157                         echo "We will use %lf."
6158                         ;;
6159                 esac
6160         fi
6161 fi
6162
6163 if $test X"$sPRIfldbl" = X; then
6164         echo "Cannot figure out how to print long doubles." >&4
6165 else
6166         sSCNfldbl=$sPRIfldbl    # expect consistency
6167 fi
6168
6169 $rm -f try try.*
6170
6171 fi # d_longdbl
6172
6173 case "$sPRIfldbl" in
6174 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
6175         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
6176         d_SCNfldbl="$undef";
6177         ;;
6178 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
6179         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
6180         d_SCNfldbl="$define";
6181         ;;
6182 esac
6183
6184 : see if modfl exists
6185 set modfl d_modfl
6186 eval $inlibc
6187
6188 : see if aintl exists - used along with copysignl if modfl is missing
6189 set aintl d_aintl
6190 eval $inlibc
6191
6192 : see if copysignl exists - used along with aintl if modfl is missing
6193 set copysign d_copysignl
6194 eval $inlibc
6195
6196 : see if prototype for modfl is available
6197 echo " "
6198 set d_modflproto modfl math.h
6199 eval $hasproto
6200
6201 d_modfl_pow32_bug="$undef"
6202
6203 case "$d_longdbl$d_modfl" in
6204 $define$define)
6205         $cat <<EOM
6206 Checking to see whether your modfl() is okay for large values...
6207 EOM
6208 $cat >try.c <<EOCP
6209 #include <math.h> 
6210 #include <stdio.h>
6211 EOCP
6212 if $test "X$d_modflproto" != "X$define"; then
6213         $cat >>try.c <<EOCP
6214 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
6215 long double modfl (long double, long double *);
6216 EOCP
6217 fi
6218 $cat >>try.c <<EOCP
6219 int main() {
6220     long double nv = 4294967303.15;
6221     long double v, w;
6222     v = modfl(nv, &w);         
6223 #ifdef __GLIBC__
6224     printf("glibc");
6225 #endif
6226     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
6227     return 0;
6228 }
6229 EOCP
6230         case "$osname:$gccversion" in
6231         aix:)   saveccflags="$ccflags"
6232                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
6233         esac
6234         set try
6235         if eval $compile; then
6236                 foo=`$run ./try`
6237                 case "$foo" in
6238                 *" 4294967303.150000 1.150000 4294967302.000000")
6239                         echo >&4 "Your modfl() is broken for large values."
6240                         d_modfl_pow32_bug="$define"
6241                         case "$foo" in
6242                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
6243                         ;;
6244                         esac
6245                         ;;
6246                 *" 4294967303.150000 0.150000 4294967303.000000")
6247                         echo >&4 "Your modfl() seems okay for large values."
6248                         ;;
6249                 *)      echo >&4 "I don't understand your modfl() at all."
6250                         d_modfl="$undef"
6251                         ;;
6252                 esac
6253                 $rm -f try.* try core core.try.*
6254         else
6255                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
6256                 d_modfl="$undef"
6257         fi
6258         case "$osname:$gccversion" in
6259         aix:)   ccflags="$saveccflags" ;; # restore
6260         esac
6261         ;;
6262 esac
6263
6264 if $test "$uselongdouble" = "$define"; then
6265     message=X
6266     case "$d_sqrtl:$d_modfl" in
6267     $define:$define)
6268         : You have both
6269         ;;
6270     $define:$undef)
6271         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
6272             echo "You have both aintl and copysignl, so I can emulate modfl"
6273         else
6274             message="I could not find modfl"
6275         fi
6276         ;;
6277     $undef:$define)
6278         message="I could not find sqrtl"
6279         ;;
6280     $undef:$undef)
6281         message="I found neither sqrtl nor modfl"
6282         ;;
6283     esac
6284
6285     if $test "$message" != X; then
6286         $cat <<EOM >&4
6287
6288 *** You requested the use of long doubles but you do not seem to have
6289 *** the mathematic functions for long doubles.
6290 *** ($message)
6291 *** I'm disabling the use of long doubles.
6292
6293 EOM
6294
6295         uselongdouble=$undef
6296     fi
6297 fi
6298
6299 : determine the architecture name
6300 echo " "
6301 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6302         tarch=`arch`"-$osname"
6303 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6304         if uname -m > tmparch 2>&1 ; then
6305                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6306                         -e 's/$/'"-$osname/" tmparch`
6307         else
6308                 tarch="$osname"
6309         fi
6310         $rm -f tmparch
6311 else
6312         tarch="$osname"
6313 fi
6314 case "$myarchname" in
6315 ''|"$tarch") ;;
6316 *)
6317         echo "(Your architecture name used to be $myarchname.)"
6318         archname=''
6319         ;;
6320 esac
6321 case "$targetarch" in
6322 '') ;;
6323 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6324 esac
6325 myarchname="$tarch"
6326 case "$archname" in
6327 '') dflt="$tarch";;
6328 *) dflt="$archname";;
6329 esac
6330 rp='What is your architecture name'
6331 . ./myread
6332 archname="$ans"
6333 case "$usethreads" in
6334 $define)
6335         echo "Threads selected." >&4
6336         case "$archname" in
6337         *-thread*) echo "...and architecture name already has -thread." >&4
6338                 ;;
6339         *)      archname="$archname-thread"
6340                 echo "...setting architecture name to $archname." >&4
6341                 ;;
6342         esac
6343         ;;
6344 esac
6345 case "$usemultiplicity" in
6346 $define)
6347         echo "Multiplicity selected." >&4
6348         case "$archname" in
6349         *-multi*) echo "...and architecture name already has -multi." >&4
6350                 ;;
6351         *)      archname="$archname-multi"
6352                 echo "...setting architecture name to $archname." >&4
6353                 ;;
6354         esac
6355         ;;
6356 esac
6357 case "$use64bitint$use64bitall" in
6358 *"$define"*)
6359         case "$archname64" in
6360         '')
6361                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6362                 ;;
6363         *)
6364                 case "$use64bitint" in
6365                 "$define") echo "64 bit integers selected." >&4 ;;
6366                 esac
6367                 case "$use64bitall" in
6368                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6369                 esac
6370                 case "$archname" in
6371                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6372                         ;;
6373                 *)      archname="$archname-$archname64"
6374                         echo "...setting architecture name to $archname." >&4
6375                         ;;
6376                 esac
6377                 ;;
6378         esac
6379 esac
6380 case "$uselongdouble" in
6381 $define)
6382         echo "Long doubles selected." >&4
6383         case "$longdblsize" in
6384         $doublesize)
6385                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6386                 ;;
6387         *)
6388                 case "$archname" in
6389                 *-ld*) echo "...and architecture name already has -ld." >&4
6390                         ;;
6391                 *)      archname="$archname-ld"
6392                         echo "...setting architecture name to $archname." >&4
6393                         ;;
6394                 esac
6395                 ;;
6396         esac
6397         ;;
6398 esac
6399 case "$useperlio" in
6400 $define)
6401         echo "Perlio selected." >&4
6402         ;;
6403 *)
6404         echo "Perlio not selected, using stdio." >&4
6405         case "$archname" in
6406         *-stdio*) echo "...and architecture name already has -stdio." >&4
6407                 ;;
6408         *)      archname="$archname-stdio"
6409                 echo "...setting architecture name to $archname." >&4
6410                 ;;
6411         esac
6412         ;;
6413 esac
6414
6415 : determine root of directory hierarchy where package will be installed.
6416 case "$prefix" in
6417 '')
6418         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6419         ;;
6420 *?/)
6421         dflt=`echo "$prefix" | sed 's/.$//'`
6422         ;;
6423 *)
6424         dflt="$prefix"
6425         ;;
6426 esac
6427 $cat <<EOM
6428
6429 By default, $package will be installed in $dflt/bin, manual pages
6430 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6431 installation directories. Typically this is something like /usr/local.
6432 If you wish to have binaries under /usr/bin but other parts of the
6433 installation under /usr/local, that's ok: you will be prompted
6434 separately for each of the installation directories, the prefix being
6435 only used to set the defaults.
6436
6437 EOM
6438 fn=d~
6439 rp='Installation prefix to use?'
6440 . ./getfile
6441 oldprefix=''
6442 case "$prefix" in
6443 '') ;;
6444 *)
6445         case "$ans" in
6446         "$prefix") ;;
6447         *) oldprefix="$prefix";;
6448         esac
6449         ;;
6450 esac
6451 prefix="$ans"
6452 prefixexp="$ansexp"
6453
6454 case "$afsroot" in
6455 '')     afsroot=/afs ;;
6456 *)      afsroot=$afsroot ;;
6457 esac
6458
6459 : is AFS running?
6460 echo " "
6461 case "$afs" in
6462 $define|true)   afs=true ;;
6463 $undef|false)   afs=false ;;
6464 *)      if test -d $afsroot; then
6465                 afs=true
6466         else
6467                 afs=false
6468         fi
6469         ;;
6470 esac
6471 if $afs; then
6472         echo "AFS may be running... I'll be extra cautious then..." >&4
6473 else
6474         echo "AFS does not seem to be running..." >&4
6475 fi
6476
6477 : determine installation prefix for where package is to be installed.
6478 if $afs; then 
6479 $cat <<EOM
6480
6481 Since you are running AFS, I need to distinguish the directory in which
6482 files will reside from the directory in which they are installed (and from
6483 which they are presumably copied to the former directory by occult means).
6484
6485 EOM
6486         case "$installprefix" in
6487         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6488         *) dflt="$installprefix";;
6489         esac
6490 else
6491 $cat <<EOM
6492
6493 In some special cases, particularly when building $package for distribution,
6494 it is convenient to distinguish the directory in which files should be
6495 installed from the directory ($prefix) in which they will
6496 eventually reside.  For most users, these two directories are the same.
6497
6498 EOM
6499         case "$installprefix" in
6500         '') dflt=$prefix ;;
6501         *) dflt=$installprefix;;
6502         esac
6503 fi
6504 fn=d~
6505 rp='What installation prefix should I use for installing files?'
6506 . ./getfile
6507 installprefix="$ans"
6508 installprefixexp="$ansexp"
6509
6510 : set the prefixit variable, to compute a suitable default value
6511 prefixit='case "$3" in
6512 ""|none)
6513         case "$oldprefix" in
6514         "") eval "$1=\"\$$2\"";;
6515         *)
6516                 case "$3" in
6517                 "") eval "$1=";;
6518                 none)
6519                         eval "tp=\"\$$2\"";
6520                         case "$tp" in
6521                         ""|" ") eval "$1=\"\$$2\"";;
6522                         *) eval "$1=";;
6523                         esac;;
6524                 esac;;
6525         esac;;
6526 *)
6527         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6528         case "$tp" in
6529         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6530         /*-$oldprefix/*|\~*-$oldprefix/*)
6531                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6532         *) eval "$1=\"\$$2\"";;
6533         esac;;
6534 esac'
6535
6536 : get the patchlevel
6537 echo " "
6538 echo "Getting the current patchlevel..." >&4
6539 if $test -r $rsrc/patchlevel.h;then
6540         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6541         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6542         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6543         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6544         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6545         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6546        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6547 else
6548         revision=0
6549         patchlevel=0
6550         subversion=0
6551         api_revision=0
6552         api_version=0
6553         api_subversion=0
6554         perl_patchlevel=0
6555         $echo "(You do not have patchlevel.h.  Eek.)"
6556 fi
6557 if $test -r $rsrc/.patch ; then  
6558         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6559                 perl_patchlevel=`cat $rsrc/.patch`
6560         fi
6561 fi
6562 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6563 version_patchlevel_string="version $patchlevel subversion $subversion"
6564 case "$perl_patchlevel" in
6565 0|'') ;;
6566 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6567 esac
6568
6569 $echo "(You have $package $version_patchlevel_string.)"
6570
6571 case "$osname" in
6572 dos|vms)
6573         : XXX Should be a Configure test for double-dots in filenames.
6574         version=`echo $revision $patchlevel $subversion | \
6575                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6576         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6577                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6578         ;;
6579 *)
6580         version=`echo $revision $patchlevel $subversion | \
6581                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6582         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6583                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6584         ;;
6585 esac
6586 : Special case the 5.005_xx maintenance series, which used 5.005
6587 : without any subversion label as a subdirectory in $sitelib
6588 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6589         api_versionstring='5.005'
6590 fi
6591
6592 : determine installation style
6593 : For now, try to deduce it from prefix unless it is already set.
6594 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6595 case "$installstyle" in
6596 '')     case "$prefix" in
6597                 *perl*) dflt='lib';;
6598                 *) dflt='lib/perl5' ;;
6599         esac
6600         ;;
6601 *)      dflt="$installstyle" ;;
6602 esac
6603 : Probably not worth prompting for this since we prompt for all
6604 : the directories individually, and the prompt would be too long and
6605 : confusing anyway.
6606 installstyle=$dflt
6607
6608 : determine where private library files go
6609 : Usual default is /usr/local/lib/perl5/$version.
6610 : Also allow things like /opt/perl/lib/$version, since 
6611 : /opt/perl/lib/perl5... would be redundant.
6612 : The default "style" setting is made in installstyle.U
6613 case "$installstyle" in
6614 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6615 *)       set dflt privlib lib/$version ;;
6616 esac
6617 eval $prefixit
6618 $cat <<EOM
6619
6620 There are some auxiliary files for $package that need to be put into a
6621 private library directory that is accessible by everyone.
6622
6623 EOM
6624 fn=d~+
6625 rp='Pathname where the private library files will reside?'
6626 . ./getfile
6627 privlib="$ans"
6628 privlibexp="$ansexp"
6629 : Change installation prefix, if necessary.
6630 if $test X"$prefix" != X"$installprefix"; then
6631         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6632 else
6633         installprivlib="$privlibexp"
6634 fi
6635
6636 : set the prefixup variable, to restore leading tilda escape
6637 prefixup='case "$prefixexp" in
6638 "$prefix") ;;
6639 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6640 esac'
6641
6642 : determine where public architecture dependent libraries go
6643 set archlib archlib
6644 eval $prefixit
6645 : privlib default is /usr/local/lib/$package/$version
6646 : archlib default is /usr/local/lib/$package/$version/$archname
6647 : privlib may have an optional trailing /share.
6648 tdflt=`echo $privlib | $sed 's,/share$,,'`
6649 tdflt=$tdflt/$archname
6650 case "$archlib" in
6651 '')     dflt=$tdflt
6652         ;;
6653 *)      dflt="$archlib"
6654     ;;
6655 esac
6656 $cat <<EOM
6657
6658 $spackage contains architecture-dependent library files.  If you are
6659 sharing libraries in a heterogeneous environment, you might store
6660 these files in a separate location.  Otherwise, you can just include
6661 them with the rest of the public library files.
6662
6663 EOM
6664 fn=d+~
6665 rp='Where do you want to put the public architecture-dependent libraries?'
6666 . ./getfile
6667 archlib="$ans"
6668 archlibexp="$ansexp"
6669 if $test X"$archlib" = X"$privlib"; then
6670         d_archlib="$undef"
6671 else
6672         d_archlib="$define"
6673 fi
6674 : Change installation prefix, if necessary.
6675 if $test X"$prefix" != X"$installprefix"; then
6676         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6677 else
6678         installarchlib="$archlibexp"
6679 fi
6680
6681 : see if setuid scripts can be secure
6682 $cat <<EOM
6683
6684 Some kernels have a bug that prevents setuid #! scripts from being
6685 secure.  Some sites have disabled setuid #! scripts because of this.
6686
6687 First let's decide if your kernel supports secure setuid #! scripts.
6688 (If setuid #! scripts would be secure but have been disabled anyway,
6689 don't say that they are secure if asked.)
6690
6691 EOM
6692
6693 val="$undef"
6694 if $test -d /dev/fd; then
6695         echo "#!$ls" >reflect
6696         chmod +x,u+s reflect
6697         ./reflect >flect 2>&1
6698         if $contains "/dev/fd" flect >/dev/null; then
6699                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6700                 val="$define"
6701         else
6702                 $cat <<EOM
6703 If you are not sure if they are secure, I can check but I'll need a
6704 username and password different from the one you are using right now.
6705 If you don't have such a username or don't want me to test, simply
6706 enter 'none'.
6707
6708 EOM
6709                 rp='Other username to test security of setuid scripts with?'
6710                 dflt='none'
6711                 . ./myread
6712                 case "$ans" in
6713                 n|none)
6714                         case "$d_suidsafe" in
6715                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6716                                 dflt=n;;
6717                         "$undef")
6718                                 echo "Well, the $hint value is *not* secure." >&4
6719                                 dflt=n;;
6720                         *)      echo "Well, the $hint value *is* secure." >&4
6721                                 dflt=y;;
6722                         esac
6723                         ;;
6724                 *)
6725                         $rm -f reflect flect
6726                         echo "#!$ls" >reflect
6727                         chmod +x,u+s reflect
6728                         echo >flect
6729                         chmod a+w flect
6730                         echo '"su" will (probably) prompt you for '"$ans's password."
6731                         su $ans -c './reflect >flect'
6732                         if $contains "/dev/fd" flect >/dev/null; then
6733                                 echo "Okay, it looks like setuid scripts are secure." >&4
6734                                 dflt=y
6735                         else
6736                                 echo "I don't think setuid scripts are secure." >&4
6737                                 dflt=n
6738                         fi
6739                         ;;
6740                 esac
6741                 rp='Does your kernel have *secure* setuid scripts?'
6742                 . ./myread
6743                 case "$ans" in
6744                 [yY]*)  val="$define";;
6745                 *)      val="$undef";;
6746                 esac
6747         fi
6748 else
6749         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6750         echo "(That's for file descriptors, not floppy disks.)"
6751         val="$undef"
6752 fi
6753 set d_suidsafe
6754 eval $setvar
6755
6756 $rm -f reflect flect
6757
6758 : now see if they want to do setuid emulation
6759 echo " "
6760 val="$undef"
6761 case "$d_suidsafe" in
6762 "$define")
6763         val="$undef"
6764         echo "No need to emulate SUID scripts since they are secure here." >&4
6765         ;;
6766 *)
6767         $cat <<EOM
6768 Some systems have disabled setuid scripts, especially systems where
6769 setuid scripts cannot be secure.  On systems where setuid scripts have
6770 been disabled, the setuid/setgid bits on scripts are currently
6771 useless.  It is possible for $package to detect those bits and emulate
6772 setuid/setgid in a secure fashion.  This emulation will only work if
6773 setuid scripts have been disabled in your kernel.
6774
6775 EOM
6776         case "$d_dosuid" in
6777         "$define") dflt=y ;;
6778         *) dflt=n ;;
6779         esac
6780         rp="Do you want to do setuid/setgid emulation?"
6781         . ./myread
6782         case "$ans" in
6783         [yY]*)  val="$define";;
6784         *)      val="$undef";;
6785         esac
6786         ;;
6787 esac
6788 set d_dosuid
6789 eval $setvar
6790
6791 : see if this is a malloc.h system
6792 : we want a real compile instead of Inhdr because some systems have a
6793 : malloc.h that just gives a compile error saying to use stdlib.h instead
6794 echo " "
6795 $cat >try.c <<EOCP
6796 #include <stdlib.h>
6797 #include <malloc.h>
6798 int main () { return 0; }
6799 EOCP
6800 set try
6801 if eval $compile; then
6802     echo "<malloc.h> found." >&4
6803     val="$define"
6804 else
6805     echo "<malloc.h> NOT found." >&4
6806     val="$undef"
6807 fi
6808 $rm -f try.c try
6809 set i_malloc
6810 eval $setvar
6811
6812 : check for void type
6813 echo " "
6814 echo "Checking to see how well your C compiler groks the void type..." >&4
6815 case "$voidflags" in
6816 '')
6817         $cat >try.c <<EOCP
6818 #$i_stdlib I_STDLIB
6819 #ifdef I_STDLIB
6820 #include <stdlib.h>
6821 #endif
6822 #if TRY & 1
6823 void sub() {
6824 #else
6825 sub() {
6826 #endif
6827         extern void moo();      /* function returning void */
6828         void (*goo)();          /* ptr to func returning void */
6829 #if TRY & 8
6830         void *hue;              /* generic ptr */
6831 #endif
6832 #if TRY & 2
6833         void (*foo[10])();
6834 #endif
6835
6836 #if TRY & 4
6837         if(goo == moo) {
6838                 exit(0);
6839         }
6840 #endif
6841         exit(0);
6842 }
6843 int main() { sub(); }
6844 EOCP
6845         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6846                 voidflags=$defvoidused
6847         echo "Good.  It appears to support void to the level $package wants.">&4
6848                 if $contains warning .out >/dev/null 2>&1; then
6849                         echo "However, you might get some warnings that look like this:"
6850                         $cat .out
6851                 fi
6852         else
6853 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6854                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6855                         echo "It supports 1..."
6856                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6857                                 echo "It also supports 2..."
6858                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6859                                         voidflags=7
6860                                         echo "And it supports 4 but not 8 definitely."
6861                                 else
6862                                         echo "It doesn't support 4..."
6863                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6864                                                 voidflags=11
6865                                                 echo "But it supports 8."
6866                                         else
6867                                                 voidflags=3
6868                                                 echo "Neither does it support 8."
6869                                         fi
6870                                 fi
6871                         else
6872                                 echo "It does not support 2..."
6873                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6874                                         voidflags=13
6875                                         echo "But it supports 4 and 8."
6876                                 else
6877                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6878                                                 voidflags=5
6879                                                 echo "And it supports 4 but has not heard about 8."
6880                                         else
6881                                                 echo "However it supports 8 but not 4."
6882                                         fi
6883                                 fi
6884                         fi
6885                 else
6886                         echo "There is no support at all for void."
6887                         voidflags=0
6888                 fi
6889         fi
6890 esac
6891 case "$voidflags" in
6892 "$defvoidused") ;;
6893 *)      $cat >&4 <<'EOM'
6894   Support flag bits are:
6895     1: basic void declarations.
6896     2: arrays of pointers to functions returning void.
6897     4: operations between pointers to and addresses of void functions.
6898     8: generic void pointers.
6899 EOM
6900         dflt="$voidflags";
6901         rp="Your void support flags add up to what?"
6902         . ./myread
6903         voidflags="$ans"
6904         ;;
6905 esac
6906 $rm -f try.* .out
6907
6908 : check for length of pointer
6909 echo " "
6910 case "$ptrsize" in
6911 '')
6912         echo "Checking to see how big your pointers are..." >&4
6913         if test "$voidflags" -gt 7; then
6914                 echo '#define VOID_PTR char *' > try.c
6915         else
6916                 echo '#define VOID_PTR void *' > try.c
6917         fi
6918         $cat >>try.c <<EOCP
6919 #include <stdio.h>
6920 #$i_stdlib I_STDLIB
6921 #ifdef I_STDLIB
6922 #include <stdlib.h>
6923 #endif
6924 int main()
6925 {
6926     printf("%d\n", (int)sizeof(VOID_PTR));
6927     exit(0);
6928 }
6929 EOCP
6930         set try
6931         if eval $compile_ok; then
6932                 ptrsize=`$run ./try`
6933                 echo "Your pointers are $ptrsize bytes long."
6934         else
6935                 dflt='4'
6936                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6937                 rp="What is the size of a pointer (in bytes)?"
6938                 . ./myread
6939                 ptrsize="$ans"
6940         fi
6941         ;;
6942 esac
6943 $rm -f try.c try
6944 case "$use64bitall" in
6945 "$define"|true|[yY]*)
6946         case "$ptrsize" in
6947         4)      cat <<EOM >&4
6948
6949 *** You have chosen a maximally 64-bit build, but your pointers
6950 *** are only 4 bytes wide, disabling maximal 64-bitness.
6951
6952 EOM
6953                 use64bitall="$undef"
6954                 case "$use64bitint" in
6955                 "$define"|true|[yY]*) ;;
6956                 *)      cat <<EOM >&4
6957
6958 *** Downgrading from maximal 64-bitness to using 64-bit integers.
6959
6960 EOM
6961                         use64bitint="$define"
6962                         ;;
6963                 esac
6964                 ;;
6965         esac
6966         ;;
6967 esac
6968
6969
6970 : determine which malloc to compile in
6971 echo " "
6972 case "$usemymalloc" in
6973 [yY]*|true|$define)     dflt='y' ;;
6974 [nN]*|false|$undef)     dflt='n' ;;
6975 *)      case "$ptrsize" in
6976         4) dflt='y' ;;
6977         *) dflt='n' ;;
6978         esac
6979         ;;
6980 esac
6981 rp="Do you wish to attempt to use the malloc that comes with $package?"
6982 . ./myread
6983 usemymalloc="$ans"
6984 case "$ans" in
6985 y*|true)
6986         usemymalloc='y'
6987         mallocsrc='malloc.c'
6988         mallocobj="malloc$_o"
6989         d_mymalloc="$define"
6990         case "$libs" in
6991         *-lmalloc*)
6992                 : Remove malloc from list of libraries to use
6993                 echo "Removing unneeded -lmalloc from library list" >&4
6994                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6995                 shift
6996                 libs="$*"
6997                 echo "libs = $libs" >&4
6998                 ;;
6999         esac
7000         ;;
7001 *)
7002         usemymalloc='n'
7003         mallocsrc=''
7004         mallocobj=''
7005         d_mymalloc="$undef"
7006         ;;
7007 esac
7008
7009 : compute the return types of malloc and free
7010 echo " "
7011 $cat >malloc.c <<END
7012 #$i_malloc I_MALLOC
7013 #$i_stdlib I_STDLIB
7014 #include <stdio.h>
7015 #include <sys/types.h>
7016 #ifdef I_MALLOC
7017 #include <malloc.h>
7018 #endif
7019 #ifdef I_STDLIB
7020 #include <stdlib.h>
7021 #endif
7022 #ifdef TRY_MALLOC
7023 void *malloc();
7024 #endif
7025 #ifdef TRY_FREE
7026 void free();
7027 #endif
7028 END
7029 case "$malloctype" in
7030 '')
7031         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
7032                 malloctype='void *'
7033         else
7034                 malloctype='char *'
7035         fi
7036         ;;
7037 esac
7038 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
7039
7040 case "$freetype" in
7041 '')
7042         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
7043                 freetype='void'
7044         else
7045                 freetype='int'
7046         fi
7047         ;;
7048 esac
7049 echo "Your system uses $freetype free(), it would seem." >&4
7050 $rm -f malloc.[co]
7051 $cat <<EOM
7052
7053 After $package is installed, you may wish to install various
7054 add-on modules and utilities.  Typically, these add-ons will
7055 be installed under $prefix with the rest
7056 of this package.  However, you may wish to install such add-ons
7057 elsewhere under a different prefix.
7058
7059 If you do not wish to put everything under a single prefix, that's
7060 ok.  You will be prompted for the individual locations; this siteprefix
7061 is only used to suggest the defaults.
7062
7063 The default should be fine for most people.
7064
7065 EOM
7066 fn=d~+
7067 rp='Installation prefix to use for add-on modules and utilities?'
7068 : XXX Here might be another good place for an installstyle setting.
7069 case "$siteprefix" in
7070 '') dflt=$prefix ;;
7071 *)  dflt=$siteprefix ;;
7072 esac
7073 . ./getfile
7074 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
7075 oldsiteprefix=''
7076 case "$siteprefix" in
7077 '') ;;
7078 *)      case "$ans" in
7079         "$prefix") ;;
7080         *) oldsiteprefix="$prefix";;
7081         esac
7082         ;;
7083 esac
7084 siteprefix="$ans"
7085 siteprefixexp="$ansexp"
7086
7087 : determine where site specific libraries go.
7088 : Usual default is /usr/local/lib/perl5/site_perl/$version
7089 : The default "style" setting is made in installstyle.U
7090 : XXX No longer works with Prefixit stuff.
7091 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7092 case "$sitelib" in
7093 '') case "$installstyle" in
7094         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
7095         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
7096         esac
7097         ;;
7098 *)      dflt="$sitelib"
7099         ;;
7100 esac
7101 $cat <<EOM
7102
7103 The installation process will create a directory for
7104 site-specific extensions and modules.  Most users find it convenient
7105 to place all site-specific files in this directory rather than in the
7106 main distribution directory.
7107
7108 EOM
7109 fn=d~+
7110 rp='Pathname for the site-specific library files?'
7111 . ./getfile
7112 sitelib="$ans"
7113 sitelibexp="$ansexp"
7114 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
7115 : Change installation prefix, if necessary.
7116 if $test X"$prefix" != X"$installprefix"; then
7117         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
7118 else
7119         installsitelib="$sitelibexp"
7120 fi
7121
7122 : determine where site specific architecture-dependent libraries go.
7123 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
7124 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
7125 : sitelib may have an optional trailing /share.
7126 case "$sitearch" in
7127 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
7128         dflt="$dflt/$archname"
7129         ;;
7130 *)      dflt="$sitearch"
7131         ;;
7132 esac
7133 set sitearch sitearch none
7134 eval $prefixit
7135 $cat <<EOM
7136
7137 The installation process will also create a directory for
7138 architecture-dependent site-specific extensions and modules.
7139
7140 EOM
7141 fn=d~+
7142 rp='Pathname for the site-specific architecture-dependent library files?'
7143 . ./getfile
7144 sitearch="$ans"
7145 sitearchexp="$ansexp"
7146 : Change installation prefix, if necessary.
7147 if $test X"$prefix" != X"$installprefix"; then
7148         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
7149 else
7150         installsitearch="$sitearchexp"
7151 fi
7152
7153 $cat <<EOM
7154
7155 The installation process will also create a directory for
7156 vendor-supplied add-ons.  Vendors who supply perl with their system
7157 may find it convenient to place all vendor-supplied files in this
7158 directory rather than in the main distribution directory.  This will
7159 ease upgrades between binary-compatible maintenance versions of perl.
7160
7161 Of course you may also use these directories in whatever way you see
7162 fit.  For example, you might use them to access modules shared over a
7163 company-wide network.
7164
7165 The default answer should be fine for most people.
7166 This causes further questions about vendor add-ons to be skipped
7167 and no vendor-specific directories will be configured for perl.
7168
7169 EOM
7170 rp='Do you want to configure vendor-specific add-on directories?'
7171 case "$usevendorprefix" in
7172 define|true|[yY]*) dflt=y ;;
7173 *)      : User may have set vendorprefix directly on Configure command line.
7174         case "$vendorprefix" in
7175         ''|' ') dflt=n ;;
7176         *)      dflt=y ;;
7177         esac
7178         ;;
7179 esac
7180 . ./myread
7181 case "$ans" in
7182 [yY]*)  fn=d~+
7183         rp='Installation prefix to use for vendor-supplied add-ons?'
7184         case "$vendorprefix" in
7185         '') dflt='' ;;
7186         *)  dflt=$vendorprefix ;;
7187         esac
7188         . ./getfile
7189         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
7190         oldvendorprefix=''
7191         case "$vendorprefix" in
7192         '') ;;
7193         *)      case "$ans" in
7194                 "$prefix") ;;
7195                 *) oldvendorprefix="$prefix";;
7196                 esac
7197                 ;;
7198         esac
7199         usevendorprefix="$define"
7200         vendorprefix="$ans"
7201         vendorprefixexp="$ansexp"
7202         ;;
7203 *)      usevendorprefix="$undef"
7204         vendorprefix=''
7205         vendorprefixexp=''
7206         ;;
7207 esac
7208
7209 case "$vendorprefix" in
7210 '')     d_vendorlib="$undef"
7211         vendorlib=''
7212         vendorlibexp=''
7213         ;;
7214 *)      d_vendorlib="$define"
7215         : determine where vendor-supplied modules go.
7216         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
7217         case "$vendorlib" in
7218         '')
7219                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7220                 case "$installstyle" in
7221                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
7222                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
7223                 esac
7224                 ;;
7225         *)      dflt="$vendorlib"
7226                 ;;
7227         esac
7228         fn=d~+
7229         rp='Pathname for the vendor-supplied library files?'
7230         . ./getfile
7231         vendorlib="$ans"
7232         vendorlibexp="$ansexp"
7233         ;;
7234 esac
7235 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
7236 : Change installation prefix, if necessary.
7237 if $test X"$prefix" != X"$installprefix"; then
7238         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
7239 else
7240         installvendorlib="$vendorlibexp"
7241 fi
7242
7243 case "$vendorprefix" in
7244 '')     d_vendorarch="$undef"
7245         vendorarch=''
7246         vendorarchexp=''
7247         ;;
7248 *)      d_vendorarch="$define"
7249         : determine where vendor-supplied architecture-dependent libraries go.
7250         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
7251         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
7252         : vendorlib may have an optional trailing /share.
7253         case "$vendorarch" in
7254         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
7255                 dflt="$dflt/$archname"
7256                 ;;
7257         *)      dflt="$vendorarch" ;;
7258         esac
7259         fn=d~+
7260         rp='Pathname for vendor-supplied architecture-dependent files?'
7261         . ./getfile
7262         vendorarch="$ans"
7263         vendorarchexp="$ansexp"
7264         ;;
7265 esac
7266 : Change installation prefix, if necessary.
7267 if $test X"$prefix" != X"$installprefix"; then
7268         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
7269 else
7270         installvendorarch="$vendorarchexp"
7271 fi
7272
7273 : Final catch-all directories to search
7274 $cat <<EOM
7275
7276 Lastly, you can have perl look in other directories for extensions and
7277 modules in addition to those already specified.
7278 These directories will be searched after 
7279         $sitearch 
7280         $sitelib 
7281 EOM
7282 test X"$vendorlib" != "X" && echo '     ' $vendorlib
7283 test X"$vendorarch" != "X" && echo '    ' $vendorarch
7284 echo ' '
7285 case "$otherlibdirs" in
7286 ''|' ') dflt='none' ;;
7287 *)      dflt="$otherlibdirs" ;;
7288 esac
7289 $cat <<EOM
7290 Enter a colon-separated set of extra paths to include in perl's @INC
7291 search path, or enter 'none' for no extra paths.
7292
7293 EOM
7294
7295 rp='Colon-separated list of additional directories for perl to search?'
7296 . ./myread
7297 case "$ans" in
7298 ' '|''|none)    otherlibdirs=' ' ;;     
7299 *)      otherlibdirs="$ans" ;;
7300 esac
7301 case "$otherlibdirs" in
7302 ' ') val=$undef ;;
7303 *)      val=$define ;;
7304 esac
7305 set d_perl_otherlibdirs
7306 eval $setvar
7307
7308 : Cruising for prototypes
7309 echo " "
7310 echo "Checking out function prototypes..." >&4
7311 $cat >prototype.c <<EOCP
7312 #$i_stdlib I_STDLIB
7313 #ifdef I_STDLIB
7314 #include <stdlib.h>
7315 #endif
7316 int main(int argc, char *argv[]) {
7317         exit(0);}
7318 EOCP
7319 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7320         echo "Your C compiler appears to support function prototypes."
7321         val="$define"
7322 else
7323         echo "Your C compiler doesn't seem to understand function prototypes."
7324         val="$undef"
7325 fi
7326 set prototype
7327 eval $setvar
7328 $rm -f prototype*
7329
7330 case "$prototype" in
7331 "$define") ;;
7332 *)      ansi2knr='ansi2knr'
7333         echo " "
7334         cat <<EOM >&4
7335
7336 $me:  FATAL ERROR:
7337 This version of $package can only be compiled by a compiler that 
7338 understands function prototypes.  Unfortunately, your C compiler 
7339         $cc $ccflags
7340 doesn't seem to understand them.  Sorry about that.
7341
7342 If GNU cc is available for your system, perhaps you could try that instead.  
7343
7344 Eventually, we hope to support building Perl with pre-ANSI compilers.
7345 If you would like to help in that effort, please contact <perlbug@perl.org>.
7346
7347 Aborting Configure now.
7348 EOM
7349         exit 2
7350         ;;
7351 esac
7352
7353 : determine where public executables go
7354 echo " "
7355 set dflt bin bin
7356 eval $prefixit
7357 fn=d~
7358 rp='Pathname where the public executables will reside?'
7359 . ./getfile
7360 if $test "X$ansexp" != "X$binexp"; then
7361         installbin=''
7362 fi
7363 bin="$ans"
7364 binexp="$ansexp"
7365 : Change installation prefix, if necessary.
7366 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
7367 if $test X"$prefix" != X"$installprefix"; then
7368         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
7369 else
7370         installbin="$binexp"
7371 fi
7372
7373 echo " "
7374 case "$extras" in
7375 '') dflt='n';;
7376 *) dflt='y';;
7377 esac
7378 cat <<EOM
7379 Perl can be built with extra modules or bundles of modules which
7380 will be fetched from the CPAN and installed alongside Perl.
7381
7382 Notice that you will need access to the CPAN; either via the Internet,
7383 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7384 be asked later to configure the CPAN.pm module which will in turn do
7385 the installation of the rest of the extra modules or bundles.)
7386
7387 Notice also that if the modules require any external software such as
7388 libraries and headers (the libz library and the zlib.h header for the
7389 Compress::Zlib module, for example) you MUST have any such software
7390 already installed, this configuration process will NOT install such
7391 things for you.
7392
7393 If this doesn't make any sense to you, just accept the default '$dflt'.
7394 EOM
7395 rp='Install any extra modules (y or n)?'
7396 . ./myread
7397 case "$ans" in
7398 y|Y)
7399         cat <<EOM
7400
7401 Please list any extra modules or bundles to be installed from CPAN,
7402 with spaces between the names.  The names can be in any format the
7403 'install' command of CPAN.pm will understand.  (Answer 'none',
7404 without the quotes, to install no extra modules or bundles.)
7405 EOM
7406         rp='Extras?'
7407         dflt="$extras"
7408         . ./myread
7409         extras="$ans"
7410 esac
7411 case "$extras" in
7412 ''|'none')
7413         val=''
7414         $rm -f ../extras.lst
7415         ;;
7416 *)      echo "(Saving the list of extras for later...)"
7417         echo "$extras" > ../extras.lst
7418         val="'$extras'"
7419         ;;
7420 esac
7421 set extras
7422 eval $setvar
7423 echo " "
7424
7425 : determine where html pages for programs go
7426 set html1dir html1dir none
7427 eval $prefixit
7428 $cat <<EOM
7429
7430 If you wish to install html files for programs in $spackage, indicate 
7431 the appropriate directory here.  To skip installing html files,
7432 answer "none".
7433 EOM
7434 case "$html1dir" in
7435 ''|none|$undef|' ') dflt=none ;;
7436 *) dflt=$html1dir ;;
7437 esac
7438 fn=dn+~
7439 rp="Directory for the main $spackage html pages?"
7440 . ./getfile
7441 html1dir="$ans"
7442 html1direxp="$ansexp"
7443 : Use ' ' for none so value is preserved next time through Configure
7444 $test X"$html1dir" = "X" && html1dir=' '
7445 : Change installation prefix, if necessary.
7446 if $test X"$prefix" != X"$installprefix"; then
7447         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
7448 else
7449         installhtml1dir="$html1direxp"
7450 fi
7451
7452 : determine where html pages for libraries and modules go
7453 set html3dir html3dir none
7454 eval $prefixit
7455 $cat <<EOM
7456
7457 If you wish to install html files for modules associated with $spackage,
7458 indicate the appropriate directory here.  To skip installing html files,
7459 answer "none".
7460 EOM
7461 : There is no obvious default.  If they have specified html1dir, then
7462 : try to key off that, possibly changing .../html1 into .../html3.
7463 case "$html3dir" in
7464 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
7465 *) dflt=$html3dir ;;
7466 esac
7467 fn=dn+~
7468 rp="Directory for the $spackage module html pages?"
7469 . ./getfile
7470 html3dir="$ans"
7471 html3direxp="$ansexp"
7472 : Use ' ' for none so value is preserved next time through Configure
7473 $test X"$html3dir" = "X" && html3dir=' '
7474 : Change installation prefix, if necessary.
7475 if $test X"$prefix" != X"$installprefix"; then
7476         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
7477 else
7478         installhtml3dir="$html3direxp"
7479 fi
7480
7481 : Find perl5.005 or later.
7482 echo "Looking for a previously installed perl5.005 or later... "
7483 case "$perl5" in
7484 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
7485                 : Check if this perl is recent and can load a simple module
7486                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7487                         perl5=$tdir/perl
7488                         break;
7489                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7490                         perl5=$tdir/perl5
7491                         break;
7492                 fi
7493         done
7494         ;;
7495 *)      perl5="$perl5"
7496         ;;
7497 esac
7498 case "$perl5" in
7499 '')     echo "None found.  That's ok.";;
7500 *)      echo "Using $perl5." ;;
7501 esac
7502
7503 : Determine list of previous versions to include in @INC
7504 $cat > getverlist <<EOPL
7505 #!$perl5 -w
7506 use File::Basename;
7507 \$api_versionstring = "$api_versionstring";
7508 \$version = "$version";
7509 \$stem = "$sitelib_stem";
7510 \$archname = "$archname";
7511 EOPL
7512         $cat >> getverlist <<'EOPL'
7513 # Can't have leading @ because metaconfig interprets it as a command!
7514 ;@inc_version_list=();
7515 # XXX Redo to do opendir/readdir? 
7516 if (-d $stem) {
7517     chdir($stem);
7518     ;@candidates = glob("5.*");
7519 }
7520 else {
7521     ;@candidates = ();
7522 }
7523
7524 # XXX ToDo:  These comparisons must be reworked when two-digit
7525 # subversions come along, so that 5.7.10 compares as greater than
7526 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
7527 # widespread that we can use the built-in version vectors rather
7528 # than reinventing them here.  For 5.6.0, however, we must
7529 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
7530 foreach $d (@candidates) {
7531     if ($d lt $version) {
7532         if ($d ge $api_versionstring) {
7533             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7534         }
7535         elsif ($d ge "5.005") {
7536             unshift(@inc_version_list, grep { -d } $d);
7537         }
7538     }
7539     else {
7540         # Skip newer version.  I.e. don't look in
7541         # 5.7.0 if we're installing 5.6.1.
7542     }
7543 }
7544
7545 if (@inc_version_list) {
7546     print join(' ', @inc_version_list);
7547 }
7548 else {
7549     # Blank space to preserve value for next Configure run.
7550     print " ";
7551 }
7552 EOPL
7553 chmod +x getverlist
7554 case "$inc_version_list" in
7555 '')     if test -x "$perl5$exe_ext"; then
7556                 dflt=`$perl5 getverlist`
7557         else
7558                 dflt='none'
7559         fi
7560         ;;
7561 $undef) dflt='none' ;;
7562 *)  eval dflt=\"$inc_version_list\" ;;
7563 esac
7564 case "$dflt" in
7565 ''|' ') dflt=none ;;
7566 esac
7567 case "$dflt" in
7568 5.005) dflt=none ;;
7569 esac
7570 $cat <<EOM
7571
7572 In order to ease the process of upgrading, this version of perl 
7573 can be configured to use modules built and installed with earlier 
7574 versions of perl that were installed under $prefix.  Specify here
7575 the list of earlier versions that this version of perl should check.
7576 If Configure detected no earlier versions of perl installed under
7577 $prefix, then the list will be empty.  Answer 'none' to tell perl
7578 to not search earlier versions.
7579
7580 The default should almost always be sensible, so if you're not sure,
7581 just accept the default.
7582 EOM
7583
7584 rp='List of earlier versions to include in @INC?'
7585 . ./myread
7586 case "$ans" in
7587 [Nn]one|''|' ') inc_version_list=' ' ;;
7588 *) inc_version_list="$ans" ;;
7589 esac
7590 case "$inc_version_list" in
7591 ''|' ') 
7592         inc_version_list_init='0';;
7593 *)      inc_version_list_init=`echo $inc_version_list |
7594                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7595         ;;
7596 esac
7597 $rm -f getverlist
7598
7599 : determine whether to install perl also as /usr/bin/perl
7600
7601 echo " "
7602 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7603         $cat <<EOM
7604 Many scripts expect perl to be installed as /usr/bin/perl.
7605
7606 If you want to, I can install the perl you are about to compile
7607 as /usr/bin/perl (in addition to $bin/perl).
7608 EOM
7609         if test -f /usr/bin/perl; then
7610             $cat <<EOM
7611
7612 However, please note that because you already have a /usr/bin/perl,
7613 overwriting that with a new Perl would very probably cause problems.
7614 Therefore I'm assuming you don't want to do that (unless you insist).
7615
7616 EOM
7617             case "$installusrbinperl" in
7618             "$define"|[yY]*)    dflt='y';;
7619             *)                  dflt='n';;
7620             esac
7621         else
7622             $cat <<EOM
7623
7624 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7625
7626 EOM
7627             case "$installusrbinperl" in
7628             "$undef"|[nN]*)     dflt='n';;
7629             *)                  dflt='y';;
7630             esac
7631         fi
7632         rp="Do you want to install perl as /usr/bin/perl?"
7633         . ./myread
7634         case "$ans" in
7635         [yY]*)  val="$define";;
7636         *)      val="$undef" ;;
7637         esac
7638 else
7639         val="$undef"
7640 fi
7641 set installusrbinperl
7642 eval $setvar
7643
7644 : see if dld is available
7645 set dld.h i_dld
7646 eval $inhdr
7647
7648 : see if dlopen exists
7649 xxx_runnm="$runnm"
7650 runnm=false
7651 set dlopen d_dlopen
7652 eval $inlibc
7653 runnm="$xxx_runnm"
7654
7655 : determine which dynamic loading, if any, to compile in
7656 echo " "
7657 dldir="ext/DynaLoader"
7658 case "$usedl" in
7659 $define|y|true)
7660         dflt='y'
7661         usedl="$define"
7662         ;;
7663 $undef|n|false)
7664         dflt='n'
7665         usedl="$undef"
7666         ;;
7667 *) 
7668         dflt='n'
7669         case "$d_dlopen" in
7670             $define) dflt='y' ;;
7671         esac
7672         case "$i_dld" in
7673             $define) dflt='y' ;;
7674         esac
7675         : Does a dl_xxx.xs file exist for this operating system
7676         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7677         ;;
7678 esac
7679 rp="Do you wish to use dynamic loading?"
7680 . ./myread
7681 usedl="$ans"
7682 case "$ans" in
7683 y*) usedl="$define"
7684         case "$dlsrc" in
7685         '')
7686                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7687                         dflt="$dldir/dl_${osname}.xs"
7688                 elif $test "$d_dlopen" = "$define" ; then
7689                         dflt="$dldir/dl_dlopen.xs"
7690                 elif $test "$i_dld" = "$define" ; then
7691                         dflt="$dldir/dl_dld.xs"
7692                 else
7693                         dflt=''
7694                 fi
7695                 ;;
7696         *)      dflt="$dldir/$dlsrc"
7697                 ;;
7698         esac
7699     echo "The following dynamic loading files are available:"
7700         : Can not go over to $dldir because getfile has path hard-coded in.
7701         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7702         rp="Source file to use for dynamic loading"
7703         fn="fne"
7704         gfpth="$src"
7705         . ./getfile
7706         usedl="$define"
7707         : emulate basename
7708         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7709
7710         $cat << EOM
7711
7712 Some systems may require passing special flags to $cc -c to
7713 compile modules that will be used to create a shared library.
7714 To use no flags, say "none".
7715
7716 EOM
7717     case "$cccdlflags" in
7718     '') case "$gccversion" in
7719                 '') case "$osname" in
7720                         hpux)   dflt='+z' ;;
7721                         next)   dflt='none' ;;
7722                         irix*)  dflt='-KPIC' ;;
7723                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7724                         sunos)  dflt='-pic' ;;
7725                         *)      dflt='none' ;;
7726                     esac
7727                         ;;
7728                 *)  case "$osname" in
7729                         darwin) dflt='none' ;;
7730                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7731                         *)      dflt='-fpic' ;;
7732                     esac ;;
7733             esac ;;
7734         ' ') dflt='none' ;;
7735     *)  dflt="$cccdlflags" ;;
7736     esac
7737     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7738     . ./myread
7739     case "$ans" in
7740     none) cccdlflags=' ' ;;
7741     *) cccdlflags="$ans" ;;
7742     esac
7743
7744     cat << EOM
7745
7746 Some systems use ld to create libraries that can be dynamically loaded,
7747 while other systems (such as those using ELF) use $cc.
7748
7749 EOM
7750         case "$ld" in
7751         '')     $cat >try.c <<EOM
7752 /* Test for whether ELF binaries are produced */
7753 #include <fcntl.h>
7754 #$i_stdlib I_STDLIB
7755 #ifdef I_STDLIB
7756 #include <stdlib.h>
7757 #endif
7758 int main() {
7759         char b[4];
7760         int i = open("a.out",O_RDONLY);
7761         if(i == -1) 
7762                 exit(1); /* fail */
7763         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7764                 exit(0); /* succeed (yes, it's ELF) */
7765         else
7766                 exit(1); /* fail */
7767 }
7768 EOM
7769                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7770                         cat <<EOM
7771 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7772 EOM
7773                         dflt="$cc"
7774                 else
7775                         echo "I'll use ld to build dynamic libraries."
7776                         dflt='ld'
7777                 fi
7778                 rm -f try.c a.out
7779                 ;;
7780         *)      dflt="$ld"
7781                 ;;
7782         esac
7783
7784     rp="What command should be used to create dynamic libraries?"
7785     . ./myread
7786         ld="$ans"
7787
7788     cat << EOM
7789
7790 Some systems may require passing special flags to $ld to create a
7791 library that can be dynamically loaded.  If your ld flags include
7792 -L/other/path options to locate libraries outside your loader's normal
7793 search path, you may need to specify those -L options here as well.  To
7794 use no flags, say "none".
7795
7796 EOM
7797     case "$lddlflags" in
7798     '') case "$osname" in
7799                         beos) dflt='-nostart' ;;
7800                         hpux) dflt='-b';
7801                               case "$gccversion" in
7802                               '') dflt="$dflt +vnocompatwarnings" ;;
7803                               esac
7804                               ;;        
7805                         linux|irix*)    dflt='-shared' ;;
7806                         next)  dflt='none' ;;
7807                         solaris) dflt='-G' ;;
7808                         sunos) dflt='-assert nodefinitions' ;;
7809                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7810                 *)     dflt='none' ;;
7811                         esac
7812                         ;;
7813     *) dflt="$lddlflags" ;;
7814     esac
7815
7816         : Try to guess additional flags to pick up local libraries.
7817         : Be careful not to append to a plain 'none'
7818         case "$dflt" in
7819         none) dflt='' ;;
7820         esac
7821         for thisflag in $ldflags; do
7822                 case "$thisflag" in
7823                 -L*|-R*|-Wl,-R*)
7824                         case " $dflt " in
7825                         *" $thisflag "*) ;;
7826                         *) dflt="$dflt $thisflag" ;;
7827                         esac
7828                         ;;
7829                 esac
7830         done
7831
7832         case "$dflt" in
7833         ''|' ') dflt='none' ;;
7834         esac
7835
7836     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7837     . ./myread
7838     case "$ans" in
7839     none) lddlflags=' ' ;;
7840     *) lddlflags="$ans" ;;
7841     esac
7842
7843         cat <<EOM
7844
7845 Some systems may require passing special flags to $cc to indicate that
7846 the resulting executable will use dynamic linking.  To use no flags,
7847 say "none".
7848
7849 EOM
7850     case "$ccdlflags" in
7851     '') case "$osname" in
7852                 hpux)   dflt='-Wl,-E' ;;
7853                 linux)  dflt='-rdynamic' ;;
7854                 next)   dflt='none' ;;
7855                 sunos)  dflt='none' ;;
7856                 *)      dflt='none' ;;
7857             esac ;;
7858     ' ')  dflt='none' ;;
7859     *)  dflt="$ccdlflags" ;;
7860     esac
7861     rp="Any special flags to pass to $cc to use dynamic linking?"
7862     . ./myread
7863     case "$ans" in
7864     none) ccdlflags=' ' ;;
7865     *) ccdlflags="$ans" ;;
7866     esac
7867     ;;
7868 *)  usedl="$undef"
7869         ld='ld'
7870     dlsrc='dl_none.xs'
7871     lddlflags=''
7872     ccdlflags=''
7873     ;;
7874 esac
7875
7876 also=''
7877 case "$usedl" in
7878 $undef)
7879         # No dynamic loading being used, so don't bother even to prompt.
7880         useshrplib='false'
7881         ;;
7882 *)      case "$useshrplib" in
7883         '')     case "$osname" in
7884                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7885                         dflt=y
7886                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7887                         ;;
7888                 next*)
7889                         case "$osvers" in
7890                         4*)     dflt=y
7891                                 also='Building a shared libperl is needed for MAB support.'
7892                                 ;;
7893                         *)      dflt=n
7894                                 ;;
7895                         esac
7896                         ;;
7897                 *)      dflt=n
7898                         ;;
7899                 esac
7900                 ;;
7901         $define|true|[Yy]*)
7902                 dflt=y
7903                 ;;
7904         *)      dflt=n
7905                 ;;
7906         esac
7907         $cat << EOM
7908
7909 The perl executable is normally obtained by linking perlmain.c with
7910 libperl${_a}, any static extensions (usually just DynaLoader), and
7911 any other libraries needed on this system (such as -lm, etc.).  Since
7912 your system supports dynamic loading, it is probably possible to build
7913 a shared libperl.$so.  If you will have more than one executable linked
7914 to libperl.$so, this will significantly reduce the size of each
7915 executable, but it may have a noticeable affect on performance.  The
7916 default is probably sensible for your system.
7917 $also
7918
7919 EOM
7920         rp="Build a shared libperl.$so (y/n)"
7921         . ./myread
7922         case "$ans" in
7923         true|$define|[Yy]*)
7924                 useshrplib='true'  ;;
7925         *)      useshrplib='false' ;;
7926         esac
7927         ;;
7928 esac
7929
7930 case "$useshrplib" in
7931 true)
7932         case "$libperl" in
7933         '')
7934                 # Figure out a good name for libperl.so.  Since it gets stored in
7935                 # a version-specific architecture-dependent library, the version
7936                 # number isn't really that important, except for making cc/ld happy.
7937                 #
7938                 # A name such as libperl.so.3.1
7939                 majmin="libperl.$so.$patchlevel.$subversion"
7940                 # A name such as libperl.so.301
7941                 majonly=`echo $patchlevel $subversion |
7942                         $awk '{printf "%d%02d", $1, $2}'`
7943                 majonly=libperl.$so.$majonly
7944                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7945                 # rely on figuring it out from the naming of libc.
7946                 case "${osname}${osvers}" in
7947                 next4*)
7948                         dflt=libperl.5.$so
7949                         # XXX How handle the --version stuff for MAB?
7950                         ;;
7951                 linux*)  # ld won't link with a bare -lperl otherwise.
7952                         dflt=libperl.$so
7953                         ;;
7954                 cygwin*) # ld links against an importlib
7955                         dflt=libperl$lib_ext
7956                         ;;
7957                 *)      # Try to guess based on whether libc has major.minor.
7958                         case "$libc" in
7959                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7960                         *libc.$so.[0-9]*) dflt=$majonly ;;
7961                         *)      dflt=libperl.$so ;;
7962                         esac
7963                         ;;
7964                 esac
7965                 ;;
7966         *)      dflt=$libperl
7967                 ;;
7968         esac
7969         cat << EOM
7970
7971 I need to select a good name for the shared libperl.  If your system uses
7972 library names with major and minor numbers, then you might want something
7973 like $majmin.  Alternatively, if your system uses a single version
7974 number for shared libraries, then you might want to use $majonly.
7975 Or, your system might be quite happy with a simple libperl.$so.
7976
7977 Since the shared libperl will get installed into a version-specific
7978 architecture-dependent directory, the version number of the shared perl
7979 library probably isn't important, so the default should be o.k.
7980
7981 EOM
7982         rp='What name do you want to give to the shared libperl?'
7983         . ./myread
7984         libperl=$ans
7985         echo "Ok, I'll use $libperl"
7986         ;;
7987 *)
7988         libperl="libperl${_a}"
7989         ;;
7990 esac
7991
7992 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7993 case "$shrpdir" in
7994 '') ;;
7995 *)      $cat >&4 <<EOM
7996 WARNING:  Use of the shrpdir variable for the installation location of
7997 the shared $libperl is not supported.  It was never documented and
7998 will not work in this version.  Let me (perlbug@perl.org)
7999 know of any problems this may cause.
8000
8001 EOM
8002         case "$shrpdir" in
8003         "$archlibexp/CORE")
8004                 $cat >&4 <<EOM
8005 But your current setting of $shrpdir is
8006 the default anyway, so it's harmless.
8007 EOM
8008                 ;;
8009         *)
8010                 $cat >&4 <<EOM
8011 Further, your current attempted setting of $shrpdir
8012 conflicts with the value of $archlibexp/CORE
8013 that installperl will use.
8014 EOM
8015                 ;;
8016         esac
8017         ;;
8018 esac
8019
8020 # How will the perl executable find the installed shared $libperl?
8021 # Add $xxx to ccdlflags.
8022 # If we can't figure out a command-line option, use $shrpenv to
8023 # set env LD_RUN_PATH.  The main perl makefile uses this.
8024 shrpdir=$archlibexp/CORE
8025 xxx=''
8026 tmp_shrpenv=''
8027 if "$useshrplib"; then
8028     case "$osname" in 
8029         aix)
8030                 # We'll set it in Makefile.SH...
8031                 ;;
8032         solaris)
8033                 xxx="-R $shrpdir"
8034                 ;;
8035         freebsd|netbsd|openbsd)
8036                 xxx="-Wl,-R$shrpdir"
8037                 ;;
8038         bsdos|linux|irix*|dec_osf)
8039                 xxx="-Wl,-rpath,$shrpdir"
8040                 ;;
8041         next)
8042                 # next doesn't like the default...
8043                 ;;
8044         beos)
8045                 # beos doesn't like the default, either.
8046                 ;;
8047         hpux*)
8048                 # hpux doesn't like the default, either.
8049                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
8050                 ;;
8051         *)
8052                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
8053                 ;;
8054         esac
8055         case "$xxx" in
8056         '') ;;
8057         *)      
8058                 # Only add $xxx if it isn't already in ccdlflags.
8059                 case " $ccdlflags " in
8060                 *" $xxx "*)     ;;
8061                 *)      ccdlflags="$ccdlflags $xxx"
8062                         cat <<EOM >&4
8063
8064 Adding $xxx to the flags
8065 passed to $ld so that the perl executable will find the 
8066 installed shared $libperl.
8067
8068 EOM
8069                         ;;
8070                 esac
8071                 ;;
8072         esac
8073 fi
8074 # Fix ccdlflags in AIX for building external extensions.
8075 # (For building Perl itself bare -bE:perl.exp is needed,
8076 #  Makefile.SH takes care of this.)
8077 case "$osname" in
8078 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
8079 esac
8080 # Respect a hint or command-line value.
8081 case "$shrpenv" in
8082 '') shrpenv="$tmp_shrpenv" ;;
8083 esac
8084 case "$ldlibpthname" in
8085 '')     ldlibpthname=LD_LIBRARY_PATH ;;
8086 none)   ldlibpthname='' ;;
8087 esac
8088
8089 : determine where manual pages are on this system
8090 echo " "
8091 case "$sysman" in
8092 '') 
8093         syspath='/usr/share/man/man1 /usr/man/man1'
8094         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
8095         syspath="$syspath /usr/man/u_man/man1"
8096         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
8097         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
8098         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
8099         sysman=`./loc . /usr/man/man1 $syspath`
8100         ;;
8101 esac
8102 if $test -d "$sysman"; then
8103         echo "System manual is in $sysman." >&4
8104 else
8105         echo "Could not find manual pages in source form." >&4
8106 fi
8107
8108 : determine where manual pages go
8109 set man1dir man1dir none
8110 eval $prefixit
8111 $cat <<EOM
8112
8113 $spackage has manual pages available in source form.
8114 EOM
8115 case "$nroff" in
8116 nroff)
8117         echo "However, you don't have nroff, so they're probably useless to you."
8118         case "$man1dir" in
8119         '') man1dir="none";;
8120         esac;;
8121 esac
8122 echo "If you don't want the manual sources installed, answer 'none'."
8123 case "$man1dir" in
8124 ' ') dflt=none
8125         ;;
8126 '')
8127         lookpath="$prefixexp/share/man/man1"
8128         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
8129         lookpath="$lookpath $prefixexp/man/p_man/man1"
8130         lookpath="$lookpath $prefixexp/man/u_man/man1"
8131         lookpath="$lookpath $prefixexp/man/man.1"
8132         case "$sysman" in
8133         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8134         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8135         esac
8136         set dflt
8137         eval $prefixup
8138         ;;
8139 *)  dflt="$man1dir"
8140         ;;
8141 esac
8142 echo " "
8143 fn=dn+~
8144 rp="Where do the main $spackage manual pages (source) go?"
8145 . ./getfile
8146 if $test "X$man1direxp" != "X$ansexp"; then
8147         installman1dir=''
8148 fi
8149 man1dir="$ans"
8150 man1direxp="$ansexp"
8151 case "$man1dir" in
8152 '')     man1dir=' '
8153         installman1dir='';;
8154 esac
8155
8156 : Change installation prefix, if necessary.
8157 if $test X"$prefix" != X"$installprefix"; then
8158         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
8159 else
8160         installman1dir="$man1direxp"
8161 fi
8162
8163 : What suffix to use on installed man pages
8164
8165 case "$man1dir" in
8166 ' ')
8167         man1ext='0'
8168         ;;
8169 *)
8170         rp="What suffix should be used for the main $spackage man pages?"
8171         case "$man1ext" in
8172         '')     case "$man1dir" in
8173                 *1)  dflt=1 ;;
8174                 *1p) dflt=1p ;;
8175                 *1pm) dflt=1pm ;;
8176                 *l) dflt=l;;
8177                 *n) dflt=n;;
8178                 *o) dflt=o;;
8179                 *p) dflt=p;;
8180                 *C) dflt=C;;
8181                 *L) dflt=L;;
8182                 *L1) dflt=L1;;
8183                 *) dflt=1;;
8184                 esac
8185                 ;;
8186         *)      dflt="$man1ext";;
8187         esac
8188         . ./myread
8189         man1ext="$ans"
8190         ;;
8191 esac
8192
8193 : see if we can have long filenames
8194 echo " "
8195 first=123456789abcdef
8196 $rm -f $first
8197 if (echo hi >$first) 2>/dev/null; then
8198         if $test -f 123456789abcde; then
8199                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8200                 val="$undef"
8201         else
8202                 echo 'You can have filenames longer than 14 characters.'>&4
8203                 val="$define"
8204         fi
8205 else
8206         $cat <<'EOM'
8207 You can't have filenames longer than 14 chars.
8208 You can't even think about them!
8209 EOM
8210         val="$undef"
8211 fi 
8212 set d_flexfnam
8213 eval $setvar
8214 $rm -rf 123456789abcde*
8215
8216 : determine where library module manual pages go
8217 set man3dir man3dir none
8218 eval $prefixit
8219 $cat <<EOM
8220
8221 $spackage has manual pages for many of the library modules.
8222 EOM
8223
8224 case "$nroff" in
8225 nroff)
8226         $cat <<'EOM'
8227 However, you don't have nroff, so they're probably useless to you.
8228 EOM
8229         case "$man3dir" in
8230         '') man3dir="none";;
8231         esac;;
8232 esac
8233
8234 case "$d_flexfnam" in
8235 undef)
8236         $cat <<'EOM'
8237 However, your system can't handle the long file names like File::Basename.3. 
8238 EOM
8239         case "$man3dir" in
8240         '') man3dir="none";;
8241         esac;;
8242 esac
8243
8244 echo "If you don't want the manual sources installed, answer 'none'."
8245 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8246 case "$man3dir" in
8247 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8248         if $test -d "$privlib/man/man3"; then
8249                 cat <<EOM >&4
8250
8251 WARNING:  Previous versions of perl installed man3 pages into
8252 $privlib/man/man3.  This version will suggest a 
8253 new default of $dflt.  
8254 EOM
8255                 tdflt=$dflt
8256                 dflt='n'
8257                 rp='Do you wish to preserve the old behavior?(y/n)'
8258                 . ./myread
8259                 case "$ans" in
8260                 y*) dflt="$privlib/man/man3" ;;
8261                 *)  dflt=$tdflt ;;
8262                 esac
8263     fi
8264         ;;
8265 *)      dflt="$man3dir" ;;
8266 esac
8267 case "$dflt" in
8268 ' ') dflt=none ;;
8269 esac
8270 echo " "
8271 fn=dn+~
8272 rp="Where do the $package library man pages (source) go?"
8273 . ./getfile
8274 man3dir="$ans"
8275 man3direxp="$ansexp"
8276 case "$man3dir" in
8277 '')     man3dir=' '
8278         installman3dir='';;
8279 esac
8280
8281 : Change installation prefix, if necessary.
8282 if $test X"$prefix" != X"$installprefix"; then
8283         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8284 else
8285         installman3dir="$man3direxp"
8286 fi
8287
8288 : What suffix to use on installed man pages
8289 case "$man3dir" in
8290 ' ')
8291         man3ext='0'
8292         ;;
8293 *)
8294         rp="What suffix should be used for the $package library man pages?"
8295         case "$man3ext" in
8296         '')     case "$man3dir" in
8297                 *3)  dflt=3 ;;
8298                 *3p) dflt=3p ;;
8299                 *3pm) dflt=3pm ;;
8300                 *l) dflt=l;;
8301                 *n) dflt=n;;
8302                 *o) dflt=o;;
8303                 *p) dflt=p;;
8304                 *C) dflt=C;;
8305                 *L) dflt=L;;
8306                 *L3) dflt=L3;;
8307                 *) dflt=3;;
8308                 esac
8309                 ;;
8310         *)      dflt="$man3ext";;
8311         esac
8312         . ./myread
8313         man3ext="$ans"
8314         ;;
8315 esac
8316
8317 : see if we have to deal with yellow pages, now NIS.
8318 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8319         if $test -f /usr/etc/nibindd; then
8320                 echo " "
8321                 echo "I'm fairly confident you're on a NeXT."
8322                 echo " "
8323                 rp='Do you get the hosts file via NetInfo?'
8324                 dflt=y
8325                 case "$hostcat" in
8326                 nidump*) ;;
8327                 '') ;;
8328                 *) dflt=n;;
8329                 esac
8330                 . ./myread
8331                 case "$ans" in
8332                 y*) hostcat='nidump hosts .';;
8333                 *)      case "$hostcat" in
8334                         nidump*) hostcat='';;
8335                         esac
8336                         ;;
8337                 esac
8338         fi
8339         case "$hostcat" in
8340         nidump*) ;;
8341         *)
8342                 case "$hostcat" in
8343                 *ypcat*) dflt=y;;
8344                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8345                                 dflt=y
8346                         else
8347                                 dflt=n
8348                         fi;;
8349                 *) dflt=n;;
8350                 esac
8351                 echo " "
8352                 rp='Are you getting the hosts file via yellow pages?'
8353                 . ./myread
8354                 case "$ans" in
8355                 y*) hostcat='ypcat hosts';;
8356                 *) hostcat='cat /etc/hosts';;
8357                 esac
8358                 ;;
8359         esac
8360 fi
8361 case "$hostcat" in
8362 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8363 esac
8364 case "$groupcat" in
8365 '') test -f /etc/group && groupcat='cat /etc/group';;
8366 esac
8367 case "$passcat" in
8368 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8369 esac
8370
8371 : now get the host name
8372 echo " "
8373 echo "Figuring out host name..." >&4
8374 case "$myhostname" in
8375 '') cont=true
8376         echo 'Maybe "hostname" will work...'
8377         if tans=`sh -c hostname 2>&1` ; then
8378                 myhostname=$tans
8379                 phostname=hostname
8380                 cont=''
8381         fi
8382         ;;
8383 *) cont='';;
8384 esac
8385 if $test "$cont"; then
8386         if ./xenix; then
8387                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8388                 if tans=`cat /etc/systemid 2>&1` ; then
8389                         myhostname=$tans
8390                         phostname='cat /etc/systemid'
8391                         echo "Whadyaknow.  Xenix always was a bit strange..."
8392                         cont=''
8393                 fi
8394         elif $test -r /etc/systemid; then
8395                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8396         fi
8397 fi
8398 if $test "$cont"; then
8399         echo 'No, maybe "uuname -l" will work...'
8400         if tans=`sh -c 'uuname -l' 2>&1` ; then
8401                 myhostname=$tans
8402                 phostname='uuname -l'
8403         else
8404                 echo 'Strange.  Maybe "uname -n" will work...'
8405                 if tans=`sh -c 'uname -n' 2>&1` ; then
8406                         myhostname=$tans
8407                         phostname='uname -n'
8408                 else
8409                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8410                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8411                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8412                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8413                         else
8414                                 case "$myhostname" in
8415                                 '') echo "Does this machine have an identity crisis or something?"
8416                                         phostname='';;
8417                                 *)
8418                                         echo "Well, you said $myhostname before..."
8419                                         phostname='echo $myhostname';;
8420                                 esac
8421                         fi
8422                 fi
8423         fi
8424 fi
8425 case "$myhostname" in
8426 '') myhostname=noname ;;
8427 esac
8428 : you do not want to know about this
8429 set $myhostname
8430 myhostname=$1
8431
8432 : verify guess
8433 if $test "$myhostname" ; then
8434         dflt=y
8435         rp='Your host name appears to be "'$myhostname'".'" Right?"
8436         . ./myread
8437         case "$ans" in
8438         y*) ;;
8439         *) myhostname='';;
8440         esac
8441 fi
8442
8443 : bad guess or no guess
8444 while $test "X$myhostname" = X ; do
8445         dflt=''
8446         rp="Please type the (one word) name of your host:"
8447         . ./myread
8448         myhostname="$ans"
8449 done
8450
8451 : translate upper to lower if necessary
8452 case "$myhostname" in
8453 *[A-Z]*)
8454         echo "(Normalizing case in your host name)"
8455         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8456         ;;
8457 esac
8458
8459 case "$myhostname" in
8460 *.*)
8461         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8462         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8463         echo "(Trimming domain name from host name--host name is now $myhostname)"
8464         ;;
8465 *) case "$mydomain" in
8466         '')
8467                 {
8468                         test "X$hostcat" = "Xypcat hosts" &&
8469                         ypmatch "$myhostname" hosts 2>/dev/null |\
8470                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8471                         $test -s hosts
8472                 } || {
8473                         test "X$hostcat" != "X" &&
8474                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8475                                         /[       ]$myhostname[  . ]/p" > hosts
8476                 }
8477                 tmp_re="[       . ]"
8478                 if $test -f hosts; then
8479                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8480                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8481                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8482                                 hosts | $sort | $uniq | \
8483                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8484                         case `$echo X$dflt` in
8485                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8486                                 dflt=.
8487                                 ;;
8488                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8489                                 ;;
8490                         esac
8491                 else
8492                         echo "(I cannot locate a hosts database anywhere)"
8493                         dflt=.
8494                 fi
8495                 case "$dflt" in
8496                 .)
8497                         tans=`./loc resolv.conf X /etc /usr/etc`
8498                         if $test -f "$tans"; then
8499                                 echo "(Attempting domain name extraction from $tans)"
8500                                 dflt=.`$sed -n -e 's/   / /g' \
8501                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8502                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8503                                 case "$dflt" in
8504                                 .) dflt=.`$sed -n -e 's/        / /g' \
8505                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8506                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8507                                         ;;
8508                                 esac
8509                         fi
8510                         ;;
8511                 esac
8512                 case "$dflt" in
8513                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8514                         dflt=.`sh -c domainname 2>/dev/null`
8515                         case "$dflt" in
8516                         '') dflt='.';;
8517                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8518                         esac
8519                         ;;
8520                 esac
8521                 case "$dflt$osname" in
8522                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8523                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8524                         ;;
8525                 esac
8526                 case "$dflt" in
8527                 .) echo "(Lost all hope -- silly guess then)"
8528                         dflt='.nonet'
8529                         ;;
8530                 esac
8531                 $rm -f hosts
8532                 ;;
8533         *) dflt="$mydomain";;
8534         esac;;
8535 esac
8536 echo " "
8537 rp="What is your domain name?"
8538 . ./myread
8539 tans="$ans"
8540 case "$ans" in
8541 '') ;;
8542 .*) ;;
8543 *) tans=".$tans";;
8544 esac
8545 mydomain="$tans"
8546
8547 : translate upper to lower if necessary
8548 case "$mydomain" in
8549 *[A-Z]*)
8550         echo "(Normalizing case in your domain name)"
8551         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8552         ;;
8553 esac
8554
8555 : a little sanity check here
8556 case "$phostname" in
8557 '') ;;
8558 *)
8559         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8560         $myhostname$mydomain|$myhostname) ;;
8561         *)
8562                 case "$phostname" in
8563                 sed*)
8564                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8565                         ;;
8566                 *)
8567                         echo "(That doesn't agree with your $phostname command, by the way.)"
8568                         ;;
8569                 esac
8570         ;;
8571         esac
8572         ;;
8573 esac
8574
8575 $cat <<EOM
8576
8577 I need to get your e-mail address in Internet format if possible, i.e.
8578 something like user@host.domain. Please answer accurately since I have
8579 no easy means to double check it. The default value provided below
8580 is most probably close to reality but may not be valid from outside
8581 your organization...
8582
8583 EOM
8584 cont=x
8585 while test "$cont"; do
8586         case "$cf_email" in
8587         '') dflt="$cf_by@$myhostname$mydomain";;
8588         *) dflt="$cf_email";;
8589         esac
8590         rp='What is your e-mail address?'
8591         . ./myread
8592         cf_email="$ans"
8593         case "$cf_email" in
8594         *@*.*) cont='' ;;
8595         *)
8596                 rp='Address does not look like an Internet one.  Use it anyway?'
8597                 case "$fastread" in
8598                 yes) dflt=y ;;
8599                 *) dflt=n ;;
8600                 esac
8601                 . ./myread
8602                 case "$ans" in
8603                 y*) cont='' ;;
8604                 *) echo " " ;;
8605                 esac
8606                 ;;
8607         esac
8608 done
8609
8610 $cat <<EOM
8611
8612 If you or somebody else will be maintaining perl at your site, please
8613 fill in the correct e-mail address here so that they may be contacted
8614 if necessary. Currently, the "perlbug" program included with perl
8615 will send mail to this address in addition to perlbug@perl.org. You may
8616 enter "none" for no administrator.
8617
8618 EOM
8619 case "$perladmin" in
8620 '') dflt="$cf_email";;
8621 *) dflt="$perladmin";;
8622 esac
8623 rp='Perl administrator e-mail address'
8624 . ./myread
8625 perladmin="$ans"
8626
8627 : determine whether to only install version-specific parts.
8628 echo " "
8629 $cat <<EOM
8630 Do you want to install only the version-specific parts of the perl
8631 distribution?  Usually you do *not* want to do this.
8632 EOM
8633 case "$versiononly" in
8634 "$define"|[Yy]*|true) dflt='y' ;;
8635 *) dflt='n';
8636 esac
8637 rp="Do you want to install only the version-specific parts of perl?"
8638 . ./myread
8639 case "$ans" in
8640 [yY]*)  val="$define";;
8641 *)      val="$undef" ;;
8642 esac
8643 set versiononly
8644 eval $setvar
8645
8646 case "$versiononly" in
8647 "$define") inc_version_list=''
8648            inc_version_list_init=0
8649            ;;
8650 esac
8651
8652 : figure out how to guarantee perl startup
8653 case "$startperl" in
8654 '')
8655         case "$sharpbang" in
8656         *!)
8657                 $cat <<EOH
8658
8659 I can use the #! construct to start perl on your system. This will
8660 make startup of perl scripts faster, but may cause problems if you
8661 want to share those scripts and perl is not in a standard place
8662 ($binexp/perl) on all your platforms. The alternative is to force
8663 a shell by starting the script with a single ':' character.
8664
8665 EOH
8666                 case "$versiononly" in
8667                 "$define")      dflt="$binexp/perl$version";;  
8668                 *)              dflt="$binexp/perl";;
8669                 esac
8670                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8671                 . ./myread
8672                 case "$ans" in
8673                 none)   startperl=": # use perl";;
8674                 *)      startperl="#!$ans"
8675                         if $test 30 -lt `echo "$ans" | wc -c`; then
8676                                 $cat >&4 <<EOM
8677
8678 WARNING:  Some systems limit the #! command to 32 characters.
8679 If you experience difficulty running Perl scripts with #!, try
8680 installing Perl in a directory with a shorter pathname.
8681
8682 EOM
8683                         fi ;;
8684                 esac
8685                 ;;
8686         *) startperl=": # use perl"
8687                 ;;
8688         esac
8689         ;;
8690 esac
8691 echo "I'll use $startperl to start perl scripts."
8692
8693 : figure best path for perl in scripts
8694 case "$perlpath" in
8695 '')
8696         case "$versiononly" in
8697         "$define")      perlpath="$binexp/perl$version";;
8698         *)              perlpath="$binexp/perl";;
8699         esac
8700         case "$startperl" in
8701         *!*) ;;
8702         *)
8703                 $cat <<EOH
8704
8705 I will use the "eval 'exec'" idiom to start Perl on your system.
8706 I can use the full path of your Perl binary for this purpose, but
8707 doing so may cause problems if you want to share those scripts and
8708 Perl is not always in a standard place ($binexp/perl).
8709
8710 EOH
8711                 dflt="$binexp/perl"
8712                 rp="What path shall I use in \"eval 'exec'\"?"
8713                 . ./myread
8714                 perlpath="$ans"
8715                 ;;
8716         esac
8717         ;;
8718 esac
8719 case "$startperl" in
8720 *!*)    ;;
8721 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8722 esac
8723
8724 : determine where public executable scripts go
8725 set scriptdir scriptdir
8726 eval $prefixit
8727 case "$scriptdir" in
8728 '')
8729         dflt="$bin"
8730         : guess some guesses
8731         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8732         $test -d /usr/share/bin     && dflt=/usr/share/bin
8733         $test -d /usr/local/script  && dflt=/usr/local/script
8734         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8735         $test -d $prefixexp/script  && dflt=$prefixexp/script
8736         set dflt
8737         eval $prefixup
8738         ;;
8739 *)  dflt="$scriptdir"
8740         ;;
8741 esac
8742 $cat <<EOM
8743  
8744 Some installations have a separate directory just for executable scripts so
8745 that they can mount it across multiple architectures but keep the scripts in
8746 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8747 Or you might just lump your scripts in with all your other executables.
8748  
8749 EOM
8750 fn=d~
8751 rp='Where do you keep publicly executable scripts?'
8752 . ./getfile
8753 if $test "X$ansexp" != "X$scriptdirexp"; then
8754         installscript=''
8755 fi
8756 scriptdir="$ans"
8757 scriptdirexp="$ansexp"
8758 : Change installation prefix, if necessary.
8759 if $test X"$prefix" != X"$installprefix"; then
8760         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8761 else
8762         installscript="$scriptdirexp"
8763 fi
8764
8765 : determine where add-on public executables go
8766 case "$sitebin" in
8767 '')     dflt=$siteprefix/bin ;;
8768 *)      dflt=$sitebin ;;
8769 esac
8770 fn=d~
8771 rp='Pathname where the add-on public executables should be installed?'
8772 . ./getfile
8773 sitebin="$ans"
8774 sitebinexp="$ansexp"
8775 : Change installation prefix, if necessary.
8776 if $test X"$prefix" != X"$installprefix"; then
8777         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8778 else
8779         installsitebin="$sitebinexp"
8780 fi
8781
8782 : determine where add-on html pages go
8783 : There is no standard location, so try to copy the previously-selected 
8784 : directory structure for the core html pages.
8785 case "$sitehtml1" in
8786 '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8787 *)      dflt=$sitehtml1 ;;
8788 esac
8789 case "$dflt" in
8790 ''|' ') dflt=none ;;
8791 esac
8792 fn=dn+~
8793 rp='Pathname where the site-specific html pages should be installed?'
8794 . ./getfile
8795 sitehtml1="$ans"
8796 sitehtml1exp="$ansexp"
8797 : Use ' ' for none so value is preserved next time through Configure
8798 $test X"$sitehtml1" = "X" && sitehtml1=' '
8799 : Change installation prefix, if necessary.
8800 if $test X"$prefix" != X"$installprefix"; then
8801         installsitehtml1=`echo "$sitehtml1exp" | $sed "s#^$prefix#$installprefix#"`
8802 else
8803         installsitehtml1="$sitehtml1exp"
8804 fi
8805
8806 : determine where add-on library html pages go
8807 : There is no standard location, so try to copy the previously-selected
8808 : directory structure for the core html pages.
8809 case "$sitehtml3" in
8810 '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8811 *)      dflt=$sitehtml3 ;;
8812 esac
8813 case "$dflt" in
8814 ''|' ') dflt=none ;;
8815 esac
8816 fn=dn+~
8817 rp='Pathname where the site-specific library html pages should be installed?'
8818 . ./getfile
8819 sitehtml3="$ans"
8820 sitehtml3exp="$ansexp"
8821 : Use ' ' for none so value is preserved next time through Configure
8822 $test X"$sitehtml3" = "X" && sitehtml3=' '
8823 : Change installation prefix, if necessary.
8824 if $test X"$prefix" != X"$installprefix"; then
8825         installsitehtml3=`echo "$sitehtml3exp" | $sed "s#^$prefix#$installprefix#"`
8826 else
8827         installsitehtml3="$sitehtml3exp"
8828 fi
8829
8830 : determine where add-on manual pages go
8831 case "$siteman1" in
8832 '')     dflt=`echo "$man1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8833 *)      dflt=$siteman1 ;;
8834 esac
8835 case "$dflt" in
8836 ''|' ') dflt=none ;;
8837 esac
8838 fn=dn+~
8839 rp='Pathname where the site-specific manual pages should be installed?'
8840 . ./getfile
8841 siteman1="$ans"
8842 siteman1exp="$ansexp"
8843 : Use ' ' for none so value is preserved next time through Configure
8844 $test X"$siteman1" = "X" && siteman1=' '
8845 : Change installation prefix, if necessary.
8846 if $test X"$prefix" != X"$installprefix"; then
8847         installsiteman1=`echo "$siteman1exp" | $sed "s#^$prefix#$installprefix#"`
8848 else
8849         installsiteman1="$siteman1exp"
8850 fi
8851
8852 : determine where add-on library man pages go
8853 case "$siteman3" in
8854 '')     dflt=`echo "$man3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8855 *)      dflt=$siteman3 ;;
8856 esac
8857 case "$dflt" in
8858 ''|' ') dflt=none ;;
8859 esac
8860 fn=dn+~
8861 rp='Pathname where the site-specific library manual pages should be installed?'
8862 . ./getfile
8863 siteman3="$ans"
8864 siteman3exp="$ansexp"
8865 : Use ' ' for none so value is preserved next time through Configure
8866 $test X"$siteman3" = "X" && siteman3=' '
8867 : Change installation prefix, if necessary.
8868 if $test X"$prefix" != X"$installprefix"; then
8869         installsiteman3=`echo "$siteman3exp" | $sed "s#^$prefix#$installprefix#"`
8870 else
8871         installsiteman3="$siteman3exp"
8872 fi
8873
8874 : determine where add-on public executable scripts go
8875 case "$sitescript" in
8876 '')     dflt=$siteprefix/script
8877         $test -d $dflt || dflt=$sitebin ;;
8878 *)  dflt="$sitescript" ;;
8879 esac
8880 fn=d~+
8881 rp='Pathname where add-on public executable scripts should be installed?'
8882 . ./getfile
8883 sitescript="$ans"
8884 sitescriptexp="$ansexp"
8885 : Change installation prefix, if necessary.
8886 if $test X"$prefix" != X"$installprefix"; then
8887         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8888 else
8889         installsitescript="$sitescriptexp"
8890 fi
8891
8892 : define an is-a-typedef? function
8893 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8894 case "$inclist" in
8895 "") inclist="sys/types.h";;
8896 esac;
8897 eval "varval=\$$var";
8898 case "$varval" in
8899 "")
8900         $rm -f temp.c;
8901         for inc in $inclist; do
8902                 echo "#include <$inc>" >>temp.c;
8903         done;
8904         echo "#ifdef $type" >> temp.c;
8905         echo "printf(\"We have $type\");" >> temp.c;
8906         echo "#endif" >> temp.c;
8907         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8908         if $contains $type temp.E >/dev/null 2>&1; then
8909                 eval "$var=\$type";
8910         else
8911                 eval "$var=\$def";
8912         fi;
8913         $rm -f temp.?;;
8914 *) eval "$var=\$varval";;
8915 esac'
8916
8917 : define an is-a-typedef? function that prompts if the type is not available.
8918 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8919 case "$inclist" in
8920 "") inclist="sys/types.h";;
8921 esac;
8922 eval "varval=\$$var";
8923 case "$varval" in
8924 "")
8925         $rm -f temp.c;
8926         for inc in $inclist; do
8927                 echo "#include <$inc>" >>temp.c;
8928         done;
8929         echo "#ifdef $type" >> temp.c;
8930         echo "printf(\"We have $type\");" >> temp.c;
8931         echo "#endif" >> temp.c;
8932         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8933         echo " " ;
8934         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8935         if $contains $type temp.E >/dev/null 2>&1; then
8936                 echo "$type found." >&4;
8937                 eval "$var=\$type";
8938         else
8939                 echo "$type NOT found." >&4;
8940                 dflt="$def";
8941                 . ./myread ;
8942                 eval "$var=\$ans";
8943         fi;
8944         $rm -f temp.?;;
8945 *) eval "$var=\$varval";;
8946 esac'
8947
8948 : see what type lseek is declared as in the kernel
8949 rp="What is the type used for lseek's offset on this system?"
8950 set off_t lseektype long stdio.h sys/types.h
8951 eval $typedef_ask
8952
8953 echo " "
8954 echo "Checking to see how big your file offsets are..." >&4
8955 $cat >try.c <<EOCP
8956 #include <sys/types.h>
8957 #include <stdio.h>
8958 int main()
8959 {
8960     printf("%d\n", (int)sizeof($lseektype));
8961     return(0); 
8962 }
8963 EOCP
8964 set try
8965 if eval $compile_ok; then
8966         lseeksize=`$run ./try`
8967         echo "Your file offsets are $lseeksize bytes long."
8968 else
8969         dflt=$longsize
8970         echo " "
8971         echo "(I can't seem to compile the test program.  Guessing...)"
8972         rp="What is the size of your file offsets (in bytes)?"
8973         . ./myread
8974         lseeksize="$ans"
8975 fi
8976 $rm -f try.c try
8977
8978 : see what type file positions are declared as in the library
8979 rp="What is the type for file position used by fsetpos()?"
8980 set fpos_t fpostype long stdio.h sys/types.h
8981 eval $typedef_ask
8982
8983 echo " "
8984 case "$fpostype" in
8985 *_t) zzz="$fpostype"    ;;
8986 *)   zzz="fpos_t"       ;;
8987 esac
8988 echo "Checking the size of $zzz..." >&4 
8989 cat > try.c <<EOCP
8990 #include <sys/types.h>
8991 #include <stdio.h>
8992 #$i_stdlib I_STDLIB
8993 #ifdef I_STDLIB
8994 #include <stdlib.h>
8995 #endif
8996 int main() {
8997     printf("%d\n", (int)sizeof($fpostype));
8998     exit(0);
8999 }
9000 EOCP
9001 set try
9002 if eval $compile_ok; then
9003         yyy=`$run ./try`
9004         case "$yyy" in
9005         '')     fpossize=4
9006                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9007                 ;;
9008         *)      fpossize=$yyy
9009                 echo "Your $zzz is $fpossize bytes long."
9010                 ;;
9011         esac
9012 else
9013         dflt="$longsize"
9014         echo " " >&4
9015         echo "(I can't compile the test program.  Guessing...)" >&4
9016         rp="What is the size of your file positions (in bytes)?"
9017         . ./myread
9018         fpossize="$ans"
9019 fi
9020
9021 # Backward compatibility (uselfs is deprecated).
9022 case "$uselfs" in
9023 "$define"|true|[yY]*)
9024         cat <<EOM >&4
9025
9026 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
9027 EOM
9028         uselargefiles="$define"
9029         ;;
9030 esac                          
9031
9032 case "$lseeksize:$fpossize" in
9033 8:8) cat <<EOM
9034
9035 You can have files larger than 2 gigabytes.
9036 EOM
9037    val="$define" ;;
9038 *)    case "$uselargefiles" in
9039    "$undef"|false|[nN]*) dflt='n' ;;
9040    *)   dflt='y' ;;
9041    esac
9042    cat <<EOM
9043
9044 Perl can be built to understand large files (files larger than 2 gigabytes)
9045 on some systems.  To do so, Configure can be run with -Duselargefiles.
9046
9047 If this doesn't make any sense to you, just accept the default '$dflt'.
9048 EOM
9049    rp='Try to understand large files, if available?'
9050    . ./myread
9051    case "$ans" in
9052    y|Y)         val="$define" ;;
9053    *)           val="$undef"  ;;
9054    esac
9055    ;;
9056 esac
9057 set uselargefiles
9058 eval $setvar
9059 case "$uselargefiles" in
9060 "$define")
9061 : Look for a hint-file generated 'call-back-unit'.  If the
9062 : user has specified that a large files perl is to be built,
9063 : we may need to set or change some other defaults.
9064         if $test -f uselargefiles.cbu; then
9065                 echo "Your platform has some specific hints for large file builds, using them..."
9066                 . ./uselargefiles.cbu
9067                 echo " "
9068                 echo "Rechecking to see how big your file offsets are..." >&4
9069                 $cat >try.c <<EOCP
9070 #include <sys/types.h>
9071 #include <stdio.h>
9072 int main()
9073 {
9074     printf("%d\n", (int)sizeof($lseektype));
9075     return(0); 
9076 }
9077 EOCP
9078                 set try
9079                 if eval $compile_ok; then
9080                         lseeksize=`$run ./try`
9081                         $echo "Your file offsets are now $lseeksize bytes long."
9082                 else
9083                         dflt="$lseeksize"
9084                         echo " "
9085                         echo "(I can't seem to compile the test program.  Guessing...)"
9086                         rp="What is the size of your file offsets (in bytes)?"
9087                         . ./myread
9088                         lseeksize="$ans"
9089                 fi
9090                 case "$fpostype" in
9091                 *_t) zzz="$fpostype"    ;;
9092                 *)   zzz="fpos_t"       ;;
9093                 esac
9094                 $echo $n "Rechecking the size of $zzz...$c" >&4 
9095                 $cat > try.c <<EOCP
9096 #include <sys/types.h>
9097 #include <stdio.h>
9098 #$i_stdlib I_STDLIB
9099 #ifdef I_STDLIB
9100 #include <stdlib.h>
9101 #endif
9102 int main() {
9103     printf("%d\n", (int)sizeof($fpostype));
9104     return(0);
9105 }
9106 EOCP
9107                 set try
9108                 if eval $compile_ok; then
9109                         yyy=`$run ./try`
9110                         dflt="$lseeksize"
9111                         case "$yyy" in
9112                         '')     echo " "
9113                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9114                                 ;;
9115                         *)      fpossize=$yyy
9116                                 echo " $fpossize bytes." >&4
9117                                 ;;
9118                         esac
9119                 else
9120                         dflt="$fpossize"
9121                         echo " "
9122                         echo "(I can't compile the test program.  Guessing...)" >&4
9123                         rp="What is the size of your file positions (in bytes)?"
9124                         . ./myread
9125                         fpossize="$ans"
9126                 fi
9127                 $rm -f try.c try
9128         fi
9129         ;;
9130 esac
9131
9132 case "$vendorprefix" in
9133 '')     d_vendorbin="$undef"
9134         vendorbin=''
9135         vendorbinexp=''
9136         ;;
9137 *)      d_vendorbin="$define"
9138         : determine where vendor-supplied executables go.
9139         case "$vendorbin" in
9140         '') dflt=$vendorprefix/bin ;;
9141         *)      dflt="$vendorbin" ;;
9142         esac
9143         fn=d~+
9144         rp='Pathname for the vendor-supplied executables directory?'
9145         . ./getfile
9146         vendorbin="$ans"
9147         vendorbinexp="$ansexp"
9148         ;;
9149 esac
9150 : Change installation prefix, if necessary.
9151 if $test X"$prefix" != X"$installprefix"; then
9152         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
9153 else
9154         installvendorbin="$vendorbinexp"
9155 fi
9156
9157 case "$vendorprefix" in
9158 '')     vendorhtml1=''
9159         vendorhtml1exp=''
9160         ;;
9161 *)      : determine where vendor-supplied html pages go.
9162         : There is no standard location, so try to copy the previously-selected
9163         : directory structure for the core html pages.
9164         : XXX Better default suggestions would be welcome.
9165         case "$vendorhtml1" in
9166         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9167         *)      dflt=$vendorhtml1 ;;
9168         esac
9169         case "$dflt" in
9170         ''|' ') dflt=none ;;
9171         esac
9172         fn=dn+~
9173         rp='Pathname for the vendor-supplied html pages?'
9174         . ./getfile
9175         vendorhtml1="$ans"
9176         vendorhtml1exp="$ansexp"
9177         ;;
9178 esac
9179 : Use ' ' for none so value is preserved next time through Configure
9180 $test X"$vendorhtml1" = "X" && vendorhtml1=' '
9181 : Change installation prefix, if necessary.
9182 if $test X"$prefix" != X"$installprefix"; then
9183         installvendorhtml1=`echo $vendorhtml1exp | $sed "s#^$prefix#$installprefix#"`
9184 else
9185         installvendorhtml1="$vendorhtml1exp"
9186 fi
9187
9188 case "$vendorprefix" in
9189 '')     vendorhtml3=''
9190         vendorhtml3exp=''
9191         ;;
9192 *)      : determine where vendor-supplied module html pages go.
9193         : There is no standard location, so try to copy the previously-selected
9194         : directory structure for the core html pages.
9195         : XXX Better default suggestions would be welcome.
9196         case "$vendorhtml3" in
9197         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9198         *)      dflt=$vendorhtml3 ;;
9199         esac
9200         case "$dflt" in
9201         ''|' ') dflt=none ;;
9202         esac
9203         fn=dn+~
9204         rp='Pathname for the vendor-supplied html pages?'
9205         . ./getfile
9206         vendorhtml3="$ans"
9207         vendorhtml3exp="$ansexp"
9208         ;;
9209 esac
9210 : Use ' ' for none so value is preserved next time through Configure
9211 $test X"$vendorhtml3" = "X" && vendorhtml3=' '
9212 : Change installation prefix, if necessary.
9213 if $test X"$prefix" != X"$installprefix"; then
9214         installvendorhtml3=`echo $vendorhtml3exp | $sed "s#^$prefix#$installprefix#"`
9215 else
9216         installvendorhtml3="$vendorhtml3exp"
9217 fi
9218
9219 case "$vendorprefix" in
9220 '')     vendorman1=''
9221         vendorman1exp=''
9222         ;;
9223 *)      : determine where vendor-supplied manual pages go.
9224         case "$vendorman1" in
9225         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9226         *)      dflt=$vendorman1 ;;
9227         esac
9228         case "$dflt" in
9229         ''|' ') dflt=none ;;
9230         esac
9231         fn=nd~+
9232         rp='Pathname for the vendor-supplied manual section 1 pages?'
9233         . ./getfile
9234         vendorman1="$ans"
9235         vendorman1exp="$ansexp"
9236         ;;
9237 esac
9238 : Use ' ' for none so value is preserved next time through Configure
9239 $test X"$vendorman1" = "X" && vendorman1=' '
9240 : Change installation prefix, if necessary.
9241 if $test X"$prefix" != X"$installprefix"; then
9242         installvendorman1=`echo "$vendorman1exp" | $sed "s#^$prefix#$installprefix#"`
9243 else
9244         installvendorman1="$vendorman1exp"
9245 fi
9246
9247 case "$vendorprefix" in
9248 '')     vendorman3=''
9249         vendorman3exp=''
9250         ;;
9251 *)      : determine where vendor-supplied module manual pages go.
9252         case "$vendorman3" in
9253         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9254         *)      dflt=$vendorman3 ;;
9255         esac
9256         case "$dflt" in
9257         ''|' ') dflt=none ;;
9258         esac
9259         fn=nd~+
9260         rp='Pathname for the vendor-supplied manual section 3 pages?'
9261         . ./getfile
9262         vendorman3="$ans"
9263         vendorman3exp="$ansexp"
9264         ;;
9265 esac
9266 : Use ' ' for none so value is preserved next time through Configure
9267 $test X"$vendorman3" = "X" && vendorman3=' '
9268 : Change installation prefix, if necessary.
9269 if $test X"$prefix" != X"$installprefix"; then
9270         installvendorman3=`echo "$vendorman3exp" | $sed "s#^$prefix#$installprefix#"`
9271 else
9272         installvendorman3="$vendorman3exp"
9273 fi
9274
9275 case "$vendorprefix" in
9276 '')     d_vendorscript="$undef"
9277         vendorscript=''
9278         vendorscriptexp=''
9279         ;;
9280 *)      d_vendorscript="$define"
9281         : determine where vendor-supplied scripts go.
9282         case "$vendorscript" in
9283         '')     dflt=$vendorprefix/script
9284                 $test -d $dflt || dflt=$vendorbin ;;
9285         *)  dflt="$vendorscript" ;;
9286         esac
9287         $cat <<EOM
9288
9289 The installation process will create a directory for 
9290 vendor-supplied scripts.
9291
9292 EOM
9293         fn=d~+
9294         rp='Pathname for the vendor-supplied scripts directory?'
9295         . ./getfile
9296         vendorscript="$ans"
9297         vendorscriptexp="$ansexp"
9298         ;;
9299 esac
9300 : Change installation prefix, if necessary.
9301 if $test X"$prefix" != X"$installprefix"; then
9302         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9303 else
9304         installvendorscript="$vendorscriptexp"
9305 fi
9306
9307 : see if qgcvt exists
9308 set qgcvt d_qgcvt
9309 eval $inlibc
9310
9311 : Check how to convert floats to strings.
9312
9313 if test "X$d_Gconvert" = X; then
9314
9315 echo " "
9316 echo "Checking for an efficient way to convert floats to strings."
9317 echo " " > try.c
9318 case "$uselongdouble" in
9319 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9320 esac
9321 case "$d_longdbl" in
9322 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9323 esac
9324 case "$d_PRIgldbl" in
9325 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9326 esac
9327 $cat >>try.c <<EOP
9328 #ifdef TRY_gconvert
9329 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9330 char *myname = "gconvert";
9331 #endif
9332 #ifdef TRY_gcvt
9333 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9334 char *myname = "gcvt";
9335 #endif
9336 #ifdef TRY_qgcvt
9337 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9338 char *myname = "qgcvt";
9339 #define DOUBLETYPE long double
9340 #endif
9341 #ifdef TRY_sprintf
9342 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9343 #ifdef HAS_PRIgldbl
9344 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9345 #else
9346 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9347 #endif
9348 #else
9349 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9350 #endif
9351 char *myname = "sprintf";
9352 #endif
9353
9354 #ifndef DOUBLETYPE
9355 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9356 #define DOUBLETYPE long double
9357 #else
9358 #define DOUBLETYPE double
9359 #endif
9360 #endif
9361
9362 #include <stdio.h>
9363
9364 #define I_STDLIB $i_stdlib
9365 #ifdef I_STDLIB
9366 #include <stdlib.h>
9367 #endif
9368
9369 int
9370 checkit(expect, got)
9371 char *expect;
9372 char *got;
9373 {
9374     if (strcmp(expect, got)) {
9375                 printf("%s oddity:  Expected %s, got %s\n",
9376                         myname, expect, got);
9377                 exit(1);
9378         }
9379 }
9380
9381 int main()
9382
9383         char buf[64]; 
9384         buf[63] = '\0';
9385
9386         /* This must be 1st test on (which?) platform */
9387         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9388         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9389         checkit("0.1", buf);
9390
9391         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9392         checkit("0.01", buf);
9393
9394         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9395         checkit("0.001", buf);
9396
9397         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9398         checkit("0.0001", buf);
9399
9400         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9401         if (strlen(buf) > 5)
9402             checkit("9e-005", buf); /* for Microsoft ?? */
9403         else
9404             checkit("9e-05", buf);
9405
9406         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9407         checkit("1", buf);
9408
9409         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9410         checkit("1.1", buf);
9411
9412         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9413         checkit("1.01", buf);
9414
9415         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9416         checkit("1.001", buf);
9417
9418         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9419         checkit("1.0001", buf);
9420
9421         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9422         checkit("1.00001", buf);
9423
9424         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9425         checkit("1.000001", buf);
9426
9427         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9428         checkit("0", buf);
9429
9430         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9431         checkit("-1", buf);
9432
9433         /* Some Linux gcvt's give 1.e+5 here. */
9434         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9435         checkit("100000", buf);
9436         
9437         /* Some Linux gcvt's give -1.e+5 here. */
9438         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9439         checkit("-100000", buf);
9440
9441         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9442         checkit("123.456", buf);
9443
9444         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9445         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9446         /* 34 should be enough to scare even long double
9447          * places into using the e notation. */
9448         if (strlen(buf) > 5)
9449             checkit("1e+034", buf); /* for Microsoft */
9450         else
9451             checkit("1e+34", buf);
9452
9453         /* For Perl, if you add additional tests here, also add them to
9454          * t/base/num.t for benefit of platforms not using Configure or
9455          * overriding d_Gconvert */
9456
9457         exit(0);
9458 }
9459 EOP
9460 : first add preferred functions to our list
9461 xxx_list=""
9462 for xxx_convert in $gconvert_preference; do
9463     case $xxx_convert in
9464     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9465     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9466     esac 
9467 done
9468 : then add any others
9469 for xxx_convert in gconvert gcvt sprintf; do
9470     case "$xxx_list" in
9471     *$xxx_convert*) ;;
9472     *) xxx_list="$xxx_list $xxx_convert" ;;
9473     esac 
9474 done
9475
9476 case "$d_longdbl$uselongdouble" in
9477 "$define$define")
9478     : again, add prefered functions to our list first
9479     xxx_ld_list=""
9480     for xxx_convert in $gconvert_ld_preference; do
9481         case $xxx_convert in
9482         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9483         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9484         esac
9485     done
9486     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9487     for xxx_convert in qgcvt sprintf $xxx_list; do
9488         case "$xxx_ld_list" in
9489         $xxx_convert*|*" $xxx_convert"*) ;;
9490         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9491         esac
9492     done
9493     : if sprintf cannot do long doubles, move it to the end
9494     if test "$d_PRIgldbl" != "$define"; then
9495         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9496     fi
9497     : if no qgcvt, remove it
9498     if test "$d_qgcvt" != "$define"; then
9499         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9500     fi
9501     : use the ld_list
9502     xxx_list="$xxx_ld_list"
9503     ;;
9504 esac
9505
9506 for xxx_convert in $xxx_list; do
9507         echo "Trying $xxx_convert..."
9508         $rm -f try try$_o
9509         set try -DTRY_$xxx_convert
9510         if eval $compile; then
9511                 echo "$xxx_convert() found." >&4
9512                 if $run ./try; then
9513                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9514                         break;
9515                 else
9516                         echo "...But $xxx_convert didn't work as I expected."
9517                         xxx_convert=''
9518                 fi
9519         else
9520                 echo "$xxx_convert NOT found." >&4
9521         fi
9522 done
9523
9524 if test X$xxx_convert = X; then
9525     echo "*** WHOA THERE!!! ***" >&4
9526     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9527     xxx_convert=sprintf
9528 fi
9529
9530 case "$xxx_convert" in
9531 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9532 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9533 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9534 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9535    "$define$define$define")
9536       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9537    "$define$define$undef")
9538       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9539    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9540    esac
9541    ;;  
9542 esac
9543
9544 fi
9545
9546 : see if _fwalk exists
9547 set fwalk d__fwalk
9548 eval $inlibc
9549
9550 : Initialize h_fcntl
9551 h_fcntl=false
9552
9553 : Initialize h_sysfile
9554 h_sysfile=false
9555
9556 : access call always available on UNIX
9557 set access d_access
9558 eval $inlibc
9559
9560 : locate the flags for 'access()'
9561 case "$d_access" in
9562 "$define")
9563         echo " "
9564         $cat >access.c <<EOCP
9565 #include <sys/types.h>
9566 #ifdef I_FCNTL
9567 #include <fcntl.h>
9568 #endif
9569 #ifdef I_SYS_FILE
9570 #include <sys/file.h>
9571 #endif
9572 #ifdef I_UNISTD
9573 #include <unistd.h>
9574 #endif
9575 #$i_stdlib I_STDLIB
9576 #ifdef I_STDLIB
9577 #include <stdlib.h>
9578 #endif
9579 int main() {
9580         exit(R_OK);
9581 }
9582 EOCP
9583         : check sys/file.h first, no particular reason here
9584         if $test `./findhdr sys/file.h` && \
9585                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9586                 h_sysfile=true;
9587                 echo "<sys/file.h> defines the *_OK access constants." >&4
9588         elif $test `./findhdr fcntl.h` && \
9589                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9590                 h_fcntl=true;
9591                 echo "<fcntl.h> defines the *_OK access constants." >&4
9592         elif $test `./findhdr unistd.h` && \
9593                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9594                 echo "<unistd.h> defines the *_OK access constants." >&4
9595         else
9596                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9597         fi
9598         ;;
9599 esac
9600 $rm -f access*
9601
9602 : see if accessx exists
9603 set accessx d_accessx
9604 eval $inlibc
9605
9606 : see if alarm exists
9607 set alarm d_alarm
9608 eval $inlibc
9609
9610 : see if POSIX threads are available
9611 set pthread.h i_pthread
9612 eval $inhdr
9613
9614 : define a fucntion to check prototypes
9615 $cat > protochk <<EOSH
9616 $startsh
9617 cc="$cc"
9618 optimize="$optimize"
9619 ccflags="$ccflags"
9620 prototype="$prototype"
9621 define="$define"
9622 rm=$rm
9623 usethreads=$usethreads
9624 i_pthread=$i_pthread
9625 pthread_h_first=$pthread_h_first
9626 EOSH
9627
9628 $cat >> protochk <<'EOSH'
9629
9630 $rm -f try.c
9631 foo="$1"
9632 shift
9633 while test $# -ge 2; do
9634         case "$1" in
9635                 $define) echo "#include <$2>" >> try.c ;;
9636                 literal) echo "$2" >> try.c ;;
9637         esac
9638     # Extra magic for the benefit of systems that need pthread.h
9639     # to be included early to correctly detect threadsafe functions.
9640     # Such functions must guarantee themselves, though, that the usethreads
9641     # and i_pthread have been defined, before calling protochk.
9642     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9643         echo "#include <pthread.h>" >> try.c
9644         pthread_h_done=yes
9645     fi
9646     shift 2
9647 done
9648 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9649 cat >> try.c <<'EOCP'
9650 #ifdef CAN_PROTOTYPE
9651 #define _(args) args
9652 #else
9653 #define _(args) ()
9654 #endif
9655 EOCP
9656 echo "$foo" >> try.c
9657 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9658 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9659 status=$?
9660 $rm -f try.[co]
9661 exit $status
9662 EOSH
9663 chmod +x protochk
9664 $eunicefix protochk
9665
9666 : see if sys/types.h has to be included
9667 set sys/types.h i_systypes
9668 eval $inhdr
9669
9670 : see if sys/select.h has to be included
9671 set sys/select.h i_sysselct
9672 eval $inhdr
9673
9674 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9675 while $test $# -ge 2; do
9676         case "$1" in
9677         $define) echo "#include <$2>";;
9678         esac ;
9679     shift 2;
9680 done > try.c;
9681 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9682 set try;
9683 if eval $compile; then
9684         val="$define";
9685 else
9686         val="$undef";
9687 fi;
9688 set $varname;
9689 eval $setvar;
9690 $rm -f try.c try.o'
9691
9692 : see if we should include time.h, sys/time.h, or both
9693 echo " "
9694 if test "X$timeincl" = X; then
9695         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9696         $echo $n "I'm now running the test program...$c"
9697         $cat >try.c <<EOCP
9698 #include <sys/types.h>
9699 #ifdef I_TIME
9700 #include <time.h>
9701 #endif
9702 #ifdef I_SYSTIME
9703 #ifdef SYSTIMEKERNEL
9704 #define KERNEL
9705 #endif
9706 #include <sys/time.h>
9707 #endif
9708 #ifdef I_SYSSELECT
9709 #include <sys/select.h>
9710 #endif
9711 #$i_stdlib I_STDLIB
9712 #ifdef I_STDLIB
9713 #include <stdlib.h>
9714 #endif
9715 int main()
9716 {
9717         struct tm foo;
9718 #ifdef S_TIMEVAL
9719         struct timeval bar;
9720 #endif
9721 #ifdef S_TIMEZONE
9722         struct timezone tzp;
9723 #endif
9724         if (foo.tm_sec == foo.tm_sec)
9725                 exit(0);
9726 #ifdef S_TIMEVAL
9727         if (bar.tv_sec == bar.tv_sec)
9728                 exit(0);
9729 #endif
9730         exit(1);
9731 }
9732 EOCP
9733         flags=''
9734         for s_timezone in '-DS_TIMEZONE' ''; do
9735         sysselect=''
9736         for s_timeval in '-DS_TIMEVAL' ''; do
9737         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9738         for i_time in '' '-DI_TIME'; do
9739         for i_systime in '-DI_SYSTIME' ''; do
9740                 case "$flags" in
9741                 '') $echo $n ".$c"
9742                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9743                         if eval $compile; then
9744                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9745                                 shift
9746                                 flags="$*"
9747                                 echo " "
9748                                 $echo $n "Succeeded with $flags$c"
9749                         fi
9750                         ;;
9751                 esac
9752         done
9753         done
9754         done
9755         done
9756         done
9757         timeincl=''
9758         echo " "
9759         case "$flags" in
9760         *SYSTIMEKERNEL*) i_systimek="$define"
9761                 timeincl=`./findhdr sys/time.h`
9762                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9763         *) i_systimek="$undef";;
9764         esac
9765         case "$flags" in
9766         *I_TIME*) i_time="$define"
9767                 timeincl=`./findhdr time.h`" $timeincl"
9768                 echo "We'll include <time.h>." >&4;;
9769         *) i_time="$undef";;
9770         esac
9771         case "$flags" in
9772         *I_SYSTIME*) i_systime="$define"
9773                 timeincl=`./findhdr sys/time.h`" $timeincl"
9774                 echo "We'll include <sys/time.h>." >&4;;
9775         *) i_systime="$undef";;
9776         esac
9777         $rm -f try.c try
9778 fi
9779 : see if struct tm knows about tm_zone
9780 case "$i_systime$i_time" in
9781 *$define*) 
9782         echo " "
9783         echo "Checking to see if your struct tm has tm_zone field..." >&4
9784         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9785         eval $hasfield
9786         ;;
9787 *)      val="$undef"
9788         set d_tm_tm_zone
9789         eval $setvar
9790         ;;
9791 esac
9792 case "$d_tm_tm_zone" in
9793 "$define")      echo "Yes, it does."   ;;
9794 *)              echo "No, it doesn't." ;;
9795 esac
9796 : see if struct tm knows about tm_gmtoff
9797 case "$i_systime$i_time" in
9798 *$define*) 
9799         echo " "
9800         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9801         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9802         eval $hasfield
9803         ;;
9804 *)      val="$undef"
9805         set d_tm_tm_gmtoff
9806         eval $setvar
9807         ;;
9808 esac
9809 case "$d_tm_tm_gmtoff" in
9810 "$define")      echo "Yes, it does."   ;;
9811 *)              echo "No, it doesn't." ;;
9812 esac
9813
9814 : see if asctime_r exists
9815 set asctime_r d_asctime_r
9816 eval $inlibc
9817 case "$d_asctime_r" in
9818 "$define")
9819         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9820         case "$d_asctime_r_proto:$usethreads" in
9821         ":define")      d_asctime_r_proto=define
9822                 set d_asctime_r_proto asctime_r $hdrs
9823                 eval $hasproto ;;
9824         *)      ;;
9825         esac
9826         case "$d_asctime_r_proto" in
9827         define)
9828         case "$asctime_r_proto" in
9829         ''|0) try='char* asctime_r(const struct tm*, char*);'
9830         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9831         esac
9832         case "$asctime_r_proto" in
9833         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9834         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9835         esac
9836         case "$asctime_r_proto" in
9837         ''|0) try='int asctime_r(const struct tm*, char*);'
9838         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9839         esac
9840         case "$asctime_r_proto" in
9841         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9842         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9843         esac
9844         case "$asctime_r_proto" in
9845         ''|0)   d_asctime_r=undef
9846                 asctime_r_proto=0
9847                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9848         * )     case "$asctime_r_proto" in
9849                 REENTRANT_PROTO*) ;;
9850                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9851                 esac
9852                 echo "Prototype: $try" ;;
9853         esac
9854         ;;
9855         *)      case "$usethreads" in
9856                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9857                 esac
9858                 d_asctime_r=undef
9859                 asctime_r_proto=0
9860                 ;;
9861         esac
9862         ;;
9863 *)      asctime_r_proto=0
9864         ;;
9865 esac
9866
9867 : see if atolf exists
9868 set atolf d_atolf
9869 eval $inlibc
9870
9871 : see if atoll exists
9872 set atoll d_atoll
9873 eval $inlibc
9874
9875 : Look for GNU-cc style attribute checking
9876 echo " "
9877 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9878 $cat >attrib.c <<'EOCP'
9879 #include <stdio.h>
9880 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
9881 EOCP
9882 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9883         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9884                 echo "Your C compiler doesn't fully support __attribute__."
9885                 val="$undef"
9886         else
9887                 echo "Your C compiler supports __attribute__."
9888                 val="$define"
9889         fi
9890 else
9891         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9892         val="$undef"
9893 fi
9894 set d_attribut
9895 eval $setvar
9896 $rm -f attrib*
9897
9898 : see if bcmp exists
9899 set bcmp d_bcmp
9900 eval $inlibc
9901
9902 : see if bcopy exists
9903 set bcopy d_bcopy
9904 eval $inlibc
9905
9906 : see if this is a unistd.h system
9907 set unistd.h i_unistd
9908 eval $inhdr
9909
9910 : see if getpgrp exists
9911 set getpgrp d_getpgrp
9912 eval $inlibc
9913
9914 case "$d_getpgrp" in
9915 "$define")
9916         echo " "
9917         echo "Checking to see which flavor of getpgrp is in use..."
9918         $cat >try.c <<EOP
9919 #$i_unistd I_UNISTD
9920 #include <sys/types.h>
9921 #ifdef I_UNISTD
9922 #  include <unistd.h>
9923 #endif
9924 #$i_stdlib I_STDLIB
9925 #ifdef I_STDLIB
9926 #include <stdlib.h>
9927 #endif
9928 int main()
9929 {
9930         if (getuid() == 0) {
9931                 printf("(I see you are running Configure as super-user...)\n");
9932                 setuid(1);
9933         }
9934 #ifdef TRY_BSD_PGRP
9935         if (getpgrp(1) == 0)
9936                 exit(0);
9937 #else
9938         if (getpgrp() > 0)
9939                 exit(0);
9940 #endif
9941         exit(1);
9942 }
9943 EOP
9944         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9945                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9946                 val="$define"
9947         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9948                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9949                 val="$undef"
9950         else
9951                 echo "I can't seem to compile and run the test program."
9952                 if ./usg; then
9953                         xxx="a USG one, i.e. you use getpgrp()."
9954                 else
9955                         # SVR4 systems can appear rather BSD-ish.
9956                         case "$i_unistd" in
9957                         $undef)
9958                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9959                                 val="$define"
9960                                 ;;
9961                         $define)
9962                                 xxx="probably a USG one, i.e. you use getpgrp()."
9963                                 val="$undef"
9964                                 ;;
9965                         esac
9966                 fi
9967                 echo "Assuming your getpgrp is $xxx" >&4
9968         fi
9969         ;;
9970 *) val="$undef";;
9971 esac
9972 set d_bsdgetpgrp
9973 eval $setvar
9974 $rm -f try try.*
9975
9976 : see if setpgrp exists
9977 set setpgrp d_setpgrp
9978 eval $inlibc
9979
9980 case "$d_setpgrp" in
9981 "$define")
9982         echo " "
9983         echo "Checking to see which flavor of setpgrp is in use..."
9984         $cat >try.c <<EOP
9985 #$i_unistd I_UNISTD
9986 #include <sys/types.h>
9987 #ifdef I_UNISTD
9988 #  include <unistd.h>
9989 #endif
9990 #$i_stdlib I_STDLIB
9991 #ifdef I_STDLIB
9992 #include <stdlib.h>
9993 #endif
9994 int main()
9995 {
9996         if (getuid() == 0) {
9997                 printf("(I see you are running Configure as super-user...)\n");
9998                 setuid(1);
9999         }
10000 #ifdef TRY_BSD_PGRP
10001         if (-1 == setpgrp(1, 1))
10002                 exit(0);
10003 #else
10004         if (setpgrp() != -1)
10005                 exit(0);
10006 #endif
10007         exit(1);
10008 }
10009 EOP
10010         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10011                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10012                 val="$define"
10013         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10014                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10015                 val="$undef"
10016         else
10017                 echo "(I can't seem to compile and run the test program.)"
10018                 if ./usg; then
10019                         xxx="a USG one, i.e. you use setpgrp()."
10020                 else
10021                         # SVR4 systems can appear rather BSD-ish.
10022                         case "$i_unistd" in
10023                         $undef)
10024                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10025                                 val="$define"
10026                                 ;;
10027                         $define)
10028                                 xxx="probably a USG one, i.e. you use setpgrp()."
10029                                 val="$undef"
10030                                 ;;
10031                         esac
10032                 fi
10033                 echo "Assuming your setpgrp is $xxx" >&4
10034         fi
10035         ;;
10036 *) val="$undef";;
10037 esac
10038 set d_bsdsetpgrp
10039 eval $setvar
10040 $rm -f try try.*
10041 : see if bzero exists
10042 set bzero d_bzero
10043 eval $inlibc
10044
10045 : see if signal is declared as pointer to function returning int or void
10046 echo " "
10047 xxx=`./findhdr signal.h`
10048 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10049 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10050         echo "You have int (*signal())() instead of void." >&4
10051         val="$undef"
10052 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10053         echo "You have void (*signal())()." >&4
10054         val="$define"
10055 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10056         echo "You have int (*signal())() instead of void." >&4
10057         val="$undef"
10058 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10059         echo "You have void (*signal())()." >&4
10060         val="$define"
10061 else
10062         case "$d_voidsig" in
10063         '')
10064         echo "I can't determine whether signal handler returns void or int..." >&4
10065                 dflt=void
10066                 rp="What type does your signal handler return?"
10067                 . ./myread
10068                 case "$ans" in
10069                 v*) val="$define";;
10070                 *) val="$undef";;
10071                 esac;;
10072         "$define")
10073                 echo "As you already told me, signal handler returns void." >&4
10074                 val="$define"
10075                 ;;
10076         *)      echo "As you already told me, signal handler returns int." >&4
10077                 val="$undef"
10078                 ;;
10079         esac
10080 fi
10081 set d_voidsig
10082 eval $setvar
10083 case "$d_voidsig" in
10084 "$define") signal_t="void";;
10085 *) signal_t="int";;
10086 esac
10087 $rm -f $$.tmp
10088
10089 : check for ability to cast large floats to 32-bit ints.
10090 echo " "
10091 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10092 if $test "$intsize" -ge 4; then
10093         xxx=int
10094 else
10095         xxx=long
10096 fi
10097 $cat >try.c <<EOCP
10098 #include <stdio.h>
10099 #$i_stdlib I_STDLIB
10100 #ifdef I_STDLIB
10101 #include <stdlib.h>
10102 #endif
10103 #include <sys/types.h>
10104 #include <signal.h>
10105 $signal_t blech(s) int s; { exit(3); }
10106 int main()
10107 {
10108         $xxx i32;
10109         double f, g;
10110         int result = 0;
10111         char str[16];
10112         signal(SIGFPE, blech);
10113
10114         /* Don't let compiler optimize the test away.  Store the number 
10115            in a writable string for gcc to pass to sscanf under HP/UX.
10116         */
10117         sprintf(str, "2147483647");
10118         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10119         g = 10 * f;
10120         i32  = ($xxx) g;
10121
10122         /* x86 processors will probably give 0x8000 0000, which is a
10123        sign change.  We don't want that.  We want to mimic SPARC
10124            behavior here, which is to preserve the sign and give
10125            back 0x7fff ffff.
10126         */
10127         if (i32 != ($xxx) f)
10128                 result |= 1;
10129         exit(result);
10130 }
10131 EOCP
10132 set try
10133 if eval $compile_ok; then
10134         $run ./try
10135         yyy=$?
10136 else
10137         echo "(I can't seem to compile the test program--assuming it can't)"
10138         yyy=1
10139 fi
10140 case "$yyy" in
10141 0)      val="$define"
10142         echo "Yup, it can."
10143         ;;
10144 *)      val="$undef"
10145         echo "Nope, it can't."
10146         ;;
10147 esac
10148 set d_casti32
10149 eval $setvar
10150 $rm -f try try.*
10151
10152 : check for ability to cast negative floats to unsigned
10153 echo " "
10154 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10155 $cat >try.c <<EOCP
10156 #include <stdio.h>
10157 #$i_stdlib I_STDLIB
10158 #ifdef I_STDLIB
10159 #include <stdlib.h>
10160 #endif
10161 #include <sys/types.h>
10162 #include <signal.h>
10163 $signal_t blech(s) int s; { exit(7); }
10164 $signal_t blech_in_list(s) int s; { exit(4); }
10165 unsigned long dummy_long(p) unsigned long p; { return p; }
10166 unsigned int dummy_int(p) unsigned int p; { return p; }
10167 unsigned short dummy_short(p) unsigned short p; { return p; }
10168 int main()
10169 {
10170         double f;
10171         unsigned long along;
10172         unsigned int aint;
10173         unsigned short ashort;
10174         int result = 0;
10175         char str[16];
10176         
10177         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10178            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10179            optimized the whole file away
10180         */
10181         /* Store the number in a writable string for gcc to pass to 
10182            sscanf under HP/UX.
10183         */
10184         sprintf(str, "-123");
10185         sscanf(str, "%lf", &f);  /* f = -123.; */
10186
10187         signal(SIGFPE, blech);
10188         along = (unsigned long)f;
10189         aint = (unsigned int)f;
10190         ashort = (unsigned short)f;
10191         if (along != (unsigned long)-123)
10192                 result |= 1;
10193         if (aint != (unsigned int)-123)
10194                 result |= 1;
10195         if (ashort != (unsigned short)-123)
10196                 result |= 1;
10197         sprintf(str, "1073741824.");
10198         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10199         f = f + f;
10200         along = 0;
10201         along = (unsigned long)f;
10202         if (along != 0x80000000)
10203                 result |= 2;
10204         f -= 1.;
10205         along = 0;
10206         along = (unsigned long)f;
10207         if (along != 0x7fffffff)
10208                 result |= 1;
10209         f += 2.;
10210         along = 0;
10211         along = (unsigned long)f;
10212         if (along != 0x80000001)
10213                 result |= 2;
10214         if (result)
10215                 exit(result);
10216         signal(SIGFPE, blech_in_list);
10217         sprintf(str, "123.");
10218         sscanf(str, "%lf", &f);  /* f = 123.; */
10219         along = dummy_long((unsigned long)f);
10220         aint = dummy_int((unsigned int)f);
10221         ashort = dummy_short((unsigned short)f);
10222         if (along != (unsigned long)123)
10223                 result |= 4;
10224         if (aint != (unsigned int)123)
10225                 result |= 4;
10226         if (ashort != (unsigned short)123)
10227                 result |= 4;
10228         exit(result);
10229
10230 }
10231 EOCP
10232 set try
10233 if eval $compile_ok; then
10234         $run ./try
10235         castflags=$?
10236 else
10237         echo "(I can't seem to compile the test program--assuming it can't)"
10238         castflags=7
10239 fi
10240 case "$castflags" in
10241 0)      val="$define"
10242         echo "Yup, it can."
10243         ;;
10244 *)      val="$undef"
10245         echo "Nope, it can't."
10246         ;;
10247 esac
10248 set d_castneg
10249 eval $setvar
10250 $rm -f try.*
10251
10252 : see if vprintf exists
10253 echo " "
10254 if set vprintf val -f d_vprintf; eval $csym; $val; then
10255         echo 'vprintf() found.' >&4
10256         val="$define"
10257         $cat >try.c <<EOF
10258 #include <varargs.h>
10259 #$i_stdlib I_STDLIB
10260 #ifdef I_STDLIB
10261 #include <stdlib.h>
10262 #endif
10263
10264 int main() { xxx("foo"); }
10265
10266 xxx(va_alist)
10267 va_dcl
10268 {
10269         va_list args;
10270         char buf[10];
10271
10272         va_start(args);
10273         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10274 }
10275 EOF
10276         set try
10277         if eval $compile && $run ./try; then
10278                 echo "Your vsprintf() returns (int)." >&4
10279                 val2="$undef"
10280         else
10281                 echo "Your vsprintf() returns (char*)." >&4
10282                 val2="$define"
10283         fi
10284 else
10285         echo 'vprintf() NOT found.' >&4
10286                 val="$undef"
10287                 val2="$undef"
10288 fi
10289 $rm -f try try.*
10290 set d_vprintf
10291 eval $setvar
10292 val=$val2
10293 set d_charvspr
10294 eval $setvar
10295
10296 : see if chown exists
10297 set chown d_chown
10298 eval $inlibc
10299
10300 : see if chroot exists
10301 set chroot d_chroot
10302 eval $inlibc
10303
10304 : see if chsize exists
10305 set chsize d_chsize
10306 eval $inlibc
10307
10308 : see if class exists
10309 set class d_class
10310 eval $inlibc
10311
10312 hasstruct='varname=$1; struct=$2; shift; shift;
10313 while $test $# -ge 2; do
10314         case "$1" in
10315         $define) echo "#include <$2>";;
10316         esac ;
10317     shift 2;
10318 done > try.c;
10319 echo "int main () { struct $struct foo; }" >> try.c;
10320 set try;
10321 if eval $compile; then
10322         val="$define";
10323 else
10324         val="$undef";
10325 fi;
10326 set $varname;
10327 eval $setvar;
10328 $rm -f try.c try.o'
10329
10330 socketlib=''
10331 sockethdr=''
10332 : see whether socket exists
10333 echo " "
10334 $echo $n "Hmm... $c" >&4
10335 if set socket val -f d_socket; eval $csym; $val; then
10336         echo "Looks like you have Berkeley networking support." >&4
10337         d_socket="$define"
10338         if set setsockopt val -f; eval $csym; $val; then
10339                 d_oldsock="$undef"
10340         else
10341                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10342                 d_oldsock="$define"
10343         fi
10344 else
10345         if $contains socklib libc.list >/dev/null 2>&1; then
10346                 echo "Looks like you have Berkeley networking support." >&4
10347                 d_socket="$define"
10348                 : we will have to assume that it supports the 4.2 BSD interface
10349                 d_oldsock="$undef"
10350         else
10351                 echo "You don't have Berkeley networking in libc$_a..." >&4
10352                 if test "X$d_socket" = "X$define"; then
10353                    echo "...but you seem to believe that you have sockets." >&4
10354                 else
10355                         for net in net socket
10356                         do
10357                                 if test -f /usr/lib/lib$net$_a; then
10358                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10359                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10360                                         if $contains socket libc.list >/dev/null 2>&1; then
10361                                                 d_socket="$define"
10362                                                 socketlib="-l$net"
10363                                                 case "$net" in
10364                                                 net)
10365                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10366                                                         sockethdr="-I/usr/netinclude"
10367                                                         ;;
10368                                                 esac
10369                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10370                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10371                                                         d_oldsock="$undef"
10372                                                 else
10373                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10374                                                         d_oldsock="$define"
10375                                                 fi
10376                                                 break
10377                                         fi
10378                                 fi
10379                         done
10380                         if test "X$d_socket" != "X$define"; then
10381                            echo "or anywhere else I see." >&4
10382                            d_socket="$undef"
10383                            d_oldsock="$undef"
10384                         fi
10385                 fi
10386         fi
10387 fi
10388
10389 : see if socketpair exists
10390 set socketpair d_sockpair
10391 eval $inlibc
10392
10393
10394 echo " "
10395 echo "Checking the availability of certain socket constants..." >&4
10396 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10397         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10398         $cat >try.c <<EOF
10399 #include <sys/types.h>
10400 #include <sys/socket.h>
10401 int main() {
10402     int i = $ENUM;
10403 }
10404 EOF
10405         val="$undef"
10406         set try; if eval $compile; then
10407                 val="$define"
10408         fi
10409         set d_${enum}; eval $setvar
10410         $rm -f try.c try
10411 done
10412
10413 : see if this is a sys/uio.h system
10414 set sys/uio.h i_sysuio
10415 eval $inhdr
10416
10417
10418 echo " "
10419 echo "Checking to see if your system supports struct cmsghdr..." >&4
10420 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10421 eval $hasstruct
10422 case "$d_cmsghdr_s" in
10423 "$define")      echo "Yes, it does."   ;;
10424 *)              echo "No, it doesn't." ;;
10425 esac
10426
10427
10428 : check for const keyword
10429 echo " "
10430 echo 'Checking to see if your C compiler knows about "const"...' >&4
10431 $cat >const.c <<'EOCP'
10432 typedef struct spug { int drokk; } spug;
10433 int main()
10434 {
10435         const char *foo;
10436         const spug y;
10437 }
10438 EOCP
10439 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10440         val="$define"
10441         echo "Yup, it does."
10442 else
10443         val="$undef"
10444         echo "Nope, it doesn't."
10445 fi
10446 set d_const
10447 eval $setvar
10448
10449 : see if crypt exists
10450 echo " "
10451 set crypt d_crypt
10452 eval $inlibc
10453 case "$d_crypt" in
10454 $define) cryptlib='' ;;
10455 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10456                 echo 'crypt() found.' >&4
10457                 val="$define"
10458                 cryptlib=''
10459         else
10460                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10461                 if $test -z "$cryptlib"; then
10462                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10463                 else
10464                         cryptlib=-lcrypt
10465                 fi
10466                 if $test -z "$cryptlib"; then
10467                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10468                 else
10469                         cryptlib=-lcrypt
10470                 fi
10471                 if $test -z "$cryptlib"; then
10472                         cryptlib=`./loc libcrypt$_a "" $libpth`
10473                 else
10474                         cryptlib=-lcrypt
10475                 fi
10476                 if $test -z "$cryptlib"; then
10477                         echo 'crypt() NOT found.' >&4
10478                         val="$undef"
10479                 else
10480                         val="$define"
10481                 fi
10482         fi
10483         set d_crypt
10484         eval $setvar
10485         ;;
10486 esac
10487
10488 : see if this is a crypt.h system
10489 set crypt.h i_crypt
10490 eval $inhdr
10491
10492 : see if crypt_r exists
10493 set crypt_r d_crypt_r
10494 eval $inlibc
10495 case "$d_crypt_r" in
10496 "$define")
10497         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10498         case "$d_crypt_r_proto:$usethreads" in
10499         ":define")      d_crypt_r_proto=define
10500                 set d_crypt_r_proto crypt_r $hdrs
10501                 eval $hasproto ;;
10502         *)      ;;
10503         esac
10504         case "$d_crypt_r_proto" in
10505         define)
10506         case "$crypt_r_proto" in
10507         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10508         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10509         esac
10510         case "$crypt_r_proto" in
10511         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10512         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10513         esac
10514         case "$crypt_r_proto" in
10515         ''|0)   d_crypt_r=undef
10516                 crypt_r_proto=0
10517                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10518         * )     case "$crypt_r_proto" in
10519                 REENTRANT_PROTO*) ;;
10520                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10521                 esac
10522                 echo "Prototype: $try" ;;
10523         esac
10524         ;;
10525         *)      case "$usethreads" in
10526                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10527                 esac
10528                 d_crypt_r=undef
10529                 crypt_r_proto=0
10530                 ;;
10531         esac
10532         ;;
10533 *)      crypt_r_proto=0
10534         ;;
10535 esac
10536
10537 : get csh whereabouts
10538 case "$csh" in
10539 'csh') val="$undef" ;;
10540 *) val="$define" ;;
10541 esac
10542 set d_csh
10543 eval $setvar
10544 : Respect a hint or command line value for full_csh.
10545 case "$full_csh" in
10546 '') full_csh=$csh ;;
10547 esac
10548
10549 : see if ctermid_r exists
10550 set ctermid_r d_ctermid_r
10551 eval $inlibc
10552 case "$d_ctermid_r" in
10553 "$define")
10554         hdrs="$i_systypes sys/types.h define stdio.h "
10555         case "$d_ctermid_r_proto:$usethreads" in
10556         ":define")      d_ctermid_r_proto=define
10557                 set d_ctermid_r_proto ctermid_r $hdrs
10558                 eval $hasproto ;;
10559         *)      ;;
10560         esac
10561         case "$d_ctermid_r_proto" in
10562         define)
10563         case "$ctermid_r_proto" in
10564         ''|0) try='char* ctermid_r(char*);'
10565         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10566         esac
10567         case "$ctermid_r_proto" in
10568         ''|0)   d_ctermid_r=undef
10569                 ctermid_r_proto=0
10570                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10571         * )     case "$ctermid_r_proto" in
10572                 REENTRANT_PROTO*) ;;
10573                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10574                 esac
10575                 echo "Prototype: $try" ;;
10576         esac
10577         ;;
10578         *)      case "$usethreads" in
10579                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10580                 esac
10581                 d_ctermid_r=undef
10582                 ctermid_r_proto=0
10583                 ;;
10584         esac
10585         ;;
10586 *)      ctermid_r_proto=0
10587         ;;
10588 esac
10589
10590 : see if ctime_r exists
10591 set ctime_r d_ctime_r
10592 eval $inlibc
10593 case "$d_ctime_r" in
10594 "$define")
10595         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10596         case "$d_ctime_r_proto:$usethreads" in
10597         ":define")      d_ctime_r_proto=define
10598                 set d_ctime_r_proto ctime_r $hdrs
10599                 eval $hasproto ;;
10600         *)      ;;
10601         esac
10602         case "$d_ctime_r_proto" in
10603         define)
10604         case "$ctime_r_proto" in
10605         ''|0) try='char* ctime_r(const time_t*, char*);'
10606         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10607         esac
10608         case "$ctime_r_proto" in
10609         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10610         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10611         esac
10612         case "$ctime_r_proto" in
10613         ''|0) try='int ctime_r(const time_t*, char*);'
10614         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10615         esac
10616         case "$ctime_r_proto" in
10617         ''|0) try='int ctime_r(const time_t*, char*, int);'
10618         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10619         esac
10620         case "$ctime_r_proto" in
10621         ''|0)   d_ctime_r=undef
10622                 ctime_r_proto=0
10623                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10624         * )     case "$ctime_r_proto" in
10625                 REENTRANT_PROTO*) ;;
10626                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10627                 esac
10628                 echo "Prototype: $try" ;;
10629         esac
10630         ;;
10631         *)      case "$usethreads" in
10632                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10633                 esac
10634                 d_ctime_r=undef
10635                 ctime_r_proto=0
10636                 ;;
10637         esac
10638         ;;
10639 *)      ctime_r_proto=0
10640         ;;
10641 esac
10642
10643 : see if cuserid exists
10644 set cuserid d_cuserid
10645 eval $inlibc
10646
10647 : see if this is a limits.h system
10648 set limits.h i_limits
10649 eval $inhdr
10650
10651 : see if this is a float.h system
10652 set float.h i_float
10653 eval $inhdr
10654
10655 : See if number of significant digits in a double precision number is known
10656 echo " "
10657 $cat >dbl_dig.c <<EOM
10658 #$i_limits I_LIMITS
10659 #$i_float I_FLOAT
10660 #ifdef I_LIMITS
10661 #include <limits.h>
10662 #endif
10663 #ifdef I_FLOAT
10664 #include <float.h>
10665 #endif
10666 #ifdef DBL_DIG
10667 printf("Contains DBL_DIG");
10668 #endif
10669 EOM
10670 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10671 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10672         echo "DBL_DIG found." >&4
10673         val="$define"
10674 else
10675         echo "DBL_DIG NOT found." >&4
10676         val="$undef"
10677 fi
10678 $rm -f dbl_dig.?
10679 set d_dbl_dig
10680 eval $setvar
10681
10682 : see if dbm.h is available
10683 : see if dbmclose exists
10684 set dbmclose d_dbmclose
10685 eval $inlibc
10686
10687 case "$d_dbmclose" in
10688 $define)
10689         set dbm.h i_dbm
10690         eval $inhdr
10691         case "$i_dbm" in
10692         $define)
10693                 val="$undef"
10694                 set i_rpcsvcdbm
10695                 eval $setvar
10696                 ;;
10697         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10698                 eval $inhdr
10699                 ;;
10700         esac
10701         ;;
10702 *)      echo "We won't be including <dbm.h>"
10703         val="$undef"
10704         set i_dbm
10705         eval $setvar
10706         val="$undef"
10707         set i_rpcsvcdbm
10708         eval $setvar
10709         ;;
10710 esac
10711
10712 : see if prototype for dbminit is available
10713 echo " "
10714 set d_dbminitproto dbminit $i_dbm dbm.h
10715 eval $hasproto
10716
10717 : see if difftime exists
10718 set difftime d_difftime
10719 eval $inlibc
10720
10721 : see if this is a dirent system
10722 echo " "
10723 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10724         val="$define"
10725         echo "<dirent.h> found." >&4
10726 else
10727         val="$undef"
10728         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10729                 echo "<sys/dir.h> found." >&4
10730                 echo " "
10731         else
10732                 xinc=`./findhdr sys/ndir.h`
10733         fi
10734         echo "<dirent.h> NOT found." >&4
10735 fi
10736 set i_dirent
10737 eval $setvar
10738
10739 : Look for type of directory structure.
10740 echo " "
10741 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10742
10743 case "$direntrytype" in
10744 ''|' ')
10745         case "$i_dirent" in
10746         $define) guess1='struct dirent' ;;
10747         *) guess1='struct direct'  ;;
10748         esac
10749         ;;
10750 *)      guess1="$direntrytype"
10751         ;;
10752 esac
10753
10754 case "$guess1" in
10755 'struct dirent') guess2='struct direct' ;;
10756 *) guess2='struct dirent' ;;
10757 esac
10758                 
10759 if $contains "$guess1" try.c >/dev/null 2>&1; then
10760         direntrytype="$guess1"
10761         echo "Your directory entries are $direntrytype." >&4
10762 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10763         direntrytype="$guess2"
10764         echo "Your directory entries seem to be $direntrytype." >&4
10765 else
10766         echo "I don't recognize your system's directory entries." >&4
10767         rp="What type is used for directory entries on this system?"
10768         dflt="$guess1"
10769         . ./myread
10770         direntrytype="$ans"
10771 fi
10772 $rm -f try.c
10773
10774
10775 : see if the directory entry stores field length
10776 echo " "
10777 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10778 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10779         echo "Good, your directory entry keeps length information in d_namlen." >&4
10780         val="$define"
10781 else
10782         echo "Your directory entry does not know about the d_namlen field." >&4
10783         val="$undef"
10784 fi
10785 set d_dirnamlen
10786 eval $setvar
10787 $rm -f try.c
10788
10789 : see if this is an sysdir system
10790 set sys/dir.h i_sysdir
10791 eval $inhdr
10792
10793 : see if this is an sysndir system
10794 set sys/ndir.h i_sysndir
10795 eval $inhdr
10796
10797 : Look for dirfd
10798 echo " "
10799 $cat >dirfd.c <<EOM
10800 #include <stdio.h>
10801 #$i_stdlib I_STDLIB
10802 #ifdef I_STDLIB
10803 #include <stdlib.h>
10804 #endif
10805 #$i_dirent I_DIRENT             /**/
10806 #$i_sysdir I_SYS_DIR            /**/
10807 #$i_sysndir I_SYS_NDIR          /**/
10808 #$i_systypes I_SYS_TYPES        /**/
10809 #if defined(I_SYS_TYPES)
10810 #include <sys/types.h>
10811 #endif
10812 #if defined(I_DIRENT)
10813 #include <dirent.h>
10814 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10815 #include <sys/dir.h>
10816 #endif
10817 #else
10818 #ifdef I_SYS_NDIR
10819 #include <sys/ndir.h>
10820 #else
10821 #ifdef I_SYS_DIR
10822 #ifdef hp9000s500
10823 #include <ndir.h>       /* may be wrong in the future */
10824 #else
10825 #include <sys/dir.h>
10826 #endif
10827 #endif
10828 #endif
10829 #endif 
10830 int main() {
10831         DIR *dirp = opendir(".");
10832         if (dirfd(dirp) >= 0)
10833                 exit(0);
10834         else
10835                 exit(1);
10836 }
10837 EOM
10838 set dirfd
10839 if eval $compile; then
10840         val="$define"
10841 fi
10842 case "$val" in
10843 $define)        echo "dirfd() found." >&4       ;;
10844 *)              echo "dirfd() NOT found." >&4   ;;
10845 esac
10846 set d_dirfd
10847 eval $setvar
10848 $rm -f dirfd*
10849
10850 : see if dlerror exists
10851 xxx_runnm="$runnm"
10852 runnm=false
10853 set dlerror d_dlerror
10854 eval $inlibc
10855 runnm="$xxx_runnm"
10856
10857 : see if dlfcn is available
10858 set dlfcn.h i_dlfcn
10859 eval $inhdr
10860
10861 case "$usedl" in
10862 $define|y|true)
10863         $cat << EOM
10864
10865 On a few systems, the dynamically loaded modules that perl generates and uses
10866 will need a different extension than shared libs. The default will probably
10867 be appropriate.
10868
10869 EOM
10870         case "$dlext" in
10871         '')     dflt="$so" ;;
10872         *)      dflt="$dlext" ;;
10873         esac
10874         rp='What is the extension of dynamically loaded modules'
10875         . ./myread
10876         dlext="$ans"
10877         ;;
10878 *)
10879         dlext="none"
10880         ;;
10881 esac
10882
10883 : Check if dlsym need a leading underscore
10884 echo " "
10885 val="$undef"
10886
10887 case "$dlsrc" in
10888 dl_dlopen.xs)
10889         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10890         $cat >dyna.c <<'EOM'
10891 fred () { }
10892 EOM
10893
10894 $cat >fred.c<<EOM
10895
10896 #include <stdio.h>
10897 #$i_stdlib I_STDLIB
10898 #ifdef I_STDLIB
10899 #include <stdlib.h>
10900 #endif
10901 #$i_dlfcn I_DLFCN
10902 #ifdef I_DLFCN
10903 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10904 #else
10905 #include <sys/types.h>
10906 #include <nlist.h>
10907 #include <link.h>
10908 #endif
10909
10910 extern int fred() ;
10911
10912 int main()
10913 {
10914     void * handle ;
10915     void * symbol ;
10916 #ifndef RTLD_LAZY
10917     int mode = 1 ;
10918 #else
10919     int mode = RTLD_LAZY ;
10920 #endif
10921     handle = dlopen("./dyna.$dlext", mode) ;
10922     if (handle == NULL) {
10923         printf ("1\n") ;
10924         fflush (stdout) ;
10925         exit(0);
10926     }
10927     symbol = dlsym(handle, "fred") ;
10928     if (symbol == NULL) {
10929         /* try putting a leading underscore */
10930         symbol = dlsym(handle, "_fred") ;
10931         if (symbol == NULL) {
10932             printf ("2\n") ;
10933             fflush (stdout) ;
10934             exit(0);
10935         }
10936         printf ("3\n") ;
10937     }
10938     else
10939         printf ("4\n") ;
10940     fflush (stdout) ;
10941     exit(0);
10942 }
10943 EOM
10944         : Call the object file tmp-dyna.o in case dlext=o.
10945         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10946                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10947                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10948                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10949                 xxx=`$run ./fred`
10950                 case $xxx in
10951                 1)      echo "Test program failed using dlopen." >&4
10952                         echo "Perhaps you should not use dynamic loading." >&4;;
10953                 2)      echo "Test program failed using dlsym." >&4
10954                         echo "Perhaps you should not use dynamic loading." >&4;;
10955                 3)      echo "dlsym needs a leading underscore" >&4
10956                         val="$define" ;;
10957                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10958                 esac
10959         else
10960                 echo "I can't compile and run the test program." >&4
10961                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10962         fi
10963         ;;
10964 esac
10965                 
10966 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10967
10968 set d_dlsymun
10969 eval $setvar
10970
10971 : see if drand48_r exists
10972 set drand48_r d_drand48_r
10973 eval $inlibc
10974 case "$d_drand48_r" in
10975 "$define")
10976         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10977         case "$d_drand48_r_proto:$usethreads" in
10978         ":define")      d_drand48_r_proto=define
10979                 set d_drand48_r_proto drand48_r $hdrs
10980                 eval $hasproto ;;
10981         *)      ;;
10982         esac
10983         case "$d_drand48_r_proto" in
10984         define)
10985         case "$drand48_r_proto" in
10986         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10987         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10988         esac
10989         case "$drand48_r_proto" in
10990         ''|0)   d_drand48_r=undef
10991                 drand48_r_proto=0
10992                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10993         * )     case "$drand48_r_proto" in
10994                 REENTRANT_PROTO*) ;;
10995                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10996                 esac
10997                 echo "Prototype: $try" ;;
10998         esac
10999         ;;
11000         *)      case "$usethreads" in
11001                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11002                 esac
11003                 d_drand48_r=undef
11004                 drand48_r_proto=0
11005                 ;;
11006         esac
11007         ;;
11008 *)      drand48_r_proto=0
11009         ;;
11010 esac
11011
11012 : see if prototype for drand48 is available
11013 echo " "
11014 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11015 eval $hasproto
11016
11017 : see if dup2 exists
11018 set dup2 d_dup2
11019 eval $inlibc
11020
11021 : see if eaccess exists
11022 set eaccess d_eaccess
11023 eval $inlibc
11024
11025 : see if endgrent exists
11026 set endgrent d_endgrent
11027 eval $inlibc
11028
11029 : see if this is an grp system
11030 set grp.h i_grp
11031 eval $inhdr
11032
11033 case "$i_grp" in
11034 $define)
11035         xxx=`./findhdr grp.h`
11036         $cppstdin $cppflags $cppminus < $xxx >$$.h
11037
11038         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11039                 val="$define"
11040         else
11041                 val="$undef"
11042         fi
11043         set d_grpasswd
11044         eval $setvar
11045
11046         $rm -f $$.h
11047         ;;
11048 *)
11049         val="$undef";
11050         set d_grpasswd; eval $setvar
11051         ;;
11052 esac
11053
11054 : see if endgrent_r exists
11055 set endgrent_r d_endgrent_r
11056 eval $inlibc
11057 case "$d_endgrent_r" in
11058 "$define")
11059         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11060         case "$d_endgrent_r_proto:$usethreads" in
11061         ":define")      d_endgrent_r_proto=define
11062                 set d_endgrent_r_proto endgrent_r $hdrs
11063                 eval $hasproto ;;
11064         *)      ;;
11065         esac
11066         case "$d_endgrent_r_proto" in
11067         define)
11068         case "$endgrent_r_proto" in
11069         ''|0) try='int endgrent_r(FILE**);'
11070         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11071         esac
11072         case "$endgrent_r_proto" in
11073         ''|0) try='void endgrent_r(FILE**);'
11074         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11075         esac
11076         case "$endgrent_r_proto" in
11077         ''|0)   d_endgrent_r=undef
11078                 endgrent_r_proto=0
11079                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11080         * )     case "$endgrent_r_proto" in
11081                 REENTRANT_PROTO*) ;;
11082                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11083                 esac
11084                 echo "Prototype: $try" ;;
11085         esac
11086         ;;
11087         *)      case "$usethreads" in
11088                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11089                 esac
11090                 d_endgrent_r=undef
11091                 endgrent_r_proto=0
11092                 ;;
11093         esac
11094         ;;
11095 *)      endgrent_r_proto=0
11096         ;;
11097 esac
11098
11099 : see if endhostent exists
11100 set endhostent d_endhent
11101 eval $inlibc
11102
11103 : see if this is a netdb.h system
11104 set netdb.h i_netdb
11105 eval $inhdr
11106
11107 : see if endhostent_r exists
11108 set endhostent_r d_endhostent_r
11109 eval $inlibc
11110 case "$d_endhostent_r" in
11111 "$define")
11112         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11113         case "$d_endhostent_r_proto:$usethreads" in
11114         ":define")      d_endhostent_r_proto=define
11115                 set d_endhostent_r_proto endhostent_r $hdrs
11116                 eval $hasproto ;;
11117         *)      ;;
11118         esac
11119         case "$d_endhostent_r_proto" in
11120         define)
11121         case "$endhostent_r_proto" in
11122         ''|0) try='int endhostent_r(struct hostent_data*);'
11123         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11124         esac
11125         case "$endhostent_r_proto" in
11126         ''|0) try='void endhostent_r(struct hostent_data*);'
11127         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11128         esac
11129         case "$endhostent_r_proto" in
11130         ''|0)   d_endhostent_r=undef
11131                 endhostent_r_proto=0
11132                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11133         * )     case "$endhostent_r_proto" in
11134                 REENTRANT_PROTO*) ;;
11135                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11136                 esac
11137                 echo "Prototype: $try" ;;
11138         esac
11139         ;;
11140         *)      case "$usethreads" in
11141                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11142                 esac
11143                 d_endhostent_r=undef
11144                 endhostent_r_proto=0
11145                 ;;
11146         esac
11147         ;;
11148 *)      endhostent_r_proto=0
11149         ;;
11150 esac
11151
11152 : see if endnetent exists
11153 set endnetent d_endnent
11154 eval $inlibc
11155
11156 : see if endnetent_r exists
11157 set endnetent_r d_endnetent_r
11158 eval $inlibc
11159 case "$d_endnetent_r" in
11160 "$define")
11161         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11162         case "$d_endnetent_r_proto:$usethreads" in
11163         ":define")      d_endnetent_r_proto=define
11164                 set d_endnetent_r_proto endnetent_r $hdrs
11165                 eval $hasproto ;;
11166         *)      ;;
11167         esac
11168         case "$d_endnetent_r_proto" in
11169         define)
11170         case "$endnetent_r_proto" in
11171         ''|0) try='int endnetent_r(struct netent_data*);'
11172         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11173         esac
11174         case "$endnetent_r_proto" in
11175         ''|0) try='void endnetent_r(struct netent_data*);'
11176         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11177         esac
11178         case "$endnetent_r_proto" in
11179         ''|0)   d_endnetent_r=undef
11180                 endnetent_r_proto=0
11181                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11182         * )     case "$endnetent_r_proto" in
11183                 REENTRANT_PROTO*) ;;
11184                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11185                 esac
11186                 echo "Prototype: $try" ;;
11187         esac
11188         ;;
11189         *)      case "$usethreads" in
11190                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11191                 esac
11192                 d_endnetent_r=undef
11193                 endnetent_r_proto=0
11194                 ;;
11195         esac
11196         ;;
11197 *)      endnetent_r_proto=0
11198         ;;
11199 esac
11200
11201 : see if endprotoent exists
11202 set endprotoent d_endpent
11203 eval $inlibc
11204
11205 : see if endprotoent_r exists
11206 set endprotoent_r d_endprotoent_r
11207 eval $inlibc
11208 case "$d_endprotoent_r" in
11209 "$define")
11210         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11211         case "$d_endprotoent_r_proto:$usethreads" in
11212         ":define")      d_endprotoent_r_proto=define
11213                 set d_endprotoent_r_proto endprotoent_r $hdrs
11214                 eval $hasproto ;;
11215         *)      ;;
11216         esac
11217         case "$d_endprotoent_r_proto" in
11218         define)
11219         case "$endprotoent_r_proto" in
11220         ''|0) try='int endprotoent_r(struct protoent_data*);'
11221         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11222         esac
11223         case "$endprotoent_r_proto" in
11224         ''|0) try='void endprotoent_r(struct protoent_data*);'
11225         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11226         esac
11227         case "$endprotoent_r_proto" in
11228         ''|0)   d_endprotoent_r=undef
11229                 endprotoent_r_proto=0
11230                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11231         * )     case "$endprotoent_r_proto" in
11232                 REENTRANT_PROTO*) ;;
11233                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11234                 esac
11235                 echo "Prototype: $try" ;;
11236         esac
11237         ;;
11238         *)      case "$usethreads" in
11239                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11240                 esac
11241                 d_endprotoent_r=undef
11242                 endprotoent_r_proto=0
11243                 ;;
11244         esac
11245         ;;
11246 *)      endprotoent_r_proto=0
11247         ;;
11248 esac
11249
11250 : see if endpwent exists
11251 set endpwent d_endpwent
11252 eval $inlibc
11253
11254 : see if this is a pwd.h system
11255 set pwd.h i_pwd
11256 eval $inhdr
11257
11258 case "$i_pwd" in
11259 $define)
11260         xxx=`./findhdr pwd.h`
11261         $cppstdin $cppflags $cppminus < $xxx >$$.h
11262
11263         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11264                 val="$define"
11265         else
11266                 val="$undef"
11267         fi
11268         set d_pwquota
11269         eval $setvar
11270
11271         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11272                 val="$define"
11273         else
11274                 val="$undef"
11275         fi
11276         set d_pwage
11277         eval $setvar
11278
11279         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11280                 val="$define"
11281         else
11282                 val="$undef"
11283         fi
11284         set d_pwchange
11285         eval $setvar
11286
11287         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11288                 val="$define"
11289         else
11290                 val="$undef"
11291         fi
11292         set d_pwclass
11293         eval $setvar
11294
11295         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11296                 val="$define"
11297         else
11298                 val="$undef"
11299         fi
11300         set d_pwexpire
11301         eval $setvar
11302
11303         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11304                 val="$define"
11305         else
11306                 val="$undef"
11307         fi
11308         set d_pwcomment
11309         eval $setvar
11310
11311         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11312                 val="$define"
11313         else
11314                 val="$undef"
11315         fi
11316         set d_pwgecos
11317         eval $setvar
11318
11319         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11320                 val="$define"
11321         else
11322                 val="$undef"
11323         fi
11324         set d_pwpasswd
11325         eval $setvar
11326
11327         $rm -f $$.h
11328         ;;
11329 *)
11330         val="$undef"; 
11331         set d_pwquota; eval $setvar
11332         set d_pwage; eval $setvar
11333         set d_pwchange; eval $setvar
11334         set d_pwclass; eval $setvar
11335         set d_pwexpire; eval $setvar
11336         set d_pwcomment; eval $setvar
11337         set d_pwgecos; eval $setvar
11338         set d_pwpasswd; eval $setvar
11339         ;;
11340 esac
11341
11342 : see if endpwent_r exists
11343 set endpwent_r d_endpwent_r
11344 eval $inlibc
11345 case "$d_endpwent_r" in
11346 "$define")
11347         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11348         case "$d_endpwent_r_proto:$usethreads" in
11349         ":define")      d_endpwent_r_proto=define
11350                 set d_endpwent_r_proto endpwent_r $hdrs
11351                 eval $hasproto ;;
11352         *)      ;;
11353         esac
11354         case "$d_endpwent_r_proto" in
11355         define)
11356         case "$endpwent_r_proto" in
11357         ''|0) try='int endpwent_r(FILE**);'
11358         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11359         esac
11360         case "$endpwent_r_proto" in
11361         ''|0) try='void endpwent_r(FILE**);'
11362         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11363         esac
11364         case "$endpwent_r_proto" in
11365         ''|0)   d_endpwent_r=undef
11366                 endpwent_r_proto=0
11367                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11368         * )     case "$endpwent_r_proto" in
11369                 REENTRANT_PROTO*) ;;
11370                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11371                 esac
11372                 echo "Prototype: $try" ;;
11373         esac
11374         ;;
11375         *)      case "$usethreads" in
11376                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11377                 esac
11378                 d_endpwent_r=undef
11379                 endpwent_r_proto=0
11380                 ;;
11381         esac
11382         ;;
11383 *)      endpwent_r_proto=0
11384         ;;
11385 esac
11386
11387 : see if endservent exists
11388 set endservent d_endsent
11389 eval $inlibc
11390
11391 : see if endservent_r exists
11392 set endservent_r d_endservent_r
11393 eval $inlibc
11394 case "$d_endservent_r" in
11395 "$define")
11396         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11397         case "$d_endservent_r_proto:$usethreads" in
11398         ":define")      d_endservent_r_proto=define
11399                 set d_endservent_r_proto endservent_r $hdrs
11400                 eval $hasproto ;;
11401         *)      ;;
11402         esac
11403         case "$d_endservent_r_proto" in
11404         define)
11405         case "$endservent_r_proto" in
11406         ''|0) try='int endservent_r(struct servent_data*);'
11407         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11408         esac
11409         case "$endservent_r_proto" in
11410         ''|0) try='void endservent_r(struct servent_data*);'
11411         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11412         esac
11413         case "$endservent_r_proto" in
11414         ''|0)   d_endservent_r=undef
11415                 endservent_r_proto=0
11416                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11417         * )     case "$endservent_r_proto" in
11418                 REENTRANT_PROTO*) ;;
11419                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11420                 esac
11421                 echo "Prototype: $try" ;;
11422         esac
11423         ;;
11424         *)      case "$usethreads" in
11425                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11426                 esac
11427                 d_endservent_r=undef
11428                 endservent_r_proto=0
11429                 ;;
11430         esac
11431         ;;
11432 *)      endservent_r_proto=0
11433         ;;
11434 esac
11435
11436 : Locate the flags for 'open()'
11437 echo " "
11438 $cat >try.c <<EOCP
11439 #include <sys/types.h>
11440 #ifdef I_FCNTL
11441 #include <fcntl.h>
11442 #endif
11443 #ifdef I_SYS_FILE
11444 #include <sys/file.h>
11445 #endif
11446 #$i_stdlib I_STDLIB
11447 #ifdef I_STDLIB
11448 #include <stdlib.h>
11449 #endif
11450 int main() {
11451         if(O_RDONLY);
11452 #ifdef O_TRUNC
11453         exit(0);
11454 #else
11455         exit(1);
11456 #endif
11457 }
11458 EOCP
11459 : check sys/file.h first to get FREAD on Sun
11460 if $test `./findhdr sys/file.h` && \
11461                 set try -DI_SYS_FILE && eval $compile; then
11462         h_sysfile=true;
11463         echo "<sys/file.h> defines the O_* constants..." >&4
11464         if $run ./try; then
11465                 echo "and you have the 3 argument form of open()." >&4
11466                 val="$define"
11467         else
11468                 echo "but not the 3 argument form of open().  Oh, well." >&4
11469                 val="$undef"
11470         fi
11471 elif $test `./findhdr fcntl.h` && \
11472                 set try -DI_FCNTL && eval $compile; then
11473         h_fcntl=true;
11474         echo "<fcntl.h> defines the O_* constants..." >&4
11475         if $run ./try; then
11476                 echo "and you have the 3 argument form of open()." >&4
11477                 val="$define"
11478         else
11479                 echo "but not the 3 argument form of open().  Oh, well." >&4
11480                 val="$undef"
11481         fi
11482 else
11483         val="$undef"
11484         echo "I can't find the O_* constant definitions!  You got problems." >&4
11485 fi
11486 set d_open3
11487 eval $setvar
11488 $rm -f try try.*
11489
11490 : see which of string.h or strings.h is needed
11491 echo " "
11492 strings=`./findhdr string.h`
11493 if $test "$strings" && $test -r "$strings"; then
11494         echo "Using <string.h> instead of <strings.h>." >&4
11495         val="$define"
11496 else
11497         val="$undef"
11498         strings=`./findhdr strings.h`
11499         if $test "$strings" && $test -r "$strings"; then
11500                 echo "Using <strings.h> instead of <string.h>." >&4
11501         else
11502                 echo "No string header found -- You'll surely have problems." >&4
11503         fi
11504 fi
11505 set i_string
11506 eval $setvar
11507 case "$i_string" in
11508 "$undef") strings=`./findhdr strings.h`;;
11509 *)        strings=`./findhdr string.h`;;
11510 esac
11511
11512 : see if this is a sys/file.h system
11513 val=''
11514 set sys/file.h val
11515 eval $inhdr
11516
11517 : do we need to include sys/file.h ?
11518 case "$val" in
11519 "$define")
11520         echo " "
11521         if $h_sysfile; then
11522                 val="$define"
11523                 echo "We'll be including <sys/file.h>." >&4
11524         else
11525                 val="$undef"
11526                 echo "We won't be including <sys/file.h>." >&4
11527         fi
11528         ;;
11529 *)
11530         h_sysfile=false
11531         ;;
11532 esac
11533 set i_sysfile
11534 eval $setvar
11535
11536 : see if fcntl.h is there
11537 val=''
11538 set fcntl.h val
11539 eval $inhdr
11540
11541 : see if we can include fcntl.h
11542 case "$val" in
11543 "$define")
11544         echo " "
11545         if $h_fcntl; then
11546                 val="$define"
11547                 echo "We'll be including <fcntl.h>." >&4
11548         else
11549                 val="$undef"
11550                 if $h_sysfile; then
11551         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11552                 else
11553                         echo "We won't be including <fcntl.h>." >&4
11554                 fi
11555         fi
11556         ;;
11557 *)
11558         h_fcntl=false
11559         val="$undef"
11560         ;;
11561 esac
11562 set i_fcntl
11563 eval $setvar
11564
11565 : check for non-blocking I/O stuff
11566 case "$h_sysfile" in
11567 true) echo "#include <sys/file.h>" > head.c;;
11568 *)
11569        case "$h_fcntl" in
11570        true) echo "#include <fcntl.h>" > head.c;;
11571        *) echo "#include <sys/fcntl.h>" > head.c;;
11572        esac
11573        ;;
11574 esac
11575 echo " "
11576 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11577 case "$o_nonblock" in
11578 '')
11579         $cat head.c > try.c
11580         $cat >>try.c <<EOCP
11581 #include <stdio.h>
11582 #$i_stdlib I_STDLIB
11583 #ifdef I_STDLIB
11584 #include <stdlib.h>
11585 #endif
11586 #$i_fcntl I_FCNTL
11587 #ifdef I_FCNTL
11588 #include <fcntl.h>
11589 #endif
11590 int main() {
11591 #ifdef O_NONBLOCK
11592         printf("O_NONBLOCK\n");
11593         exit(0);
11594 #endif
11595 #ifdef O_NDELAY
11596         printf("O_NDELAY\n");
11597         exit(0);
11598 #endif
11599 #ifdef FNDELAY
11600         printf("FNDELAY\n");
11601         exit(0);
11602 #endif
11603         exit(0);
11604 }
11605 EOCP
11606         set try
11607         if eval $compile_ok; then
11608                 o_nonblock=`$run ./try`
11609                 case "$o_nonblock" in
11610                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11611                 *) echo "Seems like we can use $o_nonblock.";;
11612                 esac
11613         else
11614                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11615         fi
11616         ;;
11617 *) echo "Using $hint value $o_nonblock.";;
11618 esac
11619 $rm -f try try.* .out core
11620
11621 echo " "
11622 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11623 case "$eagain" in
11624 '')
11625         $cat head.c > try.c
11626         $cat >>try.c <<EOCP
11627 #include <errno.h>
11628 #include <sys/types.h>
11629 #include <signal.h>
11630 #include <stdio.h> 
11631 #$i_stdlib I_STDLIB
11632 #ifdef I_STDLIB
11633 #include <stdlib.h>
11634 #endif
11635 #$i_fcntl I_FCNTL
11636 #ifdef I_FCNTL
11637 #include <fcntl.h>
11638 #endif
11639 #define MY_O_NONBLOCK $o_nonblock
11640 #ifndef errno  /* XXX need better Configure test */
11641 extern int errno;
11642 #endif
11643 #$i_unistd I_UNISTD
11644 #ifdef I_UNISTD
11645 #include <unistd.h>
11646 #endif
11647 #$i_string I_STRING
11648 #ifdef I_STRING
11649 #include <string.h>
11650 #else
11651 #include <strings.h>
11652 #endif
11653 $signal_t blech(x) int x; { exit(3); }
11654 EOCP
11655         $cat >> try.c <<'EOCP'
11656 int main()
11657 {
11658         int pd[2];
11659         int pu[2];
11660         char buf[1];
11661         char string[100];
11662
11663         pipe(pd);       /* Down: child -> parent */
11664         pipe(pu);       /* Up: parent -> child */
11665         if (0 != fork()) {
11666                 int ret;
11667                 close(pd[1]);   /* Parent reads from pd[0] */
11668                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11669 #ifdef F_SETFL
11670                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11671                         exit(1);
11672 #else
11673                 exit(4);
11674 #endif
11675                 signal(SIGALRM, blech);
11676                 alarm(5);
11677                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11678                         exit(2);
11679                 sprintf(string, "%d\n", ret);
11680                 write(2, string, strlen(string));
11681                 alarm(0);
11682 #ifdef EAGAIN
11683                 if (errno == EAGAIN) {
11684                         printf("EAGAIN\n");
11685                         goto ok;
11686                 }
11687 #endif
11688 #ifdef EWOULDBLOCK
11689                 if (errno == EWOULDBLOCK)
11690                         printf("EWOULDBLOCK\n");
11691 #endif
11692         ok:
11693                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11694                 sleep(2);                               /* Give it time to close our pipe */
11695                 alarm(5);
11696                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11697                 alarm(0);
11698                 sprintf(string, "%d\n", ret);
11699                 write(4, string, strlen(string));
11700                 exit(0);
11701         }
11702
11703         close(pd[0]);                   /* We write to pd[1] */
11704         close(pu[1]);                   /* We read from pu[0] */
11705         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11706         close(pd[1]);                   /* Pipe pd is now fully closed! */
11707         exit(0);                                /* Bye bye, thank you for playing! */
11708 }
11709 EOCP
11710         set try
11711         if eval $compile_ok; then
11712                 echo "$startsh" >mtry
11713                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11714                 chmod +x mtry
11715                 ./mtry >/dev/null 2>&1
11716                 case $? in
11717                 0) eagain=`$cat try.out`;;
11718                 1) echo "Could not perform non-blocking setting!";;
11719                 2) echo "I did a successful read() for something that was not there!";;
11720                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11721                 4) echo "Could not find F_SETFL!";;
11722                 *) echo "Something terribly wrong happened during testing.";;
11723                 esac
11724                 rd_nodata=`$cat try.ret`
11725                 echo "A read() system call with no data present returns $rd_nodata."
11726                 case "$rd_nodata" in
11727                 0|-1) ;;
11728                 *)
11729                         echo "(That's peculiar, fixing that to be -1.)"
11730                         rd_nodata=-1
11731                         ;;
11732                 esac
11733                 case "$eagain" in
11734                 '')
11735                         echo "Forcing errno EAGAIN on read() with no data available."
11736                         eagain=EAGAIN
11737                         ;;
11738                 *)
11739                         echo "Your read() sets errno to $eagain when no data is available."
11740                         ;;
11741                 esac
11742                 status=`$cat try.err`
11743                 case "$status" in
11744                 0) echo "And it correctly returns 0 to signal EOF.";;
11745                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11746                 *) echo "However, your read() returns '$status' on EOF??";;
11747                 esac
11748                 val="$define"
11749                 if test "$status" = "$rd_nodata"; then
11750                         echo "WARNING: you can't distinguish between EOF and no data!"
11751                         val="$undef"
11752                 fi
11753         else
11754                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11755                 eagain=EAGAIN
11756         fi
11757         set d_eofnblk
11758         eval $setvar
11759         ;;
11760 *)
11761         echo "Using $hint value $eagain."
11762         echo "Your read() returns $rd_nodata when no data is present."
11763         case "$d_eofnblk" in
11764         "$define") echo "And you can see EOF because read() returns 0.";;
11765         "$undef") echo "But you can't see EOF status from read() returned value.";;
11766         *)
11767                 echo "(Assuming you can't see EOF status from read anyway.)"
11768                 d_eofnblk=$undef
11769                 ;;
11770         esac
11771         ;;
11772 esac
11773 $rm -f try try.* .out core head.c mtry
11774
11775 : see if fchdir exists
11776 set fchdir d_fchdir
11777 eval $inlibc
11778
11779 : see if fchmod exists
11780 set fchmod d_fchmod
11781 eval $inlibc
11782
11783 : see if fchown exists
11784 set fchown d_fchown
11785 eval $inlibc
11786
11787 : see if this is an fcntl system
11788 set fcntl d_fcntl
11789 eval $inlibc
11790
11791 echo " "
11792 : See if fcntl-based locking works.
11793 $cat >try.c <<EOCP
11794 #$i_stdlib I_STDLIB
11795 #ifdef I_STDLIB
11796 #include <stdlib.h>
11797 #endif
11798 #include <unistd.h>
11799 #include <fcntl.h>
11800 #include <signal.h>
11801 $signal_t blech(x) int x; { exit(3); }
11802 int main() {
11803 #if defined(F_SETLK) && defined(F_SETLKW)
11804      struct flock flock;
11805      int retval, fd;
11806      fd = open("try.c", O_RDONLY);
11807      flock.l_type = F_RDLCK;
11808      flock.l_whence = SEEK_SET;
11809      flock.l_start = flock.l_len = 0;
11810      signal(SIGALRM, blech);
11811      alarm(10);
11812      retval = fcntl(fd, F_SETLK, &flock);
11813      close(fd);
11814      (retval < 0 ? exit(2) : exit(0));
11815 #else
11816      exit(2);
11817 #endif
11818 }
11819 EOCP
11820 echo "Checking if fcntl-based file locking works... "
11821 case "$d_fcntl" in
11822 "$define")
11823         set try
11824         if eval $compile_ok; then
11825                 if $run ./try; then
11826                         echo "Yes, it seems to work."
11827                         val="$define"
11828                 else
11829                         echo "Nope, it didn't work."
11830                         val="$undef"
11831                         case "$?" in
11832                         3) $cat >&4 <<EOM
11833 ***
11834 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
11835 *** This is (almost) impossible.
11836 *** If your NFS lock daemons are not feeling well, something like
11837 *** this may happen, please investigate.  Cannot continue, aborting.
11838 ***
11839 EOM
11840                                 exit 1
11841                                 ;;
11842                         esac
11843                 fi
11844         else
11845                 echo "I'm unable to compile the test program, so I'll assume not."
11846                 val="$undef"
11847         fi
11848         ;;
11849 *) val="$undef";
11850         echo "Nope, since you don't even have fcntl()."
11851         ;;
11852 esac
11853 set d_fcntl_can_lock
11854 eval $setvar
11855 $rm -f try*
11856
11857
11858 : check for fd_set items
11859 $cat <<EOM
11860
11861 Checking to see how well your C compiler handles fd_set and friends ...
11862 EOM
11863 $cat >try.c <<EOCP
11864 #$i_stdlib I_STDLIB
11865 #ifdef I_STDLIB
11866 #include <stdlib.h>
11867 #endif
11868 #$i_systime I_SYS_TIME
11869 #$i_sysselct I_SYS_SELECT
11870 #$d_socket HAS_SOCKET
11871 #include <sys/types.h>
11872 #ifdef HAS_SOCKET
11873 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11874 #endif
11875 #ifdef I_SYS_TIME
11876 #include <sys/time.h>
11877 #endif
11878 #ifdef I_SYS_SELECT
11879 #include <sys/select.h>
11880 #endif
11881 int main() {
11882         fd_set fds;
11883
11884 #ifdef TRYBITS
11885         if(fds.fds_bits);
11886 #endif
11887
11888 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
11889         exit(0);
11890 #else
11891         exit(1);
11892 #endif
11893 }
11894 EOCP
11895 set try -DTRYBITS
11896 if eval $compile; then
11897         d_fds_bits="$define"
11898         d_fd_set="$define"
11899         echo "Well, your system knows about the normal fd_set typedef..." >&4
11900         if $run ./try; then
11901                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
11902                 d_fd_macros="$define"
11903         else
11904                 $cat >&4 <<'EOM'
11905 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
11906 EOM
11907                 d_fd_macros="$undef"
11908         fi
11909 else
11910         $cat <<'EOM'
11911 Hmm, your compiler has some difficulty with fd_set.  Checking further...
11912 EOM
11913         set try
11914         if eval $compile; then
11915                 d_fds_bits="$undef"
11916                 d_fd_set="$define"
11917                 echo "Well, your system has some sort of fd_set available..." >&4
11918                 if $run ./try; then
11919                         echo "and you have the normal fd_set macros." >&4
11920                         d_fd_macros="$define"
11921                 else
11922                         $cat <<'EOM'
11923 but not the normal fd_set macros!  Gross!  More work for me...
11924 EOM
11925                         d_fd_macros="$undef"
11926                 fi
11927         else
11928         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
11929                 d_fd_set="$undef"
11930                 d_fds_bits="$undef"
11931                 d_fd_macros="$undef"
11932         fi
11933 fi
11934 $rm -f try try.*
11935
11936 : see if fgetpos exists
11937 set fgetpos d_fgetpos
11938 eval $inlibc
11939
11940 : see if finite exists
11941 set finite d_finite
11942 eval $inlibc
11943
11944 : see if finitel exists
11945 set finitel d_finitel
11946 eval $inlibc
11947
11948 : see if flock exists
11949 set flock d_flock
11950 eval $inlibc
11951
11952 : see if prototype for flock is available
11953 echo " "
11954 set d_flockproto flock $i_sysfile sys/file.h
11955 eval $hasproto
11956
11957 : see if fork exists
11958 set fork d_fork
11959 eval $inlibc
11960
11961 : see if fp_class exists
11962 set fp_class d_fp_class
11963 eval $inlibc
11964
11965 : see if pathconf exists
11966 set pathconf d_pathconf
11967 eval $inlibc
11968
11969 : see if fpathconf exists
11970 set fpathconf d_fpathconf
11971 eval $inlibc
11972
11973 : see if fpclass exists
11974 set fpclass d_fpclass
11975 eval $inlibc
11976
11977 : see if fpclassify exists
11978 set fpclassify d_fpclassify
11979 eval $inlibc
11980
11981 : see if fpclassl exists
11982 set fpclassl d_fpclassl
11983 eval $inlibc
11984
11985
11986 : check for fpos64_t
11987 echo " "
11988 echo "Checking to see if you have fpos64_t..." >&4
11989 $cat >try.c <<EOCP
11990 #include <stdio.h>
11991 int main() { fpos64_t x = 7; }
11992 EOCP
11993 set try
11994 if eval $compile; then
11995         val="$define"
11996         echo "You have fpos64_t."
11997 else
11998         val="$undef"
11999         echo "You do not have fpos64_t."
12000         case "$fpossize" in
12001         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12002         esac
12003 fi
12004 $rm -f try.* try
12005 set d_fpos64_t
12006 eval $setvar
12007
12008 : see if frexpl exists
12009 set frexpl d_frexpl
12010 eval $inlibc
12011
12012 : see if ilogbl exists - used along with scalbnl if frexpl is missing
12013 set ilogbl d_ilogbl
12014 eval $inlibc
12015
12016 : see if scalbnl exists - used along with ilogbl if frexpl is missing
12017 set scalbnl d_scalbnl
12018 eval $inlibc
12019
12020 : see if this is a sys/param system
12021 set sys/param.h i_sysparam
12022 eval $inhdr
12023
12024 : see if this is a sys/mount.h system
12025 set sys/mount.h i_sysmount
12026 eval $inhdr
12027
12028
12029 echo " "
12030 echo "Checking to see if your system supports struct fs_data..." >&4
12031 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12032 eval $hasstruct
12033 case "$d_fs_data_s" in
12034 "$define")      echo "Yes, it does."   ;;
12035 *)              echo "No, it doesn't." ;;
12036 esac
12037
12038 : see if fseeko exists
12039 set fseeko d_fseeko
12040 eval $inlibc
12041 case "$longsize" in
12042 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12043 esac
12044
12045 : see if fsetpos exists
12046 set fsetpos d_fsetpos
12047 eval $inlibc
12048
12049
12050 : see if fstatfs exists
12051 set fstatfs d_fstatfs
12052 eval $inlibc
12053
12054
12055 : see if statvfs exists
12056 set statvfs d_statvfs
12057 eval $inlibc
12058
12059 : see if fstatvfs exists
12060 set fstatvfs d_fstatvfs
12061 eval $inlibc
12062
12063
12064 : see if fsync exists
12065 set fsync d_fsync
12066 eval $inlibc
12067
12068 : see if ftello exists
12069 set ftello d_ftello
12070 eval $inlibc
12071 case "$longsize" in
12072 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12073 esac
12074
12075 : see if getcwd exists
12076 set getcwd d_getcwd
12077 eval $inlibc
12078
12079 : see if getespwnam exists
12080 set getespwnam d_getespwnam
12081 eval $inlibc
12082
12083
12084 : see if getfsstat exists
12085 set getfsstat d_getfsstat
12086 eval $inlibc
12087
12088 : see if getgrent exists
12089 set getgrent d_getgrent
12090 eval $inlibc
12091
12092 : see if getgrent_r exists
12093 set getgrent_r d_getgrent_r
12094 eval $inlibc
12095 case "$d_getgrent_r" in
12096 "$define")
12097         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12098         case "$d_getgrent_r_proto:$usethreads" in
12099         ":define")      d_getgrent_r_proto=define
12100                 set d_getgrent_r_proto getgrent_r $hdrs
12101                 eval $hasproto ;;
12102         *)      ;;
12103         esac
12104         case "$d_getgrent_r_proto" in
12105         define)
12106         case "$getgrent_r_proto" in
12107         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12108         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12109         esac
12110         case "$getgrent_r_proto" in
12111         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12112         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12113         esac
12114         case "$getgrent_r_proto" in
12115         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12116         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12117         esac
12118         case "$getgrent_r_proto" in
12119         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12120         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12121         esac
12122         case "$getgrent_r_proto" in
12123         ''|0) try='int getgrent_r(struct group*, char*, int);'
12124         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12125         esac
12126         case "$getgrent_r_proto" in
12127         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12128         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12129         esac
12130         case "$getgrent_r_proto" in
12131         ''|0)   d_getgrent_r=undef
12132                 getgrent_r_proto=0
12133                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12134         * )     case "$getgrent_r_proto" in
12135                 REENTRANT_PROTO*) ;;
12136                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12137                 esac
12138                 echo "Prototype: $try" ;;
12139         esac
12140         ;;
12141         *)      case "$usethreads" in
12142                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12143                 esac
12144                 d_getgrent_r=undef
12145                 getgrent_r_proto=0
12146                 ;;
12147         esac
12148         ;;
12149 *)      getgrent_r_proto=0
12150         ;;
12151 esac
12152
12153 : see if getgrgid_r exists
12154 set getgrgid_r d_getgrgid_r
12155 eval $inlibc
12156 case "$d_getgrgid_r" in
12157 "$define")
12158         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12159         case "$d_getgrgid_r_proto:$usethreads" in
12160         ":define")      d_getgrgid_r_proto=define
12161                 set d_getgrgid_r_proto getgrgid_r $hdrs
12162                 eval $hasproto ;;
12163         *)      ;;
12164         esac
12165         case "$d_getgrgid_r_proto" in
12166         define)
12167         case "$getgrgid_r_proto" in
12168         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12169         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12170         esac
12171         case "$getgrgid_r_proto" in
12172         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12173         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12174         esac
12175         case "$getgrgid_r_proto" in
12176         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12177         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12178         esac
12179         case "$getgrgid_r_proto" in
12180         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12181         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12182         esac
12183         case "$getgrgid_r_proto" in
12184         ''|0)   d_getgrgid_r=undef
12185                 getgrgid_r_proto=0
12186                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12187         * )     case "$getgrgid_r_proto" in
12188                 REENTRANT_PROTO*) ;;
12189                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12190                 esac
12191                 echo "Prototype: $try" ;;
12192         esac
12193         ;;
12194         *)      case "$usethreads" in
12195                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12196                 esac
12197                 d_getgrgid_r=undef
12198                 getgrgid_r_proto=0
12199                 ;;
12200         esac
12201         ;;
12202 *)      getgrgid_r_proto=0
12203         ;;
12204 esac
12205
12206 : see if getgrnam_r exists
12207 set getgrnam_r d_getgrnam_r
12208 eval $inlibc
12209 case "$d_getgrnam_r" in
12210 "$define")
12211         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12212         case "$d_getgrnam_r_proto:$usethreads" in
12213         ":define")      d_getgrnam_r_proto=define
12214                 set d_getgrnam_r_proto getgrnam_r $hdrs
12215                 eval $hasproto ;;
12216         *)      ;;
12217         esac
12218         case "$d_getgrnam_r_proto" in
12219         define)
12220         case "$getgrnam_r_proto" in
12221         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12222         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12223         esac
12224         case "$getgrnam_r_proto" in
12225         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12226         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12227         esac
12228         case "$getgrnam_r_proto" in
12229         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12230         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12231         esac
12232         case "$getgrnam_r_proto" in
12233         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12234         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12235         esac
12236         case "$getgrnam_r_proto" in
12237         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12238         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12239         esac
12240         case "$getgrnam_r_proto" in
12241         ''|0)   d_getgrnam_r=undef
12242                 getgrnam_r_proto=0
12243                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12244         * )     case "$getgrnam_r_proto" in
12245                 REENTRANT_PROTO*) ;;
12246                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12247                 esac
12248                 echo "Prototype: $try" ;;
12249         esac
12250         ;;
12251         *)      case "$usethreads" in
12252                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12253                 esac
12254                 d_getgrnam_r=undef
12255                 getgrnam_r_proto=0
12256                 ;;
12257         esac
12258         ;;
12259 *)      getgrnam_r_proto=0
12260         ;;
12261 esac
12262
12263 : see if gethostbyaddr exists
12264 set gethostbyaddr d_gethbyaddr
12265 eval $inlibc
12266
12267 : see if gethostbyname exists
12268 set gethostbyname d_gethbyname
12269 eval $inlibc
12270
12271 : see if gethostent exists
12272 set gethostent d_gethent
12273 eval $inlibc
12274
12275 : see how we will look up host name
12276 echo " "
12277 call=''
12278 if set gethostname val -f d_gethname; eval $csym; $val; then
12279         echo 'gethostname() found.' >&4
12280         d_gethname="$define"
12281         call=gethostname
12282 fi
12283 if set uname val -f d_uname; eval $csym; $val; then
12284         if ./xenix; then
12285                 $cat <<'EOM'
12286 uname() was found, but you're running xenix, and older versions of xenix
12287 have a broken uname(). If you don't really know whether your xenix is old
12288 enough to have a broken system call, use the default answer.
12289
12290 EOM
12291                 dflt=y
12292                 case "$d_uname" in
12293                 "$define") dflt=n;;
12294                 esac
12295                 rp='Is your uname() broken?'
12296                 . ./myread
12297                 case "$ans" in
12298                 n*) d_uname="$define"; call=uname;;
12299                 esac
12300         else
12301                 echo 'uname() found.' >&4
12302                 d_uname="$define"
12303                 case "$call" in
12304                 '') call=uname ;;
12305                 esac
12306         fi
12307 fi
12308 case "$d_gethname" in
12309 '') d_gethname="$undef";;
12310 esac
12311 case "$d_uname" in
12312 '') d_uname="$undef";;
12313 esac
12314 case "$d_uname$d_gethname" in
12315 *define*)
12316         dflt=n
12317         cat <<EOM
12318  
12319 Every now and then someone has a $call() that lies about the hostname
12320 but can't be fixed for political or economic reasons.  If you wish, I can
12321 pretend $call() isn't there and maybe compute hostname at run-time
12322 thanks to the '$phostname' command.
12323
12324 EOM
12325         rp="Shall I ignore $call() from now on?"
12326         . ./myread
12327         case "$ans" in
12328         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12329         esac;;
12330 esac
12331 case "$phostname" in
12332 '') aphostname='';;
12333 *) case "$aphostname" in
12334         /*) ;;
12335         *) set X $phostname
12336                 shift
12337                 file=$1
12338                 shift
12339                 file=`./loc $file $file $pth`
12340                 aphostname=`echo $file $*`
12341                 ;;
12342         esac
12343         ;;
12344 esac
12345 case "$d_uname$d_gethname" in
12346 *define*) ;;
12347 *)
12348         case "$phostname" in
12349         '')
12350                 echo "There will be no way for $package to get your hostname." >&4;;
12351         *)
12352         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12353                 ;;
12354         esac;;
12355 esac
12356 case "$d_phostname" in
12357 '') d_phostname="$undef";;
12358 esac
12359
12360 : see if gethostbyaddr_r exists
12361 set gethostbyaddr_r d_gethostbyaddr_r
12362 eval $inlibc
12363 case "$d_gethostbyaddr_r" in
12364 "$define")
12365         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12366         case "$d_gethostbyaddr_r_proto:$usethreads" in
12367         ":define")      d_gethostbyaddr_r_proto=define
12368                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12369                 eval $hasproto ;;
12370         *)      ;;
12371         esac
12372         case "$d_gethostbyaddr_r_proto" in
12373         define)
12374         case "$gethostbyaddr_r_proto" in
12375         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12376         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12377         esac
12378         case "$gethostbyaddr_r_proto" in
12379         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12380         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12381         esac
12382         case "$gethostbyaddr_r_proto" in
12383         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12384         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12385         esac
12386         case "$gethostbyaddr_r_proto" in
12387         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12388         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12389         esac
12390         case "$gethostbyaddr_r_proto" in
12391         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12392         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12393         esac
12394         case "$gethostbyaddr_r_proto" in
12395         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12396         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12397         esac
12398         case "$gethostbyaddr_r_proto" in
12399         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12400         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12401         esac
12402         case "$gethostbyaddr_r_proto" in
12403         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12404         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12405         esac
12406         case "$gethostbyaddr_r_proto" in
12407         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12408         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12409         esac
12410         case "$gethostbyaddr_r_proto" in
12411         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12412         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12413         esac
12414         case "$gethostbyaddr_r_proto" in
12415         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12416         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12417         esac
12418         case "$gethostbyaddr_r_proto" in
12419         ''|0)   d_gethostbyaddr_r=undef
12420                 gethostbyaddr_r_proto=0
12421                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12422         * )     case "$gethostbyaddr_r_proto" in
12423                 REENTRANT_PROTO*) ;;
12424                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12425                 esac
12426                 echo "Prototype: $try" ;;
12427         esac
12428         ;;
12429         *)      case "$usethreads" in
12430                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12431                 esac
12432                 d_gethostbyaddr_r=undef
12433                 gethostbyaddr_r_proto=0
12434                 ;;
12435         esac
12436         ;;
12437 *)      gethostbyaddr_r_proto=0
12438         ;;
12439 esac
12440
12441 : see if gethostbyname_r exists
12442 set gethostbyname_r d_gethostbyname_r
12443 eval $inlibc
12444 case "$d_gethostbyname_r" in
12445 "$define")
12446         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12447         case "$d_gethostbyname_r_proto:$usethreads" in
12448         ":define")      d_gethostbyname_r_proto=define
12449                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12450                 eval $hasproto ;;
12451         *)      ;;
12452         esac
12453         case "$d_gethostbyname_r_proto" in
12454         define)
12455         case "$gethostbyname_r_proto" in
12456         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12457         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12458         esac
12459         case "$gethostbyname_r_proto" in
12460         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12461         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12462         esac
12463         case "$gethostbyname_r_proto" in
12464         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12465         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12466         esac
12467         case "$gethostbyname_r_proto" in
12468         ''|0)   d_gethostbyname_r=undef
12469                 gethostbyname_r_proto=0
12470                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12471         * )     case "$gethostbyname_r_proto" in
12472                 REENTRANT_PROTO*) ;;
12473                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12474                 esac
12475                 echo "Prototype: $try" ;;
12476         esac
12477         ;;
12478         *)      case "$usethreads" in
12479                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12480                 esac
12481                 d_gethostbyname_r=undef
12482                 gethostbyname_r_proto=0
12483                 ;;
12484         esac
12485         ;;
12486 *)      gethostbyname_r_proto=0
12487         ;;
12488 esac
12489
12490 : see if gethostent_r exists
12491 set gethostent_r d_gethostent_r
12492 eval $inlibc
12493 case "$d_gethostent_r" in
12494 "$define")
12495         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12496         case "$d_gethostent_r_proto:$usethreads" in
12497         ":define")      d_gethostent_r_proto=define
12498                 set d_gethostent_r_proto gethostent_r $hdrs
12499                 eval $hasproto ;;
12500         *)      ;;
12501         esac
12502         case "$d_gethostent_r_proto" in
12503         define)
12504         case "$gethostent_r_proto" in
12505         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12506         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12507         esac
12508         case "$gethostent_r_proto" in
12509         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12510         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12511         esac
12512         case "$gethostent_r_proto" in
12513         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12514         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12515         esac
12516         case "$gethostent_r_proto" in
12517         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12518         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12519         esac
12520         case "$gethostent_r_proto" in
12521         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12522         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12523         esac
12524         case "$gethostent_r_proto" in
12525         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12526         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12527         esac
12528         case "$gethostent_r_proto" in
12529         ''|0)   d_gethostent_r=undef
12530                 gethostent_r_proto=0
12531                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12532         * )     case "$gethostent_r_proto" in
12533                 REENTRANT_PROTO*) ;;
12534                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12535                 esac
12536                 echo "Prototype: $try" ;;
12537         esac
12538         ;;
12539         *)      case "$usethreads" in
12540                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12541                 esac
12542                 d_gethostent_r=undef
12543                 gethostent_r_proto=0
12544                 ;;
12545         esac
12546         ;;
12547 *)      gethostent_r_proto=0
12548         ;;
12549 esac
12550
12551 : see if prototypes for various gethostxxx netdb.h functions are available
12552 echo " "
12553 set d_gethostprotos gethostent $i_netdb netdb.h
12554 eval $hasproto
12555
12556 : see if getitimer exists
12557 set getitimer d_getitimer
12558 eval $inlibc
12559
12560 : see if getlogin exists
12561 set getlogin d_getlogin
12562 eval $inlibc
12563
12564 : see if getlogin_r exists
12565 set getlogin_r d_getlogin_r
12566 eval $inlibc
12567 case "$d_getlogin_r" in
12568 "$define")
12569         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12570         case "$d_getlogin_r_proto:$usethreads" in
12571         ":define")      d_getlogin_r_proto=define
12572                 set d_getlogin_r_proto getlogin_r $hdrs
12573                 eval $hasproto ;;
12574         *)      ;;
12575         esac
12576         case "$d_getlogin_r_proto" in
12577         define)
12578         case "$getlogin_r_proto" in
12579         ''|0) try='int getlogin_r(char*, size_t);'
12580         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12581         esac
12582         case "$getlogin_r_proto" in
12583         ''|0) try='int getlogin_r(char*, int);'
12584         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12585         esac
12586         case "$getlogin_r_proto" in
12587         ''|0) try='char* getlogin_r(char*, size_t);'
12588         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12589         esac
12590         case "$getlogin_r_proto" in
12591         ''|0) try='char* getlogin_r(char*, int);'
12592         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12593         esac
12594         case "$getlogin_r_proto" in
12595         ''|0)   d_getlogin_r=undef
12596                 getlogin_r_proto=0
12597                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12598         * )     case "$getlogin_r_proto" in
12599                 REENTRANT_PROTO*) ;;
12600                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12601                 esac
12602                 echo "Prototype: $try" ;;
12603         esac
12604         ;;
12605         *)      case "$usethreads" in
12606                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12607                 esac
12608                 d_getlogin_r=undef
12609                 getlogin_r_proto=0
12610                 ;;
12611         esac
12612         ;;
12613 *)      getlogin_r_proto=0
12614         ;;
12615 esac
12616
12617 : see if getmnt exists
12618 set getmnt d_getmnt
12619 eval $inlibc
12620
12621 : see if getmntent exists
12622 set getmntent d_getmntent
12623 eval $inlibc
12624
12625 : see if getnetbyaddr exists
12626 set getnetbyaddr d_getnbyaddr
12627 eval $inlibc
12628
12629 : see if getnetbyname exists
12630 set getnetbyname d_getnbyname
12631 eval $inlibc
12632
12633 : see if getnetent exists
12634 set getnetent d_getnent
12635 eval $inlibc
12636
12637 : see if getnetbyaddr_r exists
12638 set getnetbyaddr_r d_getnetbyaddr_r
12639 eval $inlibc
12640 case "$d_getnetbyaddr_r" in
12641 "$define")
12642         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12643         case "$d_getnetbyaddr_r_proto:$usethreads" in
12644         ":define")      d_getnetbyaddr_r_proto=define
12645                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12646                 eval $hasproto ;;
12647         *)      ;;
12648         esac
12649         case "$d_getnetbyaddr_r_proto" in
12650         define)
12651         case "$getnetbyaddr_r_proto" in
12652         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12653         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12654         esac
12655         case "$getnetbyaddr_r_proto" in
12656         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12657         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12658         esac
12659         case "$getnetbyaddr_r_proto" in
12660         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12661         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12662         esac
12663         case "$getnetbyaddr_r_proto" in
12664         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12665         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12666         esac
12667         case "$getnetbyaddr_r_proto" in
12668         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12669         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12670         esac
12671         case "$getnetbyaddr_r_proto" in
12672         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12673         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12674         esac
12675         case "$getnetbyaddr_r_proto" in
12676         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12677         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12678         esac
12679         case "$getnetbyaddr_r_proto" in
12680         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12681         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12682         esac
12683         case "$getnetbyaddr_r_proto" in
12684         ''|0)   d_getnetbyaddr_r=undef
12685                 getnetbyaddr_r_proto=0
12686                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12687         * )     case "$getnetbyaddr_r_proto" in
12688                 REENTRANT_PROTO*) ;;
12689                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12690                 esac
12691                 echo "Prototype: $try" ;;
12692         esac
12693         ;;
12694         *)      case "$usethreads" in
12695                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12696                 esac
12697                 d_getnetbyaddr_r=undef
12698                 getnetbyaddr_r_proto=0
12699                 ;;
12700         esac
12701         ;;
12702 *)      getnetbyaddr_r_proto=0
12703         ;;
12704 esac
12705
12706 : see if getnetbyname_r exists
12707 set getnetbyname_r d_getnetbyname_r
12708 eval $inlibc
12709 case "$d_getnetbyname_r" in
12710 "$define")
12711         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12712         case "$d_getnetbyname_r_proto:$usethreads" in
12713         ":define")      d_getnetbyname_r_proto=define
12714                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12715                 eval $hasproto ;;
12716         *)      ;;
12717         esac
12718         case "$d_getnetbyname_r_proto" in
12719         define)
12720         case "$getnetbyname_r_proto" in
12721         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12722         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12723         esac
12724         case "$getnetbyname_r_proto" in
12725         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12726         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12727         esac
12728         case "$getnetbyname_r_proto" in
12729         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12730         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12731         esac
12732         case "$getnetbyname_r_proto" in
12733         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12734         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12735         esac
12736         case "$getnetbyname_r_proto" in
12737         ''|0)   d_getnetbyname_r=undef
12738                 getnetbyname_r_proto=0
12739                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12740         * )     case "$getnetbyname_r_proto" in
12741                 REENTRANT_PROTO*) ;;
12742                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12743                 esac
12744                 echo "Prototype: $try" ;;
12745         esac
12746         ;;
12747         *)      case "$usethreads" in
12748                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12749                 esac
12750                 d_getnetbyname_r=undef
12751                 getnetbyname_r_proto=0
12752                 ;;
12753         esac
12754         ;;
12755 *)      getnetbyname_r_proto=0
12756         ;;
12757 esac
12758
12759 : see if getnetent_r exists
12760 set getnetent_r d_getnetent_r
12761 eval $inlibc
12762 case "$d_getnetent_r" in
12763 "$define")
12764         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12765         case "$d_getnetent_r_proto:$usethreads" in
12766         ":define")      d_getnetent_r_proto=define
12767                 set d_getnetent_r_proto getnetent_r $hdrs
12768                 eval $hasproto ;;
12769         *)      ;;
12770         esac
12771         case "$d_getnetent_r_proto" in
12772         define)
12773         case "$getnetent_r_proto" in
12774         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12775         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12776         esac
12777         case "$getnetent_r_proto" in
12778         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12779         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12780         esac
12781         case "$getnetent_r_proto" in
12782         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
12783         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
12784         esac
12785         case "$getnetent_r_proto" in
12786         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
12787         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
12788         esac
12789         case "$getnetent_r_proto" in
12790         ''|0) try='int getnetent_r(struct netent*, char*, int);'
12791         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
12792         esac
12793         case "$getnetent_r_proto" in
12794         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
12795         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
12796         esac
12797         case "$getnetent_r_proto" in
12798         ''|0)   d_getnetent_r=undef
12799                 getnetent_r_proto=0
12800                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
12801         * )     case "$getnetent_r_proto" in
12802                 REENTRANT_PROTO*) ;;
12803                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
12804                 esac
12805                 echo "Prototype: $try" ;;
12806         esac
12807         ;;
12808         *)      case "$usethreads" in
12809                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
12810                 esac
12811                 d_getnetent_r=undef
12812                 getnetent_r_proto=0
12813                 ;;
12814         esac
12815         ;;
12816 *)      getnetent_r_proto=0
12817         ;;
12818 esac
12819
12820 : see if prototypes for various getnetxxx netdb.h functions are available
12821 echo " "
12822 set d_getnetprotos getnetent $i_netdb netdb.h
12823 eval $hasproto
12824
12825 : see if getpagesize exists
12826 set getpagesize d_getpagsz
12827 eval $inlibc
12828
12829
12830 : see if getprotobyname exists
12831 set getprotobyname d_getpbyname
12832 eval $inlibc
12833
12834 : see if getprotobynumber exists
12835 set getprotobynumber d_getpbynumber
12836 eval $inlibc
12837
12838 : see if getprotoent exists
12839 set getprotoent d_getpent
12840 eval $inlibc
12841
12842 : see if getpgid exists
12843 set getpgid d_getpgid
12844 eval $inlibc
12845
12846 : see if getpgrp2 exists
12847 set getpgrp2 d_getpgrp2
12848 eval $inlibc
12849
12850 : see if getppid exists
12851 set getppid d_getppid
12852 eval $inlibc
12853
12854 : see if getpriority exists
12855 set getpriority d_getprior
12856 eval $inlibc
12857
12858 : see if getprotobyname_r exists
12859 set getprotobyname_r d_getprotobyname_r
12860 eval $inlibc
12861 case "$d_getprotobyname_r" in
12862 "$define")
12863         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12864         case "$d_getprotobyname_r_proto:$usethreads" in
12865         ":define")      d_getprotobyname_r_proto=define
12866                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
12867                 eval $hasproto ;;
12868         *)      ;;
12869         esac
12870         case "$d_getprotobyname_r_proto" in
12871         define)
12872         case "$getprotobyname_r_proto" in
12873         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
12874         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
12875         esac
12876         case "$getprotobyname_r_proto" in
12877         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
12878         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
12879         esac
12880         case "$getprotobyname_r_proto" in
12881         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
12882         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
12883         esac
12884         case "$getprotobyname_r_proto" in
12885         ''|0)   d_getprotobyname_r=undef
12886                 getprotobyname_r_proto=0
12887                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
12888         * )     case "$getprotobyname_r_proto" in
12889                 REENTRANT_PROTO*) ;;
12890                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
12891                 esac
12892                 echo "Prototype: $try" ;;
12893         esac
12894         ;;
12895         *)      case "$usethreads" in
12896                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
12897                 esac
12898                 d_getprotobyname_r=undef
12899                 getprotobyname_r_proto=0
12900                 ;;
12901         esac
12902         ;;
12903 *)      getprotobyname_r_proto=0
12904         ;;
12905 esac
12906
12907 : see if getprotobynumber_r exists
12908 set getprotobynumber_r d_getprotobynumber_r
12909 eval $inlibc
12910 case "$d_getprotobynumber_r" in
12911 "$define")
12912         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12913         case "$d_getprotobynumber_r_proto:$usethreads" in
12914         ":define")      d_getprotobynumber_r_proto=define
12915                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
12916                 eval $hasproto ;;
12917         *)      ;;
12918         esac
12919         case "$d_getprotobynumber_r_proto" in
12920         define)
12921         case "$getprotobynumber_r_proto" in
12922         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
12923         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
12924         esac
12925         case "$getprotobynumber_r_proto" in
12926         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
12927         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
12928         esac
12929         case "$getprotobynumber_r_proto" in
12930         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
12931         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
12932         esac
12933         case "$getprotobynumber_r_proto" in
12934         ''|0)   d_getprotobynumber_r=undef
12935                 getprotobynumber_r_proto=0
12936                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
12937         * )     case "$getprotobynumber_r_proto" in
12938                 REENTRANT_PROTO*) ;;
12939                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
12940                 esac
12941                 echo "Prototype: $try" ;;
12942         esac
12943         ;;
12944         *)      case "$usethreads" in
12945                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
12946                 esac
12947                 d_getprotobynumber_r=undef
12948                 getprotobynumber_r_proto=0
12949                 ;;
12950         esac
12951         ;;
12952 *)      getprotobynumber_r_proto=0
12953         ;;
12954 esac
12955
12956 : see if getprotoent_r exists
12957 set getprotoent_r d_getprotoent_r
12958 eval $inlibc
12959 case "$d_getprotoent_r" in
12960 "$define")
12961         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12962         case "$d_getprotoent_r_proto:$usethreads" in
12963         ":define")      d_getprotoent_r_proto=define
12964                 set d_getprotoent_r_proto getprotoent_r $hdrs
12965                 eval $hasproto ;;
12966         *)      ;;
12967         esac
12968         case "$d_getprotoent_r_proto" in
12969         define)
12970         case "$getprotoent_r_proto" in
12971         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
12972         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
12973         esac
12974         case "$getprotoent_r_proto" in
12975         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
12976         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
12977         esac
12978         case "$getprotoent_r_proto" in
12979         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
12980         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
12981         esac
12982         case "$getprotoent_r_proto" in
12983         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
12984         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
12985         esac
12986         case "$getprotoent_r_proto" in
12987         ''|0)   d_getprotoent_r=undef
12988                 getprotoent_r_proto=0
12989                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
12990         * )     case "$getprotoent_r_proto" in
12991                 REENTRANT_PROTO*) ;;
12992                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
12993                 esac
12994                 echo "Prototype: $try" ;;
12995         esac
12996         ;;
12997         *)      case "$usethreads" in
12998                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
12999                 esac
13000                 d_getprotoent_r=undef
13001                 getprotoent_r_proto=0
13002                 ;;
13003         esac
13004         ;;
13005 *)      getprotoent_r_proto=0
13006         ;;
13007 esac
13008
13009 : see if prototypes for various getprotoxxx netdb.h functions are available
13010 echo " "
13011 set d_getprotoprotos getprotoent $i_netdb netdb.h
13012 eval $hasproto
13013
13014 : see if getprpwnam exists
13015 set getprpwnam d_getprpwnam
13016 eval $inlibc
13017
13018 : see if getpwent exists
13019 set getpwent d_getpwent
13020 eval $inlibc
13021
13022 : see if getpwent_r exists
13023 set getpwent_r d_getpwent_r
13024 eval $inlibc
13025 case "$d_getpwent_r" in
13026 "$define")
13027         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13028         case "$d_getpwent_r_proto:$usethreads" in
13029         ":define")      d_getpwent_r_proto=define
13030                 set d_getpwent_r_proto getpwent_r $hdrs
13031                 eval $hasproto ;;
13032         *)      ;;
13033         esac
13034         case "$d_getpwent_r_proto" in
13035         define)
13036         case "$getpwent_r_proto" in
13037         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13038         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13039         esac
13040         case "$getpwent_r_proto" in
13041         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13042         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13043         esac
13044         case "$getpwent_r_proto" in
13045         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13046         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13047         esac
13048         case "$getpwent_r_proto" in
13049         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13050         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13051         esac
13052         case "$getpwent_r_proto" in
13053         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13054         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13055         esac
13056         case "$getpwent_r_proto" in
13057         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13058         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13059         esac
13060         case "$getpwent_r_proto" in
13061         ''|0)   d_getpwent_r=undef
13062                 getpwent_r_proto=0
13063                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13064         * )     case "$getpwent_r_proto" in
13065                 REENTRANT_PROTO*) ;;
13066                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13067                 esac
13068                 echo "Prototype: $try" ;;
13069         esac
13070         ;;
13071         *)      case "$usethreads" in
13072                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13073                 esac
13074                 d_getpwent_r=undef
13075                 getpwent_r_proto=0
13076                 ;;
13077         esac
13078         ;;
13079 *)      getpwent_r_proto=0
13080         ;;
13081 esac
13082
13083 : see if getpwnam_r exists
13084 set getpwnam_r d_getpwnam_r
13085 eval $inlibc
13086 case "$d_getpwnam_r" in
13087 "$define")
13088         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13089         case "$d_getpwnam_r_proto:$usethreads" in
13090         ":define")      d_getpwnam_r_proto=define
13091                 set d_getpwnam_r_proto getpwnam_r $hdrs
13092                 eval $hasproto ;;
13093         *)      ;;
13094         esac
13095         case "$d_getpwnam_r_proto" in
13096         define)
13097         case "$getpwnam_r_proto" in
13098         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13099         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13100         esac
13101         case "$getpwnam_r_proto" in
13102         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13103         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13104         esac
13105         case "$getpwnam_r_proto" in
13106         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13107         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13108         esac
13109         case "$getpwnam_r_proto" in
13110         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13111         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13112         esac
13113         case "$getpwnam_r_proto" in
13114         ''|0)   d_getpwnam_r=undef
13115                 getpwnam_r_proto=0
13116                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13117         * )     case "$getpwnam_r_proto" in
13118                 REENTRANT_PROTO*) ;;
13119                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13120                 esac
13121                 echo "Prototype: $try" ;;
13122         esac
13123         ;;
13124         *)      case "$usethreads" in
13125                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13126                 esac
13127                 d_getpwnam_r=undef
13128                 getpwnam_r_proto=0
13129                 ;;
13130         esac
13131         ;;
13132 *)      getpwnam_r_proto=0
13133         ;;
13134 esac
13135
13136 : see if getpwuid_r exists
13137 set getpwuid_r d_getpwuid_r
13138 eval $inlibc
13139 case "$d_getpwuid_r" in
13140 "$define")
13141         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13142         case "$d_getpwuid_r_proto:$usethreads" in
13143         ":define")      d_getpwuid_r_proto=define
13144                 set d_getpwuid_r_proto getpwuid_r $hdrs
13145                 eval $hasproto ;;
13146         *)      ;;
13147         esac
13148         case "$d_getpwuid_r_proto" in
13149         define)
13150         case "$getpwuid_r_proto" in
13151         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13152         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13153         esac
13154         case "$getpwuid_r_proto" in
13155         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13156         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13157         esac
13158         case "$getpwuid_r_proto" in
13159         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13160         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13161         esac
13162         case "$getpwuid_r_proto" in
13163         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13164         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13165         esac
13166         case "$getpwuid_r_proto" in
13167         ''|0)   d_getpwuid_r=undef
13168                 getpwuid_r_proto=0
13169                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13170         * )     case "$getpwuid_r_proto" in
13171                 REENTRANT_PROTO*) ;;
13172                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13173                 esac
13174                 echo "Prototype: $try" ;;
13175         esac
13176         ;;
13177         *)      case "$usethreads" in
13178                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13179                 esac
13180                 d_getpwuid_r=undef
13181                 getpwuid_r_proto=0
13182                 ;;
13183         esac
13184         ;;
13185 *)      getpwuid_r_proto=0
13186         ;;
13187 esac
13188
13189
13190 : see if getservbyname exists
13191 set getservbyname d_getsbyname
13192 eval $inlibc
13193
13194 : see if getservbyport exists
13195 set getservbyport d_getsbyport
13196 eval $inlibc
13197
13198 : see if getservent exists
13199 set getservent d_getsent
13200 eval $inlibc
13201
13202 : see if getservbyname_r exists
13203 set getservbyname_r d_getservbyname_r
13204 eval $inlibc
13205 case "$d_getservbyname_r" in
13206 "$define")
13207         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13208         case "$d_getservbyname_r_proto:$usethreads" in
13209         ":define")      d_getservbyname_r_proto=define
13210                 set d_getservbyname_r_proto getservbyname_r $hdrs
13211                 eval $hasproto ;;
13212         *)      ;;
13213         esac
13214         case "$d_getservbyname_r_proto" in
13215         define)
13216         case "$getservbyname_r_proto" in
13217         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13218         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13219         esac
13220         case "$getservbyname_r_proto" in
13221         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13222         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13223         esac
13224         case "$getservbyname_r_proto" in
13225         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13226         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13227         esac
13228         case "$getservbyname_r_proto" in
13229         ''|0)   d_getservbyname_r=undef
13230                 getservbyname_r_proto=0
13231                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13232         * )     case "$getservbyname_r_proto" in
13233                 REENTRANT_PROTO*) ;;
13234                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13235                 esac
13236                 echo "Prototype: $try" ;;
13237         esac
13238         ;;
13239         *)      case "$usethreads" in
13240                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13241                 esac
13242                 d_getservbyname_r=undef
13243                 getservbyname_r_proto=0
13244                 ;;
13245         esac
13246         ;;
13247 *)      getservbyname_r_proto=0
13248         ;;
13249 esac
13250
13251 : see if getservbyport_r exists
13252 set getservbyport_r d_getservbyport_r
13253 eval $inlibc
13254 case "$d_getservbyport_r" in
13255 "$define")
13256         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13257         case "$d_getservbyport_r_proto:$usethreads" in
13258         ":define")      d_getservbyport_r_proto=define
13259                 set d_getservbyport_r_proto getservbyport_r $hdrs
13260                 eval $hasproto ;;
13261         *)      ;;
13262         esac
13263         case "$d_getservbyport_r_proto" in
13264         define)
13265         case "$getservbyport_r_proto" in
13266         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13267         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13268         esac
13269         case "$getservbyport_r_proto" in
13270         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13271         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13272         esac
13273         case "$getservbyport_r_proto" in
13274         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13275         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13276         esac
13277         case "$getservbyport_r_proto" in
13278         ''|0)   d_getservbyport_r=undef
13279                 getservbyport_r_proto=0
13280                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13281         * )     case "$getservbyport_r_proto" in
13282                 REENTRANT_PROTO*) ;;
13283                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13284                 esac
13285                 echo "Prototype: $try" ;;
13286         esac
13287         ;;
13288         *)      case "$usethreads" in
13289                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13290                 esac
13291                 d_getservbyport_r=undef
13292                 getservbyport_r_proto=0
13293                 ;;
13294         esac
13295         ;;
13296 *)      getservbyport_r_proto=0
13297         ;;
13298 esac
13299
13300 : see if getservent_r exists
13301 set getservent_r d_getservent_r
13302 eval $inlibc
13303 case "$d_getservent_r" in
13304 "$define")
13305         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13306         case "$d_getservent_r_proto:$usethreads" in
13307         ":define")      d_getservent_r_proto=define
13308                 set d_getservent_r_proto getservent_r $hdrs
13309                 eval $hasproto ;;
13310         *)      ;;
13311         esac
13312         case "$d_getservent_r_proto" in
13313         define)
13314         case "$getservent_r_proto" in
13315         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13316         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13317         esac
13318         case "$getservent_r_proto" in
13319         ''|0) try='int getservent_r(struct servent*, char*, int);'
13320         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13321         esac
13322         case "$getservent_r_proto" in
13323         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13324         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13325         esac
13326         case "$getservent_r_proto" in
13327         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13328         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13329         esac
13330         case "$getservent_r_proto" in
13331         ''|0)   d_getservent_r=undef
13332                 getservent_r_proto=0
13333                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13334         * )     case "$getservent_r_proto" in
13335                 REENTRANT_PROTO*) ;;
13336                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13337                 esac
13338                 echo "Prototype: $try" ;;
13339         esac
13340         ;;
13341         *)      case "$usethreads" in
13342                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13343                 esac
13344                 d_getservent_r=undef
13345                 getservent_r_proto=0
13346                 ;;
13347         esac
13348         ;;
13349 *)      getservent_r_proto=0
13350         ;;
13351 esac
13352
13353 : see if prototypes for various getservxxx netdb.h functions are available
13354 echo " "
13355 set d_getservprotos getservent $i_netdb netdb.h
13356 eval $hasproto
13357
13358 : see if getspnam exists
13359 set getspnam d_getspnam
13360 eval $inlibc
13361
13362 : see if this is a shadow.h system
13363 set shadow.h i_shadow
13364 eval $inhdr
13365
13366 : see if getspnam_r exists
13367 set getspnam_r d_getspnam_r
13368 eval $inlibc
13369 case "$d_getspnam_r" in
13370 "$define")
13371         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13372         case "$d_getspnam_r_proto:$usethreads" in
13373         ":define")      d_getspnam_r_proto=define
13374                 set d_getspnam_r_proto getspnam_r $hdrs
13375                 eval $hasproto ;;
13376         *)      ;;
13377         esac
13378         case "$d_getspnam_r_proto" in
13379         define)
13380         case "$getspnam_r_proto" in
13381         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13382         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13383         esac
13384         case "$getspnam_r_proto" in
13385         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13386         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13387         esac
13388         case "$getspnam_r_proto" in
13389         ''|0)   d_getspnam_r=undef
13390                 getspnam_r_proto=0
13391                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13392         * )     case "$getspnam_r_proto" in
13393                 REENTRANT_PROTO*) ;;
13394                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13395                 esac
13396                 echo "Prototype: $try" ;;
13397         esac
13398         ;;
13399         *)      case "$usethreads" in
13400                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13401                 esac
13402                 d_getspnam_r=undef
13403                 getspnam_r_proto=0
13404                 ;;
13405         esac
13406         ;;
13407 *)      getspnam_r_proto=0
13408         ;;
13409 esac
13410
13411 : see if gettimeofday or ftime exists
13412 set gettimeofday d_gettimeod
13413 eval $inlibc
13414 case "$d_gettimeod" in
13415 "$undef")
13416         set ftime d_ftime 
13417         eval $inlibc
13418         ;;
13419 *)
13420         val="$undef"; set d_ftime; eval $setvar
13421         ;;
13422 esac
13423 case "$d_gettimeod$d_ftime" in
13424 "$undef$undef")
13425         echo " "
13426         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13427         ;;
13428 esac
13429
13430 : see if gmtime_r exists
13431 set gmtime_r d_gmtime_r
13432 eval $inlibc
13433 case "$d_gmtime_r" in
13434 "$define")
13435         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13436         case "$d_gmtime_r_proto:$usethreads" in
13437         ":define")      d_gmtime_r_proto=define
13438                 set d_gmtime_r_proto gmtime_r $hdrs
13439                 eval $hasproto ;;
13440         *)      ;;
13441         esac
13442         case "$d_gmtime_r_proto" in
13443         define)
13444         case "$gmtime_r_proto" in
13445         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13446         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13447         esac
13448         case "$gmtime_r_proto" in
13449         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13450         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13451         esac
13452         case "$gmtime_r_proto" in
13453         ''|0)   d_gmtime_r=undef
13454                 gmtime_r_proto=0
13455                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13456         * )     case "$gmtime_r_proto" in
13457                 REENTRANT_PROTO*) ;;
13458                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13459                 esac
13460                 echo "Prototype: $try" ;;
13461         esac
13462         ;;
13463         *)      case "$usethreads" in
13464                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13465                 esac
13466                 d_gmtime_r=undef
13467                 gmtime_r_proto=0
13468                 ;;
13469         esac
13470         ;;
13471 *)      gmtime_r_proto=0
13472         ;;
13473 esac
13474
13475 : see if hasmntopt exists
13476 set hasmntopt d_hasmntopt
13477 eval $inlibc
13478
13479 : see if this is a netinet/in.h or sys/in.h system
13480 set netinet/in.h i_niin sys/in.h i_sysin
13481 eval $inhdr
13482
13483 : see if arpa/inet.h has to be included
13484 set arpa/inet.h i_arpainet
13485 eval $inhdr
13486
13487 : see if htonl --and friends-- exists
13488 val=''
13489 set htonl val
13490 eval $inlibc
13491
13492 : Maybe they are macros.
13493 case "$val" in
13494 $undef)
13495         $cat >htonl.c <<EOM
13496 #include <stdio.h>
13497 #include <sys/types.h>
13498 #$i_niin I_NETINET_IN
13499 #$i_sysin I_SYS_IN
13500 #$i_arpainet I_ARPA_INET
13501 #ifdef I_NETINET_IN
13502 #include <netinet/in.h>
13503 #endif
13504 #ifdef I_SYS_IN
13505 #include <sys/in.h>
13506 #endif
13507 #ifdef I_ARPA_INET
13508 #include <arpa/inet.h>
13509 #endif
13510 #ifdef htonl
13511 printf("Defined as a macro.");
13512 #endif
13513 EOM
13514         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13515         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13516                 val="$define"
13517                 echo "But it seems to be defined as a macro." >&4
13518         fi
13519         $rm -f htonl.?
13520         ;;
13521 esac
13522 set d_htonl
13523 eval $setvar
13524
13525 : index or strchr
13526 echo " "
13527 if set index val -f; eval $csym; $val; then
13528         if set strchr val -f d_strchr; eval $csym; $val; then
13529                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13530                         val="$define"
13531                         vali="$undef"
13532                         echo "strchr() found." >&4
13533                 else
13534                         val="$undef"
13535                         vali="$define"
13536                         echo "index() found." >&4
13537                 fi
13538         else
13539                 val="$undef"
13540                 vali="$define"
13541                 echo "index() found." >&4
13542         fi
13543 else
13544         if set strchr val -f d_strchr; eval $csym; $val; then
13545                 val="$define"
13546                 vali="$undef"
13547                 echo "strchr() found." >&4
13548         else
13549                 echo "No index() or strchr() found!" >&4
13550                 val="$undef"
13551                 vali="$undef"
13552         fi
13553 fi
13554 set d_strchr; eval $setvar
13555 val="$vali"
13556 set d_index; eval $setvar
13557
13558 : check whether inet_aton exists
13559 set inet_aton d_inetaton
13560 eval $inlibc
13561
13562 : Look for isascii
13563 echo " "
13564 $cat >isascii.c <<'EOCP'
13565 #include <stdio.h>
13566 #include <ctype.h>
13567 #$i_stdlib I_STDLIB
13568 #ifdef I_STDLIB
13569 #include <stdlib.h>
13570 #endif
13571 int main() {
13572         int c = 'A';
13573         if (isascii(c))
13574                 exit(0);
13575         else
13576                 exit(1);
13577 }
13578 EOCP
13579 set isascii
13580 if eval $compile; then
13581         echo "isascii() found." >&4
13582         val="$define"
13583 else
13584         echo "isascii() NOT found." >&4
13585         val="$undef"
13586 fi
13587 set d_isascii
13588 eval $setvar
13589 $rm -f isascii*
13590
13591 : see if isfinite exists
13592 set isfinite d_isfinite
13593 eval $inlibc
13594
13595 : see if isinf exists
13596 set isinf d_isinf
13597 eval $inlibc
13598
13599 : see if isnan exists
13600 set isnan d_isnan
13601 eval $inlibc
13602
13603 : see if isnanl exists
13604 set isnanl d_isnanl
13605 eval $inlibc
13606
13607 : see if killpg exists
13608 set killpg d_killpg
13609 eval $inlibc
13610
13611 : see if lchown exists
13612 echo " "
13613 $cat > try.c <<'EOCP'
13614 /* System header to define __stub macros and hopefully few prototypes,
13615     which can conflict with char lchown(); below.  */
13616 #include <assert.h>
13617 /* Override any gcc2 internal prototype to avoid an error.  */
13618 /* We use char because int might match the return type of a gcc2
13619    builtin and then its argument prototype would still apply.  */
13620 char lchown();
13621 int main() {
13622     /*  The GNU C library defines this for functions which it implements
13623         to always fail with ENOSYS.  Some functions are actually named
13624         something starting with __ and the normal name is an alias.  */
13625 #if defined (__stub_lchown) || defined (__stub___lchown)
13626 choke me
13627 #else
13628 lchown();
13629 #endif
13630 ; return 0; }
13631 EOCP
13632 set try
13633 if eval $compile; then
13634     $echo "lchown() found." >&4
13635     val="$define"
13636 else
13637     $echo "lchown() NOT found." >&4
13638     val="$undef"
13639 fi
13640 set d_lchown
13641 eval $setvar
13642
13643 : See if number of significant digits in a double precision number is known
13644 echo " "
13645 $cat >ldbl_dig.c <<EOM
13646 #$i_limits I_LIMITS
13647 #$i_float I_FLOAT
13648 #ifdef I_LIMITS
13649 #include <limits.h>
13650 #endif
13651 #ifdef I_FLOAT
13652 #include <float.h>
13653 #endif
13654 #ifdef LDBL_DIG
13655 printf("Contains LDBL_DIG");
13656 #endif
13657 EOM
13658 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13659 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13660         echo "LDBL_DIG found." >&4
13661         val="$define"
13662 else
13663         echo "LDBL_DIG NOT found." >&4
13664         val="$undef"
13665 fi
13666 $rm -f ldbl_dig.?
13667 set d_ldbl_dig
13668 eval $setvar
13669
13670 : see if link exists
13671 set link d_link
13672 eval $inlibc
13673
13674 : see if localtime_r exists
13675 set localtime_r d_localtime_r
13676 eval $inlibc
13677 case "$d_localtime_r" in
13678 "$define")
13679         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13680         case "$d_localtime_r_proto:$usethreads" in
13681         ":define")      d_localtime_r_proto=define
13682                 set d_localtime_r_proto localtime_r $hdrs
13683                 eval $hasproto ;;
13684         *)      ;;
13685         esac
13686         case "$d_localtime_r_proto" in
13687         define)
13688         case "$localtime_r_proto" in
13689         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13690         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13691         esac
13692         case "$localtime_r_proto" in
13693         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13694         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13695         esac
13696         case "$localtime_r_proto" in
13697         ''|0)   d_localtime_r=undef
13698                 localtime_r_proto=0
13699                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13700         * )     case "$localtime_r_proto" in
13701                 REENTRANT_PROTO*) ;;
13702                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13703                 esac
13704                 echo "Prototype: $try" ;;
13705         esac
13706         ;;
13707         *)      case "$usethreads" in
13708                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13709                 esac
13710                 d_localtime_r=undef
13711                 localtime_r_proto=0
13712                 ;;
13713         esac
13714         ;;
13715 *)      localtime_r_proto=0
13716         ;;
13717 esac
13718
13719 : see if localeconv exists
13720 set localeconv d_locconv
13721 eval $inlibc
13722
13723 : see if lockf exists
13724 set lockf d_lockf
13725 eval $inlibc
13726
13727 : see if prototype for lseek is available
13728 echo " "
13729 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13730 eval $hasproto
13731
13732 : see if lstat exists
13733 set lstat d_lstat
13734 eval $inlibc
13735
13736 : see if madvise exists
13737 set madvise d_madvise
13738 eval $inlibc
13739
13740 : see if mblen exists
13741 set mblen d_mblen
13742 eval $inlibc
13743
13744 : see if mbstowcs exists
13745 set mbstowcs d_mbstowcs
13746 eval $inlibc
13747
13748 : see if mbtowc exists
13749 set mbtowc d_mbtowc
13750 eval $inlibc
13751
13752 : see if memchr exists
13753 set memchr d_memchr
13754 eval $inlibc
13755
13756 : see if memcmp exists
13757 set memcmp d_memcmp
13758 eval $inlibc
13759
13760 : see if memcpy exists
13761 set memcpy d_memcpy
13762 eval $inlibc
13763
13764 : see if memmove exists
13765 set memmove d_memmove
13766 eval $inlibc
13767
13768 : see if memset exists
13769 set memset d_memset
13770 eval $inlibc
13771
13772 : see if mkdir exists
13773 set mkdir d_mkdir
13774 eval $inlibc
13775
13776 : see if mkdtemp exists
13777 set mkdtemp d_mkdtemp
13778 eval $inlibc
13779
13780 : see if mkfifo exists
13781 set mkfifo d_mkfifo
13782 eval $inlibc
13783
13784 : see if mkstemp exists
13785 set mkstemp d_mkstemp
13786 eval $inlibc
13787
13788 : see if mkstemps exists
13789 set mkstemps d_mkstemps
13790 eval $inlibc
13791
13792 : see if mktime exists
13793 set mktime d_mktime
13794 eval $inlibc
13795
13796 : see if this is a sys/mman.h system
13797 set sys/mman.h i_sysmman
13798 eval $inhdr
13799
13800 : see if mmap exists
13801 set mmap d_mmap
13802 eval $inlibc
13803 : see what shmat returns
13804 : default to something harmless
13805 mmaptype='void *'
13806 case "$i_sysmman$d_mmap" in
13807 "$define$define")
13808         $cat >mmap.c <<'END'
13809 #include <sys/mman.h>
13810 void *mmap();
13811 END
13812         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
13813                 mmaptype='void *'
13814         else
13815                 mmaptype='caddr_t'
13816         fi
13817         echo "and it returns ($mmaptype)." >&4
13818         ;;
13819 esac
13820
13821
13822
13823 : see if mprotect exists
13824 set mprotect d_mprotect
13825 eval $inlibc
13826
13827 : see if msgctl exists
13828 set msgctl d_msgctl
13829 eval $inlibc
13830
13831 : see if msgget exists
13832 set msgget d_msgget
13833 eval $inlibc
13834
13835 : see if msgsnd exists
13836 set msgsnd d_msgsnd
13837 eval $inlibc
13838
13839 : see if msgrcv exists
13840 set msgrcv d_msgrcv
13841 eval $inlibc
13842
13843 : see how much of the 'msg*(2)' library is present.
13844 h_msg=true
13845 echo " "
13846 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
13847 *"$undef"*) h_msg=false;;
13848 esac
13849 case "$osname" in
13850 freebsd)
13851     case "`ipcs 2>&1`" in
13852     "SVID messages"*"not configured"*)
13853         echo "Your $osname does not have the msg*(2) configured." >&4
13854         h_msg=false
13855         val="$undef"
13856         set msgctl d_msgctl
13857         eval $setvar
13858         set msgget d_msgget
13859         eval $setvar
13860         set msgsnd d_msgsnd
13861         eval $setvar
13862         set msgrcv d_msgrcv
13863         eval $setvar
13864         ;;
13865     esac
13866     ;;
13867 esac
13868 : we could also check for sys/ipc.h ...
13869 if $h_msg && $test `./findhdr sys/msg.h`; then
13870         echo "You have the full msg*(2) library." >&4
13871         val="$define"
13872 else
13873         echo "You don't have the full msg*(2) library." >&4
13874         val="$undef"
13875 fi
13876 set d_msg
13877 eval $setvar
13878
13879
13880 echo " "
13881 echo "Checking to see if your system supports struct msghdr..." >&4
13882 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
13883 eval $hasstruct
13884 case "$d_msghdr_s" in
13885 "$define")      echo "Yes, it does."   ;;
13886 *)              echo "No, it doesn't." ;;
13887 esac
13888
13889
13890 : see if msync exists
13891 set msync d_msync
13892 eval $inlibc
13893
13894 : see if munmap exists
13895 set munmap d_munmap
13896 eval $inlibc
13897
13898 : see if nanosleep exists
13899 set nanosleep d_nanosleep
13900 eval $inlibc
13901
13902 : see if nice exists
13903 set nice d_nice
13904 eval $inlibc
13905
13906 : see if this is a langinfo.h system
13907 set langinfo.h i_langinfo
13908 eval $inhdr
13909
13910 : see if nl_langinfo exists
13911 set nl_langinfo d_nl_langinfo
13912 eval $inlibc
13913
13914 : check for length of character
13915 echo " "
13916 case "$charsize" in
13917 '')
13918         echo "Checking to see how big your characters are (hey, you never know)..." >&4
13919         $cat >try.c <<EOCP
13920 #include <stdio.h>
13921 #$i_stdlib I_STDLIB
13922 #ifdef I_STDLIB
13923 #include <stdlib.h>
13924 #endif
13925 int main()
13926 {
13927     printf("%d\n", (int)sizeof(char));
13928     exit(0);
13929 }
13930 EOCP
13931         set try
13932         if eval $compile_ok; then
13933                 dflt=`$run ./try`
13934         else
13935                 dflt='1'
13936                 echo "(I can't seem to compile the test program.  Guessing...)"
13937         fi
13938         ;;
13939 *)
13940         dflt="$charsize"
13941         ;;
13942 esac
13943 rp="What is the size of a character (in bytes)?"
13944 . ./myread
13945 charsize="$ans"
13946 $rm -f try.c try
13947
13948 : check for volatile keyword
13949 echo " "
13950 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
13951 $cat >try.c <<'EOCP'
13952 int main()
13953 {
13954         typedef struct _goo_struct goo_struct;
13955         goo_struct * volatile goo = ((goo_struct *)0);
13956         struct _goo_struct {
13957                 long long_int;
13958                 int reg_int;
13959                 char char_var;
13960         };
13961         typedef unsigned short foo_t;
13962         char *volatile foo;
13963         volatile int bar;
13964         volatile foo_t blech;
13965         foo = foo;
13966 }
13967 EOCP
13968 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
13969         val="$define"
13970         echo "Yup, it does."
13971 else
13972         val="$undef"
13973         echo "Nope, it doesn't."
13974 fi
13975 set d_volatile
13976 eval $setvar
13977 $rm -f try.*
13978
13979
13980 echo " "
13981 $echo "Choosing the C types to be used for Perl's internal types..." >&4
13982
13983 case "$use64bitint:$d_quad:$quadtype" in
13984 define:define:?*)
13985         ivtype="$quadtype"
13986         uvtype="$uquadtype"
13987         ivsize=8
13988         uvsize=8
13989         ;;
13990 *)      ivtype="long"
13991         uvtype="unsigned long"
13992         ivsize=$longsize
13993         uvsize=$longsize
13994         ;;
13995 esac
13996
13997 case "$uselongdouble:$d_longdbl" in
13998 define:define)
13999         nvtype="long double"
14000         nvsize=$longdblsize
14001         ;;
14002 *)      nvtype=double
14003         nvsize=$doublesize
14004         ;;
14005 esac
14006
14007 $echo "(IV will be "$ivtype", $ivsize bytes)"
14008 $echo "(UV will be "$uvtype", $uvsize bytes)"
14009 $echo "(NV will be "$nvtype", $nvsize bytes)"
14010
14011 $cat >try.c <<EOCP
14012 #$i_inttypes I_INTTYPES
14013 #ifdef I_INTTYPES
14014 #include <inttypes.h>
14015 #endif
14016 #include <stdio.h>
14017 int main() {
14018 #ifdef INT8
14019    int8_t i =  INT8_MAX;
14020   uint8_t u = UINT8_MAX;
14021   printf("int8_t\n");
14022 #endif
14023 #ifdef INT16
14024    int16_t i =  INT16_MAX;
14025   uint16_t i = UINT16_MAX;
14026   printf("int16_t\n");
14027 #endif
14028 #ifdef INT32
14029    int32_t i =  INT32_MAX;
14030   uint32_t u = UINT32_MAX;
14031   printf("int32_t\n");
14032 #endif
14033 }
14034 EOCP
14035
14036 case "$i8type" in
14037 '')     case "$charsize" in
14038         1)      i8type=char
14039                 u8type="unsigned char"
14040                 i8size=$charsize
14041                 u8size=$charsize
14042                 ;;
14043         esac
14044         ;;
14045 esac
14046 case "$i8type" in
14047 '')     set try -DINT8
14048         if eval $compile; then
14049                 case "`$run ./try`" in
14050                 int8_t) i8type=int8_t
14051                         u8type=uint8_t
14052                         i8size=1
14053                         u8size=1
14054                         ;;
14055                 esac
14056         fi
14057         ;;
14058 esac
14059 case "$i8type" in
14060 '')     if $test $charsize -ge 1; then
14061                 i8type=char
14062                 u8type="unsigned char"
14063                 i8size=$charsize
14064                 u8size=$charsize
14065         fi
14066         ;;
14067 esac
14068
14069 case "$i16type" in
14070 '')     case "$shortsize" in
14071         2)      i16type=short
14072                 u16type="unsigned short"
14073                 i16size=$shortsize
14074                 u16size=$shortsize
14075                 ;;
14076         esac
14077         ;;
14078 esac
14079 case "$i16type" in
14080 '')     set try -DINT16
14081         if eval $compile; then
14082                 case "`$run ./try`" in
14083                 int16_t)
14084                         i16type=int16_t
14085                         u16type=uint16_t
14086                         i16size=2
14087                         u16size=2
14088                         ;;
14089                 esac
14090         fi
14091         ;;
14092 esac
14093 case "$i16type" in
14094 '')     if $test $shortsize -ge 2; then
14095                 i16type=short
14096                 u16type="unsigned short"
14097                 i16size=$shortsize
14098                 u16size=$shortsize
14099         fi
14100         ;;
14101 esac
14102
14103 case "$i32type" in
14104 '')     case "$longsize" in
14105         4)      i32type=long
14106                 u32type="unsigned long"
14107                 i32size=$longsize
14108                 u32size=$longsize
14109                 ;;
14110         *)      case "$intsize" in
14111                 4)      i32type=int
14112                         u32type="unsigned int"
14113                         i32size=$intsize
14114                         u32size=$intsize
14115                         ;;
14116                 esac
14117                 ;;
14118         esac
14119         ;;
14120 esac
14121 case "$i32type" in
14122 '')     set try -DINT32
14123         if eval $compile; then
14124                 case "`$run ./try`" in
14125                 int32_t)
14126                         i32type=int32_t
14127                         u32type=uint32_t
14128                         i32size=4
14129                         u32size=4
14130                         ;;
14131                 esac
14132         fi
14133         ;;
14134 esac
14135 case "$i32type" in
14136 '')     if $test $intsize -ge 4; then
14137                 i32type=int
14138                 u32type="unsigned int"
14139                 i32size=$intsize
14140                 u32size=$intsize
14141         fi
14142         ;;
14143 esac
14144
14145 case "$i64type" in
14146 '')     case "$d_quad:$quadtype" in
14147         define:?*)
14148                 i64type="$quadtype"
14149                 u64type="$uquadtype"
14150                 i64size=8
14151                 u64size=8
14152                 ;;
14153         esac
14154         ;;
14155 esac
14156
14157 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14158 : volatile so that the compiler has to store it out to memory.
14159 if test X"$d_volatile" = X"$define"; then
14160         volatile=volatile
14161 fi
14162 $cat <<EOP >try.c
14163 #include <stdio.h>
14164 #$i_stdlib I_STDLIB
14165 #ifdef I_STDLIB
14166 #include <stdlib.h>
14167 #endif
14168 #include <sys/types.h>
14169 #include <signal.h>
14170 #ifdef SIGFPE
14171 $volatile int bletched = 0;
14172 $signal_t blech(s) int s; { bletched = 1; }
14173 #endif
14174 int main() {
14175     $uvtype u = 0;
14176     $nvtype d;
14177     int     n = 8 * $uvsize;
14178     int     i;
14179 #ifdef SIGFPE
14180     signal(SIGFPE, blech);
14181 #endif
14182
14183     for (i = 0; i < n; i++) {
14184       u = u << 1 | ($uvtype)1;
14185       d = ($nvtype)u;
14186       if (($uvtype)d != u)
14187         break;
14188       if (d <= 0)
14189         break;
14190       d = ($nvtype)(u - 1);
14191       if (($uvtype)d != (u - 1))
14192         break;
14193 #ifdef SIGFPE
14194       if (bletched) {
14195         break;
14196 #endif
14197       } 
14198     }
14199     printf("%d\n", ((i == n) ? -n : i));
14200     exit(0);
14201 }
14202 EOP
14203 set try
14204
14205 d_nv_preserves_uv="$undef"
14206 if eval $compile; then
14207         nv_preserves_uv_bits="`$run ./try`"
14208 fi
14209 case "$nv_preserves_uv_bits" in
14210 \-[1-9]*)       
14211         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14212         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14213         d_nv_preserves_uv="$define"
14214         ;;
14215 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14216         d_nv_preserves_uv="$undef" ;;
14217 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14218         nv_preserves_uv_bits="$undef" ;;
14219 esac
14220
14221 $rm -f try.* try
14222
14223
14224 : check for off64_t
14225 echo " "
14226 echo "Checking to see if you have off64_t..." >&4
14227 $cat >try.c <<EOCP
14228 #include <sys/types.h>
14229 #include <unistd.h>
14230 int main() { off64_t x = 7; }
14231 EOCP
14232 set try
14233 if eval $compile; then
14234         val="$define"
14235         echo "You have off64_t."
14236 else
14237         val="$undef"
14238         echo "You do not have off64_t."
14239         case "$lseeksize" in
14240         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14241         esac
14242 fi
14243 $rm -f try.* try
14244 set d_off64_t
14245 eval $setvar
14246
14247 : how to create joinable pthreads
14248 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14249         echo " "
14250         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14251         $cat >try.c <<'EOCP'
14252 #include <pthread.h>
14253 int main() {
14254     int detachstate = JOINABLE;
14255 }
14256 EOCP
14257         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14258         if eval $compile; then
14259                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14260                 val="$undef" # Yes, undef.
14261                 set d_old_pthread_create_joinable
14262                 eval $setvar
14263                 val=""
14264                 set old_pthread_create_joinable
14265                 eval $setvar
14266         else
14267                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14268                 if eval $compile; then
14269                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14270                         val="$define"
14271                         set d_old_pthread_create_joinable
14272                         eval $setvar
14273                         val=PTHREAD_CREATE_UNDETACHED
14274                         set old_pthread_create_joinable
14275                         eval $setvar
14276                 else            
14277                         set try -DJOINABLE=__UNDETACHED
14278                         if eval $compile; then
14279                                 echo "You seem to use __UNDETACHED." >&4
14280                                 val="$define"
14281                                 set d_old_pthread_create_joinable
14282                                 eval $setvar
14283                                 val=__UNDETACHED
14284                                 set old_pthread_create_joinable
14285                                 eval $setvar
14286                         else
14287                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14288                                 val="$define"
14289                                 set d_old_pthread_create_joinable
14290                                 eval $setvar
14291                                 val=0
14292                                 set old_pthread_create_joinable
14293                                 eval $setvar
14294                         fi
14295                 fi
14296         fi
14297         $rm -f try try.*
14298 else
14299     d_old_pthread_create_joinable="$undef"
14300     old_pthread_create_joinable=""
14301 fi
14302
14303 : see if pause exists
14304 set pause d_pause
14305 eval $inlibc
14306
14307 : see if pipe exists
14308 set pipe d_pipe
14309 eval $inlibc
14310
14311 : see if poll exists
14312 set poll d_poll
14313 eval $inlibc
14314
14315 : see if readlink exists
14316 set readlink d_readlink
14317 eval $inlibc
14318
14319 echo " "
14320 procselfexe=''
14321 val="$undef"
14322 case "$d_readlink" in
14323 "$define")
14324         if $issymlink /proc/self/exe ; then
14325                 $ls -l /proc/self/exe > reflect
14326                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14327                         echo "You have Linux-like /proc/self/exe."
14328                         procselfexe='"/proc/self/exe"'
14329                         val="$define"
14330                 fi
14331         fi
14332         if $issymlink /proc/curproc/file ; then
14333                 $ls -l /proc/curproc/file > reflect
14334                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14335                         echo "You have BSD-like /proc/curproc/file."
14336                         procselfexe='"/proc/curproc/file"'
14337                         val="$define"
14338                 fi
14339         fi
14340         ;;
14341 esac
14342 $rm -f reflect
14343 set d_procselfexe
14344 eval $setvar
14345
14346 : see whether the pthread_atfork exists
14347 $cat >try.c <<EOP
14348 #include <pthread.h>
14349 #include <stdio.h>
14350 int main() {
14351 #ifdef  PTHREAD_ATFORK
14352         pthread_atfork(NULL,NULL,NULL);
14353 #endif
14354 }
14355 EOP
14356
14357 : see if pthread_atfork exists
14358 set try -DPTHREAD_ATFORK
14359 if eval $compile; then
14360     val="$define"
14361 else
14362     val="$undef"
14363 fi
14364 case "$usethreads" in
14365 $define)
14366         case "$val" in
14367         $define) echo 'pthread_atfork found.' >&4        ;;
14368         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14369         esac
14370 esac
14371 set d_pthread_atfork
14372 eval $setvar
14373
14374
14375 : see whether the various POSIXish _yields exist
14376 $cat >try.c <<EOP
14377 #include <pthread.h>
14378 #include <stdio.h>
14379 int main() {
14380 #ifdef SCHED_YIELD
14381         sched_yield();
14382 #else
14383 #ifdef PTHREAD_YIELD
14384         pthread_yield();
14385 #else
14386 #ifdef PTHREAD_YIELD_NULL
14387         pthread_yield(NULL);
14388 #endif
14389 #endif
14390 #endif
14391 }
14392 EOP
14393 : see if sched_yield exists
14394 set try -DSCHED_YIELD
14395 if eval $compile; then
14396     val="$define"
14397     sched_yield='sched_yield()'
14398 else
14399     val="$undef"
14400 fi
14401 case "$usethreads" in
14402 $define)
14403         case "$val" in
14404         $define) echo 'sched_yield() found.' >&4        ;;
14405         *)       echo 'sched_yield() NOT found.' >&4    ;;
14406         esac
14407 esac
14408 set d_sched_yield
14409 eval $setvar
14410
14411 : see if pthread_yield exists
14412 set try -DPTHREAD_YIELD
14413 if eval $compile; then
14414     val="$define"
14415     case "$sched_yield" in
14416     '') sched_yield='pthread_yield()' ;;
14417     esac
14418 else
14419     set try -DPTHREAD_YIELD_NULL
14420     if eval $compile; then
14421         val="$define"
14422         case "$sched_yield" in
14423         '') sched_yield='pthread_yield(NULL)' ;;
14424         esac
14425     else
14426         val="$undef"
14427     fi
14428 fi
14429 case "$usethreads" in
14430 $define)
14431         case "$val" in
14432         $define) echo 'pthread_yield() found.' >&4      ;;
14433         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14434         esac
14435         ;;
14436 esac
14437 set d_pthread_yield
14438 eval $setvar
14439
14440 case "$sched_yield" in
14441 '') sched_yield=undef ;;
14442 esac
14443
14444 $rm -f try try.*
14445
14446 : see if random_r exists
14447 set random_r d_random_r
14448 eval $inlibc
14449 case "$d_random_r" in
14450 "$define")
14451         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14452         case "$d_random_r_proto:$usethreads" in
14453         ":define")      d_random_r_proto=define
14454                 set d_random_r_proto random_r $hdrs
14455                 eval $hasproto ;;
14456         *)      ;;
14457         esac
14458         case "$d_random_r_proto" in
14459         define)
14460         case "$random_r_proto" in
14461         ''|0) try='int random_r(int*, struct random_data*);'
14462         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14463         esac
14464         case "$random_r_proto" in
14465         ''|0) try='int random_r(long*, struct random_data*);'
14466         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14467         esac
14468         case "$random_r_proto" in
14469         ''|0) try='int random_r(struct random_data*, int32_t*);'
14470         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14471         esac
14472         case "$random_r_proto" in
14473         ''|0)   d_random_r=undef
14474                 random_r_proto=0
14475                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14476         * )     case "$random_r_proto" in
14477                 REENTRANT_PROTO*) ;;
14478                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14479                 esac
14480                 echo "Prototype: $try" ;;
14481         esac
14482         ;;
14483         *)      case "$usethreads" in
14484                 define) echo "random_r has no prototype, not using it." >&4 ;;
14485                 esac
14486                 d_random_r=undef
14487                 random_r_proto=0
14488                 ;;
14489         esac
14490         ;;
14491 *)      random_r_proto=0
14492         ;;
14493 esac
14494
14495 : see if readdir and friends exist
14496 set readdir d_readdir
14497 eval $inlibc
14498 set seekdir d_seekdir
14499 eval $inlibc
14500 set telldir d_telldir
14501 eval $inlibc
14502 set rewinddir d_rewinddir
14503 eval $inlibc
14504
14505 : see if readdir64_r exists
14506 set readdir64_r d_readdir64_r
14507 eval $inlibc
14508 case "$d_readdir64_r" in
14509 "$define")
14510         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14511         case "$d_readdir64_r_proto:$usethreads" in
14512         ":define")      d_readdir64_r_proto=define
14513                 set d_readdir64_r_proto readdir64_r $hdrs
14514                 eval $hasproto ;;
14515         *)      ;;
14516         esac
14517         case "$d_readdir64_r_proto" in
14518         define)
14519         case "$readdir64_r_proto" in
14520         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14521         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14522         esac
14523         case "$readdir64_r_proto" in
14524         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14525         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14526         esac
14527         case "$readdir64_r_proto" in
14528         ''|0)   d_readdir64_r=undef
14529                 readdir64_r_proto=0
14530                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14531         * )     case "$readdir64_r_proto" in
14532                 REENTRANT_PROTO*) ;;
14533                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14534                 esac
14535                 echo "Prototype: $try" ;;
14536         esac
14537         ;;
14538         *)      case "$usethreads" in
14539                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14540                 esac
14541                 d_readdir64_r=undef
14542                 readdir64_r_proto=0
14543                 ;;
14544         esac
14545         ;;
14546 *)      readdir64_r_proto=0
14547         ;;
14548 esac
14549
14550 : see if readdir_r exists
14551 set readdir_r d_readdir_r
14552 eval $inlibc
14553 case "$d_readdir_r" in
14554 "$define")
14555         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14556         case "$d_readdir_r_proto:$usethreads" in
14557         ":define")      d_readdir_r_proto=define
14558                 set d_readdir_r_proto readdir_r $hdrs
14559                 eval $hasproto ;;
14560         *)      ;;
14561         esac
14562         case "$d_readdir_r_proto" in
14563         define)
14564         case "$readdir_r_proto" in
14565         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14566         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14567         esac
14568         case "$readdir_r_proto" in
14569         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14570         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14571         esac
14572         case "$readdir_r_proto" in
14573         ''|0)   d_readdir_r=undef
14574                 readdir_r_proto=0
14575                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14576         * )     case "$readdir_r_proto" in
14577                 REENTRANT_PROTO*) ;;
14578                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14579                 esac
14580                 echo "Prototype: $try" ;;
14581         esac
14582         ;;
14583         *)      case "$usethreads" in
14584                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14585                 esac
14586                 d_readdir_r=undef
14587                 readdir_r_proto=0
14588                 ;;
14589         esac
14590         ;;
14591 *)      readdir_r_proto=0
14592         ;;
14593 esac
14594
14595 : see if readv exists
14596 set readv d_readv
14597 eval $inlibc
14598
14599 : see if recvmsg exists
14600 set recvmsg d_recvmsg
14601 eval $inlibc
14602
14603 : see if rename exists
14604 set rename d_rename
14605 eval $inlibc
14606
14607 : see if rmdir exists
14608 set rmdir d_rmdir
14609 eval $inlibc
14610
14611 : see if memory.h is available.
14612 val=''
14613 set memory.h val
14614 eval $inhdr
14615
14616 : See if it conflicts with string.h
14617 case "$val" in
14618 $define)
14619         case "$strings" in
14620         '') ;;
14621         *)
14622                 $cppstdin $cppflags $cppminus < $strings > mem.h
14623                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14624                         echo " "
14625                         echo "We won't be including <memory.h>."
14626                         val="$undef"
14627                 fi
14628                 $rm -f mem.h
14629                 ;;
14630         esac
14631 esac
14632 set i_memory
14633 eval $setvar
14634
14635 : can bcopy handle overlapping blocks?
14636 echo " "
14637 val="$undef"
14638 case "$d_memmove" in
14639 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14640 *)      case "$d_bcopy" in
14641         "$define")
14642                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14643                 $cat >try.c <<EOCP
14644 #$i_memory I_MEMORY
14645 #$i_stdlib I_STDLIB
14646 #$i_string I_STRING
14647 #$i_unistd I_UNISTD
14648 EOCP
14649         $cat >>try.c <<'EOCP'
14650 #include <stdio.h>
14651 #ifdef I_MEMORY
14652 #  include <memory.h>
14653 #endif
14654 #ifdef I_STDLIB
14655 #  include <stdlib.h>
14656 #endif
14657 #ifdef I_STRING
14658 #  include <string.h>
14659 #else
14660 #  include <strings.h>
14661 #endif
14662 #ifdef I_UNISTD
14663 #  include <unistd.h>  /* Needed for NetBSD */
14664 #endif
14665 int main()
14666 {
14667 char buf[128], abc[128];
14668 char *b;
14669 int len;
14670 int off;
14671 int align;
14672
14673 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14674    try to store the string in read-only memory. */
14675 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
14676
14677 for (align = 7; align >= 0; align--) {
14678         for (len = 36; len; len--) {
14679                 b = buf+align;
14680                 bcopy(abc, b, len);
14681                 for (off = 1; off <= len; off++) {
14682                         bcopy(b, b+off, len);
14683                         bcopy(b+off, b, len);
14684                         if (bcmp(b, abc, len))
14685                                 exit(1);
14686                 }
14687         }
14688 }
14689 exit(0);
14690 }
14691 EOCP
14692                 set try
14693                 if eval $compile_ok; then
14694                         if ./try 2>/dev/null; then
14695                                 echo "Yes, it can."
14696                                 val="$define"
14697                         else
14698                                 echo "It can't, sorry."
14699                         fi
14700                 else
14701                         echo "(I can't compile the test program, so we'll assume not...)"
14702                 fi
14703                 ;;
14704         esac
14705         $rm -f try.* try core
14706         ;;
14707 esac
14708 set d_safebcpy
14709 eval $setvar
14710
14711 : can memcpy handle overlapping blocks?
14712 echo " "
14713 val="$undef"
14714 case "$d_memmove" in
14715 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
14716 *)      case "$d_memcpy" in
14717         "$define")
14718                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
14719                 $cat >try.c <<EOCP
14720 #$i_memory I_MEMORY
14721 #$i_stdlib I_STDLIB
14722 #$i_string I_STRING
14723 #$i_unistd I_UNISTD
14724 EOCP
14725         $cat >>try.c <<'EOCP'
14726 #include <stdio.h>
14727 #ifdef I_MEMORY
14728 #  include <memory.h>
14729 #endif
14730 #ifdef I_STDLIB
14731 #  include <stdlib.h>
14732 #endif
14733 #ifdef I_STRING
14734 #  include <string.h>
14735 #else
14736 #  include <strings.h>
14737 #endif
14738 #ifdef I_UNISTD
14739 #  include <unistd.h>  /* Needed for NetBSD */
14740 #endif
14741 int main()
14742 {
14743 char buf[128], abc[128];
14744 char *b;
14745 int len;
14746 int off;
14747 int align;
14748
14749 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14750    try to store the string in read-only memory. */
14751 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
14752
14753 for (align = 7; align >= 0; align--) {
14754         for (len = 36; len; len--) {
14755                 b = buf+align;
14756                 memcpy(b, abc, len);
14757                 for (off = 1; off <= len; off++) {
14758                         memcpy(b+off, b, len);
14759                         memcpy(b, b+off, len);
14760                         if (memcmp(b, abc, len))
14761                                 exit(1);
14762                 }
14763         }
14764 }
14765 exit(0);
14766 }
14767 EOCP
14768                 set try
14769                 if eval $compile_ok; then
14770                         if ./try 2>/dev/null; then
14771                                 echo "Yes, it can."
14772                                 val="$define"
14773                         else
14774                                 echo "It can't, sorry."
14775                         fi
14776                 else
14777                         echo "(I can't compile the test program, so we'll assume not...)"
14778                 fi
14779                 ;;
14780         esac
14781         $rm -f try.* try core
14782         ;;
14783 esac
14784 set d_safemcpy
14785 eval $setvar
14786
14787 : can memcmp be trusted to compare relative magnitude?
14788 val="$undef"
14789 case "$d_memcmp" in
14790 "$define")
14791         echo " "
14792         echo "Checking if your memcmp() can compare relative magnitude..." >&4
14793         $cat >try.c <<EOCP
14794 #$i_memory I_MEMORY
14795 #$i_stdlib I_STDLIB
14796 #$i_string I_STRING
14797 #$i_unistd I_UNISTD
14798 EOCP
14799         $cat >>try.c <<'EOCP'
14800 #include <stdio.h>
14801 #ifdef I_MEMORY
14802 #  include <memory.h>
14803 #endif
14804 #ifdef I_STDLIB
14805 #include <stdlib.h>
14806 #endif
14807 #ifdef I_STRING
14808 #  include <string.h>
14809 #else
14810 #  include <strings.h>
14811 #endif
14812 #ifdef I_UNISTD
14813 #  include <unistd.h>  /* Needed for NetBSD */
14814 #endif
14815 int main()
14816 {
14817 char a = -1;
14818 char b = 0;
14819 if ((a < b) && memcmp(&a, &b, 1) < 0)
14820         exit(1);
14821 exit(0);
14822 }
14823 EOCP
14824         set try
14825         if eval $compile_ok; then
14826                 if $run ./try 2>/dev/null; then
14827                         echo "Yes, it can."
14828                         val="$define"
14829                 else
14830                         echo "No, it can't (it uses signed chars)."
14831                 fi
14832         else
14833                 echo "(I can't compile the test program, so we'll assume not...)"
14834         fi
14835         ;;
14836 esac
14837 $rm -f try.* try core
14838 set d_sanemcmp
14839 eval $setvar
14840
14841 : see if prototype for sbrk is available
14842 echo " "
14843 set d_sbrkproto sbrk $i_unistd unistd.h
14844 eval $hasproto
14845
14846 : see if select exists
14847 set select d_select
14848 eval $inlibc
14849
14850 : see if semctl exists
14851 set semctl d_semctl
14852 eval $inlibc
14853
14854 : see if semget exists
14855 set semget d_semget
14856 eval $inlibc
14857
14858 : see if semop exists
14859 set semop d_semop
14860 eval $inlibc
14861
14862 : see how much of the 'sem*(2)' library is present.
14863 h_sem=true
14864 echo " "
14865 case "$d_semctl$d_semget$d_semop" in
14866 *"$undef"*) h_sem=false;;
14867 esac
14868 case "$osname" in
14869 freebsd)
14870     case "`ipcs 2>&1`" in
14871     "SVID messages"*"not configured"*)
14872         echo "Your $osname does not have the sem*(2) configured." >&4
14873         h_sem=false
14874         val="$undef"
14875         set semctl d_semctl
14876         eval $setvar
14877         set semget d_semget
14878         eval $setvar
14879         set semop d_semop
14880         eval $setvar
14881         ;;
14882     esac
14883     ;;
14884 esac
14885 : we could also check for sys/ipc.h ...
14886 if $h_sem && $test `./findhdr sys/sem.h`; then
14887         echo "You have the full sem*(2) library." >&4
14888         val="$define"
14889 else
14890         echo "You don't have the full sem*(2) library." >&4
14891         val="$undef"
14892 fi
14893 set d_sem
14894 eval $setvar
14895
14896 : see whether sys/sem.h defines union semun
14897 echo " "
14898 $cat > try.c <<'END'
14899 #include <sys/types.h>
14900 #include <sys/ipc.h>
14901 #include <sys/sem.h>
14902 int main () { union semun semun; semun.buf = 0; }
14903 END
14904 set try
14905 if eval $compile; then
14906     echo "You have union semun in <sys/sem.h>." >&4
14907     val="$define"
14908 else
14909     echo "You do not have union semun in <sys/sem.h>." >&4
14910     val="$undef"
14911 fi
14912 $rm -f try try.c try.h
14913 set d_union_semun
14914 eval $setvar
14915
14916 : see how to do semctl IPC_STAT
14917 case "$d_sem" in
14918 $define)
14919     : see whether semctl IPC_STAT can use union semun
14920     echo " "
14921     $cat > try.h <<END
14922 #ifndef S_IRUSR
14923 #   ifdef S_IREAD
14924 #       define S_IRUSR S_IREAD
14925 #       define S_IWUSR S_IWRITE
14926 #       define S_IXUSR S_IEXEC
14927 #   else
14928 #       define S_IRUSR 0400
14929 #       define S_IWUSR 0200
14930 #       define S_IXUSR 0100
14931 #   endif
14932 #   define S_IRGRP (S_IRUSR>>3)
14933 #   define S_IWGRP (S_IWUSR>>3)
14934 #   define S_IXGRP (S_IXUSR>>3)
14935 #   define S_IROTH (S_IRUSR>>6)
14936 #   define S_IWOTH (S_IWUSR>>6)
14937 #   define S_IXOTH (S_IXUSR>>6)
14938 #endif
14939 #ifndef S_IRWXU
14940 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
14941 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
14942 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
14943 #endif
14944 END
14945
14946     $cat > try.c <<END
14947 #include <sys/types.h>
14948 #include <sys/ipc.h>
14949 #include <sys/sem.h>
14950 #include <sys/stat.h>
14951 #include <stdio.h>
14952 #include <errno.h>
14953 #include "try.h"
14954 #ifndef errno
14955 extern int errno;
14956 #endif
14957 #$d_union_semun HAS_UNION_SEMUN
14958 int main() {
14959     union semun
14960 #ifndef HAS_UNION_SEMUN
14961     {
14962         int val;
14963         struct semid_ds *buf;
14964         unsigned short *array;
14965     }
14966 #endif
14967     arg;
14968     int sem, st;
14969
14970 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
14971     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14972     if (sem > -1) {
14973         struct semid_ds argbuf;
14974         arg.buf = &argbuf;
14975 #       ifdef IPC_STAT
14976         st = semctl(sem, 0, IPC_STAT, arg);
14977         if (st == 0)
14978             printf("semun\n");
14979         else
14980 #       endif /* IPC_STAT */
14981             printf("semctl IPC_STAT failed: errno = %d\n", errno);
14982 #       ifdef IPC_RMID
14983         if (semctl(sem, 0, IPC_RMID, arg) != 0)
14984 #       endif /* IPC_RMID */
14985             printf("semctl IPC_RMID failed: errno = %d\n", errno);
14986     } else
14987 #endif /* IPC_PRIVATE && ... */
14988         printf("semget failed: errno = %d\n", errno);
14989   return 0;
14990 }
14991 END
14992     val="$undef"
14993     set try
14994     if eval $compile; then
14995         xxx=`$run ./try`
14996         case "$xxx" in
14997         semun) val="$define" ;;
14998         esac
14999     fi
15000     $rm -f try try.c
15001     set d_semctl_semun
15002     eval $setvar
15003     case "$d_semctl_semun" in
15004     $define)
15005         echo "You can use union semun for semctl IPC_STAT." >&4
15006         also='also'
15007         ;;
15008     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15009         also=''
15010         ;;
15011     esac
15012
15013     : see whether semctl IPC_STAT can use struct semid_ds pointer
15014     $cat > try.c <<'END'
15015 #include <sys/types.h>
15016 #include <sys/ipc.h>
15017 #include <sys/sem.h>
15018 #include <sys/stat.h>
15019 #include "try.h"
15020 #include <stdio.h>
15021 #include <errno.h>
15022 #ifndef errno
15023 extern int errno;
15024 #endif
15025 int main() {
15026     struct semid_ds arg;
15027     int sem, st;
15028
15029 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15030     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15031     if (sem > -1) {
15032 #       ifdef IPC_STAT
15033         st = semctl(sem, 0, IPC_STAT, &arg);
15034         if (st == 0)
15035             printf("semid_ds\n");
15036         else
15037 #       endif /* IPC_STAT */
15038             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15039 #       ifdef IPC_RMID
15040         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15041 #       endif /* IPC_RMID */
15042             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15043     } else
15044 #endif /* IPC_PRIVATE && ... */
15045         printf("semget failed: errno = %d\n", errno);
15046
15047     return 0;
15048 }
15049 END
15050     val="$undef"
15051     set try
15052     if eval $compile; then
15053         xxx=`$run ./try`
15054         case "$xxx" in
15055         semid_ds) val="$define" ;;
15056         esac
15057     fi
15058     $rm -f try try.c
15059     set d_semctl_semid_ds
15060     eval $setvar
15061     case "$d_semctl_semid_ds" in
15062     $define)
15063         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15064         ;;
15065     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15066         ;;
15067     esac
15068     $rm -f try.h
15069     ;;
15070 *)  val="$undef"
15071
15072     # We do not have the full sem*(2) library, so assume we can not
15073     # use either.
15074
15075     set d_semctl_semun
15076     eval $setvar
15077
15078     set d_semctl_semid_ds
15079     eval $setvar
15080     ;;
15081 esac
15082
15083 : see if sendmsg exists
15084 set sendmsg d_sendmsg
15085 eval $inlibc
15086
15087 : see if setegid exists
15088 set setegid d_setegid
15089 eval $inlibc
15090
15091 : see if seteuid exists
15092 set seteuid d_seteuid
15093 eval $inlibc
15094
15095 : see if setgrent exists
15096 set setgrent d_setgrent
15097 eval $inlibc
15098
15099 : see if setgrent_r exists
15100 set setgrent_r d_setgrent_r
15101 eval $inlibc
15102 case "$d_setgrent_r" in
15103 "$define")
15104         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15105         case "$d_setgrent_r_proto:$usethreads" in
15106         ":define")      d_setgrent_r_proto=define
15107                 set d_setgrent_r_proto setgrent_r $hdrs
15108                 eval $hasproto ;;
15109         *)      ;;
15110         esac
15111         case "$d_setgrent_r_proto" in
15112         define)
15113         case "$setgrent_r_proto" in
15114         ''|0) try='int setgrent_r(FILE**);'
15115         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15116         esac
15117         case "$setgrent_r_proto" in
15118         ''|0) try='void setgrent_r(FILE**);'
15119         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15120         esac
15121         case "$setgrent_r_proto" in
15122         ''|0)   d_setgrent_r=undef
15123                 setgrent_r_proto=0
15124                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15125         * )     case "$setgrent_r_proto" in
15126                 REENTRANT_PROTO*) ;;
15127                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15128                 esac
15129                 echo "Prototype: $try" ;;
15130         esac
15131         ;;
15132         *)      case "$usethreads" in
15133                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15134                 esac
15135                 d_setgrent_r=undef
15136                 setgrent_r_proto=0
15137                 ;;
15138         esac
15139         ;;
15140 *)      setgrent_r_proto=0
15141         ;;
15142 esac
15143
15144 : see if sethostent exists
15145 set sethostent d_sethent
15146 eval $inlibc
15147
15148 : see if sethostent_r exists
15149 set sethostent_r d_sethostent_r
15150 eval $inlibc
15151 case "$d_sethostent_r" in
15152 "$define")
15153         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15154         case "$d_sethostent_r_proto:$usethreads" in
15155         ":define")      d_sethostent_r_proto=define
15156                 set d_sethostent_r_proto sethostent_r $hdrs
15157                 eval $hasproto ;;
15158         *)      ;;
15159         esac
15160         case "$d_sethostent_r_proto" in
15161         define)
15162         case "$sethostent_r_proto" in
15163         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15164         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15165         esac
15166         case "$sethostent_r_proto" in
15167         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15168         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15169         esac
15170         case "$sethostent_r_proto" in
15171         ''|0)   d_sethostent_r=undef
15172                 sethostent_r_proto=0
15173                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15174         * )     case "$sethostent_r_proto" in
15175                 REENTRANT_PROTO*) ;;
15176                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15177                 esac
15178                 echo "Prototype: $try" ;;
15179         esac
15180         ;;
15181         *)      case "$usethreads" in
15182                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15183                 esac
15184                 d_sethostent_r=undef
15185                 sethostent_r_proto=0
15186                 ;;
15187         esac
15188         ;;
15189 *)      sethostent_r_proto=0
15190         ;;
15191 esac
15192
15193 : see if setitimer exists
15194 set setitimer d_setitimer
15195 eval $inlibc
15196
15197 : see if setlinebuf exists
15198 set setlinebuf d_setlinebuf
15199 eval $inlibc
15200
15201 : see if setlocale exists
15202 set setlocale d_setlocale
15203 eval $inlibc
15204
15205 : see if locale.h is available
15206 set locale.h i_locale
15207 eval $inhdr
15208
15209 : see if setlocale_r exists
15210 set setlocale_r d_setlocale_r
15211 eval $inlibc
15212 case "$d_setlocale_r" in
15213 "$define")
15214         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15215         case "$d_setlocale_r_proto:$usethreads" in
15216         ":define")      d_setlocale_r_proto=define
15217                 set d_setlocale_r_proto setlocale_r $hdrs
15218                 eval $hasproto ;;
15219         *)      ;;
15220         esac
15221         case "$d_setlocale_r_proto" in
15222         define)
15223         case "$setlocale_r_proto" in
15224         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15225         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15226         esac
15227         case "$setlocale_r_proto" in
15228         ''|0)   d_setlocale_r=undef
15229                 setlocale_r_proto=0
15230                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15231         * )     case "$setlocale_r_proto" in
15232                 REENTRANT_PROTO*) ;;
15233                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15234                 esac
15235                 echo "Prototype: $try" ;;
15236         esac
15237         ;;
15238         *)      case "$usethreads" in
15239                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15240                 esac
15241                 d_setlocale_r=undef
15242                 setlocale_r_proto=0
15243                 ;;
15244         esac
15245         ;;
15246 *)      setlocale_r_proto=0
15247         ;;
15248 esac
15249
15250 : see if setnetent exists
15251 set setnetent d_setnent
15252 eval $inlibc
15253
15254 : see if setnetent_r exists
15255 set setnetent_r d_setnetent_r
15256 eval $inlibc
15257 case "$d_setnetent_r" in
15258 "$define")
15259         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15260         case "$d_setnetent_r_proto:$usethreads" in
15261         ":define")      d_setnetent_r_proto=define
15262                 set d_setnetent_r_proto setnetent_r $hdrs
15263                 eval $hasproto ;;
15264         *)      ;;
15265         esac
15266         case "$d_setnetent_r_proto" in
15267         define)
15268         case "$setnetent_r_proto" in
15269         ''|0) try='int setnetent_r(int, struct netent_data*);'
15270         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15271         esac
15272         case "$setnetent_r_proto" in
15273         ''|0) try='void setnetent_r(int, struct netent_data*);'
15274         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15275         esac
15276         case "$setnetent_r_proto" in
15277         ''|0)   d_setnetent_r=undef
15278                 setnetent_r_proto=0
15279                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15280         * )     case "$setnetent_r_proto" in
15281                 REENTRANT_PROTO*) ;;
15282                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15283                 esac
15284                 echo "Prototype: $try" ;;
15285         esac
15286         ;;
15287         *)      case "$usethreads" in
15288                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15289                 esac
15290                 d_setnetent_r=undef
15291                 setnetent_r_proto=0
15292                 ;;
15293         esac
15294         ;;
15295 *)      setnetent_r_proto=0
15296         ;;
15297 esac
15298
15299 : see if setprotoent exists
15300 set setprotoent d_setpent
15301 eval $inlibc
15302
15303 : see if setpgid exists
15304 set setpgid d_setpgid
15305 eval $inlibc
15306
15307 : see if setpgrp2 exists
15308 set setpgrp2 d_setpgrp2
15309 eval $inlibc
15310
15311 : see if setpriority exists
15312 set setpriority d_setprior
15313 eval $inlibc
15314
15315 : see if setproctitle exists
15316 set setproctitle d_setproctitle
15317 eval $inlibc
15318
15319 : see if setprotoent_r exists
15320 set setprotoent_r d_setprotoent_r
15321 eval $inlibc
15322 case "$d_setprotoent_r" in
15323 "$define")
15324         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15325         case "$d_setprotoent_r_proto:$usethreads" in
15326         ":define")      d_setprotoent_r_proto=define
15327                 set d_setprotoent_r_proto setprotoent_r $hdrs
15328                 eval $hasproto ;;
15329         *)      ;;
15330         esac
15331         case "$d_setprotoent_r_proto" in
15332         define)
15333         case "$setprotoent_r_proto" in
15334         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15335         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15336         esac
15337         case "$setprotoent_r_proto" in
15338         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15339         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15340         esac
15341         case "$setprotoent_r_proto" in
15342         ''|0)   d_setprotoent_r=undef
15343                 setprotoent_r_proto=0
15344                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15345         * )     case "$setprotoent_r_proto" in
15346                 REENTRANT_PROTO*) ;;
15347                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15348                 esac
15349                 echo "Prototype: $try" ;;
15350         esac
15351         ;;
15352         *)      case "$usethreads" in
15353                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15354                 esac
15355                 d_setprotoent_r=undef
15356                 setprotoent_r_proto=0
15357                 ;;
15358         esac
15359         ;;
15360 *)      setprotoent_r_proto=0
15361         ;;
15362 esac
15363
15364 : see if setpwent exists
15365 set setpwent d_setpwent
15366 eval $inlibc
15367
15368 : see if setpwent_r exists
15369 set setpwent_r d_setpwent_r
15370 eval $inlibc
15371 case "$d_setpwent_r" in
15372 "$define")
15373         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15374         case "$d_setpwent_r_proto:$usethreads" in
15375         ":define")      d_setpwent_r_proto=define
15376                 set d_setpwent_r_proto setpwent_r $hdrs
15377                 eval $hasproto ;;
15378         *)      ;;
15379         esac
15380         case "$d_setpwent_r_proto" in
15381         define)
15382         case "$setpwent_r_proto" in
15383         ''|0) try='int setpwent_r(FILE**);'
15384         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15385         esac
15386         case "$setpwent_r_proto" in
15387         ''|0) try='void setpwent_r(FILE**);'
15388         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15389         esac
15390         case "$setpwent_r_proto" in
15391         ''|0)   d_setpwent_r=undef
15392                 setpwent_r_proto=0
15393                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15394         * )     case "$setpwent_r_proto" in
15395                 REENTRANT_PROTO*) ;;
15396                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15397                 esac
15398                 echo "Prototype: $try" ;;
15399         esac
15400         ;;
15401         *)      case "$usethreads" in
15402                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15403                 esac
15404                 d_setpwent_r=undef
15405                 setpwent_r_proto=0
15406                 ;;
15407         esac
15408         ;;
15409 *)      setpwent_r_proto=0
15410         ;;
15411 esac
15412
15413 : see if setregid exists
15414 set setregid d_setregid
15415 eval $inlibc
15416 set setresgid d_setresgid
15417 eval $inlibc
15418
15419 : see if setreuid exists
15420 set setreuid d_setreuid
15421 eval $inlibc
15422 set setresuid d_setresuid
15423 eval $inlibc
15424
15425 : see if setrgid exists
15426 set setrgid d_setrgid
15427 eval $inlibc
15428
15429 : see if setruid exists
15430 set setruid d_setruid
15431 eval $inlibc
15432
15433 : see if setservent exists
15434 set setservent d_setsent
15435 eval $inlibc
15436
15437 : see if setservent_r exists
15438 set setservent_r d_setservent_r
15439 eval $inlibc
15440 case "$d_setservent_r" in
15441 "$define")
15442         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15443         case "$d_setservent_r_proto:$usethreads" in
15444         ":define")      d_setservent_r_proto=define
15445                 set d_setservent_r_proto setservent_r $hdrs
15446                 eval $hasproto ;;
15447         *)      ;;
15448         esac
15449         case "$d_setservent_r_proto" in
15450         define)
15451         case "$setservent_r_proto" in
15452         ''|0) try='int setservent_r(int, struct servent_data*);'
15453         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15454         esac
15455         case "$setservent_r_proto" in
15456         ''|0) try='void setservent_r(int, struct servent_data*);'
15457         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15458         esac
15459         case "$setservent_r_proto" in
15460         ''|0)   d_setservent_r=undef
15461                 setservent_r_proto=0
15462                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15463         * )     case "$setservent_r_proto" in
15464                 REENTRANT_PROTO*) ;;
15465                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15466                 esac
15467                 echo "Prototype: $try" ;;
15468         esac
15469         ;;
15470         *)      case "$usethreads" in
15471                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15472                 esac
15473                 d_setservent_r=undef
15474                 setservent_r_proto=0
15475                 ;;
15476         esac
15477         ;;
15478 *)      setservent_r_proto=0
15479         ;;
15480 esac
15481
15482 : see if setsid exists
15483 set setsid d_setsid
15484 eval $inlibc
15485
15486 : see if setvbuf exists
15487 set setvbuf d_setvbuf
15488 eval $inlibc
15489
15490 : see if sfio.h is available
15491 set sfio.h i_sfio
15492 eval $inhdr
15493
15494
15495 : see if sfio library is available
15496 case "$i_sfio" in
15497 $define)
15498         val=''
15499         set sfreserve val
15500         eval $inlibc
15501         ;;
15502 *)
15503         val="$undef"
15504         ;;
15505 esac
15506 : Ok, but do we want to use it.
15507 case "$val" in
15508 $define)
15509         case "$usesfio" in
15510         true|$define|[yY]*) dflt='y';;
15511         *) dflt='n';;
15512         esac
15513         echo "$package can use the sfio library, but it is experimental."
15514         case "$useperlio" in
15515         "$undef")
15516             echo "For sfio also the PerlIO abstraction layer is needed."
15517             echo "Earlier you said you wouldn't want that."
15518             ;;
15519         esac
15520         rp="You seem to have sfio available, do you want to try using it?"
15521         . ./myread
15522         case "$ans" in
15523         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15524                 useperlio="$define"
15525                 val="$define"
15526                 ;;
15527         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15528                 val="$undef"
15529                 ;;
15530         esac
15531         ;;
15532 *)      case "$usesfio" in
15533         true|$define|[yY]*)
15534                 echo "Sorry, cannot find sfio on this machine." >&4
15535                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15536                 val="$undef"
15537                 ;;
15538         esac
15539         ;;
15540 esac
15541 set d_sfio
15542 eval $setvar
15543 case "$d_sfio" in
15544 $define) usesfio='true';;
15545 *) usesfio='false';;
15546 esac
15547 case "$d_sfio" in
15548 $define) ;;
15549 *)      : Remove sfio from list of libraries to use
15550         case "$libs" in
15551         *-lsfio*)
15552                 echo "Removing unneeded -lsfio from library list" >&4
15553                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15554                 shift
15555                 libs="$*"
15556                 echo "libs = $libs" >&4
15557                 ;;
15558         esac
15559 ;;
15560 esac
15561
15562
15563 : see if shmctl exists
15564 set shmctl d_shmctl
15565 eval $inlibc
15566
15567 : see if shmget exists
15568 set shmget d_shmget
15569 eval $inlibc
15570
15571 : see if shmat exists
15572 set shmat d_shmat
15573 eval $inlibc
15574 : see what shmat returns
15575 case "$d_shmat" in
15576 "$define")
15577         $cat >shmat.c <<'END'
15578 #include <sys/shm.h>
15579 void *shmat();
15580 END
15581         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15582                 shmattype='void *'
15583         else
15584                 shmattype='char *'
15585         fi
15586         echo "and it returns ($shmattype)." >&4
15587         : see if a prototype for shmat is available
15588         xxx=`./findhdr sys/shm.h`
15589         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15590         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15591                 val="$define"
15592         else
15593                 val="$undef"
15594         fi
15595         $rm -f shmat.[co]
15596         ;;
15597 *)
15598         val="$undef"
15599         ;;
15600 esac
15601 set d_shmatprototype
15602 eval $setvar
15603
15604 : see if shmdt exists
15605 set shmdt d_shmdt
15606 eval $inlibc
15607
15608 : see how much of the 'shm*(2)' library is present.
15609 h_shm=true
15610 echo " "
15611 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15612 *"$undef"*) h_shm=false;;
15613 esac
15614 case "$osname" in
15615 freebsd)
15616     case "`ipcs 2>&1`" in
15617     "SVID shared memory"*"not configured"*)
15618         echo "Your $osname does not have the shm*(2) configured." >&4
15619         h_shm=false
15620         val="$undef"
15621         set shmctl d_shmctl
15622         evat $setvar
15623         set shmget d_shmget
15624         evat $setvar
15625         set shmat d_shmat
15626         evat $setvar
15627         set shmdt d_shmdt
15628         evat $setvar
15629         ;;
15630     esac
15631     ;;
15632 esac
15633 : we could also check for sys/ipc.h ...
15634 if $h_shm && $test `./findhdr sys/shm.h`; then
15635         echo "You have the full shm*(2) library." >&4
15636         val="$define"
15637 else
15638         echo "You don't have the full shm*(2) library." >&4
15639         val="$undef"
15640 fi
15641 set d_shm
15642 eval $setvar
15643
15644 echo " "
15645 : see if we have sigaction
15646 if set sigaction val -f d_sigaction; eval $csym; $val; then
15647         echo 'sigaction() found.' >&4
15648         $cat > try.c <<EOP
15649 #include <stdio.h>
15650 #include <sys/types.h>
15651 #include <signal.h>
15652 #$i_stdlib I_STDLIB
15653 #ifdef I_STDLIB
15654 #include <stdlib.h>
15655 #endif
15656 int main()
15657 {
15658     struct sigaction act, oact;
15659     act.sa_flags = 0;
15660     oact.sa_handler = 0;
15661     /* so that act and oact are used */
15662     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
15663 }
15664 EOP
15665         set try
15666         if eval $compile_ok; then
15667                 val="$define"
15668         else
15669                 echo "But you don't seem to have a useable struct sigaction." >&4
15670                 val="$undef"
15671         fi
15672 else
15673         echo 'sigaction NOT found.' >&4
15674         val="$undef"
15675 fi
15676 set d_sigaction; eval $setvar
15677 $rm -f try try$_o try.c
15678
15679 : see if sigprocmask exists
15680 set sigprocmask d_sigprocmask
15681 eval $inlibc
15682
15683 : see if sigsetjmp exists
15684 echo " "
15685 case "$d_sigsetjmp" in
15686 '')
15687         $cat >try.c <<EOP
15688 #include <setjmp.h>
15689 #$i_stdlib I_STDLIB
15690 #ifdef I_STDLIB
15691 #include <stdlib.h>
15692 #endif
15693 sigjmp_buf env;
15694 int set = 1;
15695 int main()
15696 {
15697         if (sigsetjmp(env,1))
15698                 exit(set);
15699         set = 0;
15700         siglongjmp(env, 1);
15701         exit(1);
15702 }
15703 EOP
15704         set try
15705         if eval $compile; then
15706                 if $run ./try >/dev/null 2>&1; then
15707                         echo "POSIX sigsetjmp found." >&4
15708                         val="$define"
15709                 else
15710                         $cat >&4 <<EOM
15711 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
15712 I'll ignore them.
15713 EOM
15714                         val="$undef"
15715                 fi
15716         else
15717                 echo "sigsetjmp not found." >&4
15718                 val="$undef"
15719         fi
15720         ;;
15721 *) val="$d_sigsetjmp"
15722         case "$d_sigsetjmp" in
15723         $define) echo "POSIX sigsetjmp found." >&4;;
15724         $undef) echo "sigsetjmp not found." >&4;;
15725         esac
15726         ;;
15727 esac
15728 set d_sigsetjmp
15729 eval $setvar
15730 $rm -f try.c try
15731
15732 : see if sockatmark exists
15733 set sockatmark d_sockatmark
15734 eval $inlibc
15735
15736 : see if prototype for sockatmark is available
15737 echo " "
15738 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
15739 eval $hasproto
15740
15741 : see if socks5_init exists
15742 set socks5_init d_socks5_init
15743 eval $inlibc
15744
15745 : see if srand48_r exists
15746 set srand48_r d_srand48_r
15747 eval $inlibc
15748 case "$d_srand48_r" in
15749 "$define")
15750         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15751         case "$d_srand48_r_proto:$usethreads" in
15752         ":define")      d_srand48_r_proto=define
15753                 set d_srand48_r_proto srand48_r $hdrs
15754                 eval $hasproto ;;
15755         *)      ;;
15756         esac
15757         case "$d_srand48_r_proto" in
15758         define)
15759         case "$srand48_r_proto" in
15760         ''|0) try='int srand48_r(long, struct drand48_data*);'
15761         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
15762         esac
15763         case "$srand48_r_proto" in
15764         ''|0)   d_srand48_r=undef
15765                 srand48_r_proto=0
15766                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
15767         * )     case "$srand48_r_proto" in
15768                 REENTRANT_PROTO*) ;;
15769                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
15770                 esac
15771                 echo "Prototype: $try" ;;
15772         esac
15773         ;;
15774         *)      case "$usethreads" in
15775                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
15776                 esac
15777                 d_srand48_r=undef
15778                 srand48_r_proto=0
15779                 ;;
15780         esac
15781         ;;
15782 *)      srand48_r_proto=0
15783         ;;
15784 esac
15785
15786 : see if srandom_r exists
15787 set srandom_r d_srandom_r
15788 eval $inlibc
15789 case "$d_srandom_r" in
15790 "$define")
15791         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15792         case "$d_srandom_r_proto:$usethreads" in
15793         ":define")      d_srandom_r_proto=define
15794                 set d_srandom_r_proto srandom_r $hdrs
15795                 eval $hasproto ;;
15796         *)      ;;
15797         esac
15798         case "$d_srandom_r_proto" in
15799         define)
15800         case "$srandom_r_proto" in
15801         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
15802         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
15803         esac
15804         case "$srandom_r_proto" in
15805         ''|0)   d_srandom_r=undef
15806                 srandom_r_proto=0
15807                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
15808         * )     case "$srandom_r_proto" in
15809                 REENTRANT_PROTO*) ;;
15810                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
15811                 esac
15812                 echo "Prototype: $try" ;;
15813         esac
15814         ;;
15815         *)      case "$usethreads" in
15816                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
15817                 esac
15818                 d_srandom_r=undef
15819                 srandom_r_proto=0
15820                 ;;
15821         esac
15822         ;;
15823 *)      srandom_r_proto=0
15824         ;;
15825 esac
15826
15827 : see if prototype for setresgid is available
15828 echo " "
15829 set d_sresgproto setresgid $i_unistd unistd.h
15830 eval $hasproto
15831
15832 : see if prototype for setresuid is available
15833 echo " "
15834 set d_sresuproto setresuid $i_unistd unistd.h
15835 eval $hasproto
15836
15837 : see if sys/stat.h is available
15838 set sys/stat.h i_sysstat
15839 eval $inhdr
15840
15841
15842 : see if stat knows about block sizes
15843 echo " "
15844 echo "Checking to see if your struct stat has st_blocks field..." >&4
15845 set d_statblks stat st_blocks $i_sysstat sys/stat.h
15846 eval $hasfield
15847
15848
15849 : see if this is a sys/vfs.h system
15850 set sys/vfs.h i_sysvfs
15851 eval $inhdr
15852
15853
15854 : see if this is a sys/statfs.h system
15855 set sys/statfs.h i_sysstatfs
15856 eval $inhdr
15857
15858
15859 echo " "
15860 echo "Checking to see if your system supports struct statfs..." >&4
15861 set d_statfs_s statfs $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
15862 eval $hasstruct
15863 case "$d_statfs_s" in
15864 "$define")      echo "Yes, it does."   ;;
15865 *)              echo "No, it doesn't." ;;
15866 esac
15867
15868
15869
15870 : see if struct statfs knows about f_flags
15871 case "$d_statfs_s" in
15872 define) 
15873         echo " "
15874         echo "Checking to see if your struct statfs has f_flags field..." >&4
15875         set d_statfs_f_flags statfs f_flags $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
15876         eval $hasfield
15877         ;;
15878 *)      val="$undef"
15879         set d_statfs_f_flags
15880         eval $setvar
15881         ;;
15882 esac
15883 case "$d_statfs_f_flags" in
15884 "$define")      echo "Yes, it does."   ;;
15885 *)              echo "No, it doesn't." ;;
15886 esac
15887
15888 : see if _ptr and _cnt from stdio act std
15889 echo " "
15890
15891 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
15892         echo "(Looks like you have stdio.h from BSD.)"
15893         case "$stdio_ptr" in
15894         '') stdio_ptr='((fp)->_p)'
15895                 ptr_lval=$define
15896                 ;;
15897         *)      ptr_lval=$d_stdio_ptr_lval;;
15898         esac
15899         case "$stdio_cnt" in
15900         '') stdio_cnt='((fp)->_r)'
15901                 cnt_lval=$define
15902                 ;;
15903         *)      cnt_lval=$d_stdio_cnt_lval;;
15904         esac
15905         case "$stdio_base" in
15906         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
15907         esac
15908         case "$stdio_bufsiz" in
15909         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
15910         esac
15911 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
15912         echo "(Looks like you have stdio.h from Linux.)"
15913         case "$stdio_ptr" in
15914         '') stdio_ptr='((fp)->_IO_read_ptr)'
15915                 ptr_lval=$define
15916                 ;;
15917         *)      ptr_lval=$d_stdio_ptr_lval;;
15918         esac
15919         case "$stdio_cnt" in
15920         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
15921                 cnt_lval=$undef
15922                 ;;
15923         *)      cnt_lval=$d_stdio_cnt_lval;;
15924         esac
15925         case "$stdio_base" in
15926         '') stdio_base='((fp)->_IO_read_base)';;
15927         esac
15928         case "$stdio_bufsiz" in
15929         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
15930         esac
15931 else
15932         case "$stdio_ptr" in
15933         '') stdio_ptr='((fp)->_ptr)'
15934                 ptr_lval=$define
15935                 ;;
15936         *)      ptr_lval=$d_stdio_ptr_lval;;
15937         esac
15938         case "$stdio_cnt" in
15939         '') stdio_cnt='((fp)->_cnt)'
15940                 cnt_lval=$define
15941                 ;;
15942         *)      cnt_lval=$d_stdio_cnt_lval;;
15943         esac
15944         case "$stdio_base" in
15945         '') stdio_base='((fp)->_base)';;
15946         esac
15947         case "$stdio_bufsiz" in
15948         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
15949         esac
15950 fi
15951
15952 : test whether _ptr and _cnt really work
15953 echo "Checking how std your stdio is..." >&4
15954 $cat >try.c <<EOP
15955 #include <stdio.h>
15956 #$i_stdlib I_STDLIB
15957 #ifdef I_STDLIB
15958 #include <stdlib.h>
15959 #endif
15960 #define FILE_ptr(fp)    $stdio_ptr
15961 #define FILE_cnt(fp)    $stdio_cnt
15962 int main() {
15963         FILE *fp = fopen("try.c", "r");
15964         char c = getc(fp);
15965         if (
15966                 18 <= FILE_cnt(fp) &&
15967                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15968         )
15969                 exit(0);
15970         exit(1);
15971 }
15972 EOP
15973 val="$undef"
15974 set try
15975 if eval $compile && $to try.c; then
15976         if $run ./try; then
15977                 echo "Your stdio acts pretty std."
15978                 val="$define"
15979         else
15980                 echo "Your stdio isn't very std."
15981         fi
15982 else
15983         echo "Your stdio doesn't appear very std."
15984 fi
15985 $rm -f try.c try
15986
15987 # glibc 2.2.90 and above apparently change stdio streams so Perl's
15988 # direct buffer manipulation no longer works.  The Configure tests
15989 # should be changed to correctly detect this, but until then,
15990 # the following check should at least let perl compile and run.
15991 # (This quick fix should be updated before 5.8.1.)
15992 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
15993 # A. Dougherty, June 3, 2002.
15994 case "$d_gnulibc" in
15995 $define)
15996         case "$gnulibc_version" in
15997         2.[01]*)  ;;
15998         2.2) ;;
15999         2.2.[0-9]) ;;
16000         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
16001                 val="$undef"
16002                 ;;
16003         esac
16004         ;;
16005 esac
16006 set d_stdstdio
16007 eval $setvar
16008
16009 : Can _ptr be used as an lvalue?
16010 case "$d_stdstdio$ptr_lval" in
16011 $define$define) val=$define ;;
16012 *) val=$undef ;;
16013 esac
16014 set d_stdio_ptr_lval
16015 eval $setvar
16016
16017 : Can _cnt be used as an lvalue?
16018 case "$d_stdstdio$cnt_lval" in
16019 $define$define) val=$define ;;
16020 *) val=$undef ;;
16021 esac
16022 set d_stdio_cnt_lval
16023 eval $setvar
16024
16025
16026 : test whether setting _ptr sets _cnt as a side effect
16027 d_stdio_ptr_lval_sets_cnt="$undef"
16028 d_stdio_ptr_lval_nochange_cnt="$undef"
16029 case "$d_stdio_ptr_lval$d_stdstdio" in
16030 $define$define)
16031         echo "Checking to see what happens if we set the stdio ptr..." >&4
16032 $cat >try.c <<EOP
16033 #include <stdio.h>
16034 /* Can we scream? */
16035 /* Eat dust sed :-) */
16036 /* In the buffer space, no one can hear you scream. */
16037 #$i_stdlib I_STDLIB
16038 #ifdef I_STDLIB
16039 #include <stdlib.h>
16040 #endif
16041 #define FILE_ptr(fp)    $stdio_ptr
16042 #define FILE_cnt(fp)    $stdio_cnt
16043 #include <sys/types.h>
16044 int main() {
16045         FILE *fp = fopen("try.c", "r");
16046         int c;
16047         char *ptr;
16048         size_t cnt;
16049         if (!fp) {
16050             puts("Fail even to read");
16051             exit(1);
16052         }
16053         c = getc(fp); /* Read away the first # */
16054         if (c == EOF) {
16055             puts("Fail even to read");
16056             exit(1);
16057         }
16058         if (!(
16059                 18 <= FILE_cnt(fp) &&
16060                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
16061         )) {
16062                 puts("Fail even to read");
16063                 exit (1);
16064         }
16065         ptr = (char*) FILE_ptr(fp);
16066         cnt = (size_t)FILE_cnt(fp);
16067
16068         FILE_ptr(fp) += 42;
16069
16070         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
16071                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
16072                 exit (1);
16073         }
16074         if (FILE_cnt(fp) <= 20) {
16075                 printf ("Fail (<20 chars to test)");
16076                 exit (1);
16077         }
16078         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
16079                 puts("Fail compare");
16080                 exit (1);
16081         }
16082         if (cnt == FILE_cnt(fp)) {
16083                 puts("Pass_unchanged");
16084                 exit (0);
16085         }       
16086         if (FILE_cnt(fp) == (cnt - 42)) {
16087                 puts("Pass_changed");
16088                 exit (0);
16089         }
16090         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
16091         return 1;
16092
16093 }
16094 EOP
16095         set try
16096         if eval $compile && $to try.c; then
16097                 case `$run ./try` in
16098                 Pass_changed)
16099                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
16100                         d_stdio_ptr_lval_sets_cnt="$define" ;;
16101                 Pass_unchanged)
16102                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
16103                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
16104                 Fail*)
16105                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
16106                 *)
16107                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
16108         esac
16109         else
16110                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
16111         fi
16112         $rm -f try.c try
16113         ;;
16114 esac
16115
16116 : see if _base is also standard
16117 val="$undef"
16118 case "$d_stdstdio" in
16119 $define)
16120         $cat >try.c <<EOP
16121 #include <stdio.h>
16122 #$i_stdlib I_STDLIB
16123 #ifdef I_STDLIB
16124 #include <stdlib.h>
16125 #endif
16126 #define FILE_base(fp)   $stdio_base
16127 #define FILE_bufsiz(fp) $stdio_bufsiz
16128 int main() {
16129         FILE *fp = fopen("try.c", "r");
16130         char c = getc(fp);
16131         if (
16132                 19 <= FILE_bufsiz(fp) &&
16133                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
16134         )
16135                 exit(0);
16136         exit(1);
16137 }
16138 EOP
16139         set try
16140         if eval $compile && $to try.c; then
16141                 if $run ./try; then
16142                         echo "And its _base field acts std."
16143                         val="$define"
16144                 else
16145                         echo "But its _base field isn't std."
16146                 fi
16147         else
16148                 echo "However, it seems to be lacking the _base field."
16149         fi
16150         $rm -f try.c try
16151         ;;
16152 esac
16153 set d_stdiobase
16154 eval $setvar
16155
16156 $cat >&4 <<EOM
16157 Checking how to access stdio streams by file descriptor number...
16158 EOM
16159 case "$stdio_stream_array" in
16160 '')     $cat >try.c <<EOCP
16161 #include <stdio.h>
16162 int main() {
16163   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16164     printf("yes\n");
16165 }
16166 EOCP
16167         for s in _iob __iob __sF
16168         do
16169                 set try -DSTDIO_STREAM_ARRAY=$s
16170                 if eval $compile; then
16171                         case "`$run ./try`" in
16172                         yes)    stdio_stream_array=$s; break ;;
16173                         esac
16174                 fi
16175         done
16176         $rm -f try.* try$exe_ext
16177 esac
16178 case "$stdio_stream_array" in
16179 '')     $cat >&4 <<EOM
16180 I can't figure out how to access stdio streams by file descriptor number.
16181 EOM
16182         d_stdio_stream_array="$undef"
16183         ;;
16184 *)      $cat >&4 <<EOM
16185 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16186 EOM
16187         d_stdio_stream_array="$define"
16188         ;;
16189 esac
16190
16191 : see if strcoll exists
16192 set strcoll d_strcoll
16193 eval $inlibc
16194
16195 : check for structure copying
16196 echo " "
16197 echo "Checking to see if your C compiler can copy structs..." >&4
16198 $cat >try.c <<'EOCP'
16199 int main()
16200 {
16201         struct blurfl {
16202                 int dyick;
16203         } foo, bar;
16204
16205         foo = bar;
16206 }
16207 EOCP
16208 if $cc -c try.c >/dev/null 2>&1 ; then
16209         val="$define"
16210         echo "Yup, it can."
16211 else
16212         val="$undef"
16213         echo "Nope, it can't."
16214 fi
16215 set d_strctcpy
16216 eval $setvar
16217 $rm -f try.*
16218
16219 : see if strerror and/or sys_errlist[] exist
16220 echo " "
16221 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16222     if set strerror val -f d_strerror; eval $csym; $val; then
16223                 echo 'strerror() found.' >&4
16224                 d_strerror="$define"
16225                 d_strerrm='strerror(e)'
16226                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16227                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16228                         d_syserrlst="$define"
16229                 else
16230                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16231                         d_syserrlst="$undef"
16232                 fi
16233     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16234                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16235                 echo 'strerror() found in string header.' >&4
16236                 d_strerror="$define"
16237                 d_strerrm='strerror(e)'
16238                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16239                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16240                                 d_syserrlst="$define"
16241                 else
16242                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16243                         d_syserrlst="$undef"
16244                 fi
16245     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16246                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16247                 d_strerror="$undef"
16248                 d_syserrlst="$define"
16249                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16250     else
16251                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16252                 d_strerror="$undef"
16253                 d_syserrlst="$undef"
16254                 d_strerrm='"unknown"'
16255     fi
16256 fi
16257
16258 : see if strerror_r exists
16259 set strerror_r d_strerror_r
16260 eval $inlibc
16261 case "$d_strerror_r" in
16262 "$define")
16263         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16264         case "$d_strerror_r_proto:$usethreads" in
16265         ":define")      d_strerror_r_proto=define
16266                 set d_strerror_r_proto strerror_r $hdrs
16267                 eval $hasproto ;;
16268         *)      ;;
16269         esac
16270         case "$d_strerror_r_proto" in
16271         define)
16272         case "$strerror_r_proto" in
16273         ''|0) try='int strerror_r(int, char*, size_t);'
16274         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16275         esac
16276         case "$strerror_r_proto" in
16277         ''|0) try='int strerror_r(int, char*, int);'
16278         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16279         esac
16280         case "$strerror_r_proto" in
16281         ''|0) try='char* strerror_r(int, char*, size_t);'
16282         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16283         esac
16284         case "$strerror_r_proto" in
16285         ''|0)   d_strerror_r=undef
16286                 strerror_r_proto=0
16287                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16288         * )     case "$strerror_r_proto" in
16289                 REENTRANT_PROTO*) ;;
16290                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16291                 esac
16292                 echo "Prototype: $try" ;;
16293         esac
16294         ;;
16295         *)      case "$usethreads" in
16296                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16297                 esac
16298                 d_strerror_r=undef
16299                 strerror_r_proto=0
16300                 ;;
16301         esac
16302         ;;
16303 *)      strerror_r_proto=0
16304         ;;
16305 esac
16306
16307 : see if strftime exists
16308 set strftime d_strftime
16309 eval $inlibc
16310
16311 : see if strtod exists
16312 set strtod d_strtod
16313 eval $inlibc
16314
16315 : see if strtol exists
16316 set strtol d_strtol
16317 eval $inlibc
16318
16319 : see if strtold exists
16320 set strtold d_strtold
16321 eval $inlibc
16322
16323 : see if strtoll exists
16324 set strtoll d_strtoll
16325 eval $inlibc
16326
16327 case "$d_longlong-$d_strtoll" in
16328 "$define-$define")
16329         $cat <<EOM
16330 Checking whether your strtoll() works okay...
16331 EOM
16332         $cat >try.c <<'EOCP'
16333 #include <errno.h>
16334 #ifdef __hpux
16335 #define strtoll __strtoll
16336 #endif
16337 #ifdef __EMX__
16338 #define strtoll _strtoll
16339 #endif
16340 #include <stdio.h>
16341 extern long long int strtoll(char *s, char **, int); 
16342 static int bad = 0;
16343 int check(char *s, long long ell, int een) {
16344         long long gll;
16345         errno = 0;
16346         gll = strtoll(s, 0, 10);
16347         if (!((gll == ell) && (errno == een)))
16348                 bad++;
16349 }
16350 int main() {
16351         check(" 1",                                      1LL, 0);
16352         check(" 0",                                      0LL, 0);
16353         check("-1",                                     -1LL, 0);
16354         check("-9223372036854775808", -9223372036854775808LL, 0);
16355         check("-9223372036854775808", -9223372036854775808LL, 0);
16356         check(" 9223372036854775807",  9223372036854775807LL, 0);
16357         check("-9223372036854775808", -9223372036854775808LL, 0);
16358         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16359         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16360         if (!bad)
16361                 printf("ok\n");
16362 }
16363 EOCP
16364         set try
16365         if eval $compile; then
16366                 yyy=`$run ./try`
16367                 case "$yyy" in
16368                 ok) echo "Your strtoll() seems to be working okay." ;;
16369                 *) cat <<EOM >&4
16370 Your strtoll() doesn't seem to be working okay.
16371 EOM
16372                    d_strtoll="$undef"
16373                    ;;
16374                 esac
16375         else
16376                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16377                 d_strtoll="$undef"
16378         fi
16379         ;;
16380 esac
16381
16382 : see if strtoq exists
16383 set strtoq d_strtoq
16384 eval $inlibc
16385
16386 : see if strtoul exists
16387 set strtoul d_strtoul
16388 eval $inlibc
16389
16390 case "$d_strtoul" in
16391 "$define")
16392         $cat <<EOM
16393 Checking whether your strtoul() works okay...
16394 EOM
16395         $cat >try.c <<'EOCP'
16396 #include <errno.h>
16397 #include <stdio.h>
16398 extern unsigned long int strtoul(char *s, char **, int); 
16399 static int bad = 0;
16400 void check(char *s, unsigned long eul, int een) {
16401         unsigned long gul;
16402         errno = 0;
16403         gul = strtoul(s, 0, 10);
16404         if (!((gul == eul) && (errno == een)))
16405                 bad++;
16406 }
16407 int main() {
16408         check(" 1", 1L, 0);
16409         check(" 0", 0L, 0);
16410 EOCP
16411         case "$longsize" in
16412         8)
16413             $cat >>try.c <<'EOCP'
16414         check("18446744073709551615", 18446744073709551615UL, 0);
16415         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16416 #if 0 /* strtoul() for /^-/ strings is undefined. */
16417         check("-1", 18446744073709551615UL, 0);
16418         check("-18446744073709551614", 2, 0);
16419         check("-18446744073709551615", 1, 0);
16420         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16421         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16422 #endif
16423 EOCP
16424                 ;;
16425         4)
16426                     $cat >>try.c <<'EOCP'
16427         check("4294967295", 4294967295UL, 0);
16428         check("4294967296", 4294967295UL, ERANGE);
16429 #if 0 /* strtoul() for /^-/ strings is undefined. */
16430         check("-1", 4294967295UL, 0);
16431         check("-4294967294", 2, 0);
16432         check("-4294967295", 1, 0);
16433         check("-4294967296", 4294967295UL, ERANGE);
16434         check("-4294967297", 4294967295UL, ERANGE);
16435 #endif
16436 EOCP
16437                 ;;
16438         *)
16439 : Should we write these tests to be more portable by sprintf-ing
16440 : ~0 and then manipulating that char string as input for strtol?
16441                 ;;
16442         esac
16443         $cat >>try.c <<'EOCP'
16444         if (!bad)
16445                 printf("ok\n");
16446         return 0;
16447 }
16448 EOCP
16449         set try
16450         if eval $compile; then
16451                 case "`$run ./try`" in
16452                 ok) echo "Your strtoul() seems to be working okay." ;;
16453                 *) cat <<EOM >&4
16454 Your strtoul() doesn't seem to be working okay.
16455 EOM
16456                    d_strtoul="$undef"
16457                    ;;
16458                 esac
16459         fi
16460         ;;
16461 esac
16462
16463 : see if strtoull exists
16464 set strtoull d_strtoull
16465 eval $inlibc
16466
16467 case "$d_longlong-$d_strtoull" in
16468 "$define-$define")
16469         $cat <<EOM
16470 Checking whether your strtoull() works okay...
16471 EOM
16472         $cat >try.c <<'EOCP'
16473 #include <errno.h>
16474 #ifdef __hpux
16475 #define strtoull __strtoull
16476 #endif
16477 #include <stdio.h>
16478 extern unsigned long long int strtoull(char *s, char **, int); 
16479 static int bad = 0;
16480 int check(char *s, long long eull, int een) {
16481         long long gull;
16482         errno = 0;
16483         gull = strtoull(s, 0, 10);
16484         if (!((gull == eull) && (errno == een)))
16485                 bad++;
16486 }
16487 int main() {
16488         check(" 1",                                        1LL, 0);
16489         check(" 0",                                        0LL, 0);
16490         check("18446744073709551615",  18446744073709551615ULL, 0);
16491         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16492 #if 0 /* strtoull() for /^-/ strings is undefined. */
16493         check("-1",                    18446744073709551615ULL, 0);
16494         check("-18446744073709551614",                     2LL, 0);
16495         check("-18446744073709551615",                     1LL, 0);
16496         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16497         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16498 #endif
16499         if (!bad)
16500                 printf("ok\n");
16501 }
16502 EOCP
16503         set try
16504         if eval $compile; then
16505                 case "`$run ./try`" in
16506                 ok) echo "Your strtoull() seems to be working okay." ;;
16507                 *) cat <<EOM >&4
16508 Your strtoull() doesn't seem to be working okay.
16509 EOM
16510                    d_strtoull="$undef"
16511                    ;;
16512                 esac
16513         fi
16514         ;;
16515 esac
16516
16517 : see if strtouq exists
16518 set strtouq d_strtouq
16519 eval $inlibc
16520
16521 case "$d_strtouq" in
16522 "$define")
16523         $cat <<EOM
16524 Checking whether your strtouq() works okay...
16525 EOM
16526         $cat >try.c <<'EOCP'
16527 #include <errno.h>
16528 #include <stdio.h>
16529 extern unsigned long long int strtouq(char *s, char **, int); 
16530 static int bad = 0;
16531 void check(char *s, unsigned long long eull, int een) {
16532         unsigned long long gull;
16533         errno = 0;
16534         gull = strtouq(s, 0, 10);
16535         if (!((gull == eull) && (errno == een)))
16536                 bad++;
16537 }
16538 int main() {
16539         check(" 1",                                        1LL, 0);
16540         check(" 0",                                        0LL, 0);
16541         check("18446744073709551615",  18446744073709551615ULL, 0);
16542         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16543 #if 0 /* strtouq() for /^-/ strings is undefined. */
16544         check("-1",                    18446744073709551615ULL, 0);
16545         check("-18446744073709551614",                     2LL, 0);
16546         check("-18446744073709551615",                     1LL, 0);
16547         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16548         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16549 #endif
16550         if (!bad)
16551                 printf("ok\n");
16552         return 0;
16553 }
16554 EOCP
16555         set try
16556         if eval $compile; then
16557                 case "`$run ./try`" in
16558                 ok) echo "Your strtouq() seems to be working okay." ;;
16559                 *) cat <<EOM >&4
16560 Your strtouq() doesn't seem to be working okay.
16561 EOM
16562                    d_strtouq="$undef"
16563                    ;;
16564                 esac
16565         fi
16566         ;;
16567 esac
16568
16569 : see if strxfrm exists
16570 set strxfrm d_strxfrm
16571 eval $inlibc
16572
16573 : see if symlink exists
16574 set symlink d_symlink
16575 eval $inlibc
16576
16577 : see if syscall exists
16578 set syscall d_syscall
16579 eval $inlibc
16580
16581 : see if prototype for syscall is available
16582 echo " "
16583 set d_syscallproto syscall $i_unistd unistd.h
16584 eval $hasproto
16585
16586 : see if sysconf exists
16587 set sysconf d_sysconf
16588 eval $inlibc
16589
16590 : see if system exists
16591 set system d_system
16592 eval $inlibc
16593
16594 : see if tcgetpgrp exists
16595 set tcgetpgrp d_tcgetpgrp
16596 eval $inlibc
16597
16598 : see if tcsetpgrp exists
16599 set tcsetpgrp d_tcsetpgrp
16600 eval $inlibc
16601
16602 : see if prototype for telldir is available
16603 echo " "
16604 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16605 eval $hasproto
16606
16607 : see if time exists
16608 echo " "
16609 if test "X$d_time" = X -o X"$timetype" = X; then
16610     if set time val -f d_time; eval $csym; $val; then
16611                 echo 'time() found.' >&4
16612                 val="$define"
16613                 rp="What is the type returned by time() on this system?"
16614                 set time_t timetype long stdio.h sys/types.h
16615                 eval $typedef_ask
16616     else
16617                 echo 'time() not found, hope that will do.' >&4
16618                 val="$undef"
16619                 timetype='int';
16620     fi
16621     set d_time
16622     eval $setvar
16623 fi
16624
16625 : see if this is a sys/times.h system
16626 set sys/times.h i_systimes
16627 eval $inhdr
16628
16629 : see if times exists
16630 echo " "
16631 if set times val -f d_times; eval $csym; $val; then
16632         echo 'times() found.' >&4
16633         d_times="$define"
16634         inc=''
16635         case "$i_systimes" in
16636         "$define") inc='sys/times.h';;
16637         esac
16638         rp="What is the type returned by times() on this system?"
16639         set clock_t clocktype long stdio.h sys/types.h $inc
16640         eval $typedef_ask
16641 else
16642         echo 'times() NOT found, hope that will do.' >&4
16643         d_times="$undef"
16644         clocktype='int'
16645 fi
16646
16647 : see if tmpnam_r exists
16648 set tmpnam_r d_tmpnam_r
16649 eval $inlibc
16650 case "$d_tmpnam_r" in
16651 "$define")
16652         hdrs="$i_systypes sys/types.h define stdio.h "
16653         case "$d_tmpnam_r_proto:$usethreads" in
16654         ":define")      d_tmpnam_r_proto=define
16655                 set d_tmpnam_r_proto tmpnam_r $hdrs
16656                 eval $hasproto ;;
16657         *)      ;;
16658         esac
16659         case "$d_tmpnam_r_proto" in
16660         define)
16661         case "$tmpnam_r_proto" in
16662         ''|0) try='char* tmpnam_r(char*);'
16663         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16664         esac
16665         case "$tmpnam_r_proto" in
16666         ''|0)   d_tmpnam_r=undef
16667                 tmpnam_r_proto=0
16668                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16669         * )     case "$tmpnam_r_proto" in
16670                 REENTRANT_PROTO*) ;;
16671                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16672                 esac
16673                 echo "Prototype: $try" ;;
16674         esac
16675         ;;
16676         *)      case "$usethreads" in
16677                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16678                 esac
16679                 d_tmpnam_r=undef
16680                 tmpnam_r_proto=0
16681                 ;;
16682         esac
16683         ;;
16684 *)      tmpnam_r_proto=0
16685         ;;
16686 esac
16687
16688 : see if truncate exists
16689 set truncate d_truncate
16690 eval $inlibc
16691
16692 : see if ttyname_r exists
16693 set ttyname_r d_ttyname_r
16694 eval $inlibc
16695 case "$d_ttyname_r" in
16696 "$define")
16697         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16698         case "$d_ttyname_r_proto:$usethreads" in
16699         ":define")      d_ttyname_r_proto=define
16700                 set d_ttyname_r_proto ttyname_r $hdrs
16701                 eval $hasproto ;;
16702         *)      ;;
16703         esac
16704         case "$d_ttyname_r_proto" in
16705         define)
16706         case "$ttyname_r_proto" in
16707         ''|0) try='int ttyname_r(int, char*, size_t);'
16708         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16709         esac
16710         case "$ttyname_r_proto" in
16711         ''|0) try='int ttyname_r(int, char*, int);'
16712         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16713         esac
16714         case "$ttyname_r_proto" in
16715         ''|0) try='char* ttyname_r(int, char*, int);'
16716         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16717         esac
16718         case "$ttyname_r_proto" in
16719         ''|0)   d_ttyname_r=undef
16720                 ttyname_r_proto=0
16721                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16722         * )     case "$ttyname_r_proto" in
16723                 REENTRANT_PROTO*) ;;
16724                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16725                 esac
16726                 echo "Prototype: $try" ;;
16727         esac
16728         ;;
16729         *)      case "$usethreads" in
16730                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16731                 esac
16732                 d_ttyname_r=undef
16733                 ttyname_r_proto=0
16734                 ;;
16735         esac
16736         ;;
16737 *)      ttyname_r_proto=0
16738         ;;
16739 esac
16740
16741 : see if tzname[] exists
16742 echo " "
16743 if set tzname val -a d_tzname; eval $csym; $val; then
16744         val="$define"
16745         echo 'tzname[] found.' >&4
16746 else
16747         val="$undef"
16748         echo 'tzname[] NOT found.' >&4
16749 fi
16750 set d_tzname
16751 eval $setvar
16752
16753 case "$osname" in
16754 next|rhapsody|darwin) multiarch="$define" ;;
16755 esac
16756 case "$multiarch" in
16757 ''|[nN]*) multiarch="$undef" ;;
16758 esac
16759
16760 : check for ordering of bytes in a UV
16761 echo " "
16762 case "$usecrosscompile$multiarch" in
16763 *$define*)
16764         $cat <<EOM
16765 You seem to be either cross-compiling or doing a multiarchitecture build,
16766 skipping the byteorder check.
16767
16768 EOM
16769         byteorder='ffff'
16770         ;;
16771 *)
16772         case "$byteorder" in
16773         '')
16774                 $cat <<'EOM'
16775 In the following, larger digits indicate more significance.  A big-endian
16776 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16777 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16778 machines may have weird orders like 3412.  A Cray will report 87654321,
16779 an Alpha will report 12345678. If the test program works the default is
16780 probably right.
16781 I'm now running the test program...
16782 EOM
16783                 $cat >try.c <<EOCP
16784 #include <stdio.h>
16785 #$i_stdlib I_STDLIB
16786 #ifdef I_STDLIB
16787 #include <stdlib.h>
16788 #endif
16789 #include <sys/types.h>
16790 typedef $uvtype UV;
16791 int main()
16792 {
16793         int i;
16794         union {
16795                 UV l;
16796                 char c[$uvsize];
16797         } u;
16798
16799         if ($uvsize > 4)
16800                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16801         else
16802                 u.l = (UV)0x04030201;
16803         for (i = 0; i < $uvsize; i++)
16804                 printf("%c", u.c[i]+'0');
16805         printf("\n");
16806         exit(0);
16807 }
16808 EOCP
16809                 xxx_prompt=y
16810                 set try
16811                 if eval $compile && ./try > /dev/null; then
16812                         dflt=`$run ./try`
16813                         case "$dflt" in
16814                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16815                                 echo "(The test program ran ok.)"
16816                                 echo "byteorder=$dflt"
16817                                 xxx_prompt=n
16818                         ;;
16819                         ????|????????) echo "(The test program ran ok.)" ;;
16820                         *) echo "(The test program didn't run right for some reason.)" ;;
16821                         esac
16822                 else
16823                         dflt='4321'
16824                         cat <<'EOM'
16825 (I can't seem to compile the test program.  Guessing big-endian...)
16826 EOM
16827                 fi
16828                 case "$xxx_prompt" in
16829                 y)
16830                         rp="What is the order of bytes in $uvtype?"
16831                         . ./myread
16832                         byteorder="$ans"
16833                         ;;
16834                 *)      byteorder=$dflt
16835                         ;;
16836                 esac
16837                 ;;
16838         esac
16839         $rm -f try.c try
16840         ;;
16841 esac
16842
16843
16844 $cat <<EOM
16845
16846 Checking to see whether you can access character data unalignedly...
16847 EOM
16848 case "$d_u32align" in
16849 '')   $cat >try.c <<EOCP
16850 #include <stdio.h>
16851 #$i_stdlib I_STDLIB
16852 #ifdef I_STDLIB
16853 #include <stdlib.h>
16854 #endif
16855 #define U32 $u32type
16856 #define BYTEORDER 0x$byteorder
16857 #define U8 $u8type
16858 #include <signal.h>
16859 #ifdef SIGBUS
16860 $signal_t bletch(s) int s; { exit(4); }
16861 #endif
16862 int main() {
16863 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16864     U8 buf[8];
16865     U32 *up;
16866     int i;
16867
16868     if (sizeof(U32) != 4) {
16869         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16870         exit(1);
16871     }
16872
16873     fflush(stdout);
16874
16875 #ifdef SIGBUS
16876     signal(SIGBUS, bletch);
16877 #endif
16878
16879     buf[0] = 0;
16880     buf[1] = 0;
16881     buf[2] = 0;
16882     buf[3] = 1;
16883     buf[5] = 0;
16884     buf[6] = 0;
16885     buf[7] = 0;
16886     buf[8] = 1;
16887
16888     for (i = 0; i < 4; i++) {
16889         up = (U32*)(buf + i);
16890         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16891                (*up == 1 << (8*(3-i)))  /* little-endian */
16892               )
16893            )
16894         {
16895             printf("read failed (%x)\n", *up);
16896             exit(2);
16897         }
16898     }
16899
16900     /* write test */
16901     for (i = 0; i < 4; i++) {
16902         up = (U32*)(buf + i);
16903         *up = 0xBeef;
16904         if (*up != 0xBeef) {
16905             printf("write failed (%x)\n", *up);
16906             exit(3);
16907         }
16908     }
16909
16910     exit(0);
16911 #else
16912     printf("1\n");
16913     exit(1);
16914 #endif
16915     return 0;
16916 }
16917 EOCP
16918 set try
16919 if eval $compile_ok; then
16920         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16921         $run ./try 2>&1 >/dev/null
16922         case "$?" in
16923         0)      cat >&4 <<EOM
16924 You can access character data pretty unalignedly.
16925 EOM
16926                 d_u32align="$undef"
16927                 ;;
16928         *)      cat >&4 <<EOM
16929 It seems that you must access character data in an aligned manner.
16930 EOM
16931                 d_u32align="$define"
16932                 ;;
16933         esac
16934 else
16935         rp='Can you access character data at unaligned addresses?'
16936         dflt='n'
16937         . ./myread
16938         case "$ans" in
16939         [yY]*)  d_u32align="$undef"  ;;
16940         *)      d_u32align="$define" ;;
16941         esac
16942 fi
16943 $rm -f core core.try.* try.core
16944 ;;
16945 esac
16946
16947 : see if ualarm exists
16948 set ualarm d_ualarm
16949 eval $inlibc
16950
16951 : see if umask exists
16952 set umask d_umask
16953 eval $inlibc
16954
16955 : see if unordered exists
16956 set unordered d_unordered
16957 eval $inlibc
16958
16959 : see if usleep exists
16960 set usleep d_usleep
16961 eval $inlibc
16962
16963 : see if prototype for usleep is available
16964 echo " "
16965 set d_usleepproto usleep $i_unistd unistd.h
16966 eval $hasproto
16967
16968 : see if ustat exists
16969 set ustat d_ustat
16970 eval $inlibc
16971
16972 : backward compatibility for d_hvfork
16973 if test X$d_hvfork != X; then
16974         d_vfork="$d_hvfork"
16975         d_hvfork=''
16976 fi
16977 : see if there is a vfork
16978 val=''
16979 set vfork val
16980 eval $inlibc
16981
16982 : Ok, but do we want to use it. vfork is reportedly unreliable in 
16983 : perl on Solaris 2.x, and probably elsewhere.
16984 case "$val" in
16985 $define)
16986         echo " "
16987         case "$usevfork" in
16988         false) dflt='n';;
16989         *) dflt='y';;
16990         esac
16991         cat <<'EOM'
16992  
16993 Perl can only use a vfork() that doesn't suffer from strict
16994 restrictions on calling functions or modifying global data in
16995 the child.  For example, glibc-2.1 contains such a vfork()
16996 that is unsuitable.  If your system provides a proper fork()
16997 call, chances are that you do NOT want perl to use vfork().
16998
16999 EOM
17000         rp="Do you still want to use vfork()?"
17001         . ./myread
17002         case "$ans" in
17003         y|Y) ;;
17004         *)
17005                 echo "Ok, we won't use vfork()."
17006                 val="$undef"
17007                 ;;
17008         esac
17009         ;;
17010 esac
17011 set d_vfork
17012 eval $setvar
17013 case "$d_vfork" in
17014 $define) usevfork='true';;
17015 *) usevfork='false';;
17016 esac
17017
17018 : see if closedir exists
17019 set closedir d_closedir
17020 eval $inlibc
17021
17022 case "$d_closedir" in
17023 "$define")
17024         echo " "
17025         echo "Checking whether closedir() returns a status..." >&4
17026         cat > try.c <<EOM
17027 #$i_dirent I_DIRENT             /**/
17028 #$i_sysdir I_SYS_DIR            /**/
17029 #$i_sysndir I_SYS_NDIR          /**/
17030 #$i_systypes I_SYS_TYPES        /**/
17031
17032 #if defined(I_SYS_TYPES)
17033 #include <sys/types.h>
17034 #endif
17035 #if defined(I_DIRENT)
17036 #include <dirent.h>
17037 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17038 #include <sys/dir.h>
17039 #endif
17040 #else
17041 #ifdef I_SYS_NDIR
17042 #include <sys/ndir.h>
17043 #else
17044 #ifdef I_SYS_DIR
17045 #ifdef hp9000s500
17046 #include <ndir.h>       /* may be wrong in the future */
17047 #else
17048 #include <sys/dir.h>
17049 #endif
17050 #endif
17051 #endif
17052 #endif 
17053 int main() { return closedir(opendir(".")); }
17054 EOM
17055         set try
17056         if eval $compile_ok; then
17057                 if $run ./try > /dev/null 2>&1 ; then
17058                         echo "Yes, it does."
17059                         val="$undef"
17060                 else
17061                         echo "No, it doesn't."
17062                         val="$define"
17063                 fi
17064         else
17065                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17066                 val="$define"
17067         fi
17068         ;;
17069 *)
17070         val="$undef";
17071         ;;
17072 esac
17073 set d_void_closedir
17074 eval $setvar
17075 $rm -f try try.*
17076 : see if there is a wait4
17077 set wait4 d_wait4
17078 eval $inlibc
17079
17080 : see if waitpid exists
17081 set waitpid d_waitpid
17082 eval $inlibc
17083
17084 : see if wcstombs exists
17085 set wcstombs d_wcstombs
17086 eval $inlibc
17087
17088 : see if wctomb exists
17089 set wctomb d_wctomb
17090 eval $inlibc
17091
17092 : see if writev exists
17093 set writev d_writev
17094 eval $inlibc
17095
17096 : preserve RCS keywords in files with variable substitution, grrr
17097 Date='$Date'
17098 Id='$Id'
17099 Log='$Log'
17100 RCSfile='$RCSfile'
17101 Revision='$Revision'
17102
17103 : check for alignment requirements
17104 echo " "
17105 case "$usecrosscompile$multiarch" in
17106 *$define*)
17107         $cat <<EOM
17108 You seem to be either cross-compiling or doing a multiarchitecture build,
17109 skipping the memory alignment check.
17110
17111 EOM
17112         case "$alignbytes" in
17113         '') alignbytes=8 ;;
17114         esac
17115         ;;
17116 *)
17117         case "$alignbytes" in
17118         '') echo "Checking alignment constraints..." >&4
17119                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17120                         $cat >try.c <<'EOCP'
17121 typedef long double NV;
17122 EOCP
17123                 else
17124                         $cat >try.c <<'EOCP'
17125 typedef double NV;
17126 EOCP
17127                 fi
17128                 $cat >>try.c <<'EOCP'
17129 #include <stdio.h>
17130 struct foobar {
17131         char foo;
17132         NV bar;
17133 } try_algn;
17134 int main()
17135 {
17136     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17137     return(0);
17138 }
17139 EOCP
17140                 set try
17141                 if eval $compile_ok; then
17142                         dflt=`$run ./try`
17143                 else
17144                         dflt='8'
17145                         echo "(I can't seem to compile the test program...)"
17146                 fi
17147                 ;;
17148         *) dflt="$alignbytes"
17149                 ;;
17150         esac
17151         rp="Doubles must be aligned on a how-many-byte boundary?"
17152         . ./myread
17153         alignbytes="$ans"
17154         $rm -f try.c try
17155         ;;
17156 esac
17157
17158
17159 : set the base revision
17160 baserev=5.0
17161
17162 : how do we catenate cpp tokens here?
17163 echo " "
17164 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
17165 $cat >cpp_stuff.c <<'EOCP'
17166 #define RCAT(a,b)a/**/b
17167 #define ACAT(a,b)a ## b
17168 RCAT(Rei,ser)
17169 ACAT(Cir,cus)
17170 EOCP
17171 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17172 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17173         echo "Oh!  Smells like ANSI's been here." >&4
17174         echo "We can catify or stringify, separately or together!"
17175         cpp_stuff=42
17176 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17177         echo "Ah, yes!  The good old days!" >&4
17178         echo "However, in the good old days we don't know how to stringify and"
17179         echo "catify at the same time."
17180         cpp_stuff=1
17181 else
17182         $cat >&4 <<EOM
17183 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
17184 to have to edit the values of CAT[2-5] in config.h...
17185 EOM
17186         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17187 fi
17188 $rm -f cpp_stuff.*
17189
17190 : see if this is a db.h system
17191 set db.h i_db
17192 eval $inhdr
17193
17194 case "$i_db" in
17195 $define)
17196         : Check db version.
17197         echo " "
17198         echo "Checking Berkeley DB version ..." >&4
17199         $cat >try.c <<EOCP
17200 #$d_const HASCONST
17201 #ifndef HASCONST
17202 #define const
17203 #endif
17204 #include <sys/types.h>
17205 #include <stdio.h>
17206 #$i_stdlib I_STDLIB
17207 #ifdef I_STDLIB
17208 #include <stdlib.h>
17209 #endif
17210 #include <db.h>
17211 int main(int argc, char *argv[])
17212 {
17213 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17214     int Major, Minor, Patch ;
17215     unsigned long Version ;
17216     (void)db_version(&Major, &Minor, &Patch) ;
17217     if (argc == 2) {
17218         printf("%d %d %d %d %d %d\n",
17219                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17220                Major, Minor, Patch);
17221         exit(0);
17222     }
17223     printf("You have Berkeley DB Version 2 or greater.\n");
17224
17225     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17226                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17227     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17228                 Major, Minor, Patch) ;
17229
17230     /* check that db.h & libdb are compatible */
17231     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17232         printf("db.h and libdb are incompatible.\n") ;
17233         exit(3);        
17234     }
17235
17236     printf("db.h and libdb are compatible.\n") ;
17237
17238     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17239                 + DB_VERSION_PATCH ;
17240
17241     /* needs to be >= 2.3.4 */
17242     if (Version < 2003004) {
17243     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17244         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17245         exit(2);        
17246     }
17247
17248     exit(0);
17249 #else
17250 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17251     if (argc == 2) {
17252         printf("1 0 0\n");
17253         exit(0);
17254     }
17255     printf("You have Berkeley DB Version 1.\n");
17256     exit(0);    /* DB version < 2: the coast is clear. */
17257 #else
17258     exit(1);    /* <db.h> not Berkeley DB? */
17259 #endif
17260 #endif
17261 }
17262 EOCP
17263         set try
17264         if eval $compile_ok && $run ./try; then
17265                 echo 'Looks OK.' >&4
17266                 set `$run ./try 1`
17267                 db_version_major=$1
17268                 db_version_minor=$2
17269                 db_version_patch=$3
17270         else
17271                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17272                 i_db=$undef
17273                 case " $libs " in
17274                 *"-ldb "*)
17275                         : Remove db from list of libraries to use
17276                         echo "Removing unusable -ldb from library list" >&4
17277                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17278                         shift
17279                         libs="$*"
17280                         echo "libs = $libs" >&4
17281                         ;;
17282                 esac
17283         fi
17284         $rm -f try.*
17285         ;;
17286 esac
17287
17288 case "$i_db" in
17289 define)
17290         : Check the return type needed for hash 
17291         echo " "
17292         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17293         $cat >try.c <<EOCP
17294 #$d_const HASCONST
17295 #ifndef HASCONST
17296 #define const
17297 #endif
17298 #include <sys/types.h>
17299 #include <db.h>
17300
17301 #ifndef DB_VERSION_MAJOR
17302 u_int32_t hash_cb (ptr, size)
17303 const void *ptr;
17304 size_t size;
17305 {
17306 }
17307 HASHINFO info;
17308 int main()
17309 {
17310         info.hash = hash_cb;
17311 }
17312 #endif
17313 EOCP
17314         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17315                 if $contains warning try.out >>/dev/null 2>&1 ; then
17316                         db_hashtype='int'
17317                 else
17318                         db_hashtype='u_int32_t'
17319                 fi
17320         else
17321                 : XXX Maybe we should just give up here.
17322                 db_hashtype=u_int32_t
17323                 $cat try.out >&4
17324                 echo "Help:  I can't seem to compile the db test program." >&4
17325                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17326         fi
17327         $rm -f try.*
17328         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17329         ;;
17330 *)      db_hashtype=u_int32_t
17331         ;;
17332 esac
17333 case "$i_db" in
17334 define)
17335         : Check the return type needed for prefix 
17336         echo " "
17337         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17338         cat >try.c <<EOCP
17339 #$d_const HASCONST
17340 #ifndef HASCONST
17341 #define const
17342 #endif
17343 #include <sys/types.h>
17344 #include <db.h>
17345
17346 #ifndef DB_VERSION_MAJOR
17347 size_t prefix_cb (key1, key2)
17348 const DBT *key1;
17349 const DBT *key2;
17350 {
17351 }
17352 BTREEINFO info;
17353 int main()
17354 {
17355         info.prefix = prefix_cb;
17356 }
17357 #endif
17358 EOCP
17359         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17360                 if $contains warning try.out >>/dev/null 2>&1 ; then
17361                         db_prefixtype='int'
17362                 else
17363                         db_prefixtype='size_t'
17364                 fi
17365         else
17366                 db_prefixtype='size_t'
17367                 : XXX Maybe we should just give up here.
17368                 $cat try.out >&4
17369                 echo "Help:  I can't seem to compile the db test program." >&4
17370                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17371         fi
17372         $rm -f try.*
17373         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17374         ;;
17375 *)      db_prefixtype='size_t'
17376         ;;
17377 esac
17378
17379
17380 : How can we generate normalized random numbers ?
17381 echo " "
17382 echo "Looking for a random number function..." >&4
17383 case "$randfunc" in
17384 '')
17385         if set drand48 val -f; eval $csym; $val; then
17386                 dflt="drand48"
17387                 echo "Good, found drand48()." >&4
17388         elif set random val -f; eval $csym; $val; then
17389                 dflt="random"
17390                 echo "OK, found random()." >&4
17391         else
17392                 dflt="rand"
17393                 echo "Yick, looks like I have to use rand()." >&4
17394         fi
17395         echo " "
17396         ;;
17397 *)
17398         dflt="$randfunc"
17399         ;;
17400 esac
17401 cont=true
17402
17403 case "$ccflags" in
17404 *-Dmy_rand=*|*-Dmy_srand=*)
17405         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17406         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17407         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17408         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17409         ;;
17410 esac
17411
17412 while $test "$cont"; do
17413         rp="Use which function to generate random numbers?"
17414         . ./myread
17415         if $test "$ans" = "$dflt"; then
17416                 : null
17417         else
17418                 randbits=''
17419         fi
17420         randfunc="$ans"
17421         if set $ans val -f; eval $csym; $val; then
17422                 cont=''
17423         else
17424                 dflt=y
17425                 rp="I cannot find function $ans. Use that name anyway?"
17426                 . ./myread
17427                 dflt=rand
17428                 case "$ans" in
17429                         [yY]*) cont='';;
17430                 esac
17431         fi
17432         case "$cont" in
17433         '')
17434                 case "$randfunc" in
17435                 drand48)
17436                         drand01="drand48()"
17437                         seedfunc="srand48"
17438                         randbits=48
17439                         randseedtype=long
17440                         ;;
17441                 rand|random)
17442                         case "$randbits" in
17443                         '')
17444 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17445                                 $cat >try.c <<EOCP
17446 #$i_unistd I_UNISTD
17447 #$i_stdlib I_STDLIB
17448 #include <stdio.h>
17449 #ifdef I_UNISTD
17450 #  include <unistd.h>
17451 #endif
17452 #ifdef I_STDLIB
17453 #  include <stdlib.h>
17454 #endif
17455 int main()
17456 {
17457         register int i;
17458         register unsigned long tmp;
17459         register unsigned long max = 0L;
17460
17461         for (i = 1000; i; i--) {
17462                 tmp = (unsigned long) $randfunc();
17463                 if (tmp > max) max = tmp;
17464         }
17465         for (i = 0; max; i++)
17466                 max /= 2;
17467         printf("%d\n",i);
17468 }
17469 EOCP
17470                                 set try
17471                                 if eval $compile_ok; then
17472                                         dflt=`try`
17473                                 else
17474                                         dflt='?'
17475                                         echo "(I can't seem to compile the test program...)"
17476                                 fi
17477                                 ;;
17478                         *)
17479                                 dflt="$randbits"
17480                                 ;;
17481                         esac
17482                         rp="How many bits does your $randfunc() function produce?"
17483                         . ./myread
17484                         randbits="$ans"
17485                         $rm -f try.c try
17486                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17487                         seedfunc="s$randfunc"
17488                         randseedtype=unsigned
17489                         ;;
17490                 *)
17491                         dflt="31"
17492                         rp="How many bits does your $randfunc() function produce?"
17493                         . ./myread
17494                         randbits="$ans"
17495                         seedfunc="s$randfunc"
17496                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17497                         if set $seedfunc val -f; eval $csym; $val; then
17498                                 echo "(Using $seedfunc() to seed random generator)"
17499                         else
17500                                 echo "(Warning: no $seedfunc() to seed random generator)"
17501                                 seedfunc=rand
17502                         fi
17503                         randseedtype=unsigned
17504                         ;;
17505                 esac
17506                 ;;
17507         esac
17508 done
17509
17510 echo " "
17511 echo "Determining whether or not we are on an EBCDIC system..." >&4
17512 $cat >try.c <<'EOM'
17513 int main()
17514 {
17515   if ('M'==0xd4) return 0;
17516   return 1;
17517 }
17518 EOM
17519
17520 val=$undef
17521 set try
17522 if eval $compile_ok; then
17523         if $run ./try; then
17524                 echo "You seem to speak EBCDIC." >&4
17525                 val="$define"
17526         else
17527                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17528         fi
17529 else
17530         echo "I'm unable to compile the test program." >&4
17531         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17532 fi
17533 $rm -f try try.*
17534 set ebcdic
17535 eval $setvar
17536
17537 echo " "
17538 $cat >&4 <<EOM
17539 Checking how to flush all pending stdio output...
17540 EOM
17541 # I only know how to find the first 32 possibly open files on SunOS.
17542 # See also hints/sunos_4_1.sh and util.c  --AD
17543 case "$osname" in
17544 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17545 esac
17546 $cat >>try.c <<EOCP
17547 #include <stdio.h>
17548 #$i_stdlib I_STDLIB
17549 #ifdef I_STDLIB
17550 #include <stdlib.h>
17551 #endif
17552 #$i_unistd I_UNISTD
17553 #ifdef I_UNISTD
17554 # include <unistd.h>
17555 #endif
17556 #$d_sysconf HAS_SYSCONF
17557 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17558 #ifdef HAS_STDIO_STREAM_ARRAY
17559 # define STDIO_STREAM_ARRAY $stdio_stream_array
17560 #endif
17561 int main() {
17562   FILE* p;
17563   unlink("try.out");
17564   p = fopen("try.out", "w");
17565 #ifdef TRY_FPUTC
17566   fputc('x', p);
17567 #else
17568 # ifdef TRY_FPRINTF
17569   fprintf(p, "x");
17570 # endif
17571 #endif
17572 #ifdef TRY_FFLUSH_NULL
17573   fflush(NULL);
17574 #endif
17575 #ifdef TRY_FFLUSH_ALL
17576   {
17577     long open_max = -1;
17578 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17579     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17580 # else
17581 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17582     open_max = sysconf(_SC_OPEN_MAX);
17583 #  else
17584 #   ifdef FOPEN_MAX
17585     open_max = FOPEN_MAX;
17586 #   else
17587 #    ifdef OPEN_MAX
17588     open_max = OPEN_MAX;
17589 #    else
17590 #     ifdef _NFILE
17591     open_max = _NFILE;
17592 #     endif
17593 #    endif
17594 #   endif
17595 #  endif
17596 # endif 
17597 # ifdef HAS_STDIO_STREAM_ARRAY
17598     if (open_max > 0) {
17599       long i;
17600       for (i = 0; i < open_max; i++)
17601             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17602                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17603                 STDIO_STREAM_ARRAY[i]._flag)
17604                 fflush(&STDIO_STREAM_ARRAY[i]);
17605     }   
17606   }
17607 # endif
17608 #endif
17609   _exit(42);
17610 }
17611 EOCP
17612 : first we have to find out how _not_ to flush
17613 $to try.c
17614 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17615     output=''
17616     set try -DTRY_FPUTC
17617     if eval $compile; then
17618             $run ./try 2>/dev/null
17619             code="$?"
17620             $from try.out
17621             if $test ! -s try.out -a "X$code" = X42; then
17622                 output=-DTRY_FPUTC
17623             fi
17624     fi
17625     case "$output" in
17626     '')
17627             set try -DTRY_FPRINTF
17628             if eval $compile; then
17629                     $run ./try 2>/dev/null
17630                     code="$?"
17631                     $from try.out
17632                     if $test ! -s try.out -a "X$code" = X42; then
17633                         output=-DTRY_FPRINTF
17634                     fi
17635             fi
17636         ;;
17637     esac
17638 fi
17639 : check for fflush NULL behaviour
17640 case "$fflushNULL" in
17641 '')     set try -DTRY_FFLUSH_NULL $output
17642         if eval $compile; then
17643                 $run ./try 2>/dev/null
17644                 code="$?"
17645                 $from try.out
17646                 if $test -s try.out -a "X$code" = X42; then
17647                         fflushNULL="`$cat try.out`"
17648                 else
17649                         if $test "X$code" != X42; then
17650                                 $cat >&4 <<EOM
17651 (If this test failed, don't worry, we'll try another method shortly.)
17652 EOM
17653                         fi
17654                 fi
17655         fi
17656         $rm -f core try.core core.try.*
17657         case "$fflushNULL" in
17658         x)      $cat >&4 <<EOM
17659 Your fflush(NULL) works okay for output streams.
17660 Let's see if it clobbers input pipes...
17661 EOM
17662 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17663 # bug that improperly flushes the input end of pipes.  So we avoid the
17664 # autoflush on fork/system/exec support for now. :-(
17665 $cat >tryp.c <<EOCP
17666 #include <stdio.h>
17667 int
17668 main(int argc, char **argv)
17669 {
17670     char buf[1024];
17671     int i;
17672     char *bp = buf;
17673     while (1) {
17674         while ((i = getc(stdin)) != -1
17675                && (*bp++ = i) != '\n'
17676                && bp < &buf[1024])
17677         /* DO NOTHING */ ;
17678         *bp = '\0';
17679         fprintf(stdout, "%s", buf);
17680         fflush(NULL);
17681         if (i == -1)
17682             return 0;
17683         bp = buf;
17684     }
17685 }
17686 EOCP
17687                 fflushNULL="$define"
17688                 set tryp
17689                 if eval $compile; then
17690                     $rm -f tryp.out
17691                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17692                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17693                        $cat >&4 <<EOM
17694 fflush(NULL) seems to behave okay with input streams.
17695 EOM
17696                         fflushNULL="$define"
17697                     else
17698                         $cat >&4 <<EOM
17699 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17700 EOM
17701                         fflushNULL="$undef"
17702                     fi
17703                 fi
17704                 $rm -f core tryp.c tryp.core core.tryp.*
17705                 ;;
17706         '')     $cat >&4 <<EOM
17707 Your fflush(NULL) isn't working (contrary to ANSI C).
17708 EOM
17709                 fflushNULL="$undef"
17710                 ;;
17711         *)      $cat >&4 <<EOM
17712 Cannot figure out whether your fflush(NULL) works or not.
17713 I'm assuming it doesn't (contrary to ANSI C).
17714 EOM
17715                 fflushNULL="$undef"
17716                 ;;
17717         esac
17718         ;;
17719 $define|true|[yY]*)
17720         fflushNULL="$define"
17721         ;;
17722 *)
17723         fflushNULL="$undef"
17724         ;;
17725 esac
17726 : check explicit looping only if NULL did not work, and if the pipe
17727 : bug does not show up on an explicit flush too
17728 case "$fflushNULL" in
17729 "$undef")
17730         $cat >tryp.c <<EOCP
17731 #include <stdio.h>
17732 int
17733 main(int argc, char **argv)
17734 {
17735     char buf[1024];
17736     int i;
17737     char *bp = buf;
17738     while (1) {
17739         while ((i = getc(stdin)) != -1
17740                && (*bp++ = i) != '\n'
17741                && bp < &buf[1024])
17742         /* DO NOTHING */ ;
17743         *bp = '\0';
17744         fprintf(stdout, "%s", buf);
17745         fflush(stdin);
17746         if (i == -1)
17747             return 0;
17748         bp = buf;
17749     }
17750 }
17751 EOCP
17752         set tryp
17753         if eval $compile; then
17754             $rm -f tryp.out
17755             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17756             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17757                $cat >&4 <<EOM
17758 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17759 EOM
17760                 : now check for fflushall behaviour
17761                 case "$fflushall" in
17762                 '')     set try -DTRY_FFLUSH_ALL $output
17763                         if eval $compile; then
17764                                 $cat >&4 <<EOM
17765 (Now testing the other method--but note that this also may fail.)
17766 EOM
17767                                 $run ./try 2>/dev/null
17768                                 code=$?
17769                                 $from try.out
17770                                 if $test -s try.out -a "X$code" = X42; then
17771                                         fflushall="`$cat try.out`"
17772                                 fi
17773                         fi
17774                         $rm -f core try.core core.try.*
17775                         case "$fflushall" in
17776                         x)      $cat >&4 <<EOM
17777 Whew. Flushing explicitly all the stdio streams works.
17778 EOM
17779                                 fflushall="$define"
17780                                 ;;
17781                         '')     $cat >&4 <<EOM
17782 Sigh. Flushing explicitly all the stdio streams doesn't work.
17783 EOM
17784                                 fflushall="$undef"
17785                                 ;;
17786                         *)      $cat >&4 <<EOM
17787 Cannot figure out whether flushing stdio streams explicitly works or not.
17788 I'm assuming it doesn't.
17789 EOM
17790                                 fflushall="$undef"
17791                                 ;;
17792                         esac
17793                         ;;
17794                 "$define"|true|[yY]*)
17795                         fflushall="$define"
17796                         ;;
17797                 *)
17798                         fflushall="$undef"
17799                         ;;
17800                 esac
17801             else
17802                 $cat >&4 <<EOM
17803 All is futile.  Even fflush(stdin) clobbers input pipes!
17804 EOM
17805                 fflushall="$undef"
17806             fi
17807         else
17808             fflushall="$undef"
17809         fi
17810         $rm -f core tryp.c tryp.core core.tryp.*
17811         ;;
17812 *)      fflushall="$undef"
17813         ;;
17814 esac
17815
17816 case "$fflushNULL$fflushall" in
17817 undefundef)
17818         $cat <<EOM
17819 OK, I give up.  I cannot figure out how to flush pending stdio output.
17820 We won't be flushing handles at all before fork/exec/popen.
17821 EOM
17822         ;;
17823 esac
17824 $rm -f try.* try$exe_ext
17825
17826 : Store the full pathname to the ar program for use in the C program
17827 : Respect a hint or command line value for full_ar.
17828 case "$full_ar" in
17829 '') full_ar=$ar ;;
17830 esac
17831
17832 : Store the full pathname to the sed program for use in the C program
17833 full_sed=$sed
17834
17835 : see what type gids are declared as in the kernel
17836 echo " "
17837 echo "Looking for the type for group ids returned by getgid()."
17838 set gid_t gidtype xxx stdio.h sys/types.h
17839 eval $typedef
17840 case "$gidtype" in
17841 xxx)
17842         xxx=`./findhdr sys/user.h`
17843         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17844         case $1 in
17845         unsigned) dflt="$1 $2" ;;
17846         *) dflt="$1" ;;
17847         esac
17848         ;;
17849 *) dflt="$gidtype";;
17850 esac
17851 case "$gidtype" in
17852 gid_t) echo "gid_t found." ;;
17853 *)      rp="What is the type for group ids returned by getgid()?"
17854         . ./myread
17855         gidtype="$ans"
17856         ;;
17857 esac
17858
17859 echo " "
17860 case "$gidtype" in
17861 *_t) zzz="$gidtype"     ;;
17862 *)   zzz="gid"          ;;
17863 esac
17864 echo "Checking the size of $zzz..." >&4 
17865 cat > try.c <<EOCP
17866 #include <sys/types.h>
17867 #include <stdio.h>
17868 #$i_stdlib I_STDLIB
17869 #ifdef I_STDLIB
17870 #include <stdlib.h>
17871 #endif
17872 int main() {
17873     printf("%d\n", (int)sizeof($gidtype));
17874     exit(0);
17875 }
17876 EOCP
17877 set try
17878 if eval $compile_ok; then
17879         yyy=`$run ./try`
17880         case "$yyy" in
17881         '')     gidsize=4
17882                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17883                 ;;
17884         *)      gidsize=$yyy
17885                 echo "Your $zzz is $gidsize bytes long."
17886                 ;;
17887         esac
17888 else
17889         gidsize=4
17890         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17891 fi
17892
17893
17894 echo " "
17895 case "$gidtype" in
17896 *_t) zzz="$gidtype"     ;;
17897 *)   zzz="gid"          ;;
17898 esac
17899 echo "Checking the sign of $zzz..." >&4 
17900 cat > try.c <<EOCP
17901 #include <sys/types.h>
17902 #include <stdio.h>
17903 int main() {
17904         $gidtype foo = -1;
17905         if (foo < 0)
17906                 printf("-1\n");
17907         else
17908                 printf("1\n");
17909 }
17910 EOCP
17911 set try
17912 if eval $compile; then
17913         yyy=`$run ./try`
17914         case "$yyy" in
17915         '')     gidsign=1
17916                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17917                 ;;
17918         *)      gidsign=$yyy
17919                 case "$gidsign" in
17920                  1) echo "Your $zzz is unsigned." ;;
17921                 -1) echo "Your $zzz is signed."   ;;
17922                 esac
17923                 ;;
17924         esac
17925 else
17926         gidsign=1
17927         echo "(I can't compile the test program--guessing unsigned.)" >&4
17928 fi
17929
17930
17931 echo " "
17932
17933 if $test X"$quadtype" != X; then
17934
17935 echo "Checking how to print 64-bit integers..." >&4
17936
17937 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
17938         $cat >try.c <<'EOCP'
17939 #include <sys/types.h>
17940 #include <stdio.h>
17941 int main() {
17942   int q = 12345678901;
17943   printf("%ld\n", q);
17944 }
17945 EOCP
17946         set try
17947         if eval $compile; then
17948                 yyy=`$run ./try`
17949                 case "$yyy" in
17950                 12345678901)
17951                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
17952                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
17953                         echo "We will use %d."
17954                         ;;
17955                 esac
17956         fi
17957 fi
17958
17959 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
17960         $cat >try.c <<'EOCP'
17961 #include <sys/types.h>
17962 #include <stdio.h>
17963 int main() {
17964   long q = 12345678901;
17965   printf("%ld\n", q);
17966 }
17967 EOCP
17968         set try
17969         if eval $compile; then
17970                 yyy=`$run ./try`
17971                 case "$yyy" in
17972                 12345678901)
17973                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
17974                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
17975                         echo "We will use %ld."
17976                         ;;
17977                 esac
17978         fi
17979 fi
17980
17981 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
17982         $cat >try.c <<'EOCP'
17983 #include <sys/types.h>
17984 #include <inttypes.h>
17985 #include <stdio.h>
17986 int main() {
17987   int64_t q = 12345678901;
17988   printf("%" PRId64 "\n", q);
17989 }
17990 EOCP
17991         set try
17992         if eval $compile; then
17993                 yyy=`$run ./try`
17994                 case "$yyy" in
17995                 12345678901)
17996                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
17997                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
17998                         echo "We will use the C9X style."
17999                         ;;
18000                 esac
18001         fi
18002 fi
18003
18004 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18005         $cat >try.c <<EOCP
18006 #include <sys/types.h>
18007 #include <stdio.h>
18008 int main() {
18009   $quadtype q = 12345678901;
18010   printf("%Ld\n", q);
18011 }
18012 EOCP
18013         set try
18014         if eval $compile; then
18015                 yyy=`$run ./try`
18016                 case "$yyy" in
18017                 12345678901)
18018                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18019                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18020                         echo "We will use %Ld."
18021                         ;;
18022                 esac
18023         fi
18024 fi
18025
18026 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18027         $cat >try.c <<'EOCP'
18028 #include <sys/types.h>
18029 #include <stdio.h>
18030 int main() {
18031   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18032   printf("%lld\n", q);
18033 }
18034 EOCP
18035         set try
18036         if eval $compile; then
18037                 yyy=`$run ./try`
18038                 case "$yyy" in
18039                 12345678901)
18040                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18041                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18042                         echo "We will use the %lld style."
18043                         ;;
18044                 esac
18045         fi
18046 fi
18047
18048 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18049         $cat >try.c <<EOCP
18050 #include <sys/types.h>
18051 #include <stdio.h>
18052 int main() {
18053   $quadtype q = 12345678901;
18054   printf("%qd\n", q);
18055 }
18056 EOCP
18057         set try
18058         if eval $compile; then
18059                 yyy=`$run ./try`
18060                 case "$yyy" in
18061                 12345678901)
18062                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18063                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18064                         echo "We will use %qd."
18065                         ;;
18066                 esac
18067         fi
18068 fi
18069
18070 if $test X"$sPRId64" = X; then
18071         echo "Cannot figure out how to print 64-bit integers." >&4
18072 fi
18073
18074 $rm -f try try.*
18075
18076 fi
18077
18078 case "$sPRId64" in
18079 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18080         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18081         ;;
18082 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18083         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18084         ;;
18085 esac
18086
18087
18088 echo " "
18089 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18090
18091 if $test X"$ivsize" = X8; then
18092         ivdformat="$sPRId64"
18093         uvuformat="$sPRIu64"
18094         uvoformat="$sPRIo64"
18095         uvxformat="$sPRIx64"
18096         uvXUformat="$sPRIXU64"
18097 else
18098         if $test X"$ivsize" = X"$longsize"; then
18099                 ivdformat='"ld"'
18100                 uvuformat='"lu"'
18101                 uvoformat='"lo"'
18102                 uvxformat='"lx"'
18103                 uvXUformat='"lX"'
18104         else
18105                 if $test X"$ivsize" = X"$intsize"; then
18106                         ivdformat='"d"'
18107                         uvuformat='"u"'
18108                         uvoformat='"o"'
18109                         uvxformat='"x"'
18110                         uvXUformat='"X"'
18111                 else
18112                         : far out
18113                         if $test X"$ivsize" = X"$shortsize"; then
18114                                 ivdformat='"hd"'
18115                                 uvuformat='"hu"'
18116                                 uvoformat='"ho"'
18117                                 uvxformat='"hx"'
18118                                 uvXUformat='"hX"'
18119                         fi
18120                 fi
18121         fi
18122 fi
18123
18124 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18125         nveformat="$sPRIeldbl"
18126         nvfformat="$sPRIfldbl"
18127         nvgformat="$sPRIgldbl"
18128         nvEUformat="$sPRIEUldbl"
18129         nvFUformat="$sPRIFUldbl"
18130         nvGUformat="$sPRIGUldbl"
18131 else
18132         nveformat='"e"'
18133         nvfformat='"f"'
18134         nvgformat='"g"'
18135         nvEUformat='"E"'
18136         nvFUformat='"F"'
18137         nvGUformat='"G"'
18138 fi
18139
18140 case "$ivdformat" in
18141 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18142     exit 1
18143     ;;
18144 esac
18145
18146
18147 echo " "
18148 $echo "Checking the format string to be used for gids..." >&4
18149
18150 case "$gidsign" in
18151 -1)     if $test X"$gidsize" = X"$ivsize"; then
18152                 gidformat="$ivdformat"
18153         else
18154                 if $test X"$gidsize" = X"$longsize"; then
18155                         gidformat='"ld"'
18156                 else
18157                         if $test X"$gidsize" = X"$intsize"; then
18158                                 gidformat='"d"'
18159                         else
18160                                 if $test X"$gidsize" = X"$shortsize"; then
18161                                         gidformat='"hd"'
18162                                 fi
18163                         fi
18164                 fi
18165         fi
18166         ;;
18167 *)      if $test X"$gidsize" = X"$uvsize"; then
18168                 gidformat="$uvuformat"
18169         else
18170                 if $test X"$gidsize" = X"$longsize"; then
18171                         gidformat='"lu"'
18172                 else
18173                         if $test X"$gidsize" = X"$intsize"; then
18174                                 gidformat='"u"'
18175                         else
18176                                 if $test X"$gidsize" = X"$shortsize"; then
18177                                         gidformat='"hu"'
18178                                 fi
18179                         fi
18180                 fi
18181         fi
18182         ;;
18183 esac
18184
18185 : see if getgroups exists
18186 set getgroups d_getgrps
18187 eval $inlibc
18188
18189 : see if setgroups exists
18190 set setgroups d_setgrps
18191 eval $inlibc
18192
18193
18194 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18195 echo " "
18196 case "$d_getgrps$d_setgrps" in
18197 *define*)
18198         case "$groupstype" in
18199         '') dflt="$gidtype" ;;
18200         *)  dflt="$groupstype" ;;
18201         esac
18202         $cat <<EOM
18203 What type of pointer is the second argument to getgroups() and setgroups()?
18204 Usually this is the same as group ids, $gidtype, but not always.
18205
18206 EOM
18207         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18208         . ./myread
18209         groupstype="$ans"
18210         ;;
18211 *)  groupstype="$gidtype";;
18212 esac
18213
18214 echo " "
18215 echo "Checking if your $make program sets \$(MAKE)..." >&4
18216 case "$make_set_make" in
18217 '')
18218         $sed 's/^X //' > testmake.mak << 'EOF'
18219 Xall:
18220 X       @echo 'maketemp="$(MAKE)"'
18221 EOF
18222         case "`$make -f testmake.mak 2>/dev/null`" in
18223         *maketemp=*) make_set_make='#' ;;
18224         *)      make_set_make="MAKE=$make" ;;
18225         esac
18226         $rm -f testmake.mak
18227         ;;
18228 esac
18229 case "$make_set_make" in
18230 '#') echo "Yup, it does.";;
18231 *) echo "Nope, it doesn't.";;
18232 esac
18233
18234 : see what type is used for mode_t
18235 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18236 set mode_t modetype int stdio.h sys/types.h
18237 eval $typedef_ask
18238
18239 : see if stdarg is available
18240 echo " "
18241 if $test `./findhdr stdarg.h`; then
18242         echo "<stdarg.h> found." >&4
18243         valstd="$define"
18244 else
18245         echo "<stdarg.h> NOT found." >&4
18246         valstd="$undef"
18247 fi
18248
18249 : see if varags is available
18250 echo " "
18251 if $test `./findhdr varargs.h`; then
18252         echo "<varargs.h> found." >&4
18253 else
18254         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18255 fi
18256
18257 : set up the varargs testing programs
18258 $cat > varargs.c <<EOP
18259 #ifdef I_STDARG
18260 #include <stdarg.h>
18261 #endif
18262 #ifdef I_VARARGS
18263 #include <varargs.h>
18264 #endif
18265
18266 #ifdef I_STDARG
18267 int f(char *p, ...)
18268 #else
18269 int f(va_alist)
18270 va_dcl
18271 #endif
18272 {
18273         va_list ap;
18274 #ifndef I_STDARG
18275         char *p;
18276 #endif
18277 #ifdef I_STDARG
18278         va_start(ap,p);
18279 #else
18280         va_start(ap);
18281         p = va_arg(ap, char *);
18282 #endif
18283         va_end(ap);
18284 }
18285 EOP
18286 $cat > varargs <<EOP
18287 $startsh
18288 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18289         echo "true"
18290 else
18291         echo "false"
18292 fi
18293 $rm -f varargs$_o
18294 EOP
18295 chmod +x varargs
18296
18297 : now check which varargs header should be included
18298 echo " "
18299 i_varhdr=''
18300 case "$valstd" in
18301 "$define")
18302         if `./varargs I_STDARG`; then
18303                 val='stdarg.h'
18304         elif `./varargs I_VARARGS`; then
18305                 val='varargs.h'
18306         fi
18307         ;;
18308 *)
18309         if `./varargs I_VARARGS`; then
18310                 val='varargs.h'
18311         fi
18312         ;;
18313 esac
18314 case "$val" in
18315 '')
18316 echo "I could not find the definition for va_dcl... You have problems..." >&4
18317         val="$undef"; set i_stdarg; eval $setvar
18318         val="$undef"; set i_varargs; eval $setvar
18319         ;;
18320 *) 
18321         set i_varhdr
18322         eval $setvar
18323         case "$i_varhdr" in
18324         stdarg.h)
18325                 val="$define"; set i_stdarg; eval $setvar
18326                 val="$undef"; set i_varargs; eval $setvar
18327                 ;;
18328         varargs.h)
18329                 val="$undef"; set i_stdarg; eval $setvar
18330                 val="$define"; set i_varargs; eval $setvar
18331                 ;;
18332         esac
18333         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18334 esac
18335 $rm -f varargs*
18336
18337 : see if we need va_copy
18338 echo " "
18339 case "$i_stdarg" in
18340 "$define")
18341         $cat >try.c <<EOCP
18342 #include <stdarg.h>
18343 #include <stdio.h>
18344 #$i_stdlib I_STDLIB
18345 #ifdef I_STDLIB
18346 #include <stdlib.h>
18347 #endif
18348 #include <signal.h>
18349
18350 int
18351 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18352 {
18353   return vfprintf(f, fmt, *valp);
18354 }
18355  
18356 int    
18357 myvfprintf(FILE *f, const  char *fmt, va_list val)
18358 {
18359   return ivfprintf(f, fmt, &val);
18360 }
18361       
18362 int
18363 myprintf(char *fmt, ...) 
18364 {
18365   va_list val;
18366   va_start(val, fmt);
18367   return myvfprintf(stdout, fmt, val); 
18368 }         
18369
18370 int
18371 main(int ac, char **av)
18372 {
18373   signal(SIGSEGV, exit);
18374
18375   myprintf("%s%cs all right, then\n", "that", '\'');                            
18376   exit(0);      
18377 }
18378 EOCP
18379         set try
18380         if eval $compile && $run ./try 2>&1 >/dev/null; then
18381                 case "`$run ./try`" in
18382                 "that's all right, then")
18383                         okay=yes
18384                         ;;
18385                 esac
18386         fi
18387         case "$okay" in
18388         yes)    echo "It seems that you don't need va_copy()." >&4
18389                 need_va_copy="$undef"
18390                 ;;
18391         *)      echo "It seems that va_copy() or similar will be needed." >&4
18392                 need_va_copy="$define"
18393                 ;;
18394         esac
18395         $rm -f try.* core core.* *.core *.core.*
18396         ;;
18397 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18398         ;;
18399 esac
18400
18401 : see what type is used for size_t
18402 rp="What is the type used for the length parameter for string functions?"
18403 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18404 eval $typedef_ask
18405
18406 : check for type of arguments to gethostbyaddr. 
18407 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18408         case "$d_gethbyaddr" in
18409         $define)
18410                 $cat <<EOM
18411
18412 Checking to see what type of arguments are accepted by gethostbyaddr().
18413 EOM
18414                 hdrs="$define sys/types.h
18415                         $d_socket sys/socket.h 
18416                         $i_niin netinet/in.h 
18417                         $i_netdb netdb.h
18418                         $i_unistd unistd.h"
18419                 : The first arg can 'char *' or 'void *'
18420                 : The second arg is some of integral type
18421                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18422                         for yyy in size_t long int; do
18423                                 case "$netdb_host_type" in
18424                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18425                                         if ./protochk "$try" $hdrs; then
18426                                                 echo "Your system accepts $xxx for the first arg."
18427                                                 echo "...and $yyy for the second arg."
18428                                                 netdb_host_type="$xxx"
18429                                                 netdb_hlen_type="$yyy"
18430                                         fi
18431                                         ;;
18432                                 esac
18433                         done
18434                 done
18435                 : In case none of those worked, prompt the user.
18436                 case "$netdb_host_type" in
18437                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18438                         dflt='char *'
18439                         . ./myread
18440                         netdb_host_type=$ans
18441                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18442                         dflt="$sizetype"
18443                         . ./myread
18444                         netdb_hlen_type=$ans
18445                         ;;
18446                 esac
18447                 ;;
18448         *)      : no gethostbyaddr, so pick harmless defaults
18449                 netdb_host_type='char *'
18450                 netdb_hlen_type="$sizetype"
18451                 ;;
18452         esac
18453         # Remove the "const" if needed. -- but then we'll have a 
18454         # prototype clash!
18455         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18456 fi
18457
18458 : check for type of argument to gethostbyname. 
18459 if test "X$netdb_name_type" = X ; then
18460         case "$d_gethbyname" in
18461         $define)
18462                 $cat <<EOM
18463
18464 Checking to see what type of argument is accepted by gethostbyname().
18465 EOM
18466                 hdrs="$define sys/types.h
18467                         $d_socket sys/socket.h 
18468                         $i_niin netinet/in.h 
18469                         $i_netdb netdb.h
18470                         $i_unistd unistd.h"
18471                 for xxx in "const char *" "char *"; do
18472                         case "$netdb_name_type" in
18473                         '')     try="extern struct hostent *gethostbyname($xxx);"
18474                                 if ./protochk "$try" $hdrs; then
18475                                         echo "Your system accepts $xxx."
18476                                         netdb_name_type="$xxx"
18477                                 fi
18478                                 ;;
18479                         esac
18480                 done
18481                 : In case none of those worked, prompt the user.
18482                 case "$netdb_name_type" in
18483                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18484                         dflt='char *'
18485                         . ./myread
18486                         netdb_name_type=$ans
18487                         ;;
18488                 esac
18489                 ;;
18490         *)      : no gethostbyname, so pick harmless default
18491                 netdb_name_type='char *'
18492                 ;;
18493         esac
18494 fi
18495
18496 : check for type of 1st argument to getnetbyaddr. 
18497 if test "X$netdb_net_type" = X ; then
18498         case "$d_getnbyaddr" in
18499         $define)
18500                 $cat <<EOM
18501
18502 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18503 EOM
18504                 hdrs="$define sys/types.h
18505                         $d_socket sys/socket.h 
18506                         $i_niin netinet/in.h 
18507                         $i_netdb netdb.h
18508                         $i_unistd unistd.h"
18509                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18510                         case "$netdb_net_type" in
18511                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18512                                 if ./protochk "$try" $hdrs; then
18513                                         echo "Your system accepts $xxx."
18514                                         netdb_net_type="$xxx"
18515                                 fi
18516                                 ;;
18517                         esac
18518                 done
18519                 : In case none of those worked, prompt the user.
18520                 case "$netdb_net_type" in
18521                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18522                         dflt='long'
18523                         . ./myread
18524                         netdb_net_type=$ans
18525                         ;;
18526                 esac
18527                 ;;
18528         *)      : no getnetbyaddr, so pick harmless default
18529                 netdb_net_type='long'
18530                 ;;
18531         esac
18532 fi
18533 : locate the preferred pager for this system
18534 fn=f/
18535 case "$pager" in
18536 '')
18537         dflt=''
18538         case "$pg" in
18539         /*) dflt=$pg;;
18540         [a-zA-Z]:/*) dflt=$pg;;
18541         esac
18542         case "$more" in
18543         /*) dflt=$more;;
18544         [a-zA-Z]:/*) dflt=$more;;
18545         esac
18546         case "$less" in
18547         /*) dflt=$less;;
18548         [a-zA-Z]:/*) dflt=$less;;
18549         esac
18550         case "$dflt" in
18551         '') dflt=/usr/ucb/more;;
18552         esac
18553         ;;
18554 *)      dflt="$pager"
18555         : Instruct ./getfile to trust the hinted or previous pager value,
18556         : even if it does not begin with a slash.  For example, on os2,
18557         : pager might be cmd /c more.  See comments in UU/getfile.
18558         fn="f/($pager)"
18559         ;;
18560 esac
18561 echo " "
18562 rp='What pager is used on your system?'
18563 . ./getfile
18564 pager="$ans"
18565
18566 : see what type pids are declared as in the kernel
18567 rp="What is the type of process ids on this system?"
18568 set pid_t pidtype int stdio.h sys/types.h
18569 eval $typedef_ask
18570
18571 : Find earliest binary compatible site_perl subdirectory perl can use.
18572 xs_apiversion=$version # The current site_perl version.
18573 : Find earliest pure perl site_perl subdirectory perl can use.
18574 : The versioned directories started at 5.005.
18575 pm_apiversion='5.005'
18576
18577 : see if ar generates random libraries by itself
18578 echo " "
18579 echo "Checking how to generate random libraries on your machine..." >&4
18580 echo 'int bar1() { return bar2(); }' > bar1.c
18581 echo 'int bar2() { return 2; }' > bar2.c
18582 $cat > foo.c <<EOP
18583 #$i_stdlib I_STDLIB
18584 #ifdef I_STDLIB
18585 #include <stdlib.h>
18586 #endif
18587 int main() { printf("%d\n", bar1()); exit(0); }
18588 EOP
18589 $cc $ccflags -c bar1.c >/dev/null 2>&1
18590 $cc $ccflags -c bar2.c >/dev/null 2>&1
18591 $cc $ccflags -c foo.c >/dev/null 2>&1
18592 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18593 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18594         $run ./foobar >/dev/null 2>&1; then
18595         echo "$ar appears to generate random libraries itself."
18596         orderlib=false
18597         ranlib=":"
18598 elif $ar ts bar$_a >/dev/null 2>&1 &&
18599         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18600         $run ./foobar >/dev/null 2>&1; then
18601                 echo "a table of contents needs to be added with '$ar ts'."
18602                 orderlib=false
18603                 ranlib="$ar ts"
18604 else
18605         case "$ranlib" in
18606         :) ranlib='';;
18607         '')
18608                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18609                 $test -f $ranlib || ranlib=''
18610                 ;;
18611         esac
18612         if $test -n "$ranlib"; then
18613                 echo "your system has '$ranlib'; we'll use that."
18614                 orderlib=false
18615         else
18616                 echo "your system doesn't seem to support random libraries"
18617                 echo "so we'll use lorder and tsort to order the libraries."
18618                 orderlib=true
18619                 ranlib=":"
18620         fi
18621 fi
18622 $rm -f foo* bar* 
18623
18624 : check for type of arguments to select. 
18625 case "$selecttype" in
18626 '') case "$d_select" in
18627         $define)
18628                 echo " "
18629                 $cat <<EOM
18630 Checking to see what type of arguments are accepted by select().
18631 EOM
18632                 hdrs="$define sys/types.h
18633                         $i_systime sys/time.h 
18634                         $i_sysselct sys/select.h
18635                         $d_socket sys/socket.h"
18636                 : The first arg can be int, unsigned, or size_t
18637                 : The last arg may or may not be 'const'
18638                 val=''
18639                 : void pointer has been seen but using that
18640                 : breaks the selectminbits test
18641                 for xxx in 'fd_set *' 'int *'; do
18642                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18643                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18644                                         case "$val" in
18645                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18646                                                 if ./protochk "$try" $hdrs; then
18647                                                         echo "Your system accepts $xxx."
18648                                                         val="$xxx"
18649                                                 fi
18650                                                 ;;
18651                                         esac
18652                                 done
18653                         done
18654                 done
18655                 case "$val" in
18656                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18657                         case "$d_fd_set" in
18658                                 $define) dflt="fd_set *" ;;
18659                                 *)              dflt="int *" ;;
18660                         esac
18661                         . ./myread
18662                         val=$ans
18663                         ;;
18664                 esac
18665                 selecttype="$val"
18666                 ;;
18667         *)      : no select, so pick a harmless default
18668                 selecttype='int *'
18669                 ;;
18670         esac
18671         ;;
18672 esac
18673
18674 : check for the select 'width'
18675 case "$selectminbits" in
18676 '') case "$d_select" in
18677         $define)
18678                 $cat <<EOM
18679
18680 Checking to see on how many bits at a time your select() operates...
18681 EOM
18682                 $cat >try.c <<EOCP
18683 #include <sys/types.h>
18684 #$i_time I_TIME
18685 #$i_systime I_SYS_TIME
18686 #$i_systimek I_SYS_TIME_KERNEL
18687 #ifdef I_TIME
18688 #   include <time.h>
18689 #endif
18690 #ifdef I_SYS_TIME
18691 #   ifdef I_SYS_TIME_KERNEL
18692 #       define KERNEL
18693 #   endif
18694 #   include <sys/time.h>
18695 #   ifdef I_SYS_TIME_KERNEL
18696 #       undef KERNEL
18697 #   endif
18698 #endif
18699 #$i_sysselct I_SYS_SELECT
18700 #ifdef I_SYS_SELECT
18701 #include <sys/select.h>
18702 #endif
18703 #$d_socket HAS_SOCKET
18704 #ifdef HAS_SOCKET
18705 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18706 #endif
18707 #include <stdio.h>
18708 #$i_stdlib I_STDLIB
18709 #ifdef I_STDLIB
18710 #include <stdlib.h>
18711 #endif
18712 $selecttype b;
18713 #define S sizeof(*(b))
18714 #define MINBITS 64
18715 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18716 #define NBITS  (NBYTES * 8)
18717 int main() {
18718     char s[NBYTES];
18719     struct timeval t;
18720     int i;
18721     FILE* fp;
18722     int fd;
18723
18724     fclose(stdin);
18725     fp = fopen("try.c", "r");
18726     if (fp == 0)
18727       exit(1);
18728     fd = fileno(fp);
18729     if (fd < 0)
18730       exit(2);
18731     b = ($selecttype)s;
18732     for (i = 0; i < NBITS; i++)
18733         FD_SET(i, b);
18734     t.tv_sec  = 0;
18735     t.tv_usec = 0;
18736     select(fd + 1, b, 0, 0, &t);
18737     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18738     printf("%d\n", i + 1);
18739     return 0;
18740 }
18741 EOCP
18742                 set try
18743                 if eval $compile_ok; then
18744                         selectminbits=`$run ./try`
18745                         case "$selectminbits" in
18746                         '')     cat >&4 <<EOM
18747 Cannot figure out on how many bits at a time your select() operates.
18748 I'll play safe and guess it is 32 bits.
18749 EOM
18750                                 selectminbits=32
18751                                 bits="32 bits"
18752                                 ;;
18753                         1)      bits="1 bit" ;;
18754                         *)      bits="$selectminbits bits" ;;
18755                         esac
18756                         echo "Your select() operates on $bits at a time." >&4
18757                 else
18758                         rp='What is the minimum number of bits your select() operates on?'
18759                         case "$byteorder" in
18760                         1234|12345678)  dflt=32 ;;
18761                         *)              dflt=1  ;;
18762                         esac
18763                         . ./myread
18764                         val=$ans
18765                         selectminbits="$val"
18766                 fi
18767                 $rm -f try.* try
18768                 ;;
18769         *)      : no select, so pick a harmless default
18770                 selectminbits='32'
18771                 ;;
18772         esac
18773         ;;
18774 esac
18775
18776 : Trace out the files included by signal.h, then look for SIGxxx names.
18777 : Remove SIGARRAYSIZE used by HPUX.
18778 : Remove SIGSTKSIZE used by Linux.
18779 : Remove SIGSTKSZ used by Posix.
18780 : Remove SIGTYP void lines used by OS2.
18781 : Some cpps, like os390, dont give the file name anywhere
18782 if [ "X$fieldn" = X ]; then
18783         : Just make some guesses.  We check them later.
18784         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18785 else
18786         xxx=`echo '#include <signal.h>' |
18787         $cppstdin $cppminus $cppflags 2>/dev/null |
18788         $grep '^[       ]*#.*include' | 
18789         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18790 fi
18791 : Check this list of files to be sure we have parsed the cpp output ok.
18792 : This will also avoid potentially non-existent files, such 
18793 : as ../foo/bar.h
18794 xxxfiles=''
18795 for xx in $xxx /dev/null ; do
18796         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18797 done
18798 : If we have found no files, at least try signal.h
18799 case "$xxxfiles" in
18800 '')     xxxfiles=`./findhdr signal.h` ;;
18801 esac
18802 xxx=`awk '
18803 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18804         print substr($2, 4, 20)
18805 }
18806 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18807         print substr($3, 4, 20)
18808 }' $xxxfiles`
18809 : Append some common names just in case the awk scan failed.
18810 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18811 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18812 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18813 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18814 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18815
18816 : generate a few handy files for later
18817 $cat > signal.c <<EOCP
18818 #include <sys/types.h>
18819 #include <signal.h>
18820 #$i_stdlib I_STDLIB
18821 #ifdef I_STDLIB
18822 #include <stdlib.h>
18823 #endif
18824 #include <stdio.h>
18825 int main() {
18826
18827 /* Strange style to avoid deeply-nested #if/#else/#endif */
18828 #ifndef NSIG
18829 #  ifdef _NSIG
18830 #    define NSIG (_NSIG)
18831 #  endif
18832 #endif
18833
18834 #ifndef NSIG
18835 #  ifdef SIGMAX
18836 #    define NSIG (SIGMAX+1)
18837 #  endif
18838 #endif
18839
18840 #ifndef NSIG
18841 #  ifdef SIG_MAX
18842 #    define NSIG (SIG_MAX+1)
18843 #  endif
18844 #endif
18845
18846 #ifndef NSIG
18847 #  ifdef MAXSIG
18848 #    define NSIG (MAXSIG+1)
18849 #  endif
18850 #endif
18851
18852 #ifndef NSIG
18853 #  ifdef MAX_SIG
18854 #    define NSIG (MAX_SIG+1)
18855 #  endif
18856 #endif
18857
18858 #ifndef NSIG
18859 #  ifdef SIGARRAYSIZE
18860 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18861 #  endif
18862 #endif
18863
18864 #ifndef NSIG
18865 #  ifdef _sys_nsig
18866 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18867 #  endif
18868 #endif
18869
18870 /* Default to some arbitrary number that's big enough to get most
18871    of the common signals.
18872 */
18873 #ifndef NSIG
18874 #    define NSIG 50
18875 #endif
18876
18877 printf("NSIG %d\n", NSIG);
18878
18879 #ifndef JUST_NSIG
18880
18881 EOCP
18882
18883 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18884 {
18885         printf "#ifdef SIG"; printf $1; printf "\n"
18886         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18887         printf $1; printf ");\n"
18888         printf "#endif\n"
18889 }
18890 END {
18891         printf "#endif /* JUST_NSIG */\n";
18892         printf "exit(0);\n}\n";
18893 }
18894 ' >>signal.c
18895 $cat >signal.awk <<'EOP'
18896 BEGIN { ndups = 0 }
18897 $1 ~ /^NSIG$/ { nsig = $2 }
18898 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18899     if ($2 > maxsig) { maxsig = $2 }
18900     if (sig_name[$2]) {
18901         dup_name[ndups] = $1
18902         dup_num[ndups] = $2
18903         ndups++ 
18904     }
18905     else {
18906         sig_name[$2] = $1
18907         sig_num[$2] = $2
18908     }
18909 }
18910 END { 
18911     if (nsig == 0) {
18912         nsig = maxsig + 1
18913     }
18914     printf("NSIG %d\n", nsig);
18915     for (n = 1; n < nsig; n++) {
18916         if (sig_name[n]) {
18917             printf("%s %d\n", sig_name[n], sig_num[n])
18918         }
18919         else {
18920             printf("NUM%d %d\n", n, n) 
18921         }
18922     }
18923     for (n = 0; n < ndups; n++) {
18924         printf("%s %d\n", dup_name[n], dup_num[n])
18925     }
18926 }
18927 EOP
18928 $cat >signal_cmd <<EOS
18929 $startsh
18930 if $test -s signal.lst; then
18931     echo "Using your existing signal.lst file"
18932         exit 0
18933 fi
18934 xxx="$xxx"
18935 EOS
18936 $cat >>signal_cmd <<'EOS'
18937
18938 set signal
18939 if eval $compile_ok; then
18940         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
18941 else
18942         echo "(I can't seem be able to compile the whole test program)" >&4
18943         echo "(I'll try it in little pieces.)" >&4
18944         set signal -DJUST_NSIG
18945         if eval $compile_ok; then
18946                 $run ./signal$_exe > signal.nsg
18947                 $cat signal.nsg
18948         else
18949                 echo "I can't seem to figure out how many signals you have." >&4
18950                 echo "Guessing 50." >&4
18951                 echo 'NSIG 50' > signal.nsg
18952         fi
18953         : Now look at all the signal names, one at a time.
18954         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
18955                 $cat > signal.c <<EOCP
18956 #include <sys/types.h>
18957 #include <signal.h>
18958 #include <stdio.h>
18959 int main() {
18960 printf("$xx %d\n", SIG${xx});
18961 return 0;
18962 }
18963 EOCP
18964                 set signal
18965                 if eval $compile; then
18966                         echo "SIG${xx} found."
18967                         $run ./signal$_exe  >> signal.ls1
18968                 else
18969                         echo "SIG${xx} NOT found."
18970                 fi
18971         done
18972         if $test -s signal.ls1; then
18973                 $cat signal.nsg signal.ls1 |
18974                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
18975         fi
18976
18977 fi
18978 if $test -s signal.lst; then
18979         :
18980 else
18981         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
18982         echo 'kill -l' >signal
18983         set X `csh -f <signal`
18984         $rm -f signal
18985         shift
18986         case $# in
18987         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
18988         esac
18989         echo $@ | $tr ' ' $trnl | \
18990             $awk '{ printf "%s %d\n", $1, ++s; }
18991                   END { printf "NSIG %d\n", ++s }' >signal.lst
18992 fi
18993 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
18994 EOS
18995 chmod a+x signal_cmd
18996 $eunicefix signal_cmd
18997
18998 : generate list of signal names
18999 echo " "
19000 case "$sig_name_init" in
19001 '') doinit=yes ;;
19002 *)  case "$sig_num_init" in
19003     ''|*,*) doinit=yes ;;
19004     esac ;;
19005 esac
19006 case "$doinit" in
19007 yes)
19008         echo "Generating a list of signal names and numbers..." >&4
19009         . ./signal_cmd
19010         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19011         sig_name=`$awk 'BEGIN { printf "ZERO " }
19012                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19013         sig_num=`$awk  'BEGIN { printf "0 " }
19014                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19015         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19016                              !/^NSIG/   { printf "\"%s\", ", $1 }
19017                              END        { printf "0\n" }' signal.lst`
19018         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19019                              !/^NSIG/   { printf "%d, ", $2}
19020                              END        { printf "0\n"}' signal.lst`
19021         ;;
19022 esac
19023 echo "The following $sig_count signals are available:"
19024 echo " "
19025 echo $sig_name | $awk \
19026 'BEGIN { linelen = 0 }
19027 {
19028         for (i = 1; i <= NF; i++) {
19029                 name = "SIG" $i " "
19030                 linelen = linelen + length(name)
19031                 if (linelen > 70) {
19032                         printf "\n"
19033                         linelen = length(name)
19034                 }
19035                 printf "%s", name
19036         }
19037         printf "\n"
19038 }'
19039 sig_size=`echo $sig_name | awk '{print NF}'`
19040 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19041
19042 echo " "
19043 case "$sizetype" in
19044 *_t) zzz="$sizetype"    ;;
19045 *)   zzz="filesize"     ;;
19046 esac
19047 echo "Checking the size of $zzz..." >&4 
19048 cat > try.c <<EOCP
19049 #include <sys/types.h>
19050 #include <stdio.h>
19051 #$i_stdlib I_STDLIB
19052 #ifdef I_STDLIB
19053 #include <stdlib.h>
19054 #endif
19055 int main() {
19056     printf("%d\n", (int)sizeof($sizetype));
19057     exit(0);
19058 }
19059 EOCP
19060 set try
19061 if eval $compile_ok; then
19062         yyy=`$run ./try`
19063         case "$yyy" in
19064         '')     sizesize=4
19065                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19066                 ;;
19067         *)      sizesize=$yyy
19068                 echo "Your $zzz size is $sizesize bytes."
19069                 ;;
19070         esac
19071 else
19072         sizesize=4
19073         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19074 fi
19075
19076
19077 : check for socklen_t
19078 echo " "
19079 echo "Checking to see if you have socklen_t..." >&4
19080 $cat >try.c <<EOCP
19081 #include <sys/types.h>
19082 #$d_socket HAS_SOCKET
19083 #ifdef HAS_SOCKET
19084 #include <sys/socket.h>
19085 #endif
19086 int main() { socklen_t x = 16; }
19087 EOCP
19088 set try
19089 if eval $compile; then
19090         val="$define"
19091         echo "You have socklen_t."
19092 else
19093         val="$undef"
19094         echo "You do not have socklen_t."
19095         case "$sizetype" in
19096         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19097         esac
19098 fi
19099 $rm -f try try.*
19100 set d_socklen_t
19101 eval $setvar
19102
19103 : see if this is a socks.h system
19104 set socks.h i_socks
19105 eval $inhdr
19106
19107 : check for type of the size argument to socket calls
19108 case "$d_socket" in
19109 "$define")
19110         $cat <<EOM
19111
19112 Checking to see what type is the last argument of accept().
19113 EOM
19114         yyy=''
19115         case "$d_socklen_t" in
19116         "$define") yyy="$yyy socklen_t"
19117         esac
19118         yyy="$yyy $sizetype int long unsigned"
19119         for xxx in $yyy; do
19120                 case "$socksizetype" in
19121                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19122                         case "$usesocks" in
19123                         "$define")
19124                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19125                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19126                                         socksizetype="$xxx"
19127                                 fi
19128                                 ;;
19129                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19130                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19131                                         socksizetype="$xxx"
19132                                 fi
19133                                 ;;
19134                         esac
19135                         ;;
19136                 esac
19137         done
19138 : In case none of those worked, prompt the user.
19139         case "$socksizetype" in
19140         '')     rp='What is the type for socket address structure sizes?'
19141                 dflt='int'
19142                 . ./myread
19143                 socksizetype=$ans
19144                 ;;
19145         esac
19146         ;;
19147 *)      : no sockets, so pick relatively harmless default
19148         socksizetype='int'
19149         ;;
19150 esac
19151
19152 : see what type is used for signed size_t
19153 set ssize_t ssizetype int stdio.h sys/types.h
19154 eval $typedef
19155 dflt="$ssizetype"
19156 $cat > try.c <<EOM
19157 #include <stdio.h>
19158 #$i_stdlib I_STDLIB
19159 #ifdef I_STDLIB
19160 #include <stdlib.h>
19161 #endif
19162 #include <sys/types.h>
19163 #define Size_t $sizetype
19164 #define SSize_t $dflt
19165 int main()
19166 {
19167         if (sizeof(Size_t) == sizeof(SSize_t))
19168                 printf("$dflt\n");
19169         else if (sizeof(Size_t) == sizeof(int))
19170                 printf("int\n");
19171         else 
19172                 printf("long\n");
19173         exit(0);
19174 }
19175 EOM
19176 echo " "
19177 set try
19178 if eval $compile_ok && $run ./try > /dev/null; then
19179         ssizetype=`$run ./try`
19180         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19181 else
19182         $cat >&4 <<EOM
19183 Help! I can't compile and run the ssize_t test program: please enlighten me!
19184 (This is probably a misconfiguration in your system or libraries, and
19185 you really ought to fix it.  Still, I'll try anyway.)
19186
19187 I need a type that is the same size as $sizetype, but is guaranteed to
19188 be signed.  Common values are ssize_t, int and long.
19189
19190 EOM
19191         rp="What signed type is the same size as $sizetype?"
19192         . ./myread
19193         ssizetype="$ans"
19194 fi
19195 $rm -f try try.*
19196
19197 : see what type of char stdio uses.
19198 echo " "
19199 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19200 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19201         echo "Your stdio uses unsigned chars." >&4
19202         stdchar="unsigned char"
19203 else
19204         echo "Your stdio uses signed chars." >&4
19205         stdchar="char"
19206 fi
19207 $rm -f stdioh
19208
19209
19210
19211 : see what type uids are declared as in the kernel
19212 echo " "
19213 echo "Looking for the type for user ids returned by getuid()."
19214 set uid_t uidtype xxx stdio.h sys/types.h
19215 eval $typedef
19216 case "$uidtype" in
19217 xxx)
19218         xxx=`./findhdr sys/user.h`
19219         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19220         case $1 in
19221         unsigned) dflt="$1 $2" ;;
19222         *) dflt="$1" ;;
19223         esac
19224         ;;
19225 *) dflt="$uidtype";;
19226 esac
19227 case "$uidtype" in
19228 uid_t)  echo "uid_t found." ;;
19229 *)      rp="What is the type for user ids returned by getuid()?"
19230         . ./myread
19231         uidtype="$ans"
19232         ;;
19233 esac
19234
19235 echo " "
19236 case "$uidtype" in
19237 *_t) zzz="$uidtype"     ;;
19238 *)   zzz="uid"          ;;
19239 esac
19240 echo "Checking the size of $zzz..." >&4 
19241 cat > try.c <<EOCP
19242 #include <sys/types.h>
19243 #include <stdio.h>
19244 #$i_stdlib I_STDLIB
19245 #ifdef I_STDLIB
19246 #include <stdlib.h>
19247 #endif
19248 int main() {
19249     printf("%d\n", (int)sizeof($uidtype));
19250     exit(0);
19251 }
19252 EOCP
19253 set try
19254 if eval $compile_ok; then
19255         yyy=`$run ./try`
19256         case "$yyy" in
19257         '')     uidsize=4
19258                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19259                 ;;
19260         *)      uidsize=$yyy
19261                 echo "Your $zzz is $uidsize bytes long."
19262                 ;;
19263         esac
19264 else
19265         uidsize=4
19266         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19267 fi
19268
19269 echo " "
19270 case "$uidtype" in
19271 *_t) zzz="$uidtype"     ;;
19272 *)   zzz="uid"          ;;
19273 esac
19274 echo "Checking the sign of $zzz..." >&4
19275 cat > try.c <<EOCP
19276 #include <sys/types.h>
19277 #include <stdio.h>
19278 int main() {
19279         $uidtype foo = -1;
19280         if (foo < 0)
19281                 printf("-1\n");
19282         else
19283                 printf("1\n");
19284 }
19285 EOCP
19286 set try
19287 if eval $compile; then
19288         yyy=`$run ./try`
19289         case "$yyy" in
19290         '')     uidsign=1
19291                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19292                 ;;
19293         *)      uidsign=$yyy
19294                 case "$uidsign" in
19295                  1) echo "Your $zzz is unsigned." ;;
19296                 -1) echo "Your $zzz is signed."   ;;
19297                 esac
19298                 ;;
19299         esac
19300 else
19301         uidsign=1
19302         echo "(I can't compile the test program--guessing unsigned.)" >&4
19303 fi
19304
19305
19306
19307 echo " "
19308 $echo "Checking the format string to be used for uids..." >&4
19309
19310 case "$uidsign" in
19311 -1)     if $test X"$uidsize" = X"$ivsize"; then
19312                 uidformat="$ivdformat"
19313         else
19314                 if $test X"$uidsize" = X"$longsize"; then
19315                         uidformat='"ld"'
19316                 else
19317                         if $test X"$uidsize" = X"$intsize"; then
19318                                 uidformat='"d"'
19319                         else
19320                                 if $test X"$uidsize" = X"$shortsize"; then
19321                                         uidformat='"hd"'
19322                                 fi
19323                         fi
19324                 fi
19325         fi
19326         ;;
19327 *)      if $test X"$uidsize" = X"$uvsize"; then
19328                 uidformat="$uvuformat"
19329         else
19330                 if $test X"$uidsize" = X"$longsize"; then
19331                         uidformat='"lu"'
19332                 else
19333                         if $test X"$uidsize" = X"$intsize"; then
19334                                 uidformat='"u"'
19335                         else
19336                                 if $test X"$uidsize" = X"$shortsize"; then
19337                                         uidformat='"hu"'
19338                                 fi
19339                         fi
19340                 fi
19341         fi
19342         ;;
19343 esac
19344
19345 : determine compiler compiler
19346 case "$yacc" in
19347 '')
19348         dflt=yacc;;
19349 *)
19350         dflt="$yacc";;
19351 esac
19352 echo " "
19353 comp='yacc'
19354 if $test -f "$byacc$_exe"; then
19355         dflt="$byacc"
19356         comp="byacc or $comp"
19357 fi
19358 if $test -f "$bison$_exe"; then
19359         comp="$comp or bison -y"
19360 fi
19361 rp="Which compiler compiler ($comp) shall I use?"
19362 . ./myread
19363 yacc="$ans"
19364 case "$yacc" in
19365 *bis*)
19366         case "$yacc" in
19367         *-y*) ;;
19368         *)
19369                 yacc="$yacc -y"
19370                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19371                 ;;
19372         esac
19373         ;;
19374 esac
19375
19376 : see if this is a fp.h system
19377 set fp.h i_fp
19378 eval $inhdr
19379
19380 : see if this is a fp_class.h system
19381 set fp_class.h i_fp_class
19382 eval $inhdr
19383
19384 : see if this is a ieeefp.h system
19385 case "$i_ieeefp" in
19386 '' ) set ieeefp.h i_ieeefp
19387      eval $inhdr
19388      ;;
19389 esac
19390
19391 : see if this is a libutil.h system
19392 set libutil.h i_libutil
19393 eval $inhdr
19394
19395 : see if mach cthreads are available
19396 if test "X$usethreads" = "X$define"; then
19397         set mach/cthreads.h i_machcthr
19398         eval $inhdr
19399 else
19400         i_machcthr="$undef"
19401 fi
19402
19403
19404
19405 : see if this is a math.h system
19406 set math.h i_math
19407 eval $inhdr
19408
19409 : see if this is a mntent.h system
19410 set mntent.h i_mntent
19411 eval $inhdr
19412
19413 : see if ndbm.h is available
19414 set ndbm.h t_ndbm
19415 eval $inhdr
19416
19417 case "$t_ndbm" in
19418 $undef)
19419     # Some Linux distributions such as RedHat 7.1 put the
19420     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19421     if $test -f /usr/include/gdbm/ndbm.h; then
19422         echo '<gdbm/ndbm.h> found.'
19423         ccflags="$ccflags -I/usr/include/gdbm"
19424         cppflags="$cppflags -I/usr/include/gdbm"
19425         t_ndbm=$define
19426     fi
19427     ;;
19428 esac
19429
19430 case "$t_ndbm" in
19431 $define)
19432         : see if dbm_open exists
19433         set dbm_open d_dbm_open
19434         eval $inlibc
19435         case "$d_dbm_open" in
19436         $undef)
19437                 t_ndbm="$undef"
19438                 echo "We won't be including <ndbm.h>"
19439                 ;;
19440         esac
19441         ;;
19442 esac
19443 val="$t_ndbm"
19444 set i_ndbm
19445 eval $setvar
19446
19447 : see if net/errno.h is available
19448 val=''
19449 set net/errno.h val
19450 eval $inhdr
19451
19452 : Unfortunately, it causes problems on some systems.  Arrgh.
19453 case "$val" in
19454 $define)
19455         cat > try.c <<'EOM'
19456 #include <stdio.h>
19457 #include <errno.h>
19458 #include <net/errno.h>
19459 int func()
19460 {
19461         return ENOTSOCK;
19462 }
19463 EOM
19464         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19465                 echo "We'll be including <net/errno.h>." >&4
19466         else
19467                 echo "We won't be including <net/errno.h>." >&4
19468                 val="$undef"
19469         fi
19470         $rm -f try.* try
19471         ;;
19472 esac
19473 set i_neterrno
19474 eval $setvar
19475
19476 : see if netinet/tcp.h is available
19477 set netinet/tcp.h i_netinettcp
19478 eval $inhdr
19479
19480 : see if this is a poll.h system
19481 set poll.h i_poll
19482 eval $inhdr
19483
19484 : see if this is a prot.h system
19485 set prot.h i_prot
19486 eval $inhdr
19487
19488 echo " "
19489 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19490 $cat <<'EOSH' > Cppsym.know
19491 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19492 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19493 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19494 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19495 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19496 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19497 bull c cadmus clipper CMU COFF COMPILER_VERSION
19498 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19499 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19500 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19501 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19502 GLIBC GLIBC_MINOR
19503 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19504 H3050R H3050RX hbullx20 hcx host_mips
19505 hp200 hp300 hp700 HP700 hp800 hp9000
19506 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19507 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19508 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19509 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19510 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19511 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19512 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19513 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19514 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19515 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19516 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19517 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19518 MATH_HAS_NO_SIDE_EFFECTS
19519 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19520 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19521 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19522 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19523 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19524 NetBSD news1500 news1700 news1800 news1900 news3700
19525 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19526 ns32016 ns32332 ns32k nsc32000
19527 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19528 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19529 pc532 pdp11 PGC PIC plexus PORTAR posix
19530 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19531 POSIX_C_SOURCE POSIX_SOURCE POWER
19532 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19533 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19534 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19535 sony sony_news sonyrisc sparc sparclite spectrum
19536 stardent stdc STDC_EXT stratos sun sun3 sun386
19537 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19538 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19539 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19540 sysV68 sysV88 Tek4132 Tek4300 titan
19541 TM3200 TM5400 TM5600
19542 tower tower32 tower32_200 tower32_600 tower32_700
19543 tower32_800 tower32_850 tss
19544 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19545 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19546 unix UNIX95 UNIX99 unixpc unos
19547 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19548 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19549 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19550 USGr4 USGr4_2
19551 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19552 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19553 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19554 z8000
19555 EOSH
19556 # Maybe put other stuff here too.
19557 cat <<EOSH >>Cppsym.know
19558 $osname
19559 EOSH
19560 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19561 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19562 $cat Cppsym.know > Cppsym.c
19563 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19564 $rm -f Cppsym.a Cppsym.b Cppsym.c
19565 cat <<EOSH > Cppsym
19566 $startsh
19567 if $test \$# -gt 0; then
19568     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19569     if $test -s Cppsym.got; then
19570         $rm -f Cppsym.got
19571         exit 0
19572     fi
19573     $rm -f Cppsym.got
19574     exit 1
19575 else
19576     $tr " " "$trnl" | ./Cppsym.try
19577     exit 0
19578 fi
19579 EOSH
19580 chmod +x Cppsym
19581 $eunicefix Cppsym
19582 cat <<EOSH > Cppsym.try
19583 $startsh
19584 cat <<'EOCP' > try.c
19585 #include <stdio.h>
19586 int main() {
19587 EOCP
19588 $awk \\
19589 EOSH
19590 cat <<'EOSH' >> Cppsym.try
19591 'length($1) > 0 {
19592     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
19593     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
19594     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
19595     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
19596 }'       >> try.c
19597 echo 'return 0;}' >> try.c
19598 EOSH
19599 cat <<EOSH >> Cppsym.try
19600 ccflags="$ccflags"
19601 case "$osname-$gccversion" in
19602 irix-) ccflags="\$ccflags -woff 1178" ;;
19603 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19604 esac
19605 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19606 EOSH
19607 chmod +x Cppsym.try
19608 $eunicefix Cppsym.try
19609 ./Cppsym < Cppsym.know > Cppsym.true
19610 : now check the C compiler for additional symbols
19611 postprocess_cc_v=''
19612 case "$osname" in
19613 aix) postprocess_cc_v="|$tr , ' '" ;;
19614 esac
19615 $cat >ccsym <<EOS
19616 $startsh
19617 $cat >tmp.c <<EOF
19618 extern int foo;
19619 EOF
19620 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19621 do
19622         case "\$i" in
19623         -D*) echo "\$i" | $sed 's/^-D//';;
19624         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19625         esac
19626 done
19627 $rm -f try.c
19628 EOS
19629 postprocess_cc_v=''
19630 chmod +x ccsym
19631 $eunicefix ccsym
19632 ./ccsym > ccsym1.raw
19633 if $test -s ccsym1.raw; then
19634        $sort ccsym1.raw | $uniq >ccsym.raw
19635 else
19636        mv ccsym1.raw ccsym.raw
19637 fi
19638
19639 $awk '/\=/ { print $0; next }
19640         { print $0"=1" }' ccsym.raw >ccsym.list
19641 $awk '/\=/ { print $0; next }
19642         { print $0"=1" }' Cppsym.true >ccsym.true
19643 $comm -13 ccsym.true ccsym.list >ccsym.own
19644 $comm -12 ccsym.true ccsym.list >ccsym.com
19645 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19646 also=''
19647 if $test -z ccsym.raw; then
19648         echo "Your C compiler doesn't seem to define any symbols!" >&4
19649         echo " "
19650         echo "However, your C preprocessor defines the following symbols:"
19651         $cat Cppsym.true
19652         ccsymbols=''
19653         cppsymbols=`$cat Cppsym.true`
19654         cppsymbols=`echo $cppsymbols`
19655         cppccsymbols="$cppsymbols"
19656 else
19657         if $test -s ccsym.com; then
19658                 echo "Your C compiler and pre-processor define these symbols:"
19659                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19660                 also='also '
19661                 symbols='ones'
19662                 cppccsymbols=`$cat ccsym.com`
19663                 cppccsymbols=`echo $cppccsymbols`
19664                 $test "$silent" || sleep 1
19665         fi
19666         if $test -s ccsym.cpp; then
19667                 $test "$also" && echo " "
19668                 echo "Your C pre-processor ${also}defines the following symbols:"
19669                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19670                 also='further '
19671                 cppsymbols=`$cat ccsym.cpp`
19672                 cppsymbols=`echo $cppsymbols`
19673                 $test "$silent" || sleep 1
19674         fi
19675         if $test -s ccsym.own; then
19676                 $test "$also" && echo " "
19677                 echo "Your C compiler ${also}defines the following cpp symbols:"
19678                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19679                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19680                 ccsymbols=`$cat ccsym.own`
19681                 ccsymbols=`echo $ccsymbols`
19682                 $test "$silent" || sleep 1
19683         fi
19684 fi
19685
19686 : see if this is a termio system
19687 val="$undef"
19688 val2="$undef"
19689 val3="$undef"
19690 if $test `./findhdr termios.h`; then
19691         set tcsetattr i_termios
19692         eval $inlibc
19693         val3="$i_termios"
19694 fi
19695 echo " "
19696 case "$val3" in
19697 "$define") echo "You have POSIX termios.h... good!" >&4;;
19698 *) if ./Cppsym pyr; then
19699                 case "`/bin/universe`" in
19700                 ucb) if $test `./findhdr sgtty.h`; then
19701                                 val2="$define"
19702                                 echo "<sgtty.h> found." >&4
19703                         else
19704                                 echo "System is pyramid with BSD universe."
19705                                 echo "<sgtty.h> not found--you could have problems." >&4
19706                         fi;;
19707                 *) if $test `./findhdr termio.h`; then
19708                                 val="$define"
19709                                 echo "<termio.h> found." >&4
19710                         else
19711                                 echo "System is pyramid with USG universe."
19712                                 echo "<termio.h> not found--you could have problems." >&4
19713                         fi;;
19714                 esac
19715         elif ./usg; then
19716                 if $test `./findhdr termio.h`; then
19717                         echo "<termio.h> found." >&4
19718                         val="$define"
19719                 elif $test `./findhdr sgtty.h`; then
19720                         echo "<sgtty.h> found." >&4
19721                         val2="$define"
19722                 else
19723 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19724                 fi
19725         else
19726                 if $test `./findhdr sgtty.h`; then
19727                         echo "<sgtty.h> found." >&4
19728                         val2="$define"
19729                 elif $test `./findhdr termio.h`; then
19730                         echo "<termio.h> found." >&4
19731                         val="$define"
19732                 else
19733 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19734                 fi
19735         fi;;
19736 esac
19737 set i_termio; eval $setvar
19738 val=$val2; set i_sgtty; eval $setvar
19739 val=$val3; set i_termios; eval $setvar
19740
19741 : see if stddef is available
19742 set stddef.h i_stddef
19743 eval $inhdr
19744
19745 : see if this is a sunmath.h system
19746 set sunmath.h i_sunmath
19747 eval $inhdr
19748
19749 : see if sys/access.h is available
19750 set sys/access.h i_sysaccess
19751 eval $inhdr
19752
19753 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19754 set sys/filio.h i_sysfilio
19755 eval $inhdr
19756 echo " "
19757 if $test `./findhdr sys/ioctl.h`; then
19758         val="$define"
19759         echo '<sys/ioctl.h> found.' >&4
19760 else
19761         val="$undef"
19762         if $test $i_sysfilio = "$define"; then
19763             echo '<sys/ioctl.h> NOT found.' >&4
19764         else
19765                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19766                 $test $i_termio = "$define" && xxx="termio.h"
19767                 $test $i_termios = "$define" && xxx="termios.h"
19768 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19769         fi
19770 fi
19771 set i_sysioctl
19772 eval $setvar
19773
19774 : see if socket ioctl defs are in sys/sockio.h
19775 echo " "
19776 xxx=`./findhdr sys/sockio.h`
19777 if $test "$xxx"; then
19778         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19779                 val="$define"
19780                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19781         else
19782                 val="$undef"
19783                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19784         fi
19785 else
19786         val="$undef"
19787         $cat <<EOM
19788 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19789 EOM
19790 fi
19791 set i_syssockio
19792 eval $setvar
19793
19794
19795 : see if this is a syslog.h system
19796 set syslog.h i_syslog
19797 eval $inhdr
19798
19799
19800 : see if this is a sys/mode.h system
19801 set sys/mode.h i_sysmode
19802 eval $inhdr
19803
19804 : see if sys/resource.h has to be included
19805 set sys/resource.h i_sysresrc
19806 eval $inhdr
19807
19808 : see if sys/security.h is available
19809 set sys/security.h i_syssecrt
19810 eval $inhdr
19811
19812 : see if this is a sys/statvfs.h system
19813 set sys/statvfs.h i_sysstatvfs
19814 eval $inhdr
19815
19816 : see if this is a sys/un.h system
19817 set sys/un.h i_sysun
19818 eval $inhdr
19819
19820
19821 : see if this is a sys/utsname.h system
19822 set sys/utsname.h i_sysutsname
19823 eval $inhdr
19824
19825 : see if this is a syswait system
19826 set sys/wait.h i_syswait
19827 eval $inhdr
19828
19829 : see if this is a ustat.h system
19830 set ustat.h i_ustat
19831 eval $inhdr
19832
19833 : see if this is an utime system
19834 set utime.h i_utime
19835 eval $inhdr
19836
19837 : see if this is a values.h system
19838 set values.h i_values
19839 eval $inhdr
19840
19841 : see if this is a vfork system
19842 case "$d_vfork" in
19843 "$define")
19844         set vfork.h i_vfork
19845         eval $inhdr
19846         ;;
19847 *)
19848         i_vfork="$undef"
19849         ;;
19850 esac
19851
19852 : see if gdbm.h is available
19853 set gdbm.h t_gdbm
19854 eval $inhdr
19855 case "$t_gdbm" in
19856 $define)
19857         : see if gdbm_open exists
19858         set gdbm_open d_gdbm_open
19859         eval $inlibc
19860         case "$d_gdbm_open" in
19861         $undef)
19862                 t_gdbm="$undef"
19863                 echo "We won't be including <gdbm.h>"
19864                 ;;
19865         esac
19866         ;;
19867 esac
19868 val="$t_gdbm"
19869 set i_gdbm
19870 eval $setvar
19871
19872 echo " "
19873 echo "Looking for extensions..." >&4
19874 : If we are using the old config.sh, known_extensions may contain
19875 : old or inaccurate or duplicate values.
19876 known_extensions=''
19877 nonxs_extensions=''
19878 : We do not use find because it might not be available.
19879 : We do not just use MANIFEST because the user may have dropped
19880 : some additional extensions into the source tree and expect them
19881 : to be built.
19882
19883 : Function to recursively find available extensions, ignoring DynaLoader
19884 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19885 find_extensions='
19886     for xxx in *; do
19887        case "$xxx" in
19888            DynaLoader|dynaload) ;;
19889            *)
19890            if $test -f $xxx/$xxx.xs; then
19891                known_extensions="$known_extensions $1$xxx";
19892            elif $test -f $xxx/Makefile.PL; then
19893                nonxs_extensions="$nonxs_extensions $1$xxx";
19894            else
19895                if $test -d $xxx -a $# -lt 10; then
19896                    set $1$xxx/ $*;
19897                    cd "$xxx";
19898                    eval $find_extensions;
19899                    cd ..;
19900                    shift;
19901                fi;
19902            fi
19903            ;;
19904        esac;
19905     done'
19906 tdir=`pwd`
19907 cd "$rsrc/ext"
19908 set X
19909 shift
19910 eval $find_extensions
19911 # Special case:  Add in threads/shared since it is not picked up by the
19912 # recursive find above (and adding in general recursive finding breaks
19913 # SDBM_File/sdbm).  A.D.  10/25/2001.
19914 known_extensions="$known_extensions threads/shared"
19915 set X $nonxs_extensions
19916 shift
19917 nonxs_extensions="$*"
19918 set X $known_extensions
19919 shift
19920 known_extensions="$*"
19921 cd "$tdir"
19922
19923 : Now see which are supported on this system.
19924 avail_ext=''
19925 for xxx in $known_extensions ; do
19926         case "$xxx" in
19927         DB_File|db_file)
19928                 case "$i_db" in
19929                 $define) avail_ext="$avail_ext $xxx" ;;
19930                 esac
19931                 ;;
19932         GDBM_File|gdbm_fil)
19933                 case "$i_gdbm" in 
19934                 $define) avail_ext="$avail_ext $xxx" ;;
19935                 esac
19936                 ;;
19937         I18N/Langinfo|i18n_lan)
19938                 case "$i_langinfo$d_nl_langinfo" in 
19939                 $define$define) avail_ext="$avail_ext $xxx" ;;
19940                 esac
19941                 ;;
19942         NDBM_File|ndbm_fil)
19943                 case "$i_ndbm" in
19944                 $define)
19945                     case "$osname-$use64bitint" in
19946                     hpux-define)
19947                         case "$libs" in
19948                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
19949                         esac
19950                         ;;
19951                     *) avail_ext="$avail_ext $xxx" ;;
19952                     esac
19953                     ;;
19954                 esac
19955                 ;;
19956         ODBM_File|odbm_fil) 
19957                 case "${i_dbm}${i_rpcsvcdbm}" in
19958                 *"${define}"*)
19959                     case "$osname-$use64bitint" in
19960                     hpux-define)
19961                         case "$libs" in
19962                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
19963                         esac
19964                         ;;
19965                     *) avail_ext="$avail_ext $xxx" ;;
19966                     esac
19967                     ;;
19968                 esac
19969                 ;;
19970         POSIX|posix)
19971                 case "$useposix" in
19972                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19973                 esac
19974                 ;;
19975         Opcode|opcode)
19976                 case "$useopcode" in
19977                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19978                 esac
19979                 ;;
19980         Socket|socket)
19981                 case "$d_socket" in 
19982                 true|$define|y)
19983                     case "$osname" in
19984                     beos) ;; # not unless BONE
19985                     *) avail_ext="$avail_ext $xxx" ;;
19986                     esac
19987                     ;;
19988                 esac
19989                 ;;
19990         Sys/Syslog|sys/syslog)
19991                 : XXX syslog requires socket
19992                 case "$d_socket" in 
19993                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
19994                 esac
19995                 ;;
19996         Thread|thread)
19997                 case "$usethreads" in
19998                 true|$define|y)
19999                         case "$useithreads" in
20000                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20001                         esac
20002                 esac
20003                 ;;
20004         XS/APItest|xs/apitest)
20005                 # This is just for testing.  Skip it unless we have dynamic loading.
20006
20007                 case "$usedl" in
20008                 $define) avail_ext="$avail_ext $xxx" ;;
20009                 esac
20010                 ;;
20011         XS/Typemap|xs/typemap)
20012                 # This is just for testing.  Skip it unless we have dynamic loading.
20013                 case "$usedl" in
20014                 $define) avail_ext="$avail_ext $xxx" ;;
20015                 esac
20016                 ;;
20017         threads|threads/shared)
20018                 # threads and threads::shared are special cases.
20019                 # To stop people from asking "Perl 5.8.0 was supposed
20020                 # to have this new fancy threads implementation but my
20021                 # perl doesn't have it" and from people trying to
20022                 # (re)install the threads module using CPAN.pm and
20023                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20024                 # the threads.pm and threads/shared.pm will always be
20025                 # there, croaking informatively ("you need to rebuild
20026                 # all of Perl with threads, sorry") when threads haven't
20027                 # been compiled in.
20028                 # --jhi
20029                 avail_ext="$avail_ext $xxx"
20030                 ;;
20031         IPC/SysV|ipc/sysv)
20032                 : XXX Do we need a useipcsysv variable here
20033                 case "${d_msg}${d_sem}${d_shm}" in 
20034                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20035                 esac
20036                 ;;
20037         *)      avail_ext="$avail_ext $xxx"
20038                 ;;
20039         esac
20040 done
20041
20042 set X $avail_ext
20043 shift
20044 avail_ext="$*"
20045
20046 : Now see which nonxs extensions are supported on this system.
20047 : For now assume all are.
20048 nonxs_ext=''
20049 for xxx in $nonxs_extensions ; do
20050         case "$xxx" in
20051         *)      nonxs_ext="$nonxs_ext $xxx"
20052                 ;;
20053         esac
20054 done
20055
20056 set X $nonxs_ext
20057 shift
20058 nonxs_ext="$*"
20059
20060 case $usedl in
20061 $define)
20062         $cat <<EOM
20063 A number of extensions are supplied with $package.  You may choose to
20064 compile these extensions for dynamic loading (the default), compile
20065 them into the $package executable (static loading), or not include
20066 them at all.  Answer "none" to include no extensions.
20067 Note that DynaLoader is always built and need not be mentioned here.
20068
20069 EOM
20070         case "$dynamic_ext" in
20071         '')
20072                 : Exclude those listed in static_ext
20073                 dflt=''
20074                 for xxx in $avail_ext; do
20075                         case " $static_ext " in
20076                         *" $xxx "*) ;;
20077                         *) dflt="$dflt $xxx" ;;
20078                         esac
20079                 done
20080                 set X $dflt
20081                 shift
20082                 dflt="$*"
20083                 ;;
20084         *)      dflt="$dynamic_ext"
20085                 # Perhaps we are reusing an old out-of-date config.sh.
20086                 case "$hint" in
20087                 previous)
20088                         if test X"$dynamic_ext" != X"$avail_ext"; then
20089                                 $cat <<EOM
20090 NOTICE:  Your previous config.sh list may be incorrect. 
20091 The extensions now available to you are 
20092         ${avail_ext}
20093 but the default list from your previous config.sh is
20094         ${dynamic_ext} 
20095
20096 EOM
20097                         fi
20098                         ;;
20099                 esac
20100                 ;;
20101         esac
20102         case "$dflt" in
20103         '')     dflt=none;;
20104         esac
20105         rp="What extensions do you wish to load dynamically?"
20106         . ./myread
20107         case "$ans" in
20108         none) dynamic_ext=' ' ;;
20109         *) dynamic_ext="$ans" ;;
20110         esac
20111
20112         case "$static_ext" in
20113         '')
20114                 : Exclude those already listed in dynamic linking
20115                 dflt=''
20116                 for xxx in $avail_ext; do
20117                         case " $dynamic_ext " in
20118                         *" $xxx "*) ;;
20119                         *) dflt="$dflt $xxx" ;;
20120                         esac
20121                 done
20122                 set X $dflt
20123                 shift
20124                 dflt="$*"
20125                 ;;
20126         *)  dflt="$static_ext" 
20127                 ;;
20128         esac
20129
20130         case "$dflt" in
20131         '')     dflt=none;;
20132         esac
20133         rp="What extensions do you wish to load statically?"
20134         . ./myread
20135         case "$ans" in
20136         none) static_ext=' ' ;;
20137         *) static_ext="$ans" ;;
20138         esac
20139         ;;
20140 *)
20141         $cat <<EOM
20142 A number of extensions are supplied with $package.  Answer "none" 
20143 to include no extensions. 
20144 Note that DynaLoader is always built and need not be mentioned here.
20145
20146 EOM
20147         case "$static_ext" in
20148         '') dflt="$avail_ext" ;;
20149         *)      dflt="$static_ext"
20150                 # Perhaps we are reusing an old out-of-date config.sh.
20151                 case "$hint" in
20152                 previous)
20153                         if test X"$static_ext" != X"$avail_ext"; then
20154                                 $cat <<EOM
20155 NOTICE:  Your previous config.sh list may be incorrect. 
20156 The extensions now available to you are 
20157         ${avail_ext}
20158 but the default list from your previous config.sh is
20159         ${static_ext} 
20160
20161 EOM
20162                         fi
20163                         ;;
20164                 esac
20165                 ;;
20166         esac
20167         : Exclude those that are not xs extensions
20168         case "$dflt" in
20169         '')     dflt=none;;
20170         esac
20171         rp="What extensions do you wish to include?"
20172         . ./myread
20173         case "$ans" in
20174         none) static_ext=' ' ;;
20175         *) static_ext="$ans" ;;
20176         esac
20177         ;;
20178 esac
20179 #        
20180 # Encode is a special case.  If we are building Encode as a static
20181 # extension, we need to explicitly list its subextensions as well.
20182 # For other nested extensions, this is handled automatically by
20183 # the appropriate Makefile.PL.
20184 case " $static_ext " in
20185         *" Encode "*) # Add the subextensions of Encode
20186         cd "$rsrc/ext"
20187         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20188                 static_ext="$static_ext Encode/$xxx"
20189         done
20190         cd "$tdir"
20191         ;;
20192 esac
20193
20194 set X $dynamic_ext $static_ext $nonxs_ext
20195 shift
20196 extensions="$*"
20197
20198 : Remove libraries needed only for extensions
20199 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20200 : The exception is SunOS 4.x, which needs them.
20201 case "${osname}X${osvers}" in
20202 sunos*X4*)
20203     perllibs="$libs"
20204     ;;
20205 *) case "$usedl" in
20206     $define|true|[yY]*)
20207             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20208             shift
20209             perllibs="$*"
20210             ;;
20211     *)  perllibs="$libs"
20212             ;;
20213     esac
20214     ;;
20215 esac
20216
20217 : Remove build directory name from cppstdin so it can be used from
20218 : either the present location or the final installed location.
20219 echo " "
20220 : Get out of the UU directory to get correct path name.
20221 cd ..
20222 case "$cppstdin" in
20223 `pwd`/cppstdin)
20224         echo "Stripping down cppstdin path name"
20225         cppstdin=cppstdin
20226         ;;
20227 esac
20228 cd UU
20229
20230 : end of configuration questions
20231 echo " "
20232 echo "End of configuration questions."
20233 echo " "
20234
20235 : back to where it started
20236 if test -d ../UU; then
20237         cd ..
20238 fi
20239
20240 : configuration may be patched via a 'config.arch' file
20241 if $test -f config.arch; then
20242         echo "I see a config.arch file, loading it."
20243         . ./config.arch
20244 fi
20245
20246 : configuration may be patched via a 'config.over' file
20247 if $test -f config.over; then
20248         echo " "
20249         dflt=y
20250         rp='I see a config.over file.  Do you wish to load it?'
20251         . UU/myread
20252         case "$ans" in
20253         n*) echo "OK, I'll ignore it.";;
20254         *)      . ./config.over
20255                 echo "Configuration override changes have been loaded."
20256                 ;;
20257         esac
20258 fi
20259
20260 : in case they want portability, strip down executable paths
20261 case "$d_portable" in
20262 "$define")
20263         echo " "
20264         echo "Stripping down executable paths..." >&4
20265         for file in $loclist $trylist; do
20266                 eval temp=\$$file
20267                 eval $file=`basename $temp`
20268         done
20269         ;;
20270 esac
20271
20272 : create config.sh file
20273 echo " "
20274 echo "Creating config.sh..." >&4
20275 $spitshell <<EOT >config.sh
20276 $startsh
20277 #
20278 # This file was produced by running the Configure script. It holds all the
20279 # definitions figured out by Configure. Should you modify one of these values,
20280 # do not forget to propagate your changes by running "Configure -der". You may
20281 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20282 #
20283
20284 # Package name      : $package
20285 # Source directory  : $src
20286 # Configuration time: $cf_time
20287 # Configured by     : $cf_by
20288 # Target system     : $myuname
20289
20290 Author='$Author'
20291 Date='$Date'
20292 Header='$Header'
20293 Id='$Id'
20294 Locker='$Locker'
20295 Log='$Log'
20296 Mcc='$Mcc'
20297 RCSfile='$RCSfile'
20298 Revision='$Revision'
20299 Source='$Source'
20300 State='$State'
20301 _a='$_a'
20302 _exe='$_exe'
20303 _o='$_o'
20304 afs='$afs'
20305 afsroot='$afsroot'
20306 alignbytes='$alignbytes'
20307 ansi2knr='$ansi2knr'
20308 aphostname='$aphostname'
20309 api_revision='$api_revision'
20310 api_subversion='$api_subversion'
20311 api_version='$api_version'
20312 api_versionstring='$api_versionstring'
20313 ar='$ar'
20314 archlib='$archlib'
20315 archlibexp='$archlibexp'
20316 archname64='$archname64'
20317 archname='$archname'
20318 archobjs='$archobjs'
20319 asctime_r_proto='$asctime_r_proto'
20320 awk='$awk'
20321 baserev='$baserev'
20322 bash='$bash'
20323 bin='$bin'
20324 binexp='$binexp'
20325 bison='$bison'
20326 byacc='$byacc'
20327 byteorder='$byteorder'
20328 c='$c'
20329 castflags='$castflags'
20330 cat='$cat'
20331 cc='$cc'
20332 cccdlflags='$cccdlflags'
20333 ccdlflags='$ccdlflags'
20334 ccflags='$ccflags'
20335 ccflags_uselargefiles='$ccflags_uselargefiles'
20336 ccname='$ccname'
20337 ccsymbols='$ccsymbols'
20338 ccversion='$ccversion'
20339 cf_by='$cf_by'
20340 cf_email='$cf_email'
20341 cf_time='$cf_time'
20342 charsize='$charsize'
20343 chgrp='$chgrp'
20344 chmod='$chmod'
20345 chown='$chown'
20346 clocktype='$clocktype'
20347 comm='$comm'
20348 compress='$compress'
20349 contains='$contains'
20350 cp='$cp'
20351 cpio='$cpio'
20352 cpp='$cpp'
20353 cpp_stuff='$cpp_stuff'
20354 cppccsymbols='$cppccsymbols'
20355 cppflags='$cppflags'
20356 cpplast='$cpplast'
20357 cppminus='$cppminus'
20358 cpprun='$cpprun'
20359 cppstdin='$cppstdin'
20360 cppsymbols='$cppsymbols'
20361 crypt_r_proto='$crypt_r_proto'
20362 cryptlib='$cryptlib'
20363 csh='$csh'
20364 ctermid_r_proto='$ctermid_r_proto'
20365 ctime_r_proto='$ctime_r_proto'
20366 d_Gconvert='$d_Gconvert'
20367 d_PRIEUldbl='$d_PRIEUldbl'
20368 d_PRIFUldbl='$d_PRIFUldbl'
20369 d_PRIGUldbl='$d_PRIGUldbl'
20370 d_PRIXU64='$d_PRIXU64'
20371 d_PRId64='$d_PRId64'
20372 d_PRIeldbl='$d_PRIeldbl'
20373 d_PRIfldbl='$d_PRIfldbl'
20374 d_PRIgldbl='$d_PRIgldbl'
20375 d_PRIi64='$d_PRIi64'
20376 d_PRIo64='$d_PRIo64'
20377 d_PRIu64='$d_PRIu64'
20378 d_PRIx64='$d_PRIx64'
20379 d_SCNfldbl='$d_SCNfldbl'
20380 d__fwalk='$d__fwalk'
20381 d_access='$d_access'
20382 d_accessx='$d_accessx'
20383 d_aintl='$d_aintl'
20384 d_alarm='$d_alarm'
20385 d_archlib='$d_archlib'
20386 d_asctime_r='$d_asctime_r'
20387 d_atolf='$d_atolf'
20388 d_atoll='$d_atoll'
20389 d_attribut='$d_attribut'
20390 d_bcmp='$d_bcmp'
20391 d_bcopy='$d_bcopy'
20392 d_bsd='$d_bsd'
20393 d_bsdgetpgrp='$d_bsdgetpgrp'
20394 d_bsdsetpgrp='$d_bsdsetpgrp'
20395 d_bzero='$d_bzero'
20396 d_casti32='$d_casti32'
20397 d_castneg='$d_castneg'
20398 d_charvspr='$d_charvspr'
20399 d_chown='$d_chown'
20400 d_chroot='$d_chroot'
20401 d_chsize='$d_chsize'
20402 d_class='$d_class'
20403 d_closedir='$d_closedir'
20404 d_cmsghdr_s='$d_cmsghdr_s'
20405 d_const='$d_const'
20406 d_copysignl='$d_copysignl'
20407 d_crypt='$d_crypt'
20408 d_crypt_r='$d_crypt_r'
20409 d_csh='$d_csh'
20410 d_ctermid_r='$d_ctermid_r'
20411 d_ctime_r='$d_ctime_r'
20412 d_cuserid='$d_cuserid'
20413 d_dbl_dig='$d_dbl_dig'
20414 d_dbminitproto='$d_dbminitproto'
20415 d_difftime='$d_difftime'
20416 d_dirfd='$d_dirfd'
20417 d_dirnamlen='$d_dirnamlen'
20418 d_dlerror='$d_dlerror'
20419 d_dlopen='$d_dlopen'
20420 d_dlsymun='$d_dlsymun'
20421 d_dosuid='$d_dosuid'
20422 d_drand48_r='$d_drand48_r'
20423 d_drand48proto='$d_drand48proto'
20424 d_dup2='$d_dup2'
20425 d_eaccess='$d_eaccess'
20426 d_endgrent='$d_endgrent'
20427 d_endgrent_r='$d_endgrent_r'
20428 d_endhent='$d_endhent'
20429 d_endhostent_r='$d_endhostent_r'
20430 d_endnent='$d_endnent'
20431 d_endnetent_r='$d_endnetent_r'
20432 d_endpent='$d_endpent'
20433 d_endprotoent_r='$d_endprotoent_r'
20434 d_endpwent='$d_endpwent'
20435 d_endpwent_r='$d_endpwent_r'
20436 d_endsent='$d_endsent'
20437 d_endservent_r='$d_endservent_r'
20438 d_eofnblk='$d_eofnblk'
20439 d_eunice='$d_eunice'
20440 d_fchdir='$d_fchdir'
20441 d_fchmod='$d_fchmod'
20442 d_fchown='$d_fchown'
20443 d_fcntl='$d_fcntl'
20444 d_fcntl_can_lock='$d_fcntl_can_lock'
20445 d_fd_macros='$d_fd_macros'
20446 d_fd_set='$d_fd_set'
20447 d_fds_bits='$d_fds_bits'
20448 d_fgetpos='$d_fgetpos'
20449 d_finite='$d_finite'
20450 d_finitel='$d_finitel'
20451 d_flexfnam='$d_flexfnam'
20452 d_flock='$d_flock'
20453 d_flockproto='$d_flockproto'
20454 d_fork='$d_fork'
20455 d_fp_class='$d_fp_class'
20456 d_fpathconf='$d_fpathconf'
20457 d_fpclass='$d_fpclass'
20458 d_fpclassify='$d_fpclassify'
20459 d_fpclassl='$d_fpclassl'
20460 d_fpos64_t='$d_fpos64_t'
20461 d_frexpl='$d_frexpl'
20462 d_fs_data_s='$d_fs_data_s'
20463 d_fseeko='$d_fseeko'
20464 d_fsetpos='$d_fsetpos'
20465 d_fstatfs='$d_fstatfs'
20466 d_fstatvfs='$d_fstatvfs'
20467 d_fsync='$d_fsync'
20468 d_ftello='$d_ftello'
20469 d_ftime='$d_ftime'
20470 d_getcwd='$d_getcwd'
20471 d_getespwnam='$d_getespwnam'
20472 d_getfsstat='$d_getfsstat'
20473 d_getgrent='$d_getgrent'
20474 d_getgrent_r='$d_getgrent_r'
20475 d_getgrgid_r='$d_getgrgid_r'
20476 d_getgrnam_r='$d_getgrnam_r'
20477 d_getgrps='$d_getgrps'
20478 d_gethbyaddr='$d_gethbyaddr'
20479 d_gethbyname='$d_gethbyname'
20480 d_gethent='$d_gethent'
20481 d_gethname='$d_gethname'
20482 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20483 d_gethostbyname_r='$d_gethostbyname_r'
20484 d_gethostent_r='$d_gethostent_r'
20485 d_gethostprotos='$d_gethostprotos'
20486 d_getitimer='$d_getitimer'
20487 d_getlogin='$d_getlogin'
20488 d_getlogin_r='$d_getlogin_r'
20489 d_getmnt='$d_getmnt'
20490 d_getmntent='$d_getmntent'
20491 d_getnbyaddr='$d_getnbyaddr'
20492 d_getnbyname='$d_getnbyname'
20493 d_getnent='$d_getnent'
20494 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20495 d_getnetbyname_r='$d_getnetbyname_r'
20496 d_getnetent_r='$d_getnetent_r'
20497 d_getnetprotos='$d_getnetprotos'
20498 d_getpagsz='$d_getpagsz'
20499 d_getpbyname='$d_getpbyname'
20500 d_getpbynumber='$d_getpbynumber'
20501 d_getpent='$d_getpent'
20502 d_getpgid='$d_getpgid'
20503 d_getpgrp2='$d_getpgrp2'
20504 d_getpgrp='$d_getpgrp'
20505 d_getppid='$d_getppid'
20506 d_getprior='$d_getprior'
20507 d_getprotobyname_r='$d_getprotobyname_r'
20508 d_getprotobynumber_r='$d_getprotobynumber_r'
20509 d_getprotoent_r='$d_getprotoent_r'
20510 d_getprotoprotos='$d_getprotoprotos'
20511 d_getprpwnam='$d_getprpwnam'
20512 d_getpwent='$d_getpwent'
20513 d_getpwent_r='$d_getpwent_r'
20514 d_getpwnam_r='$d_getpwnam_r'
20515 d_getpwuid_r='$d_getpwuid_r'
20516 d_getsbyname='$d_getsbyname'
20517 d_getsbyport='$d_getsbyport'
20518 d_getsent='$d_getsent'
20519 d_getservbyname_r='$d_getservbyname_r'
20520 d_getservbyport_r='$d_getservbyport_r'
20521 d_getservent_r='$d_getservent_r'
20522 d_getservprotos='$d_getservprotos'
20523 d_getspnam='$d_getspnam'
20524 d_getspnam_r='$d_getspnam_r'
20525 d_gettimeod='$d_gettimeod'
20526 d_gmtime_r='$d_gmtime_r'
20527 d_gnulibc='$d_gnulibc'
20528 d_grpasswd='$d_grpasswd'
20529 d_hasmntopt='$d_hasmntopt'
20530 d_htonl='$d_htonl'
20531 d_ilogbl='$d_ilogbl'
20532 d_index='$d_index'
20533 d_inetaton='$d_inetaton'
20534 d_int64_t='$d_int64_t'
20535 d_isascii='$d_isascii'
20536 d_isfinite='$d_isfinite'
20537 d_isinf='$d_isinf'
20538 d_isnan='$d_isnan'
20539 d_isnanl='$d_isnanl'
20540 d_killpg='$d_killpg'
20541 d_lchown='$d_lchown'
20542 d_ldbl_dig='$d_ldbl_dig'
20543 d_link='$d_link'
20544 d_localtime_r='$d_localtime_r'
20545 d_locconv='$d_locconv'
20546 d_lockf='$d_lockf'
20547 d_longdbl='$d_longdbl'
20548 d_longlong='$d_longlong'
20549 d_lseekproto='$d_lseekproto'
20550 d_lstat='$d_lstat'
20551 d_madvise='$d_madvise'
20552 d_mblen='$d_mblen'
20553 d_mbstowcs='$d_mbstowcs'
20554 d_mbtowc='$d_mbtowc'
20555 d_memchr='$d_memchr'
20556 d_memcmp='$d_memcmp'
20557 d_memcpy='$d_memcpy'
20558 d_memmove='$d_memmove'
20559 d_memset='$d_memset'
20560 d_mkdir='$d_mkdir'
20561 d_mkdtemp='$d_mkdtemp'
20562 d_mkfifo='$d_mkfifo'
20563 d_mkstemp='$d_mkstemp'
20564 d_mkstemps='$d_mkstemps'
20565 d_mktime='$d_mktime'
20566 d_mmap='$d_mmap'
20567 d_modfl='$d_modfl'
20568 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20569 d_modflproto='$d_modflproto'
20570 d_mprotect='$d_mprotect'
20571 d_msg='$d_msg'
20572 d_msg_ctrunc='$d_msg_ctrunc'
20573 d_msg_dontroute='$d_msg_dontroute'
20574 d_msg_oob='$d_msg_oob'
20575 d_msg_peek='$d_msg_peek'
20576 d_msg_proxy='$d_msg_proxy'
20577 d_msgctl='$d_msgctl'
20578 d_msgget='$d_msgget'
20579 d_msghdr_s='$d_msghdr_s'
20580 d_msgrcv='$d_msgrcv'
20581 d_msgsnd='$d_msgsnd'
20582 d_msync='$d_msync'
20583 d_munmap='$d_munmap'
20584 d_mymalloc='$d_mymalloc'
20585 d_nanosleep='$d_nanosleep'
20586 d_nice='$d_nice'
20587 d_nl_langinfo='$d_nl_langinfo'
20588 d_nv_preserves_uv='$d_nv_preserves_uv'
20589 d_off64_t='$d_off64_t'
20590 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20591 d_oldpthreads='$d_oldpthreads'
20592 d_oldsock='$d_oldsock'
20593 d_open3='$d_open3'
20594 d_pathconf='$d_pathconf'
20595 d_pause='$d_pause'
20596 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20597 d_phostname='$d_phostname'
20598 d_pipe='$d_pipe'
20599 d_poll='$d_poll'
20600 d_portable='$d_portable'
20601 d_procselfexe='$d_procselfexe'
20602 d_pthread_atfork='$d_pthread_atfork'
20603 d_pthread_yield='$d_pthread_yield'
20604 d_pwage='$d_pwage'
20605 d_pwchange='$d_pwchange'
20606 d_pwclass='$d_pwclass'
20607 d_pwcomment='$d_pwcomment'
20608 d_pwexpire='$d_pwexpire'
20609 d_pwgecos='$d_pwgecos'
20610 d_pwpasswd='$d_pwpasswd'
20611 d_pwquota='$d_pwquota'
20612 d_qgcvt='$d_qgcvt'
20613 d_quad='$d_quad'
20614 d_random_r='$d_random_r'
20615 d_readdir64_r='$d_readdir64_r'
20616 d_readdir='$d_readdir'
20617 d_readdir_r='$d_readdir_r'
20618 d_readlink='$d_readlink'
20619 d_readv='$d_readv'
20620 d_recvmsg='$d_recvmsg'
20621 d_rename='$d_rename'
20622 d_rewinddir='$d_rewinddir'
20623 d_rmdir='$d_rmdir'
20624 d_safebcpy='$d_safebcpy'
20625 d_safemcpy='$d_safemcpy'
20626 d_sanemcmp='$d_sanemcmp'
20627 d_sbrkproto='$d_sbrkproto'
20628 d_scalbnl='$d_scalbnl'
20629 d_sched_yield='$d_sched_yield'
20630 d_scm_rights='$d_scm_rights'
20631 d_seekdir='$d_seekdir'
20632 d_select='$d_select'
20633 d_sem='$d_sem'
20634 d_semctl='$d_semctl'
20635 d_semctl_semid_ds='$d_semctl_semid_ds'
20636 d_semctl_semun='$d_semctl_semun'
20637 d_semget='$d_semget'
20638 d_semop='$d_semop'
20639 d_sendmsg='$d_sendmsg'
20640 d_setegid='$d_setegid'
20641 d_seteuid='$d_seteuid'
20642 d_setgrent='$d_setgrent'
20643 d_setgrent_r='$d_setgrent_r'
20644 d_setgrps='$d_setgrps'
20645 d_sethent='$d_sethent'
20646 d_sethostent_r='$d_sethostent_r'
20647 d_setitimer='$d_setitimer'
20648 d_setlinebuf='$d_setlinebuf'
20649 d_setlocale='$d_setlocale'
20650 d_setlocale_r='$d_setlocale_r'
20651 d_setnent='$d_setnent'
20652 d_setnetent_r='$d_setnetent_r'
20653 d_setpent='$d_setpent'
20654 d_setpgid='$d_setpgid'
20655 d_setpgrp2='$d_setpgrp2'
20656 d_setpgrp='$d_setpgrp'
20657 d_setprior='$d_setprior'
20658 d_setproctitle='$d_setproctitle'
20659 d_setprotoent_r='$d_setprotoent_r'
20660 d_setpwent='$d_setpwent'
20661 d_setpwent_r='$d_setpwent_r'
20662 d_setregid='$d_setregid'
20663 d_setresgid='$d_setresgid'
20664 d_setresuid='$d_setresuid'
20665 d_setreuid='$d_setreuid'
20666 d_setrgid='$d_setrgid'
20667 d_setruid='$d_setruid'
20668 d_setsent='$d_setsent'
20669 d_setservent_r='$d_setservent_r'
20670 d_setsid='$d_setsid'
20671 d_setvbuf='$d_setvbuf'
20672 d_sfio='$d_sfio'
20673 d_shm='$d_shm'
20674 d_shmat='$d_shmat'
20675 d_shmatprototype='$d_shmatprototype'
20676 d_shmctl='$d_shmctl'
20677 d_shmdt='$d_shmdt'
20678 d_shmget='$d_shmget'
20679 d_sigaction='$d_sigaction'
20680 d_sigprocmask='$d_sigprocmask'
20681 d_sigsetjmp='$d_sigsetjmp'
20682 d_sockatmark='$d_sockatmark'
20683 d_sockatmarkproto='$d_sockatmarkproto'
20684 d_socket='$d_socket'
20685 d_socklen_t='$d_socklen_t'
20686 d_sockpair='$d_sockpair'
20687 d_socks5_init='$d_socks5_init'
20688 d_sqrtl='$d_sqrtl'
20689 d_srand48_r='$d_srand48_r'
20690 d_srandom_r='$d_srandom_r'
20691 d_sresgproto='$d_sresgproto'
20692 d_sresuproto='$d_sresuproto'
20693 d_statblks='$d_statblks'
20694 d_statfs_f_flags='$d_statfs_f_flags'
20695 d_statfs_s='$d_statfs_s'
20696 d_statvfs='$d_statvfs'
20697 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20698 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20699 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20700 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20701 d_stdio_stream_array='$d_stdio_stream_array'
20702 d_stdiobase='$d_stdiobase'
20703 d_stdstdio='$d_stdstdio'
20704 d_strchr='$d_strchr'
20705 d_strcoll='$d_strcoll'
20706 d_strctcpy='$d_strctcpy'
20707 d_strerrm='$d_strerrm'
20708 d_strerror='$d_strerror'
20709 d_strerror_r='$d_strerror_r'
20710 d_strftime='$d_strftime'
20711 d_strtod='$d_strtod'
20712 d_strtol='$d_strtol'
20713 d_strtold='$d_strtold'
20714 d_strtoll='$d_strtoll'
20715 d_strtoq='$d_strtoq'
20716 d_strtoul='$d_strtoul'
20717 d_strtoull='$d_strtoull'
20718 d_strtouq='$d_strtouq'
20719 d_strxfrm='$d_strxfrm'
20720 d_suidsafe='$d_suidsafe'
20721 d_symlink='$d_symlink'
20722 d_syscall='$d_syscall'
20723 d_syscallproto='$d_syscallproto'
20724 d_sysconf='$d_sysconf'
20725 d_sysernlst='$d_sysernlst'
20726 d_syserrlst='$d_syserrlst'
20727 d_system='$d_system'
20728 d_tcgetpgrp='$d_tcgetpgrp'
20729 d_tcsetpgrp='$d_tcsetpgrp'
20730 d_telldir='$d_telldir'
20731 d_telldirproto='$d_telldirproto'
20732 d_time='$d_time'
20733 d_times='$d_times'
20734 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20735 d_tm_tm_zone='$d_tm_tm_zone'
20736 d_tmpnam_r='$d_tmpnam_r'
20737 d_truncate='$d_truncate'
20738 d_ttyname_r='$d_ttyname_r'
20739 d_tzname='$d_tzname'
20740 d_u32align='$d_u32align'
20741 d_ualarm='$d_ualarm'
20742 d_umask='$d_umask'
20743 d_uname='$d_uname'
20744 d_union_semun='$d_union_semun'
20745 d_unordered='$d_unordered'
20746 d_usleep='$d_usleep'
20747 d_usleepproto='$d_usleepproto'
20748 d_ustat='$d_ustat'
20749 d_vendorarch='$d_vendorarch'
20750 d_vendorbin='$d_vendorbin'
20751 d_vendorlib='$d_vendorlib'
20752 d_vendorscript='$d_vendorscript'
20753 d_vfork='$d_vfork'
20754 d_void_closedir='$d_void_closedir'
20755 d_voidsig='$d_voidsig'
20756 d_voidtty='$d_voidtty'
20757 d_volatile='$d_volatile'
20758 d_vprintf='$d_vprintf'
20759 d_wait4='$d_wait4'
20760 d_waitpid='$d_waitpid'
20761 d_wcstombs='$d_wcstombs'
20762 d_wctomb='$d_wctomb'
20763 d_writev='$d_writev'
20764 d_xenix='$d_xenix'
20765 date='$date'
20766 db_hashtype='$db_hashtype'
20767 db_prefixtype='$db_prefixtype'
20768 db_version_major='$db_version_major'
20769 db_version_minor='$db_version_minor'
20770 db_version_patch='$db_version_patch'
20771 defvoidused='$defvoidused'
20772 direntrytype='$direntrytype'
20773 dlext='$dlext'
20774 dlsrc='$dlsrc'
20775 doublesize='$doublesize'
20776 drand01='$drand01'
20777 drand48_r_proto='$drand48_r_proto'
20778 dynamic_ext='$dynamic_ext'
20779 eagain='$eagain'
20780 ebcdic='$ebcdic'
20781 echo='$echo'
20782 egrep='$egrep'
20783 emacs='$emacs'
20784 endgrent_r_proto='$endgrent_r_proto'
20785 endhostent_r_proto='$endhostent_r_proto'
20786 endnetent_r_proto='$endnetent_r_proto'
20787 endprotoent_r_proto='$endprotoent_r_proto'
20788 endpwent_r_proto='$endpwent_r_proto'
20789 endservent_r_proto='$endservent_r_proto'
20790 eunicefix='$eunicefix'
20791 exe_ext='$exe_ext'
20792 expr='$expr'
20793 extensions='$extensions'
20794 extras='$extras'
20795 fflushNULL='$fflushNULL'
20796 fflushall='$fflushall'
20797 find='$find'
20798 firstmakefile='$firstmakefile'
20799 flex='$flex'
20800 fpossize='$fpossize'
20801 fpostype='$fpostype'
20802 freetype='$freetype'
20803 from='$from'
20804 full_ar='$full_ar'
20805 full_csh='$full_csh'
20806 full_sed='$full_sed'
20807 gccansipedantic='$gccansipedantic'
20808 gccosandvers='$gccosandvers'
20809 gccversion='$gccversion'
20810 getgrent_r_proto='$getgrent_r_proto'
20811 getgrgid_r_proto='$getgrgid_r_proto'
20812 getgrnam_r_proto='$getgrnam_r_proto'
20813 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20814 gethostbyname_r_proto='$gethostbyname_r_proto'
20815 gethostent_r_proto='$gethostent_r_proto'
20816 getlogin_r_proto='$getlogin_r_proto'
20817 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20818 getnetbyname_r_proto='$getnetbyname_r_proto'
20819 getnetent_r_proto='$getnetent_r_proto'
20820 getprotobyname_r_proto='$getprotobyname_r_proto'
20821 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20822 getprotoent_r_proto='$getprotoent_r_proto'
20823 getpwent_r_proto='$getpwent_r_proto'
20824 getpwnam_r_proto='$getpwnam_r_proto'
20825 getpwuid_r_proto='$getpwuid_r_proto'
20826 getservbyname_r_proto='$getservbyname_r_proto'
20827 getservbyport_r_proto='$getservbyport_r_proto'
20828 getservent_r_proto='$getservent_r_proto'
20829 getspnam_r_proto='$getspnam_r_proto'
20830 gidformat='$gidformat'
20831 gidsign='$gidsign'
20832 gidsize='$gidsize'
20833 gidtype='$gidtype'
20834 glibpth='$glibpth'
20835 gmake='$gmake'
20836 gmtime_r_proto='$gmtime_r_proto'
20837 gnulibc_version='$gnulibc_version'
20838 grep='$grep'
20839 groupcat='$groupcat'
20840 groupstype='$groupstype'
20841 gzip='$gzip'
20842 h_fcntl='$h_fcntl'
20843 h_sysfile='$h_sysfile'
20844 hint='$hint'
20845 hostcat='$hostcat'
20846 html1dir='$html1dir'
20847 html1direxp='$html1direxp'
20848 html3dir='$html3dir'
20849 html3direxp='$html3direxp'
20850 i16size='$i16size'
20851 i16type='$i16type'
20852 i32size='$i32size'
20853 i32type='$i32type'
20854 i64size='$i64size'
20855 i64type='$i64type'
20856 i8size='$i8size'
20857 i8type='$i8type'
20858 i_arpainet='$i_arpainet'
20859 i_bsdioctl='$i_bsdioctl'
20860 i_crypt='$i_crypt'
20861 i_db='$i_db'
20862 i_dbm='$i_dbm'
20863 i_dirent='$i_dirent'
20864 i_dld='$i_dld'
20865 i_dlfcn='$i_dlfcn'
20866 i_fcntl='$i_fcntl'
20867 i_float='$i_float'
20868 i_fp='$i_fp'
20869 i_fp_class='$i_fp_class'
20870 i_gdbm='$i_gdbm'
20871 i_grp='$i_grp'
20872 i_ieeefp='$i_ieeefp'
20873 i_inttypes='$i_inttypes'
20874 i_langinfo='$i_langinfo'
20875 i_libutil='$i_libutil'
20876 i_limits='$i_limits'
20877 i_locale='$i_locale'
20878 i_machcthr='$i_machcthr'
20879 i_malloc='$i_malloc'
20880 i_math='$i_math'
20881 i_memory='$i_memory'
20882 i_mntent='$i_mntent'
20883 i_ndbm='$i_ndbm'
20884 i_netdb='$i_netdb'
20885 i_neterrno='$i_neterrno'
20886 i_netinettcp='$i_netinettcp'
20887 i_niin='$i_niin'
20888 i_poll='$i_poll'
20889 i_prot='$i_prot'
20890 i_pthread='$i_pthread'
20891 i_pwd='$i_pwd'
20892 i_rpcsvcdbm='$i_rpcsvcdbm'
20893 i_sfio='$i_sfio'
20894 i_sgtty='$i_sgtty'
20895 i_shadow='$i_shadow'
20896 i_socks='$i_socks'
20897 i_stdarg='$i_stdarg'
20898 i_stddef='$i_stddef'
20899 i_stdlib='$i_stdlib'
20900 i_string='$i_string'
20901 i_sunmath='$i_sunmath'
20902 i_sysaccess='$i_sysaccess'
20903 i_sysdir='$i_sysdir'
20904 i_sysfile='$i_sysfile'
20905 i_sysfilio='$i_sysfilio'
20906 i_sysin='$i_sysin'
20907 i_sysioctl='$i_sysioctl'
20908 i_syslog='$i_syslog'
20909 i_sysmman='$i_sysmman'
20910 i_sysmode='$i_sysmode'
20911 i_sysmount='$i_sysmount'
20912 i_sysndir='$i_sysndir'
20913 i_sysparam='$i_sysparam'
20914 i_sysresrc='$i_sysresrc'
20915 i_syssecrt='$i_syssecrt'
20916 i_sysselct='$i_sysselct'
20917 i_syssockio='$i_syssockio'
20918 i_sysstat='$i_sysstat'
20919 i_sysstatfs='$i_sysstatfs'
20920 i_sysstatvfs='$i_sysstatvfs'
20921 i_systime='$i_systime'
20922 i_systimek='$i_systimek'
20923 i_systimes='$i_systimes'
20924 i_systypes='$i_systypes'
20925 i_sysuio='$i_sysuio'
20926 i_sysun='$i_sysun'
20927 i_sysutsname='$i_sysutsname'
20928 i_sysvfs='$i_sysvfs'
20929 i_syswait='$i_syswait'
20930 i_termio='$i_termio'
20931 i_termios='$i_termios'
20932 i_time='$i_time'
20933 i_unistd='$i_unistd'
20934 i_ustat='$i_ustat'
20935 i_utime='$i_utime'
20936 i_values='$i_values'
20937 i_varargs='$i_varargs'
20938 i_varhdr='$i_varhdr'
20939 i_vfork='$i_vfork'
20940 ignore_versioned_solibs='$ignore_versioned_solibs'
20941 inc_version_list='$inc_version_list'
20942 inc_version_list_init='$inc_version_list_init'
20943 incpath='$incpath'
20944 inews='$inews'
20945 installarchlib='$installarchlib'
20946 installbin='$installbin'
20947 installhtml1dir='$installhtml1dir'
20948 installhtml3dir='$installhtml3dir'
20949 installman1dir='$installman1dir'
20950 installman3dir='$installman3dir'
20951 installprefix='$installprefix'
20952 installprefixexp='$installprefixexp'
20953 installprivlib='$installprivlib'
20954 installscript='$installscript'
20955 installsitearch='$installsitearch'
20956 installsitebin='$installsitebin'
20957 installsitehtml1='$installsitehtml1'
20958 installsitehtml3='$installsitehtml3'
20959 installsitelib='$installsitelib'
20960 installsiteman1='$installsiteman1'
20961 installsiteman3='$installsiteman3'
20962 installsitescript='$installsitescript'
20963 installstyle='$installstyle'
20964 installusrbinperl='$installusrbinperl'
20965 installvendorarch='$installvendorarch'
20966 installvendorbin='$installvendorbin'
20967 installvendorhtml1='$installvendorhtml1'
20968 installvendorhtml3='$installvendorhtml3'
20969 installvendorlib='$installvendorlib'
20970 installvendorman1='$installvendorman1'
20971 installvendorman3='$installvendorman3'
20972 installvendorscript='$installvendorscript'
20973 intsize='$intsize'
20974 issymlink='$issymlink'
20975 ivdformat='$ivdformat'
20976 ivsize='$ivsize'
20977 ivtype='$ivtype'
20978 known_extensions='$known_extensions'
20979 ksh='$ksh'
20980 ld='$ld'
20981 lddlflags='$lddlflags'
20982 ldflags='$ldflags'
20983 ldflags_uselargefiles='$ldflags_uselargefiles'
20984 ldlibpthname='$ldlibpthname'
20985 less='$less'
20986 lib_ext='$lib_ext'
20987 libc='$libc'
20988 libperl='$libperl'
20989 libpth='$libpth'
20990 libs='$libs'
20991 libsdirs='$libsdirs'
20992 libsfiles='$libsfiles'
20993 libsfound='$libsfound'
20994 libspath='$libspath'
20995 libswanted='$libswanted'
20996 libswanted_uselargefiles='$libswanted_uselargefiles'
20997 line='$line'
20998 lint='$lint'
20999 lkflags='$lkflags'
21000 ln='$ln'
21001 lns='$lns'
21002 localtime_r_proto='$localtime_r_proto'
21003 locincpth='$locincpth'
21004 loclibpth='$loclibpth'
21005 longdblsize='$longdblsize'
21006 longlongsize='$longlongsize'
21007 longsize='$longsize'
21008 lp='$lp'
21009 lpr='$lpr'
21010 ls='$ls'
21011 lseeksize='$lseeksize'
21012 lseektype='$lseektype'
21013 mail='$mail'
21014 mailx='$mailx'
21015 make='$make'
21016 make_set_make='$make_set_make'
21017 mallocobj='$mallocobj'
21018 mallocsrc='$mallocsrc'
21019 malloctype='$malloctype'
21020 man1dir='$man1dir'
21021 man1direxp='$man1direxp'
21022 man1ext='$man1ext'
21023 man3dir='$man3dir'
21024 man3direxp='$man3direxp'
21025 man3ext='$man3ext'
21026 mips_type='$mips_type'
21027 mkdir='$mkdir'
21028 mmaptype='$mmaptype'
21029 modetype='$modetype'
21030 more='$more'
21031 multiarch='$multiarch'
21032 mv='$mv'
21033 myarchname='$myarchname'
21034 mydomain='$mydomain'
21035 myhostname='$myhostname'
21036 myuname='$myuname'
21037 n='$n'
21038 need_va_copy='$need_va_copy'
21039 netdb_hlen_type='$netdb_hlen_type'
21040 netdb_host_type='$netdb_host_type'
21041 netdb_name_type='$netdb_name_type'
21042 netdb_net_type='$netdb_net_type'
21043 nm='$nm'
21044 nm_opt='$nm_opt'
21045 nm_so_opt='$nm_so_opt'
21046 nonxs_ext='$nonxs_ext'
21047 nroff='$nroff'
21048 nvEUformat='$nvEUformat'
21049 nvFUformat='$nvFUformat'
21050 nvGUformat='$nvGUformat'
21051 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21052 nveformat='$nveformat'
21053 nvfformat='$nvfformat'
21054 nvgformat='$nvgformat'
21055 nvsize='$nvsize'
21056 nvtype='$nvtype'
21057 o_nonblock='$o_nonblock'
21058 obj_ext='$obj_ext'
21059 old_pthread_create_joinable='$old_pthread_create_joinable'
21060 optimize='$optimize'
21061 orderlib='$orderlib'
21062 osname='$osname'
21063 osvers='$osvers'
21064 otherlibdirs='$otherlibdirs'
21065 package='$package'
21066 pager='$pager'
21067 passcat='$passcat'
21068 patchlevel='$patchlevel'
21069 path_sep='$path_sep'
21070 perl5='$perl5'
21071 perl='$perl'
21072 perl_patchlevel='$perl_patchlevel'
21073 perladmin='$perladmin'
21074 perllibs='$perllibs'
21075 perlpath='$perlpath'
21076 pg='$pg'
21077 phostname='$phostname'
21078 pidtype='$pidtype'
21079 plibpth='$plibpth'
21080 pm_apiversion='$pm_apiversion'
21081 pmake='$pmake'
21082 pr='$pr'
21083 prefix='$prefix'
21084 prefixexp='$prefixexp'
21085 privlib='$privlib'
21086 privlibexp='$privlibexp'
21087 procselfexe='$procselfexe'
21088 prototype='$prototype'
21089 ptrsize='$ptrsize'
21090 quadkind='$quadkind'
21091 quadtype='$quadtype'
21092 randbits='$randbits'
21093 randfunc='$randfunc'
21094 random_r_proto='$random_r_proto'
21095 randseedtype='$randseedtype'
21096 ranlib='$ranlib'
21097 rd_nodata='$rd_nodata'
21098 readdir64_r_proto='$readdir64_r_proto'
21099 readdir_r_proto='$readdir_r_proto'
21100 revision='$revision'
21101 rm='$rm'
21102 rmail='$rmail'
21103 run='$run'
21104 runnm='$runnm'
21105 sPRIEUldbl='$sPRIEUldbl'
21106 sPRIFUldbl='$sPRIFUldbl'
21107 sPRIGUldbl='$sPRIGUldbl'
21108 sPRIXU64='$sPRIXU64'
21109 sPRId64='$sPRId64'
21110 sPRIeldbl='$sPRIeldbl'
21111 sPRIfldbl='$sPRIfldbl'
21112 sPRIgldbl='$sPRIgldbl'
21113 sPRIi64='$sPRIi64'
21114 sPRIo64='$sPRIo64'
21115 sPRIu64='$sPRIu64'
21116 sPRIx64='$sPRIx64'
21117 sSCNfldbl='$sSCNfldbl'
21118 sched_yield='$sched_yield'
21119 scriptdir='$scriptdir'
21120 scriptdirexp='$scriptdirexp'
21121 sed='$sed'
21122 seedfunc='$seedfunc'
21123 selectminbits='$selectminbits'
21124 selecttype='$selecttype'
21125 sendmail='$sendmail'
21126 setgrent_r_proto='$setgrent_r_proto'
21127 sethostent_r_proto='$sethostent_r_proto'
21128 setlocale_r_proto='$setlocale_r_proto'
21129 setnetent_r_proto='$setnetent_r_proto'
21130 setprotoent_r_proto='$setprotoent_r_proto'
21131 setpwent_r_proto='$setpwent_r_proto'
21132 setservent_r_proto='$setservent_r_proto'
21133 sh='$sh'
21134 shar='$shar'
21135 sharpbang='$sharpbang'
21136 shmattype='$shmattype'
21137 shortsize='$shortsize'
21138 shrpenv='$shrpenv'
21139 shsharp='$shsharp'
21140 sig_count='$sig_count'
21141 sig_name='$sig_name'
21142 sig_name_init='$sig_name_init'
21143 sig_num='$sig_num'
21144 sig_num_init='$sig_num_init'
21145 sig_size='$sig_size'
21146 signal_t='$signal_t'
21147 sitearch='$sitearch'
21148 sitearchexp='$sitearchexp'
21149 sitebin='$sitebin'
21150 sitebinexp='$sitebinexp'
21151 sitehtml1='$sitehtml1'
21152 sitehtml1exp='$sitehtml1exp'
21153 sitehtml3='$sitehtml3'
21154 sitehtml3exp='$sitehtml3exp'
21155 sitelib='$sitelib'
21156 sitelib_stem='$sitelib_stem'
21157 sitelibexp='$sitelibexp'
21158 siteman1='$siteman1'
21159 siteman1exp='$siteman1exp'
21160 siteman3='$siteman3'
21161 siteman3exp='$siteman3exp'
21162 siteprefix='$siteprefix'
21163 siteprefixexp='$siteprefixexp'
21164 sitescript='$sitescript'
21165 sitescriptexp='$sitescriptexp'
21166 sizesize='$sizesize'
21167 sizetype='$sizetype'
21168 sleep='$sleep'
21169 smail='$smail'
21170 so='$so'
21171 sockethdr='$sockethdr'
21172 socketlib='$socketlib'
21173 socksizetype='$socksizetype'
21174 sort='$sort'
21175 spackage='$spackage'
21176 spitshell='$spitshell'
21177 srand48_r_proto='$srand48_r_proto'
21178 srandom_r_proto='$srandom_r_proto'
21179 src='$src'
21180 ssizetype='$ssizetype'
21181 startperl='$startperl'
21182 startsh='$startsh'
21183 static_ext='$static_ext'
21184 stdchar='$stdchar'
21185 stdio_base='$stdio_base'
21186 stdio_bufsiz='$stdio_bufsiz'
21187 stdio_cnt='$stdio_cnt'
21188 stdio_filbuf='$stdio_filbuf'
21189 stdio_ptr='$stdio_ptr'
21190 stdio_stream_array='$stdio_stream_array'
21191 strerror_r_proto='$strerror_r_proto'
21192 strings='$strings'
21193 submit='$submit'
21194 subversion='$subversion'
21195 sysman='$sysman'
21196 tail='$tail'
21197 tar='$tar'
21198 targetarch='$targetarch'
21199 tbl='$tbl'
21200 tee='$tee'
21201 test='$test'
21202 timeincl='$timeincl'
21203 timetype='$timetype'
21204 tmpnam_r_proto='$tmpnam_r_proto'
21205 to='$to'
21206 touch='$touch'
21207 tr='$tr'
21208 trnl='$trnl'
21209 troff='$troff'
21210 ttyname_r_proto='$ttyname_r_proto'
21211 u16size='$u16size'
21212 u16type='$u16type'
21213 u32size='$u32size'
21214 u32type='$u32type'
21215 u64size='$u64size'
21216 u64type='$u64type'
21217 u8size='$u8size'
21218 u8type='$u8type'
21219 uidformat='$uidformat'
21220 uidsign='$uidsign'
21221 uidsize='$uidsize'
21222 uidtype='$uidtype'
21223 uname='$uname'
21224 uniq='$uniq'
21225 uquadtype='$uquadtype'
21226 use5005threads='$use5005threads'
21227 use64bitall='$use64bitall'
21228 use64bitint='$use64bitint'
21229 usecrosscompile='$usecrosscompile'
21230 usedl='$usedl'
21231 useithreads='$useithreads'
21232 uselargefiles='$uselargefiles'
21233 uselongdouble='$uselongdouble'
21234 usemorebits='$usemorebits'
21235 usemultiplicity='$usemultiplicity'
21236 usemymalloc='$usemymalloc'
21237 usenm='$usenm'
21238 useopcode='$useopcode'
21239 useperlio='$useperlio'
21240 useposix='$useposix'
21241 usereentrant='$usereentrant'
21242 usesfio='$usesfio'
21243 useshrplib='$useshrplib'
21244 usesocks='$usesocks'
21245 usethreads='$usethreads'
21246 usevendorprefix='$usevendorprefix'
21247 usevfork='$usevfork'
21248 usrinc='$usrinc'
21249 uuname='$uuname'
21250 uvXUformat='$uvXUformat'
21251 uvoformat='$uvoformat'
21252 uvsize='$uvsize'
21253 uvtype='$uvtype'
21254 uvuformat='$uvuformat'
21255 uvxformat='$uvxformat'
21256 vendorarch='$vendorarch'
21257 vendorarchexp='$vendorarchexp'
21258 vendorbin='$vendorbin'
21259 vendorbinexp='$vendorbinexp'
21260 vendorhtml1='$vendorhtml1'
21261 vendorhtml1exp='$vendorhtml1exp'
21262 vendorhtml3='$vendorhtml3'
21263 vendorhtml3exp='$vendorhtml3exp'
21264 vendorlib='$vendorlib'
21265 vendorlib_stem='$vendorlib_stem'
21266 vendorlibexp='$vendorlibexp'
21267 vendorman1='$vendorman1'
21268 vendorman1exp='$vendorman1exp'
21269 vendorman3='$vendorman3'
21270 vendorman3exp='$vendorman3exp'
21271 vendorprefix='$vendorprefix'
21272 vendorprefixexp='$vendorprefixexp'
21273 vendorscript='$vendorscript'
21274 vendorscriptexp='$vendorscriptexp'
21275 version='$version'
21276 version_patchlevel_string='$version_patchlevel_string'
21277 versiononly='$versiononly'
21278 vi='$vi'
21279 voidflags='$voidflags'
21280 xlibpth='$xlibpth'
21281 xs_apiversion='$xs_apiversion'
21282 yacc='$yacc'
21283 yaccflags='$yaccflags'
21284 zcat='$zcat'
21285 zip='$zip'
21286 EOT
21287
21288 : Add in command line options if available
21289 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21290
21291 : add special variables
21292 $test -f $src/patchlevel.h && \
21293 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21294 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21295 echo "PERL_CONFIG_SH=true" >>config.sh
21296
21297 : propagate old symbols
21298 if $test -f UU/config.sh; then
21299         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21300         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21301         $sort | $uniq -u >UU/oldsyms
21302         set X `cat UU/oldsyms`
21303         shift
21304         case $# in
21305         0) ;;
21306         *)
21307                 cat <<EOM
21308 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21309 EOM
21310                 echo "# Variables propagated from previous config.sh file." >>config.sh
21311                 for sym in `cat UU/oldsyms`; do
21312                         echo "    Propagating $hint variable "'$'"$sym..."
21313                         eval 'tmp="$'"${sym}"'"'
21314                         echo "$tmp" | \
21315                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21316                 done
21317                 ;;
21318         esac
21319 fi
21320
21321 : Finish up by extracting the .SH files
21322 case "$alldone" in
21323 exit)
21324         $rm -rf UU
21325         echo "Extraction done."
21326         exit 0
21327         ;;
21328 cont)
21329         ;;
21330 '')
21331         dflt=''
21332         nostick=true
21333         $cat <<EOM
21334
21335 If you'd like to make any changes to the config.sh file before I begin
21336 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21337
21338 EOM
21339         rp="Press return or use a shell escape to edit config.sh:"
21340         . UU/myread
21341         nostick=''
21342         case "$ans" in
21343         '') ;;
21344         *) : in case they cannot read
21345                 sh 1>&4 -c "$ans";;
21346         esac
21347         ;;
21348 esac
21349
21350 : if this fails, just run all the .SH files by hand
21351 . ./config.sh
21352
21353 echo " "
21354 exec 1>&4
21355 pwd=`pwd`
21356 . ./UU/extract
21357 cd "$pwd"
21358
21359 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21360         dflt=y
21361         case "$silent" in
21362         true) ;;
21363         *)
21364                 $cat <<EOM
21365
21366 Now you need to generate make dependencies by running "$make depend".
21367 You might prefer to run it in background: "$make depend > makedepend.out &"
21368 It can take a while, so you might not want to run it right now.
21369
21370 EOM
21371                 ;;
21372         esac
21373         rp="Run $make depend now?"
21374         . UU/myread
21375         case "$ans" in
21376         y*)
21377                 $make depend && echo "Now you must run '$make'."
21378                 ;;
21379         *)
21380                 echo "You must run '$make depend' then '$make'."
21381                 ;;
21382         esac
21383 elif test -f [Mm]akefile; then
21384         echo " "
21385         echo "Now you must run a $make."
21386 else
21387         echo "Configure done."
21388 fi
21389
21390 if $test -f Policy.sh; then
21391     $cat <<EOM
21392
21393 If you compile $package on a different machine or from a different object
21394 directory, copy the Policy.sh file from this object directory to the
21395 new one before you run Configure -- this will help you with most of
21396 the policy defaults.
21397
21398 EOM
21399 fi
21400 if $test -f config.msg; then
21401     echo "Hmm.  I also noted the following information while running:"
21402     echo " "
21403     $cat config.msg >&4
21404     $rm -f config.msg
21405 fi
21406 $rm -f kit*isdone ark*isdone
21407 $rm -rf UU
21408
21409 : End of Configure
21410