CXUX_BROKEN_CONSTANT_CONVERT isn't used anymore.
[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 Wed Apr 14 18:21:40 METDST 2004 [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 mistrustnm=''
192 perllibs=''
193 dynamic_ext=''
194 extensions=''
195 known_extensions=''
196 nonxs_ext=''
197 static_ext=''
198 useopcode=''
199 useposix=''
200 extras=''
201 d_bsd=''
202 d_eunice=''
203 d_xenix=''
204 eunicefix=''
205 Mcc=''
206 ar=''
207 awk=''
208 bash=''
209 bison=''
210 byacc=''
211 cat=''
212 chgrp=''
213 chmod=''
214 chown=''
215 comm=''
216 compress=''
217 cp=''
218 cpio=''
219 cpp=''
220 csh=''
221 date=''
222 echo=''
223 egrep=''
224 emacs=''
225 expr=''
226 find=''
227 flex=''
228 gmake=''
229 grep=''
230 gzip=''
231 inews=''
232 ksh=''
233 less=''
234 line=''
235 lint=''
236 ln=''
237 lp=''
238 lpr=''
239 ls=''
240 mail=''
241 mailx=''
242 make=''
243 mkdir=''
244 more=''
245 mv=''
246 nm=''
247 nroff=''
248 perl=''
249 pg=''
250 pmake=''
251 pr=''
252 rm=''
253 rmail=''
254 sed=''
255 sendmail=''
256 shar=''
257 sleep=''
258 smail=''
259 sort=''
260 submit=''
261 tail=''
262 tar=''
263 tbl=''
264 tee=''
265 test=''
266 touch=''
267 tr=''
268 troff=''
269 uname=''
270 uniq=''
271 uuname=''
272 vi=''
273 zcat=''
274 zip=''
275 full_ar=''
276 full_sed=''
277 libswanted=''
278 hint=''
279 myuname=''
280 osname=''
281 osvers=''
282 Author=''
283 Date=''
284 Header=''
285 Id=''
286 Locker=''
287 Log=''
288 RCSfile=''
289 Revision=''
290 Source=''
291 State=''
292 _a=''
293 _exe=''
294 _o=''
295 archobjs=''
296 exe_ext=''
297 firstmakefile=''
298 lib_ext=''
299 obj_ext=''
300 path_sep=''
301 afs=''
302 afsroot=''
303 alignbytes=''
304 ansi2knr=''
305 archlib=''
306 archlibexp=''
307 d_archlib=''
308 installarchlib=''
309 archname=''
310 myarchname=''
311 d_atolf=''
312 d_atoll=''
313 baserev=''
314 bin=''
315 binexp=''
316 installbin=''
317 byteorder=''
318 cc=''
319 ccflags=''
320 cppflags=''
321 ldflags=''
322 lkflags=''
323 locincpth=''
324 optimize=''
325 cf_email=''
326 cf_by=''
327 cf_time=''
328 charsize=''
329 contains=''
330 cpp_stuff=''
331 cpplast=''
332 cppminus=''
333 cpprun=''
334 cppstdin=''
335 d__fwalk=''
336 d_access=''
337 d_accessx=''
338 d_aintl=''
339 d_alarm=''
340 asctime_r_proto=''
341 d_asctime_r=''
342 d_attribut=''
343 d_bcmp=''
344 d_bcopy=''
345 d_bzero=''
346 d_casti32=''
347 castflags=''
348 d_castneg=''
349 d_chown=''
350 d_chroot=''
351 d_chsize=''
352 d_class=''
353 d_closedir=''
354 d_void_closedir=''
355 d_cmsghdr_s=''
356 d_const=''
357 d_copysignl=''
358 cryptlib=''
359 d_crypt=''
360 crypt_r_proto=''
361 d_crypt_r=''
362 d_csh=''
363 full_csh=''
364 ctermid_r_proto=''
365 d_ctermid_r=''
366 ctime_r_proto=''
367 d_ctime_r=''
368 d_cuserid=''
369 d_dbl_dig=''
370 d_dbminitproto=''
371 d_difftime=''
372 d_dirfd=''
373 d_dlerror=''
374 d_dlopen=''
375 d_dlsymun=''
376 d_dosuid=''
377 d_suidsafe=''
378 d_drand48_r=''
379 drand48_r_proto=''
380 d_drand48proto=''
381 d_dup2=''
382 d_eaccess=''
383 d_endgrent=''
384 d_endgrent_r=''
385 endgrent_r_proto=''
386 d_endhent=''
387 d_endhostent_r=''
388 endhostent_r_proto=''
389 d_endnent=''
390 d_endnetent_r=''
391 endnetent_r_proto=''
392 d_endpent=''
393 d_endprotoent_r=''
394 endprotoent_r_proto=''
395 d_endpwent=''
396 d_endpwent_r=''
397 endpwent_r_proto=''
398 d_endsent=''
399 d_endservent_r=''
400 endservent_r_proto=''
401 d_faststdio=''
402 d_fchdir=''
403 d_fchmod=''
404 d_fchown=''
405 d_fcntl=''
406 d_fcntl_can_lock=''
407 d_fd_macros=''
408 d_fd_set=''
409 d_fds_bits=''
410 d_fgetpos=''
411 d_finite=''
412 d_finitel=''
413 d_flexfnam=''
414 d_flock=''
415 d_flockproto=''
416 d_fork=''
417 d_fp_class=''
418 d_fpclass=''
419 d_fpclassify=''
420 d_fpclassl=''
421 d_fpos64_t=''
422 d_frexpl=''
423 d_fs_data_s=''
424 d_fseeko=''
425 d_fsetpos=''
426 d_fstatfs=''
427 d_fsync=''
428 d_ftello=''
429 d_ftime=''
430 d_gettimeod=''
431 d_Gconvert=''
432 d_getcwd=''
433 d_getespwnam=''
434 d_getfsstat=''
435 d_getgrent=''
436 d_getgrent_r=''
437 getgrent_r_proto=''
438 d_getgrgid_r=''
439 getgrgid_r_proto=''
440 d_getgrnam_r=''
441 getgrnam_r_proto=''
442 d_getgrps=''
443 d_gethbyaddr=''
444 d_gethbyname=''
445 d_gethent=''
446 aphostname=''
447 d_gethname=''
448 d_phostname=''
449 d_uname=''
450 d_gethostbyaddr_r=''
451 gethostbyaddr_r_proto=''
452 d_gethostbyname_r=''
453 gethostbyname_r_proto=''
454 d_gethostent_r=''
455 gethostent_r_proto=''
456 d_gethostprotos=''
457 d_getitimer=''
458 d_getlogin=''
459 d_getlogin_r=''
460 getlogin_r_proto=''
461 d_getmnt=''
462 d_getmntent=''
463 d_getnbyaddr=''
464 d_getnbyname=''
465 d_getnent=''
466 d_getnetbyaddr_r=''
467 getnetbyaddr_r_proto=''
468 d_getnetbyname_r=''
469 getnetbyname_r_proto=''
470 d_getnetent_r=''
471 getnetent_r_proto=''
472 d_getnetprotos=''
473 d_getpagsz=''
474 d_getpent=''
475 d_getpgid=''
476 d_getpgrp2=''
477 d_bsdgetpgrp=''
478 d_getpgrp=''
479 d_getppid=''
480 d_getprior=''
481 d_getpbyname=''
482 d_getpbynumber=''
483 d_getprotobyname_r=''
484 getprotobyname_r_proto=''
485 d_getprotobynumber_r=''
486 getprotobynumber_r_proto=''
487 d_getprotoent_r=''
488 getprotoent_r_proto=''
489 d_getprotoprotos=''
490 d_getprpwnam=''
491 d_getpwent=''
492 d_getpwent_r=''
493 getpwent_r_proto=''
494 d_getpwnam_r=''
495 getpwnam_r_proto=''
496 d_getpwuid_r=''
497 getpwuid_r_proto=''
498 d_getsent=''
499 d_getservbyname_r=''
500 getservbyname_r_proto=''
501 d_getservbyport_r=''
502 getservbyport_r_proto=''
503 d_getservent_r=''
504 getservent_r_proto=''
505 d_getservprotos=''
506 d_getspnam=''
507 d_getspnam_r=''
508 getspnam_r_proto=''
509 d_getsbyname=''
510 d_getsbyport=''
511 d_gmtime_r=''
512 gmtime_r_proto=''
513 d_gnulibc=''
514 gnulibc_version=''
515 d_hasmntopt=''
516 d_htonl=''
517 d_ilogbl=''
518 d_inetaton=''
519 d_int64_t=''
520 d_isascii=''
521 d_isfinite=''
522 d_isinf=''
523 d_isnan=''
524 d_isnanl=''
525 d_killpg=''
526 d_lchown=''
527 d_ldbl_dig=''
528 d_link=''
529 d_localtime_r=''
530 localtime_r_proto=''
531 d_locconv=''
532 d_lockf=''
533 d_longdbl=''
534 longdblsize=''
535 d_longlong=''
536 longlongsize=''
537 d_lseekproto=''
538 d_lstat=''
539 d_madvise=''
540 d_mblen=''
541 d_mbstowcs=''
542 d_mbtowc=''
543 d_memchr=''
544 d_memcmp=''
545 d_memcpy=''
546 d_memmove=''
547 d_memset=''
548 d_mkdir=''
549 d_mkdtemp=''
550 d_mkfifo=''
551 d_mkstemp=''
552 d_mkstemps=''
553 d_mktime=''
554 d_mmap=''
555 mmaptype=''
556 d_modfl=''
557 d_modfl_pow32_bug=''
558 d_modflproto=''
559 d_mprotect=''
560 d_msg=''
561 d_msgctl=''
562 d_msgget=''
563 d_msghdr_s=''
564 d_msgrcv=''
565 d_msgsnd=''
566 d_msync=''
567 d_munmap=''
568 d_nice=''
569 d_nl_langinfo=''
570 d_off64_t=''
571 d_open3=''
572 d_fpathconf=''
573 d_pathconf=''
574 d_pause=''
575 d_pipe=''
576 d_poll=''
577 d_portable=''
578 d_procselfexe=''
579 procselfexe=''
580 d_old_pthread_create_joinable=''
581 old_pthread_create_joinable=''
582 d_pthread_atfork=''
583 d_pthread_attr_setscope=''
584 d_pthread_yield=''
585 d_sched_yield=''
586 sched_yield=''
587 d_qgcvt=''
588 d_random_r=''
589 random_r_proto=''
590 d_readdir64_r=''
591 readdir64_r_proto=''
592 d_readdir=''
593 d_rewinddir=''
594 d_seekdir=''
595 d_telldir=''
596 d_readdir_r=''
597 readdir_r_proto=''
598 d_readlink=''
599 d_readv=''
600 d_recvmsg=''
601 d_rename=''
602 d_rmdir=''
603 d_safebcpy=''
604 d_safemcpy=''
605 d_sanemcmp=''
606 d_sbrkproto=''
607 d_scalbnl=''
608 d_select=''
609 d_sem=''
610 d_semctl=''
611 d_semget=''
612 d_semop=''
613 d_sendmsg=''
614 d_setegid=''
615 d_seteuid=''
616 d_setgrent=''
617 d_setgrent_r=''
618 setgrent_r_proto=''
619 d_setgrps=''
620 d_sethent=''
621 d_sethostent_r=''
622 sethostent_r_proto=''
623 d_setitimer=''
624 d_setlinebuf=''
625 d_setlocale=''
626 d_setlocale_r=''
627 setlocale_r_proto=''
628 d_setnent=''
629 d_setnetent_r=''
630 setnetent_r_proto=''
631 d_setpent=''
632 d_setpgid=''
633 d_setpgrp2=''
634 d_bsdsetpgrp=''
635 d_setpgrp=''
636 d_setprior=''
637 d_setproctitle=''
638 d_setprotoent_r=''
639 setprotoent_r_proto=''
640 d_setpwent=''
641 d_setpwent_r=''
642 setpwent_r_proto=''
643 d_setregid=''
644 d_setresgid=''
645 d_setresuid=''
646 d_setreuid=''
647 d_setrgid=''
648 d_setruid=''
649 d_setsent=''
650 d_setservent_r=''
651 setservent_r_proto=''
652 d_setsid=''
653 d_setvbuf=''
654 d_sfio=''
655 usesfio=''
656 d_shm=''
657 d_shmat=''
658 d_shmatprototype=''
659 shmattype=''
660 d_shmctl=''
661 d_shmdt=''
662 d_shmget=''
663 d_sigaction=''
664 d_sigprocmask=''
665 d_sigsetjmp=''
666 d_sockatmark=''
667 d_sockatmarkproto=''
668 d_msg_ctrunc=''
669 d_msg_dontroute=''
670 d_msg_oob=''
671 d_msg_peek=''
672 d_msg_proxy=''
673 d_oldsock=''
674 d_scm_rights=''
675 d_socket=''
676 d_sockpair=''
677 sockethdr=''
678 socketlib=''
679 d_socklen_t=''
680 d_socks5_init=''
681 d_sqrtl=''
682 d_srand48_r=''
683 srand48_r_proto=''
684 d_srandom_r=''
685 srandom_r_proto=''
686 d_sresgproto=''
687 d_sresuproto=''
688 d_statblks=''
689 d_statfs_f_flags=''
690 d_statfs_s=''
691 d_fstatvfs=''
692 d_statvfs=''
693 d_stdio_cnt_lval=''
694 d_stdio_ptr_lval=''
695 d_stdio_ptr_lval_nochange_cnt=''
696 d_stdio_ptr_lval_sets_cnt=''
697 d_stdiobase=''
698 d_stdstdio=''
699 stdio_base=''
700 stdio_bufsiz=''
701 stdio_cnt=''
702 stdio_filbuf=''
703 stdio_ptr=''
704 d_index=''
705 d_strchr=''
706 d_strcoll=''
707 d_strctcpy=''
708 d_strerrm=''
709 d_strerror=''
710 d_sysernlst=''
711 d_syserrlst=''
712 d_strerror_r=''
713 strerror_r_proto=''
714 d_strftime=''
715 d_strtod=''
716 d_strtol=''
717 d_strtold=''
718 d_strtoll=''
719 d_strtoq=''
720 d_strtoul=''
721 d_strtoull=''
722 d_strtouq=''
723 d_strxfrm=''
724 d_symlink=''
725 d_syscall=''
726 d_syscallproto=''
727 d_sysconf=''
728 d_system=''
729 d_tcgetpgrp=''
730 d_tcsetpgrp=''
731 d_telldirproto=''
732 d_time=''
733 timetype=''
734 clocktype=''
735 d_times=''
736 d_tmpnam_r=''
737 tmpnam_r_proto=''
738 d_truncate=''
739 d_ttyname_r=''
740 ttyname_r_proto=''
741 d_tzname=''
742 d_u32align=''
743 d_ualarm=''
744 d_umask=''
745 d_semctl_semid_ds=''
746 d_semctl_semun=''
747 d_union_semun=''
748 d_unordered=''
749 d_usleep=''
750 d_usleepproto=''
751 d_ustat=''
752 d_vfork=''
753 usevfork=''
754 d_voidsig=''
755 signal_t=''
756 d_volatile=''
757 d_charvspr=''
758 d_vprintf=''
759 d_wait4=''
760 d_waitpid=''
761 d_wcstombs=''
762 d_wctomb=''
763 d_writev=''
764 dlext=''
765 cccdlflags=''
766 ccdlflags=''
767 dlsrc=''
768 ld=''
769 lddlflags=''
770 usedl=''
771 doublesize=''
772 ebcdic=''
773 fflushNULL=''
774 fflushall=''
775 fpossize=''
776 fpostype=''
777 gccansipedantic=''
778 gccosandvers=''
779 gccversion=''
780 gidformat=''
781 gidsign=''
782 gidsize=''
783 gidtype=''
784 groupstype=''
785 h_fcntl=''
786 h_sysfile=''
787 html1dir=''
788 html1direxp=''
789 installhtml1dir=''
790 html3dir=''
791 html3direxp=''
792 installhtml3dir=''
793 i_arpainet=''
794 i_crypt=''
795 db_hashtype=''
796 db_prefixtype=''
797 db_version_major=''
798 db_version_minor=''
799 db_version_patch=''
800 i_db=''
801 i_dbm=''
802 i_rpcsvcdbm=''
803 d_dirnamlen=''
804 direntrytype=''
805 i_dirent=''
806 i_dld=''
807 i_dlfcn=''
808 i_fcntl=''
809 i_float=''
810 i_fp=''
811 i_fp_class=''
812 i_gdbm=''
813 d_grpasswd=''
814 i_grp=''
815 i_ieeefp=''
816 i_inttypes=''
817 i_langinfo=''
818 i_libutil=''
819 i_limits=''
820 i_locale=''
821 i_machcthr=''
822 i_malloc=''
823 i_math=''
824 i_memory=''
825 i_mntent=''
826 i_ndbm=''
827 i_netdb=''
828 i_neterrno=''
829 i_netinettcp=''
830 i_niin=''
831 i_sysin=''
832 i_poll=''
833 i_prot=''
834 i_pthread=''
835 d_pwage=''
836 d_pwchange=''
837 d_pwclass=''
838 d_pwcomment=''
839 d_pwexpire=''
840 d_pwgecos=''
841 d_pwpasswd=''
842 d_pwquota=''
843 i_pwd=''
844 i_sfio=''
845 i_shadow=''
846 i_socks=''
847 i_stddef=''
848 i_stdlib=''
849 i_string=''
850 strings=''
851 i_sunmath=''
852 i_sysaccess=''
853 i_sysdir=''
854 i_sysfile=''
855 d_voidtty=''
856 i_bsdioctl=''
857 i_sysfilio=''
858 i_sysioctl=''
859 i_syssockio=''
860 i_syslog=''
861 i_sysmman=''
862 i_sysmode=''
863 i_sysmount=''
864 i_sysndir=''
865 i_sysparam=''
866 i_sysresrc=''
867 i_syssecrt=''
868 i_sysselct=''
869 i_sysstat=''
870 i_sysstatfs=''
871 i_sysstatvfs=''
872 i_systimes=''
873 i_systypes=''
874 i_sysuio=''
875 i_sysun=''
876 i_sysutsname=''
877 i_sysvfs=''
878 i_syswait=''
879 i_sgtty=''
880 i_termio=''
881 i_termios=''
882 d_tm_tm_gmtoff=''
883 d_tm_tm_zone=''
884 i_systime=''
885 i_systimek=''
886 i_time=''
887 timeincl=''
888 i_unistd=''
889 i_ustat=''
890 i_utime=''
891 i_values=''
892 i_stdarg=''
893 i_varargs=''
894 i_varhdr=''
895 i_vfork=''
896 inc_version_list=''
897 inc_version_list_init=''
898 installprefix=''
899 installprefixexp=''
900 installstyle=''
901 installusrbinperl=''
902 intsize=''
903 longsize=''
904 shortsize=''
905 issymlink=''
906 libc=''
907 ldlibpthname=''
908 libperl=''
909 shrpenv=''
910 useshrplib=''
911 glibpth=''
912 libpth=''
913 loclibpth=''
914 plibpth=''
915 xlibpth=''
916 ignore_versioned_solibs=''
917 libs=''
918 libsdirs=''
919 libsfiles=''
920 libsfound=''
921 libspath=''
922 lns=''
923 d_PRIEUldbl=''
924 d_PRIFUldbl=''
925 d_PRIGUldbl=''
926 d_PRIeldbl=''
927 d_PRIfldbl=''
928 d_PRIgldbl=''
929 d_SCNfldbl=''
930 sPRIEUldbl=''
931 sPRIFUldbl=''
932 sPRIGUldbl=''
933 sPRIeldbl=''
934 sPRIfldbl=''
935 sPRIgldbl=''
936 sSCNfldbl=''
937 lseeksize=''
938 lseektype=''
939 make_set_make=''
940 d_mymalloc=''
941 freetype=''
942 mallocobj=''
943 mallocsrc=''
944 malloctype=''
945 usemallocwrap=''
946 usemymalloc=''
947 installman1dir=''
948 man1dir=''
949 man1direxp=''
950 man1ext=''
951 installman3dir=''
952 man3dir=''
953 man3direxp=''
954 man3ext=''
955 modetype=''
956 multiarch=''
957 mydomain=''
958 myhostname=''
959 phostname=''
960 c=''
961 n=''
962 d_eofnblk=''
963 eagain=''
964 o_nonblock=''
965 rd_nodata=''
966 need_va_copy=''
967 netdb_hlen_type=''
968 netdb_host_type=''
969 netdb_name_type=''
970 netdb_net_type=''
971 groupcat=''
972 hostcat=''
973 passcat=''
974 orderlib=''
975 ranlib=''
976 d_perl_otherlibdirs=''
977 otherlibdirs=''
978 package=''
979 spackage=''
980 pager=''
981 api_revision=''
982 api_subversion=''
983 api_version=''
984 api_versionstring=''
985 patchlevel=''
986 perl_patchlevel=''
987 revision=''
988 subversion=''
989 version=''
990 version_patchlevel_string=''
991 perl5=''
992 perladmin=''
993 perlpath=''
994 d_nv_preserves_uv=''
995 i16size=''
996 i16type=''
997 i32size=''
998 i32type=''
999 i64size=''
1000 i64type=''
1001 i8size=''
1002 i8type=''
1003 ivsize=''
1004 ivtype=''
1005 nv_preserves_uv_bits=''
1006 nvsize=''
1007 nvtype=''
1008 u16size=''
1009 u16type=''
1010 u32size=''
1011 u32type=''
1012 u64size=''
1013 u64type=''
1014 u8size=''
1015 u8type=''
1016 uvsize=''
1017 uvtype=''
1018 ivdformat=''
1019 nvEUformat=''
1020 nvFUformat=''
1021 nvGUformat=''
1022 nveformat=''
1023 nvfformat=''
1024 nvgformat=''
1025 uvXUformat=''
1026 uvoformat=''
1027 uvuformat=''
1028 uvxformat=''
1029 pidtype=''
1030 prefix=''
1031 prefixexp=''
1032 installprivlib=''
1033 privlib=''
1034 privlibexp=''
1035 prototype=''
1036 ptrsize=''
1037 d_PRIXU64=''
1038 d_PRId64=''
1039 d_PRIi64=''
1040 d_PRIo64=''
1041 d_PRIu64=''
1042 d_PRIx64=''
1043 sPRIXU64=''
1044 sPRId64=''
1045 sPRIi64=''
1046 sPRIo64=''
1047 sPRIu64=''
1048 sPRIx64=''
1049 d_quad=''
1050 quadkind=''
1051 quadtype=''
1052 uquadtype=''
1053 drand01=''
1054 randbits=''
1055 randfunc=''
1056 randseedtype=''
1057 seedfunc=''
1058 installscript=''
1059 scriptdir=''
1060 scriptdirexp=''
1061 selectminbits=''
1062 selecttype=''
1063 sh=''
1064 sig_count=''
1065 sig_name=''
1066 sig_name_init=''
1067 sig_num=''
1068 sig_num_init=''
1069 sig_size=''
1070 installsitearch=''
1071 sitearch=''
1072 sitearchexp=''
1073 installsitebin=''
1074 sitebin=''
1075 sitebinexp=''
1076 installsitehtml1dir=''
1077 sitehtml1dir=''
1078 sitehtml1direxp=''
1079 installsitehtml3dir=''
1080 sitehtml3dir=''
1081 sitehtml3direxp=''
1082 installsitelib=''
1083 sitelib=''
1084 sitelib_stem=''
1085 sitelibexp=''
1086 installsiteman1dir=''
1087 siteman1dir=''
1088 siteman1direxp=''
1089 installsiteman3dir=''
1090 siteman3dir=''
1091 siteman3direxp=''
1092 siteprefix=''
1093 siteprefixexp=''
1094 installsitescript=''
1095 sitescript=''
1096 sitescriptexp=''
1097 sizesize=''
1098 sizetype=''
1099 so=''
1100 socksizetype=''
1101 sharpbang=''
1102 shsharp=''
1103 spitshell=''
1104 src=''
1105 ssizetype=''
1106 startperl=''
1107 startsh=''
1108 stdchar=''
1109 d_stdio_stream_array=''
1110 stdio_stream_array=''
1111 sysman=''
1112 trnl=''
1113 uidformat=''
1114 uidsign=''
1115 uidsize=''
1116 uidtype=''
1117 archname64=''
1118 use64bitall=''
1119 use64bitint=''
1120 usefaststdio=''
1121 ccflags_uselargefiles=''
1122 ldflags_uselargefiles=''
1123 libswanted_uselargefiles=''
1124 uselargefiles=''
1125 uselongdouble=''
1126 usemorebits=''
1127 usemultiplicity=''
1128 nm_opt=''
1129 nm_so_opt=''
1130 runnm=''
1131 usenm=''
1132 useperlio=''
1133 usesocks=''
1134 d_oldpthreads=''
1135 use5005threads=''
1136 useithreads=''
1137 usereentrant=''
1138 usethreads=''
1139 incpath=''
1140 mips_type=''
1141 usrinc=''
1142 d_vendorarch=''
1143 installvendorarch=''
1144 vendorarch=''
1145 vendorarchexp=''
1146 d_vendorbin=''
1147 installvendorbin=''
1148 vendorbin=''
1149 vendorbinexp=''
1150 installvendorhtml1dir=''
1151 vendorhtml1dir=''
1152 vendorhtml1direxp=''
1153 installvendorhtml3dir=''
1154 vendorhtml3dir=''
1155 vendorhtml3direxp=''
1156 d_vendorlib=''
1157 installvendorlib=''
1158 vendorlib=''
1159 vendorlib_stem=''
1160 vendorlibexp=''
1161 installvendorman1dir=''
1162 vendorman1dir=''
1163 vendorman1direxp=''
1164 installvendorman3dir=''
1165 vendorman3dir=''
1166 vendorman3direxp=''
1167 usevendorprefix=''
1168 vendorprefix=''
1169 vendorprefixexp=''
1170 d_vendorscript=''
1171 installvendorscript=''
1172 vendorscript=''
1173 vendorscriptexp=''
1174 versiononly=''
1175 defvoidused=''
1176 voidflags=''
1177 yacc=''
1178 yaccflags=''
1179 CONFIG=''
1180
1181 define='define'
1182 undef='undef'
1183 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1184 rmlist=''
1185
1186 : We must find out about Eunice early
1187 eunicefix=':'
1188 if test -f /etc/unixtovms; then
1189         eunicefix=/etc/unixtovms
1190 fi
1191 if test -f /etc/unixtovms.exe; then
1192         eunicefix=/etc/unixtovms.exe
1193 fi
1194
1195 : Set executable suffix now -- needed before hints available
1196 if test -f "/libs/version.library"; then
1197 : Amiga OS
1198     _exe=""
1199 elif test -f "/system/gnu_library/bin/ar.pm"; then
1200 : Stratus VOS
1201     _exe=".pm"
1202 elif test -n "$DJGPP"; then
1203 : DOS DJGPP
1204     _exe=".exe"
1205 elif test -d c:/. -o -n "$is_os2" ; then
1206 : OS/2 or cygwin
1207     _exe=".exe"
1208 fi
1209
1210 i_whoami=''
1211 ccname=''
1212 ccversion=''
1213 perllibs=''
1214 : set useposix=false in your hint file to disable the POSIX extension.
1215 useposix=true
1216 : set useopcode=false in your hint file to disable the Opcode extension.
1217 useopcode=true
1218 : Trailing extension.  Override this in a hint file, if needed.
1219 : Extra object files, if any, needed on this platform.
1220 archobjs=''
1221 archname=''
1222 : Possible local include directories to search.
1223 : Set locincpth to "" in a hint file to defeat local include searches.
1224 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1225 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1226 :
1227 : no include file wanted by default
1228 inclwanted=''
1229
1230 groupstype=''
1231 libnames=''
1232 : change the next line if compiling for Xenix/286 on Xenix/386
1233 xlibpth='/usr/lib/386 /lib/386'
1234 : Possible local library directories to search.
1235 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1236 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1237
1238 : general looking path for locating libraries
1239 glibpth="/lib /usr/lib $xlibpth"
1240 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1241 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1242 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1243
1244 : Private path used by Configure to find libraries.  Its value
1245 : is prepended to libpth. This variable takes care of special
1246 : machines, like the mips.  Usually, it should be empty.
1247 plibpth=''
1248
1249 : default library list
1250 libswanted=''
1251 : some systems want to use only the non-versioned libso:s
1252 ignore_versioned_solibs=''
1253 siteman1dir=''
1254 siteman3dir=''
1255 sitescript=''
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 : set usethreads on the Configure command line to enable threads.
1263 usereentrant='undef'
1264 : full support for void wanted by default
1265 defvoidused=15
1266
1267 : List of libraries we want.
1268 : If anyone needs extra -lxxx, put those in a hint file.
1269 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1270 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
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 'R' and 'S'
2879         # (0xd9 and 0xe2), therefore that is a nice testing point.
2880         if test "X$up" = X -o "X$low" = X; then
2881             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2882             rs) 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 RS | $tr R-S r-s 2>/dev/null`" in
2889             rs) 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 RS | od -x 2>/dev/null`" in
2896             *D9E2*|*d9e2*)
2897                 echo "Hey, this might be EBCDIC." >&4
2898                 if test "X$up" = X -o "X$low" = X; then
2899                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2900                     rs) 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 RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2907                     rs) 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 RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2917 rs)
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                 gnu)    osname=gnu
3115                         osvers="$3" ;;
3116                 hp*)    osname=hpux 
3117                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3118                         ;;
3119                 irix*)  osname=irix
3120                         case "$3" in
3121                         4*) osvers=4 ;;
3122                         5*) osvers=5 ;;
3123                         *)      osvers="$3" ;;
3124                         esac
3125                         ;;
3126                 linux)  osname=linux
3127                         case "$3" in
3128                         *)      osvers="$3" ;;
3129                         esac
3130                         ;;
3131                 MiNT)   osname=mint
3132                         ;;
3133                 netbsd*) osname=netbsd
3134                         osvers="$3"
3135                         ;;
3136                 news-os) osvers="$3"
3137                         case "$3" in
3138                         4*) osname=newsos4 ;;
3139                         *) osname=newsos ;;
3140                         esac
3141                         ;;
3142                 next*) osname=next ;;
3143                 nonstop-ux) osname=nonstopux ;;
3144                 openbsd) osname=openbsd
3145                         osvers="$3"
3146                         ;;
3147                 os2)    osname=os2
3148                         osvers="$4"
3149                         ;;
3150                 POSIX-BC | posix-bc ) osname=posix-bc
3151                         osvers="$3"
3152                         ;;
3153                 powerux | power_ux | powermax_os | powermaxos | \
3154                 powerunix | power_unix) osname=powerux
3155                         osvers="$3"
3156                         ;;
3157                 qnx) osname=qnx
3158                         osvers="$4"
3159                         ;;
3160                 solaris) osname=solaris
3161                         case "$3" in
3162                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3163                         *)      osvers="$3" ;;
3164                         esac
3165                         ;;
3166                 sunos) osname=sunos
3167                         case "$3" in
3168                         5*) osname=solaris
3169                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3170                         *)      osvers="$3" ;;
3171                         esac
3172                         ;;
3173                 titanos) osname=titanos
3174                         case "$3" in
3175                         1*) osvers=1 ;;
3176                         2*) osvers=2 ;;
3177                         3*) osvers=3 ;;
3178                         4*) osvers=4 ;;
3179                         *)      osvers="$3" ;;
3180                         esac
3181                         ;;
3182                 ultrix) osname=ultrix
3183                         osvers="$3"
3184                         ;;
3185                 osf1|mls+)      case "$5" in
3186                                 alpha)
3187                                         osname=dec_osf
3188                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3189                                         case "$osvers" in
3190                                         [1-9].[0-9]*) ;;
3191                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3192                                         esac
3193                                         ;;
3194                         hp*)    osname=hp_osf1  ;;
3195                         mips)   osname=mips_osf1 ;;
3196                         esac
3197                         ;;
3198                 # UnixWare 7.1.2 is known as Open UNIX 8
3199                 openunix|unixware) osname=svr5
3200                         osvers="$4"
3201                         ;;
3202                 uts)    osname=uts
3203                         osvers="$3"
3204                         ;;
3205                 vos) osvers="$3"
3206                         ;;
3207                 $2) case "$osname" in
3208                         *isc*) ;;
3209                         *freebsd*) ;;
3210                         svr*)
3211                                 : svr4.x or possibly later
3212                                 case "svr$3" in 
3213                                 ${osname}*)
3214                                         osname=svr$3
3215                                         osvers=$4
3216                                         ;;
3217                                 esac
3218                                 case "$osname" in
3219                                 svr4.0)
3220                                         : Check for ESIX
3221                                         if test -f /stand/boot ; then
3222                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3223                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3224                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3225                                                         if test -n "$isesix"; then
3226                                                                 osname=esix4
3227                                                         fi
3228                                                 fi
3229                                         fi
3230                                         ;;
3231                                 esac
3232                                 ;;
3233                         *)      if test -f /etc/systemid; then
3234                                         osname=sco
3235                                         set `echo $3 | $sed 's/\./ /g'` $4
3236                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3237                                                 osvers=$1.$2.$3
3238                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3239                                                 osvers=$1.$2
3240                                         elif $test -f $src/hints/sco_$1.sh; then
3241                                                 osvers=$1
3242                                         fi
3243                                 else
3244                                         case "$osname" in
3245                                         '') : Still unknown.  Probably a generic Sys V.
3246                                                 osname="sysv"
3247                                                 osvers="$3"
3248                                                 ;;
3249                                         esac
3250                                 fi
3251                                 ;;
3252                         esac
3253                         ;;
3254                 *)      case "$osname" in
3255                         '') : Still unknown.  Probably a generic BSD.
3256                                 osname="$1"
3257                                 osvers="$3"
3258                                 ;;
3259                         esac
3260                         ;;
3261                 esac
3262         else
3263                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3264                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3265                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3266                                 osname=news_os
3267                         fi
3268                         $rm -f UU/kernel.what
3269                 elif test -d c:/. -o -n "$is_os2" ; then
3270                         set X $myuname
3271                         osname=os2
3272                         osvers="$5"
3273                 fi
3274         fi
3275         
3276         case "$targetarch" in
3277         '') ;;
3278         *)  hostarch=$osname
3279             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3280             osvers=''
3281             ;;
3282         esac
3283
3284         : Now look for a hint file osname_osvers, unless one has been
3285         : specified already.
3286         case "$hintfile" in
3287         ''|' ')
3288                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3289                 : Also try without trailing minor version numbers.
3290                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3291                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3292                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3293                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3294                 case "$file" in
3295                 '') dflt=none ;;
3296                 *)  case "$osvers" in
3297                         '') dflt=$file
3298                                 ;;
3299                         *)  if $test -f $src/hints/$file.sh ; then
3300                                         dflt=$file
3301                                 elif $test -f $src/hints/$xfile.sh ; then
3302                                         dflt=$xfile
3303                                 elif $test -f $src/hints/$xxfile.sh ; then
3304                                         dflt=$xxfile
3305                                 elif $test -f $src/hints/$xxxfile.sh ; then
3306                                         dflt=$xxxfile
3307                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3308                                         dflt=$xxxxfile
3309                                 elif $test -f "$src/hints/${osname}.sh" ; then
3310                                         dflt="${osname}"
3311                                 else
3312                                         dflt=none
3313                                 fi
3314                                 ;;
3315                         esac
3316                         ;;
3317                 esac
3318                 if $test -f Policy.sh ; then
3319                         case "$dflt" in
3320                         *Policy*) ;;
3321                         none) dflt="Policy" ;;
3322                         *) dflt="Policy $dflt" ;;
3323                         esac
3324                 fi
3325                 ;;
3326         *)
3327                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3328                 ;;
3329         esac
3330
3331         if $test -f Policy.sh ; then
3332                 $cat <<EOM
3333
3334 There's also a Policy hint file available, which should make the
3335 site-specific (policy) questions easier to answer.
3336 EOM
3337
3338         fi
3339
3340         $cat <<EOM
3341
3342 You may give one or more space-separated answers, or "none" if appropriate.
3343 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3344 is a good thing.  DO NOT give a wrong version or a wrong OS.
3345
3346 EOM
3347
3348         rp="Which of these apply, if any?"
3349         . UU/myread
3350         tans=$ans
3351         for file in $tans; do
3352                 if $test X$file = XPolicy -a -f Policy.sh; then
3353                         . Policy.sh
3354                         $cat Policy.sh >> UU/config.sh
3355                 elif $test -f $src/hints/$file.sh; then
3356                         . $src/hints/$file.sh
3357                         $cat $src/hints/$file.sh >> UU/config.sh
3358                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3359                         : nothing
3360                 else
3361                         : Give one chance to correct a possible typo.
3362                         echo "$file.sh does not exist"
3363                         dflt=$file
3364                         rp="hint to use instead?"
3365                         . UU/myread
3366                         for file in $ans; do
3367                                 if $test -f "$src/hints/$file.sh"; then
3368                                         . $src/hints/$file.sh
3369                                         $cat $src/hints/$file.sh >> UU/config.sh
3370                                 elif $test X$ans = X -o X$ans = Xnone ; then
3371                                         : nothing
3372                                 else
3373                                         echo "$file.sh does not exist -- ignored."
3374                                 fi
3375                         done
3376                 fi
3377         done
3378
3379         hint=recommended
3380         : Remember our hint file for later.
3381         if $test -f "$src/hints/$file.sh" ; then
3382                 hintfile="$file"
3383         else
3384                 hintfile=''
3385         fi
3386 fi
3387 cd UU
3388 ;;
3389 *)
3390         echo " "
3391         echo "Fetching default answers from $config_sh..." >&4
3392         tmp_n="$n"
3393         tmp_c="$c"
3394         cd ..
3395         cp $config_sh config.sh 2>/dev/null
3396         chmod +w config.sh
3397         . ./config.sh
3398         cd UU
3399         cp ../config.sh .
3400         n="$tmp_n"
3401         c="$tmp_c"
3402         hint=previous
3403         ;;
3404 esac
3405 test "$override" && . ./optdef.sh
3406
3407 : Restore computed paths
3408 for file in $loclist $trylist; do
3409         eval $file="\$_$file"
3410 done
3411
3412 cat << EOM
3413
3414 Configure uses the operating system name and version to set some defaults.
3415 The default value is probably right if the name rings a bell. Otherwise,
3416 since spelling matters for me, either accept the default or answer "none"
3417 to leave it blank.
3418
3419 EOM
3420 case "$osname" in
3421         ''|' ')
3422                 case "$hintfile" in
3423                 ''|' '|none) dflt=none ;;
3424                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3425                 esac
3426                 ;;
3427         *) dflt="$osname" ;;
3428 esac
3429 rp="Operating system name?"
3430 . ./myread
3431 case "$ans" in
3432 none)  osname='' ;;
3433 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3434 esac
3435 echo " "
3436 case "$osvers" in
3437         ''|' ')
3438                 case "$hintfile" in
3439                 ''|' '|none) dflt=none ;;
3440                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3441                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3442                         case "$dflt" in
3443                         ''|' ') dflt=none ;;
3444                         esac
3445                         ;;
3446                 esac
3447                 ;;
3448         *) dflt="$osvers" ;;
3449 esac
3450 rp="Operating system version?"
3451 . ./myread
3452 case "$ans" in
3453 none)  osvers='' ;;
3454 *) osvers="$ans" ;;
3455 esac
3456
3457
3458 . ./posthint.sh
3459
3460 : who configured the system
3461 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3462 case "$cf_by" in
3463 "")
3464         cf_by=`(logname) 2>/dev/null`
3465         case "$cf_by" in
3466         "")
3467                 cf_by=`(whoami) 2>/dev/null`
3468                 case "$cf_by" in
3469                 "") cf_by=unknown ;;
3470                 esac ;;
3471         esac ;;
3472 esac
3473
3474 : set up the script used to warn in case of inconsistency
3475 cat <<EOS >whoa
3476 $startsh
3477 EOS
3478 cat <<'EOSC' >>whoa
3479 dflt=y
3480 echo " "
3481 echo "*** WHOA THERE!!! ***" >&4
3482 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3483 rp="    Keep the $hint value?"
3484 . ./myread
3485 case "$ans" in
3486 y) td=$was; tu=$was;;
3487 esac
3488 EOSC
3489
3490 : function used to set $1 to $val
3491 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3492 case "$val$was" in
3493 $define$undef) . ./whoa; eval "$var=\$td";;
3494 $undef$define) . ./whoa; eval "$var=\$tu";;
3495 *) eval "$var=$val";;
3496 esac'
3497
3498 case "$usesocks" in
3499 $define|true|[yY]*)     dflt='y';;
3500 *) dflt='n';;
3501 esac
3502 cat <<EOM
3503
3504 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3505 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3506 to use the PerlIO abstraction layer, this will be implicitly selected.
3507
3508 If this doesn't make any sense to you, just accept the default '$dflt'.
3509 EOM
3510 rp='Build Perl for SOCKS?'
3511 . ./myread
3512 case "$ans" in
3513 y|Y)    val="$define" ;;     
3514 *)      val="$undef" ;;
3515 esac
3516 set usesocks
3517 eval $setvar
3518
3519 case "$usesocks" in
3520 $define|true|[yY]*) useperlio="$define";;
3521 esac
3522
3523 case "$useperlio" in
3524 $define|true|[yY]*|'')  dflt='y';;
3525 *) dflt='n';;
3526 esac
3527 cat <<EOM
3528
3529 Previous version of $package used the standard IO mechanisms as
3530 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3531 alternate IO mechanisms via the PerlIO abstraction layer, but the
3532 stdio mechanism is still available if needed.  The abstraction layer
3533 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3534 Using PerlIO with sfio may cause problems with some extension modules.
3535
3536 If this doesn't make any sense to you, just accept the default '$dflt'.
3537 EOM
3538 rp='Use the PerlIO abstraction layer?'
3539 . ./myread
3540 case "$ans" in
3541 y|Y) 
3542         val="$define"
3543         ;;
3544 *)      
3545         echo "Ok, doing things the stdio way."
3546         val="$undef"
3547         ;;
3548 esac
3549 set useperlio
3550 eval $setvar 
3551
3552 case "$usesocks" in
3553 $define|true|[yY]*)
3554         case "$useperlio" in
3555         $define|true|[yY]*) ;;
3556         *)      cat >&4 <<EOM
3557
3558 You are using the SOCKS proxy protocol library which means that you
3559 should also use the PerlIO layer.  You may be headed for trouble.
3560
3561 EOM
3562                 ;;
3563         esac
3564         ;;
3565 esac
3566
3567         
3568 case "$usethreads" in
3569 $define|true|[yY]*)     dflt='y';;
3570 *)     # Catch case where user specified ithreads or 5005threads but
3571        # forgot -Dusethreads (A.D. 4/2002)
3572        case "$useithreads$use5005threads" in
3573        *$define*)      
3574                 case "$useperlio" in
3575                 "$define")      dflt='y' ;;
3576                 *)              dflt='n' ;;
3577                 esac
3578                 ;;
3579        *)       dflt='n';;
3580        esac
3581        ;;
3582 esac
3583 cat <<EOM
3584
3585 Perl can be built to take advantage of threads on some systems.
3586 To do so, Configure can be run with -Dusethreads.
3587
3588 Note that Perl built with threading support runs slightly slower
3589 and uses more memory than plain Perl. The current implementation
3590 is believed to be stable, but it is fairly new, and so should be
3591 treated with caution.
3592
3593 If this doesn't make any sense to you, just accept the default '$dflt'.
3594 EOM
3595 rp='Build a threading Perl?'
3596 . ./myread
3597 case "$ans" in
3598 y|Y)    val="$define" ;;
3599 *)      val="$undef" ;;
3600 esac
3601 set usethreads
3602 eval $setvar
3603
3604 case "$usethreads" in
3605 $define)
3606         $cat <<EOM
3607
3608 Since release 5.6, Perl has had two different threading implementations,
3609 the newer interpreter-based version (ithreads) with one interpreter per
3610 thread, and the older 5.005 version (5005threads).
3611 The 5005threads version is effectively unmaintained and will probably be
3612 removed in Perl 5.10, so there should be no need to build a Perl using it
3613 unless needed for backwards compatibility with some existing 5.005threads
3614 code.
3615
3616 EOM
3617         : Default to ithreads unless overridden on command line or with
3618         : old config.sh
3619         dflt='y'
3620         case "$use5005threads" in
3621                 $define|true|[yY]*) dflt='n';;
3622         esac
3623         case "$useithreads" in
3624                 $undef|false|[nN]*) dflt='n';;
3625         esac
3626         rp='Use the newer interpreter-based ithreads?'
3627         . ./myread
3628         case "$ans" in
3629         y|Y)    val="$define" ;;
3630         *)      val="$undef" ;;
3631         esac
3632         set useithreads
3633         eval $setvar
3634         : Now set use5005threads to the opposite value.
3635         case "$useithreads" in
3636         $define) val="$undef" ;;
3637         *) val="$define" ;;
3638         esac
3639         set use5005threads
3640         eval $setvar
3641         ;;
3642 *)
3643         useithreads="$undef"
3644         use5005threads="$undef"
3645         ;;
3646 esac
3647
3648 case "$useithreads$use5005threads" in
3649 "$define$define")
3650         $cat >&4 <<EOM
3651
3652 You cannot have both the ithreads and the 5.005 threads enabled
3653 at the same time.  Disabling the 5.005 threads since they are
3654 much less stable than the ithreads.
3655
3656 EOM
3657         use5005threads="$undef"
3658         ;;
3659 esac
3660
3661 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3662         cat >&4 <<EOF
3663 ***
3664 *** To build with ithreads you must also use the PerlIO layer.
3665 *** Cannot continue, aborting.
3666 ***
3667 EOF
3668         exit 1
3669 fi
3670
3671 case "$d_oldpthreads" in
3672 '')     : Configure tests would be welcome here.  For now, assume undef.
3673         val="$undef" ;;
3674 *)      val="$d_oldpthreads" ;;
3675 esac
3676 set d_oldpthreads
3677 eval $setvar
3678
3679
3680 : Look for a hint-file generated 'call-back-unit'.  If the
3681 : user has specified that a threading perl is to be built,
3682 : we may need to set or change some other defaults.
3683 if $test -f usethreads.cbu; then
3684     echo "Your platform has some specific hints regarding threaded builds, using them..."
3685     . ./usethreads.cbu
3686 else
3687     case "$usethreads" in
3688         "$define"|true|[yY]*)
3689                 $cat <<EOM
3690 (Your platform does not have any specific hints for threaded builds.
3691  Assuming POSIX threads, then.)
3692 EOM
3693         ;;
3694     esac
3695 fi
3696
3697 cat <<EOM
3698
3699 Perl can be built so that multiple Perl interpreters can coexist
3700 within the same Perl executable.
3701 EOM
3702
3703 case "$useithreads" in
3704 $define)
3705         cat <<EOM
3706 This multiple interpreter support is required for interpreter-based threads.
3707 EOM
3708         val="$define"
3709         ;;
3710 *)      case "$usemultiplicity" in
3711         $define|true|[yY]*)     dflt='y';;
3712         *) dflt='n';;
3713         esac
3714         echo " "
3715         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3716         rp='Build Perl for multiplicity?'
3717         . ./myread
3718         case "$ans" in
3719         y|Y)    val="$define" ;;
3720         *)      val="$undef" ;;
3721         esac
3722         ;;
3723 esac
3724 set usemultiplicity
3725 eval $setvar
3726
3727
3728 case "$usemorebits" in
3729 "$define"|true|[yY]*)
3730         use64bitint="$define"
3731         uselongdouble="$define"
3732         usemorebits="$define"
3733         ;;
3734 *)      usemorebits="$undef"
3735         ;;
3736 esac
3737
3738 : make some quick guesses about what we are up against
3739 echo " "
3740 $echo $n "Hmm...  $c"
3741 echo exit 1 >bsd
3742 echo exit 1 >usg
3743 echo exit 1 >v7
3744 echo exit 1 >osf1
3745 echo exit 1 >eunice
3746 echo exit 1 >xenix
3747 echo exit 1 >venix
3748 echo exit 1 >os2
3749 d_bsd="$undef"
3750 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3751 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3752 then
3753         echo "Looks kind of like an OSF/1 system, but we'll see..."
3754         echo exit 0 >osf1
3755 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3756         xxx=`./loc addbib blurfl $pth`
3757         if $test -f $xxx; then
3758         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3759                 echo exit 0 >bsd
3760                 echo exit 0 >usg
3761         else
3762                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3763                         echo "Looks kind of like an extended USG system, but we'll see..."
3764                 else
3765                         echo "Looks kind of like a USG system, but we'll see..."
3766                 fi
3767                 echo exit 0 >usg
3768         fi
3769 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3770         echo "Looks kind of like a BSD system, but we'll see..."
3771         d_bsd="$define"
3772         echo exit 0 >bsd
3773 else
3774         echo "Looks kind of like a Version 7 system, but we'll see..."
3775         echo exit 0 >v7
3776 fi
3777 case "$eunicefix" in
3778 *unixtovms*)
3779         $cat <<'EOI'
3780 There is, however, a strange, musty smell in the air that reminds me of
3781 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3782 EOI
3783         echo exit 0 >eunice
3784         d_eunice="$define"
3785 : it so happens the Eunice I know will not run shell scripts in Unix format
3786         ;;
3787 *)
3788         echo " "
3789         echo "Congratulations.  You aren't running Eunice."
3790         d_eunice="$undef"
3791         ;;
3792 esac
3793 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3794 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3795 : semicolon as a patch separator
3796 case "$p_" in
3797 :) ;;
3798 *)
3799         $cat <<'EOI'
3800 I have the feeling something is not exactly right, however...don't tell me...
3801 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3802 (Or you may be running DOS with DJGPP.)
3803 EOI
3804         echo exit 0 >os2
3805         ;;
3806 esac
3807 if test -f /xenix; then
3808         echo "Actually, this looks more like a XENIX system..."
3809         echo exit 0 >xenix
3810         d_xenix="$define"
3811 else
3812         echo " "
3813         echo "It's not Xenix..."
3814         d_xenix="$undef"
3815 fi
3816 chmod +x xenix
3817 $eunicefix xenix
3818 if test -f /venix; then
3819         echo "Actually, this looks more like a VENIX system..."
3820         echo exit 0 >venix
3821 else
3822         echo " "
3823         if ./xenix; then
3824                 : null
3825         else
3826                 echo "Nor is it Venix..."
3827         fi
3828 fi
3829 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3830 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3831 $rm -f foo
3832
3833 case "$cc" in
3834 '') dflt=cc;;
3835 *) dflt="$cc";;
3836 esac
3837 rp="Use which C compiler?"
3838 . ./myread
3839 cc="$ans"
3840
3841 : See if they have not cc but they do have gcc
3842 . ./trygcc
3843 : Look for a hint-file generated 'call-back-unit'.  Now that the
3844 : user has specified the compiler, we may need to set or change some
3845 : other defaults.
3846 if $test -f cc.cbu; then
3847     . ./cc.cbu
3848 fi
3849 . ./checkcc
3850
3851 echo " "
3852 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3853 $cat >try.c <<EOM
3854 #include <stdio.h>
3855 int main() {
3856 #ifdef __GNUC__
3857 #ifdef __VERSION__
3858         printf("%s\n", __VERSION__);
3859 #else
3860         printf("%s\n", "1");
3861 #endif
3862 #endif
3863         return(0);
3864 }
3865 EOM
3866 if $cc -o try $ccflags $ldflags try.c; then
3867         gccversion=`$run ./try`
3868         case "$gccversion" in
3869         '') echo "You are not using GNU cc." ;;
3870         *)  echo "You are using GNU cc $gccversion."
3871             ccname=gcc
3872             ;;
3873         esac
3874 else
3875         echo " "
3876         echo "*** WHOA THERE!!! ***" >&4
3877         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3878         case "$knowitall" in
3879         '')
3880         echo "    You'd better start hunting for one and let me know about it." >&4
3881                 exit 1
3882                 ;;
3883         esac
3884 fi
3885 $rm -f try try.*
3886 case "$gccversion" in
3887 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3888 esac
3889 case "$gccversion" in
3890 '') gccosandvers='' ;;
3891 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3892    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3893    gccshortvers=''
3894    case "$gccosandvers" in
3895    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3896    $osname$osvers) ;; # looking good
3897    $osname*) cat <<EOM >&4
3898
3899 *** WHOA THERE!!! ***
3900
3901     Your gcc has not been compiled for the exact release of
3902     your operating system ($gccosandvers versus $osname$osvers).
3903
3904     In general it is a good idea to keep gcc synchronized with
3905     the operating system because otherwise serious problems
3906     may ensue when trying to compile software, like Perl.
3907
3908     I'm trying to be optimistic here, though, and will continue.
3909     If later during the configuration and build icky compilation
3910     problems appear (headerfile conflicts being the most common
3911     manifestation), I suggest reinstalling the gcc to match
3912     your operating system release.
3913
3914 EOM
3915       ;;
3916    *) gccosandvers='' ;; # failed to parse, better be silent
3917    esac
3918    ;;
3919 esac
3920 case "$ccname" in
3921 '') ccname="$cc" ;;
3922 esac
3923
3924 # gcc 3.* complain about adding -Idirectories that they already know about,
3925 # so we will take those off from locincpth.
3926 case "$gccversion" in
3927 3*)
3928     echo "main(){}">try.c
3929     for incdir in $locincpth; do
3930        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3931              grep '^c[cp]p*[01]: warning: changing search order '`
3932        if test "X$warn" != X; then
3933            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3934        fi
3935     done
3936     $rm -f try try.*
3937 esac
3938
3939 : decide how portable to be.  Allow command line overrides.
3940 case "$d_portable" in
3941 "$undef") ;;
3942 *)      d_portable="$define" ;;
3943 esac
3944
3945 : set up shell script to do ~ expansion
3946 cat >filexp <<EOSS
3947 $startsh
3948 : expand filename
3949 case "\$1" in
3950  ~/*|~)
3951         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3952         ;;
3953  ~*)
3954         if $test -f /bin/csh; then
3955                 /bin/csh -f -c "glob \$1"
3956                 failed=\$?
3957                 echo ""
3958                 exit \$failed
3959         else
3960                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3961                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3962                 if $test ! -d "\$dir"; then
3963                         me=\`basename \$0\`
3964                         echo "\$me: can't locate home directory for: \$name" >&2
3965                         exit 1
3966                 fi
3967                 case "\$1" in
3968                 */*)
3969                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3970                         ;;
3971                 *)
3972                         echo \$dir
3973                         ;;
3974                 esac
3975         fi
3976         ;;
3977 *)
3978         echo \$1
3979         ;;
3980 esac
3981 EOSS
3982 chmod +x filexp
3983 $eunicefix filexp
3984
3985 : now set up to get a file name
3986 cat <<EOS >getfile
3987 $startsh
3988 EOS
3989 cat <<'EOSC' >>getfile
3990 tilde=''
3991 fullpath=''
3992 already=''
3993 skip=''
3994 none_ok=''
3995 exp_file=''
3996 nopath_ok=''
3997 orig_rp="$rp"
3998 orig_dflt="$dflt"
3999 case "$gfpth" in
4000 '') gfpth='.' ;;
4001 esac
4002
4003 case "$fn" in
4004 *\(*)
4005         : getfile will accept an answer from the comma-separated list
4006         : enclosed in parentheses even if it does not meet other criteria.
4007         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4008         fn=`echo $fn | sed 's/(.*)//'`
4009         ;;
4010 esac
4011
4012 case "$fn" in
4013 *:*)
4014         loc_file=`expr $fn : '.*:\(.*\)'`
4015         fn=`expr $fn : '\(.*\):.*'`
4016         ;;
4017 esac
4018
4019 case "$fn" in
4020 *~*) tilde=true;;
4021 esac
4022 case "$fn" in
4023 */*) fullpath=true;;
4024 esac
4025 case "$fn" in
4026 *+*) skip=true;;
4027 esac
4028 case "$fn" in
4029 *n*) none_ok=true;;
4030 esac
4031 case "$fn" in
4032 *e*) exp_file=true;;
4033 esac
4034 case "$fn" in
4035 *p*) nopath_ok=true;;
4036 esac
4037
4038 case "$fn" in
4039 *f*) type='File';;
4040 *d*) type='Directory';;
4041 *l*) type='Locate';;
4042 esac
4043
4044 what="$type"
4045 case "$what" in
4046 Locate) what='File';;
4047 esac
4048
4049 case "$exp_file" in
4050 '')
4051         case "$d_portable" in
4052         "$define") ;;
4053         *) exp_file=true;;
4054         esac
4055         ;;
4056 esac
4057
4058 cd ..
4059 while test "$type"; do
4060         redo=''
4061         rp="$orig_rp"
4062         dflt="$orig_dflt"
4063         case "$tilde" in
4064         true) rp="$rp (~name ok)";;
4065         esac
4066         . UU/myread
4067         if test -f UU/getfile.ok && \
4068                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4069         then
4070                 value="$ans"
4071                 ansexp="$ans"
4072                 break
4073         fi
4074         case "$ans" in
4075         none)
4076                 value=''
4077                 ansexp=''
4078                 case "$none_ok" in
4079                 true) type='';;
4080                 esac
4081                 ;;
4082         *)
4083                 case "$tilde" in
4084                 '') value="$ans"
4085                         ansexp="$ans";;
4086                 *)
4087                         value=`UU/filexp $ans`
4088                         case $? in
4089                         0)
4090                                 if test "$ans" != "$value"; then
4091                                         echo "(That expands to $value on this system.)"
4092                                 fi
4093                                 ;;
4094                         *) value="$ans";;
4095                         esac
4096                         ansexp="$value"
4097                         case "$exp_file" in
4098                         '') value="$ans";;
4099                         esac
4100                         ;;
4101                 esac
4102                 case "$fullpath" in
4103                 true)
4104                         case "$ansexp" in
4105                         /*) value="$ansexp" ;;
4106                         [a-zA-Z]:/*) value="$ansexp" ;;
4107                         *)
4108                                 redo=true
4109                                 case "$already" in
4110                                 true)
4111                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4112                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4113                                         ;;
4114                                 *)
4115                                 echo "Please give a full path name, starting with slash." >&4
4116                                         case "$tilde" in
4117                                         true)
4118                                 echo "Note that using ~name is ok provided it expands well." >&4
4119                                                 already=true
4120                                                 ;;
4121                                         esac
4122                                 esac
4123                                 ;;
4124                         esac
4125                         ;;
4126                 esac
4127                 case "$redo" in
4128                 '')
4129                         case "$type" in
4130                         File)
4131                                 for fp in $gfpth; do
4132                                         if test "X$fp" = X.; then
4133                                             pf="$ansexp"
4134                                         else    
4135                                             pf="$fp/$ansexp"
4136                                         fi
4137                                         if test -f "$pf"; then
4138                                                 type=''
4139                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4140                                         then
4141                                                 echo "($value is not a plain file, but that's ok.)"
4142                                                 type=''
4143                                         fi
4144                                         if test X"$type" = X; then
4145                                             value="$pf"
4146                                             break
4147                                         fi
4148                                 done
4149                                 ;;
4150                         Directory)
4151                                 for fp in $gfpth; do
4152                                         if test "X$fp" = X.; then
4153                                             dir="$ans"
4154                                             direxp="$ansexp"
4155                                         else    
4156                                             dir="$fp/$ansexp"
4157                                             direxp="$fp/$ansexp"
4158                                         fi
4159                                         if test -d "$direxp"; then
4160                                                 type=''
4161                                                 value="$dir"
4162                                                 break
4163                                         fi
4164                                 done
4165                                 ;;
4166                         Locate)
4167                                 if test -d "$ansexp"; then
4168                                         echo "(Looking for $loc_file in directory $value.)"
4169                                         value="$value/$loc_file"
4170                                         ansexp="$ansexp/$loc_file"
4171                                 fi
4172                                 if test -f "$ansexp"; then
4173                                         type=''
4174                                 fi
4175                                 case "$nopath_ok" in
4176                                 true)   case "$value" in
4177                                         */*) ;;
4178                                         *)      echo "Assuming $value will be in people's path."
4179                                                 type=''
4180                                                 ;;
4181                                         esac
4182                                         ;;
4183                                 esac
4184                                 ;;
4185                         esac
4186
4187                         case "$skip" in
4188                         true) type='';
4189                         esac
4190
4191                         case "$type" in
4192                         '') ;;
4193                         *)
4194                                 if test "$fastread" = yes; then
4195                                         dflt=y
4196                                 else
4197                                         dflt=n
4198                                 fi
4199                                 rp="$what $value doesn't exist.  Use that name anyway?"
4200                                 . UU/myread
4201                                 dflt=''
4202                                 case "$ans" in
4203                                 y*) type='';;
4204                                 *) echo " ";;
4205                                 esac
4206                                 ;;
4207                         esac
4208                         ;;
4209                 esac
4210                 ;;
4211         esac
4212 done
4213 cd UU
4214 ans="$value"
4215 rp="$orig_rp"
4216 dflt="$orig_dflt"
4217 rm -f getfile.ok
4218 test "X$gfpthkeep" != Xy && gfpth=""
4219 EOSC
4220
4221 : What should the include directory be ?
4222 echo " "
4223 $echo $n "Hmm...  $c"
4224 dflt='/usr/include'
4225 incpath=''
4226 mips_type=''
4227 if $test -f /bin/mips && /bin/mips; then
4228         echo "Looks like a MIPS system..."
4229         $cat >usr.c <<'EOCP'
4230 #ifdef SYSTYPE_BSD43
4231 /bsd43
4232 #endif
4233 EOCP
4234         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4235                 dflt='/bsd43/usr/include'
4236                 incpath='/bsd43'
4237                 mips_type='BSD 4.3'
4238         else
4239                 mips_type='System V'
4240         fi
4241         $rm -f usr.c usr.out
4242         echo "and you're compiling with the $mips_type compiler and libraries."
4243         xxx_prompt=y
4244         echo "exit 0" >mips
4245 else
4246         echo "Doesn't look like a MIPS system."
4247         xxx_prompt=n
4248         echo "exit 1" >mips
4249 fi
4250 chmod +x mips
4251 $eunicefix mips
4252 case "$usrinc" in
4253 '') ;;
4254 *) dflt="$usrinc";;
4255 esac
4256 case "$xxx_prompt" in
4257 y)      fn=d/
4258         echo " "
4259         rp='Where are the include files you want to use?'
4260         . ./getfile
4261         usrinc="$ans"
4262         ;;
4263 *)      usrinc="$dflt"
4264         ;;
4265 esac
4266
4267 : see how we invoke the C preprocessor
4268 echo " "
4269 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4270 cat <<'EOT' >testcpp.c
4271 #define ABC abc
4272 #define XYZ xyz
4273 ABC.XYZ
4274 EOT
4275 cd ..
4276 if test ! -f cppstdin; then
4277         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4278                 # AIX cc -E doesn't show the absolute headerfile
4279                 # locations but we'll cheat by using the -M flag.
4280                 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
4281         else
4282                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4283         fi
4284 else
4285         echo "Keeping your $hint cppstdin wrapper."
4286 fi
4287 chmod 755 cppstdin
4288 wrapper=`pwd`/cppstdin
4289 ok='false'
4290 cd UU
4291
4292 if $test "X$cppstdin" != "X" && \
4293         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4294         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4295 then
4296         echo "You used to use $cppstdin $cppminus so we'll use that again."
4297         case "$cpprun" in
4298         '') echo "But let's see if we can live without a wrapper..." ;;
4299         *)
4300                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4301                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4302                 then
4303                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4304                         ok='true'
4305                 else
4306                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4307                 fi
4308                 ;;
4309         esac
4310 else
4311         case "$cppstdin" in
4312         '') ;;
4313         *)
4314                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4315                 ;;
4316         esac
4317 fi
4318
4319 if $ok; then
4320         : nothing
4321 elif echo '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"' -E -" will work...'; \
4328         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4329         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4330         echo "Yup, it does."
4331         x_cpp="$cc -E"
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 "Yipee, that works!"
4337         x_cpp="$cc -P"
4338         x_minus='';
4339 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4340         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4341         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4342         echo "At long last!"
4343         x_cpp="$cc -P"
4344         x_minus='-';
4345 elif echo 'No such luck, 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 "It works!"
4349         x_cpp="$cpp"
4350         x_minus='';
4351 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4352         $cpp - <testcpp.c >testcpp.out 2>&1; \
4353         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4354         echo "Hooray, it works!  I was beginning to wonder."
4355         x_cpp="$cpp"
4356         x_minus='-';
4357 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4358         $wrapper <testcpp.c >testcpp.out 2>&1; \
4359         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4360         x_cpp="$wrapper"
4361         x_minus=''
4362         echo "Eureka!"
4363 else
4364         dflt=''
4365         rp="No dice.  I can't find a C preprocessor.  Name one:"
4366         . ./myread
4367         x_cpp="$ans"
4368         x_minus=''
4369         $x_cpp <testcpp.c >testcpp.out 2>&1
4370         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4371                 echo "OK, that will do." >&4
4372         else
4373 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4374                 exit 1
4375         fi
4376 fi
4377
4378 case "$ok" in
4379 false)
4380         cppstdin="$x_cpp"
4381         cppminus="$x_minus"
4382         cpprun="$x_cpp"
4383         cpplast="$x_minus"
4384         set X $x_cpp
4385         shift
4386         case "$1" in
4387         "$cpp")
4388                 echo "Perhaps can we force $cc -E using a wrapper..."
4389                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4390                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4391                 then
4392                         echo "Yup, we can."
4393                         cppstdin="$wrapper"
4394                         cppminus='';
4395                 else
4396                         echo "Nope, we'll have to live without it..."
4397                 fi
4398                 ;;
4399         esac
4400         case "$cpprun" in
4401         "$wrapper")
4402                 cpprun=''
4403                 cpplast=''
4404                 ;;
4405         esac
4406         ;;
4407 esac
4408
4409 case "$cppstdin" in
4410 "$wrapper"|'cppstdin') ;;
4411 *) $rm -f $wrapper;;
4412 esac
4413 $rm -f testcpp.c testcpp.out
4414
4415 : Set private lib path
4416 case "$plibpth" in
4417 '') if ./mips; then
4418                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4419         fi;;
4420 esac
4421 case "$libpth" in
4422 ' ') dlist='';;
4423 '') dlist="$loclibpth $plibpth $glibpth";;
4424 *) dlist="$libpth";;
4425 esac
4426
4427 : Now check and see which directories actually exist, avoiding duplicates
4428 libpth=''
4429 for xxx in $dlist
4430 do
4431     if $test -d $xxx; then
4432                 case " $libpth " in
4433                 *" $xxx "*) ;;
4434                 *) libpth="$libpth $xxx";;
4435                 esac
4436     fi
4437 done
4438 $cat <<'EOM'
4439
4440 Some systems have incompatible or broken versions of libraries.  Among
4441 the directories listed in the question below, please remove any you
4442 know not to be holding relevant libraries, and add any that are needed.
4443 Say "none" for none.
4444
4445 EOM
4446 case "$libpth" in
4447 '') dflt='none';;
4448 *)
4449         set X $libpth
4450         shift
4451         dflt=${1+"$@"}
4452         ;;
4453 esac
4454 rp="Directories to use for library searches?"
4455 . ./myread
4456 case "$ans" in
4457 none) libpth=' ';;
4458 *) libpth="$ans";;
4459 esac
4460
4461 : compute shared library extension
4462 case "$so" in
4463 '')
4464         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4465                 dflt='sl'
4466         else
4467                 dflt='so'
4468         fi
4469         ;;
4470 *) dflt="$so";;
4471 esac
4472 $cat <<EOM
4473
4474 On some systems, shared libraries may be available.  Answer 'none' if
4475 you want to suppress searching of shared libraries for the remainder
4476 of this configuration.
4477
4478 EOM
4479 rp='What is the file extension used for shared libraries?'
4480 . ./myread
4481 so="$ans"
4482
4483 : Define several unixisms.
4484 : Hints files or command line option can be used to override them.
4485 : The convoluted testing is in case hints files set either the old
4486 : or the new name.
4487 case "$_exe" in
4488 '')     case "$exe_ext" in
4489         '')     ;;
4490         *)      _exe="$exe_ext" ;;
4491         esac
4492         ;;
4493 esac
4494 case "$_a" in
4495 '')     case "$lib_ext" in
4496     '') _a='.a';;
4497         *)      _a="$lib_ext" ;;
4498         esac
4499         ;;
4500 esac
4501 case "$_o" in
4502 '') case "$obj_ext" in
4503         '')     _o='.o';;
4504         *)      _o="$obj_ext";;
4505         esac
4506         ;;
4507 esac
4508 case "$p_" in
4509 '') case "$path_sep" in
4510         '')     p_=':';;
4511         *)      p_="$path_sep";;
4512         esac
4513         ;;
4514 esac
4515 exe_ext=$_exe
4516 lib_ext=$_a
4517 obj_ext=$_o
4518 path_sep=$p_
4519
4520 : Which makefile gets called first.  This is used by make depend.
4521 case "$firstmakefile" in
4522 '') firstmakefile='makefile';;
4523 esac
4524
4525 case "$ccflags" in
4526 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4527 esac
4528
4529 case "$uselongdouble" in
4530 $define|true|[yY]*)     dflt='y';;
4531 *) dflt='n';;
4532 esac
4533 cat <<EOM
4534
4535 Perl can be built to take advantage of long doubles which
4536 (if available) may give more accuracy and range for floating point numbers.
4537
4538 If this doesn't make any sense to you, just accept the default '$dflt'.
4539 EOM
4540 rp='Try to use long doubles if available?'
4541 . ./myread
4542 case "$ans" in
4543 y|Y)    val="$define"   ;;
4544 *)      val="$undef"    ;;
4545 esac
4546 set uselongdouble
4547 eval $setvar
4548
4549 case "$uselongdouble" in
4550 true|[yY]*) uselongdouble="$define" ;;
4551 esac
4552
4553 : Look for a hint-file generated 'call-back-unit'.  If the
4554 : user has specified that long doubles should be used,
4555 : we may need to set or change some other defaults.
4556 if $test -f uselongdouble.cbu; then
4557     echo "Your platform has some specific hints regarding long doubles, using them..."
4558     . ./uselongdouble.cbu
4559 else
4560     case "$uselongdouble" in
4561         $define)
4562                 $cat <<EOM
4563 (Your platform does not have any specific hints for long doubles.)
4564 EOM
4565         ;;
4566     esac
4567 fi
4568
4569 : Looking for optional libraries
4570 echo " "
4571 echo "Checking for optional libraries..." >&4
4572 case "$libs" in
4573 ' '|'') dflt='';;
4574 *) dflt="$libs";;
4575 esac
4576 case "$libswanted" in
4577 '') libswanted='c_s';;
4578 esac
4579 case "$usesocks" in
4580 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4581 esac
4582 libsfound=''
4583 libsfiles=''
4584 libsdirs=''
4585 libspath=''
4586 for thisdir in $libpth $xlibpth; do
4587   test -d $thisdir && libspath="$libspath $thisdir"
4588 done
4589 for thislib in $libswanted; do
4590         for thisdir in $libspath; do
4591             xxx=''
4592             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4593                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4594                 $test -f "$xxx" && eval $libscheck
4595                 $test -f "$xxx" && libstyle=shared
4596             fi
4597             if test ! -f "$xxx"; then
4598                 xxx=$thisdir/lib$thislib.$so
4599                 $test -f "$xxx" && eval $libscheck
4600                 $test -f "$xxx" && libstyle=shared
4601             fi  
4602             if test ! -f "$xxx"; then
4603                 xxx=$thisdir/lib$thislib$_a
4604                 $test -f "$xxx" && eval $libscheck
4605                 $test -f "$xxx" && libstyle=static
4606             fi
4607             if test ! -f "$xxx"; then
4608                 xxx=$thisdir/$thislib$_a
4609                 $test -f "$xxx" && eval $libscheck
4610                 $test -f "$xxx" && libstyle=static
4611             fi
4612             if test ! -f "$xxx"; then
4613                 xxx=$thisdir/lib${thislib}_s$_a
4614                 $test -f "$xxx" && eval $libscheck
4615                 $test -f "$xxx" && libstyle=static
4616                 $test -f "$xxx" && thislib=${thislib}_s
4617             fi
4618             if test ! -f "$xxx"; then
4619                 xxx=$thisdir/Slib$thislib$_a
4620                 $test -f "$xxx" && eval $libscheck
4621                 $test -f "$xxx" && libstyle=static
4622             fi
4623             if $test -f "$xxx"; then
4624                 case "$libstyle" in
4625                 shared) echo "Found -l$thislib (shared)." ;;
4626                 static) echo "Found -l$thislib." ;;
4627                 *)      echo "Found -l$thislib ($libstyle)." ;;
4628                 esac
4629                 case " $dflt " in
4630                 *"-l$thislib "*);;
4631                 *) dflt="$dflt -l$thislib"
4632                    libsfound="$libsfound $xxx"
4633                    yyy=`basename $xxx`
4634                    libsfiles="$libsfiles $yyy"
4635                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4636                    case " $libsdirs " in
4637                    *" $yyy "*) ;;
4638                    *) libsdirs="$libsdirs $yyy" ;;
4639                    esac
4640                    ;;
4641                 esac
4642                 break
4643             fi  
4644         done
4645         if $test ! -f "$xxx"; then
4646             echo "No -l$thislib."
4647         fi
4648 done
4649 set X $dflt
4650 shift
4651 dflt="$*"
4652 case "$libs" in
4653 '') dflt="$dflt";;
4654 *) dflt="$libs";;
4655 esac
4656 case "$dflt" in
4657 ' '|'') dflt='none';;
4658 esac
4659
4660 $cat <<EOM
4661
4662 In order to compile $package on your machine, a number of libraries
4663 are usually needed.  Include any other special libraries here as well.
4664 Say "none" for none.  The default list is almost always right.
4665 EOM
4666
4667 echo " "
4668 rp="What libraries to use?"
4669 . ./myread
4670 case "$ans" in
4671 none) libs=' ';;
4672 *) libs="$ans";;
4673 esac
4674
4675 : determine optimization, if desired, or use for debug flag also
4676 case "$optimize" in
4677 ' '|$undef) dflt='none';;
4678 '') dflt='-O';;
4679 *) dflt="$optimize";;
4680 esac
4681 $cat <<EOH
4682
4683 By default, $package compiles with the -O flag to use the optimizer.
4684 Alternately, you might want to use the symbolic debugger, which uses
4685 the -g flag (on traditional Unix systems).  Either flag can be
4686 specified here.  To use neither flag, specify the word "none".
4687
4688 EOH
4689 rp="What optimizer/debugger flag should be used?"
4690 . ./myread
4691 optimize="$ans"
4692 case "$optimize" in
4693 'none') optimize=" ";;
4694 esac
4695
4696 dflt=''
4697 : We will not override a previous value, but we might want to
4698 : augment a hint file
4699 case "$hint" in
4700 default|recommended)
4701         case "$gccversion" in
4702         1*) dflt='-fpcc-struct-return' ;;
4703         esac
4704         case "$optimize" in
4705         *-g*) dflt="$dflt -DDEBUGGING";;
4706         esac
4707         case "$gccversion" in
4708         2*) if test -d /etc/conf/kconfig.d &&
4709                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4710                 then
4711                         dflt="$dflt -posix"
4712                 fi
4713                 ;;
4714         esac
4715         case "$gccversion" in
4716         1*) ;;
4717         2.[0-8]*) ;;
4718         ?*)     echo " "
4719                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4720                 echo 'int main(void) { return 0; }' > gcctest.c
4721                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4722                         echo "Yes, it does." 2>&1
4723                         case "$ccflags" in
4724                         *strict-aliasing*) 
4725                                 echo "Leaving current flags $ccflags alone." 2>&1
4726                                 ;;
4727                         *) dflt="$dflt -fno-strict-aliasing" ;;
4728                         esac
4729                 else
4730                         echo "Nope, it doesn't, but that's ok." 2>&1
4731                 fi
4732                 ;;
4733         esac
4734         ;;
4735 esac
4736
4737 case "$mips_type" in
4738 *BSD*|'') inclwanted="$locincpth $usrinc";;
4739 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4740 esac
4741 for thisincl in $inclwanted; do
4742         if $test -d $thisincl; then
4743                 if $test x$thisincl != x$usrinc; then
4744                         case "$dflt" in
4745                         *" -I$thisincl "*);;
4746                         *) dflt="$dflt -I$thisincl ";;
4747                         esac
4748                 fi
4749         fi
4750 done
4751
4752 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4753         xxx=true;
4754 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4755         xxx=true;
4756 else
4757         xxx=false;
4758 fi;
4759 if $xxx; then
4760         case "$dflt" in
4761         *$2*);;
4762         *) dflt="$dflt -D$2";;
4763         esac;
4764 fi'
4765
4766 set signal.h LANGUAGE_C; eval $inctest
4767
4768 case "$usesocks" in
4769 $define)
4770         ccflags="$ccflags -DSOCKS"
4771         ;;
4772 esac
4773
4774 case "$hint" in
4775 default|recommended) dflt="$ccflags $dflt" ;;
4776 *) dflt="$ccflags";;
4777 esac
4778
4779 case "$dflt" in
4780 ''|' ') dflt=none;;
4781 esac
4782
4783 $cat <<EOH
4784
4785 Your C compiler may want other flags.  For this question you should include
4786 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4787 but you should NOT include libraries or ld flags like -lwhatever.  If you
4788 want $package to honor its debug switch, you should include -DDEBUGGING here.
4789 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4790
4791 To use no flags, specify the word "none".
4792
4793 EOH
4794 set X $dflt
4795 shift
4796 dflt=${1+"$@"}
4797 rp="Any additional cc flags?"
4798 . ./myread
4799 case "$ans" in
4800 none) ccflags='';;
4801 *) ccflags="$ans";;
4802 esac
4803
4804 : the following weeds options from ccflags that are of no interest to cpp
4805 case "$cppflags" in
4806 '') cppflags="$ccflags" ;;
4807 *)  cppflags="$cppflags $ccflags" ;;
4808 esac
4809 case "$gccversion" in
4810 1*) cppflags="$cppflags -D__GNUC__"
4811 esac
4812 case "$mips_type" in
4813 '');;
4814 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4815 esac
4816 case "$cppflags" in
4817 '');;
4818 *)
4819         echo " "
4820         echo "Let me guess what the preprocessor flags are..." >&4
4821         set X $cppflags
4822         shift
4823         cppflags=''
4824         $cat >cpp.c <<'EOM'
4825 #define BLURFL foo
4826
4827 BLURFL xx LFRULB
4828 EOM
4829         previous=''
4830         for flag in $*
4831         do
4832                 case "$flag" in
4833                 -*) ftry="$flag";;
4834                 *) ftry="$previous $flag";;
4835                 esac
4836                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4837                         >cpp1.out 2>/dev/null && \
4838                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4839                         >cpp2.out 2>/dev/null && \
4840                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4841                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4842                 then
4843                         cppflags="$cppflags $ftry"
4844                         previous=''
4845                 else
4846                         previous="$flag"
4847                 fi
4848         done
4849         set X $cppflags
4850         shift
4851         cppflags=${1+"$@"}
4852         case "$cppflags" in
4853         *-*)  echo "They appear to be: $cppflags";;
4854         esac
4855         $rm -f cpp.c cpp?.out
4856         ;;
4857 esac
4858
4859 : flags used in final linking phase
4860 case "$ldflags" in
4861 '') if ./venix; then
4862                 dflt='-i -z'
4863         else
4864                 dflt=''
4865         fi
4866         case "$ccflags" in
4867         *-posix*) dflt="$dflt -posix" ;;
4868         esac
4869         ;;
4870 *) dflt="$ldflags";;
4871 esac
4872
4873 : Try to guess additional flags to pick up local libraries.
4874 for thislibdir in $libpth; do
4875         case " $loclibpth " in
4876         *" $thislibdir "*)
4877                 case "$dflt " in 
4878                 *"-L$thislibdir "*) ;;
4879                 *)  dflt="$dflt -L$thislibdir" ;;
4880                 esac
4881                 ;;
4882         esac
4883 done
4884
4885 case "$dflt" in
4886 '') dflt='none' ;;
4887 esac
4888
4889 $cat <<EOH
4890
4891 Your C linker may need flags.  For this question you should
4892 include -L/whatever and any other flags used by the C linker, but you
4893 should NOT include libraries like -lwhatever.
4894
4895 Make sure you include the appropriate -L/path flags if your C linker
4896 does not normally search all of the directories you specified above,
4897 namely
4898         $libpth
4899 To use no flags, specify the word "none".
4900
4901 EOH
4902
4903 rp="Any additional ld flags (NOT including libraries)?"
4904 . ./myread
4905 case "$ans" in
4906 none) ldflags='';;
4907 *) ldflags="$ans";;
4908 esac
4909 rmlist="$rmlist pdp11"
4910
4911 : coherency check
4912 echo " "
4913 echo "Checking your choice of C compiler and flags for coherency..." >&4
4914 $cat > try.c <<'EOF'
4915 #include <stdio.h>
4916 int main() { printf("Ok\n"); return(0); }
4917 EOF
4918 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4919 shift
4920 $cat >try.msg <<'EOM'
4921 I've tried to compile and run the following simple program:
4922
4923 EOM
4924 $cat try.c >> try.msg
4925
4926 $cat >> try.msg <<EOM
4927
4928 I used the command:
4929
4930         $*
4931         $run ./try
4932
4933 and I got the following output:
4934
4935 EOM
4936 dflt=y
4937 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4938         if $sh -c "$run ./try" >>try.msg 2>&1; then
4939                 xxx=`$run ./try`
4940                 case "$xxx" in
4941                 "Ok") dflt=n ;;
4942                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4943                         case " $libs " in
4944                         *" -lsfio "*)
4945                                 cat >> try.msg <<'EOQS'
4946 If $libs contains -lsfio, and sfio is mis-configured, then it
4947 sometimes (apparently) runs and exits with a 0 status, but with no
4948 output!  It may have to do with sfio's use of _exit vs. exit.
4949
4950 EOQS
4951                                 rp="You have a big problem.  Shall I abort Configure"
4952                                 dflt=y
4953                                 ;;
4954                         esac
4955                         ;;
4956                 esac
4957         else
4958                 echo "The program compiled OK, but exited with status $?." >>try.msg
4959                 rp="You have a problem.  Shall I abort Configure"
4960                 dflt=y
4961         fi
4962 else
4963         echo "I can't compile the test program." >>try.msg
4964         rp="You have a BIG problem.  Shall I abort Configure"
4965         dflt=y
4966 fi
4967 case "$dflt" in
4968 y)
4969         $cat try.msg >&4
4970         case "$knowitall" in
4971         '')
4972                 echo "(The supplied flags or libraries might be incorrect.)"
4973                 ;;
4974         *) dflt=n;;
4975         esac
4976         echo " "
4977         . ./myread
4978         case "$ans" in
4979         n*|N*) ;;
4980         *)      echo "Ok.  Stopping Configure." >&4
4981                 exit 1
4982                 ;;
4983         esac
4984         ;;
4985 n) echo "OK, that should do.";;
4986 esac
4987 $rm -f try try.* core
4988
4989 : define a shorthand compile call
4990 compile='
4991 mc_file=$1;
4992 shift;
4993 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4994 : define a shorthand compile call for compilations that should be ok.
4995 compile_ok='
4996 mc_file=$1;
4997 shift;
4998 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4999
5000 : determine filename position in cpp output
5001 echo " "
5002 echo "Computing filename position in cpp output for #include directives..." >&4
5003 case "$osname" in
5004 vos) testaccess=-e ;;
5005 *)   testaccess=-r ;;
5006 esac
5007 echo '#include <stdio.h>' > foo.c
5008 $cat >fieldn <<EOF
5009 $startsh
5010 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5011 $grep '^[       ]*#.*stdio\.h' | \
5012 while read cline; do
5013         pos=1
5014         set \$cline
5015         while $test \$# -gt 0; do
5016                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5017                         echo "\$pos"
5018                         exit 0
5019                 fi
5020                 shift
5021                 pos=\`expr \$pos + 1\`
5022         done
5023 done
5024 EOF
5025 chmod +x fieldn
5026 fieldn=`./fieldn`
5027 $rm -f foo.c fieldn
5028 case $fieldn in
5029 '') pos='???';;
5030 1) pos=first;;
5031 2) pos=second;;
5032 3) pos=third;;
5033 *) pos="${fieldn}th";;
5034 esac
5035 echo "Your cpp writes the filename in the $pos field of the line."
5036
5037 case "$osname" in
5038 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5039 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5040 *)   cppfilter='' ;;
5041 esac
5042 : locate header file
5043 $cat >findhdr <<EOF
5044 $startsh
5045 wanted=\$1
5046 name=''
5047 for usrincdir in $usrinc
5048 do
5049         if test -f \$usrincdir/\$wanted; then
5050                 echo "\$usrincdir/\$wanted"
5051                 exit 0
5052         fi
5053 done
5054 awkprg='{ print \$$fieldn }'
5055 echo "#include <\$wanted>" > foo\$\$.c
5056 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5057 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5058 while read cline; do
5059         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5060         case "\$name" in
5061         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5062         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5063         *) exit 2;;
5064         esac;
5065 done;
5066 #
5067 # status = 0: grep returned 0 lines, case statement not executed
5068 # status = 1: headerfile found
5069 # status = 2: while loop executed, no headerfile found
5070 #
5071 status=\$?
5072 $rm -f foo\$\$.c;
5073 if test \$status -eq 1; then
5074         exit 0;
5075 fi
5076 exit 1
5077 EOF
5078 chmod +x findhdr
5079
5080 : define an alternate in-header-list? function
5081 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5082 cont=true; xxf="echo \"<\$1> found.\" >&4";
5083 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5084 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5085 esac;
5086 case $# in 4) instead=instead;; *) instead="at last";; esac;
5087 while $test "$cont"; do
5088         xxx=`./findhdr $1`
5089         var=$2; eval "was=\$$2";
5090         if $test "$xxx" && $test -r "$xxx";
5091         then eval $xxf;
5092         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5093                 cont="";
5094         else eval $xxnf;
5095         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5096         set $yyy; shift; shift; yyy=$@;
5097         case $# in 0) cont="";;
5098         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5099                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5100         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5101                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5102         esac;
5103 done;
5104 while $test "$yyy";
5105 do set $yyy; var=$2; eval "was=\$$2";
5106         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5107         set $yyy; shift; shift; yyy=$@;
5108 done'
5109
5110 : see if stdlib is available
5111 set stdlib.h i_stdlib
5112 eval $inhdr
5113
5114 : check for lengths of integral types
5115 echo " "
5116 case "$intsize" in
5117 '')
5118         echo "Checking to see how big your integers are..." >&4
5119         $cat >try.c <<EOCP
5120 #include <stdio.h>
5121 #$i_stdlib I_STDLIB
5122 #ifdef I_STDLIB
5123 #include <stdlib.h>
5124 #endif
5125 int main()
5126 {
5127         printf("intsize=%d;\n", (int)sizeof(int));
5128         printf("longsize=%d;\n", (int)sizeof(long));
5129         printf("shortsize=%d;\n", (int)sizeof(short));
5130         exit(0);
5131 }
5132 EOCP
5133         set try
5134         if eval $compile_ok && $run ./try > /dev/null; then
5135                 eval `$run ./try`
5136                 echo "Your integers are $intsize bytes long."
5137                 echo "Your long integers are $longsize bytes long."
5138                 echo "Your short integers are $shortsize bytes long."
5139         else
5140                 $cat >&4 <<EOM
5141 !
5142 Help! I can't compile and run the intsize test program: please enlighten me!
5143 (This is probably a misconfiguration in your system or libraries, and
5144 you really ought to fix it.  Still, I'll try anyway.)
5145 !
5146 EOM
5147                 dflt=4
5148                 rp="What is the size of an integer (in bytes)?"
5149                 . ./myread
5150                 intsize="$ans"
5151                 dflt=$intsize
5152                 rp="What is the size of a long integer (in bytes)?"
5153                 . ./myread
5154                 longsize="$ans"
5155                 dflt=2
5156                 rp="What is the size of a short integer (in bytes)?"
5157                 . ./myread
5158                 shortsize="$ans"
5159         fi
5160         ;;
5161 esac
5162 $rm -f try try.*
5163
5164 : check for long long
5165 echo " "
5166 echo "Checking to see if you have long long..." >&4
5167 echo 'int main() { long long x = 7; return 0; }' > try.c
5168 set try
5169 if eval $compile; then
5170         val="$define"
5171         echo "You have long long."
5172 else
5173         val="$undef"
5174         echo "You do not have long long."
5175 fi
5176 $rm try.*
5177 set d_longlong
5178 eval $setvar
5179
5180 : check for length of long long
5181 case "${d_longlong}${longlongsize}" in
5182 $define)
5183         echo " "
5184         echo "Checking to see how big your long longs are..." >&4
5185         $cat >try.c <<'EOCP'
5186 #include <stdio.h>
5187 int main()
5188 {
5189     printf("%d\n", (int)sizeof(long long));
5190     return(0);
5191 }
5192 EOCP
5193         set try
5194         if eval $compile_ok; then
5195                 longlongsize=`$run ./try`
5196                 echo "Your long longs are $longlongsize bytes long."
5197         else
5198                 dflt='8'
5199                 echo " "
5200                 echo "(I can't seem to compile the test program.  Guessing...)"
5201                 rp="What is the size of a long long (in bytes)?"
5202                 . ./myread
5203                 longlongsize="$ans"
5204         fi
5205         if $test "X$longsize" = "X$longlongsize"; then
5206                 echo "(That isn't any different from an ordinary long.)"
5207         fi      
5208         ;;
5209 esac
5210 $rm -f try.* try
5211
5212 : see if inttypes.h is available
5213 : we want a real compile instead of Inhdr because some systems
5214 : have an inttypes.h which includes non-existent headers
5215 echo " "
5216 $cat >try.c <<EOCP
5217 #include <inttypes.h>
5218 int main() {
5219         static int32_t foo32 = 0x12345678;
5220 }
5221 EOCP
5222 set try
5223 if eval $compile; then
5224         echo "<inttypes.h> found." >&4
5225         val="$define"
5226 else
5227         echo "<inttypes.h> NOT found." >&4
5228         val="$undef"
5229 fi
5230 $rm -f try.c try
5231 set i_inttypes
5232 eval $setvar
5233
5234 : check for int64_t
5235 echo " "
5236 echo "Checking to see if you have int64_t..." >&4
5237 $cat >try.c <<EOCP
5238 #include <sys/types.h>
5239 #$i_inttypes I_INTTYPES
5240 #ifdef I_INTTYPES
5241 #include <inttypes.h>
5242 #endif
5243 int main() { int64_t x = 7; }
5244 EOCP
5245 set try
5246 if eval $compile; then
5247         val="$define"
5248         echo "You have int64_t."
5249 else
5250         val="$undef"
5251         echo "You do not have int64_t."
5252 fi
5253 $rm -f try try.*
5254 set d_int64_t
5255 eval $setvar
5256
5257
5258 echo " "
5259 echo "Checking which 64-bit integer type we could use..." >&4
5260
5261 case "$intsize" in
5262 8) val=int
5263    set quadtype
5264    eval $setvar
5265    val='"unsigned int"'
5266    set uquadtype
5267    eval $setvar
5268    quadkind=1
5269    ;;
5270 *) case "$longsize" in
5271    8) val=long
5272       set quadtype
5273       eval $setvar
5274       val='"unsigned long"'
5275       set uquadtype
5276       eval $setvar
5277       quadkind=2
5278       ;;
5279    *) case "$d_longlong:$longlongsize" in
5280       define:8)
5281         val='"long long"'
5282         set quadtype
5283         eval $setvar
5284         val='"unsigned long long"'
5285         set uquadtype
5286         eval $setvar
5287         quadkind=3
5288         ;;
5289       *) case "$d_int64_t" in
5290          define)
5291            val=int64_t
5292            set quadtype
5293            eval $setvar
5294            val=uint64_t
5295            set uquadtype
5296            eval $setvar
5297            quadkind=4
5298            ;;
5299          esac
5300          ;;
5301       esac
5302       ;;
5303    esac
5304    ;;
5305 esac
5306
5307 case "$quadtype" in
5308 '')     echo "Alas, no 64-bit integer types in sight." >&4
5309         d_quad="$undef"
5310         ;;
5311 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5312         d_quad="$define"
5313         ;;
5314 esac
5315
5316
5317 case "$uselonglong" in
5318 "$define"|true|[yY]*)
5319         cat <<EOM >&4
5320
5321 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5322 EOM
5323         use64bitint="$define"
5324         ;;
5325 esac                          
5326 case "$use64bits" in
5327 "$define"|true|[yY]*)
5328         cat <<EOM >&4
5329
5330 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5331 EOM
5332         use64bitint="$define"
5333         ;;
5334 esac                          
5335 case "$use64bitints" in
5336 "$define"|true|[yY]*)
5337         cat <<EOM >&4
5338
5339 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5340 EOM
5341         use64bitint="$define"
5342         ;;
5343 esac                          
5344 case "$use64bitsint" in
5345 "$define"|true|[yY]*)
5346         cat <<EOM >&4
5347
5348 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5349 EOM
5350         use64bitint="$define"
5351         ;;
5352 esac                          
5353 case "$uselonglongs" in
5354 "$define"|true|[yY]*)
5355         cat <<EOM >&4
5356
5357 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5358 EOM
5359         use64bitint="$define"
5360         ;;
5361 esac                          
5362 case "$use64bitsall" in
5363 "$define"|true|[yY]*)
5364         cat <<EOM >&4
5365
5366 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5367 EOM
5368         use64bitall="$define"
5369         ;;
5370 esac                          
5371
5372 case "$ccflags" in
5373 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5374 esac
5375 case "$use64bitall" in
5376 "$define"|true|[yY]*) use64bitint="$define" ;;
5377 esac
5378
5379 case "$longsize" in
5380 8) cat <<EOM
5381
5382 You have natively 64-bit long integers.
5383 EOM
5384    val="$define"
5385    ;;
5386 *) case "$use64bitint" in
5387    "$define"|true|[yY]*) dflt='y';;
5388    *) dflt='n';;
5389    esac
5390    case "$d_quad" in
5391    "$define") ;;
5392    *) dflt='n' ;;
5393    esac
5394    cat <<EOM
5395
5396 Perl can be built to take advantage of 64-bit integer types
5397 on some systems.  To do so, Configure can be run with -Duse64bitint.
5398 Choosing this option will most probably introduce binary incompatibilities.
5399
5400 If this doesn't make any sense to you, just accept the default '$dflt'.
5401 (The default has been chosen based on your configuration.)
5402 EOM
5403    rp='Try to use 64-bit integers, if available?'
5404    . ./myread
5405    case "$ans" in
5406    [yY]*) val="$define" ;;
5407    *)     val="$undef"  ;;
5408    esac
5409    ;;
5410 esac
5411 set use64bitint
5412 eval $setvar
5413
5414 case "$use64bitall" in
5415 "$define"|true|[yY]*) dflt='y' ;;
5416 *) case "$longsize" in
5417    8) dflt='y' ;;
5418    *) dflt='n' ;;
5419    esac
5420    ;;
5421 esac    
5422 cat <<EOM
5423
5424 You may also choose to try maximal 64-bitness.  It means using as much
5425 64-bitness as possible on the platform.  This in turn means even more
5426 binary incompatibilities.  On the other hand, your platform may not
5427 have any more 64-bitness available than what you already have chosen.
5428
5429 If this doesn't make any sense to you, just accept the default '$dflt'.
5430 (The default has been chosen based on your configuration.)
5431 EOM
5432 rp='Try to use maximal 64-bit support, if available?'
5433 . ./myread
5434 case "$ans" in
5435 [yY]*) val="$define" ;;
5436 *)     val="$undef"  ;;
5437 esac
5438 set use64bitall
5439 eval $setvar
5440 case "$use64bitall" in
5441 "$define")
5442         case "$use64bitint" in
5443         "$undef")
5444                 cat <<EOM
5445
5446 Since you have chosen a maximally 64-bit build, I'm also turning on
5447 the use of 64-bit integers.
5448 EOM
5449                 use64bitint="$define" ;;
5450         esac
5451         ;;
5452 esac
5453
5454 : Look for a hint-file generated 'call-back-unit'.  If the
5455 : user has specified that a 64-bit perl is to be built,
5456 : we may need to set or change some other defaults.
5457 if $test -f use64bitint.cbu; then
5458         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5459         . ./use64bitint.cbu
5460 fi
5461 case "$use64bitint" in
5462 "$define"|true|[yY]*)
5463         case "$longsize" in
5464         4) case "$archname64" in
5465            '') archname64=64int ;;
5466            esac
5467            ;;
5468         esac
5469         ;;
5470 esac
5471
5472 : Look for a hint-file generated 'call-back-unit'.  If the
5473 : user has specified that a maximally 64-bit perl is to be built,
5474 : we may need to set or change some other defaults.
5475 if $test -f use64bitall.cbu; then
5476         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5477         . ./use64bitall.cbu
5478 fi
5479 case "$use64bitall" in
5480 "$define"|true|[yY]*)
5481         case "$longsize" in
5482         4) case "$archname64" in
5483            ''|64int) archname64=64all ;;
5484            esac
5485            ;;
5486         esac
5487         ;;
5488 esac
5489
5490 case "$d_quad:$use64bitint" in
5491 $undef:$define)
5492         cat >&4 <<EOF
5493
5494 *** You have chosen to use 64-bit integers,
5495 *** but none can be found.
5496 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5497 *** Cannot continue, aborting.
5498
5499 EOF
5500         exit 1
5501         ;;
5502 esac
5503
5504 : check for length of double
5505 echo " "
5506 case "$doublesize" in
5507 '')
5508         echo "Checking to see how big your double precision numbers are..." >&4
5509         $cat >try.c <<EOCP
5510 #include <stdio.h>
5511 #$i_stdlib I_STDLIB
5512 #ifdef I_STDLIB
5513 #include <stdlib.h>
5514 #endif
5515 int main()
5516 {
5517     printf("%d\n", (int)sizeof(double));
5518     exit(0);
5519 }
5520 EOCP
5521         set try
5522         if eval $compile_ok; then
5523                 doublesize=`$run ./try`
5524                 echo "Your double is $doublesize bytes long."
5525         else
5526                 dflt='8'
5527                 echo "(I can't seem to compile the test program.  Guessing...)"
5528                 rp="What is the size of a double precision number (in bytes)?"
5529                 . ./myread
5530                 doublesize="$ans"
5531         fi
5532         ;;
5533 esac
5534 $rm -f try.c try
5535
5536 : check for long doubles
5537 echo " "
5538 echo "Checking to see if you have long double..." >&4
5539 echo 'int main() { long double x = 7.0; }' > try.c
5540 set try
5541 if eval $compile; then
5542         val="$define"
5543         echo "You have long double."
5544 else
5545         val="$undef"
5546         echo "You do not have long double."
5547 fi
5548 $rm try.*
5549 set d_longdbl
5550 eval $setvar
5551
5552 : check for length of long double
5553 case "${d_longdbl}${longdblsize}" in
5554 $define)
5555         echo " "
5556         echo "Checking to see how big your long doubles are..." >&4
5557         $cat >try.c <<'EOCP'
5558 #include <stdio.h>
5559 int main()
5560 {
5561         printf("%d\n", sizeof(long double));
5562 }
5563 EOCP
5564         set try
5565         set try
5566         if eval $compile; then
5567                 longdblsize=`$run ./try`
5568                 echo "Your long doubles are $longdblsize bytes long."
5569         else
5570                 dflt='8'
5571                 echo " "
5572                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5573                 rp="What is the size of a long double (in bytes)?"
5574                 . ./myread
5575                 longdblsize="$ans"
5576         fi
5577         if $test "X$doublesize" = "X$longdblsize"; then
5578                 echo "That isn't any different from an ordinary double."
5579                 echo "I'll keep your setting anyway, but you may see some"
5580                 echo "harmless compilation warnings."
5581         fi      
5582         ;;
5583 esac
5584 $rm -f try.* try
5585
5586 : determine the architecture name
5587 echo " "
5588 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5589         tarch=`arch`"-$osname"
5590 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5591         if uname -m > tmparch 2>&1 ; then
5592                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5593                         -e 's/$/'"-$osname/" tmparch`
5594         else
5595                 tarch="$osname"
5596         fi
5597         $rm -f tmparch
5598 else
5599         tarch="$osname"
5600 fi
5601 case "$myarchname" in
5602 ''|"$tarch") ;;
5603 *)
5604         echo "(Your architecture name used to be $myarchname.)"
5605         archname=''
5606         ;;
5607 esac
5608 case "$targetarch" in
5609 '') ;;
5610 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5611 esac
5612 myarchname="$tarch"
5613 case "$archname" in
5614 '') dflt="$tarch";;
5615 *) dflt="$archname";;
5616 esac
5617 rp='What is your architecture name'
5618 . ./myread
5619 archname="$ans"
5620 case "$usethreads" in
5621 $define)
5622         echo "Threads selected." >&4
5623         case "$archname" in
5624         *-thread*) echo "...and architecture name already has -thread." >&4
5625                 ;;
5626         *)      archname="$archname-thread"
5627                 echo "...setting architecture name to $archname." >&4
5628                 ;;
5629         esac
5630         ;;
5631 esac
5632 case "$usemultiplicity" in
5633 $define)
5634         echo "Multiplicity selected." >&4
5635         case "$archname" in
5636         *-multi*) echo "...and architecture name already has -multi." >&4
5637                 ;;
5638         *)      archname="$archname-multi"
5639                 echo "...setting architecture name to $archname." >&4
5640                 ;;
5641         esac
5642         ;;
5643 esac
5644 case "$use64bitint$use64bitall" in
5645 *"$define"*)
5646         case "$archname64" in
5647         '')
5648                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5649                 ;;
5650         *)
5651                 case "$use64bitint" in
5652                 "$define") echo "64 bit integers selected." >&4 ;;
5653                 esac
5654                 case "$use64bitall" in
5655                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5656                 esac
5657                 case "$archname" in
5658                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5659                         ;;
5660                 *)      archname="$archname-$archname64"
5661                         echo "...setting architecture name to $archname." >&4
5662                         ;;
5663                 esac
5664                 ;;
5665         esac
5666 esac
5667 case "$uselongdouble" in
5668 $define)
5669         echo "Long doubles selected." >&4
5670         case "$longdblsize" in
5671         $doublesize)
5672                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5673                 ;;
5674         *)
5675                 case "$archname" in
5676                 *-ld*) echo "...and architecture name already has -ld." >&4
5677                         ;;
5678                 *)      archname="$archname-ld"
5679                         echo "...setting architecture name to $archname." >&4
5680                         ;;
5681                 esac
5682                 ;;
5683         esac
5684         ;;
5685 esac
5686 case "$useperlio" in
5687 $define)
5688         echo "Perlio selected." >&4
5689         ;;
5690 *)
5691         echo "Perlio not selected, using stdio." >&4
5692         case "$archname" in
5693         *-stdio*) echo "...and architecture name already has -stdio." >&4
5694                 ;;
5695         *)      archname="$archname-stdio"
5696                 echo "...setting architecture name to $archname." >&4
5697                 ;;
5698         esac
5699         ;;
5700 esac
5701 if $test -f archname.cbu; then
5702         echo "Your platform has some specific hints for architecture name, using them..."
5703         . ./archname.cbu
5704 fi
5705
5706 : determine root of directory hierarchy where package will be installed.
5707 case "$prefix" in
5708 '')
5709         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5710         ;;
5711 *?/)
5712         dflt=`echo "$prefix" | sed 's/.$//'`
5713         ;;
5714 *)
5715         dflt="$prefix"
5716         ;;
5717 esac
5718 $cat <<EOM
5719
5720 By default, $package will be installed in $dflt/bin, manual pages
5721 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5722 installation directories. Typically this is something like /usr/local.
5723 If you wish to have binaries under /usr/bin but other parts of the
5724 installation under /usr/local, that's ok: you will be prompted
5725 separately for each of the installation directories, the prefix being
5726 only used to set the defaults.
5727
5728 EOM
5729 fn=d~
5730 rp='Installation prefix to use?'
5731 . ./getfile
5732 oldprefix=''
5733 case "$prefix" in
5734 '') ;;
5735 *)
5736         case "$ans" in
5737         "$prefix") ;;
5738         *) oldprefix="$prefix";;
5739         esac
5740         ;;
5741 esac
5742 prefix="$ans"
5743 prefixexp="$ansexp"
5744
5745 case "$afsroot" in
5746 '')     afsroot=/afs ;;
5747 *)      afsroot=$afsroot ;;
5748 esac
5749
5750 : is AFS running?
5751 echo " "
5752 case "$afs" in
5753 $define|true)   afs=true ;;
5754 $undef|false)   afs=false ;;
5755 *)      if test -d $afsroot; then
5756                 afs=true
5757         else
5758                 afs=false
5759         fi
5760         ;;
5761 esac
5762 if $afs; then
5763         echo "AFS may be running... I'll be extra cautious then..." >&4
5764 else
5765         echo "AFS does not seem to be running..." >&4
5766 fi
5767
5768 : determine installation prefix for where package is to be installed.
5769 if $afs; then 
5770 $cat <<EOM
5771
5772 Since you are running AFS, I need to distinguish the directory in which
5773 files will reside from the directory in which they are installed (and from
5774 which they are presumably copied to the former directory by occult means).
5775
5776 EOM
5777         case "$installprefix" in
5778         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5779         *) dflt="$installprefix";;
5780         esac
5781 else
5782 $cat <<EOM
5783
5784 In some special cases, particularly when building $package for distribution,
5785 it is convenient to distinguish the directory in which files should be
5786 installed from the directory ($prefix) in which they will
5787 eventually reside.  For most users, these two directories are the same.
5788
5789 EOM
5790         case "$installprefix" in
5791         '') dflt=$prefix ;;
5792         *) dflt=$installprefix;;
5793         esac
5794 fi
5795 fn=d~
5796 rp='What installation prefix should I use for installing files?'
5797 . ./getfile
5798 installprefix="$ans"
5799 installprefixexp="$ansexp"
5800
5801 : set the prefixit variable, to compute a suitable default value
5802 prefixit='case "$3" in
5803 ""|none)
5804         case "$oldprefix" in
5805         "") eval "$1=\"\$$2\"";;
5806         *)
5807                 case "$3" in
5808                 "") eval "$1=";;
5809                 none)
5810                         eval "tp=\"\$$2\"";
5811                         case "$tp" in
5812                         ""|" ") eval "$1=\"\$$2\"";;
5813                         *) eval "$1=";;
5814                         esac;;
5815                 esac;;
5816         esac;;
5817 *)
5818         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5819         case "$tp" in
5820         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5821         /*-$oldprefix/*|\~*-$oldprefix/*)
5822                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5823         *) eval "$1=\"\$$2\"";;
5824         esac;;
5825 esac'
5826
5827 : get the patchlevel
5828 echo " "
5829 echo "Getting the current patchlevel..." >&4
5830 if $test -r $rsrc/patchlevel.h;then
5831         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5832         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5833         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5834         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5835         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5836         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5837        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5838 else
5839         revision=0
5840         patchlevel=0
5841         subversion=0
5842         api_revision=0
5843         api_version=0
5844         api_subversion=0
5845         perl_patchlevel=0
5846         $echo "(You do not have patchlevel.h.  Eek.)"
5847 fi
5848 if $test -r $rsrc/.patch ; then  
5849         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5850                 perl_patchlevel=`cat $rsrc/.patch`
5851         fi
5852 fi
5853 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5854 version_patchlevel_string="version $patchlevel subversion $subversion"
5855 case "$perl_patchlevel" in
5856 0|'') ;;
5857 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5858 esac
5859
5860 $echo "(You have $package $version_patchlevel_string.)"
5861
5862 case "$osname" in
5863 dos|vms)
5864         : XXX Should be a Configure test for double-dots in filenames.
5865         version=`echo $revision $patchlevel $subversion | \
5866                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5867         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5868                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5869         ;;
5870 *)
5871         version=`echo $revision $patchlevel $subversion | \
5872                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5873         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5874                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5875         ;;
5876 esac
5877 : Special case the 5.005_xx maintenance series, which used 5.005
5878 : without any subversion label as a subdirectory in $sitelib
5879 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5880         api_versionstring='5.005'
5881 fi
5882
5883 : determine installation style
5884 : For now, try to deduce it from prefix unless it is already set.
5885 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5886 case "$installstyle" in
5887 '')     case "$prefix" in
5888                 *perl*) dflt='lib';;
5889                 *) dflt='lib/perl5' ;;
5890         esac
5891         ;;
5892 *)      dflt="$installstyle" ;;
5893 esac
5894 : Probably not worth prompting for this since we prompt for all
5895 : the directories individually, and the prompt would be too long and
5896 : confusing anyway.
5897 installstyle=$dflt
5898
5899 : determine where private library files go
5900 : Usual default is /usr/local/lib/perl5/$version.
5901 : Also allow things like /opt/perl/lib/$version, since 
5902 : /opt/perl/lib/perl5... would be redundant.
5903 : The default "style" setting is made in installstyle.U
5904 case "$installstyle" in
5905 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5906 *)       set dflt privlib lib/$version ;;
5907 esac
5908 eval $prefixit
5909 $cat <<EOM
5910
5911 There are some auxiliary files for $package that need to be put into a
5912 private library directory that is accessible by everyone.
5913
5914 EOM
5915 fn=d~+
5916 rp='Pathname where the private library files will reside?'
5917 . ./getfile
5918 privlib="$ans"
5919 privlibexp="$ansexp"
5920 : Change installation prefix, if necessary.
5921 if $test X"$prefix" != X"$installprefix"; then
5922         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5923 else
5924         installprivlib="$privlibexp"
5925 fi
5926
5927 : set the prefixup variable, to restore leading tilda escape
5928 prefixup='case "$prefixexp" in
5929 "$prefix") ;;
5930 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5931 esac'
5932
5933 : determine where public architecture dependent libraries go
5934 set archlib archlib
5935 eval $prefixit
5936 : privlib default is /usr/local/lib/$package/$version
5937 : archlib default is /usr/local/lib/$package/$version/$archname
5938 : privlib may have an optional trailing /share.
5939 tdflt=`echo $privlib | $sed 's,/share$,,'`
5940 tdflt=$tdflt/$archname
5941 case "$archlib" in
5942 '')     dflt=$tdflt
5943         ;;
5944 *)      dflt="$archlib"
5945     ;;
5946 esac
5947 $cat <<EOM
5948
5949 $spackage contains architecture-dependent library files.  If you are
5950 sharing libraries in a heterogeneous environment, you might store
5951 these files in a separate location.  Otherwise, you can just include
5952 them with the rest of the public library files.
5953
5954 EOM
5955 fn=d+~
5956 rp='Where do you want to put the public architecture-dependent libraries?'
5957 . ./getfile
5958 archlib="$ans"
5959 archlibexp="$ansexp"
5960 if $test X"$archlib" = X"$privlib"; then
5961         d_archlib="$undef"
5962 else
5963         d_archlib="$define"
5964 fi
5965 : Change installation prefix, if necessary.
5966 if $test X"$prefix" != X"$installprefix"; then
5967         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5968 else
5969         installarchlib="$archlibexp"
5970 fi
5971
5972 : see if setuid scripts can be secure
5973 $cat <<EOM
5974
5975 Some kernels have a bug that prevents setuid #! scripts from being
5976 secure.  Some sites have disabled setuid #! scripts because of this.
5977
5978 First let's decide if your kernel supports secure setuid #! scripts.
5979 (If setuid #! scripts would be secure but have been disabled anyway,
5980 don't say that they are secure if asked.)
5981
5982 EOM
5983
5984 val="$undef"
5985 if $test -d /dev/fd; then
5986         echo "#!$ls" >reflect
5987         chmod +x,u+s reflect
5988         ./reflect >flect 2>&1
5989         if $contains "/dev/fd" flect >/dev/null; then
5990                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5991                 val="$define"
5992         else
5993                 $cat <<EOM
5994 If you are not sure if they are secure, I can check but I'll need a
5995 username and password different from the one you are using right now.
5996 If you don't have such a username or don't want me to test, simply
5997 enter 'none'.
5998
5999 EOM
6000                 rp='Other username to test security of setuid scripts with?'
6001                 dflt='none'
6002                 . ./myread
6003                 case "$ans" in
6004                 n|none)
6005                         case "$d_suidsafe" in
6006                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6007                                 dflt=n;;
6008                         "$undef")
6009                                 echo "Well, the $hint value is *not* secure." >&4
6010                                 dflt=n;;
6011                         *)      echo "Well, the $hint value *is* secure." >&4
6012                                 dflt=y;;
6013                         esac
6014                         ;;
6015                 *)
6016                         $rm -f reflect flect
6017                         echo "#!$ls" >reflect
6018                         chmod +x,u+s reflect
6019                         echo >flect
6020                         chmod a+w flect
6021                         echo '"su" will (probably) prompt you for '"$ans's password."
6022                         su $ans -c './reflect >flect'
6023                         if $contains "/dev/fd" flect >/dev/null; then
6024                                 echo "Okay, it looks like setuid scripts are secure." >&4
6025                                 dflt=y
6026                         else
6027                                 echo "I don't think setuid scripts are secure." >&4
6028                                 dflt=n
6029                         fi
6030                         ;;
6031                 esac
6032                 rp='Does your kernel have *secure* setuid scripts?'
6033                 . ./myread
6034                 case "$ans" in
6035                 [yY]*)  val="$define";;
6036                 *)      val="$undef";;
6037                 esac
6038         fi
6039 else
6040         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6041         echo "(That's for file descriptors, not floppy disks.)"
6042         val="$undef"
6043 fi
6044 set d_suidsafe
6045 eval $setvar
6046
6047 $rm -f reflect flect
6048
6049 : now see if they want to do setuid emulation
6050 echo " "
6051 val="$undef"
6052 case "$d_suidsafe" in
6053 "$define")
6054         val="$undef"
6055         echo "No need to emulate SUID scripts since they are secure here." >&4
6056         ;;
6057 *)
6058         $cat <<EOM
6059 Some systems have disabled setuid scripts, especially systems where
6060 setuid scripts cannot be secure.  On systems where setuid scripts have
6061 been disabled, the setuid/setgid bits on scripts are currently
6062 useless.  It is possible for $package to detect those bits and emulate
6063 setuid/setgid in a secure fashion.  This emulation will only work if
6064 setuid scripts have been disabled in your kernel.
6065
6066 EOM
6067         case "$d_dosuid" in
6068         "$define") dflt=y ;;
6069         *) dflt=n ;;
6070         esac
6071         rp="Do you want to do setuid/setgid emulation?"
6072         . ./myread
6073         case "$ans" in
6074         [yY]*)  val="$define";;
6075         *)      val="$undef";;
6076         esac
6077         ;;
6078 esac
6079 set d_dosuid
6080 eval $setvar
6081
6082 : see if this is a malloc.h system
6083 : we want a real compile instead of Inhdr because some systems have a
6084 : malloc.h that just gives a compile error saying to use stdlib.h instead
6085 echo " "
6086 $cat >try.c <<EOCP
6087 #include <stdlib.h>
6088 #include <malloc.h>
6089 int main () { return 0; }
6090 EOCP
6091 set try
6092 if eval $compile; then
6093     echo "<malloc.h> found." >&4
6094     val="$define"
6095 else
6096     echo "<malloc.h> NOT found." >&4
6097     val="$undef"
6098 fi
6099 $rm -f try.c try
6100 set i_malloc
6101 eval $setvar
6102
6103 : check for void type
6104 echo " "
6105 echo "Checking to see how well your C compiler groks the void type..." >&4
6106 case "$voidflags" in
6107 '')
6108         $cat >try.c <<EOCP
6109 #$i_stdlib I_STDLIB
6110 #ifdef I_STDLIB
6111 #include <stdlib.h>
6112 #endif
6113 #if TRY & 1
6114 void sub() {
6115 #else
6116 sub() {
6117 #endif
6118         extern void moo();      /* function returning void */
6119         void (*goo)();          /* ptr to func returning void */
6120 #if TRY & 8
6121         void *hue;              /* generic ptr */
6122 #endif
6123 #if TRY & 2
6124         void (*foo[10])();
6125 #endif
6126
6127 #if TRY & 4
6128         if(goo == moo) {
6129                 exit(0);
6130         }
6131 #endif
6132         exit(0);
6133 }
6134 int main() { sub(); }
6135 EOCP
6136         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6137                 voidflags=$defvoidused
6138         echo "Good.  It appears to support void to the level $package wants.">&4
6139                 if $contains warning .out >/dev/null 2>&1; then
6140                         echo "However, you might get some warnings that look like this:"
6141                         $cat .out
6142                 fi
6143         else
6144 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6145                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6146                         echo "It supports 1..."
6147                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6148                                 echo "It also supports 2..."
6149                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6150                                         voidflags=7
6151                                         echo "And it supports 4 but not 8 definitely."
6152                                 else
6153                                         echo "It doesn't support 4..."
6154                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6155                                                 voidflags=11
6156                                                 echo "But it supports 8."
6157                                         else
6158                                                 voidflags=3
6159                                                 echo "Neither does it support 8."
6160                                         fi
6161                                 fi
6162                         else
6163                                 echo "It does not support 2..."
6164                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6165                                         voidflags=13
6166                                         echo "But it supports 4 and 8."
6167                                 else
6168                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6169                                                 voidflags=5
6170                                                 echo "And it supports 4 but has not heard about 8."
6171                                         else
6172                                                 echo "However it supports 8 but not 4."
6173                                         fi
6174                                 fi
6175                         fi
6176                 else
6177                         echo "There is no support at all for void."
6178                         voidflags=0
6179                 fi
6180         fi
6181 esac
6182 case "$voidflags" in
6183 "$defvoidused") ;;
6184 *)      $cat >&4 <<'EOM'
6185   Support flag bits are:
6186     1: basic void declarations.
6187     2: arrays of pointers to functions returning void.
6188     4: operations between pointers to and addresses of void functions.
6189     8: generic void pointers.
6190 EOM
6191         dflt="$voidflags";
6192         rp="Your void support flags add up to what?"
6193         . ./myread
6194         voidflags="$ans"
6195         ;;
6196 esac
6197 $rm -f try.* .out
6198
6199 : check for length of pointer
6200 echo " "
6201 case "$ptrsize" in
6202 '')
6203         echo "Checking to see how big your pointers are..." >&4
6204         if test "$voidflags" -gt 7; then
6205                 echo '#define VOID_PTR char *' > try.c
6206         else
6207                 echo '#define VOID_PTR void *' > try.c
6208         fi
6209         $cat >>try.c <<EOCP
6210 #include <stdio.h>
6211 #$i_stdlib I_STDLIB
6212 #ifdef I_STDLIB
6213 #include <stdlib.h>
6214 #endif
6215 int main()
6216 {
6217     printf("%d\n", (int)sizeof(VOID_PTR));
6218     exit(0);
6219 }
6220 EOCP
6221         set try
6222         if eval $compile_ok; then
6223                 ptrsize=`$run ./try`
6224                 echo "Your pointers are $ptrsize bytes long."
6225         else
6226                 dflt='4'
6227                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6228                 rp="What is the size of a pointer (in bytes)?"
6229                 . ./myread
6230                 ptrsize="$ans"
6231         fi
6232         ;;
6233 esac
6234 $rm -f try.c try
6235 case "$use64bitall" in
6236 "$define"|true|[yY]*)
6237         case "$ptrsize" in
6238         4)      cat <<EOM >&4
6239
6240 *** You have chosen a maximally 64-bit build,
6241 *** but your pointers are only 4 bytes wide.
6242 *** Please rerun Configure without -Duse64bitall.
6243 EOM
6244                 case "$d_quad" in
6245                 define)
6246                         cat <<EOM >&4
6247 *** Since you have quads, you could possibly try with -Duse64bitint.
6248 EOM
6249                         ;;
6250                 esac
6251                 cat <<EOM >&4
6252 *** Cannot continue, aborting.
6253
6254 EOM
6255
6256                 exit 1
6257                 ;;
6258         esac
6259         ;;
6260 esac
6261
6262
6263 : determine whether to use malloc wrapping
6264 echo " "
6265 case "$usemallocwrap" in
6266 [yY]*|true|$define)     dflt='y' ;;
6267 [nN]*|false|$undef)     dflt='n' ;;
6268 *)      case "$usedevel" in
6269         [yY]*|true|$define)     dflt='y' ;;
6270         *) dflt='n' ;;
6271         esac
6272         ;;
6273 esac
6274 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6275 . ./myread
6276 usemallocwrap="$ans"
6277 case "$ans" in
6278 y*|true)
6279         usemallocwrap="$define" ;;
6280 *)
6281         usemallocwrap="$undef" ;;
6282 esac
6283
6284 : determine which malloc to compile in
6285 echo " "
6286 case "$usemymalloc" in
6287 [yY]*|true|$define)     dflt='y' ;;
6288 [nN]*|false|$undef)     dflt='n' ;;
6289 *)      case "$ptrsize" in
6290         4) dflt='y' ;;
6291         *) dflt='n' ;;
6292         esac
6293         ;;
6294 esac
6295 rp="Do you wish to attempt to use the malloc that comes with $package?"
6296 . ./myread
6297 usemymalloc="$ans"
6298 case "$ans" in
6299 y*|true)
6300         usemymalloc='y'
6301         mallocsrc='malloc.c'
6302         mallocobj="malloc$_o"
6303         d_mymalloc="$define"
6304         case "$libs" in
6305         *-lmalloc*)
6306                 : Remove malloc from list of libraries to use
6307                 echo "Removing unneeded -lmalloc from library list" >&4
6308                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6309                 shift
6310                 libs="$*"
6311                 echo "libs = $libs" >&4
6312                 ;;
6313         esac
6314         ;;
6315 *)
6316         usemymalloc='n'
6317         mallocsrc=''
6318         mallocobj=''
6319         d_mymalloc="$undef"
6320         ;;
6321 esac
6322
6323 : compute the return types of malloc and free
6324 echo " "
6325 $cat >malloc.c <<END
6326 #$i_malloc I_MALLOC
6327 #$i_stdlib I_STDLIB
6328 #include <stdio.h>
6329 #include <sys/types.h>
6330 #ifdef I_MALLOC
6331 #include <malloc.h>
6332 #endif
6333 #ifdef I_STDLIB
6334 #include <stdlib.h>
6335 #endif
6336 #ifdef TRY_MALLOC
6337 void *malloc();
6338 #endif
6339 #ifdef TRY_FREE
6340 void free();
6341 #endif
6342 END
6343 case "$malloctype" in
6344 '')
6345         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6346                 malloctype='void *'
6347         else
6348                 malloctype='char *'
6349         fi
6350         ;;
6351 esac
6352 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6353
6354 case "$freetype" in
6355 '')
6356         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6357                 freetype='void'
6358         else
6359                 freetype='int'
6360         fi
6361         ;;
6362 esac
6363 echo "Your system uses $freetype free(), it would seem." >&4
6364 $rm -f malloc.[co]
6365 $cat <<EOM
6366
6367 After $package is installed, you may wish to install various
6368 add-on modules and utilities.  Typically, these add-ons will
6369 be installed under $prefix with the rest
6370 of this package.  However, you may wish to install such add-ons
6371 elsewhere under a different prefix.
6372
6373 If you do not wish to put everything under a single prefix, that's
6374 ok.  You will be prompted for the individual locations; this siteprefix
6375 is only used to suggest the defaults.
6376
6377 The default should be fine for most people.
6378
6379 EOM
6380 fn=d~+
6381 rp='Installation prefix to use for add-on modules and utilities?'
6382 : XXX Here might be another good place for an installstyle setting.
6383 case "$siteprefix" in
6384 '') dflt=$prefix ;;
6385 *)  dflt=$siteprefix ;;
6386 esac
6387 . ./getfile
6388 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6389 oldsiteprefix=''
6390 case "$siteprefix" in
6391 '') ;;
6392 *)      case "$ans" in
6393         "$prefix") ;;
6394         *) oldsiteprefix="$prefix";;
6395         esac
6396         ;;
6397 esac
6398 siteprefix="$ans"
6399 siteprefixexp="$ansexp"
6400
6401 : determine where site specific libraries go.
6402 : Usual default is /usr/local/lib/perl5/site_perl/$version
6403 : The default "style" setting is made in installstyle.U
6404 : XXX No longer works with Prefixit stuff.
6405 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6406 case "$sitelib" in
6407 '') case "$installstyle" in
6408         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6409         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6410         esac
6411         ;;
6412 *)      dflt="$sitelib"
6413         ;;
6414 esac
6415 $cat <<EOM
6416
6417 The installation process will create a directory for
6418 site-specific extensions and modules.  Most users find it convenient
6419 to place all site-specific files in this directory rather than in the
6420 main distribution directory.
6421
6422 EOM
6423 fn=d~+
6424 rp='Pathname for the site-specific library files?'
6425 . ./getfile
6426 sitelib="$ans"
6427 sitelibexp="$ansexp"
6428 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6429 : Change installation prefix, if necessary.
6430 if $test X"$prefix" != X"$installprefix"; then
6431         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6432 else
6433         installsitelib="$sitelibexp"
6434 fi
6435
6436 : determine where site specific architecture-dependent libraries go.
6437 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6438 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6439 : sitelib may have an optional trailing /share.
6440 case "$sitearch" in
6441 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6442         dflt="$dflt/$archname"
6443         ;;
6444 *)      dflt="$sitearch"
6445         ;;
6446 esac
6447 set sitearch sitearch none
6448 eval $prefixit
6449 $cat <<EOM
6450
6451 The installation process will also create a directory for
6452 architecture-dependent site-specific extensions and modules.
6453
6454 EOM
6455 fn=d~+
6456 rp='Pathname for the site-specific architecture-dependent library files?'
6457 . ./getfile
6458 sitearch="$ans"
6459 sitearchexp="$ansexp"
6460 : Change installation prefix, if necessary.
6461 if $test X"$prefix" != X"$installprefix"; then
6462         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6463 else
6464         installsitearch="$sitearchexp"
6465 fi
6466
6467 $cat <<EOM
6468
6469 The installation process will also create a directory for
6470 vendor-supplied add-ons.  Vendors who supply perl with their system
6471 may find it convenient to place all vendor-supplied files in this
6472 directory rather than in the main distribution directory.  This will
6473 ease upgrades between binary-compatible maintenance versions of perl.
6474
6475 Of course you may also use these directories in whatever way you see
6476 fit.  For example, you might use them to access modules shared over a
6477 company-wide network.
6478
6479 The default answer should be fine for most people.
6480 This causes further questions about vendor add-ons to be skipped
6481 and no vendor-specific directories will be configured for perl.
6482
6483 EOM
6484 rp='Do you want to configure vendor-specific add-on directories?'
6485 case "$usevendorprefix" in
6486 define|true|[yY]*) dflt=y ;;
6487 *)      : User may have set vendorprefix directly on Configure command line.
6488         case "$vendorprefix" in
6489         ''|' ') dflt=n ;;
6490         *)      dflt=y ;;
6491         esac
6492         ;;
6493 esac
6494 . ./myread
6495 case "$ans" in
6496 [yY]*)  fn=d~+
6497         rp='Installation prefix to use for vendor-supplied add-ons?'
6498         case "$vendorprefix" in
6499         '') dflt='' ;;
6500         *)  dflt=$vendorprefix ;;
6501         esac
6502         . ./getfile
6503         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6504         oldvendorprefix=''
6505         case "$vendorprefix" in
6506         '') ;;
6507         *)      case "$ans" in
6508                 "$prefix") ;;
6509                 *) oldvendorprefix="$prefix";;
6510                 esac
6511                 ;;
6512         esac
6513         usevendorprefix="$define"
6514         vendorprefix="$ans"
6515         vendorprefixexp="$ansexp"
6516         ;;
6517 *)      usevendorprefix="$undef"
6518         vendorprefix=''
6519         vendorprefixexp=''
6520         ;;
6521 esac
6522
6523 case "$vendorprefix" in
6524 '')     d_vendorlib="$undef"
6525         vendorlib=''
6526         vendorlibexp=''
6527         ;;
6528 *)      d_vendorlib="$define"
6529         : determine where vendor-supplied modules go.
6530         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6531         case "$vendorlib" in
6532         '')
6533                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6534                 case "$installstyle" in
6535                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6536                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6537                 esac
6538                 ;;
6539         *)      dflt="$vendorlib"
6540                 ;;
6541         esac
6542         fn=d~+
6543         rp='Pathname for the vendor-supplied library files?'
6544         . ./getfile
6545         vendorlib="$ans"
6546         vendorlibexp="$ansexp"
6547         ;;
6548 esac
6549 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6550 : Change installation prefix, if necessary.
6551 if $test X"$prefix" != X"$installprefix"; then
6552         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6553 else
6554         installvendorlib="$vendorlibexp"
6555 fi
6556
6557 case "$vendorprefix" in
6558 '')     d_vendorarch="$undef"
6559         vendorarch=''
6560         vendorarchexp=''
6561         ;;
6562 *)      d_vendorarch="$define"
6563         : determine where vendor-supplied architecture-dependent libraries go.
6564         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6565         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6566         : vendorlib may have an optional trailing /share.
6567         case "$vendorarch" in
6568         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6569                 dflt="$dflt/$archname"
6570                 ;;
6571         *)      dflt="$vendorarch" ;;
6572         esac
6573         fn=d~+
6574         rp='Pathname for vendor-supplied architecture-dependent files?'
6575         . ./getfile
6576         vendorarch="$ans"
6577         vendorarchexp="$ansexp"
6578         ;;
6579 esac
6580 : Change installation prefix, if necessary.
6581 if $test X"$prefix" != X"$installprefix"; then
6582         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6583 else
6584         installvendorarch="$vendorarchexp"
6585 fi
6586
6587 : Final catch-all directories to search
6588 $cat <<EOM
6589
6590 Lastly, you can have perl look in other directories for extensions and
6591 modules in addition to those already specified.
6592 These directories will be searched after 
6593         $sitearch 
6594         $sitelib 
6595 EOM
6596 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6597 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6598 echo ' '
6599 case "$otherlibdirs" in
6600 ''|' ') dflt='none' ;;
6601 *)      dflt="$otherlibdirs" ;;
6602 esac
6603 $cat <<EOM
6604 Enter a colon-separated set of extra paths to include in perl's @INC
6605 search path, or enter 'none' for no extra paths.
6606
6607 EOM
6608
6609 rp='Colon-separated list of additional directories for perl to search?'
6610 . ./myread
6611 case "$ans" in
6612 ' '|''|none)    otherlibdirs=' ' ;;     
6613 *)      otherlibdirs="$ans" ;;
6614 esac
6615 case "$otherlibdirs" in
6616 ' ') val=$undef ;;
6617 *)      val=$define ;;
6618 esac
6619 set d_perl_otherlibdirs
6620 eval $setvar
6621
6622 : Cruising for prototypes
6623 echo " "
6624 echo "Checking out function prototypes..." >&4
6625 $cat >prototype.c <<EOCP
6626 #$i_stdlib I_STDLIB
6627 #ifdef I_STDLIB
6628 #include <stdlib.h>
6629 #endif
6630 int main(int argc, char *argv[]) {
6631         exit(0);}
6632 EOCP
6633 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6634         echo "Your C compiler appears to support function prototypes."
6635         val="$define"
6636 else
6637         echo "Your C compiler doesn't seem to understand function prototypes."
6638         val="$undef"
6639 fi
6640 set prototype
6641 eval $setvar
6642 $rm -f prototype*
6643
6644 case "$prototype" in
6645 "$define") ;;
6646 *)      ansi2knr='ansi2knr'
6647         echo " "
6648         cat <<EOM >&4
6649
6650 $me:  FATAL ERROR:
6651 This version of $package can only be compiled by a compiler that 
6652 understands function prototypes.  Unfortunately, your C compiler 
6653         $cc $ccflags
6654 doesn't seem to understand them.  Sorry about that.
6655
6656 If GNU cc is available for your system, perhaps you could try that instead.  
6657
6658 Eventually, we hope to support building Perl with pre-ANSI compilers.
6659 If you would like to help in that effort, please contact <perlbug@perl.org>.
6660
6661 Aborting Configure now.
6662 EOM
6663         exit 2
6664         ;;
6665 esac
6666
6667 : determine where public executables go
6668 echo " "
6669 set dflt bin bin
6670 eval $prefixit
6671 fn=d~
6672 rp='Pathname where the public executables will reside?'
6673 . ./getfile
6674 if $test "X$ansexp" != "X$binexp"; then
6675         installbin=''
6676 fi
6677 bin="$ans"
6678 binexp="$ansexp"
6679 : Change installation prefix, if necessary.
6680 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6681 if $test X"$prefix" != X"$installprefix"; then
6682         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6683 else
6684         installbin="$binexp"
6685 fi
6686
6687 echo " "
6688 case "$extras" in
6689 '') dflt='n';;
6690 *) dflt='y';;
6691 esac
6692 cat <<EOM
6693 Perl can be built with extra modules or bundles of modules which
6694 will be fetched from the CPAN and installed alongside Perl.
6695
6696 Notice that you will need access to the CPAN; either via the Internet,
6697 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6698 be asked later to configure the CPAN.pm module which will in turn do
6699 the installation of the rest of the extra modules or bundles.)
6700
6701 Notice also that if the modules require any external software such as
6702 libraries and headers (the libz library and the zlib.h header for the
6703 Compress::Zlib module, for example) you MUST have any such software
6704 already installed, this configuration process will NOT install such
6705 things for you.
6706
6707 If this doesn't make any sense to you, just accept the default '$dflt'.
6708 EOM
6709 rp='Install any extra modules (y or n)?'
6710 . ./myread
6711 case "$ans" in
6712 y|Y)
6713         cat <<EOM
6714
6715 Please list any extra modules or bundles to be installed from CPAN,
6716 with spaces between the names.  The names can be in any format the
6717 'install' command of CPAN.pm will understand.  (Answer 'none',
6718 without the quotes, to install no extra modules or bundles.)
6719 EOM
6720         rp='Extras?'
6721         dflt="$extras"
6722         . ./myread
6723         extras="$ans"
6724 esac
6725 case "$extras" in
6726 ''|'none')
6727         val=''
6728         $rm -f ../extras.lst
6729         ;;
6730 *)      echo "(Saving the list of extras for later...)"
6731         echo "$extras" > ../extras.lst
6732         val="'$extras'"
6733         ;;
6734 esac
6735 set extras
6736 eval $setvar
6737 echo " "
6738
6739 : determine where html pages for programs go
6740 set html1dir html1dir none
6741 eval $prefixit
6742 $cat <<EOM
6743
6744 If you wish to install html files for programs in $spackage, indicate 
6745 the appropriate directory here.  To skip installing html files,
6746 answer "none".
6747 EOM
6748 case "$html1dir" in
6749 ''|none|$undef|' ') dflt=none ;;
6750 *) dflt=$html1dir ;;
6751 esac
6752 fn=dn+~
6753 rp="Directory for the main $spackage html pages?"
6754 . ./getfile
6755 html1dir="$ans"
6756 html1direxp="$ansexp"
6757 : Use ' ' for none so value is preserved next time through Configure
6758 $test X"$html1dir" = "X" && html1dir=' '
6759 : Change installation prefix, if necessary.
6760 if $test X"$prefix" != X"$installprefix"; then
6761         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6762 else
6763         installhtml1dir="$html1direxp"
6764 fi
6765
6766 : determine where html pages for libraries and modules go
6767 set html3dir html3dir none
6768 eval $prefixit
6769 $cat <<EOM
6770
6771 If you wish to install html files for modules associated with $spackage,
6772 indicate the appropriate directory here.  To skip installing html files,
6773 answer "none".
6774 EOM
6775 : There is no obvious default.  If they have specified html1dir, then
6776 : try to key off that, possibly changing .../html1 into .../html3.
6777 case "$html3dir" in
6778 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6779 *) dflt=$html3dir ;;
6780 esac
6781 fn=dn+~
6782 rp="Directory for the $spackage module html pages?"
6783 . ./getfile
6784 html3dir="$ans"
6785 html3direxp="$ansexp"
6786 : Use ' ' for none so value is preserved next time through Configure
6787 $test X"$html3dir" = "X" && html3dir=' '
6788 : Change installation prefix, if necessary.
6789 if $test X"$prefix" != X"$installprefix"; then
6790         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6791 else
6792         installhtml3dir="$html3direxp"
6793 fi
6794
6795 : Find perl5.005 or later.
6796 echo "Looking for a previously installed perl5.005 or later... "
6797 case "$perl5" in
6798 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6799                 : Check if this perl is recent and can load a simple module
6800                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6801                         perl5=$tdir/perl
6802                         break;
6803                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6804                         perl5=$tdir/perl5
6805                         break;
6806                 fi
6807         done
6808         ;;
6809 *)      perl5="$perl5"
6810         ;;
6811 esac
6812 case "$perl5" in
6813 '')     echo "None found.  That's ok.";;
6814 *)      echo "Using $perl5." ;;
6815 esac
6816
6817 : Determine list of previous versions to include in @INC
6818 $cat > getverlist <<EOPL
6819 #!$perl5 -w
6820 use File::Basename;
6821 \$api_versionstring = "$api_versionstring";
6822 \$version = "$version";
6823 \$stem = "$sitelib_stem";
6824 \$archname = "$archname";
6825 EOPL
6826         $cat >> getverlist <<'EOPL'
6827 # Can't have leading @ because metaconfig interprets it as a command!
6828 ;@inc_version_list=();
6829 # XXX Redo to do opendir/readdir? 
6830 if (-d $stem) {
6831     chdir($stem);
6832     ;@candidates = glob("5.*");
6833 }
6834 else {
6835     ;@candidates = ();
6836 }
6837
6838 # XXX ToDo:  These comparisons must be reworked when two-digit
6839 # subversions come along, so that 5.7.10 compares as greater than
6840 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6841 # widespread that we can use the built-in version vectors rather
6842 # than reinventing them here.  For 5.6.0, however, we must
6843 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6844 foreach $d (@candidates) {
6845     if ($d lt $version) {
6846         if ($d ge $api_versionstring) {
6847             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6848         }
6849         elsif ($d ge "5.005") {
6850             unshift(@inc_version_list, grep { -d } $d);
6851         }
6852     }
6853     else {
6854         # Skip newer version.  I.e. don't look in
6855         # 5.7.0 if we're installing 5.6.1.
6856     }
6857 }
6858
6859 if (@inc_version_list) {
6860     print join(' ', @inc_version_list);
6861 }
6862 else {
6863     # Blank space to preserve value for next Configure run.
6864     print " ";
6865 }
6866 EOPL
6867 chmod +x getverlist
6868 case "$inc_version_list" in
6869 '')     if test -x "$perl5$exe_ext"; then
6870                 dflt=`$perl5 getverlist`
6871         else
6872                 dflt='none'
6873         fi
6874         ;;
6875 $undef) dflt='none' ;;
6876 *)  eval dflt=\"$inc_version_list\" ;;
6877 esac
6878 case "$dflt" in
6879 ''|' ') dflt=none ;;
6880 esac
6881 case "$dflt" in
6882 5.005) dflt=none ;;
6883 esac
6884 $cat <<EOM
6885
6886 In order to ease the process of upgrading, this version of perl 
6887 can be configured to use modules built and installed with earlier 
6888 versions of perl that were installed under $prefix.  Specify here
6889 the list of earlier versions that this version of perl should check.
6890 If Configure detected no earlier versions of perl installed under
6891 $prefix, then the list will be empty.  Answer 'none' to tell perl
6892 to not search earlier versions.
6893
6894 The default should almost always be sensible, so if you're not sure,
6895 just accept the default.
6896 EOM
6897
6898 rp='List of earlier versions to include in @INC?'
6899 . ./myread
6900 case "$ans" in
6901 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6902 *) inc_version_list="$ans" ;;
6903 esac
6904 case "$inc_version_list" in
6905 ''|' ') 
6906         inc_version_list_init='0';;
6907 *)      inc_version_list_init=`echo $inc_version_list |
6908                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6909         ;;
6910 esac
6911 $rm -f getverlist
6912
6913 : determine whether to install perl also as /usr/bin/perl
6914
6915 echo " "
6916 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6917         $cat <<EOM
6918 Many scripts expect perl to be installed as /usr/bin/perl.
6919
6920 If you want to, I can install the perl you are about to compile
6921 as /usr/bin/perl (in addition to $bin/perl).
6922 EOM
6923         if test -f /usr/bin/perl; then
6924             $cat <<EOM
6925
6926 However, please note that because you already have a /usr/bin/perl,
6927 overwriting that with a new Perl would very probably cause problems.
6928 Therefore I'm assuming you don't want to do that (unless you insist).
6929
6930 EOM
6931             case "$installusrbinperl" in
6932             "$define"|[yY]*)    dflt='y';;
6933             *)                  dflt='n';;
6934             esac
6935         else
6936             $cat <<EOM
6937
6938 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6939
6940 EOM
6941             case "$installusrbinperl" in
6942             "$undef"|[nN]*)     dflt='n';;
6943             *)                  dflt='y';;
6944             esac
6945         fi
6946         rp="Do you want to install perl as /usr/bin/perl?"
6947         . ./myread
6948         case "$ans" in
6949         [yY]*)  val="$define";;
6950         *)      val="$undef" ;;
6951         esac
6952 else
6953         val="$undef"
6954 fi
6955 set installusrbinperl
6956 eval $setvar
6957
6958 echo " "
6959 echo "Checking for GNU C Library..." >&4
6960 cat >try.c <<'EOCP'
6961 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6962    alone are insufficient to distinguish different versions, such as
6963    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6964    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6965 */
6966 #include <stdio.h>
6967 int main(void)
6968 {
6969 #ifdef __GLIBC__
6970 #   ifdef __GLIBC_MINOR__
6971 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6972 #           include <gnu/libc-version.h>
6973             printf("%s\n",  gnu_get_libc_version());
6974 #       else
6975             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6976 #       endif
6977 #   else
6978         printf("%d\n",  __GLIBC__);
6979 #   endif
6980     return 0;
6981 #else
6982     return 1;
6983 #endif
6984 }
6985 EOCP
6986 set try
6987 if eval $compile_ok && $run ./try > glibc.ver; then
6988         val="$define"
6989         gnulibc_version=`$cat glibc.ver`
6990         echo "You are using the GNU C Library version $gnulibc_version"
6991 else
6992         val="$undef"
6993         gnulibc_version=''
6994         echo "You are not using the GNU C Library"
6995 fi
6996 $rm -f try try.* glibc.ver
6997 set d_gnulibc
6998 eval $setvar
6999
7000 : see if nm is to be used to determine whether a symbol is defined or not
7001 case "$usenm" in
7002 '')
7003         dflt=''
7004         case "$d_gnulibc" in
7005         "$define")
7006                 echo " "
7007                 echo "nm probably won't work on the GNU C Library." >&4
7008                 dflt=n
7009                 ;;
7010         esac
7011         case "$dflt" in
7012         '') 
7013                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7014                         echo " "
7015                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7016                         echo "'nm' won't be sufficient on this sytem." >&4
7017                         dflt=n
7018                 fi
7019                 ;;
7020         esac
7021         case "$dflt" in
7022         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7023                 if $test $dflt -gt 20; then
7024                         dflt=y
7025                 else
7026                         dflt=n
7027                 fi
7028                 ;;
7029         esac
7030         ;;
7031 *)
7032         case "$usenm" in
7033         true|$define) dflt=y;;
7034         *) dflt=n;;
7035         esac
7036         ;;
7037 esac
7038 $cat <<EOM
7039
7040 I can use $nm to extract the symbols from your C libraries. This
7041 is a time consuming task which may generate huge output on the disk (up
7042 to 3 megabytes) but that should make the symbols extraction faster. The
7043 alternative is to skip the 'nm' extraction part and to compile a small
7044 test program instead to determine whether each symbol is present. If
7045 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7046 this may be the best solution.
7047
7048 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7049
7050 EOM
7051 rp="Shall I use $nm to extract C symbols from the libraries?"
7052 . ./myread
7053 case "$ans" in
7054 [Nn]*) usenm=false;;
7055 *) usenm=true;;
7056 esac
7057
7058 runnm=$usenm
7059 case "$reuseval" in
7060 true) runnm=false;;
7061 esac
7062
7063 : nm options which may be necessary
7064 case "$nm_opt" in
7065 '') if $test -f /mach_boot; then
7066                 nm_opt=''       # Mach
7067         elif $test -d /usr/ccs/lib; then
7068                 nm_opt='-p'     # Solaris (and SunOS?)
7069         elif $test -f /dgux; then
7070                 nm_opt='-p'     # DG-UX
7071         elif $test -f /lib64/rld; then
7072                 nm_opt='-p'     # 64-bit Irix
7073         else
7074                 nm_opt=''
7075         fi;;
7076 esac
7077
7078 : nm options which may be necessary for shared libraries but illegal
7079 : for archive libraries.  Thank you, Linux.
7080 case "$nm_so_opt" in
7081 '')     case "$myuname" in
7082         *linux*)
7083                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7084                         nm_so_opt='--dynamic'
7085                 fi
7086                 ;;
7087         esac
7088         ;;
7089 esac
7090
7091 case "$runnm" in
7092 true)
7093 : get list of predefined functions in a handy place
7094 echo " "
7095 case "$libc" in
7096 '') libc=unknown
7097         case "$libs" in
7098         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7099         esac
7100         ;;
7101 esac
7102 case "$libs" in
7103 '') ;;
7104 *)  for thislib in $libs; do
7105         case "$thislib" in
7106         -lc|-lc_s)
7107                 : Handle C library specially below.
7108                 ;;
7109         -l*)
7110                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7111                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7112                         :
7113                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7114                         :
7115                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7116                         :
7117                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7118                         :
7119                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7120                         :
7121                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7122                         :
7123                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7124                         :
7125                 else
7126                         try=''
7127                 fi
7128                 libnames="$libnames $try"
7129                 ;;
7130         *) libnames="$libnames $thislib" ;;
7131         esac
7132         done
7133         ;;
7134 esac
7135 xxx=normal
7136 case "$libc" in
7137 unknown)
7138         set /lib/libc.$so
7139         for xxx in $libpth; do
7140                 $test -r $1 || set $xxx/libc.$so
7141                 : The messy sed command sorts on library version numbers.
7142                 $test -r $1 || \
7143                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7144                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7145                                 h
7146                                 s/[0-9][0-9]*/0000&/g
7147                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7148                                 G
7149                                 s/\n/ /' | \
7150                          $sort | $sed -e 's/^.* //'`
7151                 eval set \$$#
7152         done
7153         $test -r $1 || set /usr/ccs/lib/libc.$so
7154         $test -r $1 || set /lib/libsys_s$_a
7155         ;;
7156 *)
7157         set blurfl
7158         ;;
7159 esac
7160 if $test -r "$1"; then
7161         echo "Your (shared) C library seems to be in $1."
7162         libc="$1"
7163 elif $test -r /lib/libc && $test -r /lib/clib; then
7164         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7165         xxx=apollo
7166         libc='/lib/clib /lib/libc'
7167         if $test -r /lib/syslib; then
7168                 echo "(Your math library is in /lib/syslib.)"
7169                 libc="$libc /lib/syslib"
7170         fi
7171 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7172         echo "Your C library seems to be in $libc, as you said before."
7173 elif $test -r $incpath/usr/lib/libc$_a; then
7174         libc=$incpath/usr/lib/libc$_a;
7175         echo "Your C library seems to be in $libc.  That's fine."
7176 elif $test -r /lib/libc$_a; then
7177         libc=/lib/libc$_a;
7178         echo "Your C library seems to be in $libc.  You're normal."
7179 else
7180         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7181                 :
7182         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7183                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7184         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7185                 :
7186         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7187                 :
7188         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7189                 :
7190         else
7191                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7192         fi
7193         if $test -r "$tans"; then
7194                 echo "Your C library seems to be in $tans, of all places."
7195                 libc=$tans
7196         else
7197                 libc='blurfl'
7198         fi
7199 fi
7200 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7201         dflt="$libc"
7202         cat <<EOM
7203
7204 If the guess above is wrong (which it might be if you're using a strange
7205 compiler, or your machine supports multiple models), you can override it here.
7206
7207 EOM
7208 else
7209         dflt=''
7210         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7211         cat >&4 <<EOM
7212 I can't seem to find your C library.  I've looked in the following places:
7213
7214 EOM
7215         $sed 's/^/      /' libpath
7216         cat <<EOM
7217
7218 None of these seems to contain your C library. I need to get its name...
7219
7220 EOM
7221 fi
7222 fn=f
7223 rp='Where is your C library?'
7224 . ./getfile
7225 libc="$ans"
7226
7227 echo " "
7228 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7229 set X `cat libnames`
7230 shift
7231 xxx=files
7232 case $# in 1) xxx=file; esac
7233 echo "Extracting names from the following $xxx for later perusal:" >&4
7234 echo " "
7235 $sed 's/^/      /' libnames >&4
7236 echo " "
7237 $echo $n "This may take a while...$c" >&4
7238
7239 for file in $*; do
7240         case $file in
7241         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7242         *) $nm $nm_opt $file 2>/dev/null;;
7243         esac
7244 done >libc.tmp
7245
7246 $echo $n ".$c"
7247 $grep fprintf libc.tmp > libc.ptf
7248 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7249 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7250 xxx='[ADTSIW]'
7251 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7252         eval $xscan;\
7253         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7254                 eval $xrun
7255 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7256         eval $xscan;\
7257         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7258                 eval $xrun
7259 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7260         eval $xscan;\
7261         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7262                 eval $xrun
7263 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7264         eval $xscan;\
7265         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7266                 eval $xrun
7267 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7268         eval $xscan;\
7269         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7270                 eval $xrun
7271 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7272         eval $xscan;\
7273         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7274                 eval $xrun
7275 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7276                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7277         eval $xscan;\
7278         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7279                 eval $xrun
7280 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7281         eval $xscan;\
7282         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7283                 eval $xrun
7284 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7285         eval $xscan;\
7286         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7287                 eval $xrun
7288 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7289         eval $xscan;\
7290         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7291                 eval $xrun
7292 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7293         eval $xscan;\
7294         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7295                 eval $xrun
7296 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7297         eval $xscan;\
7298         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7299                 eval $xrun
7300 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7301         eval $xscan;\
7302         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7303                 eval $xrun
7304 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7305         eval $xscan;\
7306         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7307                 eval $xrun
7308 else
7309         $nm -p $* 2>/dev/null >libc.tmp
7310         $grep fprintf libc.tmp > libc.ptf
7311         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7312                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7313         then
7314                 nm_opt='-p'
7315                 eval $xrun
7316         else
7317                 echo " "
7318                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7319                 com=''
7320                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7321                         for thisname in $libnames $libc; do
7322                                 $ar t $thisname >>libc.tmp
7323                         done
7324                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7325                         echo "Ok." >&4
7326                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7327                         # Repeat libc to extract forwarders to DLL entries too
7328                         for thisname in $libnames $libc; do
7329                                 $ar tv $thisname >>libc.tmp
7330                                 # Revision 50 of EMX has bug in $ar.
7331                                 # it will not extract forwarders to DLL entries
7332                                 # Use emximp which will extract exactly them.
7333                                 emximp -o tmp.imp $thisname \
7334                                     2>/dev/null && \
7335                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7336                                     < tmp.imp >>libc.tmp
7337                                 $rm tmp.imp
7338                         done
7339                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7340                         echo "Ok." >&4
7341                 else
7342                         echo "$ar didn't seem to work right." >&4
7343                         echo "Maybe this is a Cray...trying bld instead..." >&4
7344                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7345                         then
7346                                 for thisname in $libnames; do
7347                                         bld t $libnames | \
7348                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7349                                         $ar t $thisname >>libc.tmp
7350                                 done
7351                                 echo "Ok." >&4
7352                         else
7353                                 echo "That didn't work either.  Giving up." >&4
7354                                 exit 1
7355                         fi
7356                 fi
7357         fi
7358 fi
7359 nm_extract="$com"
7360 case "$PASE" in
7361 define)
7362     echo " "
7363     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7364     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7365     ;;
7366 *)  if $test -f /lib/syscalls.exp; then
7367         echo " "
7368         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7369         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7370     fi
7371     ;;
7372 esac
7373 ;;
7374 esac
7375 $rm -f libnames libpath
7376
7377 : see if dld is available
7378 set dld.h i_dld
7379 eval $inhdr
7380
7381 : is a C symbol defined?
7382 csym='tlook=$1;
7383 case "$3" in
7384 -v) tf=libc.tmp; tdc="";;
7385 -a) tf=libc.tmp; tdc="[]";;
7386 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7387 esac;
7388 tx=yes;
7389 case "$reuseval-$4" in
7390 true-) ;;
7391 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7392 esac;
7393 case "$tx" in
7394 yes)
7395         tval=false;
7396         if $test "$runnm" = true; then
7397                 if $contains $tlook $tf >/dev/null 2>&1; then
7398                         tval=true;
7399                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7400                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7401                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7402                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7403                         $rm -f try$_exe try.c core core.* try.core;
7404                 fi;
7405         else
7406                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7407                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7408                 $rm -f try$_exe try.c;
7409         fi;
7410         ;;
7411 *)
7412         case "$tval" in
7413         $define) tval=true;;
7414         *) tval=false;;
7415         esac;
7416         ;;
7417 esac;
7418 eval "$2=$tval"'
7419
7420 : define an is-in-libc? function
7421 inlibc='echo " "; td=$define; tu=$undef;
7422 sym=$1; var=$2; eval "was=\$$2";
7423 tx=yes;
7424 case "$reuseval$was" in
7425 true) ;;
7426 true*) tx=no;;
7427 esac;
7428 case "$tx" in
7429 yes)
7430         set $sym tres -f;
7431         eval $csym;
7432         case "$tres" in
7433         true)
7434                 echo "$sym() found." >&4;
7435                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7436         *)
7437                 echo "$sym() NOT found." >&4;
7438                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7439         esac;;
7440 *)
7441         case "$was" in
7442         $define) echo "$sym() found." >&4;;
7443         *) echo "$sym() NOT found." >&4;;
7444         esac;;
7445 esac'
7446
7447 : see if dlopen exists
7448 xxx_runnm="$runnm"
7449 runnm=false
7450 set dlopen d_dlopen
7451 eval $inlibc
7452 runnm="$xxx_runnm"
7453
7454 : determine which dynamic loading, if any, to compile in
7455 echo " "
7456 dldir="ext/DynaLoader"
7457 case "$usedl" in
7458 $define|y|true)
7459         dflt='y'
7460         usedl="$define"
7461         ;;
7462 $undef|n|false)
7463         dflt='n'
7464         usedl="$undef"
7465         ;;
7466 *) 
7467         dflt='n'
7468         case "$d_dlopen" in
7469             $define) dflt='y' ;;
7470         esac
7471         case "$i_dld" in
7472             $define) dflt='y' ;;
7473         esac
7474         : Does a dl_xxx.xs file exist for this operating system
7475         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7476         ;;
7477 esac
7478 rp="Do you wish to use dynamic loading?"
7479 . ./myread
7480 usedl="$ans"
7481 case "$ans" in
7482 y*) usedl="$define"
7483         case "$dlsrc" in
7484         '')
7485                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7486                         dflt="$dldir/dl_${osname}.xs"
7487                 elif $test "$d_dlopen" = "$define" ; then
7488                         dflt="$dldir/dl_dlopen.xs"
7489                 elif $test "$i_dld" = "$define" ; then
7490                         dflt="$dldir/dl_dld.xs"
7491                 else
7492                         dflt=''
7493                 fi
7494                 ;;
7495         *)      dflt="$dldir/$dlsrc"
7496                 ;;
7497         esac
7498     echo "The following dynamic loading files are available:"
7499         : Can not go over to $dldir because getfile has path hard-coded in.
7500         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7501         rp="Source file to use for dynamic loading"
7502         fn="fne"
7503         gfpth="$src"
7504         . ./getfile
7505         usedl="$define"
7506         : emulate basename
7507         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7508
7509         $cat << EOM
7510
7511 Some systems may require passing special flags to $cc -c to
7512 compile modules that will be used to create a shared library.
7513 To use no flags, say "none".
7514
7515 EOM
7516     case "$cccdlflags" in
7517     '') case "$gccversion" in
7518                 '') case "$osname" in
7519                         hpux)   dflt='+z' ;;
7520                         next)   dflt='none' ;;
7521                         irix*)  dflt='-KPIC' ;;
7522                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7523                         sunos)  dflt='-pic' ;;
7524                         *)      dflt='none' ;;
7525                     esac
7526                         ;;
7527                 *)  case "$osname" in
7528                         darwin) dflt='none' ;;
7529                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7530                         *)      dflt='-fpic' ;;
7531                     esac ;;
7532             esac ;;
7533         ' ') dflt='none' ;;
7534     *)  dflt="$cccdlflags" ;;
7535     esac
7536     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7537     . ./myread
7538     case "$ans" in
7539     none) cccdlflags=' ' ;;
7540     *) cccdlflags="$ans" ;;
7541     esac
7542
7543     cat << EOM
7544
7545 Some systems use ld to create libraries that can be dynamically loaded,
7546 while other systems (such as those using ELF) use $cc.
7547
7548 EOM
7549         case "$ld" in
7550         '')     $cat >try.c <<EOM
7551 /* Test for whether ELF binaries are produced */
7552 #include <fcntl.h>
7553 #$i_stdlib I_STDLIB
7554 #ifdef I_STDLIB
7555 #include <stdlib.h>
7556 #endif
7557 int main() {
7558         char b[4];
7559         int i = open("a.out",O_RDONLY);
7560         if(i == -1) 
7561                 exit(1); /* fail */
7562         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7563                 exit(0); /* succeed (yes, it's ELF) */
7564         else
7565                 exit(1); /* fail */
7566 }
7567 EOM
7568                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7569                         cat <<EOM
7570 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7571 EOM
7572                         dflt="$cc"
7573                 else
7574                         echo "I'll use ld to build dynamic libraries."
7575                         dflt='ld'
7576                 fi
7577                 rm -f try.c a.out
7578                 ;;
7579         *)      dflt="$ld"
7580                 ;;
7581         esac
7582
7583     rp="What command should be used to create dynamic libraries?"
7584     . ./myread
7585         ld="$ans"
7586
7587     cat << EOM
7588
7589 Some systems may require passing special flags to $ld to create a
7590 library that can be dynamically loaded.  If your ld flags include
7591 -L/other/path options to locate libraries outside your loader's normal
7592 search path, you may need to specify those -L options here as well.  To
7593 use no flags, say "none".
7594
7595 EOM
7596     case "$lddlflags" in
7597     '') case "$osname" in
7598                         beos) dflt='-nostart' ;;
7599                         hpux) dflt='-b';
7600                               case "$gccversion" in
7601                               '') dflt="$dflt +vnocompatwarnings" ;;
7602                               esac
7603                               ;;        
7604                         linux|irix*)    dflt='-shared' ;;
7605                         next)  dflt='none' ;;
7606                         solaris) dflt='-G' ;;
7607                         sunos) dflt='-assert nodefinitions' ;;
7608                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7609                 *)     dflt='none' ;;
7610                         esac
7611                         ;;
7612     *) dflt="$lddlflags" ;;
7613     esac
7614
7615         : Try to guess additional flags to pick up local libraries.
7616         : Be careful not to append to a plain 'none'
7617         case "$dflt" in
7618         none) dflt='' ;;
7619         esac
7620         for thisflag in $ldflags; do
7621                 case "$thisflag" in
7622                 -L*|-R*|-Wl,-R*)
7623                         case " $dflt " in
7624                         *" $thisflag "*) ;;
7625                         *) dflt="$dflt $thisflag" ;;
7626                         esac
7627                         ;;
7628                 esac
7629         done
7630
7631         case "$dflt" in
7632         ''|' ') dflt='none' ;;
7633         esac
7634
7635     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7636     . ./myread
7637     case "$ans" in
7638     none) lddlflags=' ' ;;
7639     *) lddlflags="$ans" ;;
7640     esac
7641
7642         cat <<EOM
7643
7644 Some systems may require passing special flags to $cc to indicate that
7645 the resulting executable will use dynamic linking.  To use no flags,
7646 say "none".
7647
7648 EOM
7649     case "$ccdlflags" in
7650     '') case "$osname" in
7651             linux|hpux) dflt='-Wl,-E' ;;
7652             next|sunos) dflt='none' ;;
7653             *)          dflt='none' ;;
7654             esac ;;
7655     ' ')  dflt='none' ;;
7656     *)  dflt="$ccdlflags" ;;
7657     esac
7658     rp="Any special flags to pass to $cc to use dynamic linking?"
7659     . ./myread
7660     case "$ans" in
7661     none) ccdlflags=' ' ;;
7662     *) ccdlflags="$ans" ;;
7663     esac
7664     ;;
7665 *)  usedl="$undef"
7666         ld='ld'
7667     dlsrc='dl_none.xs'
7668     lddlflags=''
7669     ccdlflags=''
7670     ;;
7671 esac
7672
7673 also=''
7674 case "$usedl" in
7675 $undef)
7676         # No dynamic loading being used, so don't bother even to prompt.
7677         useshrplib='false'
7678         ;;
7679 *)      case "$useshrplib" in
7680         '')     case "$osname" in
7681                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7682                         dflt=y
7683                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7684                         ;;
7685                 next*)
7686                         case "$osvers" in
7687                         4*)     dflt=y
7688                                 also='Building a shared libperl is needed for MAB support.'
7689                                 ;;
7690                         *)      dflt=n
7691                                 ;;
7692                         esac
7693                         ;;
7694                 *)      dflt=n
7695                         ;;
7696                 esac
7697                 ;;
7698         $define|true|[Yy]*)
7699                 dflt=y
7700                 ;;
7701         *)      dflt=n
7702                 ;;
7703         esac
7704         $cat << EOM
7705
7706 The perl executable is normally obtained by linking perlmain.c with
7707 libperl${_a}, any static extensions (usually just DynaLoader), and
7708 any other libraries needed on this system (such as -lm, etc.).  Since
7709 your system supports dynamic loading, it is probably possible to build
7710 a shared libperl.$so.  If you will have more than one executable linked
7711 to libperl.$so, this will significantly reduce the size of each
7712 executable, but it may have a noticeable affect on performance.  The
7713 default is probably sensible for your system.
7714 $also
7715
7716 EOM
7717         rp="Build a shared libperl.$so (y/n)"
7718         . ./myread
7719         case "$ans" in
7720         true|$define|[Yy]*)
7721                 useshrplib='true'  ;;
7722         *)      useshrplib='false' ;;
7723         esac
7724         ;;
7725 esac
7726
7727 case "$useshrplib" in
7728 true)
7729         case "$libperl" in
7730         '')
7731                 # Figure out a good name for libperl.so.  Since it gets stored in
7732                 # a version-specific architecture-dependent library, the version
7733                 # number isn't really that important, except for making cc/ld happy.
7734                 #
7735                 # A name such as libperl.so.3.1
7736                 majmin="libperl.$so.$patchlevel.$subversion"
7737                 # A name such as libperl.so.301
7738                 majonly=`echo $patchlevel $subversion |
7739                         $awk '{printf "%d%02d", $1, $2}'`
7740                 majonly=libperl.$so.$majonly
7741                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7742                 # rely on figuring it out from the naming of libc.
7743                 case "${osname}${osvers}" in
7744                 next4*)
7745                         dflt=libperl.5.$so
7746                         # XXX How handle the --version stuff for MAB?
7747                         ;;
7748                 linux*)  # ld won't link with a bare -lperl otherwise.
7749                         dflt=libperl.$so
7750                         ;;
7751                 cygwin*) # ld links against an importlib
7752                         dflt=libperl$lib_ext
7753                         ;;
7754                 *)      # Try to guess based on whether libc has major.minor.
7755                         case "$libc" in
7756                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7757                         *libc.$so.[0-9]*) dflt=$majonly ;;
7758                         *)      dflt=libperl.$so ;;
7759                         esac
7760                         ;;
7761                 esac
7762                 ;;
7763         *)      dflt=$libperl
7764                 ;;
7765         esac
7766         cat << EOM
7767
7768 I need to select a good name for the shared libperl.  If your system uses
7769 library names with major and minor numbers, then you might want something
7770 like $majmin.  Alternatively, if your system uses a single version
7771 number for shared libraries, then you might want to use $majonly.
7772 Or, your system might be quite happy with a simple libperl.$so.
7773
7774 Since the shared libperl will get installed into a version-specific
7775 architecture-dependent directory, the version number of the shared perl
7776 library probably isn't important, so the default should be o.k.
7777
7778 EOM
7779         rp='What name do you want to give to the shared libperl?'
7780         . ./myread
7781         libperl=$ans
7782         echo "Ok, I'll use $libperl"
7783         ;;
7784 *)
7785         libperl="libperl${_a}"
7786         ;;
7787 esac
7788
7789 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7790 case "$shrpdir" in
7791 '') ;;
7792 *)      $cat >&4 <<EOM
7793 WARNING:  Use of the shrpdir variable for the installation location of
7794 the shared $libperl is not supported.  It was never documented and
7795 will not work in this version.  Let me (perlbug@perl.org)
7796 know of any problems this may cause.
7797
7798 EOM
7799         case "$shrpdir" in
7800         "$archlibexp/CORE")
7801                 $cat >&4 <<EOM
7802 But your current setting of $shrpdir is
7803 the default anyway, so it's harmless.
7804 EOM
7805                 ;;
7806         *)
7807                 $cat >&4 <<EOM
7808 Further, your current attempted setting of $shrpdir
7809 conflicts with the value of $archlibexp/CORE
7810 that installperl will use.
7811 EOM
7812                 ;;
7813         esac
7814         ;;
7815 esac
7816
7817 # How will the perl executable find the installed shared $libperl?
7818 # Add $xxx to ccdlflags.
7819 # If we can't figure out a command-line option, use $shrpenv to
7820 # set env LD_RUN_PATH.  The main perl makefile uses this.
7821 shrpdir=$archlibexp/CORE
7822 xxx=''
7823 tmp_shrpenv=''
7824 if "$useshrplib"; then
7825     case "$osname" in 
7826         aix)
7827                 # We'll set it in Makefile.SH...
7828                 ;;
7829         solaris)
7830                 xxx="-R $shrpdir"
7831                 ;;
7832         freebsd|netbsd|openbsd)
7833                 xxx="-Wl,-R$shrpdir"
7834                 ;;
7835         bsdos|linux|irix*|dec_osf)
7836                 xxx="-Wl,-rpath,$shrpdir"
7837                 ;;
7838         next)
7839                 # next doesn't like the default...
7840                 ;;
7841         beos)
7842                 # beos doesn't like the default, either.
7843                 ;;
7844         hpux*)
7845                 # hpux doesn't like the default, either.
7846                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7847                 ;;
7848         *)
7849                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7850                 ;;
7851         esac
7852         case "$xxx" in
7853         '') ;;
7854         *)      
7855                 # Only add $xxx if it isn't already in ccdlflags.
7856                 case " $ccdlflags " in
7857                 *" $xxx "*)     ;;
7858                 *)      ccdlflags="$ccdlflags $xxx"
7859                         cat <<EOM >&4
7860
7861 Adding $xxx to the flags
7862 passed to $ld so that the perl executable will find the 
7863 installed shared $libperl.
7864
7865 EOM
7866                         ;;
7867                 esac
7868                 ;;
7869         esac
7870 fi
7871 # Fix ccdlflags in AIX for building external extensions.
7872 # (For building Perl itself bare -bE:perl.exp is needed,
7873 #  Makefile.SH takes care of this.)
7874 case "$osname" in
7875 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7876 esac
7877 # Respect a hint or command-line value.
7878 case "$shrpenv" in
7879 '') shrpenv="$tmp_shrpenv" ;;
7880 esac
7881 case "$ldlibpthname" in
7882 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7883 none)   ldlibpthname='' ;;
7884 esac
7885
7886 : determine where manual pages are on this system
7887 echo " "
7888 case "$sysman" in
7889 '') 
7890         syspath='/usr/share/man/man1 /usr/man/man1'
7891         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7892         syspath="$syspath /usr/man/u_man/man1"
7893         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7894         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7895         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7896         sysman=`./loc . /usr/man/man1 $syspath`
7897         ;;
7898 esac
7899 if $test -d "$sysman"; then
7900         echo "System manual is in $sysman." >&4
7901 else
7902         echo "Could not find manual pages in source form." >&4
7903 fi
7904
7905 : determine where manual pages go
7906 set man1dir man1dir none
7907 eval $prefixit
7908 $cat <<EOM
7909
7910 $spackage has manual pages available in source form.
7911 EOM
7912 case "$nroff" in
7913 nroff)
7914         echo "However, you don't have nroff, so they're probably useless to you."
7915         case "$man1dir" in
7916         '') man1dir="none";;
7917         esac;;
7918 esac
7919 echo "If you don't want the manual sources installed, answer 'none'."
7920 case "$man1dir" in
7921 ' ') dflt=none
7922         ;;
7923 '')
7924         lookpath="$prefixexp/share/man/man1"
7925         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7926         lookpath="$lookpath $prefixexp/man/p_man/man1"
7927         lookpath="$lookpath $prefixexp/man/u_man/man1"
7928         lookpath="$lookpath $prefixexp/man/man.1"
7929         case "$sysman" in
7930         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7931         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7932         esac
7933         set dflt
7934         eval $prefixup
7935         ;;
7936 *)  dflt="$man1dir"
7937         ;;
7938 esac
7939 echo " "
7940 fn=dn+~
7941 rp="Where do the main $spackage manual pages (source) go?"
7942 . ./getfile
7943 if $test "X$man1direxp" != "X$ansexp"; then
7944         installman1dir=''
7945 fi
7946 man1dir="$ans"
7947 man1direxp="$ansexp"
7948 case "$man1dir" in
7949 '')     man1dir=' '
7950         installman1dir='';;
7951 esac
7952
7953 : Change installation prefix, if necessary.
7954 if $test X"$prefix" != X"$installprefix"; then
7955         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7956 else
7957         installman1dir="$man1direxp"
7958 fi
7959
7960 : What suffix to use on installed man pages
7961
7962 case "$man1dir" in
7963 ' ')
7964         man1ext='0'
7965         ;;
7966 *)
7967         rp="What suffix should be used for the main $spackage man pages?"
7968         case "$man1ext" in
7969         '')     case "$man1dir" in
7970                 *1)  dflt=1 ;;
7971                 *1p) dflt=1p ;;
7972                 *1pm) dflt=1pm ;;
7973                 *l) dflt=l;;
7974                 *n) dflt=n;;
7975                 *o) dflt=o;;
7976                 *p) dflt=p;;
7977                 *C) dflt=C;;
7978                 *L) dflt=L;;
7979                 *L1) dflt=L1;;
7980                 *) dflt=1;;
7981                 esac
7982                 ;;
7983         *)      dflt="$man1ext";;
7984         esac
7985         . ./myread
7986         man1ext="$ans"
7987         ;;
7988 esac
7989
7990 : see if we can have long filenames
7991 echo " "
7992 first=123456789abcdef
7993 $rm -f $first
7994 if (echo hi >$first) 2>/dev/null; then
7995         if $test -f 123456789abcde; then
7996                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7997                 val="$undef"
7998         else
7999                 echo 'You can have filenames longer than 14 characters.'>&4
8000                 val="$define"
8001         fi
8002 else
8003         $cat <<'EOM'
8004 You can't have filenames longer than 14 chars.
8005 You can't even think about them!
8006 EOM
8007         val="$undef"
8008 fi 
8009 set d_flexfnam
8010 eval $setvar
8011 $rm -rf 123456789abcde*
8012
8013 : determine where library module manual pages go
8014 set man3dir man3dir none
8015 eval $prefixit
8016 $cat <<EOM
8017
8018 $spackage has manual pages for many of the library modules.
8019 EOM
8020
8021 case "$nroff" in
8022 nroff)
8023         $cat <<'EOM'
8024 However, you don't have nroff, so they're probably useless to you.
8025 EOM
8026         case "$man3dir" in
8027         '') man3dir="none";;
8028         esac;;
8029 esac
8030
8031 case "$d_flexfnam" in
8032 undef)
8033         $cat <<'EOM'
8034 However, your system can't handle the long file names like File::Basename.3. 
8035 EOM
8036         case "$man3dir" in
8037         '') man3dir="none";;
8038         esac;;
8039 esac
8040
8041 echo "If you don't want the manual sources installed, answer 'none'."
8042 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8043 case "$man3dir" in
8044 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8045         if $test -d "$privlib/man/man3"; then
8046                 cat <<EOM >&4
8047
8048 WARNING:  Previous versions of perl installed man3 pages into
8049 $privlib/man/man3.  This version will suggest a 
8050 new default of $dflt.  
8051 EOM
8052                 tdflt=$dflt
8053                 dflt='n'
8054                 rp='Do you wish to preserve the old behavior?(y/n)'
8055                 . ./myread
8056                 case "$ans" in
8057                 y*) dflt="$privlib/man/man3" ;;
8058                 *)  dflt=$tdflt ;;
8059                 esac
8060     fi
8061         ;;
8062 *)      dflt="$man3dir" ;;
8063 esac
8064 case "$dflt" in
8065 ' ') dflt=none ;;
8066 esac
8067 echo " "
8068 fn=dn+~
8069 rp="Where do the $package library man pages (source) go?"
8070 . ./getfile
8071 man3dir="$ans"
8072 man3direxp="$ansexp"
8073 case "$man3dir" in
8074 '')     man3dir=' '
8075         installman3dir='';;
8076 esac
8077
8078 : Change installation prefix, if necessary.
8079 if $test X"$prefix" != X"$installprefix"; then
8080         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8081 else
8082         installman3dir="$man3direxp"
8083 fi
8084
8085 : What suffix to use on installed man pages
8086 case "$man3dir" in
8087 ' ')
8088         man3ext='0'
8089         ;;
8090 *)
8091         rp="What suffix should be used for the $package library man pages?"
8092         case "$man3ext" in
8093         '')     case "$man3dir" in
8094                 *3)  dflt=3 ;;
8095                 *3p) dflt=3p ;;
8096                 *3pm) dflt=3pm ;;
8097                 *l) dflt=l;;
8098                 *n) dflt=n;;
8099                 *o) dflt=o;;
8100                 *p) dflt=p;;
8101                 *C) dflt=C;;
8102                 *L) dflt=L;;
8103                 *L3) dflt=L3;;
8104                 *) dflt=3;;
8105                 esac
8106                 ;;
8107         *)      dflt="$man3ext";;
8108         esac
8109         . ./myread
8110         man3ext="$ans"
8111         ;;
8112 esac
8113
8114 : see if we have to deal with yellow pages, now NIS.
8115 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8116         if $test -f /usr/etc/nibindd; then
8117                 echo " "
8118                 echo "I'm fairly confident you're on a NeXT."
8119                 echo " "
8120                 rp='Do you get the hosts file via NetInfo?'
8121                 dflt=y
8122                 case "$hostcat" in
8123                 nidump*) ;;
8124                 '') ;;
8125                 *) dflt=n;;
8126                 esac
8127                 . ./myread
8128                 case "$ans" in
8129                 y*) hostcat='nidump hosts .';;
8130                 *)      case "$hostcat" in
8131                         nidump*) hostcat='';;
8132                         esac
8133                         ;;
8134                 esac
8135         fi
8136         case "$hostcat" in
8137         nidump*) ;;
8138         *)
8139                 case "$hostcat" in
8140                 *ypcat*) dflt=y;;
8141                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8142                                 dflt=y
8143                         else
8144                                 dflt=n
8145                         fi;;
8146                 *) dflt=n;;
8147                 esac
8148                 echo " "
8149                 rp='Are you getting the hosts file via yellow pages?'
8150                 . ./myread
8151                 case "$ans" in
8152                 y*) hostcat='ypcat hosts';;
8153                 *) hostcat='cat /etc/hosts';;
8154                 esac
8155                 ;;
8156         esac
8157 fi
8158 case "$hostcat" in
8159 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8160 esac
8161 case "$groupcat" in
8162 '') test -f /etc/group && groupcat='cat /etc/group';;
8163 esac
8164 case "$passcat" in
8165 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8166 esac
8167
8168 : now get the host name
8169 echo " "
8170 echo "Figuring out host name..." >&4
8171 case "$myhostname" in
8172 '') cont=true
8173         echo 'Maybe "hostname" will work...'
8174         if tans=`sh -c hostname 2>&1` ; then
8175                 myhostname=$tans
8176                 phostname=hostname
8177                 cont=''
8178         fi
8179         ;;
8180 *) cont='';;
8181 esac
8182 if $test "$cont"; then
8183         if ./xenix; then
8184                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8185                 if tans=`cat /etc/systemid 2>&1` ; then
8186                         myhostname=$tans
8187                         phostname='cat /etc/systemid'
8188                         echo "Whadyaknow.  Xenix always was a bit strange..."
8189                         cont=''
8190                 fi
8191         elif $test -r /etc/systemid; then
8192                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8193         fi
8194 fi
8195 if $test "$cont"; then
8196         echo 'No, maybe "uuname -l" will work...'
8197         if tans=`sh -c 'uuname -l' 2>&1` ; then
8198                 myhostname=$tans
8199                 phostname='uuname -l'
8200         else
8201                 echo 'Strange.  Maybe "uname -n" will work...'
8202                 if tans=`sh -c 'uname -n' 2>&1` ; then
8203                         myhostname=$tans
8204                         phostname='uname -n'
8205                 else
8206                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8207                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8208                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8209                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8210                         else
8211                                 case "$myhostname" in
8212                                 '') echo "Does this machine have an identity crisis or something?"
8213                                         phostname='';;
8214                                 *)
8215                                         echo "Well, you said $myhostname before..."
8216                                         phostname='echo $myhostname';;
8217                                 esac
8218                         fi
8219                 fi
8220         fi
8221 fi
8222 case "$myhostname" in
8223 '') myhostname=noname ;;
8224 esac
8225 : you do not want to know about this
8226 set $myhostname
8227 myhostname=$1
8228
8229 : verify guess
8230 if $test "$myhostname" ; then
8231         dflt=y
8232         rp='Your host name appears to be "'$myhostname'".'" Right?"
8233         . ./myread
8234         case "$ans" in
8235         y*) ;;
8236         *) myhostname='';;
8237         esac
8238 fi
8239
8240 : bad guess or no guess
8241 while $test "X$myhostname" = X ; do
8242         dflt=''
8243         rp="Please type the (one word) name of your host:"
8244         . ./myread
8245         myhostname="$ans"
8246 done
8247
8248 : translate upper to lower if necessary
8249 case "$myhostname" in
8250 *[A-Z]*)
8251         echo "(Normalizing case in your host name)"
8252         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8253         ;;
8254 esac
8255
8256 case "$myhostname" in
8257 *.*)
8258         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8259         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8260         echo "(Trimming domain name from host name--host name is now $myhostname)"
8261         ;;
8262 *) case "$mydomain" in
8263         '')
8264                 {
8265                         test "X$hostcat" = "Xypcat hosts" &&
8266                         ypmatch "$myhostname" hosts 2>/dev/null |\
8267                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8268                         $test -s hosts
8269                 } || {
8270                         test "X$hostcat" != "X" &&
8271                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8272                                         /[       ]$myhostname[  . ]/p" > hosts
8273                 }
8274                 tmp_re="[       . ]"
8275                 if $test -f hosts; then
8276                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8277                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8278                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8279                                 hosts | $sort | $uniq | \
8280                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8281                         case `$echo X$dflt` in
8282                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8283                                 dflt=.
8284                                 ;;
8285                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8286                                 ;;
8287                         esac
8288                 else
8289                         echo "(I cannot locate a hosts database anywhere)"
8290                         dflt=.
8291                 fi
8292                 case "$dflt" in
8293                 .)
8294                         tans=`./loc resolv.conf X /etc /usr/etc`
8295                         if $test -f "$tans"; then
8296                                 echo "(Attempting domain name extraction from $tans)"
8297                                 dflt=.`$sed -n -e 's/   / /g' \
8298                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8299                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8300                                 case "$dflt" in
8301                                 .) dflt=.`$sed -n -e 's/        / /g' \
8302                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8303                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8304                                         ;;
8305                                 esac
8306                         fi
8307                         ;;
8308                 esac
8309                 case "$dflt" in
8310                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8311                         dflt=.`sh -c domainname 2>/dev/null`
8312                         case "$dflt" in
8313                         '') dflt='.';;
8314                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8315                         esac
8316                         ;;
8317                 esac
8318                 case "$dflt$osname" in
8319                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8320                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8321                         ;;
8322                 esac
8323                 case "$dflt" in
8324                 .) echo "(Lost all hope -- silly guess then)"
8325                         dflt='.nonet'
8326                         ;;
8327                 esac
8328                 $rm -f hosts
8329                 ;;
8330         *) dflt="$mydomain";;
8331         esac;;
8332 esac
8333 echo " "
8334 rp="What is your domain name?"
8335 . ./myread
8336 tans="$ans"
8337 case "$ans" in
8338 '') ;;
8339 .*) ;;
8340 *) tans=".$tans";;
8341 esac
8342 mydomain="$tans"
8343
8344 : translate upper to lower if necessary
8345 case "$mydomain" in
8346 *[A-Z]*)
8347         echo "(Normalizing case in your domain name)"
8348         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8349         ;;
8350 esac
8351
8352 : a little sanity check here
8353 case "$phostname" in
8354 '') ;;
8355 *)
8356         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8357         $myhostname$mydomain|$myhostname) ;;
8358         *)
8359                 case "$phostname" in
8360                 sed*)
8361                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8362                         ;;
8363                 *)
8364                         echo "(That doesn't agree with your $phostname command, by the way.)"
8365                         ;;
8366                 esac
8367         ;;
8368         esac
8369         ;;
8370 esac
8371
8372 $cat <<EOM
8373
8374 I need to get your e-mail address in Internet format if possible, i.e.
8375 something like user@host.domain. Please answer accurately since I have
8376 no easy means to double check it. The default value provided below
8377 is most probably close to reality but may not be valid from outside
8378 your organization...
8379
8380 EOM
8381 cont=x
8382 while test "$cont"; do
8383         case "$cf_email" in
8384         '') dflt="$cf_by@$myhostname$mydomain";;
8385         *) dflt="$cf_email";;
8386         esac
8387         rp='What is your e-mail address?'
8388         . ./myread
8389         cf_email="$ans"
8390         case "$cf_email" in
8391         *@*.*) cont='' ;;
8392         *)
8393                 rp='Address does not look like an Internet one.  Use it anyway?'
8394                 case "$fastread" in
8395                 yes) dflt=y ;;
8396                 *) dflt=n ;;
8397                 esac
8398                 . ./myread
8399                 case "$ans" in
8400                 y*) cont='' ;;
8401                 *) echo " " ;;
8402                 esac
8403                 ;;
8404         esac
8405 done
8406
8407 $cat <<EOM
8408
8409 If you or somebody else will be maintaining perl at your site, please
8410 fill in the correct e-mail address here so that they may be contacted
8411 if necessary. Currently, the "perlbug" program included with perl
8412 will send mail to this address in addition to perlbug@perl.org. You may
8413 enter "none" for no administrator.
8414
8415 EOM
8416 case "$perladmin" in
8417 '') dflt="$cf_email";;
8418 *) dflt="$perladmin";;
8419 esac
8420 rp='Perl administrator e-mail address'
8421 . ./myread
8422 perladmin="$ans"
8423
8424 : determine whether to only install version-specific parts.
8425 echo " "
8426 $cat <<EOM
8427 Do you want to install only the version-specific parts of the perl
8428 distribution?  Usually you do *not* want to do this.
8429 EOM
8430 case "$versiononly" in
8431 "$define"|[Yy]*|true) dflt='y' ;;
8432 *) dflt='n';
8433 esac
8434 rp="Do you want to install only the version-specific parts of perl?"
8435 . ./myread
8436 case "$ans" in
8437 [yY]*)  val="$define";;
8438 *)      val="$undef" ;;
8439 esac
8440 set versiononly
8441 eval $setvar
8442
8443 case "$versiononly" in
8444 "$define") inc_version_list=''
8445            inc_version_list_init=0
8446            ;;
8447 esac
8448
8449 : figure out how to guarantee perl startup
8450 case "$startperl" in
8451 '')
8452         case "$sharpbang" in
8453         *!)
8454                 $cat <<EOH
8455
8456 I can use the #! construct to start perl on your system. This will
8457 make startup of perl scripts faster, but may cause problems if you
8458 want to share those scripts and perl is not in a standard place
8459 ($binexp/perl) on all your platforms. The alternative is to force
8460 a shell by starting the script with a single ':' character.
8461
8462 EOH
8463                 case "$versiononly" in
8464                 "$define")      dflt="$binexp/perl$version";;  
8465                 *)              dflt="$binexp/perl";;
8466                 esac
8467                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8468                 . ./myread
8469                 case "$ans" in
8470                 none)   startperl=": # use perl";;
8471                 *)      startperl="#!$ans"
8472                         if $test 30 -lt `echo "$ans" | wc -c`; then
8473                                 $cat >&4 <<EOM
8474
8475 WARNING:  Some systems limit the #! command to 32 characters.
8476 If you experience difficulty running Perl scripts with #!, try
8477 installing Perl in a directory with a shorter pathname.
8478
8479 EOM
8480                         fi ;;
8481                 esac
8482                 ;;
8483         *) startperl=": # use perl"
8484                 ;;
8485         esac
8486         ;;
8487 esac
8488 echo "I'll use $startperl to start perl scripts."
8489
8490 : figure best path for perl in scripts
8491 case "$perlpath" in
8492 '')
8493         case "$versiononly" in
8494         "$define")      perlpath="$binexp/perl$version";;
8495         *)              perlpath="$binexp/perl";;
8496         esac
8497         case "$startperl" in
8498         *!*) ;;
8499         *)
8500                 $cat <<EOH
8501
8502 I will use the "eval 'exec'" idiom to start Perl on your system.
8503 I can use the full path of your Perl binary for this purpose, but
8504 doing so may cause problems if you want to share those scripts and
8505 Perl is not always in a standard place ($binexp/perl).
8506
8507 EOH
8508                 dflt="$binexp/perl"
8509                 rp="What path shall I use in \"eval 'exec'\"?"
8510                 . ./myread
8511                 perlpath="$ans"
8512                 ;;
8513         esac
8514         ;;
8515 esac
8516 case "$startperl" in
8517 *!*)    ;;
8518 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8519 esac
8520
8521 : determine where public executable scripts go
8522 set scriptdir scriptdir
8523 eval $prefixit
8524 case "$scriptdir" in
8525 '')
8526         dflt="$bin"
8527         : guess some guesses
8528         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8529         $test -d /usr/share/bin     && dflt=/usr/share/bin
8530         $test -d /usr/local/script  && dflt=/usr/local/script
8531         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8532         $test -d $prefixexp/script  && dflt=$prefixexp/script
8533         set dflt
8534         eval $prefixup
8535         ;;
8536 *)  dflt="$scriptdir"
8537         ;;
8538 esac
8539 $cat <<EOM
8540  
8541 Some installations have a separate directory just for executable scripts so
8542 that they can mount it across multiple architectures but keep the scripts in
8543 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8544 Or you might just lump your scripts in with all your other executables.
8545  
8546 EOM
8547 fn=d~
8548 rp='Where do you keep publicly executable scripts?'
8549 . ./getfile
8550 if $test "X$ansexp" != "X$scriptdirexp"; then
8551         installscript=''
8552 fi
8553 scriptdir="$ans"
8554 scriptdirexp="$ansexp"
8555 : Change installation prefix, if necessary.
8556 if $test X"$prefix" != X"$installprefix"; then
8557         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8558 else
8559         installscript="$scriptdirexp"
8560 fi
8561
8562 : determine where add-on public executables go
8563 case "$sitebin" in
8564 '')     dflt=$siteprefix/bin ;;
8565 *)      dflt=$sitebin ;;
8566 esac
8567 fn=d~
8568 rp='Pathname where the add-on public executables should be installed?'
8569 . ./getfile
8570 sitebin="$ans"
8571 sitebinexp="$ansexp"
8572 : Change installation prefix, if necessary.
8573 if $test X"$prefix" != X"$installprefix"; then
8574         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8575 else
8576         installsitebin="$sitebinexp"
8577 fi
8578
8579 : determine where add-on html pages go
8580 : There is no standard location, so try to copy the previously-selected
8581 : directory structure for the core html pages.
8582 case "$sitehtml1dir" in
8583 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8584 *)     dflt=$sitehtml1dir ;;
8585 esac
8586 case "$dflt" in
8587 ''|' ') dflt=none ;;
8588 esac
8589 fn=dn+~
8590 rp='Pathname where the site-specific html pages should be installed?'
8591 . ./getfile
8592 sitehtml1dir="$ans"
8593 sitehtml1direxp="$ansexp"
8594 : Change installation prefix, if necessary.
8595 if $test X"$prefix" != X"$installprefix"; then
8596         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8597 else
8598         installsitehtml1dir="$sitehtml1direxp"
8599 fi
8600
8601 : determine where add-on library html pages go
8602 : There is no standard location, so try to copy the previously-selected
8603 : directory structure for the core html pages.
8604 case "$sitehtml3dir" in
8605 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8606 *)     dflt=$sitehtml3dir ;;
8607 esac
8608 case "$dflt" in
8609 ''|' ') dflt=none ;;
8610 esac
8611 fn=dn+~
8612 rp='Pathname where the site-specific library html pages should be installed?'
8613 . ./getfile
8614 sitehtml3dir="$ans"
8615 sitehtml3direxp="$ansexp"
8616 : Change installation prefix, if necessary.
8617 if $test X"$prefix" != X"$installprefix"; then
8618         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8619 else
8620         installsitehtml3dir="$sitehtml3direxp"
8621 fi
8622
8623 : determine where add-on manual pages go
8624 case "$siteman1dir" in
8625 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8626 *)      dflt=$siteman1dir ;;
8627 esac
8628 case "$dflt" in
8629 ''|' ') dflt=none ;;
8630 esac
8631 fn=dn+~
8632 rp='Pathname where the site-specific manual pages should be installed?'
8633 . ./getfile
8634 siteman1dir="$ans"
8635 siteman1direxp="$ansexp"
8636 : Change installation prefix, if necessary.
8637 if $test X"$prefix" != X"$installprefix"; then
8638         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8639 else
8640         installsiteman1dir="$siteman1direxp"
8641 fi
8642
8643 : determine where add-on library man pages go
8644 case "$siteman3dir" in
8645 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8646 *)      dflt=$siteman3dir ;;
8647 esac
8648 case "$dflt" in
8649 ''|' ') dflt=none ;;
8650 esac
8651 fn=dn+~
8652 rp='Pathname where the site-specific library manual pages should be installed?'
8653 . ./getfile
8654 siteman3dir="$ans"
8655 siteman3direxp="$ansexp"
8656 : Change installation prefix, if necessary.
8657 if $test X"$prefix" != X"$installprefix"; then
8658         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8659 else
8660         installsiteman3dir="$siteman3direxp"
8661 fi
8662
8663 : determine where add-on public executable scripts go
8664 case "$sitescript" in
8665 '')     dflt=$siteprefix/script
8666         $test -d $dflt || dflt=$sitebin ;;
8667 *)  dflt="$sitescript" ;;
8668 esac
8669 fn=d~+
8670 rp='Pathname where add-on public executable scripts should be installed?'
8671 . ./getfile
8672 sitescript="$ans"
8673 sitescriptexp="$ansexp"
8674 : Change installation prefix, if necessary.
8675 if $test X"$prefix" != X"$installprefix"; then
8676         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8677 else
8678         installsitescript="$sitescriptexp"
8679 fi
8680
8681 case "$usefaststdio" in
8682 $define|true|[yY]*|'')
8683         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8684         case "$xversion" in
8685         [68])   dflt='y' ;;
8686         *)      dflt='n' ;;
8687         esac
8688         ;;
8689 *) dflt='n';;
8690 esac
8691 cat <<EOM
8692
8693 Perl can be built to use 'fast stdio', which means using the stdio
8694 library but also directly manipulating the stdio buffers to enable
8695 faster I/O.  Using stdio is better for backward compatibility (especially
8696 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8697 interface has been preferred instead of stdio.
8698
8699 If this doesn't make any sense to you, just accept the default '$dflt'.
8700 EOM
8701 rp='Use the "fast stdio" if available?'
8702 . ./myread
8703 case "$ans" in
8704 y|Y)    val="$define" ;;     
8705 *)      val="$undef" ;;
8706 esac
8707 set usefaststdio
8708 eval $setvar
8709
8710
8711 : define an is-a-typedef? function
8712 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8713 case "$inclist" in
8714 "") inclist="sys/types.h";;
8715 esac;
8716 eval "varval=\$$var";
8717 case "$varval" in
8718 "")
8719         $rm -f temp.c;
8720         for inc in $inclist; do
8721                 echo "#include <$inc>" >>temp.c;
8722         done;
8723         echo "#ifdef $type" >> temp.c;
8724         echo "printf(\"We have $type\");" >> temp.c;
8725         echo "#endif" >> temp.c;
8726         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8727         if $contains $type temp.E >/dev/null 2>&1; then
8728                 eval "$var=\$type";
8729         else
8730                 eval "$var=\$def";
8731         fi;
8732         $rm -f temp.?;;
8733 *) eval "$var=\$varval";;
8734 esac'
8735
8736 : define an is-a-typedef? function that prompts if the type is not available.
8737 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8738 case "$inclist" in
8739 "") inclist="sys/types.h";;
8740 esac;
8741 eval "varval=\$$var";
8742 case "$varval" in
8743 "")
8744         $rm -f temp.c;
8745         for inc in $inclist; do
8746                 echo "#include <$inc>" >>temp.c;
8747         done;
8748         echo "#ifdef $type" >> temp.c;
8749         echo "printf(\"We have $type\");" >> temp.c;
8750         echo "#endif" >> temp.c;
8751         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8752         echo " " ;
8753         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8754         if $contains $type temp.E >/dev/null 2>&1; then
8755                 echo "$type found." >&4;
8756                 eval "$var=\$type";
8757         else
8758                 echo "$type NOT found." >&4;
8759                 dflt="$def";
8760                 . ./myread ;
8761                 eval "$var=\$ans";
8762         fi;
8763         $rm -f temp.?;;
8764 *) eval "$var=\$varval";;
8765 esac'
8766
8767 : see what type lseek is declared as in the kernel
8768 rp="What is the type used for lseek's offset on this system?"
8769 set off_t lseektype long stdio.h sys/types.h
8770 eval $typedef_ask
8771
8772 echo " "
8773 echo "Checking to see how big your file offsets are..." >&4
8774 $cat >try.c <<EOCP
8775 #include <sys/types.h>
8776 #include <stdio.h>
8777 int main()
8778 {
8779     printf("%d\n", (int)sizeof($lseektype));
8780     return(0); 
8781 }
8782 EOCP
8783 set try
8784 if eval $compile_ok; then
8785         lseeksize=`$run ./try`
8786         echo "Your file offsets are $lseeksize bytes long."
8787 else
8788         dflt=$longsize
8789         echo " "
8790         echo "(I can't seem to compile the test program.  Guessing...)"
8791         rp="What is the size of your file offsets (in bytes)?"
8792         . ./myread
8793         lseeksize="$ans"
8794 fi
8795 $rm -f try.c try
8796
8797 : see what type file positions are declared as in the library
8798 rp="What is the type for file position used by fsetpos()?"
8799 set fpos_t fpostype long stdio.h sys/types.h
8800 eval $typedef_ask
8801
8802 echo " "
8803 case "$fpostype" in
8804 *_t) zzz="$fpostype"    ;;
8805 *)   zzz="fpos_t"       ;;
8806 esac
8807 echo "Checking the size of $zzz..." >&4 
8808 cat > try.c <<EOCP
8809 #include <sys/types.h>
8810 #include <stdio.h>
8811 #$i_stdlib I_STDLIB
8812 #ifdef I_STDLIB
8813 #include <stdlib.h>
8814 #endif
8815 int main() {
8816     printf("%d\n", (int)sizeof($fpostype));
8817     exit(0);
8818 }
8819 EOCP
8820 set try
8821 if eval $compile_ok; then
8822         yyy=`$run ./try`
8823         case "$yyy" in
8824         '')     fpossize=4
8825                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8826                 ;;
8827         *)      fpossize=$yyy
8828                 echo "Your $zzz is $fpossize bytes long."
8829                 ;;
8830         esac
8831 else
8832         dflt="$longsize"
8833         echo " " >&4
8834         echo "(I can't compile the test program.  Guessing...)" >&4
8835         rp="What is the size of your file positions (in bytes)?"
8836         . ./myread
8837         fpossize="$ans"
8838 fi
8839
8840 # Backward compatibility (uselfs is deprecated).
8841 case "$uselfs" in
8842 "$define"|true|[yY]*)
8843         cat <<EOM >&4
8844
8845 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8846 EOM
8847         uselargefiles="$define"
8848         ;;
8849 esac                          
8850
8851 case "$lseeksize:$fpossize" in
8852 8:8) cat <<EOM
8853
8854 You can have files larger than 2 gigabytes.
8855 EOM
8856    val="$define" ;;
8857 *)    case "$uselargefiles" in
8858    "$undef"|false|[nN]*) dflt='n' ;;
8859    *)   dflt='y' ;;
8860    esac
8861    cat <<EOM
8862
8863 Perl can be built to understand large files (files larger than 2 gigabytes)
8864 on some systems.  To do so, Configure can be run with -Duselargefiles.
8865
8866 If this doesn't make any sense to you, just accept the default '$dflt'.
8867 EOM
8868    rp='Try to understand large files, if available?'
8869    . ./myread
8870    case "$ans" in
8871    y|Y)         val="$define" ;;
8872    *)           val="$undef"  ;;
8873    esac
8874    ;;
8875 esac
8876 set uselargefiles
8877 eval $setvar
8878 : Look for a hint-file generated 'call-back-unit'.  If the
8879 : user has specified that a large files perl is to be built,
8880 : we may need to set or change some other defaults.
8881 if $test -f uselargefiles.cbu; then
8882         echo "Your platform has some specific hints regarding large file builds, using them..."
8883         . ./uselargefiles.cbu
8884 fi
8885 case "$uselargefiles" in
8886 "$define")
8887         if $test -f uselargefiles.cbu; then
8888                 echo " "
8889                 echo "Rechecking to see how big your file offsets are..." >&4
8890                 $cat >try.c <<EOCP
8891 #include <sys/types.h>
8892 #include <stdio.h>
8893 int main()
8894 {
8895     printf("%d\n", (int)sizeof($lseektype));
8896     return(0); 
8897 }
8898 EOCP
8899                 set try
8900                 if eval $compile_ok; then
8901                         lseeksize=`$run ./try`
8902                         $echo "Your file offsets are now $lseeksize bytes long."
8903                 else
8904                         dflt="$lseeksize"
8905                         echo " "
8906                         echo "(I can't seem to compile the test program.  Guessing...)"
8907                         rp="What is the size of your file offsets (in bytes)?"
8908                         . ./myread
8909                         lseeksize="$ans"
8910                 fi
8911                 case "$fpostype" in
8912                 *_t) zzz="$fpostype"    ;;
8913                 *)   zzz="fpos_t"       ;;
8914                 esac
8915                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8916                 $cat > try.c <<EOCP
8917 #include <sys/types.h>
8918 #include <stdio.h>
8919 #$i_stdlib I_STDLIB
8920 #ifdef I_STDLIB
8921 #include <stdlib.h>
8922 #endif
8923 int main() {
8924     printf("%d\n", (int)sizeof($fpostype));
8925     return(0);
8926 }
8927 EOCP
8928                 set try
8929                 if eval $compile_ok; then
8930                         yyy=`$run ./try`
8931                         dflt="$lseeksize"
8932                         case "$yyy" in
8933                         '')     echo " "
8934                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8935                                 ;;
8936                         *)      fpossize=$yyy
8937                                 echo " $fpossize bytes." >&4
8938                                 ;;
8939                         esac
8940                 else
8941                         dflt="$fpossize"
8942                         echo " "
8943                         echo "(I can't compile the test program.  Guessing...)" >&4
8944                         rp="What is the size of your file positions (in bytes)?"
8945                         . ./myread
8946                         fpossize="$ans"
8947                 fi
8948                 $rm -f try.c try
8949         fi
8950         ;;
8951 esac
8952
8953 case "$vendorprefix" in
8954 '')     d_vendorbin="$undef"
8955         vendorbin=''
8956         vendorbinexp=''
8957         ;;
8958 *)      d_vendorbin="$define"
8959         : determine where vendor-supplied executables go.
8960         case "$vendorbin" in
8961         '') dflt=$vendorprefix/bin ;;
8962         *)      dflt="$vendorbin" ;;
8963         esac
8964         fn=d~+
8965         rp='Pathname for the vendor-supplied executables directory?'
8966         . ./getfile
8967         vendorbin="$ans"
8968         vendorbinexp="$ansexp"
8969         ;;
8970 esac
8971 : Change installation prefix, if necessary.
8972 if $test X"$prefix" != X"$installprefix"; then
8973         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8974 else
8975         installvendorbin="$vendorbinexp"
8976 fi
8977
8978 case "$vendorprefix" in
8979 '')     vendorhtml1dir=''
8980         vendorhtml1direxp=''
8981         ;;
8982 *)      : determine where vendor-supplied html pages go.
8983         : There is no standard location, so try to copy the previously-selected
8984         : directory structure for the core html pages.
8985         : XXX Better default suggestions would be welcome.
8986         case "$vendorhtml1dir" in
8987         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8988         *)      dflt=$vendorhtml1dir ;;
8989         esac
8990         case "$dflt" in
8991         ''|' ') dflt=none ;;
8992         esac
8993         fn=dn+~
8994         rp='Pathname for the vendor-supplied html pages?'
8995         . ./getfile
8996         vendorhtml1dir="$ans"
8997         vendorhtml1direxp="$ansexp"
8998         ;;
8999 esac
9000 : Use ' ' for none so value is preserved next time through Configure
9001 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9002 : Change installation prefix, if necessary.
9003 if $test X"$prefix" != X"$installprefix"; then
9004         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
9005 else
9006         installvendorhtml1dir="$vendorhtml1direxp"
9007 fi
9008
9009 case "$vendorprefix" in
9010 '')     vendorhtml3dir=''
9011         vendorhtml3direxp=''
9012         ;;
9013 *)      : determine where vendor-supplied module html pages go.
9014         : There is no standard location, so try to copy the previously-selected
9015         : directory structure for the core html pages.
9016         : XXX Better default suggestions would be welcome.
9017         case "$vendorhtml3dir" in
9018         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9019         *)      dflt=$vendorhtml3dir ;;
9020         esac
9021         case "$dflt" in
9022         ''|' ') dflt=none ;;
9023         esac
9024         fn=dn+~
9025         rp='Pathname for the vendor-supplied html pages?'
9026         . ./getfile
9027         vendorhtml3dir="$ans"
9028         vendorhtml3direxp="$ansexp"
9029         ;;
9030 esac
9031 : Use ' ' for none so value is preserved next time through Configure
9032 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9033 : Change installation prefix, if necessary.
9034 if $test X"$prefix" != X"$installprefix"; then
9035         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9036 else
9037         installvendorhtml3dir="$vendorhtml3direxp"
9038 fi
9039
9040 case "$vendorprefix" in
9041 '')     vendorman1dir=''
9042         vendorman1direxp=''
9043         ;;
9044 *)      : determine where vendor-supplied manual pages go.
9045         case "$vendorman1dir" in
9046         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9047         *)      dflt=$vendorman1dir ;;
9048         esac
9049         case "$dflt" in
9050         ''|' ') dflt=none ;;
9051         esac
9052         fn=nd~+
9053         rp='Pathname for the vendor-supplied manual section 1 pages?'
9054         . ./getfile
9055         vendorman1dir="$ans"
9056         vendorman1direxp="$ansexp"
9057         ;;
9058 esac
9059 : Use ' ' for none so value is preserved next time through Configure
9060 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9061 : Change installation prefix, if necessary.
9062 if $test X"$prefix" != X"$installprefix"; then
9063         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9064 else
9065         installvendorman1dir="$vendorman1direxp"
9066 fi
9067
9068 case "$vendorprefix" in
9069 '')     vendorman3dir=''
9070         vendorman3direxp=''
9071         ;;
9072 *)      : determine where vendor-supplied module manual pages go.
9073         case "$vendorman3dir" in
9074         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9075         *)      dflt=$vendorman3dir ;;
9076         esac
9077         case "$dflt" in
9078         ''|' ') dflt=none ;;
9079         esac
9080         fn=nd~+
9081         rp='Pathname for the vendor-supplied manual section 3 pages?'
9082         . ./getfile
9083         vendorman3dir="$ans"
9084         vendorman3direxp="$ansexp"
9085         ;;
9086 esac
9087 : Use ' ' for none so value is preserved next time through Configure
9088 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9089 : Change installation prefix, if necessary.
9090 if $test X"$prefix" != X"$installprefix"; then
9091         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9092 else
9093         installvendorman3dir="$vendorman3direxp"
9094 fi
9095
9096 case "$vendorprefix" in
9097 '')     d_vendorscript="$undef"
9098         vendorscript=''
9099         vendorscriptexp=''
9100         ;;
9101 *)      d_vendorscript="$define"
9102         : determine where vendor-supplied scripts go.
9103         case "$vendorscript" in
9104         '')     dflt=$vendorprefix/script
9105                 $test -d $dflt || dflt=$vendorbin ;;
9106         *)  dflt="$vendorscript" ;;
9107         esac
9108         $cat <<EOM
9109
9110 The installation process will create a directory for 
9111 vendor-supplied scripts.
9112
9113 EOM
9114         fn=d~+
9115         rp='Pathname for the vendor-supplied scripts directory?'
9116         . ./getfile
9117         vendorscript="$ans"
9118         vendorscriptexp="$ansexp"
9119         ;;
9120 esac
9121 : Change installation prefix, if necessary.
9122 if $test X"$prefix" != X"$installprefix"; then
9123         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9124 else
9125         installvendorscript="$vendorscriptexp"
9126 fi
9127
9128 : see if qgcvt exists
9129 set qgcvt d_qgcvt
9130 eval $inlibc
9131
9132 echo " "
9133
9134 if $test X"$d_longdbl" = X"$define"; then
9135
9136 echo "Checking how to print long doubles..." >&4
9137
9138 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9139         $cat >try.c <<'EOCP'
9140 #include <sys/types.h>
9141 #include <stdio.h>
9142 int main() {
9143   double d = 123.456;
9144   printf("%.3f\n", d);
9145 }
9146 EOCP
9147         set try
9148         if eval $compile; then
9149                 yyy=`$run ./try`
9150                 case "$yyy" in
9151                 123.456)
9152                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9153                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9154                         echo "We will use %f."
9155                         ;;
9156                 esac
9157         fi
9158 fi
9159
9160 if $test X"$sPRIfldbl" = X; then
9161         $cat >try.c <<'EOCP'
9162 #include <sys/types.h>
9163 #include <stdio.h>
9164 int main() {
9165   long double d = 123.456;
9166   printf("%.3Lf\n", d);
9167 }
9168 EOCP
9169         set try
9170         if eval $compile; then
9171                 yyy=`$run ./try`
9172                 case "$yyy" in
9173                 123.456)
9174                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9175                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9176                         echo "We will use %Lf."
9177                         ;;
9178                 esac
9179         fi
9180 fi
9181
9182 if $test X"$sPRIfldbl" = X; then
9183         $cat >try.c <<'EOCP'
9184 #include <sys/types.h>
9185 #include <stdio.h>
9186 int main() {
9187   long double d = 123.456;
9188   printf("%.3llf\n", d);
9189 }
9190 EOCP
9191         set try
9192         if eval $compile; then
9193                 yyy=`$run ./try`
9194                 case "$yyy" in
9195                 123.456)
9196                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9197                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9198                         echo "We will use %llf."
9199                         ;;
9200                 esac
9201         fi
9202 fi
9203
9204 if $test X"$sPRIfldbl" = X; then
9205         $cat >try.c <<'EOCP'
9206 #include <sys/types.h>
9207 #include <stdio.h>
9208 int main() {
9209   long double d = 123.456;
9210   printf("%.3lf\n", d);
9211 }
9212 EOCP
9213         set try
9214         if eval $compile; then
9215                 yyy=`$run ./try`
9216                 case "$yyy" in
9217                 123.456)
9218                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9219                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9220                         echo "We will use %lf."
9221                         ;;
9222                 esac
9223         fi
9224 fi
9225
9226 if $test X"$sPRIfldbl" = X; then
9227         echo "Cannot figure out how to print long doubles." >&4
9228 else
9229         sSCNfldbl=$sPRIfldbl    # expect consistency
9230 fi
9231
9232 $rm -f try try.*
9233
9234 fi # d_longdbl
9235
9236 case "$sPRIfldbl" in
9237 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9238         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9239         d_SCNfldbl="$undef";
9240         ;;
9241 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9242         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9243         d_SCNfldbl="$define";
9244         ;;
9245 esac
9246
9247 : Check how to convert floats to strings.
9248
9249 if test "X$d_Gconvert" = X; then
9250
9251 echo " "
9252 echo "Checking for an efficient way to convert floats to strings."
9253 echo " " > try.c
9254 case "$uselongdouble" in
9255 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9256 esac
9257 case "$d_longdbl" in
9258 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9259 esac
9260 case "$d_PRIgldbl" in
9261 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9262 esac
9263 $cat >>try.c <<EOP
9264 #ifdef TRY_gconvert
9265 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9266 char *myname = "gconvert";
9267 #endif
9268 #ifdef TRY_gcvt
9269 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9270 char *myname = "gcvt";
9271 #endif
9272 #ifdef TRY_qgcvt
9273 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9274 char *myname = "qgcvt";
9275 #define DOUBLETYPE long double
9276 #endif
9277 #ifdef TRY_sprintf
9278 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9279 #ifdef HAS_PRIgldbl
9280 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9281 #else
9282 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9283 #endif
9284 #else
9285 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9286 #endif
9287 char *myname = "sprintf";
9288 #endif
9289
9290 #ifndef DOUBLETYPE
9291 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9292 #define DOUBLETYPE long double
9293 #else
9294 #define DOUBLETYPE double
9295 #endif
9296 #endif
9297
9298 #include <stdio.h>
9299
9300 #define I_STDLIB $i_stdlib
9301 #ifdef I_STDLIB
9302 #include <stdlib.h>
9303 #endif
9304
9305 int
9306 checkit(expect, got)
9307 char *expect;
9308 char *got;
9309 {
9310     if (strcmp(expect, got)) {
9311                 printf("%s oddity:  Expected %s, got %s\n",
9312                         myname, expect, got);
9313                 exit(1);
9314         }
9315 }
9316
9317 int main()
9318
9319         char buf[64]; 
9320         buf[63] = '\0';
9321
9322         /* This must be 1st test on (which?) platform */
9323         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9324         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9325         checkit("0.1", buf);
9326
9327         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9328         checkit("0.01", buf);
9329
9330         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9331         checkit("0.001", buf);
9332
9333         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9334         checkit("0.0001", buf);
9335
9336         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9337         if (strlen(buf) > 5)
9338             checkit("9e-005", buf); /* for Microsoft ?? */
9339         else
9340             checkit("9e-05", buf);
9341
9342         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9343         checkit("1", buf);
9344
9345         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9346         checkit("1.1", buf);
9347
9348         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9349         checkit("1.01", buf);
9350
9351         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9352         checkit("1.001", buf);
9353
9354         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9355         checkit("1.0001", buf);
9356
9357         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9358         checkit("1.00001", buf);
9359
9360         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9361         checkit("1.000001", buf);
9362
9363         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9364         checkit("0", buf);
9365
9366         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9367         checkit("-1", buf);
9368
9369         /* Some Linux gcvt's give 1.e+5 here. */
9370         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9371         checkit("100000", buf);
9372         
9373         /* Some Linux gcvt's give -1.e+5 here. */
9374         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9375         checkit("-100000", buf);
9376
9377         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9378         checkit("123.456", buf);
9379
9380         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9381         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9382         /* 34 should be enough to scare even long double
9383          * places into using the e notation. */
9384         if (strlen(buf) > 5)
9385             checkit("1e+034", buf); /* for Microsoft */
9386         else
9387             checkit("1e+34", buf);
9388
9389         /* For Perl, if you add additional tests here, also add them to
9390          * t/base/num.t for benefit of platforms not using Configure or
9391          * overriding d_Gconvert */
9392
9393         exit(0);
9394 }
9395 EOP
9396 : first add preferred functions to our list
9397 xxx_list=""
9398 for xxx_convert in $gconvert_preference; do
9399     case $xxx_convert in
9400     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9401     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9402     esac 
9403 done
9404 : then add any others
9405 for xxx_convert in gconvert gcvt sprintf; do
9406     case "$xxx_list" in
9407     *$xxx_convert*) ;;
9408     *) xxx_list="$xxx_list $xxx_convert" ;;
9409     esac 
9410 done
9411
9412 case "$d_longdbl$uselongdouble" in
9413 "$define$define")
9414     : again, add prefered functions to our list first
9415     xxx_ld_list=""
9416     for xxx_convert in $gconvert_ld_preference; do
9417         case $xxx_convert in
9418         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9419         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9420         esac
9421     done
9422     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9423     for xxx_convert in qgcvt sprintf $xxx_list; do
9424         case "$xxx_ld_list" in
9425         $xxx_convert*|*" $xxx_convert"*) ;;
9426         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9427         esac
9428     done
9429     : if sprintf cannot do long doubles, move it to the end
9430     if test "$d_PRIgldbl" != "$define"; then
9431         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9432     fi
9433     : if no qgcvt, remove it
9434     if test "$d_qgcvt" != "$define"; then
9435         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9436     fi
9437     : use the ld_list
9438     xxx_list="$xxx_ld_list"
9439     ;;
9440 esac
9441
9442 for xxx_convert in $xxx_list; do
9443         echo "Trying $xxx_convert..."
9444         $rm -f try try$_o
9445         set try -DTRY_$xxx_convert
9446         if eval $compile; then
9447                 echo "$xxx_convert() found." >&4
9448                 if $run ./try; then
9449                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9450                         break;
9451                 else
9452                         echo "...But $xxx_convert didn't work as I expected."
9453                         xxx_convert=''
9454                 fi
9455         else
9456                 echo "$xxx_convert NOT found." >&4
9457         fi
9458 done
9459
9460 if test X$xxx_convert = X; then
9461     echo "*** WHOA THERE!!! ***" >&4
9462     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9463     xxx_convert=sprintf
9464 fi
9465
9466 case "$xxx_convert" in
9467 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9468 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9469 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9470 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9471    "$define$define$define")
9472       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9473    "$define$define$undef")
9474       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9475    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9476    esac
9477    ;;  
9478 esac
9479
9480 fi
9481
9482 : see if _fwalk exists
9483 set fwalk d__fwalk
9484 eval $inlibc
9485
9486 : Initialize h_fcntl
9487 h_fcntl=false
9488
9489 : Initialize h_sysfile
9490 h_sysfile=false
9491
9492 : access call always available on UNIX
9493 set access d_access
9494 eval $inlibc
9495
9496 : locate the flags for 'access()'
9497 case "$d_access" in
9498 "$define")
9499         echo " "
9500         $cat >access.c <<EOCP
9501 #include <sys/types.h>
9502 #ifdef I_FCNTL
9503 #include <fcntl.h>
9504 #endif
9505 #ifdef I_SYS_FILE
9506 #include <sys/file.h>
9507 #endif
9508 #ifdef I_UNISTD
9509 #include <unistd.h>
9510 #endif
9511 #$i_stdlib I_STDLIB
9512 #ifdef I_STDLIB
9513 #include <stdlib.h>
9514 #endif
9515 int main() {
9516         exit(R_OK);
9517 }
9518 EOCP
9519         : check sys/file.h first, no particular reason here
9520         if $test `./findhdr sys/file.h` && \
9521                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9522                 h_sysfile=true;
9523                 echo "<sys/file.h> defines the *_OK access constants." >&4
9524         elif $test `./findhdr fcntl.h` && \
9525                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9526                 h_fcntl=true;
9527                 echo "<fcntl.h> defines the *_OK access constants." >&4
9528         elif $test `./findhdr unistd.h` && \
9529                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9530                 echo "<unistd.h> defines the *_OK access constants." >&4
9531         else
9532                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9533         fi
9534         ;;
9535 esac
9536 $rm -f access*
9537
9538 : see if accessx exists
9539 set accessx d_accessx
9540 eval $inlibc
9541
9542 : see if aintl exists
9543 set aintl d_aintl
9544 eval $inlibc
9545
9546 : see if alarm exists
9547 set alarm d_alarm
9548 eval $inlibc
9549
9550 : see if POSIX threads are available
9551 set pthread.h i_pthread
9552 eval $inhdr
9553
9554 : define a fucntion to check prototypes
9555 $cat > protochk <<EOSH
9556 $startsh
9557 cc="$cc"
9558 optimize="$optimize"
9559 ccflags="$ccflags"
9560 prototype="$prototype"
9561 define="$define"
9562 rm=$rm
9563 usethreads=$usethreads
9564 i_pthread=$i_pthread
9565 pthread_h_first=$pthread_h_first
9566 EOSH
9567
9568 $cat >> protochk <<'EOSH'
9569
9570 $rm -f try.c
9571 foo="$1"
9572 shift
9573 while test $# -ge 2; do
9574         case "$1" in
9575                 $define) echo "#include <$2>" >> try.c ;;
9576                 literal) echo "$2" >> try.c ;;
9577         esac
9578     # Extra magic for the benefit of systems that need pthread.h
9579     # to be included early to correctly detect threadsafe functions.
9580     # Such functions must guarantee themselves, though, that the usethreads
9581     # and i_pthread have been defined, before calling protochk.
9582     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9583         echo "#include <pthread.h>" >> try.c
9584         pthread_h_done=yes
9585     fi
9586     shift 2
9587 done
9588 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9589 cat >> try.c <<'EOCP'
9590 #ifdef CAN_PROTOTYPE
9591 #define _(args) args
9592 #else
9593 #define _(args) ()
9594 #endif
9595 EOCP
9596 echo "$foo" >> try.c
9597 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9598 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9599 status=$?
9600 $rm -f try.[co]
9601 exit $status
9602 EOSH
9603 chmod +x protochk
9604 $eunicefix protochk
9605
9606 hasproto='varname=$1; func=$2; shift; shift;
9607 while $test $# -ge 2; do
9608         case "$1" in
9609         $define) echo "#include <$2>";;
9610         esac ;
9611     shift 2;
9612 done > try.c;
9613 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9614 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9615         echo "$func() prototype found.";
9616         val="$define";
9617 else
9618         echo "$func() prototype NOT found.";
9619         val="$undef";
9620 fi;
9621 set $varname;
9622 eval $setvar;
9623 $rm -f try.c tryout.c'
9624
9625 : see if sys/types.h has to be included
9626 set sys/types.h i_systypes
9627 eval $inhdr
9628
9629 : see if sys/select.h has to be included
9630 set sys/select.h i_sysselct
9631 eval $inhdr
9632
9633 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9634 while $test $# -ge 2; do
9635         case "$1" in
9636         $define) echo "#include <$2>";;
9637         esac ;
9638     shift 2;
9639 done > try.c;
9640 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9641 set try;
9642 if eval $compile; then
9643         val="$define";
9644 else
9645         val="$undef";
9646 fi;
9647 set $varname;
9648 eval $setvar;
9649 $rm -f try.c try.o'
9650
9651 : see if we should include time.h, sys/time.h, or both
9652 echo " "
9653 if test "X$timeincl" = X; then
9654         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9655         $echo $n "I'm now running the test program...$c"
9656         $cat >try.c <<EOCP
9657 #include <sys/types.h>
9658 #ifdef I_TIME
9659 #include <time.h>
9660 #endif
9661 #ifdef I_SYSTIME
9662 #ifdef SYSTIMEKERNEL
9663 #define KERNEL
9664 #endif
9665 #include <sys/time.h>
9666 #endif
9667 #ifdef I_SYSSELECT
9668 #include <sys/select.h>
9669 #endif
9670 #$i_stdlib I_STDLIB
9671 #ifdef I_STDLIB
9672 #include <stdlib.h>
9673 #endif
9674 int main()
9675 {
9676         struct tm foo;
9677 #ifdef S_TIMEVAL
9678         struct timeval bar;
9679 #endif
9680 #ifdef S_TIMEZONE
9681         struct timezone tzp;
9682 #endif
9683         if (foo.tm_sec == foo.tm_sec)
9684                 exit(0);
9685 #ifdef S_TIMEVAL
9686         if (bar.tv_sec == bar.tv_sec)
9687                 exit(0);
9688 #endif
9689         exit(1);
9690 }
9691 EOCP
9692         flags=''
9693         for s_timezone in '-DS_TIMEZONE' ''; do
9694         sysselect=''
9695         for s_timeval in '-DS_TIMEVAL' ''; do
9696         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9697         for i_time in '' '-DI_TIME'; do
9698         for i_systime in '-DI_SYSTIME' ''; do
9699                 case "$flags" in
9700                 '') $echo $n ".$c"
9701                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9702                         if eval $compile; then
9703                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9704                                 shift
9705                                 flags="$*"
9706                                 echo " "
9707                                 $echo $n "Succeeded with $flags$c"
9708                         fi
9709                         ;;
9710                 esac
9711         done
9712         done
9713         done
9714         done
9715         done
9716         timeincl=''
9717         echo " "
9718         case "$flags" in
9719         *SYSTIMEKERNEL*) i_systimek="$define"
9720                 timeincl=`./findhdr sys/time.h`
9721                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9722         *) i_systimek="$undef";;
9723         esac
9724         case "$flags" in
9725         *I_TIME*) i_time="$define"
9726                 timeincl=`./findhdr time.h`" $timeincl"
9727                 echo "We'll include <time.h>." >&4;;
9728         *) i_time="$undef";;
9729         esac
9730         case "$flags" in
9731         *I_SYSTIME*) i_systime="$define"
9732                 timeincl=`./findhdr sys/time.h`" $timeincl"
9733                 echo "We'll include <sys/time.h>." >&4;;
9734         *) i_systime="$undef";;
9735         esac
9736         $rm -f try.c try
9737 fi
9738 : see if struct tm knows about tm_zone
9739 case "$i_systime$i_time" in
9740 *$define*) 
9741         echo " "
9742         echo "Checking to see if your struct tm has tm_zone field..." >&4
9743         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9744         eval $hasfield
9745         ;;
9746 *)      val="$undef"
9747         set d_tm_tm_zone
9748         eval $setvar
9749         ;;
9750 esac
9751 case "$d_tm_tm_zone" in
9752 "$define")      echo "Yes, it does."   ;;
9753 *)              echo "No, it doesn't." ;;
9754 esac
9755 : see if struct tm knows about tm_gmtoff
9756 case "$i_systime$i_time" in
9757 *$define*) 
9758         echo " "
9759         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9760         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9761         eval $hasfield
9762         ;;
9763 *)      val="$undef"
9764         set d_tm_tm_gmtoff
9765         eval $setvar
9766         ;;
9767 esac
9768 case "$d_tm_tm_gmtoff" in
9769 "$define")      echo "Yes, it does."   ;;
9770 *)              echo "No, it doesn't." ;;
9771 esac
9772
9773 : see if asctime_r exists
9774 set asctime_r d_asctime_r
9775 eval $inlibc
9776 case "$d_asctime_r" in
9777 "$define")
9778         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9779         case "$d_asctime_r_proto:$usethreads" in
9780         ":define")      d_asctime_r_proto=define
9781                 set d_asctime_r_proto asctime_r $hdrs
9782                 eval $hasproto ;;
9783         *)      ;;
9784         esac
9785         case "$d_asctime_r_proto" in
9786         define)
9787         case "$asctime_r_proto" in
9788         ''|0) try='char* asctime_r(const struct tm*, char*);'
9789         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9790         esac
9791         case "$asctime_r_proto" in
9792         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9793         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9794         esac
9795         case "$asctime_r_proto" in
9796         ''|0) try='int asctime_r(const struct tm*, char*);'
9797         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9798         esac
9799         case "$asctime_r_proto" in
9800         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9801         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9802         esac
9803         case "$asctime_r_proto" in
9804         ''|0)   d_asctime_r=undef
9805                 asctime_r_proto=0
9806                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9807         * )     case "$asctime_r_proto" in
9808                 REENTRANT_PROTO*) ;;
9809                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9810                 esac
9811                 echo "Prototype: $try" ;;
9812         esac
9813         ;;
9814         *)      case "$usethreads" in
9815                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9816                 esac
9817                 d_asctime_r=undef
9818                 asctime_r_proto=0
9819                 ;;
9820         esac
9821         ;;
9822 *)      asctime_r_proto=0
9823         ;;
9824 esac
9825
9826 : see if atolf exists
9827 set atolf d_atolf
9828 eval $inlibc
9829
9830 : see if atoll exists
9831 set atoll d_atoll
9832 eval $inlibc
9833
9834 : Look for GNU-cc style attribute checking
9835 echo " "
9836 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9837 $cat >attrib.c <<'EOCP'
9838 #include <stdio.h>
9839 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9840 EOCP
9841 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9842         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9843                 echo "Your C compiler doesn't fully support __attribute__."
9844                 val="$undef"
9845         else
9846                 echo "Your C compiler supports __attribute__."
9847                 val="$define"
9848         fi
9849 else
9850         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9851         val="$undef"
9852 fi
9853 set d_attribut
9854 eval $setvar
9855 $rm -f attrib*
9856
9857 : see if bcmp exists
9858 set bcmp d_bcmp
9859 eval $inlibc
9860
9861 : see if bcopy exists
9862 set bcopy d_bcopy
9863 eval $inlibc
9864
9865 : see if this is a unistd.h system
9866 set unistd.h i_unistd
9867 eval $inhdr
9868
9869 : see if getpgrp exists
9870 set getpgrp d_getpgrp
9871 eval $inlibc
9872
9873 case "$d_getpgrp" in
9874 "$define")
9875         echo " "
9876         echo "Checking to see which flavor of getpgrp is in use..."
9877         $cat >try.c <<EOP
9878 #$i_unistd I_UNISTD
9879 #include <sys/types.h>
9880 #ifdef I_UNISTD
9881 #  include <unistd.h>
9882 #endif
9883 #$i_stdlib I_STDLIB
9884 #ifdef I_STDLIB
9885 #include <stdlib.h>
9886 #endif
9887 int main()
9888 {
9889         if (getuid() == 0) {
9890                 printf("(I see you are running Configure as super-user...)\n");
9891                 setuid(1);
9892         }
9893 #ifdef TRY_BSD_PGRP
9894         if (getpgrp(1) == 0)
9895                 exit(0);
9896 #else
9897         if (getpgrp() > 0)
9898                 exit(0);
9899 #endif
9900         exit(1);
9901 }
9902 EOP
9903         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9904                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9905                 val="$define"
9906         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9907                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9908                 val="$undef"
9909         else
9910                 echo "I can't seem to compile and run the test program."
9911                 if ./usg; then
9912                         xxx="a USG one, i.e. you use getpgrp()."
9913                 else
9914                         # SVR4 systems can appear rather BSD-ish.
9915                         case "$i_unistd" in
9916                         $undef)
9917                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9918                                 val="$define"
9919                                 ;;
9920                         $define)
9921                                 xxx="probably a USG one, i.e. you use getpgrp()."
9922                                 val="$undef"
9923                                 ;;
9924                         esac
9925                 fi
9926                 echo "Assuming your getpgrp is $xxx" >&4
9927         fi
9928         ;;
9929 *) val="$undef";;
9930 esac
9931 set d_bsdgetpgrp
9932 eval $setvar
9933 $rm -f try try.*
9934
9935 : see if setpgrp exists
9936 set setpgrp d_setpgrp
9937 eval $inlibc
9938
9939 case "$d_setpgrp" in
9940 "$define")
9941         echo " "
9942         echo "Checking to see which flavor of setpgrp is in use..."
9943         $cat >try.c <<EOP
9944 #$i_unistd I_UNISTD
9945 #include <sys/types.h>
9946 #ifdef I_UNISTD
9947 #  include <unistd.h>
9948 #endif
9949 #$i_stdlib I_STDLIB
9950 #ifdef I_STDLIB
9951 #include <stdlib.h>
9952 #endif
9953 int main()
9954 {
9955         if (getuid() == 0) {
9956                 printf("(I see you are running Configure as super-user...)\n");
9957                 setuid(1);
9958         }
9959 #ifdef TRY_BSD_PGRP
9960         if (-1 == setpgrp(1, 1))
9961                 exit(0);
9962 #else
9963         if (setpgrp() != -1)
9964                 exit(0);
9965 #endif
9966         exit(1);
9967 }
9968 EOP
9969         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9970                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9971                 val="$define"
9972         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9973                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9974                 val="$undef"
9975         else
9976                 echo "(I can't seem to compile and run the test program.)"
9977                 if ./usg; then
9978                         xxx="a USG one, i.e. you use setpgrp()."
9979                 else
9980                         # SVR4 systems can appear rather BSD-ish.
9981                         case "$i_unistd" in
9982                         $undef)
9983                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9984                                 val="$define"
9985                                 ;;
9986                         $define)
9987                                 xxx="probably a USG one, i.e. you use setpgrp()."
9988                                 val="$undef"
9989                                 ;;
9990                         esac
9991                 fi
9992                 echo "Assuming your setpgrp is $xxx" >&4
9993         fi
9994         ;;
9995 *) val="$undef";;
9996 esac
9997 set d_bsdsetpgrp
9998 eval $setvar
9999 $rm -f try try.*
10000 : see if bzero exists
10001 set bzero d_bzero
10002 eval $inlibc
10003
10004 : see if signal is declared as pointer to function returning int or void
10005 echo " "
10006 xxx=`./findhdr signal.h`
10007 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10008 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10009         echo "You have int (*signal())() instead of void." >&4
10010         val="$undef"
10011 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10012         echo "You have void (*signal())()." >&4
10013         val="$define"
10014 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10015         echo "You have int (*signal())() instead of void." >&4
10016         val="$undef"
10017 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10018         echo "You have void (*signal())()." >&4
10019         val="$define"
10020 else
10021         case "$d_voidsig" in
10022         '')
10023         echo "I can't determine whether signal handler returns void or int..." >&4
10024                 dflt=void
10025                 rp="What type does your signal handler return?"
10026                 . ./myread
10027                 case "$ans" in
10028                 v*) val="$define";;
10029                 *) val="$undef";;
10030                 esac;;
10031         "$define")
10032                 echo "As you already told me, signal handler returns void." >&4
10033                 val="$define"
10034                 ;;
10035         *)      echo "As you already told me, signal handler returns int." >&4
10036                 val="$undef"
10037                 ;;
10038         esac
10039 fi
10040 set d_voidsig
10041 eval $setvar
10042 case "$d_voidsig" in
10043 "$define") signal_t="void";;
10044 *) signal_t="int";;
10045 esac
10046 $rm -f $$.tmp
10047
10048 : check for ability to cast large floats to 32-bit ints.
10049 echo " "
10050 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10051 if $test "$intsize" -ge 4; then
10052         xxx=int
10053 else
10054         xxx=long
10055 fi
10056 $cat >try.c <<EOCP
10057 #include <stdio.h>
10058 #$i_stdlib I_STDLIB
10059 #ifdef I_STDLIB
10060 #include <stdlib.h>
10061 #endif
10062 #include <sys/types.h>
10063 #include <signal.h>
10064 $signal_t blech(s) int s; { exit(3); }
10065 int main()
10066 {
10067         $xxx i32;
10068         double f, g;
10069         int result = 0;
10070         char str[16];
10071         signal(SIGFPE, blech);
10072
10073         /* Don't let compiler optimize the test away.  Store the number 
10074            in a writable string for gcc to pass to sscanf under HP/UX.
10075         */
10076         sprintf(str, "2147483647");
10077         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10078         g = 10 * f;
10079         i32  = ($xxx) g;
10080
10081         /* x86 processors will probably give 0x8000 0000, which is a
10082        sign change.  We don't want that.  We want to mimic SPARC
10083            behavior here, which is to preserve the sign and give
10084            back 0x7fff ffff.
10085         */
10086         if (i32 != ($xxx) f)
10087                 result |= 1;
10088         exit(result);
10089 }
10090 EOCP
10091 set try
10092 if eval $compile_ok; then
10093         $run ./try
10094         yyy=$?
10095 else
10096         echo "(I can't seem to compile the test program--assuming it can't)"
10097         yyy=1
10098 fi
10099 case "$yyy" in
10100 0)      val="$define"
10101         echo "Yup, it can."
10102         ;;
10103 *)      val="$undef"
10104         echo "Nope, it can't."
10105         ;;
10106 esac
10107 set d_casti32
10108 eval $setvar
10109 $rm -f try try.*
10110
10111 : check for ability to cast negative floats to unsigned
10112 echo " "
10113 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10114 $cat >try.c <<EOCP
10115 #include <stdio.h>
10116 #$i_stdlib I_STDLIB
10117 #ifdef I_STDLIB
10118 #include <stdlib.h>
10119 #endif
10120 #include <sys/types.h>
10121 #include <signal.h>
10122 $signal_t blech(s) int s; { exit(7); }
10123 $signal_t blech_in_list(s) int s; { exit(4); }
10124 unsigned long dummy_long(p) unsigned long p; { return p; }
10125 unsigned int dummy_int(p) unsigned int p; { return p; }
10126 unsigned short dummy_short(p) unsigned short p; { return p; }
10127 int main()
10128 {
10129         double f;
10130         unsigned long along;
10131         unsigned int aint;
10132         unsigned short ashort;
10133         int result = 0;
10134         char str[16];
10135         
10136         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10137            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10138            optimized the whole file away
10139         */
10140         /* Store the number in a writable string for gcc to pass to 
10141            sscanf under HP/UX.
10142         */
10143         sprintf(str, "-123");
10144         sscanf(str, "%lf", &f);  /* f = -123.; */
10145
10146         signal(SIGFPE, blech);
10147         along = (unsigned long)f;
10148         aint = (unsigned int)f;
10149         ashort = (unsigned short)f;
10150         if (along != (unsigned long)-123)
10151                 result |= 1;
10152         if (aint != (unsigned int)-123)
10153                 result |= 1;
10154         if (ashort != (unsigned short)-123)
10155                 result |= 1;
10156         sprintf(str, "1073741824.");
10157         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10158         f = f + f;
10159         along = 0;
10160         along = (unsigned long)f;
10161         if (along != 0x80000000)
10162                 result |= 2;
10163         f -= 1.;
10164         along = 0;
10165         along = (unsigned long)f;
10166         if (along != 0x7fffffff)
10167                 result |= 1;
10168         f += 2.;
10169         along = 0;
10170         along = (unsigned long)f;
10171         if (along != 0x80000001)
10172                 result |= 2;
10173         if (result)
10174                 exit(result);
10175         signal(SIGFPE, blech_in_list);
10176         sprintf(str, "123.");
10177         sscanf(str, "%lf", &f);  /* f = 123.; */
10178         along = dummy_long((unsigned long)f);
10179         aint = dummy_int((unsigned int)f);
10180         ashort = dummy_short((unsigned short)f);
10181         if (along != (unsigned long)123)
10182                 result |= 4;
10183         if (aint != (unsigned int)123)
10184                 result |= 4;
10185         if (ashort != (unsigned short)123)
10186                 result |= 4;
10187         exit(result);
10188
10189 }
10190 EOCP
10191 set try
10192 if eval $compile_ok; then
10193         $run ./try
10194         castflags=$?
10195 else
10196         echo "(I can't seem to compile the test program--assuming it can't)"
10197         castflags=7
10198 fi
10199 case "$castflags" in
10200 0)      val="$define"
10201         echo "Yup, it can."
10202         ;;
10203 *)      val="$undef"
10204         echo "Nope, it can't."
10205         ;;
10206 esac
10207 set d_castneg
10208 eval $setvar
10209 $rm -f try.*
10210
10211 : see if vprintf exists
10212 echo " "
10213 if set vprintf val -f d_vprintf; eval $csym; $val; then
10214         echo 'vprintf() found.' >&4
10215         val="$define"
10216         $cat >try.c <<EOF
10217 #include <varargs.h>
10218 #$i_stdlib I_STDLIB
10219 #ifdef I_STDLIB
10220 #include <stdlib.h>
10221 #endif
10222
10223 int main() { xxx("foo"); }
10224
10225 xxx(va_alist)
10226 va_dcl
10227 {
10228         va_list args;
10229         char buf[10];
10230
10231         va_start(args);
10232         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10233 }
10234 EOF
10235         set try
10236         if eval $compile && $run ./try; then
10237                 echo "Your vsprintf() returns (int)." >&4
10238                 val2="$undef"
10239         else
10240                 echo "Your vsprintf() returns (char*)." >&4
10241                 val2="$define"
10242         fi
10243 else
10244         echo 'vprintf() NOT found.' >&4
10245                 val="$undef"
10246                 val2="$undef"
10247 fi
10248 $rm -f try try.*
10249 set d_vprintf
10250 eval $setvar
10251 val=$val2
10252 set d_charvspr
10253 eval $setvar
10254
10255 : see if chown exists
10256 set chown d_chown
10257 eval $inlibc
10258
10259 : see if chroot exists
10260 set chroot d_chroot
10261 eval $inlibc
10262
10263 : see if chsize exists
10264 set chsize d_chsize
10265 eval $inlibc
10266
10267 : see if class exists
10268 set class d_class
10269 eval $inlibc
10270
10271 hasstruct='varname=$1; struct=$2; shift; shift;
10272 while $test $# -ge 2; do
10273         case "$1" in
10274         $define) echo "#include <$2>";;
10275         esac ;
10276     shift 2;
10277 done > try.c;
10278 echo "int main () { struct $struct foo; }" >> try.c;
10279 set try;
10280 if eval $compile; then
10281         val="$define";
10282 else
10283         val="$undef";
10284 fi;
10285 set $varname;
10286 eval $setvar;
10287 $rm -f try.c try.o'
10288
10289 socketlib=''
10290 sockethdr=''
10291 : see whether socket exists
10292 echo " "
10293 $echo $n "Hmm... $c" >&4
10294 if set socket val -f d_socket; eval $csym; $val; then
10295         echo "Looks like you have Berkeley networking support." >&4
10296         d_socket="$define"
10297         if set setsockopt val -f; eval $csym; $val; then
10298                 d_oldsock="$undef"
10299         else
10300                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10301                 d_oldsock="$define"
10302         fi
10303 else
10304         if $contains socklib libc.list >/dev/null 2>&1; then
10305                 echo "Looks like you have Berkeley networking support." >&4
10306                 d_socket="$define"
10307                 : we will have to assume that it supports the 4.2 BSD interface
10308                 d_oldsock="$undef"
10309         else
10310                 echo "You don't have Berkeley networking in libc$_a..." >&4
10311                 if test "X$d_socket" = "X$define"; then
10312                    echo "...but you seem to believe that you have sockets." >&4
10313                 else
10314                         for net in net socket
10315                         do
10316                                 if test -f /usr/lib/lib$net$_a; then
10317                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10318                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10319                                         if $contains socket libc.list >/dev/null 2>&1; then
10320                                                 d_socket="$define"
10321                                                 socketlib="-l$net"
10322                                                 case "$net" in
10323                                                 net)
10324                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10325                                                         sockethdr="-I/usr/netinclude"
10326                                                         ;;
10327                                                 esac
10328                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10329                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10330                                                         d_oldsock="$undef"
10331                                                 else
10332                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10333                                                         d_oldsock="$define"
10334                                                 fi
10335                                                 break
10336                                         fi
10337                                 fi
10338                         done
10339                         if test "X$d_socket" != "X$define"; then
10340                            echo "or anywhere else I see." >&4
10341                            d_socket="$undef"
10342                            d_oldsock="$undef"
10343                         fi
10344                 fi
10345         fi
10346 fi
10347
10348 : see if socketpair exists
10349 set socketpair d_sockpair
10350 eval $inlibc
10351
10352
10353 echo " "
10354 echo "Checking the availability of certain socket constants..." >&4
10355 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10356         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10357         $cat >try.c <<EOF
10358 #include <sys/types.h>
10359 #include <sys/socket.h>
10360 int main() {
10361     int i = $ENUM;
10362 }
10363 EOF
10364         val="$undef"
10365         set try; if eval $compile; then
10366                 val="$define"
10367         fi
10368         set d_${enum}; eval $setvar
10369         $rm -f try.c try
10370 done
10371
10372 : see if this is a sys/uio.h system
10373 set sys/uio.h i_sysuio
10374 eval $inhdr
10375
10376
10377 echo " "
10378 echo "Checking to see if your system supports struct cmsghdr..." >&4
10379 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10380 eval $hasstruct
10381 case "$d_cmsghdr_s" in
10382 "$define")      echo "Yes, it does."   ;;
10383 *)              echo "No, it doesn't." ;;
10384 esac
10385
10386
10387 : check for const keyword
10388 echo " "
10389 echo 'Checking to see if your C compiler knows about "const"...' >&4
10390 $cat >const.c <<'EOCP'
10391 typedef struct spug { int drokk; } spug;
10392 int main()
10393 {
10394         const char *foo;
10395         const spug y;
10396 }
10397 EOCP
10398 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10399         val="$define"
10400         echo "Yup, it does."
10401 else
10402         val="$undef"
10403         echo "Nope, it doesn't."
10404 fi
10405 set d_const
10406 eval $setvar
10407
10408 : see if copysignl exists
10409 set copysignl d_copysignl
10410 eval $inlibc
10411
10412 : see if crypt exists
10413 echo " "
10414 set crypt d_crypt
10415 eval $inlibc
10416 case "$d_crypt" in
10417 $define) cryptlib='' ;;
10418 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10419                 echo 'crypt() found.' >&4
10420                 val="$define"
10421                 cryptlib=''
10422         else
10423                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10424                 if $test -z "$cryptlib"; then
10425                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10426                 else
10427                         cryptlib=-lcrypt
10428                 fi
10429                 if $test -z "$cryptlib"; then
10430                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10431                 else
10432                         cryptlib=-lcrypt
10433                 fi
10434                 if $test -z "$cryptlib"; then
10435                         cryptlib=`./loc libcrypt$_a "" $libpth`
10436                 else
10437                         cryptlib=-lcrypt
10438                 fi
10439                 if $test -z "$cryptlib"; then
10440                         echo 'crypt() NOT found.' >&4
10441                         val="$undef"
10442                 else
10443                         val="$define"
10444                 fi
10445         fi
10446         set d_crypt
10447         eval $setvar
10448         ;;
10449 esac
10450
10451 : see if this is a crypt.h system
10452 set crypt.h i_crypt
10453 eval $inhdr
10454
10455 : see if crypt_r exists
10456 set crypt_r d_crypt_r
10457 eval $inlibc
10458 case "$d_crypt_r" in
10459 "$define")
10460         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10461         case "$d_crypt_r_proto:$usethreads" in
10462         ":define")      d_crypt_r_proto=define
10463                 set d_crypt_r_proto crypt_r $hdrs
10464                 eval $hasproto ;;
10465         *)      ;;
10466         esac
10467         case "$d_crypt_r_proto" in
10468         define)
10469         case "$crypt_r_proto" in
10470         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10471         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10472         esac
10473         case "$crypt_r_proto" in
10474         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10475         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10476         esac
10477         case "$crypt_r_proto" in
10478         ''|0)   d_crypt_r=undef
10479                 crypt_r_proto=0
10480                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10481         * )     case "$crypt_r_proto" in
10482                 REENTRANT_PROTO*) ;;
10483                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10484                 esac
10485                 echo "Prototype: $try" ;;
10486         esac
10487         ;;
10488         *)      case "$usethreads" in
10489                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10490                 esac
10491                 d_crypt_r=undef
10492                 crypt_r_proto=0
10493                 ;;
10494         esac
10495         ;;
10496 *)      crypt_r_proto=0
10497         ;;
10498 esac
10499
10500 : get csh whereabouts
10501 case "$csh" in
10502 'csh') val="$undef" ;;
10503 *) val="$define" ;;
10504 esac
10505 set d_csh
10506 eval $setvar
10507 : Respect a hint or command line value for full_csh.
10508 case "$full_csh" in
10509 '') full_csh=$csh ;;
10510 esac
10511
10512 : see if ctermid_r exists
10513 set ctermid_r d_ctermid_r
10514 eval $inlibc
10515 case "$d_ctermid_r" in
10516 "$define")
10517         hdrs="$i_systypes sys/types.h define stdio.h "
10518         case "$d_ctermid_r_proto:$usethreads" in
10519         ":define")      d_ctermid_r_proto=define
10520                 set d_ctermid_r_proto ctermid_r $hdrs
10521                 eval $hasproto ;;
10522         *)      ;;
10523         esac
10524         case "$d_ctermid_r_proto" in
10525         define)
10526         case "$ctermid_r_proto" in
10527         ''|0) try='char* ctermid_r(char*);'
10528         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10529         esac
10530         case "$ctermid_r_proto" in
10531         ''|0)   d_ctermid_r=undef
10532                 ctermid_r_proto=0
10533                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10534         * )     case "$ctermid_r_proto" in
10535                 REENTRANT_PROTO*) ;;
10536                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10537                 esac
10538                 echo "Prototype: $try" ;;
10539         esac
10540         ;;
10541         *)      case "$usethreads" in
10542                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10543                 esac
10544                 d_ctermid_r=undef
10545                 ctermid_r_proto=0
10546                 ;;
10547         esac
10548         ;;
10549 *)      ctermid_r_proto=0
10550         ;;
10551 esac
10552
10553 : see if ctime_r exists
10554 set ctime_r d_ctime_r
10555 eval $inlibc
10556 case "$d_ctime_r" in
10557 "$define")
10558         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10559         case "$d_ctime_r_proto:$usethreads" in
10560         ":define")      d_ctime_r_proto=define
10561                 set d_ctime_r_proto ctime_r $hdrs
10562                 eval $hasproto ;;
10563         *)      ;;
10564         esac
10565         case "$d_ctime_r_proto" in
10566         define)
10567         case "$ctime_r_proto" in
10568         ''|0) try='char* ctime_r(const time_t*, char*);'
10569         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10570         esac
10571         case "$ctime_r_proto" in
10572         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10573         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10574         esac
10575         case "$ctime_r_proto" in
10576         ''|0) try='int ctime_r(const time_t*, char*);'
10577         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10578         esac
10579         case "$ctime_r_proto" in
10580         ''|0) try='int ctime_r(const time_t*, char*, int);'
10581         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10582         esac
10583         case "$ctime_r_proto" in
10584         ''|0)   d_ctime_r=undef
10585                 ctime_r_proto=0
10586                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10587         * )     case "$ctime_r_proto" in
10588                 REENTRANT_PROTO*) ;;
10589                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10590                 esac
10591                 echo "Prototype: $try" ;;
10592         esac
10593         ;;
10594         *)      case "$usethreads" in
10595                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10596                 esac
10597                 d_ctime_r=undef
10598                 ctime_r_proto=0
10599                 ;;
10600         esac
10601         ;;
10602 *)      ctime_r_proto=0
10603         ;;
10604 esac
10605
10606 : see if cuserid exists
10607 set cuserid d_cuserid
10608 eval $inlibc
10609
10610 : see if this is a limits.h system
10611 set limits.h i_limits
10612 eval $inhdr
10613
10614 : see if this is a float.h system
10615 set float.h i_float
10616 eval $inhdr
10617
10618 : See if number of significant digits in a double precision number is known
10619 echo " "
10620 $cat >dbl_dig.c <<EOM
10621 #$i_limits I_LIMITS
10622 #$i_float I_FLOAT
10623 #ifdef I_LIMITS
10624 #include <limits.h>
10625 #endif
10626 #ifdef I_FLOAT
10627 #include <float.h>
10628 #endif
10629 #ifdef DBL_DIG
10630 printf("Contains DBL_DIG");
10631 #endif
10632 EOM
10633 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10634 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10635         echo "DBL_DIG found." >&4
10636         val="$define"
10637 else
10638         echo "DBL_DIG NOT found." >&4
10639         val="$undef"
10640 fi
10641 $rm -f dbl_dig.?
10642 set d_dbl_dig
10643 eval $setvar
10644
10645 : see if dbm.h is available
10646 : see if dbmclose exists
10647 set dbmclose d_dbmclose
10648 eval $inlibc
10649
10650 case "$d_dbmclose" in
10651 $define)
10652         set dbm.h i_dbm
10653         eval $inhdr
10654         case "$i_dbm" in
10655         $define)
10656                 val="$undef"
10657                 set i_rpcsvcdbm
10658                 eval $setvar
10659                 ;;
10660         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10661                 eval $inhdr
10662                 ;;
10663         esac
10664         ;;
10665 *)      echo "We won't be including <dbm.h>"
10666         val="$undef"
10667         set i_dbm
10668         eval $setvar
10669         val="$undef"
10670         set i_rpcsvcdbm
10671         eval $setvar
10672         ;;
10673 esac
10674
10675 : see if prototype for dbminit is available
10676 echo " "
10677 set d_dbminitproto dbminit $i_dbm dbm.h
10678 eval $hasproto
10679
10680 : see if difftime exists
10681 set difftime d_difftime
10682 eval $inlibc
10683
10684 : see if this is a dirent system
10685 echo " "
10686 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10687         val="$define"
10688         echo "<dirent.h> found." >&4
10689 else
10690         val="$undef"
10691         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10692                 echo "<sys/dir.h> found." >&4
10693                 echo " "
10694         else
10695                 xinc=`./findhdr sys/ndir.h`
10696         fi
10697         echo "<dirent.h> NOT found." >&4
10698 fi
10699 set i_dirent
10700 eval $setvar
10701
10702 : Look for type of directory structure.
10703 echo " "
10704 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10705
10706 case "$direntrytype" in
10707 ''|' ')
10708         case "$i_dirent" in
10709         $define) guess1='struct dirent' ;;
10710         *) guess1='struct direct'  ;;
10711         esac
10712         ;;
10713 *)      guess1="$direntrytype"
10714         ;;
10715 esac
10716
10717 case "$guess1" in
10718 'struct dirent') guess2='struct direct' ;;
10719 *) guess2='struct dirent' ;;
10720 esac
10721                 
10722 if $contains "$guess1" try.c >/dev/null 2>&1; then
10723         direntrytype="$guess1"
10724         echo "Your directory entries are $direntrytype." >&4
10725 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10726         direntrytype="$guess2"
10727         echo "Your directory entries seem to be $direntrytype." >&4
10728 else
10729         echo "I don't recognize your system's directory entries." >&4
10730         rp="What type is used for directory entries on this system?"
10731         dflt="$guess1"
10732         . ./myread
10733         direntrytype="$ans"
10734 fi
10735 $rm -f try.c
10736
10737
10738 : see if the directory entry stores field length
10739 echo " "
10740 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10741 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10742         echo "Good, your directory entry keeps length information in d_namlen." >&4
10743         val="$define"
10744 else
10745         echo "Your directory entry does not know about the d_namlen field." >&4
10746         val="$undef"
10747 fi
10748 set d_dirnamlen
10749 eval $setvar
10750 $rm -f try.c
10751
10752 : see if this is an sysdir system
10753 set sys/dir.h i_sysdir
10754 eval $inhdr
10755
10756 : see if this is an sysndir system
10757 set sys/ndir.h i_sysndir
10758 eval $inhdr
10759
10760 : Look for dirfd
10761 echo " "
10762 $cat >dirfd.c <<EOM
10763 #include <stdio.h>
10764 #$i_stdlib I_STDLIB
10765 #ifdef I_STDLIB
10766 #include <stdlib.h>
10767 #endif
10768 #$i_dirent I_DIRENT             /**/
10769 #$i_sysdir I_SYS_DIR            /**/
10770 #$i_sysndir I_SYS_NDIR          /**/
10771 #$i_systypes I_SYS_TYPES        /**/
10772 #if defined(I_SYS_TYPES)
10773 #include <sys/types.h>
10774 #endif
10775 #if defined(I_DIRENT)
10776 #include <dirent.h>
10777 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10778 #include <sys/dir.h>
10779 #endif
10780 #else
10781 #ifdef I_SYS_NDIR
10782 #include <sys/ndir.h>
10783 #else
10784 #ifdef I_SYS_DIR
10785 #ifdef hp9000s500
10786 #include <ndir.h>       /* may be wrong in the future */
10787 #else
10788 #include <sys/dir.h>
10789 #endif
10790 #endif
10791 #endif
10792 #endif 
10793 int main() {
10794         DIR *dirp = opendir(".");
10795         if (dirfd(dirp) >= 0)
10796                 exit(0);
10797         else
10798                 exit(1);
10799 }
10800 EOM
10801 set dirfd
10802 if eval $compile; then
10803         val="$define"
10804 fi
10805 case "$val" in
10806 $define)        echo "dirfd() found." >&4       ;;
10807 *)              echo "dirfd() NOT found." >&4   ;;
10808 esac
10809 set d_dirfd
10810 eval $setvar
10811 $rm -f dirfd*
10812
10813 : see if dlerror exists
10814 xxx_runnm="$runnm"
10815 runnm=false
10816 set dlerror d_dlerror
10817 eval $inlibc
10818 runnm="$xxx_runnm"
10819
10820 : see if dlfcn is available
10821 set dlfcn.h i_dlfcn
10822 eval $inhdr
10823
10824 case "$usedl" in
10825 $define|y|true)
10826         $cat << EOM
10827
10828 On a few systems, the dynamically loaded modules that perl generates and uses
10829 will need a different extension than shared libs. The default will probably
10830 be appropriate.
10831
10832 EOM
10833         case "$dlext" in
10834         '')     dflt="$so" ;;
10835         *)      dflt="$dlext" ;;
10836         esac
10837         rp='What is the extension of dynamically loaded modules'
10838         . ./myread
10839         dlext="$ans"
10840         ;;
10841 *)
10842         dlext="none"
10843         ;;
10844 esac
10845
10846 : Check if dlsym need a leading underscore
10847 echo " "
10848 val="$undef"
10849
10850 case "$dlsrc" in
10851 dl_dlopen.xs)
10852         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10853         $cat >dyna.c <<'EOM'
10854 fred () { }
10855 EOM
10856
10857 $cat >fred.c<<EOM
10858
10859 #include <stdio.h>
10860 #$i_stdlib I_STDLIB
10861 #ifdef I_STDLIB
10862 #include <stdlib.h>
10863 #endif
10864 #$i_dlfcn I_DLFCN
10865 #ifdef I_DLFCN
10866 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10867 #else
10868 #include <sys/types.h>
10869 #include <nlist.h>
10870 #include <link.h>
10871 #endif
10872
10873 extern int fred() ;
10874
10875 int main()
10876 {
10877     void * handle ;
10878     void * symbol ;
10879 #ifndef RTLD_LAZY
10880     int mode = 1 ;
10881 #else
10882     int mode = RTLD_LAZY ;
10883 #endif
10884     handle = dlopen("./dyna.$dlext", mode) ;
10885     if (handle == NULL) {
10886         printf ("1\n") ;
10887         fflush (stdout) ;
10888         exit(0);
10889     }
10890     symbol = dlsym(handle, "fred") ;
10891     if (symbol == NULL) {
10892         /* try putting a leading underscore */
10893         symbol = dlsym(handle, "_fred") ;
10894         if (symbol == NULL) {
10895             printf ("2\n") ;
10896             fflush (stdout) ;
10897             exit(0);
10898         }
10899         printf ("3\n") ;
10900     }
10901     else
10902         printf ("4\n") ;
10903     fflush (stdout) ;
10904     exit(0);
10905 }
10906 EOM
10907         : Call the object file tmp-dyna.o in case dlext=o.
10908         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10909                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10910                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10911                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10912                 xxx=`$run ./fred`
10913                 case $xxx in
10914                 1)      echo "Test program failed using dlopen." >&4
10915                         echo "Perhaps you should not use dynamic loading." >&4;;
10916                 2)      echo "Test program failed using dlsym." >&4
10917                         echo "Perhaps you should not use dynamic loading." >&4;;
10918                 3)      echo "dlsym needs a leading underscore" >&4
10919                         val="$define" ;;
10920                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10921                 esac
10922         else
10923                 echo "I can't compile and run the test program." >&4
10924                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10925         fi
10926         ;;
10927 esac
10928                 
10929 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10930
10931 set d_dlsymun
10932 eval $setvar
10933
10934 : see if drand48_r exists
10935 set drand48_r d_drand48_r
10936 eval $inlibc
10937 case "$d_drand48_r" in
10938 "$define")
10939         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10940         case "$d_drand48_r_proto:$usethreads" in
10941         ":define")      d_drand48_r_proto=define
10942                 set d_drand48_r_proto drand48_r $hdrs
10943                 eval $hasproto ;;
10944         *)      ;;
10945         esac
10946         case "$d_drand48_r_proto" in
10947         define)
10948         case "$drand48_r_proto" in
10949         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10950         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10951         esac
10952         case "$drand48_r_proto" in
10953         ''|0)   d_drand48_r=undef
10954                 drand48_r_proto=0
10955                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10956         * )     case "$drand48_r_proto" in
10957                 REENTRANT_PROTO*) ;;
10958                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10959                 esac
10960                 echo "Prototype: $try" ;;
10961         esac
10962         ;;
10963         *)      case "$usethreads" in
10964                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10965                 esac
10966                 d_drand48_r=undef
10967                 drand48_r_proto=0
10968                 ;;
10969         esac
10970         ;;
10971 *)      drand48_r_proto=0
10972         ;;
10973 esac
10974
10975 : see if prototype for drand48 is available
10976 echo " "
10977 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10978 eval $hasproto
10979
10980 : see if dup2 exists
10981 set dup2 d_dup2
10982 eval $inlibc
10983
10984 : see if eaccess exists
10985 set eaccess d_eaccess
10986 eval $inlibc
10987
10988 : see if endgrent exists
10989 set endgrent d_endgrent
10990 eval $inlibc
10991
10992 : see if this is an grp system
10993 set grp.h i_grp
10994 eval $inhdr
10995
10996 case "$i_grp" in
10997 $define)
10998         xxx=`./findhdr grp.h`
10999         $cppstdin $cppflags $cppminus < $xxx >$$.h
11000
11001         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11002                 val="$define"
11003         else
11004                 val="$undef"
11005         fi
11006         set d_grpasswd
11007         eval $setvar
11008
11009         $rm -f $$.h
11010         ;;
11011 *)
11012         val="$undef";
11013         set d_grpasswd; eval $setvar
11014         ;;
11015 esac
11016
11017 : see if endgrent_r exists
11018 set endgrent_r d_endgrent_r
11019 eval $inlibc
11020 case "$d_endgrent_r" in
11021 "$define")
11022         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11023         case "$d_endgrent_r_proto:$usethreads" in
11024         ":define")      d_endgrent_r_proto=define
11025                 set d_endgrent_r_proto endgrent_r $hdrs
11026                 eval $hasproto ;;
11027         *)      ;;
11028         esac
11029         case "$d_endgrent_r_proto" in
11030         define)
11031         case "$endgrent_r_proto" in
11032         ''|0) try='int endgrent_r(FILE**);'
11033         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11034         esac
11035         case "$endgrent_r_proto" in
11036         ''|0) try='void endgrent_r(FILE**);'
11037         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11038         esac
11039         case "$endgrent_r_proto" in
11040         ''|0)   d_endgrent_r=undef
11041                 endgrent_r_proto=0
11042                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11043         * )     case "$endgrent_r_proto" in
11044                 REENTRANT_PROTO*) ;;
11045                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11046                 esac
11047                 echo "Prototype: $try" ;;
11048         esac
11049         ;;
11050         *)      case "$usethreads" in
11051                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11052                 esac
11053                 d_endgrent_r=undef
11054                 endgrent_r_proto=0
11055                 ;;
11056         esac
11057         ;;
11058 *)      endgrent_r_proto=0
11059         ;;
11060 esac
11061
11062 : see if endhostent exists
11063 set endhostent d_endhent
11064 eval $inlibc
11065
11066 : see if this is a netdb.h system
11067 set netdb.h i_netdb
11068 eval $inhdr
11069
11070 : see if endhostent_r exists
11071 set endhostent_r d_endhostent_r
11072 eval $inlibc
11073 case "$d_endhostent_r" in
11074 "$define")
11075         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11076         case "$d_endhostent_r_proto:$usethreads" in
11077         ":define")      d_endhostent_r_proto=define
11078                 set d_endhostent_r_proto endhostent_r $hdrs
11079                 eval $hasproto ;;
11080         *)      ;;
11081         esac
11082         case "$d_endhostent_r_proto" in
11083         define)
11084         case "$endhostent_r_proto" in
11085         ''|0) try='int endhostent_r(struct hostent_data*);'
11086         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11087         esac
11088         case "$endhostent_r_proto" in
11089         ''|0) try='void endhostent_r(struct hostent_data*);'
11090         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11091         esac
11092         case "$endhostent_r_proto" in
11093         ''|0)   d_endhostent_r=undef
11094                 endhostent_r_proto=0
11095                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11096         * )     case "$endhostent_r_proto" in
11097                 REENTRANT_PROTO*) ;;
11098                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11099                 esac
11100                 echo "Prototype: $try" ;;
11101         esac
11102         ;;
11103         *)      case "$usethreads" in
11104                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11105                 esac
11106                 d_endhostent_r=undef
11107                 endhostent_r_proto=0
11108                 ;;
11109         esac
11110         ;;
11111 *)      endhostent_r_proto=0
11112         ;;
11113 esac
11114
11115 : see if endnetent exists
11116 set endnetent d_endnent
11117 eval $inlibc
11118
11119 : see if endnetent_r exists
11120 set endnetent_r d_endnetent_r
11121 eval $inlibc
11122 case "$d_endnetent_r" in
11123 "$define")
11124         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11125         case "$d_endnetent_r_proto:$usethreads" in
11126         ":define")      d_endnetent_r_proto=define
11127                 set d_endnetent_r_proto endnetent_r $hdrs
11128                 eval $hasproto ;;
11129         *)      ;;
11130         esac
11131         case "$d_endnetent_r_proto" in
11132         define)
11133         case "$endnetent_r_proto" in
11134         ''|0) try='int endnetent_r(struct netent_data*);'
11135         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11136         esac
11137         case "$endnetent_r_proto" in
11138         ''|0) try='void endnetent_r(struct netent_data*);'
11139         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11140         esac
11141         case "$endnetent_r_proto" in
11142         ''|0)   d_endnetent_r=undef
11143                 endnetent_r_proto=0
11144                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11145         * )     case "$endnetent_r_proto" in
11146                 REENTRANT_PROTO*) ;;
11147                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11148                 esac
11149                 echo "Prototype: $try" ;;
11150         esac
11151         ;;
11152         *)      case "$usethreads" in
11153                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11154                 esac
11155                 d_endnetent_r=undef
11156                 endnetent_r_proto=0
11157                 ;;
11158         esac
11159         ;;
11160 *)      endnetent_r_proto=0
11161         ;;
11162 esac
11163
11164 : see if endprotoent exists
11165 set endprotoent d_endpent
11166 eval $inlibc
11167
11168 : see if endprotoent_r exists
11169 set endprotoent_r d_endprotoent_r
11170 eval $inlibc
11171 case "$d_endprotoent_r" in
11172 "$define")
11173         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11174         case "$d_endprotoent_r_proto:$usethreads" in
11175         ":define")      d_endprotoent_r_proto=define
11176                 set d_endprotoent_r_proto endprotoent_r $hdrs
11177                 eval $hasproto ;;
11178         *)      ;;
11179         esac
11180         case "$d_endprotoent_r_proto" in
11181         define)
11182         case "$endprotoent_r_proto" in
11183         ''|0) try='int endprotoent_r(struct protoent_data*);'
11184         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11185         esac
11186         case "$endprotoent_r_proto" in
11187         ''|0) try='void endprotoent_r(struct protoent_data*);'
11188         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11189         esac
11190         case "$endprotoent_r_proto" in
11191         ''|0)   d_endprotoent_r=undef
11192                 endprotoent_r_proto=0
11193                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11194         * )     case "$endprotoent_r_proto" in
11195                 REENTRANT_PROTO*) ;;
11196                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11197                 esac
11198                 echo "Prototype: $try" ;;
11199         esac
11200         ;;
11201         *)      case "$usethreads" in
11202                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11203                 esac
11204                 d_endprotoent_r=undef
11205                 endprotoent_r_proto=0
11206                 ;;
11207         esac
11208         ;;
11209 *)      endprotoent_r_proto=0
11210         ;;
11211 esac
11212
11213 : see if endpwent exists
11214 set endpwent d_endpwent
11215 eval $inlibc
11216
11217 : see if this is a pwd.h system
11218 set pwd.h i_pwd
11219 eval $inhdr
11220
11221 case "$i_pwd" in
11222 $define)
11223         xxx=`./findhdr pwd.h`
11224         $cppstdin $cppflags $cppminus < $xxx >$$.h
11225
11226         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11227                 val="$define"
11228         else
11229                 val="$undef"
11230         fi
11231         set d_pwquota
11232         eval $setvar
11233
11234         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11235                 val="$define"
11236         else
11237                 val="$undef"
11238         fi
11239         set d_pwage
11240         eval $setvar
11241
11242         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11243                 val="$define"
11244         else
11245                 val="$undef"
11246         fi
11247         set d_pwchange
11248         eval $setvar
11249
11250         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11251                 val="$define"
11252         else
11253                 val="$undef"
11254         fi
11255         set d_pwclass
11256         eval $setvar
11257
11258         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11259                 val="$define"
11260         else
11261                 val="$undef"
11262         fi
11263         set d_pwexpire
11264         eval $setvar
11265
11266         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11267                 val="$define"
11268         else
11269                 val="$undef"
11270         fi
11271         set d_pwcomment
11272         eval $setvar
11273
11274         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11275                 val="$define"
11276         else
11277                 val="$undef"
11278         fi
11279         set d_pwgecos
11280         eval $setvar
11281
11282         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11283                 val="$define"
11284         else
11285                 val="$undef"
11286         fi
11287         set d_pwpasswd
11288         eval $setvar
11289
11290         $rm -f $$.h
11291         ;;
11292 *)
11293         val="$undef"; 
11294         set d_pwquota; eval $setvar
11295         set d_pwage; eval $setvar
11296         set d_pwchange; eval $setvar
11297         set d_pwclass; eval $setvar
11298         set d_pwexpire; eval $setvar
11299         set d_pwcomment; eval $setvar
11300         set d_pwgecos; eval $setvar
11301         set d_pwpasswd; eval $setvar
11302         ;;
11303 esac
11304
11305 : see if endpwent_r exists
11306 set endpwent_r d_endpwent_r
11307 eval $inlibc
11308 case "$d_endpwent_r" in
11309 "$define")
11310         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11311         case "$d_endpwent_r_proto:$usethreads" in
11312         ":define")      d_endpwent_r_proto=define
11313                 set d_endpwent_r_proto endpwent_r $hdrs
11314                 eval $hasproto ;;
11315         *)      ;;
11316         esac
11317         case "$d_endpwent_r_proto" in
11318         define)
11319         case "$endpwent_r_proto" in
11320         ''|0) try='int endpwent_r(FILE**);'
11321         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11322         esac
11323         case "$endpwent_r_proto" in
11324         ''|0) try='void endpwent_r(FILE**);'
11325         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11326         esac
11327         case "$endpwent_r_proto" in
11328         ''|0)   d_endpwent_r=undef
11329                 endpwent_r_proto=0
11330                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11331         * )     case "$endpwent_r_proto" in
11332                 REENTRANT_PROTO*) ;;
11333                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11334                 esac
11335                 echo "Prototype: $try" ;;
11336         esac
11337         ;;
11338         *)      case "$usethreads" in
11339                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11340                 esac
11341                 d_endpwent_r=undef
11342                 endpwent_r_proto=0
11343                 ;;
11344         esac
11345         ;;
11346 *)      endpwent_r_proto=0
11347         ;;
11348 esac
11349
11350 : see if endservent exists
11351 set endservent d_endsent
11352 eval $inlibc
11353
11354 : see if endservent_r exists
11355 set endservent_r d_endservent_r
11356 eval $inlibc
11357 case "$d_endservent_r" in
11358 "$define")
11359         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11360         case "$d_endservent_r_proto:$usethreads" in
11361         ":define")      d_endservent_r_proto=define
11362                 set d_endservent_r_proto endservent_r $hdrs
11363                 eval $hasproto ;;
11364         *)      ;;
11365         esac
11366         case "$d_endservent_r_proto" in
11367         define)
11368         case "$endservent_r_proto" in
11369         ''|0) try='int endservent_r(struct servent_data*);'
11370         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11371         esac
11372         case "$endservent_r_proto" in
11373         ''|0) try='void endservent_r(struct servent_data*);'
11374         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11375         esac
11376         case "$endservent_r_proto" in
11377         ''|0)   d_endservent_r=undef
11378                 endservent_r_proto=0
11379                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11380         * )     case "$endservent_r_proto" in
11381                 REENTRANT_PROTO*) ;;
11382                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11383                 esac
11384                 echo "Prototype: $try" ;;
11385         esac
11386         ;;
11387         *)      case "$usethreads" in
11388                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11389                 esac
11390                 d_endservent_r=undef
11391                 endservent_r_proto=0
11392                 ;;
11393         esac
11394         ;;
11395 *)      endservent_r_proto=0
11396         ;;
11397 esac
11398
11399 : Locate the flags for 'open()'
11400 echo " "
11401 $cat >try.c <<EOCP
11402 #include <sys/types.h>
11403 #ifdef I_FCNTL
11404 #include <fcntl.h>
11405 #endif
11406 #ifdef I_SYS_FILE
11407 #include <sys/file.h>
11408 #endif
11409 #$i_stdlib I_STDLIB
11410 #ifdef I_STDLIB
11411 #include <stdlib.h>
11412 #endif
11413 int main() {
11414         if(O_RDONLY);
11415 #ifdef O_TRUNC
11416         exit(0);
11417 #else
11418         exit(1);
11419 #endif
11420 }
11421 EOCP
11422 : check sys/file.h first to get FREAD on Sun
11423 if $test `./findhdr sys/file.h` && \
11424                 set try -DI_SYS_FILE && eval $compile; then
11425         h_sysfile=true;
11426         echo "<sys/file.h> defines the O_* constants..." >&4
11427         if $run ./try; then
11428                 echo "and you have the 3 argument form of open()." >&4
11429                 val="$define"
11430         else
11431                 echo "but not the 3 argument form of open().  Oh, well." >&4
11432                 val="$undef"
11433         fi
11434 elif $test `./findhdr fcntl.h` && \
11435                 set try -DI_FCNTL && eval $compile; then
11436         h_fcntl=true;
11437         echo "<fcntl.h> defines the O_* constants..." >&4
11438         if $run ./try; then
11439                 echo "and you have the 3 argument form of open()." >&4
11440                 val="$define"
11441         else
11442                 echo "but not the 3 argument form of open().  Oh, well." >&4
11443                 val="$undef"
11444         fi
11445 else
11446         val="$undef"
11447         echo "I can't find the O_* constant definitions!  You got problems." >&4
11448 fi
11449 set d_open3
11450 eval $setvar
11451 $rm -f try try.*
11452
11453 : see which of string.h or strings.h is needed
11454 echo " "
11455 strings=`./findhdr string.h`
11456 if $test "$strings" && $test -r "$strings"; then
11457         echo "Using <string.h> instead of <strings.h>." >&4
11458         val="$define"
11459 else
11460         val="$undef"
11461         strings=`./findhdr strings.h`
11462         if $test "$strings" && $test -r "$strings"; then
11463                 echo "Using <strings.h> instead of <string.h>." >&4
11464         else
11465                 echo "No string header found -- You'll surely have problems." >&4
11466         fi
11467 fi
11468 set i_string
11469 eval $setvar
11470 case "$i_string" in
11471 "$undef") strings=`./findhdr strings.h`;;
11472 *)        strings=`./findhdr string.h`;;
11473 esac
11474
11475 : see if this is a sys/file.h system
11476 val=''
11477 set sys/file.h val
11478 eval $inhdr
11479
11480 : do we need to include sys/file.h ?
11481 case "$val" in
11482 "$define")
11483         echo " "
11484         if $h_sysfile; then
11485                 val="$define"
11486                 echo "We'll be including <sys/file.h>." >&4
11487         else
11488                 val="$undef"
11489                 echo "We won't be including <sys/file.h>." >&4
11490         fi
11491         ;;
11492 *)
11493         h_sysfile=false
11494         ;;
11495 esac
11496 set i_sysfile
11497 eval $setvar
11498
11499 : see if fcntl.h is there
11500 val=''
11501 set fcntl.h val
11502 eval $inhdr
11503
11504 : see if we can include fcntl.h
11505 case "$val" in
11506 "$define")
11507         echo " "
11508         if $h_fcntl; then
11509                 val="$define"
11510                 echo "We'll be including <fcntl.h>." >&4
11511         else
11512                 val="$undef"
11513                 if $h_sysfile; then
11514         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11515                 else
11516                         echo "We won't be including <fcntl.h>." >&4
11517                 fi
11518         fi
11519         ;;
11520 *)
11521         h_fcntl=false
11522         val="$undef"
11523         ;;
11524 esac
11525 set i_fcntl
11526 eval $setvar
11527
11528 : check for non-blocking I/O stuff
11529 case "$h_sysfile" in
11530 true) echo "#include <sys/file.h>" > head.c;;
11531 *)
11532        case "$h_fcntl" in
11533        true) echo "#include <fcntl.h>" > head.c;;
11534        *) echo "#include <sys/fcntl.h>" > head.c;;
11535        esac
11536        ;;
11537 esac
11538 echo " "
11539 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11540 case "$o_nonblock" in
11541 '')
11542         $cat head.c > try.c
11543         $cat >>try.c <<EOCP
11544 #include <stdio.h>
11545 #$i_stdlib I_STDLIB
11546 #ifdef I_STDLIB
11547 #include <stdlib.h>
11548 #endif
11549 #$i_fcntl I_FCNTL
11550 #ifdef I_FCNTL
11551 #include <fcntl.h>
11552 #endif
11553 int main() {
11554 #ifdef O_NONBLOCK
11555         printf("O_NONBLOCK\n");
11556         exit(0);
11557 #endif
11558 #ifdef O_NDELAY
11559         printf("O_NDELAY\n");
11560         exit(0);
11561 #endif
11562 #ifdef FNDELAY
11563         printf("FNDELAY\n");
11564         exit(0);
11565 #endif
11566         exit(0);
11567 }
11568 EOCP
11569         set try
11570         if eval $compile_ok; then
11571                 o_nonblock=`$run ./try`
11572                 case "$o_nonblock" in
11573                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11574                 *) echo "Seems like we can use $o_nonblock.";;
11575                 esac
11576         else
11577                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11578         fi
11579         ;;
11580 *) echo "Using $hint value $o_nonblock.";;
11581 esac
11582 $rm -f try try.* .out core
11583
11584 echo " "
11585 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11586 case "$eagain" in
11587 '')
11588         $cat head.c > try.c
11589         $cat >>try.c <<EOCP
11590 #include <errno.h>
11591 #include <sys/types.h>
11592 #include <signal.h>
11593 #include <stdio.h> 
11594 #$i_stdlib I_STDLIB
11595 #ifdef I_STDLIB
11596 #include <stdlib.h>
11597 #endif
11598 #$i_fcntl I_FCNTL
11599 #ifdef I_FCNTL
11600 #include <fcntl.h>
11601 #endif
11602 #define MY_O_NONBLOCK $o_nonblock
11603 #ifndef errno  /* XXX need better Configure test */
11604 extern int errno;
11605 #endif
11606 #$i_unistd I_UNISTD
11607 #ifdef I_UNISTD
11608 #include <unistd.h>
11609 #endif
11610 #$i_string I_STRING
11611 #ifdef I_STRING
11612 #include <string.h>
11613 #else
11614 #include <strings.h>
11615 #endif
11616 $signal_t blech(x) int x; { exit(3); }
11617 EOCP
11618         $cat >> try.c <<'EOCP'
11619 int main()
11620 {
11621         int pd[2];
11622         int pu[2];
11623         char buf[1];
11624         char string[100];
11625
11626         pipe(pd);       /* Down: child -> parent */
11627         pipe(pu);       /* Up: parent -> child */
11628         if (0 != fork()) {
11629                 int ret;
11630                 close(pd[1]);   /* Parent reads from pd[0] */
11631                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11632 #ifdef F_SETFL
11633                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11634                         exit(1);
11635 #else
11636                 exit(4);
11637 #endif
11638                 signal(SIGALRM, blech);
11639                 alarm(5);
11640                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11641                         exit(2);
11642                 sprintf(string, "%d\n", ret);
11643                 write(2, string, strlen(string));
11644                 alarm(0);
11645 #ifdef EAGAIN
11646                 if (errno == EAGAIN) {
11647                         printf("EAGAIN\n");
11648                         goto ok;
11649                 }
11650 #endif
11651 #ifdef EWOULDBLOCK
11652                 if (errno == EWOULDBLOCK)
11653                         printf("EWOULDBLOCK\n");
11654 #endif
11655         ok:
11656                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11657                 sleep(2);                               /* Give it time to close our pipe */
11658                 alarm(5);
11659                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11660                 alarm(0);
11661                 sprintf(string, "%d\n", ret);
11662                 write(4, string, strlen(string));
11663                 exit(0);
11664         }
11665
11666         close(pd[0]);                   /* We write to pd[1] */
11667         close(pu[1]);                   /* We read from pu[0] */
11668         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11669         close(pd[1]);                   /* Pipe pd is now fully closed! */
11670         exit(0);                                /* Bye bye, thank you for playing! */
11671 }
11672 EOCP
11673         set try
11674         if eval $compile_ok; then
11675                 echo "$startsh" >mtry
11676                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11677                 chmod +x mtry
11678                 ./mtry >/dev/null 2>&1
11679                 case $? in
11680                 0) eagain=`$cat try.out`;;
11681                 1) echo "Could not perform non-blocking setting!";;
11682                 2) echo "I did a successful read() for something that was not there!";;
11683                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11684                 4) echo "Could not find F_SETFL!";;
11685                 *) echo "Something terribly wrong happened during testing.";;
11686                 esac
11687                 rd_nodata=`$cat try.ret`
11688                 echo "A read() system call with no data present returns $rd_nodata."
11689                 case "$rd_nodata" in
11690                 0|-1) ;;
11691                 *)
11692                         echo "(That's peculiar, fixing that to be -1.)"
11693                         rd_nodata=-1
11694                         ;;
11695                 esac
11696                 case "$eagain" in
11697                 '')
11698                         echo "Forcing errno EAGAIN on read() with no data available."
11699                         eagain=EAGAIN
11700                         ;;
11701                 *)
11702                         echo "Your read() sets errno to $eagain when no data is available."
11703                         ;;
11704                 esac
11705                 status=`$cat try.err`
11706                 case "$status" in
11707                 0) echo "And it correctly returns 0 to signal EOF.";;
11708                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11709                 *) echo "However, your read() returns '$status' on EOF??";;
11710                 esac
11711                 val="$define"
11712                 if test "$status" = "$rd_nodata"; then
11713                         echo "WARNING: you can't distinguish between EOF and no data!"
11714                         val="$undef"
11715                 fi
11716         else
11717                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11718                 eagain=EAGAIN
11719         fi
11720         set d_eofnblk
11721         eval $setvar
11722         ;;
11723 *)
11724         echo "Using $hint value $eagain."
11725         echo "Your read() returns $rd_nodata when no data is present."
11726         case "$d_eofnblk" in
11727         "$define") echo "And you can see EOF because read() returns 0.";;
11728         "$undef") echo "But you can't see EOF status from read() returned value.";;
11729         *)
11730                 echo "(Assuming you can't see EOF status from read anyway.)"
11731                 d_eofnblk=$undef
11732                 ;;
11733         esac
11734         ;;
11735 esac
11736 $rm -f try try.* .out core head.c mtry
11737
11738 : see if _ptr and _cnt from stdio act std
11739 echo " "
11740
11741 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11742         echo "(Looks like you have stdio.h from BSD.)"
11743         case "$stdio_ptr" in
11744         '') stdio_ptr='((fp)->_p)'
11745                 ptr_lval=$define
11746                 ;;
11747         *)      ptr_lval=$d_stdio_ptr_lval;;
11748         esac
11749         case "$stdio_cnt" in
11750         '') stdio_cnt='((fp)->_r)'
11751                 cnt_lval=$define
11752                 ;;
11753         *)      cnt_lval=$d_stdio_cnt_lval;;
11754         esac
11755         case "$stdio_base" in
11756         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11757         esac
11758         case "$stdio_bufsiz" in
11759         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11760         esac
11761 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11762         echo "(Looks like you have stdio.h from Linux.)"
11763         case "$stdio_ptr" in
11764         '') stdio_ptr='((fp)->_IO_read_ptr)'
11765                 ptr_lval=$define
11766                 ;;
11767         *)      ptr_lval=$d_stdio_ptr_lval;;
11768         esac
11769         case "$stdio_cnt" in
11770         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11771                 cnt_lval=$undef
11772                 ;;
11773         *)      cnt_lval=$d_stdio_cnt_lval;;
11774         esac
11775         case "$stdio_base" in
11776         '') stdio_base='((fp)->_IO_read_base)';;
11777         esac
11778         case "$stdio_bufsiz" in
11779         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11780         esac
11781 else
11782         case "$stdio_ptr" in
11783         '') stdio_ptr='((fp)->_ptr)'
11784                 ptr_lval=$define
11785                 ;;
11786         *)      ptr_lval=$d_stdio_ptr_lval;;
11787         esac
11788         case "$stdio_cnt" in
11789         '') stdio_cnt='((fp)->_cnt)'
11790                 cnt_lval=$define
11791                 ;;
11792         *)      cnt_lval=$d_stdio_cnt_lval;;
11793         esac
11794         case "$stdio_base" in
11795         '') stdio_base='((fp)->_base)';;
11796         esac
11797         case "$stdio_bufsiz" in
11798         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11799         esac
11800 fi
11801
11802 : test whether _ptr and _cnt really work
11803 echo "Checking how std your stdio is..." >&4
11804 $cat >try.c <<EOP
11805 #include <stdio.h>
11806 #$i_stdlib I_STDLIB
11807 #ifdef I_STDLIB
11808 #include <stdlib.h>
11809 #endif
11810 #define FILE_ptr(fp)    $stdio_ptr
11811 #define FILE_cnt(fp)    $stdio_cnt
11812 int main() {
11813         FILE *fp = fopen("try.c", "r");
11814         char c = getc(fp);
11815         if (
11816                 18 <= FILE_cnt(fp) &&
11817                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11818         )
11819                 exit(0);
11820         exit(1);
11821 }
11822 EOP
11823 val="$undef"
11824 set try
11825 if eval $compile && $to try.c; then
11826         if $run ./try; then
11827                 echo "Your stdio acts pretty std."
11828                 val="$define"
11829         else
11830                 echo "Your stdio isn't very std."
11831         fi
11832 else
11833         echo "Your stdio doesn't appear very std."
11834 fi
11835 $rm -f try.c try
11836
11837 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11838 # direct buffer manipulation no longer works.  The Configure tests
11839 # should be changed to correctly detect this, but until then,
11840 # the following check should at least let perl compile and run.
11841 # (This quick fix should be updated before 5.8.1.)
11842 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11843 # A. Dougherty, June 3, 2002.
11844 case "$d_gnulibc" in
11845 $define)
11846         case "$gnulibc_version" in
11847         2.[01]*)  ;;
11848         2.2) ;;
11849         2.2.[0-9]) ;;
11850         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11851                 val="$undef"
11852                 ;;
11853         esac
11854         ;;
11855 esac
11856 set d_stdstdio
11857 eval $setvar
11858
11859 : Can _ptr be used as an lvalue?
11860 case "$d_stdstdio$ptr_lval" in
11861 $define$define) val=$define ;;
11862 *) val=$undef ;;
11863 esac
11864 set d_stdio_ptr_lval
11865 eval $setvar
11866
11867 : Can _cnt be used as an lvalue?
11868 case "$d_stdstdio$cnt_lval" in
11869 $define$define) val=$define ;;
11870 *) val=$undef ;;
11871 esac
11872 set d_stdio_cnt_lval
11873 eval $setvar
11874
11875
11876 : test whether setting _ptr sets _cnt as a side effect
11877 d_stdio_ptr_lval_sets_cnt="$undef"
11878 d_stdio_ptr_lval_nochange_cnt="$undef"
11879 case "$d_stdio_ptr_lval$d_stdstdio" in
11880 $define$define)
11881         echo "Checking to see what happens if we set the stdio ptr..." >&4
11882 $cat >try.c <<EOP
11883 #include <stdio.h>
11884 /* Can we scream? */
11885 /* Eat dust sed :-) */
11886 /* In the buffer space, no one can hear you scream. */
11887 #$i_stdlib I_STDLIB
11888 #ifdef I_STDLIB
11889 #include <stdlib.h>
11890 #endif
11891 #define FILE_ptr(fp)    $stdio_ptr
11892 #define FILE_cnt(fp)    $stdio_cnt
11893 #include <sys/types.h>
11894 int main() {
11895         FILE *fp = fopen("try.c", "r");
11896         int c;
11897         char *ptr;
11898         size_t cnt;
11899         if (!fp) {
11900             puts("Fail even to read");
11901             exit(1);
11902         }
11903         c = getc(fp); /* Read away the first # */
11904         if (c == EOF) {
11905             puts("Fail even to read");
11906             exit(1);
11907         }
11908         if (!(
11909                 18 <= FILE_cnt(fp) &&
11910                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11911         )) {
11912                 puts("Fail even to read");
11913                 exit (1);
11914         }
11915         ptr = (char*) FILE_ptr(fp);
11916         cnt = (size_t)FILE_cnt(fp);
11917
11918         FILE_ptr(fp) += 42;
11919
11920         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11921                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11922                 exit (1);
11923         }
11924         if (FILE_cnt(fp) <= 20) {
11925                 printf ("Fail (<20 chars to test)");
11926                 exit (1);
11927         }
11928         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11929                 puts("Fail compare");
11930                 exit (1);
11931         }
11932         if (cnt == FILE_cnt(fp)) {
11933                 puts("Pass_unchanged");
11934                 exit (0);
11935         }       
11936         if (FILE_cnt(fp) == (cnt - 42)) {
11937                 puts("Pass_changed");
11938                 exit (0);
11939         }
11940         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11941         return 1;
11942
11943 }
11944 EOP
11945         set try
11946         if eval $compile && $to try.c; then
11947                 case `$run ./try` in
11948                 Pass_changed)
11949                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11950                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11951                 Pass_unchanged)
11952                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11953                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11954                 Fail*)
11955                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11956                 *)
11957                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11958         esac
11959         else
11960                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11961         fi
11962         $rm -f try.c try
11963         ;;
11964 esac
11965
11966 : see if _base is also standard
11967 val="$undef"
11968 case "$d_stdstdio" in
11969 $define)
11970         $cat >try.c <<EOP
11971 #include <stdio.h>
11972 #$i_stdlib I_STDLIB
11973 #ifdef I_STDLIB
11974 #include <stdlib.h>
11975 #endif
11976 #define FILE_base(fp)   $stdio_base
11977 #define FILE_bufsiz(fp) $stdio_bufsiz
11978 int main() {
11979         FILE *fp = fopen("try.c", "r");
11980         char c = getc(fp);
11981         if (
11982                 19 <= FILE_bufsiz(fp) &&
11983                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11984         )
11985                 exit(0);
11986         exit(1);
11987 }
11988 EOP
11989         set try
11990         if eval $compile && $to try.c; then
11991                 if $run ./try; then
11992                         echo "And its _base field acts std."
11993                         val="$define"
11994                 else
11995                         echo "But its _base field isn't std."
11996                 fi
11997         else
11998                 echo "However, it seems to be lacking the _base field."
11999         fi
12000         $rm -f try.c try
12001         ;;
12002 esac
12003 set d_stdiobase
12004 eval $setvar
12005
12006 : see if fast_stdio exists
12007 val="$undef"
12008 case "$d_stdstdio:$d_stdio_ptr_lval" in
12009 "$define:$define")
12010         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12011         *$define*)
12012                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12013                 val="$define"
12014                 ;;
12015         esac
12016         ;;
12017 esac
12018 set d_faststdio
12019 eval $setvar
12020
12021
12022
12023 : see if fchdir exists
12024 set fchdir d_fchdir
12025 eval $inlibc
12026
12027 : see if fchmod exists
12028 set fchmod d_fchmod
12029 eval $inlibc
12030
12031 : see if fchown exists
12032 set fchown d_fchown
12033 eval $inlibc
12034
12035 : see if this is an fcntl system
12036 set fcntl d_fcntl
12037 eval $inlibc
12038
12039 echo " "
12040 : See if fcntl-based locking works.
12041 $cat >try.c <<EOCP
12042 #$i_stdlib I_STDLIB
12043 #ifdef I_STDLIB
12044 #include <stdlib.h>
12045 #endif
12046 #include <unistd.h>
12047 #include <fcntl.h>
12048 #include <signal.h>
12049 $signal_t blech(x) int x; { exit(3); }
12050 int main() {
12051 #if defined(F_SETLK) && defined(F_SETLKW)
12052      struct flock flock;
12053      int retval, fd;
12054      fd = open("try.c", O_RDONLY);
12055      flock.l_type = F_RDLCK;
12056      flock.l_whence = SEEK_SET;
12057      flock.l_start = flock.l_len = 0;
12058      signal(SIGALRM, blech);
12059      alarm(10);
12060      retval = fcntl(fd, F_SETLK, &flock);
12061      close(fd);
12062      (retval < 0 ? exit(2) : exit(0));
12063 #else
12064      exit(2);
12065 #endif
12066 }
12067 EOCP
12068 echo "Checking if fcntl-based file locking works... "
12069 case "$d_fcntl" in
12070 "$define")
12071         set try
12072         if eval $compile_ok; then
12073                 if $run ./try; then
12074                         echo "Yes, it seems to work."
12075                         val="$define"
12076                 else
12077                         echo "Nope, it didn't work."
12078                         val="$undef"
12079                         case "$?" in
12080                         3) $cat >&4 <<EOM
12081 ***
12082 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12083 *** This is (almost) impossible.
12084 *** If your NFS lock daemons are not feeling well, something like
12085 *** this may happen, please investigate.  Cannot continue, aborting.
12086 ***
12087 EOM
12088                                 exit 1
12089                                 ;;
12090                         esac
12091                 fi
12092         else
12093                 echo "I'm unable to compile the test program, so I'll assume not."
12094                 val="$undef"
12095         fi
12096         ;;
12097 *) val="$undef";
12098         echo "Nope, since you don't even have fcntl()."
12099         ;;
12100 esac
12101 set d_fcntl_can_lock
12102 eval $setvar
12103 $rm -f try*
12104
12105
12106 : check for fd_set items
12107 $cat <<EOM
12108
12109 Checking to see how well your C compiler handles fd_set and friends ...
12110 EOM
12111 $cat >try.c <<EOCP
12112 #$i_stdlib I_STDLIB
12113 #ifdef I_STDLIB
12114 #include <stdlib.h>
12115 #endif
12116 #$i_systime I_SYS_TIME
12117 #$i_sysselct I_SYS_SELECT
12118 #$d_socket HAS_SOCKET
12119 #include <sys/types.h>
12120 #ifdef HAS_SOCKET
12121 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12122 #endif
12123 #ifdef I_SYS_TIME
12124 #include <sys/time.h>
12125 #endif
12126 #ifdef I_SYS_SELECT
12127 #include <sys/select.h>
12128 #endif
12129 int main() {
12130         fd_set fds;
12131
12132 #ifdef TRYBITS
12133         if(fds.fds_bits);
12134 #endif
12135
12136 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12137         exit(0);
12138 #else
12139         exit(1);
12140 #endif
12141 }
12142 EOCP
12143 set try -DTRYBITS
12144 if eval $compile; then
12145         d_fds_bits="$define"
12146         d_fd_set="$define"
12147         echo "Well, your system knows about the normal fd_set typedef..." >&4
12148         if $run ./try; then
12149                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12150                 d_fd_macros="$define"
12151         else
12152                 $cat >&4 <<'EOM'
12153 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12154 EOM
12155                 d_fd_macros="$undef"
12156         fi
12157 else
12158         $cat <<'EOM'
12159 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12160 EOM
12161         set try
12162         if eval $compile; then
12163                 d_fds_bits="$undef"
12164                 d_fd_set="$define"
12165                 echo "Well, your system has some sort of fd_set available..." >&4
12166                 if $run ./try; then
12167                         echo "and you have the normal fd_set macros." >&4
12168                         d_fd_macros="$define"
12169                 else
12170                         $cat <<'EOM'
12171 but not the normal fd_set macros!  Gross!  More work for me...
12172 EOM
12173                         d_fd_macros="$undef"
12174                 fi
12175         else
12176         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12177                 d_fd_set="$undef"
12178                 d_fds_bits="$undef"
12179                 d_fd_macros="$undef"
12180         fi
12181 fi
12182 $rm -f try try.*
12183
12184 : see if fgetpos exists
12185 set fgetpos d_fgetpos
12186 eval $inlibc
12187
12188 : see if finite exists
12189 set finite d_finite
12190 eval $inlibc
12191
12192 : see if finitel exists
12193 set finitel d_finitel
12194 eval $inlibc
12195
12196 : see if flock exists
12197 set flock d_flock
12198 eval $inlibc
12199
12200 : see if prototype for flock is available
12201 echo " "
12202 set d_flockproto flock $i_sysfile sys/file.h
12203 eval $hasproto
12204
12205 : see if fork exists
12206 set fork d_fork
12207 eval $inlibc
12208
12209 : see if fp_class exists
12210 set fp_class d_fp_class
12211 eval $inlibc
12212
12213 : see if pathconf exists
12214 set pathconf d_pathconf
12215 eval $inlibc
12216
12217 : see if fpathconf exists
12218 set fpathconf d_fpathconf
12219 eval $inlibc
12220
12221 : see if fpclass exists
12222 set fpclass d_fpclass
12223 eval $inlibc
12224
12225 : see if fpclassify exists
12226 set fpclassify d_fpclassify
12227 eval $inlibc
12228
12229 : see if fpclassl exists
12230 set fpclassl d_fpclassl
12231 eval $inlibc
12232
12233
12234 : check for fpos64_t
12235 echo " "
12236 echo "Checking to see if you have fpos64_t..." >&4
12237 $cat >try.c <<EOCP
12238 #include <stdio.h>
12239 int main() { fpos64_t x = 7; }
12240 EOCP
12241 set try
12242 if eval $compile; then
12243         val="$define"
12244         echo "You have fpos64_t."
12245 else
12246         val="$undef"
12247         echo "You do not have fpos64_t."
12248         case "$fpossize" in
12249         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12250         esac
12251 fi
12252 $rm -f try.* try
12253 set d_fpos64_t
12254 eval $setvar
12255
12256 : see if frexpl exists
12257 set frexpl d_frexpl
12258 eval $inlibc
12259
12260 : see if this is a sys/param system
12261 set sys/param.h i_sysparam
12262 eval $inhdr
12263
12264 : see if this is a sys/mount.h system
12265 set sys/mount.h i_sysmount
12266 eval $inhdr
12267
12268
12269 echo " "
12270 echo "Checking to see if your system supports struct fs_data..." >&4
12271 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12272 eval $hasstruct
12273 case "$d_fs_data_s" in
12274 "$define")      echo "Yes, it does."   ;;
12275 *)              echo "No, it doesn't." ;;
12276 esac
12277
12278 : see if fseeko exists
12279 set fseeko d_fseeko
12280 eval $inlibc
12281 case "$longsize" in
12282 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12283 esac
12284
12285 : see if fsetpos exists
12286 set fsetpos d_fsetpos
12287 eval $inlibc
12288
12289
12290 : see if fstatfs exists
12291 set fstatfs d_fstatfs
12292 eval $inlibc
12293
12294
12295 : see if statvfs exists
12296 set statvfs d_statvfs
12297 eval $inlibc
12298
12299 : see if fstatvfs exists
12300 set fstatvfs d_fstatvfs
12301 eval $inlibc
12302
12303
12304 : see if fsync exists
12305 set fsync d_fsync
12306 eval $inlibc
12307
12308 : see if ftello exists
12309 set ftello d_ftello
12310 eval $inlibc
12311 case "$longsize" in
12312 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12313 esac
12314
12315 : see if getcwd exists
12316 set getcwd d_getcwd
12317 eval $inlibc
12318
12319 : see if getespwnam exists
12320 set getespwnam d_getespwnam
12321 eval $inlibc
12322
12323
12324 : see if getfsstat exists
12325 set getfsstat d_getfsstat
12326 eval $inlibc
12327
12328 : see if getgrent exists
12329 set getgrent d_getgrent
12330 eval $inlibc
12331
12332 : see if getgrent_r exists
12333 set getgrent_r d_getgrent_r
12334 eval $inlibc
12335 case "$d_getgrent_r" in
12336 "$define")
12337         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12338         case "$d_getgrent_r_proto:$usethreads" in
12339         ":define")      d_getgrent_r_proto=define
12340                 set d_getgrent_r_proto getgrent_r $hdrs
12341                 eval $hasproto ;;
12342         *)      ;;
12343         esac
12344         case "$d_getgrent_r_proto" in
12345         define)
12346         case "$getgrent_r_proto" in
12347         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12348         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12349         esac
12350         case "$getgrent_r_proto" in
12351         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12352         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12353         esac
12354         case "$getgrent_r_proto" in
12355         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12356         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12357         esac
12358         case "$getgrent_r_proto" in
12359         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12360         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12361         esac
12362         case "$getgrent_r_proto" in
12363         ''|0) try='int getgrent_r(struct group*, char*, int);'
12364         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12365         esac
12366         case "$getgrent_r_proto" in
12367         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12368         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12369         esac
12370         case "$getgrent_r_proto" in
12371         ''|0)   d_getgrent_r=undef
12372                 getgrent_r_proto=0
12373                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12374         * )     case "$getgrent_r_proto" in
12375                 REENTRANT_PROTO*) ;;
12376                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12377                 esac
12378                 echo "Prototype: $try" ;;
12379         esac
12380         ;;
12381         *)      case "$usethreads" in
12382                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12383                 esac
12384                 d_getgrent_r=undef
12385                 getgrent_r_proto=0
12386                 ;;
12387         esac
12388         ;;
12389 *)      getgrent_r_proto=0
12390         ;;
12391 esac
12392
12393 : see if getgrgid_r exists
12394 set getgrgid_r d_getgrgid_r
12395 eval $inlibc
12396 case "$d_getgrgid_r" in
12397 "$define")
12398         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12399         case "$d_getgrgid_r_proto:$usethreads" in
12400         ":define")      d_getgrgid_r_proto=define
12401                 set d_getgrgid_r_proto getgrgid_r $hdrs
12402                 eval $hasproto ;;
12403         *)      ;;
12404         esac
12405         case "$d_getgrgid_r_proto" in
12406         define)
12407         case "$getgrgid_r_proto" in
12408         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12409         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12410         esac
12411         case "$getgrgid_r_proto" in
12412         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12413         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12414         esac
12415         case "$getgrgid_r_proto" in
12416         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12417         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12418         esac
12419         case "$getgrgid_r_proto" in
12420         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12421         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12422         esac
12423         case "$getgrgid_r_proto" in
12424         ''|0)   d_getgrgid_r=undef
12425                 getgrgid_r_proto=0
12426                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12427         * )     case "$getgrgid_r_proto" in
12428                 REENTRANT_PROTO*) ;;
12429                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12430                 esac
12431                 echo "Prototype: $try" ;;
12432         esac
12433         ;;
12434         *)      case "$usethreads" in
12435                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12436                 esac
12437                 d_getgrgid_r=undef
12438                 getgrgid_r_proto=0
12439                 ;;
12440         esac
12441         ;;
12442 *)      getgrgid_r_proto=0
12443         ;;
12444 esac
12445
12446 : see if getgrnam_r exists
12447 set getgrnam_r d_getgrnam_r
12448 eval $inlibc
12449 case "$d_getgrnam_r" in
12450 "$define")
12451         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12452         case "$d_getgrnam_r_proto:$usethreads" in
12453         ":define")      d_getgrnam_r_proto=define
12454                 set d_getgrnam_r_proto getgrnam_r $hdrs
12455                 eval $hasproto ;;
12456         *)      ;;
12457         esac
12458         case "$d_getgrnam_r_proto" in
12459         define)
12460         case "$getgrnam_r_proto" in
12461         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12462         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12463         esac
12464         case "$getgrnam_r_proto" in
12465         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12466         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12467         esac
12468         case "$getgrnam_r_proto" in
12469         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12470         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12471         esac
12472         case "$getgrnam_r_proto" in
12473         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12474         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12475         esac
12476         case "$getgrnam_r_proto" in
12477         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12478         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12479         esac
12480         case "$getgrnam_r_proto" in
12481         ''|0)   d_getgrnam_r=undef
12482                 getgrnam_r_proto=0
12483                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12484         * )     case "$getgrnam_r_proto" in
12485                 REENTRANT_PROTO*) ;;
12486                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12487                 esac
12488                 echo "Prototype: $try" ;;
12489         esac
12490         ;;
12491         *)      case "$usethreads" in
12492                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12493                 esac
12494                 d_getgrnam_r=undef
12495                 getgrnam_r_proto=0
12496                 ;;
12497         esac
12498         ;;
12499 *)      getgrnam_r_proto=0
12500         ;;
12501 esac
12502
12503 : see if gethostbyaddr exists
12504 set gethostbyaddr d_gethbyaddr
12505 eval $inlibc
12506
12507 : see if gethostbyname exists
12508 set gethostbyname d_gethbyname
12509 eval $inlibc
12510
12511 : see if gethostent exists
12512 set gethostent d_gethent
12513 eval $inlibc
12514
12515 : see how we will look up host name
12516 echo " "
12517 call=''
12518 if set gethostname val -f d_gethname; eval $csym; $val; then
12519         echo 'gethostname() found.' >&4
12520         d_gethname="$define"
12521         call=gethostname
12522 fi
12523 if set uname val -f d_uname; eval $csym; $val; then
12524         if ./xenix; then
12525                 $cat <<'EOM'
12526 uname() was found, but you're running xenix, and older versions of xenix
12527 have a broken uname(). If you don't really know whether your xenix is old
12528 enough to have a broken system call, use the default answer.
12529
12530 EOM
12531                 dflt=y
12532                 case "$d_uname" in
12533                 "$define") dflt=n;;
12534                 esac
12535                 rp='Is your uname() broken?'
12536                 . ./myread
12537                 case "$ans" in
12538                 n*) d_uname="$define"; call=uname;;
12539                 esac
12540         else
12541                 echo 'uname() found.' >&4
12542                 d_uname="$define"
12543                 case "$call" in
12544                 '') call=uname ;;
12545                 esac
12546         fi
12547 fi
12548 case "$d_gethname" in
12549 '') d_gethname="$undef";;
12550 esac
12551 case "$d_uname" in
12552 '') d_uname="$undef";;
12553 esac
12554 case "$d_uname$d_gethname" in
12555 *define*)
12556         dflt=n
12557         cat <<EOM
12558  
12559 Every now and then someone has a $call() that lies about the hostname
12560 but can't be fixed for political or economic reasons.  If you wish, I can
12561 pretend $call() isn't there and maybe compute hostname at run-time
12562 thanks to the '$phostname' command.
12563
12564 EOM
12565         rp="Shall I ignore $call() from now on?"
12566         . ./myread
12567         case "$ans" in
12568         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12569         esac;;
12570 esac
12571 case "$phostname" in
12572 '') aphostname='';;
12573 *) case "$aphostname" in
12574         /*) ;;
12575         *) set X $phostname
12576                 shift
12577                 file=$1
12578                 shift
12579                 file=`./loc $file $file $pth`
12580                 aphostname=`echo $file $*`
12581                 ;;
12582         esac
12583         ;;
12584 esac
12585 case "$d_uname$d_gethname" in
12586 *define*) ;;
12587 *)
12588         case "$phostname" in
12589         '')
12590                 echo "There will be no way for $package to get your hostname." >&4;;
12591         *)
12592         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12593                 ;;
12594         esac;;
12595 esac
12596 case "$d_phostname" in
12597 '') d_phostname="$undef";;
12598 esac
12599
12600 : see if gethostbyaddr_r exists
12601 set gethostbyaddr_r d_gethostbyaddr_r
12602 eval $inlibc
12603 case "$d_gethostbyaddr_r" in
12604 "$define")
12605         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12606         case "$d_gethostbyaddr_r_proto:$usethreads" in
12607         ":define")      d_gethostbyaddr_r_proto=define
12608                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12609                 eval $hasproto ;;
12610         *)      ;;
12611         esac
12612         case "$d_gethostbyaddr_r_proto" in
12613         define)
12614         case "$gethostbyaddr_r_proto" in
12615         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12616         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12617         esac
12618         case "$gethostbyaddr_r_proto" in
12619         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12620         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12621         esac
12622         case "$gethostbyaddr_r_proto" in
12623         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12624         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12625         esac
12626         case "$gethostbyaddr_r_proto" in
12627         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12628         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12629         esac
12630         case "$gethostbyaddr_r_proto" in
12631         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12632         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12633         esac
12634         case "$gethostbyaddr_r_proto" in
12635         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12636         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12637         esac
12638         case "$gethostbyaddr_r_proto" in
12639         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12640         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12641         esac
12642         case "$gethostbyaddr_r_proto" in
12643         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12644         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12645         esac
12646         case "$gethostbyaddr_r_proto" in
12647         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12648         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12649         esac
12650         case "$gethostbyaddr_r_proto" in
12651         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12652         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12653         esac
12654         case "$gethostbyaddr_r_proto" in
12655         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12656         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12657         esac
12658         case "$gethostbyaddr_r_proto" in
12659         ''|0)   d_gethostbyaddr_r=undef
12660                 gethostbyaddr_r_proto=0
12661                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12662         * )     case "$gethostbyaddr_r_proto" in
12663                 REENTRANT_PROTO*) ;;
12664                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12665                 esac
12666                 echo "Prototype: $try" ;;
12667         esac
12668         ;;
12669         *)      case "$usethreads" in
12670                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12671                 esac
12672                 d_gethostbyaddr_r=undef
12673                 gethostbyaddr_r_proto=0
12674                 ;;
12675         esac
12676         ;;
12677 *)      gethostbyaddr_r_proto=0
12678         ;;
12679 esac
12680
12681 : see if gethostbyname_r exists
12682 set gethostbyname_r d_gethostbyname_r
12683 eval $inlibc
12684 case "$d_gethostbyname_r" in
12685 "$define")
12686         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12687         case "$d_gethostbyname_r_proto:$usethreads" in
12688         ":define")      d_gethostbyname_r_proto=define
12689                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12690                 eval $hasproto ;;
12691         *)      ;;
12692         esac
12693         case "$d_gethostbyname_r_proto" in
12694         define)
12695         case "$gethostbyname_r_proto" in
12696         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12697         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12698         esac
12699         case "$gethostbyname_r_proto" in
12700         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12701         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12702         esac
12703         case "$gethostbyname_r_proto" in
12704         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12705         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12706         esac
12707         case "$gethostbyname_r_proto" in
12708         ''|0)   d_gethostbyname_r=undef
12709                 gethostbyname_r_proto=0
12710                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12711         * )     case "$gethostbyname_r_proto" in
12712                 REENTRANT_PROTO*) ;;
12713                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12714                 esac
12715                 echo "Prototype: $try" ;;
12716         esac
12717         ;;
12718         *)      case "$usethreads" in
12719                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12720                 esac
12721                 d_gethostbyname_r=undef
12722                 gethostbyname_r_proto=0
12723                 ;;
12724         esac
12725         ;;
12726 *)      gethostbyname_r_proto=0
12727         ;;
12728 esac
12729
12730 : see if gethostent_r exists
12731 set gethostent_r d_gethostent_r
12732 eval $inlibc
12733 case "$d_gethostent_r" in
12734 "$define")
12735         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12736         case "$d_gethostent_r_proto:$usethreads" in
12737         ":define")      d_gethostent_r_proto=define
12738                 set d_gethostent_r_proto gethostent_r $hdrs
12739                 eval $hasproto ;;
12740         *)      ;;
12741         esac
12742         case "$d_gethostent_r_proto" in
12743         define)
12744         case "$gethostent_r_proto" in
12745         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12746         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12747         esac
12748         case "$gethostent_r_proto" in
12749         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12750         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12751         esac
12752         case "$gethostent_r_proto" in
12753         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12754         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12755         esac
12756         case "$gethostent_r_proto" in
12757         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12758         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12759         esac
12760         case "$gethostent_r_proto" in
12761         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12762         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12763         esac
12764         case "$gethostent_r_proto" in
12765         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12766         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12767         esac
12768         case "$gethostent_r_proto" in
12769         ''|0)   d_gethostent_r=undef
12770                 gethostent_r_proto=0
12771                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12772         * )     case "$gethostent_r_proto" in
12773                 REENTRANT_PROTO*) ;;
12774                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12775                 esac
12776                 echo "Prototype: $try" ;;
12777         esac
12778         ;;
12779         *)      case "$usethreads" in
12780                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12781                 esac
12782                 d_gethostent_r=undef
12783                 gethostent_r_proto=0
12784                 ;;
12785         esac
12786         ;;
12787 *)      gethostent_r_proto=0
12788         ;;
12789 esac
12790
12791 : see if prototypes for various gethostxxx netdb.h functions are available
12792 echo " "
12793 set d_gethostprotos gethostent $i_netdb netdb.h
12794 eval $hasproto
12795
12796 : see if getitimer exists
12797 set getitimer d_getitimer
12798 eval $inlibc
12799
12800 : see if getlogin exists
12801 set getlogin d_getlogin
12802 eval $inlibc
12803
12804 : see if getlogin_r exists
12805 set getlogin_r d_getlogin_r
12806 eval $inlibc
12807 case "$d_getlogin_r" in
12808 "$define")
12809         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12810         case "$d_getlogin_r_proto:$usethreads" in
12811         ":define")      d_getlogin_r_proto=define
12812                 set d_getlogin_r_proto getlogin_r $hdrs
12813                 eval $hasproto ;;
12814         *)      ;;
12815         esac
12816         case "$d_getlogin_r_proto" in
12817         define)
12818         case "$getlogin_r_proto" in
12819         ''|0) try='int getlogin_r(char*, size_t);'
12820         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12821         esac
12822         case "$getlogin_r_proto" in
12823         ''|0) try='int getlogin_r(char*, int);'
12824         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12825         esac
12826         case "$getlogin_r_proto" in
12827         ''|0) try='char* getlogin_r(char*, size_t);'
12828         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12829         esac
12830         case "$getlogin_r_proto" in
12831         ''|0) try='char* getlogin_r(char*, int);'
12832         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12833         esac
12834         case "$getlogin_r_proto" in
12835         ''|0)   d_getlogin_r=undef
12836                 getlogin_r_proto=0
12837                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12838         * )     case "$getlogin_r_proto" in
12839                 REENTRANT_PROTO*) ;;
12840                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12841                 esac
12842                 echo "Prototype: $try" ;;
12843         esac
12844         ;;
12845         *)      case "$usethreads" in
12846                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12847                 esac
12848                 d_getlogin_r=undef
12849                 getlogin_r_proto=0
12850                 ;;
12851         esac
12852         ;;
12853 *)      getlogin_r_proto=0
12854         ;;
12855 esac
12856
12857 : see if getmnt exists
12858 set getmnt d_getmnt
12859 eval $inlibc
12860
12861 : see if getmntent exists
12862 set getmntent d_getmntent
12863 eval $inlibc
12864
12865 : see if getnetbyaddr exists
12866 set getnetbyaddr d_getnbyaddr
12867 eval $inlibc
12868
12869 : see if getnetbyname exists
12870 set getnetbyname d_getnbyname
12871 eval $inlibc
12872
12873 : see if getnetent exists
12874 set getnetent d_getnent
12875 eval $inlibc
12876
12877 : see if getnetbyaddr_r exists
12878 set getnetbyaddr_r d_getnetbyaddr_r
12879 eval $inlibc
12880 case "$d_getnetbyaddr_r" in
12881 "$define")
12882         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12883         case "$d_getnetbyaddr_r_proto:$usethreads" in
12884         ":define")      d_getnetbyaddr_r_proto=define
12885                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12886                 eval $hasproto ;;
12887         *)      ;;
12888         esac
12889         case "$d_getnetbyaddr_r_proto" in
12890         define)
12891         case "$getnetbyaddr_r_proto" in
12892         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12893         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12894         esac
12895         case "$getnetbyaddr_r_proto" in
12896         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12897         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12898         esac
12899         case "$getnetbyaddr_r_proto" in
12900         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12901         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12902         esac
12903         case "$getnetbyaddr_r_proto" in
12904         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12905         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12906         esac
12907         case "$getnetbyaddr_r_proto" in
12908         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12909         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12910         esac
12911         case "$getnetbyaddr_r_proto" in
12912         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12913         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12914         esac
12915         case "$getnetbyaddr_r_proto" in
12916         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12917         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12918         esac
12919         case "$getnetbyaddr_r_proto" in
12920         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12921         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12922         esac
12923         case "$getnetbyaddr_r_proto" in
12924         ''|0)   d_getnetbyaddr_r=undef
12925                 getnetbyaddr_r_proto=0
12926                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12927         * )     case "$getnetbyaddr_r_proto" in
12928                 REENTRANT_PROTO*) ;;
12929                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12930                 esac
12931                 echo "Prototype: $try" ;;
12932         esac
12933         ;;
12934         *)      case "$usethreads" in
12935                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12936                 esac
12937                 d_getnetbyaddr_r=undef
12938                 getnetbyaddr_r_proto=0
12939                 ;;
12940         esac
12941         ;;
12942 *)      getnetbyaddr_r_proto=0
12943         ;;
12944 esac
12945
12946 : see if getnetbyname_r exists
12947 set getnetbyname_r d_getnetbyname_r
12948 eval $inlibc
12949 case "$d_getnetbyname_r" in
12950 "$define")
12951         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12952         case "$d_getnetbyname_r_proto:$usethreads" in
12953         ":define")      d_getnetbyname_r_proto=define
12954                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12955                 eval $hasproto ;;
12956         *)      ;;
12957         esac
12958         case "$d_getnetbyname_r_proto" in
12959         define)
12960         case "$getnetbyname_r_proto" in
12961         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12962         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12963         esac
12964         case "$getnetbyname_r_proto" in
12965         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12966         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12967         esac
12968         case "$getnetbyname_r_proto" in
12969         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12970         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12971         esac
12972         case "$getnetbyname_r_proto" in
12973         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12974         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12975         esac
12976         case "$getnetbyname_r_proto" in
12977         ''|0)   d_getnetbyname_r=undef
12978                 getnetbyname_r_proto=0
12979                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12980         * )     case "$getnetbyname_r_proto" in
12981                 REENTRANT_PROTO*) ;;
12982                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12983                 esac
12984                 echo "Prototype: $try" ;;
12985         esac
12986         ;;
12987         *)      case "$usethreads" in
12988                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12989                 esac
12990                 d_getnetbyname_r=undef
12991                 getnetbyname_r_proto=0
12992                 ;;
12993         esac
12994         ;;
12995 *)      getnetbyname_r_proto=0
12996         ;;
12997 esac
12998
12999 : see if getnetent_r exists
13000 set getnetent_r d_getnetent_r
13001 eval $inlibc
13002 case "$d_getnetent_r" in
13003 "$define")
13004         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13005         case "$d_getnetent_r_proto:$usethreads" in
13006         ":define")      d_getnetent_r_proto=define
13007                 set d_getnetent_r_proto getnetent_r $hdrs
13008                 eval $hasproto ;;
13009         *)      ;;
13010         esac
13011         case "$d_getnetent_r_proto" in
13012         define)
13013         case "$getnetent_r_proto" in
13014         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13015         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13016         esac
13017         case "$getnetent_r_proto" in
13018         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13019         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13020         esac
13021         case "$getnetent_r_proto" in
13022         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13023         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13024         esac
13025         case "$getnetent_r_proto" in
13026         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13027         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13028         esac
13029         case "$getnetent_r_proto" in
13030         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13031         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13032         esac
13033         case "$getnetent_r_proto" in
13034         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13035         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13036         esac
13037         case "$getnetent_r_proto" in
13038         ''|0)   d_getnetent_r=undef
13039                 getnetent_r_proto=0
13040                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13041         * )     case "$getnetent_r_proto" in
13042                 REENTRANT_PROTO*) ;;
13043                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13044                 esac
13045                 echo "Prototype: $try" ;;
13046         esac
13047         ;;
13048         *)      case "$usethreads" in
13049                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13050                 esac
13051                 d_getnetent_r=undef
13052                 getnetent_r_proto=0
13053                 ;;
13054         esac
13055         ;;
13056 *)      getnetent_r_proto=0
13057         ;;
13058 esac
13059
13060 : see if prototypes for various getnetxxx netdb.h functions are available
13061 echo " "
13062 set d_getnetprotos getnetent $i_netdb netdb.h
13063 eval $hasproto
13064
13065 : see if getpagesize exists
13066 set getpagesize d_getpagsz
13067 eval $inlibc
13068
13069
13070 : see if getprotobyname exists
13071 set getprotobyname d_getpbyname
13072 eval $inlibc
13073
13074 : see if getprotobynumber exists
13075 set getprotobynumber d_getpbynumber
13076 eval $inlibc
13077
13078 : see if getprotoent exists
13079 set getprotoent d_getpent
13080 eval $inlibc
13081
13082 : see if getpgid exists
13083 set getpgid d_getpgid
13084 eval $inlibc
13085
13086 : see if getpgrp2 exists
13087 set getpgrp2 d_getpgrp2
13088 eval $inlibc
13089
13090 : see if getppid exists
13091 set getppid d_getppid
13092 eval $inlibc
13093
13094 : see if getpriority exists
13095 set getpriority d_getprior
13096 eval $inlibc
13097
13098 : see if getprotobyname_r exists
13099 set getprotobyname_r d_getprotobyname_r
13100 eval $inlibc
13101 case "$d_getprotobyname_r" in
13102 "$define")
13103         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13104         case "$d_getprotobyname_r_proto:$usethreads" in
13105         ":define")      d_getprotobyname_r_proto=define
13106                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13107                 eval $hasproto ;;
13108         *)      ;;
13109         esac
13110         case "$d_getprotobyname_r_proto" in
13111         define)
13112         case "$getprotobyname_r_proto" in
13113         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13114         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13115         esac
13116         case "$getprotobyname_r_proto" in
13117         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13118         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13119         esac
13120         case "$getprotobyname_r_proto" in
13121         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13122         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13123         esac
13124         case "$getprotobyname_r_proto" in
13125         ''|0)   d_getprotobyname_r=undef
13126                 getprotobyname_r_proto=0
13127                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13128         * )     case "$getprotobyname_r_proto" in
13129                 REENTRANT_PROTO*) ;;
13130                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13131                 esac
13132                 echo "Prototype: $try" ;;
13133         esac
13134         ;;
13135         *)      case "$usethreads" in
13136                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13137                 esac
13138                 d_getprotobyname_r=undef
13139                 getprotobyname_r_proto=0
13140                 ;;
13141         esac
13142         ;;
13143 *)      getprotobyname_r_proto=0
13144         ;;
13145 esac
13146
13147 : see if getprotobynumber_r exists
13148 set getprotobynumber_r d_getprotobynumber_r
13149 eval $inlibc
13150 case "$d_getprotobynumber_r" in
13151 "$define")
13152         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13153         case "$d_getprotobynumber_r_proto:$usethreads" in
13154         ":define")      d_getprotobynumber_r_proto=define
13155                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13156                 eval $hasproto ;;
13157         *)      ;;
13158         esac
13159         case "$d_getprotobynumber_r_proto" in
13160         define)
13161         case "$getprotobynumber_r_proto" in
13162         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13163         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13164         esac
13165         case "$getprotobynumber_r_proto" in
13166         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13167         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13168         esac
13169         case "$getprotobynumber_r_proto" in
13170         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13171         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13172         esac
13173         case "$getprotobynumber_r_proto" in
13174         ''|0)   d_getprotobynumber_r=undef
13175                 getprotobynumber_r_proto=0
13176                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13177         * )     case "$getprotobynumber_r_proto" in
13178                 REENTRANT_PROTO*) ;;
13179                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13180                 esac
13181                 echo "Prototype: $try" ;;
13182         esac
13183         ;;
13184         *)      case "$usethreads" in
13185                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13186                 esac
13187                 d_getprotobynumber_r=undef
13188                 getprotobynumber_r_proto=0
13189                 ;;
13190         esac
13191         ;;
13192 *)      getprotobynumber_r_proto=0
13193         ;;
13194 esac
13195
13196 : see if getprotoent_r exists
13197 set getprotoent_r d_getprotoent_r
13198 eval $inlibc
13199 case "$d_getprotoent_r" in
13200 "$define")
13201         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13202         case "$d_getprotoent_r_proto:$usethreads" in
13203         ":define")      d_getprotoent_r_proto=define
13204                 set d_getprotoent_r_proto getprotoent_r $hdrs
13205                 eval $hasproto ;;
13206         *)      ;;
13207         esac
13208         case "$d_getprotoent_r_proto" in
13209         define)
13210         case "$getprotoent_r_proto" in
13211         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13212         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13213         esac
13214         case "$getprotoent_r_proto" in
13215         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13216         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13217         esac
13218         case "$getprotoent_r_proto" in
13219         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13220         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13221         esac
13222         case "$getprotoent_r_proto" in
13223         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13224         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13225         esac
13226         case "$getprotoent_r_proto" in
13227         ''|0)   d_getprotoent_r=undef
13228                 getprotoent_r_proto=0
13229                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13230         * )     case "$getprotoent_r_proto" in
13231                 REENTRANT_PROTO*) ;;
13232                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13233                 esac
13234                 echo "Prototype: $try" ;;
13235         esac
13236         ;;
13237         *)      case "$usethreads" in
13238                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13239                 esac
13240                 d_getprotoent_r=undef
13241                 getprotoent_r_proto=0
13242                 ;;
13243         esac
13244         ;;
13245 *)      getprotoent_r_proto=0
13246         ;;
13247 esac
13248
13249 : see if prototypes for various getprotoxxx netdb.h functions are available
13250 echo " "
13251 set d_getprotoprotos getprotoent $i_netdb netdb.h
13252 eval $hasproto
13253
13254 : see if getprpwnam exists
13255 set getprpwnam d_getprpwnam
13256 eval $inlibc
13257
13258 : see if getpwent exists
13259 set getpwent d_getpwent
13260 eval $inlibc
13261
13262 : see if getpwent_r exists
13263 set getpwent_r d_getpwent_r
13264 eval $inlibc
13265 case "$d_getpwent_r" in
13266 "$define")
13267         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13268         case "$d_getpwent_r_proto:$usethreads" in
13269         ":define")      d_getpwent_r_proto=define
13270                 set d_getpwent_r_proto getpwent_r $hdrs
13271                 eval $hasproto ;;
13272         *)      ;;
13273         esac
13274         case "$d_getpwent_r_proto" in
13275         define)
13276         case "$getpwent_r_proto" in
13277         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13278         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13279         esac
13280         case "$getpwent_r_proto" in
13281         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13282         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13283         esac
13284         case "$getpwent_r_proto" in
13285         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13286         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13287         esac
13288         case "$getpwent_r_proto" in
13289         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13290         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13291         esac
13292         case "$getpwent_r_proto" in
13293         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13294         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13295         esac
13296         case "$getpwent_r_proto" in
13297         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13298         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13299         esac
13300         case "$getpwent_r_proto" in
13301         ''|0)   d_getpwent_r=undef
13302                 getpwent_r_proto=0
13303                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13304         * )     case "$getpwent_r_proto" in
13305                 REENTRANT_PROTO*) ;;
13306                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13307                 esac
13308                 echo "Prototype: $try" ;;
13309         esac
13310         ;;
13311         *)      case "$usethreads" in
13312                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13313                 esac
13314                 d_getpwent_r=undef
13315                 getpwent_r_proto=0
13316                 ;;
13317         esac
13318         ;;
13319 *)      getpwent_r_proto=0
13320         ;;
13321 esac
13322
13323 : see if getpwnam_r exists
13324 set getpwnam_r d_getpwnam_r
13325 eval $inlibc
13326 case "$d_getpwnam_r" in
13327 "$define")
13328         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13329         case "$d_getpwnam_r_proto:$usethreads" in
13330         ":define")      d_getpwnam_r_proto=define
13331                 set d_getpwnam_r_proto getpwnam_r $hdrs
13332                 eval $hasproto ;;
13333         *)      ;;
13334         esac
13335         case "$d_getpwnam_r_proto" in
13336         define)
13337         case "$getpwnam_r_proto" in
13338         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13339         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13340         esac
13341         case "$getpwnam_r_proto" in
13342         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13343         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13344         esac
13345         case "$getpwnam_r_proto" in
13346         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13347         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13348         esac
13349         case "$getpwnam_r_proto" in
13350         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13351         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13352         esac
13353         case "$getpwnam_r_proto" in
13354         ''|0)   d_getpwnam_r=undef
13355                 getpwnam_r_proto=0
13356                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13357         * )     case "$getpwnam_r_proto" in
13358                 REENTRANT_PROTO*) ;;
13359                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13360                 esac
13361                 echo "Prototype: $try" ;;
13362         esac
13363         ;;
13364         *)      case "$usethreads" in
13365                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13366                 esac
13367                 d_getpwnam_r=undef
13368                 getpwnam_r_proto=0
13369                 ;;
13370         esac
13371         ;;
13372 *)      getpwnam_r_proto=0
13373         ;;
13374 esac
13375
13376 : see if getpwuid_r exists
13377 set getpwuid_r d_getpwuid_r
13378 eval $inlibc
13379 case "$d_getpwuid_r" in
13380 "$define")
13381         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13382         case "$d_getpwuid_r_proto:$usethreads" in
13383         ":define")      d_getpwuid_r_proto=define
13384                 set d_getpwuid_r_proto getpwuid_r $hdrs
13385                 eval $hasproto ;;
13386         *)      ;;
13387         esac
13388         case "$d_getpwuid_r_proto" in
13389         define)
13390         case "$getpwuid_r_proto" in
13391         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13392         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13393         esac
13394         case "$getpwuid_r_proto" in
13395         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13396         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13397         esac
13398         case "$getpwuid_r_proto" in
13399         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13400         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13401         esac
13402         case "$getpwuid_r_proto" in
13403         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13404         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13405         esac
13406         case "$getpwuid_r_proto" in
13407         ''|0)   d_getpwuid_r=undef
13408                 getpwuid_r_proto=0
13409                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13410         * )     case "$getpwuid_r_proto" in
13411                 REENTRANT_PROTO*) ;;
13412                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13413                 esac
13414                 echo "Prototype: $try" ;;
13415         esac
13416         ;;
13417         *)      case "$usethreads" in
13418                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13419                 esac
13420                 d_getpwuid_r=undef
13421                 getpwuid_r_proto=0
13422                 ;;
13423         esac
13424         ;;
13425 *)      getpwuid_r_proto=0
13426         ;;
13427 esac
13428
13429
13430 : see if getservbyname exists
13431 set getservbyname d_getsbyname
13432 eval $inlibc
13433
13434 : see if getservbyport exists
13435 set getservbyport d_getsbyport
13436 eval $inlibc
13437
13438 : see if getservent exists
13439 set getservent d_getsent
13440 eval $inlibc
13441
13442 : see if getservbyname_r exists
13443 set getservbyname_r d_getservbyname_r
13444 eval $inlibc
13445 case "$d_getservbyname_r" in
13446 "$define")
13447         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13448         case "$d_getservbyname_r_proto:$usethreads" in
13449         ":define")      d_getservbyname_r_proto=define
13450                 set d_getservbyname_r_proto getservbyname_r $hdrs
13451                 eval $hasproto ;;
13452         *)      ;;
13453         esac
13454         case "$d_getservbyname_r_proto" in
13455         define)
13456         case "$getservbyname_r_proto" in
13457         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13458         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13459         esac
13460         case "$getservbyname_r_proto" in
13461         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13462         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13463         esac
13464         case "$getservbyname_r_proto" in
13465         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13466         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13467         esac
13468         case "$getservbyname_r_proto" in
13469         ''|0)   d_getservbyname_r=undef
13470                 getservbyname_r_proto=0
13471                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13472         * )     case "$getservbyname_r_proto" in
13473                 REENTRANT_PROTO*) ;;
13474                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13475                 esac
13476                 echo "Prototype: $try" ;;
13477         esac
13478         ;;
13479         *)      case "$usethreads" in
13480                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13481                 esac
13482                 d_getservbyname_r=undef
13483                 getservbyname_r_proto=0
13484                 ;;
13485         esac
13486         ;;
13487 *)      getservbyname_r_proto=0
13488         ;;
13489 esac
13490
13491 : see if getservbyport_r exists
13492 set getservbyport_r d_getservbyport_r
13493 eval $inlibc
13494 case "$d_getservbyport_r" in
13495 "$define")
13496         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13497         case "$d_getservbyport_r_proto:$usethreads" in
13498         ":define")      d_getservbyport_r_proto=define
13499                 set d_getservbyport_r_proto getservbyport_r $hdrs
13500                 eval $hasproto ;;
13501         *)      ;;
13502         esac
13503         case "$d_getservbyport_r_proto" in
13504         define)
13505         case "$getservbyport_r_proto" in
13506         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13507         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13508         esac
13509         case "$getservbyport_r_proto" in
13510         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13511         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13512         esac
13513         case "$getservbyport_r_proto" in
13514         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13515         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13516         esac
13517         case "$getservbyport_r_proto" in
13518         ''|0)   d_getservbyport_r=undef
13519                 getservbyport_r_proto=0
13520                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13521         * )     case "$getservbyport_r_proto" in
13522                 REENTRANT_PROTO*) ;;
13523                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13524                 esac
13525                 echo "Prototype: $try" ;;
13526         esac
13527         ;;
13528         *)      case "$usethreads" in
13529                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13530                 esac
13531                 d_getservbyport_r=undef
13532                 getservbyport_r_proto=0
13533                 ;;
13534         esac
13535         ;;
13536 *)      getservbyport_r_proto=0
13537         ;;
13538 esac
13539
13540 : see if getservent_r exists
13541 set getservent_r d_getservent_r
13542 eval $inlibc
13543 case "$d_getservent_r" in
13544 "$define")
13545         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13546         case "$d_getservent_r_proto:$usethreads" in
13547         ":define")      d_getservent_r_proto=define
13548                 set d_getservent_r_proto getservent_r $hdrs
13549                 eval $hasproto ;;
13550         *)      ;;
13551         esac
13552         case "$d_getservent_r_proto" in
13553         define)
13554         case "$getservent_r_proto" in
13555         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13556         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13557         esac
13558         case "$getservent_r_proto" in
13559         ''|0) try='int getservent_r(struct servent*, char*, int);'
13560         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13561         esac
13562         case "$getservent_r_proto" in
13563         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13564         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13565         esac
13566         case "$getservent_r_proto" in
13567         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13568         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13569         esac
13570         case "$getservent_r_proto" in
13571         ''|0)   d_getservent_r=undef
13572                 getservent_r_proto=0
13573                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13574         * )     case "$getservent_r_proto" in
13575                 REENTRANT_PROTO*) ;;
13576                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13577                 esac
13578                 echo "Prototype: $try" ;;
13579         esac
13580         ;;
13581         *)      case "$usethreads" in
13582                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13583                 esac
13584                 d_getservent_r=undef
13585                 getservent_r_proto=0
13586                 ;;
13587         esac
13588         ;;
13589 *)      getservent_r_proto=0
13590         ;;
13591 esac
13592
13593 : see if prototypes for various getservxxx netdb.h functions are available
13594 echo " "
13595 set d_getservprotos getservent $i_netdb netdb.h
13596 eval $hasproto
13597
13598 : see if getspnam exists
13599 set getspnam d_getspnam
13600 eval $inlibc
13601
13602 : see if this is a shadow.h system
13603 set shadow.h i_shadow
13604 eval $inhdr
13605
13606 : see if getspnam_r exists
13607 set getspnam_r d_getspnam_r
13608 eval $inlibc
13609 case "$d_getspnam_r" in
13610 "$define")
13611         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13612         case "$d_getspnam_r_proto:$usethreads" in
13613         ":define")      d_getspnam_r_proto=define
13614                 set d_getspnam_r_proto getspnam_r $hdrs
13615                 eval $hasproto ;;
13616         *)      ;;
13617         esac
13618         case "$d_getspnam_r_proto" in
13619         define)
13620         case "$getspnam_r_proto" in
13621         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13622         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13623         esac
13624         case "$getspnam_r_proto" in
13625         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13626         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13627         esac
13628         case "$getspnam_r_proto" in
13629         ''|0)   d_getspnam_r=undef
13630                 getspnam_r_proto=0
13631                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13632         * )     case "$getspnam_r_proto" in
13633                 REENTRANT_PROTO*) ;;
13634                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13635                 esac
13636                 echo "Prototype: $try" ;;
13637         esac
13638         ;;
13639         *)      case "$usethreads" in
13640                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13641                 esac
13642                 d_getspnam_r=undef
13643                 getspnam_r_proto=0
13644                 ;;
13645         esac
13646         ;;
13647 *)      getspnam_r_proto=0
13648         ;;
13649 esac
13650
13651 : see if gettimeofday or ftime exists
13652 set gettimeofday d_gettimeod
13653 eval $inlibc
13654 case "$d_gettimeod" in
13655 "$undef")
13656         set ftime d_ftime 
13657         eval $inlibc
13658         ;;
13659 *)
13660         val="$undef"; set d_ftime; eval $setvar
13661         ;;
13662 esac
13663 case "$d_gettimeod$d_ftime" in
13664 "$undef$undef")
13665         echo " "
13666         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13667         ;;
13668 esac
13669
13670 : see if gmtime_r exists
13671 set gmtime_r d_gmtime_r
13672 eval $inlibc
13673 case "$d_gmtime_r" in
13674 "$define")
13675         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13676         case "$d_gmtime_r_proto:$usethreads" in
13677         ":define")      d_gmtime_r_proto=define
13678                 set d_gmtime_r_proto gmtime_r $hdrs
13679                 eval $hasproto ;;
13680         *)      ;;
13681         esac
13682         case "$d_gmtime_r_proto" in
13683         define)
13684         case "$gmtime_r_proto" in
13685         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13686         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13687         esac
13688         case "$gmtime_r_proto" in
13689         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13690         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13691         esac
13692         case "$gmtime_r_proto" in
13693         ''|0)   d_gmtime_r=undef
13694                 gmtime_r_proto=0
13695                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13696         * )     case "$gmtime_r_proto" in
13697                 REENTRANT_PROTO*) ;;
13698                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13699                 esac
13700                 echo "Prototype: $try" ;;
13701         esac
13702         ;;
13703         *)      case "$usethreads" in
13704                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13705                 esac
13706                 d_gmtime_r=undef
13707                 gmtime_r_proto=0
13708                 ;;
13709         esac
13710         ;;
13711 *)      gmtime_r_proto=0
13712         ;;
13713 esac
13714
13715 : see if hasmntopt exists
13716 set hasmntopt d_hasmntopt
13717 eval $inlibc
13718
13719 : see if this is a netinet/in.h or sys/in.h system
13720 set netinet/in.h i_niin sys/in.h i_sysin
13721 eval $inhdr
13722
13723 : see if arpa/inet.h has to be included
13724 set arpa/inet.h i_arpainet
13725 eval $inhdr
13726
13727 : see if htonl --and friends-- exists
13728 val=''
13729 set htonl val
13730 eval $inlibc
13731
13732 : Maybe they are macros.
13733 case "$val" in
13734 $undef)
13735         $cat >htonl.c <<EOM
13736 #include <stdio.h>
13737 #include <sys/types.h>
13738 #$i_niin I_NETINET_IN
13739 #$i_sysin I_SYS_IN
13740 #$i_arpainet I_ARPA_INET
13741 #ifdef I_NETINET_IN
13742 #include <netinet/in.h>
13743 #endif
13744 #ifdef I_SYS_IN
13745 #include <sys/in.h>
13746 #endif
13747 #ifdef I_ARPA_INET
13748 #include <arpa/inet.h>
13749 #endif
13750 #ifdef htonl
13751 printf("Defined as a macro.");
13752 #endif
13753 EOM
13754         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13755         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13756                 val="$define"
13757                 echo "But it seems to be defined as a macro." >&4
13758         fi
13759         $rm -f htonl.?
13760         ;;
13761 esac
13762 set d_htonl
13763 eval $setvar
13764
13765 : see if ilogbl exists
13766 set ilogbl d_ilogbl
13767 eval $inlibc
13768
13769 : index or strchr
13770 echo " "
13771 if set index val -f; eval $csym; $val; then
13772         if set strchr val -f d_strchr; eval $csym; $val; then
13773                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13774                         val="$define"
13775                         vali="$undef"
13776                         echo "strchr() found." >&4
13777                 else
13778                         val="$undef"
13779                         vali="$define"
13780                         echo "index() found." >&4
13781                 fi
13782         else
13783                 val="$undef"
13784                 vali="$define"
13785                 echo "index() found." >&4
13786         fi
13787 else
13788         if set strchr val -f d_strchr; eval $csym; $val; then
13789                 val="$define"
13790                 vali="$undef"
13791                 echo "strchr() found." >&4
13792         else
13793                 echo "No index() or strchr() found!" >&4
13794                 val="$undef"
13795                 vali="$undef"
13796         fi
13797 fi
13798 set d_strchr; eval $setvar
13799 val="$vali"
13800 set d_index; eval $setvar
13801
13802 : check whether inet_aton exists
13803 set inet_aton d_inetaton
13804 eval $inlibc
13805
13806 : Look for isascii
13807 echo " "
13808 $cat >isascii.c <<EOCP
13809 #include <stdio.h>
13810 #include <ctype.h>
13811 #$i_stdlib I_STDLIB
13812 #ifdef I_STDLIB
13813 #include <stdlib.h>
13814 #endif
13815 int main() {
13816         int c = 'A';
13817         if (isascii(c))
13818                 exit(0);
13819         else
13820                 exit(1);
13821 }
13822 EOCP
13823 set isascii
13824 if eval $compile; then
13825         echo "isascii() found." >&4
13826         val="$define"
13827 else
13828         echo "isascii() NOT found." >&4
13829         val="$undef"
13830 fi
13831 set d_isascii
13832 eval $setvar
13833 $rm -f isascii*
13834
13835 : see if isfinite exists
13836 set isfinite d_isfinite
13837 eval $inlibc
13838
13839 : see if isinf exists
13840 set isinf d_isinf
13841 eval $inlibc
13842
13843 : see if isnan exists
13844 set isnan d_isnan
13845 eval $inlibc
13846
13847 : see if isnanl exists
13848 set isnanl d_isnanl
13849 eval $inlibc
13850
13851 : see if killpg exists
13852 set killpg d_killpg
13853 eval $inlibc
13854
13855 : see if lchown exists
13856 echo " "
13857 $cat > try.c <<'EOCP'
13858 /* System header to define __stub macros and hopefully few prototypes,
13859     which can conflict with char lchown(); below.  */
13860 #include <assert.h>
13861 /* Override any gcc2 internal prototype to avoid an error.  */
13862 /* We use char because int might match the return type of a gcc2
13863    builtin and then its argument prototype would still apply.  */
13864 char lchown();
13865 int main() {
13866     /*  The GNU C library defines this for functions which it implements
13867         to always fail with ENOSYS.  Some functions are actually named
13868         something starting with __ and the normal name is an alias.  */
13869 #if defined (__stub_lchown) || defined (__stub___lchown)
13870 choke me
13871 #else
13872 lchown();
13873 #endif
13874 ; return 0; }
13875 EOCP
13876 set try
13877 if eval $compile; then
13878     $echo "lchown() found." >&4
13879     val="$define"
13880 else
13881     $echo "lchown() NOT found." >&4
13882     val="$undef"
13883 fi
13884 set d_lchown
13885 eval $setvar
13886
13887 : See if number of significant digits in a double precision number is known
13888 echo " "
13889 $cat >ldbl_dig.c <<EOM
13890 #$i_limits I_LIMITS
13891 #$i_float I_FLOAT
13892 #ifdef I_LIMITS
13893 #include <limits.h>
13894 #endif
13895 #ifdef I_FLOAT
13896 #include <float.h>
13897 #endif
13898 #ifdef LDBL_DIG
13899 printf("Contains LDBL_DIG");
13900 #endif
13901 EOM
13902 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13903 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13904         echo "LDBL_DIG found." >&4
13905         val="$define"
13906 else
13907         echo "LDBL_DIG NOT found." >&4
13908         val="$undef"
13909 fi
13910 $rm -f ldbl_dig.?
13911 set d_ldbl_dig
13912 eval $setvar
13913
13914 : see if link exists
13915 set link d_link
13916 eval $inlibc
13917
13918 : see if localtime_r exists
13919 set localtime_r d_localtime_r
13920 eval $inlibc
13921 case "$d_localtime_r" in
13922 "$define")
13923         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13924         case "$d_localtime_r_proto:$usethreads" in
13925         ":define")      d_localtime_r_proto=define
13926                 set d_localtime_r_proto localtime_r $hdrs
13927                 eval $hasproto ;;
13928         *)      ;;
13929         esac
13930         case "$d_localtime_r_proto" in
13931         define)
13932         case "$localtime_r_proto" in
13933         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13934         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13935         esac
13936         case "$localtime_r_proto" in
13937         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13938         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13939         esac
13940         case "$localtime_r_proto" in
13941         ''|0)   d_localtime_r=undef
13942                 localtime_r_proto=0
13943                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13944         * )     case "$localtime_r_proto" in
13945                 REENTRANT_PROTO*) ;;
13946                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13947                 esac
13948                 echo "Prototype: $try" ;;
13949         esac
13950         ;;
13951         *)      case "$usethreads" in
13952                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13953                 esac
13954                 d_localtime_r=undef
13955                 localtime_r_proto=0
13956                 ;;
13957         esac
13958         ;;
13959 *)      localtime_r_proto=0
13960         ;;
13961 esac
13962
13963 : see if localeconv exists
13964 set localeconv d_locconv
13965 eval $inlibc
13966
13967 : see if lockf exists
13968 set lockf d_lockf
13969 eval $inlibc
13970
13971 : see if prototype for lseek is available
13972 echo " "
13973 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13974 eval $hasproto
13975
13976 : see if lstat exists
13977 set lstat d_lstat
13978 eval $inlibc
13979
13980 : see if madvise exists
13981 set madvise d_madvise
13982 eval $inlibc
13983
13984 : see if mblen exists
13985 set mblen d_mblen
13986 eval $inlibc
13987
13988 : see if mbstowcs exists
13989 set mbstowcs d_mbstowcs
13990 eval $inlibc
13991
13992 : see if mbtowc exists
13993 set mbtowc d_mbtowc
13994 eval $inlibc
13995
13996 : see if memchr exists
13997 set memchr d_memchr
13998 eval $inlibc
13999
14000 : see if memcmp exists
14001 set memcmp d_memcmp
14002 eval $inlibc
14003
14004 : see if memcpy exists
14005 set memcpy d_memcpy
14006 eval $inlibc
14007
14008 : see if memmove exists
14009 set memmove d_memmove
14010 eval $inlibc
14011
14012 : see if memset exists
14013 set memset d_memset
14014 eval $inlibc
14015
14016 : see if mkdir exists
14017 set mkdir d_mkdir
14018 eval $inlibc
14019
14020 : see if mkdtemp exists
14021 set mkdtemp d_mkdtemp
14022 eval $inlibc
14023
14024 : see if mkfifo exists
14025 set mkfifo d_mkfifo
14026 eval $inlibc
14027
14028 : see if mkstemp exists
14029 set mkstemp d_mkstemp
14030 eval $inlibc
14031
14032 : see if mkstemps exists
14033 set mkstemps d_mkstemps
14034 eval $inlibc
14035
14036 : see if mktime exists
14037 set mktime d_mktime
14038 eval $inlibc
14039
14040 : see if this is a sys/mman.h system
14041 set sys/mman.h i_sysmman
14042 eval $inhdr
14043
14044 : see if mmap exists
14045 set mmap d_mmap
14046 eval $inlibc
14047 : see what shmat returns
14048 : default to something harmless
14049 mmaptype='void *'
14050 case "$i_sysmman$d_mmap" in
14051 "$define$define")
14052         $cat >mmap.c <<'END'
14053 #include <sys/mman.h>
14054 void *mmap();
14055 END
14056         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14057                 mmaptype='void *'
14058         else
14059                 mmaptype='caddr_t'
14060         fi
14061         echo "and it returns ($mmaptype)." >&4
14062         ;;
14063 esac
14064
14065
14066
14067 : see if sqrtl exists
14068 set sqrtl d_sqrtl
14069 eval $inlibc
14070
14071 : see if scalbnl exists
14072 set scalbnl d_scalbnl
14073 eval $inlibc
14074
14075 : see if modfl exists
14076 set modfl d_modfl
14077 eval $inlibc
14078
14079 : see if prototype for modfl is available
14080 echo " "
14081 set d_modflproto modfl math.h
14082 eval $hasproto
14083
14084 d_modfl_pow32_bug="$undef"
14085
14086 case "$d_longdbl$d_modfl" in
14087 $define$define)
14088         $cat <<EOM
14089 Checking to see whether your modfl() is okay for large values...
14090 EOM
14091 $cat >try.c <<EOCP
14092 #include <math.h> 
14093 #include <stdio.h>
14094 EOCP
14095 if $test "X$d_modflproto" != "X$define"; then
14096         $cat >>try.c <<EOCP
14097 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14098 long double modfl (long double, long double *);
14099 EOCP
14100 fi
14101 $cat >>try.c <<EOCP
14102 int main() {
14103     long double nv = 4294967303.15;
14104     long double v, w;
14105     v = modfl(nv, &w);         
14106 #ifdef __GLIBC__
14107     printf("glibc");
14108 #endif
14109     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14110     return 0;
14111 }
14112 EOCP
14113         case "$osname:$gccversion" in
14114         aix:)   saveccflags="$ccflags"
14115                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14116         esac
14117         set try
14118         if eval $compile; then
14119                 foo=`$run ./try`
14120                 case "$foo" in
14121                 *" 4294967303.150000 1.150000 4294967302.000000")
14122                         echo >&4 "Your modfl() is broken for large values."
14123                         d_modfl_pow32_bug="$define"
14124                         case "$foo" in
14125                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14126                         ;;
14127                         esac
14128                         ;;
14129                 *" 4294967303.150000 0.150000 4294967303.000000")
14130                         echo >&4 "Your modfl() seems okay for large values."
14131                         ;;
14132                 *)      echo >&4 "I don't understand your modfl() at all."
14133                         d_modfl="$undef"
14134                         ;;
14135                 esac
14136                 $rm -f try.* try core core.try.*
14137         else
14138                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14139                 d_modfl="$undef"
14140         fi
14141         case "$osname:$gccversion" in
14142         aix:)   ccflags="$saveccflags" ;; # restore
14143         esac
14144         ;;
14145 esac
14146
14147 if $test "$uselongdouble" = "$define"; then
14148     message=""
14149     if $test "$d_sqrtl" != "$define"; then
14150         message="$message sqrtl"
14151     fi
14152     if $test "$d_modfl" != "$define"; then
14153         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14154             echo "You have both aintl and copysignl, so I can emulate modfl."
14155         else
14156             message="$message modfl"
14157         fi
14158     fi
14159     if $test "$d_frexpl" != "$define"; then
14160         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14161             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14162         else
14163             message="$message frexpl"
14164         fi
14165     fi
14166
14167     if $test "$message" != ""; then
14168         $cat <<EOM >&4
14169
14170 *** You requested the use of long doubles but you do not seem to have
14171 *** the following mathematical functions needed for long double support:
14172 ***    $message
14173 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14174 *** Cannot continue, aborting.
14175
14176 EOM
14177
14178         exit 1
14179     fi
14180 fi
14181
14182 : see if mprotect exists
14183 set mprotect d_mprotect
14184 eval $inlibc
14185
14186 : see if msgctl exists
14187 set msgctl d_msgctl
14188 eval $inlibc
14189
14190 : see if msgget exists
14191 set msgget d_msgget
14192 eval $inlibc
14193
14194 : see if msgsnd exists
14195 set msgsnd d_msgsnd
14196 eval $inlibc
14197
14198 : see if msgrcv exists
14199 set msgrcv d_msgrcv
14200 eval $inlibc
14201
14202 : see how much of the 'msg*(2)' library is present.
14203 h_msg=true
14204 echo " "
14205 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14206 *"$undef"*) h_msg=false;;
14207 esac
14208 case "$osname" in
14209 freebsd)
14210     case "`ipcs 2>&1`" in
14211     "SVID messages"*"not configured"*)
14212         echo "Your $osname does not have the msg*(2) configured." >&4
14213         h_msg=false
14214         val="$undef"
14215         set msgctl d_msgctl
14216         eval $setvar
14217         set msgget d_msgget
14218         eval $setvar
14219         set msgsnd d_msgsnd
14220         eval $setvar
14221         set msgrcv d_msgrcv
14222         eval $setvar
14223         ;;
14224     esac
14225     ;;
14226 esac
14227 : we could also check for sys/ipc.h ...
14228 if $h_msg && $test `./findhdr sys/msg.h`; then
14229         echo "You have the full msg*(2) library." >&4
14230         val="$define"
14231 else
14232         echo "You don't have the full msg*(2) library." >&4
14233         val="$undef"
14234 fi
14235 set d_msg
14236 eval $setvar
14237
14238
14239 echo " "
14240 echo "Checking to see if your system supports struct msghdr..." >&4
14241 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14242 eval $hasstruct
14243 case "$d_msghdr_s" in
14244 "$define")      echo "Yes, it does."   ;;
14245 *)              echo "No, it doesn't." ;;
14246 esac
14247
14248
14249 : see if msync exists
14250 set msync d_msync
14251 eval $inlibc
14252
14253 : see if munmap exists
14254 set munmap d_munmap
14255 eval $inlibc
14256
14257 : see if nice exists
14258 set nice d_nice
14259 eval $inlibc
14260
14261 : see if this is a langinfo.h system
14262 set langinfo.h i_langinfo
14263 eval $inhdr
14264
14265 : see if nl_langinfo exists
14266 set nl_langinfo d_nl_langinfo
14267 eval $inlibc
14268
14269 : check for length of character
14270 echo " "
14271 case "$charsize" in
14272 '')
14273         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14274         $cat >try.c <<EOCP
14275 #include <stdio.h>
14276 #$i_stdlib I_STDLIB
14277 #ifdef I_STDLIB
14278 #include <stdlib.h>
14279 #endif
14280 int main()
14281 {
14282     printf("%d\n", (int)sizeof(char));
14283     exit(0);
14284 }
14285 EOCP
14286         set try
14287         if eval $compile_ok; then
14288                 dflt=`$run ./try`
14289         else
14290                 dflt='1'
14291                 echo "(I can't seem to compile the test program.  Guessing...)"
14292         fi
14293         ;;
14294 *)
14295         dflt="$charsize"
14296         ;;
14297 esac
14298 rp="What is the size of a character (in bytes)?"
14299 . ./myread
14300 charsize="$ans"
14301 $rm -f try.c try
14302
14303 : check for volatile keyword
14304 echo " "
14305 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14306 $cat >try.c <<'EOCP'
14307 int main()
14308 {
14309         typedef struct _goo_struct goo_struct;
14310         goo_struct * volatile goo = ((goo_struct *)0);
14311         struct _goo_struct {
14312                 long long_int;
14313                 int reg_int;
14314                 char char_var;
14315         };
14316         typedef unsigned short foo_t;
14317         char *volatile foo;
14318         volatile int bar;
14319         volatile foo_t blech;
14320         foo = foo;
14321 }
14322 EOCP
14323 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14324         val="$define"
14325         echo "Yup, it does."
14326 else
14327         val="$undef"
14328         echo "Nope, it doesn't."
14329 fi
14330 set d_volatile
14331 eval $setvar
14332 $rm -f try.*
14333
14334
14335 echo " "
14336 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14337
14338 case "$use64bitint:$d_quad:$quadtype" in
14339 define:define:?*)
14340         ivtype="$quadtype"
14341         uvtype="$uquadtype"
14342         ivsize=8
14343         uvsize=8
14344         ;;
14345 *)      ivtype="long"
14346         uvtype="unsigned long"
14347         ivsize=$longsize
14348         uvsize=$longsize
14349         ;;
14350 esac
14351
14352 case "$uselongdouble:$d_longdbl" in
14353 define:define)
14354         nvtype="long double"
14355         nvsize=$longdblsize
14356         ;;
14357 *)      nvtype=double
14358         nvsize=$doublesize
14359         ;;
14360 esac
14361
14362 $echo "(IV will be "$ivtype", $ivsize bytes)"
14363 $echo "(UV will be "$uvtype", $uvsize bytes)"
14364 $echo "(NV will be "$nvtype", $nvsize bytes)"
14365
14366 $cat >try.c <<EOCP
14367 #$i_inttypes I_INTTYPES
14368 #ifdef I_INTTYPES
14369 #include <inttypes.h>
14370 #endif
14371 #include <stdio.h>
14372 int main() {
14373 #ifdef INT8
14374    int8_t i =  INT8_MAX;
14375   uint8_t u = UINT8_MAX;
14376   printf("int8_t\n");
14377 #endif
14378 #ifdef INT16
14379    int16_t i =  INT16_MAX;
14380   uint16_t i = UINT16_MAX;
14381   printf("int16_t\n");
14382 #endif
14383 #ifdef INT32
14384    int32_t i =  INT32_MAX;
14385   uint32_t u = UINT32_MAX;
14386   printf("int32_t\n");
14387 #endif
14388 }
14389 EOCP
14390
14391 case "$i8type" in
14392 '')     case "$charsize" in
14393         1)      i8type=char
14394                 u8type="unsigned char"
14395                 i8size=$charsize
14396                 u8size=$charsize
14397                 ;;
14398         esac
14399         ;;
14400 esac
14401 case "$i8type" in
14402 '')     set try -DINT8
14403         if eval $compile; then
14404                 case "`$run ./try`" in
14405                 int8_t) i8type=int8_t
14406                         u8type=uint8_t
14407                         i8size=1
14408                         u8size=1
14409                         ;;
14410                 esac
14411         fi
14412         ;;
14413 esac
14414 case "$i8type" in
14415 '')     if $test $charsize -ge 1; then
14416                 i8type=char
14417                 u8type="unsigned char"
14418                 i8size=$charsize
14419                 u8size=$charsize
14420         fi
14421         ;;
14422 esac
14423
14424 case "$i16type" in
14425 '')     case "$shortsize" in
14426         2)      i16type=short
14427                 u16type="unsigned short"
14428                 i16size=$shortsize
14429                 u16size=$shortsize
14430                 ;;
14431         esac
14432         ;;
14433 esac
14434 case "$i16type" in
14435 '')     set try -DINT16
14436         if eval $compile; then
14437                 case "`$run ./try`" in
14438                 int16_t)
14439                         i16type=int16_t
14440                         u16type=uint16_t
14441                         i16size=2
14442                         u16size=2
14443                         ;;
14444                 esac
14445         fi
14446         ;;
14447 esac
14448 case "$i16type" in
14449 '')     if $test $shortsize -ge 2; then
14450                 i16type=short
14451                 u16type="unsigned short"
14452                 i16size=$shortsize
14453                 u16size=$shortsize
14454         fi
14455         ;;
14456 esac
14457
14458 case "$i32type" in
14459 '')     case "$longsize" in
14460         4)      i32type=long
14461                 u32type="unsigned long"
14462                 i32size=$longsize
14463                 u32size=$longsize
14464                 ;;
14465         *)      case "$intsize" in
14466                 4)      i32type=int
14467                         u32type="unsigned int"
14468                         i32size=$intsize
14469                         u32size=$intsize
14470                         ;;
14471                 esac
14472                 ;;
14473         esac
14474         ;;
14475 esac
14476 case "$i32type" in
14477 '')     set try -DINT32
14478         if eval $compile; then
14479                 case "`$run ./try`" in
14480                 int32_t)
14481                         i32type=int32_t
14482                         u32type=uint32_t
14483                         i32size=4
14484                         u32size=4
14485                         ;;
14486                 esac
14487         fi
14488         ;;
14489 esac
14490 case "$i32type" in
14491 '')     if $test $intsize -ge 4; then
14492                 i32type=int
14493                 u32type="unsigned int"
14494                 i32size=$intsize
14495                 u32size=$intsize
14496         fi
14497         ;;
14498 esac
14499
14500 case "$i64type" in
14501 '')     case "$d_quad:$quadtype" in
14502         define:?*)
14503                 i64type="$quadtype"
14504                 u64type="$uquadtype"
14505                 i64size=8
14506                 u64size=8
14507                 ;;
14508         esac
14509         ;;
14510 esac
14511
14512 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14513 : volatile so that the compiler has to store it out to memory.
14514 if test X"$d_volatile" = X"$define"; then
14515         volatile=volatile
14516 fi
14517 $cat <<EOP >try.c
14518 #include <stdio.h>
14519 #$i_stdlib I_STDLIB
14520 #ifdef I_STDLIB
14521 #include <stdlib.h>
14522 #endif
14523 #include <sys/types.h>
14524 #include <signal.h>
14525 #ifdef SIGFPE
14526 $volatile int bletched = 0;
14527 $signal_t blech(s) int s; { bletched = 1; }
14528 #endif
14529 int main() {
14530     $uvtype u = 0;
14531     $nvtype d;
14532     int     n = 8 * $uvsize;
14533     int     i;
14534 #ifdef SIGFPE
14535     signal(SIGFPE, blech);
14536 #endif
14537
14538     for (i = 0; i < n; i++) {
14539       u = u << 1 | ($uvtype)1;
14540       d = ($nvtype)u;
14541       if (($uvtype)d != u)
14542         break;
14543       if (d <= 0)
14544         break;
14545       d = ($nvtype)(u - 1);
14546       if (($uvtype)d != (u - 1))
14547         break;
14548 #ifdef SIGFPE
14549       if (bletched) {
14550         break;
14551 #endif
14552       } 
14553     }
14554     printf("%d\n", ((i == n) ? -n : i));
14555     exit(0);
14556 }
14557 EOP
14558 set try
14559
14560 d_nv_preserves_uv="$undef"
14561 if eval $compile; then
14562         nv_preserves_uv_bits="`$run ./try`"
14563 fi
14564 case "$nv_preserves_uv_bits" in
14565 \-[1-9]*)       
14566         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14567         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14568         d_nv_preserves_uv="$define"
14569         ;;
14570 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14571         d_nv_preserves_uv="$undef" ;;
14572 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14573         nv_preserves_uv_bits="$undef" ;;
14574 esac
14575
14576 $rm -f try.* try
14577
14578
14579 : check for off64_t
14580 echo " "
14581 echo "Checking to see if you have off64_t..." >&4
14582 $cat >try.c <<EOCP
14583 #include <sys/types.h>
14584 #include <unistd.h>
14585 int main() { off64_t x = 7; }
14586 EOCP
14587 set try
14588 if eval $compile; then
14589         val="$define"
14590         echo "You have off64_t."
14591 else
14592         val="$undef"
14593         echo "You do not have off64_t."
14594         case "$lseeksize" in
14595         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14596         esac
14597 fi
14598 $rm -f try.* try
14599 set d_off64_t
14600 eval $setvar
14601
14602 : how to create joinable pthreads
14603 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14604         echo " "
14605         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14606         $cat >try.c <<'EOCP'
14607 #include <pthread.h>
14608 int main() {
14609     int detachstate = JOINABLE;
14610 }
14611 EOCP
14612         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14613         if eval $compile; then
14614                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14615                 val="$undef" # Yes, undef.
14616                 set d_old_pthread_create_joinable
14617                 eval $setvar
14618                 val=""
14619                 set old_pthread_create_joinable
14620                 eval $setvar
14621         else
14622                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14623                 if eval $compile; then
14624                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14625                         val="$define"
14626                         set d_old_pthread_create_joinable
14627                         eval $setvar
14628                         val=PTHREAD_CREATE_UNDETACHED
14629                         set old_pthread_create_joinable
14630                         eval $setvar
14631                 else            
14632                         set try -DJOINABLE=__UNDETACHED
14633                         if eval $compile; then
14634                                 echo "You seem to use __UNDETACHED." >&4
14635                                 val="$define"
14636                                 set d_old_pthread_create_joinable
14637                                 eval $setvar
14638                                 val=__UNDETACHED
14639                                 set old_pthread_create_joinable
14640                                 eval $setvar
14641                         else
14642                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14643                                 val="$define"
14644                                 set d_old_pthread_create_joinable
14645                                 eval $setvar
14646                                 val=0
14647                                 set old_pthread_create_joinable
14648                                 eval $setvar
14649                         fi
14650                 fi
14651         fi
14652         $rm -f try try.*
14653 else
14654     d_old_pthread_create_joinable="$undef"
14655     old_pthread_create_joinable=""
14656 fi
14657
14658 : see if pause exists
14659 set pause d_pause
14660 eval $inlibc
14661
14662 : see if pipe exists
14663 set pipe d_pipe
14664 eval $inlibc
14665
14666 : see if poll exists
14667 set poll d_poll
14668 eval $inlibc
14669
14670 : see if readlink exists
14671 set readlink d_readlink
14672 eval $inlibc
14673
14674 echo " "
14675 procselfexe=''
14676 val="$undef"
14677 case "$d_readlink" in
14678 "$define")
14679         if $issymlink /proc/self/exe ; then
14680                 $ls -l /proc/self/exe > reflect
14681                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14682                         echo "You have Linux-like /proc/self/exe."
14683                         procselfexe='"/proc/self/exe"'
14684                         val="$define"
14685                 fi
14686         fi
14687         if $issymlink /proc/curproc/file ; then
14688                 $ls -l /proc/curproc/file > reflect
14689                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14690                         echo "You have BSD-like /proc/curproc/file."
14691                         procselfexe='"/proc/curproc/file"'
14692                         val="$define"
14693                 fi
14694         fi
14695         ;;
14696 esac
14697 $rm -f reflect
14698 set d_procselfexe
14699 eval $setvar
14700
14701 : see whether the pthread_atfork exists
14702 $cat >try.c <<EOP
14703 #include <pthread.h>
14704 #include <stdio.h>
14705 int main() {
14706 #ifdef  PTHREAD_ATFORK
14707         pthread_atfork(NULL,NULL,NULL);
14708 #endif
14709 }
14710 EOP
14711
14712 : see if pthread_atfork exists
14713 set try -DPTHREAD_ATFORK
14714 if eval $compile; then
14715     val="$define"
14716 else
14717     val="$undef"
14718 fi
14719 case "$usethreads" in
14720 $define)
14721         case "$val" in
14722         $define) echo 'pthread_atfork found.' >&4        ;;
14723         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14724         esac
14725 esac
14726 set d_pthread_atfork
14727 eval $setvar
14728
14729 : see if pthread_attr_setscope exists
14730 set pthread_attr_setscope d_pthread_attr_setscope
14731 eval $inlibc
14732
14733
14734 : see whether the various POSIXish _yields exist
14735 $cat >try.c <<EOP
14736 #include <pthread.h>
14737 #include <stdio.h>
14738 int main() {
14739 #ifdef SCHED_YIELD
14740         sched_yield();
14741 #else
14742 #ifdef PTHREAD_YIELD
14743         pthread_yield();
14744 #else
14745 #ifdef PTHREAD_YIELD_NULL
14746         pthread_yield(NULL);
14747 #endif
14748 #endif
14749 #endif
14750 }
14751 EOP
14752 : see if sched_yield exists
14753 set try -DSCHED_YIELD
14754 if eval $compile; then
14755     val="$define"
14756     sched_yield='sched_yield()'
14757 else
14758     val="$undef"
14759 fi
14760 case "$usethreads" in
14761 $define)
14762         case "$val" in
14763         $define) echo 'sched_yield() found.' >&4        ;;
14764         *)       echo 'sched_yield() NOT found.' >&4    ;;
14765         esac
14766 esac
14767 set d_sched_yield
14768 eval $setvar
14769
14770 : see if pthread_yield exists
14771 set try -DPTHREAD_YIELD
14772 if eval $compile; then
14773     val="$define"
14774     case "$sched_yield" in
14775     '') sched_yield='pthread_yield()' ;;
14776     esac
14777 else
14778     set try -DPTHREAD_YIELD_NULL
14779     if eval $compile; then
14780         val="$define"
14781         case "$sched_yield" in
14782         '') sched_yield='pthread_yield(NULL)' ;;
14783         esac
14784     else
14785         val="$undef"
14786     fi
14787 fi
14788 case "$usethreads" in
14789 $define)
14790         case "$val" in
14791         $define) echo 'pthread_yield() found.' >&4      ;;
14792         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14793         esac
14794         ;;
14795 esac
14796 set d_pthread_yield
14797 eval $setvar
14798
14799 case "$sched_yield" in
14800 '') sched_yield=undef ;;
14801 esac
14802
14803 $rm -f try try.*
14804
14805 : see if random_r exists
14806 set random_r d_random_r
14807 eval $inlibc
14808 case "$d_random_r" in
14809 "$define")
14810         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14811         case "$d_random_r_proto:$usethreads" in
14812         ":define")      d_random_r_proto=define
14813                 set d_random_r_proto random_r $hdrs
14814                 eval $hasproto ;;
14815         *)      ;;
14816         esac
14817         case "$d_random_r_proto" in
14818         define)
14819         case "$random_r_proto" in
14820         ''|0) try='int random_r(int*, struct random_data*);'
14821         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14822         esac
14823         case "$random_r_proto" in
14824         ''|0) try='int random_r(long*, struct random_data*);'
14825         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14826         esac
14827         case "$random_r_proto" in
14828         ''|0) try='int random_r(struct random_data*, int32_t*);'
14829         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14830         esac
14831         case "$random_r_proto" in
14832         ''|0)   d_random_r=undef
14833                 random_r_proto=0
14834                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14835         * )     case "$random_r_proto" in
14836                 REENTRANT_PROTO*) ;;
14837                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14838                 esac
14839                 echo "Prototype: $try" ;;
14840         esac
14841         ;;
14842         *)      case "$usethreads" in
14843                 define) echo "random_r has no prototype, not using it." >&4 ;;
14844                 esac
14845                 d_random_r=undef
14846                 random_r_proto=0
14847                 ;;
14848         esac
14849         ;;
14850 *)      random_r_proto=0
14851         ;;
14852 esac
14853
14854 : see if readdir and friends exist
14855 set readdir d_readdir
14856 eval $inlibc
14857 set seekdir d_seekdir
14858 eval $inlibc
14859 set telldir d_telldir
14860 eval $inlibc
14861 set rewinddir d_rewinddir
14862 eval $inlibc
14863
14864 : see if readdir64_r exists
14865 set readdir64_r d_readdir64_r
14866 eval $inlibc
14867 case "$d_readdir64_r" in
14868 "$define")
14869         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14870         case "$d_readdir64_r_proto:$usethreads" in
14871         ":define")      d_readdir64_r_proto=define
14872                 set d_readdir64_r_proto readdir64_r $hdrs
14873                 eval $hasproto ;;
14874         *)      ;;
14875         esac
14876         case "$d_readdir64_r_proto" in
14877         define)
14878         case "$readdir64_r_proto" in
14879         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14880         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14881         esac
14882         case "$readdir64_r_proto" in
14883         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14884         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14885         esac
14886         case "$readdir64_r_proto" in
14887         ''|0)   d_readdir64_r=undef
14888                 readdir64_r_proto=0
14889                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14890         * )     case "$readdir64_r_proto" in
14891                 REENTRANT_PROTO*) ;;
14892                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14893                 esac
14894                 echo "Prototype: $try" ;;
14895         esac
14896         ;;
14897         *)      case "$usethreads" in
14898                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14899                 esac
14900                 d_readdir64_r=undef
14901                 readdir64_r_proto=0
14902                 ;;
14903         esac
14904         ;;
14905 *)      readdir64_r_proto=0
14906         ;;
14907 esac
14908
14909 : see if readdir_r exists
14910 set readdir_r d_readdir_r
14911 eval $inlibc
14912 case "$d_readdir_r" in
14913 "$define")
14914         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14915         case "$d_readdir_r_proto:$usethreads" in
14916         ":define")      d_readdir_r_proto=define
14917                 set d_readdir_r_proto readdir_r $hdrs
14918                 eval $hasproto ;;
14919         *)      ;;
14920         esac
14921         case "$d_readdir_r_proto" in
14922         define)
14923         case "$readdir_r_proto" in
14924         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14925         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14926         esac
14927         case "$readdir_r_proto" in
14928         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14929         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14930         esac
14931         case "$readdir_r_proto" in
14932         ''|0)   d_readdir_r=undef
14933                 readdir_r_proto=0
14934                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14935         * )     case "$readdir_r_proto" in
14936                 REENTRANT_PROTO*) ;;
14937                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14938                 esac
14939                 echo "Prototype: $try" ;;
14940         esac
14941         ;;
14942         *)      case "$usethreads" in
14943                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14944                 esac
14945                 d_readdir_r=undef
14946                 readdir_r_proto=0
14947                 ;;
14948         esac
14949         ;;
14950 *)      readdir_r_proto=0
14951         ;;
14952 esac
14953
14954 : see if readv exists
14955 set readv d_readv
14956 eval $inlibc
14957
14958 : see if recvmsg exists
14959 set recvmsg d_recvmsg
14960 eval $inlibc
14961
14962 : see if rename exists
14963 set rename d_rename
14964 eval $inlibc
14965
14966 : see if rmdir exists
14967 set rmdir d_rmdir
14968 eval $inlibc
14969
14970 : see if memory.h is available.
14971 val=''
14972 set memory.h val
14973 eval $inhdr
14974
14975 : See if it conflicts with string.h
14976 case "$val" in
14977 $define)
14978         case "$strings" in
14979         '') ;;
14980         *)
14981                 $cppstdin $cppflags $cppminus < $strings > mem.h
14982                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14983                         echo " "
14984                         echo "We won't be including <memory.h>."
14985                         val="$undef"
14986                 fi
14987                 $rm -f mem.h
14988                 ;;
14989         esac
14990 esac
14991 set i_memory
14992 eval $setvar
14993
14994 : can bcopy handle overlapping blocks?
14995 echo " "
14996 val="$undef"
14997 case "$d_memmove" in
14998 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14999 *)      case "$d_bcopy" in
15000         "$define")
15001                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15002                 $cat >try.c <<EOCP
15003 #$i_memory I_MEMORY
15004 #$i_stdlib I_STDLIB
15005 #$i_string I_STRING
15006 #$i_unistd I_UNISTD
15007 EOCP
15008         $cat >>try.c <<'EOCP'
15009 #include <stdio.h>
15010 #ifdef I_MEMORY
15011 #  include <memory.h>
15012 #endif
15013 #ifdef I_STDLIB
15014 #  include <stdlib.h>
15015 #endif
15016 #ifdef I_STRING
15017 #  include <string.h>
15018 #else
15019 #  include <strings.h>
15020 #endif
15021 #ifdef I_UNISTD
15022 #  include <unistd.h>  /* Needed for NetBSD */
15023 #endif
15024 int main()
15025 {
15026 char buf[128], abc[128];
15027 char *b;
15028 int len;
15029 int off;
15030 int align;
15031
15032 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15033    try to store the string in read-only memory. */
15034 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15035
15036 for (align = 7; align >= 0; align--) {
15037         for (len = 36; len; len--) {
15038                 b = buf+align;
15039                 bcopy(abc, b, len);
15040                 for (off = 1; off <= len; off++) {
15041                         bcopy(b, b+off, len);
15042                         bcopy(b+off, b, len);
15043                         if (bcmp(b, abc, len))
15044                                 exit(1);
15045                 }
15046         }
15047 }
15048 exit(0);
15049 }
15050 EOCP
15051                 set try
15052                 if eval $compile_ok; then
15053                         if ./try 2>/dev/null; then
15054                                 echo "Yes, it can."
15055                                 val="$define"
15056                         else
15057                                 echo "It can't, sorry."
15058                         fi
15059                 else
15060                         echo "(I can't compile the test program, so we'll assume not...)"
15061                 fi
15062                 ;;
15063         esac
15064         $rm -f try.* try core
15065         ;;
15066 esac
15067 set d_safebcpy
15068 eval $setvar
15069
15070 : can memcpy handle overlapping blocks?
15071 echo " "
15072 val="$undef"
15073 case "$d_memmove" in
15074 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15075 *)      case "$d_memcpy" in
15076         "$define")
15077                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15078                 $cat >try.c <<EOCP
15079 #$i_memory I_MEMORY
15080 #$i_stdlib I_STDLIB
15081 #$i_string I_STRING
15082 #$i_unistd I_UNISTD
15083 EOCP
15084         $cat >>try.c <<'EOCP'
15085 #include <stdio.h>
15086 #ifdef I_MEMORY
15087 #  include <memory.h>
15088 #endif
15089 #ifdef I_STDLIB
15090 #  include <stdlib.h>
15091 #endif
15092 #ifdef I_STRING
15093 #  include <string.h>
15094 #else
15095 #  include <strings.h>
15096 #endif
15097 #ifdef I_UNISTD
15098 #  include <unistd.h>  /* Needed for NetBSD */
15099 #endif
15100 int main()
15101 {
15102 char buf[128], abc[128];
15103 char *b;
15104 int len;
15105 int off;
15106 int align;
15107
15108 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15109    try to store the string in read-only memory. */
15110 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15111
15112 for (align = 7; align >= 0; align--) {
15113         for (len = 36; len; len--) {
15114                 b = buf+align;
15115                 memcpy(b, abc, len);
15116                 for (off = 1; off <= len; off++) {
15117                         memcpy(b+off, b, len);
15118                         memcpy(b, b+off, len);
15119                         if (memcmp(b, abc, len))
15120                                 exit(1);
15121                 }
15122         }
15123 }
15124 exit(0);
15125 }
15126 EOCP
15127                 set try
15128                 if eval $compile_ok; then
15129                         if ./try 2>/dev/null; then
15130                                 echo "Yes, it can."
15131                                 val="$define"
15132                         else
15133                                 echo "It can't, sorry."
15134                         fi
15135                 else
15136                         echo "(I can't compile the test program, so we'll assume not...)"
15137                 fi
15138                 ;;
15139         esac
15140         $rm -f try.* try core
15141         ;;
15142 esac
15143 set d_safemcpy
15144 eval $setvar
15145
15146 : can memcmp be trusted to compare relative magnitude?
15147 val="$undef"
15148 case "$d_memcmp" in
15149 "$define")
15150         echo " "
15151         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15152         $cat >try.c <<EOCP
15153 #$i_memory I_MEMORY
15154 #$i_stdlib I_STDLIB
15155 #$i_string I_STRING
15156 #$i_unistd I_UNISTD
15157 EOCP
15158         $cat >>try.c <<'EOCP'
15159 #include <stdio.h>
15160 #ifdef I_MEMORY
15161 #  include <memory.h>
15162 #endif
15163 #ifdef I_STDLIB
15164 #  include <stdlib.h>
15165 #endif
15166 #ifdef I_STRING
15167 #  include <string.h>
15168 #else
15169 #  include <strings.h>
15170 #endif
15171 #ifdef I_UNISTD
15172 #  include <unistd.h>  /* Needed for NetBSD */
15173 #endif
15174 int main()
15175 {
15176 char a = -1;
15177 char b = 0;
15178 if ((a < b) && memcmp(&a, &b, 1) < 0)
15179         exit(1);
15180 exit(0);
15181 }
15182 EOCP
15183         set try
15184         if eval $compile_ok; then
15185                 if $run ./try 2>/dev/null; then
15186                         echo "Yes, it can."
15187                         val="$define"
15188                 else
15189                         echo "No, it can't (it uses signed chars)."
15190                 fi
15191         else
15192                 echo "(I can't compile the test program, so we'll assume not...)"
15193         fi
15194         ;;
15195 esac
15196 $rm -f try.* try core
15197 set d_sanemcmp
15198 eval $setvar
15199
15200 : see if prototype for sbrk is available
15201 echo " "
15202 set d_sbrkproto sbrk $i_unistd unistd.h
15203 eval $hasproto
15204
15205 : see if select exists
15206 set select d_select
15207 eval $inlibc
15208
15209 : see if semctl exists
15210 set semctl d_semctl
15211 eval $inlibc
15212
15213 : see if semget exists
15214 set semget d_semget
15215 eval $inlibc
15216
15217 : see if semop exists
15218 set semop d_semop
15219 eval $inlibc
15220
15221 : see how much of the 'sem*(2)' library is present.
15222 h_sem=true
15223 echo " "
15224 case "$d_semctl$d_semget$d_semop" in
15225 *"$undef"*) h_sem=false;;
15226 esac
15227 case "$osname" in
15228 freebsd)
15229     case "`ipcs 2>&1`" in
15230     "SVID messages"*"not configured"*)
15231         echo "Your $osname does not have the sem*(2) configured." >&4
15232         h_sem=false
15233         val="$undef"
15234         set semctl d_semctl
15235         eval $setvar
15236         set semget d_semget
15237         eval $setvar
15238         set semop d_semop
15239         eval $setvar
15240         ;;
15241     esac
15242     ;;
15243 esac
15244 : we could also check for sys/ipc.h ...
15245 if $h_sem && $test `./findhdr sys/sem.h`; then
15246         echo "You have the full sem*(2) library." >&4
15247         val="$define"
15248 else
15249         echo "You don't have the full sem*(2) library." >&4
15250         val="$undef"
15251 fi
15252 set d_sem
15253 eval $setvar
15254
15255 : see whether sys/sem.h defines union semun
15256 echo " "
15257 $cat > try.c <<'END'
15258 #include <sys/types.h>
15259 #include <sys/ipc.h>
15260 #include <sys/sem.h>
15261 int main () { union semun semun; semun.buf = 0; }
15262 END
15263 set try
15264 if eval $compile; then
15265     echo "You have union semun in <sys/sem.h>." >&4
15266     val="$define"
15267 else
15268     echo "You do not have union semun in <sys/sem.h>." >&4
15269     val="$undef"
15270 fi
15271 $rm -f try try.c
15272 set d_union_semun
15273 eval $setvar
15274
15275 : see how to do semctl IPC_STAT
15276 case "$d_sem" in
15277 $define)
15278     echo " "
15279     $cat > try.h <<END
15280 #ifndef S_IRUSR
15281 #   ifdef S_IREAD
15282 #       define S_IRUSR S_IREAD
15283 #       define S_IWUSR S_IWRITE
15284 #       define S_IXUSR S_IEXEC
15285 #   else
15286 #       define S_IRUSR 0400
15287 #       define S_IWUSR 0200
15288 #       define S_IXUSR 0100
15289 #   endif
15290 #   define S_IRGRP (S_IRUSR>>3)
15291 #   define S_IWGRP (S_IWUSR>>3)
15292 #   define S_IXGRP (S_IXUSR>>3)
15293 #   define S_IROTH (S_IRUSR>>6)
15294 #   define S_IWOTH (S_IWUSR>>6)
15295 #   define S_IXOTH (S_IXUSR>>6)
15296 #endif
15297 #ifndef S_IRWXU
15298 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15299 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15300 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15301 #endif
15302 END
15303     : see whether semctl IPC_STAT can use union semun
15304     val="$undef"
15305     case "$d_semctl_semun" in
15306     '')
15307       $cat > try.c <<END
15308 #include <sys/types.h>
15309 #include <sys/ipc.h>
15310 #include <sys/sem.h>
15311 #include <sys/stat.h>
15312 #include <stdio.h>
15313 #include <errno.h>
15314 #include "try.h"
15315 #ifndef errno
15316 extern int errno;
15317 #endif
15318 #$d_union_semun HAS_UNION_SEMUN
15319 int main() {
15320     union semun
15321 #ifndef HAS_UNION_SEMUN
15322     {
15323         int val;
15324         struct semid_ds *buf;
15325         unsigned short *array;
15326     }
15327 #endif
15328     arg;
15329     int sem, st;
15330
15331 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15332     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15333     if (sem > -1) {
15334         struct semid_ds argbuf;
15335         arg.buf = &argbuf;
15336 #       ifdef IPC_STAT
15337         st = semctl(sem, 0, IPC_STAT, arg);
15338         if (st == 0)
15339             printf("semun\n");
15340         else
15341 #       endif /* IPC_STAT */
15342             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15343 #       ifdef IPC_RMID
15344         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15345 #       endif /* IPC_RMID */
15346             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15347     } else
15348 #endif /* IPC_PRIVATE && ... */
15349         printf("semget failed: errno = %d\n", errno);
15350   return 0;
15351 }
15352 END
15353       set try
15354       if eval $compile; then
15355           xxx=`$run ./try`
15356           case "$xxx" in
15357           semun) val="$define" ;;
15358           esac
15359       fi
15360       $rm -f try try.c
15361       ;;
15362     esac
15363     set d_semctl_semun
15364     eval $setvar
15365     case "$d_semctl_semun" in
15366     $define)
15367         echo "You can use union semun for semctl IPC_STAT." >&4
15368         also='also'
15369         ;;
15370     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15371         also=''
15372         ;;
15373     esac
15374
15375     : see whether semctl IPC_STAT can use struct semid_ds pointer
15376     val="$undef"
15377     case "$d_semctl_semid_ds" in
15378     '')
15379       $cat > try.c <<'END'
15380 #include <sys/types.h>
15381 #include <sys/ipc.h>
15382 #include <sys/sem.h>
15383 #include <sys/stat.h>
15384 #include "try.h"
15385 #include <stdio.h>
15386 #include <errno.h>
15387 #ifndef errno
15388 extern int errno;
15389 #endif
15390 int main() {
15391     struct semid_ds arg;
15392     int sem, st;
15393
15394 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15395     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15396     if (sem > -1) {
15397 #       ifdef IPC_STAT
15398         st = semctl(sem, 0, IPC_STAT, &arg);
15399         if (st == 0)
15400             printf("semid_ds\n");
15401         else
15402 #       endif /* IPC_STAT */
15403             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15404 #       ifdef IPC_RMID
15405         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15406 #       endif /* IPC_RMID */
15407             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15408     } else
15409 #endif /* IPC_PRIVATE && ... */
15410         printf("semget failed: errno = %d\n", errno);
15411
15412     return 0;
15413 }
15414 END
15415       set try
15416       if eval $compile; then
15417           xxx=`$run ./try`
15418           case "$xxx" in
15419           semid_ds) val="$define" ;;
15420           esac
15421       fi
15422       $rm -f try try.c
15423       ;;
15424     esac
15425     set d_semctl_semid_ds
15426     eval $setvar
15427     case "$d_semctl_semid_ds" in
15428     $define)
15429         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15430         ;;
15431     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15432         ;;
15433     esac
15434     $rm -f try.h
15435     ;;
15436 *)  val="$undef"
15437
15438     # We do not have the full sem*(2) library, so assume we can not
15439     # use either.
15440
15441     set d_semctl_semun
15442     eval $setvar
15443
15444     set d_semctl_semid_ds
15445     eval $setvar
15446     ;;
15447 esac
15448
15449 : see if sendmsg exists
15450 set sendmsg d_sendmsg
15451 eval $inlibc
15452
15453 : see if setegid exists
15454 set setegid d_setegid
15455 eval $inlibc
15456
15457 : see if seteuid exists
15458 set seteuid d_seteuid
15459 eval $inlibc
15460
15461 : see if setgrent exists
15462 set setgrent d_setgrent
15463 eval $inlibc
15464
15465 : see if setgrent_r exists
15466 set setgrent_r d_setgrent_r
15467 eval $inlibc
15468 case "$d_setgrent_r" in
15469 "$define")
15470         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15471         case "$d_setgrent_r_proto:$usethreads" in
15472         ":define")      d_setgrent_r_proto=define
15473                 set d_setgrent_r_proto setgrent_r $hdrs
15474                 eval $hasproto ;;
15475         *)      ;;
15476         esac
15477         case "$d_setgrent_r_proto" in
15478         define)
15479         case "$setgrent_r_proto" in
15480         ''|0) try='int setgrent_r(FILE**);'
15481         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15482         esac
15483         case "$setgrent_r_proto" in
15484         ''|0) try='void setgrent_r(FILE**);'
15485         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15486         esac
15487         case "$setgrent_r_proto" in
15488         ''|0)   d_setgrent_r=undef
15489                 setgrent_r_proto=0
15490                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15491         * )     case "$setgrent_r_proto" in
15492                 REENTRANT_PROTO*) ;;
15493                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15494                 esac
15495                 echo "Prototype: $try" ;;
15496         esac
15497         ;;
15498         *)      case "$usethreads" in
15499                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15500                 esac
15501                 d_setgrent_r=undef
15502                 setgrent_r_proto=0
15503                 ;;
15504         esac
15505         ;;
15506 *)      setgrent_r_proto=0
15507         ;;
15508 esac
15509
15510 : see if sethostent exists
15511 set sethostent d_sethent
15512 eval $inlibc
15513
15514 : see if sethostent_r exists
15515 set sethostent_r d_sethostent_r
15516 eval $inlibc
15517 case "$d_sethostent_r" in
15518 "$define")
15519         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15520         case "$d_sethostent_r_proto:$usethreads" in
15521         ":define")      d_sethostent_r_proto=define
15522                 set d_sethostent_r_proto sethostent_r $hdrs
15523                 eval $hasproto ;;
15524         *)      ;;
15525         esac
15526         case "$d_sethostent_r_proto" in
15527         define)
15528         case "$sethostent_r_proto" in
15529         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15530         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15531         esac
15532         case "$sethostent_r_proto" in
15533         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15534         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15535         esac
15536         case "$sethostent_r_proto" in
15537         ''|0)   d_sethostent_r=undef
15538                 sethostent_r_proto=0
15539                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15540         * )     case "$sethostent_r_proto" in
15541                 REENTRANT_PROTO*) ;;
15542                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15543                 esac
15544                 echo "Prototype: $try" ;;
15545         esac
15546         ;;
15547         *)      case "$usethreads" in
15548                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15549                 esac
15550                 d_sethostent_r=undef
15551                 sethostent_r_proto=0
15552                 ;;
15553         esac
15554         ;;
15555 *)      sethostent_r_proto=0
15556         ;;
15557 esac
15558
15559 : see if setitimer exists
15560 set setitimer d_setitimer
15561 eval $inlibc
15562
15563 : see if setlinebuf exists
15564 set setlinebuf d_setlinebuf
15565 eval $inlibc
15566
15567 : see if setlocale exists
15568 set setlocale d_setlocale
15569 eval $inlibc
15570
15571 : see if locale.h is available
15572 set locale.h i_locale
15573 eval $inhdr
15574
15575 : see if setlocale_r exists
15576 set setlocale_r d_setlocale_r
15577 eval $inlibc
15578 case "$d_setlocale_r" in
15579 "$define")
15580         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15581         case "$d_setlocale_r_proto:$usethreads" in
15582         ":define")      d_setlocale_r_proto=define
15583                 set d_setlocale_r_proto setlocale_r $hdrs
15584                 eval $hasproto ;;
15585         *)      ;;
15586         esac
15587         case "$d_setlocale_r_proto" in
15588         define)
15589         case "$setlocale_r_proto" in
15590         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15591         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15592         esac
15593         case "$setlocale_r_proto" in
15594         ''|0)   d_setlocale_r=undef
15595                 setlocale_r_proto=0
15596                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15597         * )     case "$setlocale_r_proto" in
15598                 REENTRANT_PROTO*) ;;
15599                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15600                 esac
15601                 echo "Prototype: $try" ;;
15602         esac
15603         ;;
15604         *)      case "$usethreads" in
15605                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15606                 esac
15607                 d_setlocale_r=undef
15608                 setlocale_r_proto=0
15609                 ;;
15610         esac
15611         ;;
15612 *)      setlocale_r_proto=0
15613         ;;
15614 esac
15615
15616 : see if setnetent exists
15617 set setnetent d_setnent
15618 eval $inlibc
15619
15620 : see if setnetent_r exists
15621 set setnetent_r d_setnetent_r
15622 eval $inlibc
15623 case "$d_setnetent_r" in
15624 "$define")
15625         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15626         case "$d_setnetent_r_proto:$usethreads" in
15627         ":define")      d_setnetent_r_proto=define
15628                 set d_setnetent_r_proto setnetent_r $hdrs
15629                 eval $hasproto ;;
15630         *)      ;;
15631         esac
15632         case "$d_setnetent_r_proto" in
15633         define)
15634         case "$setnetent_r_proto" in
15635         ''|0) try='int setnetent_r(int, struct netent_data*);'
15636         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15637         esac
15638         case "$setnetent_r_proto" in
15639         ''|0) try='void setnetent_r(int, struct netent_data*);'
15640         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15641         esac
15642         case "$setnetent_r_proto" in
15643         ''|0)   d_setnetent_r=undef
15644                 setnetent_r_proto=0
15645                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15646         * )     case "$setnetent_r_proto" in
15647                 REENTRANT_PROTO*) ;;
15648                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15649                 esac
15650                 echo "Prototype: $try" ;;
15651         esac
15652         ;;
15653         *)      case "$usethreads" in
15654                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15655                 esac
15656                 d_setnetent_r=undef
15657                 setnetent_r_proto=0
15658                 ;;
15659         esac
15660         ;;
15661 *)      setnetent_r_proto=0
15662         ;;
15663 esac
15664
15665 : see if setprotoent exists
15666 set setprotoent d_setpent
15667 eval $inlibc
15668
15669 : see if setpgid exists
15670 set setpgid d_setpgid
15671 eval $inlibc
15672
15673 : see if setpgrp2 exists
15674 set setpgrp2 d_setpgrp2
15675 eval $inlibc
15676
15677 : see if setpriority exists
15678 set setpriority d_setprior
15679 eval $inlibc
15680
15681 : see if setproctitle exists
15682 set setproctitle d_setproctitle
15683 eval $inlibc
15684
15685 : see if setprotoent_r exists
15686 set setprotoent_r d_setprotoent_r
15687 eval $inlibc
15688 case "$d_setprotoent_r" in
15689 "$define")
15690         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15691         case "$d_setprotoent_r_proto:$usethreads" in
15692         ":define")      d_setprotoent_r_proto=define
15693                 set d_setprotoent_r_proto setprotoent_r $hdrs
15694                 eval $hasproto ;;
15695         *)      ;;
15696         esac
15697         case "$d_setprotoent_r_proto" in
15698         define)
15699         case "$setprotoent_r_proto" in
15700         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15701         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15702         esac
15703         case "$setprotoent_r_proto" in
15704         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15705         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15706         esac
15707         case "$setprotoent_r_proto" in
15708         ''|0)   d_setprotoent_r=undef
15709                 setprotoent_r_proto=0
15710                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15711         * )     case "$setprotoent_r_proto" in
15712                 REENTRANT_PROTO*) ;;
15713                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15714                 esac
15715                 echo "Prototype: $try" ;;
15716         esac
15717         ;;
15718         *)      case "$usethreads" in
15719                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15720                 esac
15721                 d_setprotoent_r=undef
15722                 setprotoent_r_proto=0
15723                 ;;
15724         esac
15725         ;;
15726 *)      setprotoent_r_proto=0
15727         ;;
15728 esac
15729
15730 : see if setpwent exists
15731 set setpwent d_setpwent
15732 eval $inlibc
15733
15734 : see if setpwent_r exists
15735 set setpwent_r d_setpwent_r
15736 eval $inlibc
15737 case "$d_setpwent_r" in
15738 "$define")
15739         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15740         case "$d_setpwent_r_proto:$usethreads" in
15741         ":define")      d_setpwent_r_proto=define
15742                 set d_setpwent_r_proto setpwent_r $hdrs
15743                 eval $hasproto ;;
15744         *)      ;;
15745         esac
15746         case "$d_setpwent_r_proto" in
15747         define)
15748         case "$setpwent_r_proto" in
15749         ''|0) try='int setpwent_r(FILE**);'
15750         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15751         esac
15752         case "$setpwent_r_proto" in
15753         ''|0) try='void setpwent_r(FILE**);'
15754         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15755         esac
15756         case "$setpwent_r_proto" in
15757         ''|0)   d_setpwent_r=undef
15758                 setpwent_r_proto=0
15759                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15760         * )     case "$setpwent_r_proto" in
15761                 REENTRANT_PROTO*) ;;
15762                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15763                 esac
15764                 echo "Prototype: $try" ;;
15765         esac
15766         ;;
15767         *)      case "$usethreads" in
15768                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15769                 esac
15770                 d_setpwent_r=undef
15771                 setpwent_r_proto=0
15772                 ;;
15773         esac
15774         ;;
15775 *)      setpwent_r_proto=0
15776         ;;
15777 esac
15778
15779 : see if setregid exists
15780 set setregid d_setregid
15781 eval $inlibc
15782 set setresgid d_setresgid
15783 eval $inlibc
15784
15785 : see if setreuid exists
15786 set setreuid d_setreuid
15787 eval $inlibc
15788 set setresuid d_setresuid
15789 eval $inlibc
15790
15791 : see if setrgid exists
15792 set setrgid d_setrgid
15793 eval $inlibc
15794
15795 : see if setruid exists
15796 set setruid d_setruid
15797 eval $inlibc
15798
15799 : see if setservent exists
15800 set setservent d_setsent
15801 eval $inlibc
15802
15803 : see if setservent_r exists
15804 set setservent_r d_setservent_r
15805 eval $inlibc
15806 case "$d_setservent_r" in
15807 "$define")
15808         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15809         case "$d_setservent_r_proto:$usethreads" in
15810         ":define")      d_setservent_r_proto=define
15811                 set d_setservent_r_proto setservent_r $hdrs
15812                 eval $hasproto ;;
15813         *)      ;;
15814         esac
15815         case "$d_setservent_r_proto" in
15816         define)
15817         case "$setservent_r_proto" in
15818         ''|0) try='int setservent_r(int, struct servent_data*);'
15819         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15820         esac
15821         case "$setservent_r_proto" in
15822         ''|0) try='void setservent_r(int, struct servent_data*);'
15823         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15824         esac
15825         case "$setservent_r_proto" in
15826         ''|0)   d_setservent_r=undef
15827                 setservent_r_proto=0
15828                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15829         * )     case "$setservent_r_proto" in
15830                 REENTRANT_PROTO*) ;;
15831                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15832                 esac
15833                 echo "Prototype: $try" ;;
15834         esac
15835         ;;
15836         *)      case "$usethreads" in
15837                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15838                 esac
15839                 d_setservent_r=undef
15840                 setservent_r_proto=0
15841                 ;;
15842         esac
15843         ;;
15844 *)      setservent_r_proto=0
15845         ;;
15846 esac
15847
15848 : see if setsid exists
15849 set setsid d_setsid
15850 eval $inlibc
15851
15852 : see if setvbuf exists
15853 set setvbuf d_setvbuf
15854 eval $inlibc
15855
15856 : see if sfio.h is available
15857 set sfio.h i_sfio
15858 eval $inhdr
15859
15860
15861 : see if sfio library is available
15862 case "$i_sfio" in
15863 $define)
15864         val=''
15865         set sfreserve val
15866         eval $inlibc
15867         ;;
15868 *)
15869         val="$undef"
15870         ;;
15871 esac
15872 : Ok, but do we want to use it.
15873 case "$val" in
15874 $define)
15875         case "$usesfio" in
15876         true|$define|[yY]*) dflt='y';;
15877         *) dflt='n';;
15878         esac
15879         echo "$package can use the sfio library, but it is experimental."
15880         case "$useperlio" in
15881         "$undef")
15882             echo "For sfio also the PerlIO abstraction layer is needed."
15883             echo "Earlier you said you wouldn't want that."
15884             ;;
15885         esac
15886         rp="You seem to have sfio available, do you want to try using it?"
15887         . ./myread
15888         case "$ans" in
15889         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15890                 useperlio="$define"
15891                 val="$define"
15892                 ;;
15893         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15894                 val="$undef"
15895                 ;;
15896         esac
15897         ;;
15898 *)      case "$usesfio" in
15899         true|$define|[yY]*)
15900                 echo "Sorry, cannot find sfio on this machine." >&4
15901                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15902                 val="$undef"
15903                 ;;
15904         esac
15905         ;;
15906 esac
15907 set d_sfio
15908 eval $setvar
15909 case "$d_sfio" in
15910 $define) usesfio='true';;
15911 *) usesfio='false';;
15912 esac
15913 case "$d_sfio" in
15914 $define) ;;
15915 *)      : Remove sfio from list of libraries to use
15916         case "$libs" in
15917         *-lsfio*)
15918                 echo "Removing unneeded -lsfio from library list" >&4
15919                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15920                 shift
15921                 libs="$*"
15922                 echo "libs = $libs" >&4
15923                 ;;
15924         esac
15925 ;;
15926 esac
15927
15928
15929 : see if shmctl exists
15930 set shmctl d_shmctl
15931 eval $inlibc
15932
15933 : see if shmget exists
15934 set shmget d_shmget
15935 eval $inlibc
15936
15937 : see if shmat exists
15938 set shmat d_shmat
15939 eval $inlibc
15940 : see what shmat returns
15941 case "$d_shmat" in
15942 "$define")
15943         $cat >shmat.c <<'END'
15944 #include <sys/shm.h>
15945 void *shmat();
15946 END
15947         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15948                 shmattype='void *'
15949         else
15950                 shmattype='char *'
15951         fi
15952         echo "and it returns ($shmattype)." >&4
15953         : see if a prototype for shmat is available
15954         xxx=`./findhdr sys/shm.h`
15955         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15956         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15957                 val="$define"
15958         else
15959                 val="$undef"
15960         fi
15961         $rm -f shmat.[co]
15962         ;;
15963 *)
15964         val="$undef"
15965         ;;
15966 esac
15967 set d_shmatprototype
15968 eval $setvar
15969
15970 : see if shmdt exists
15971 set shmdt d_shmdt
15972 eval $inlibc
15973
15974 : see how much of the 'shm*(2)' library is present.
15975 h_shm=true
15976 echo " "
15977 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15978 *"$undef"*) h_shm=false;;
15979 esac
15980 case "$osname" in
15981 freebsd)
15982     case "`ipcs 2>&1`" in
15983     "SVID shared memory"*"not configured"*)
15984         echo "Your $osname does not have the shm*(2) configured." >&4
15985         h_shm=false
15986         val="$undef"
15987         set shmctl d_shmctl
15988         evat $setvar
15989         set shmget d_shmget
15990         evat $setvar
15991         set shmat d_shmat
15992         evat $setvar
15993         set shmdt d_shmdt
15994         evat $setvar
15995         ;;
15996     esac
15997     ;;
15998 esac
15999 : we could also check for sys/ipc.h ...
16000 if $h_shm && $test `./findhdr sys/shm.h`; then
16001         echo "You have the full shm*(2) library." >&4
16002         val="$define"
16003 else
16004         echo "You don't have the full shm*(2) library." >&4
16005         val="$undef"
16006 fi
16007 set d_shm
16008 eval $setvar
16009
16010 echo " "
16011 : see if we have sigaction
16012 if set sigaction val -f d_sigaction; eval $csym; $val; then
16013         echo 'sigaction() found.' >&4
16014         $cat > try.c <<EOP
16015 #include <stdio.h>
16016 #include <sys/types.h>
16017 #include <signal.h>
16018 #$i_stdlib I_STDLIB
16019 #ifdef I_STDLIB
16020 #include <stdlib.h>
16021 #endif
16022 int main()
16023 {
16024     struct sigaction act, oact;
16025     act.sa_flags = 0;
16026     oact.sa_handler = 0;
16027     /* so that act and oact are used */
16028     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16029 }
16030 EOP
16031         set try
16032         if eval $compile_ok; then
16033                 val="$define"
16034         else
16035                 echo "But you don't seem to have a useable struct sigaction." >&4
16036                 val="$undef"
16037         fi
16038 else
16039         echo 'sigaction NOT found.' >&4
16040         val="$undef"
16041 fi
16042 set d_sigaction; eval $setvar
16043 $rm -f try try$_o try.c
16044
16045 : see if sigprocmask exists
16046 set sigprocmask d_sigprocmask
16047 eval $inlibc
16048
16049 : see if sigsetjmp exists
16050 echo " "
16051 case "$d_sigsetjmp" in
16052 '')
16053         $cat >try.c <<EOP
16054 #include <setjmp.h>
16055 #$i_stdlib I_STDLIB
16056 #ifdef I_STDLIB
16057 #include <stdlib.h>
16058 #endif
16059 sigjmp_buf env;
16060 int set = 1;
16061 int main()
16062 {
16063         if (sigsetjmp(env,1))
16064                 exit(set);
16065         set = 0;
16066         siglongjmp(env, 1);
16067         exit(1);
16068 }
16069 EOP
16070         set try
16071         if eval $compile; then
16072                 if $run ./try >/dev/null 2>&1; then
16073                         echo "POSIX sigsetjmp found." >&4
16074                         val="$define"
16075                 else
16076                         $cat >&4 <<EOM
16077 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16078 I'll ignore them.
16079 EOM
16080                         val="$undef"
16081                 fi
16082         else
16083                 echo "sigsetjmp not found." >&4
16084                 val="$undef"
16085         fi
16086         ;;
16087 *) val="$d_sigsetjmp"
16088         case "$d_sigsetjmp" in
16089         $define) echo "POSIX sigsetjmp found." >&4;;
16090         $undef) echo "sigsetjmp not found." >&4;;
16091         esac
16092         ;;
16093 esac
16094 set d_sigsetjmp
16095 eval $setvar
16096 $rm -f try.c try
16097
16098 : see if sockatmark exists
16099 set sockatmark d_sockatmark
16100 eval $inlibc
16101
16102 : see if prototype for sockatmark is available
16103 echo " "
16104 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16105 eval $hasproto
16106
16107 : see if socks5_init exists
16108 set socks5_init d_socks5_init
16109 eval $inlibc
16110
16111 : see if srand48_r exists
16112 set srand48_r d_srand48_r
16113 eval $inlibc
16114 case "$d_srand48_r" in
16115 "$define")
16116         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16117         case "$d_srand48_r_proto:$usethreads" in
16118         ":define")      d_srand48_r_proto=define
16119                 set d_srand48_r_proto srand48_r $hdrs
16120                 eval $hasproto ;;
16121         *)      ;;
16122         esac
16123         case "$d_srand48_r_proto" in
16124         define)
16125         case "$srand48_r_proto" in
16126         ''|0) try='int srand48_r(long, struct drand48_data*);'
16127         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16128         esac
16129         case "$srand48_r_proto" in
16130         ''|0)   d_srand48_r=undef
16131                 srand48_r_proto=0
16132                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16133         * )     case "$srand48_r_proto" in
16134                 REENTRANT_PROTO*) ;;
16135                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16136                 esac
16137                 echo "Prototype: $try" ;;
16138         esac
16139         ;;
16140         *)      case "$usethreads" in
16141                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16142                 esac
16143                 d_srand48_r=undef
16144                 srand48_r_proto=0
16145                 ;;
16146         esac
16147         ;;
16148 *)      srand48_r_proto=0
16149         ;;
16150 esac
16151
16152 : see if srandom_r exists
16153 set srandom_r d_srandom_r
16154 eval $inlibc
16155 case "$d_srandom_r" in
16156 "$define")
16157         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16158         case "$d_srandom_r_proto:$usethreads" in
16159         ":define")      d_srandom_r_proto=define
16160                 set d_srandom_r_proto srandom_r $hdrs
16161                 eval $hasproto ;;
16162         *)      ;;
16163         esac
16164         case "$d_srandom_r_proto" in
16165         define)
16166         case "$srandom_r_proto" in
16167         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16168         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16169         esac
16170         case "$srandom_r_proto" in
16171         ''|0)   d_srandom_r=undef
16172                 srandom_r_proto=0
16173                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16174         * )     case "$srandom_r_proto" in
16175                 REENTRANT_PROTO*) ;;
16176                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16177                 esac
16178                 echo "Prototype: $try" ;;
16179         esac
16180         ;;
16181         *)      case "$usethreads" in
16182                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16183                 esac
16184                 d_srandom_r=undef
16185                 srandom_r_proto=0
16186                 ;;
16187         esac
16188         ;;
16189 *)      srandom_r_proto=0
16190         ;;
16191 esac
16192
16193 : see if prototype for setresgid is available
16194 echo " "
16195 set d_sresgproto setresgid $i_unistd unistd.h
16196 eval $hasproto
16197
16198 : see if prototype for setresuid is available
16199 echo " "
16200 set d_sresuproto setresuid $i_unistd unistd.h
16201 eval $hasproto
16202
16203 : see if sys/stat.h is available
16204 set sys/stat.h i_sysstat
16205 eval $inhdr
16206
16207
16208 : see if stat knows about block sizes
16209 echo " "
16210 echo "Checking to see if your struct stat has st_blocks field..." >&4
16211 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16212 eval $hasfield
16213
16214
16215 : see if this is a sys/vfs.h system
16216 set sys/vfs.h i_sysvfs
16217 eval $inhdr
16218
16219
16220 : see if this is a sys/statfs.h system
16221 set sys/statfs.h i_sysstatfs
16222 eval $inhdr
16223
16224
16225 echo " "
16226 echo "Checking to see if your system supports struct statfs..." >&4
16227 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
16228 eval $hasstruct
16229 case "$d_statfs_s" in
16230 "$define")      echo "Yes, it does."   ;;
16231 *)              echo "No, it doesn't." ;;
16232 esac
16233
16234
16235
16236 : see if struct statfs knows about f_flags
16237 case "$d_statfs_s" in
16238 define) 
16239         echo " "
16240         echo "Checking to see if your struct statfs has f_flags field..." >&4
16241         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
16242         eval $hasfield
16243         ;;
16244 *)      val="$undef"
16245         set d_statfs_f_flags
16246         eval $setvar
16247         ;;
16248 esac
16249 case "$d_statfs_f_flags" in
16250 "$define")      echo "Yes, it does."   ;;
16251 *)              echo "No, it doesn't." ;;
16252 esac
16253
16254 $cat >&4 <<EOM
16255 Checking how to access stdio streams by file descriptor number...
16256 EOM
16257 case "$stdio_stream_array" in
16258 '')     $cat >try.c <<EOCP
16259 #include <stdio.h>
16260 int main() {
16261   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16262     printf("yes\n");
16263 }
16264 EOCP
16265         for s in _iob __iob __sF
16266         do
16267                 set try -DSTDIO_STREAM_ARRAY=$s
16268                 if eval $compile; then
16269                         case "`$run ./try`" in
16270                         yes)    stdio_stream_array=$s; break ;;
16271                         esac
16272                 fi
16273         done
16274         $rm -f try.* try$exe_ext
16275 esac
16276 case "$stdio_stream_array" in
16277 '')     $cat >&4 <<EOM
16278 I can't figure out how to access stdio streams by file descriptor number.
16279 EOM
16280         d_stdio_stream_array="$undef"
16281         ;;
16282 *)      $cat >&4 <<EOM
16283 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16284 EOM
16285         d_stdio_stream_array="$define"
16286         ;;
16287 esac
16288
16289 : see if strcoll exists
16290 set strcoll d_strcoll
16291 eval $inlibc
16292
16293 : check for structure copying
16294 echo " "
16295 echo "Checking to see if your C compiler can copy structs..." >&4
16296 $cat >try.c <<'EOCP'
16297 int main()
16298 {
16299         struct blurfl {
16300                 int dyick;
16301         } foo, bar;
16302
16303         foo = bar;
16304 }
16305 EOCP
16306 if $cc -c try.c >/dev/null 2>&1 ; then
16307         val="$define"
16308         echo "Yup, it can."
16309 else
16310         val="$undef"
16311         echo "Nope, it can't."
16312 fi
16313 set d_strctcpy
16314 eval $setvar
16315 $rm -f try.*
16316
16317 : see if strerror and/or sys_errlist[] exist
16318 echo " "
16319 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16320     if set strerror val -f d_strerror; eval $csym; $val; then
16321                 echo 'strerror() found.' >&4
16322                 d_strerror="$define"
16323                 d_strerrm='strerror(e)'
16324                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16325                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16326                         d_syserrlst="$define"
16327                 else
16328                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16329                         d_syserrlst="$undef"
16330                 fi
16331     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16332                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16333                 echo 'strerror() found in string header.' >&4
16334                 d_strerror="$define"
16335                 d_strerrm='strerror(e)'
16336                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16337                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16338                                 d_syserrlst="$define"
16339                 else
16340                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16341                         d_syserrlst="$undef"
16342                 fi
16343     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16344                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16345                 d_strerror="$undef"
16346                 d_syserrlst="$define"
16347                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16348     else
16349                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16350                 d_strerror="$undef"
16351                 d_syserrlst="$undef"
16352                 d_strerrm='"unknown"'
16353     fi
16354 fi
16355
16356 : see if strerror_r exists
16357 set strerror_r d_strerror_r
16358 eval $inlibc
16359 case "$d_strerror_r" in
16360 "$define")
16361         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16362         case "$d_strerror_r_proto:$usethreads" in
16363         ":define")      d_strerror_r_proto=define
16364                 set d_strerror_r_proto strerror_r $hdrs
16365                 eval $hasproto ;;
16366         *)      ;;
16367         esac
16368         case "$d_strerror_r_proto" in
16369         define)
16370         case "$strerror_r_proto" in
16371         ''|0) try='int strerror_r(int, char*, size_t);'
16372         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16373         esac
16374         case "$strerror_r_proto" in
16375         ''|0) try='int strerror_r(int, char*, int);'
16376         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16377         esac
16378         case "$strerror_r_proto" in
16379         ''|0) try='char* strerror_r(int, char*, size_t);'
16380         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16381         esac
16382         case "$strerror_r_proto" in
16383         ''|0)   d_strerror_r=undef
16384                 strerror_r_proto=0
16385                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16386         * )     case "$strerror_r_proto" in
16387                 REENTRANT_PROTO*) ;;
16388                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16389                 esac
16390                 echo "Prototype: $try" ;;
16391         esac
16392         ;;
16393         *)      case "$usethreads" in
16394                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16395                 esac
16396                 d_strerror_r=undef
16397                 strerror_r_proto=0
16398                 ;;
16399         esac
16400         ;;
16401 *)      strerror_r_proto=0
16402         ;;
16403 esac
16404
16405 : see if strftime exists
16406 set strftime d_strftime
16407 eval $inlibc
16408
16409 : see if strtod exists
16410 set strtod d_strtod
16411 eval $inlibc
16412
16413 : see if strtol exists
16414 set strtol d_strtol
16415 eval $inlibc
16416
16417 : see if strtold exists
16418 set strtold d_strtold
16419 eval $inlibc
16420
16421 : see if strtoll exists
16422 set strtoll d_strtoll
16423 eval $inlibc
16424
16425 case "$d_longlong-$d_strtoll" in
16426 "$define-$define")
16427         $cat <<EOM
16428 Checking whether your strtoll() works okay...
16429 EOM
16430         $cat >try.c <<'EOCP'
16431 #include <errno.h>
16432 #ifdef __hpux
16433 #define strtoll __strtoll
16434 #endif
16435 #ifdef __EMX__
16436 #define strtoll _strtoll
16437 #endif
16438 #include <stdio.h>
16439 extern long long int strtoll(char *s, char **, int); 
16440 static int bad = 0;
16441 int check(char *s, long long ell, int een) {
16442         long long gll;
16443         errno = 0;
16444         gll = strtoll(s, 0, 10);
16445         if (!((gll == ell) && (errno == een)))
16446                 bad++;
16447 }
16448 int main() {
16449         check(" 1",                                      1LL, 0);
16450         check(" 0",                                      0LL, 0);
16451         check("-1",                                     -1LL, 0);
16452         check("-9223372036854775808", -9223372036854775808LL, 0);
16453         check("-9223372036854775808", -9223372036854775808LL, 0);
16454         check(" 9223372036854775807",  9223372036854775807LL, 0);
16455         check("-9223372036854775808", -9223372036854775808LL, 0);
16456         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16457         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16458         if (!bad)
16459                 printf("ok\n");
16460 }
16461 EOCP
16462         set try
16463         if eval $compile; then
16464                 yyy=`$run ./try`
16465                 case "$yyy" in
16466                 ok) echo "Your strtoll() seems to be working okay." ;;
16467                 *) cat <<EOM >&4
16468 Your strtoll() doesn't seem to be working okay.
16469 EOM
16470                    d_strtoll="$undef"
16471                    ;;
16472                 esac
16473         else
16474                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16475                 d_strtoll="$undef"
16476         fi
16477         ;;
16478 esac
16479
16480 : see if strtoq exists
16481 set strtoq d_strtoq
16482 eval $inlibc
16483
16484 : see if strtoul exists
16485 set strtoul d_strtoul
16486 eval $inlibc
16487
16488 case "$d_strtoul" in
16489 "$define")
16490         $cat <<EOM
16491 Checking whether your strtoul() works okay...
16492 EOM
16493         $cat >try.c <<'EOCP'
16494 #include <errno.h>
16495 #include <stdio.h>
16496 extern unsigned long int strtoul(char *s, char **, int); 
16497 static int bad = 0;
16498 void check(char *s, unsigned long eul, int een) {
16499         unsigned long gul;
16500         errno = 0;
16501         gul = strtoul(s, 0, 10);
16502         if (!((gul == eul) && (errno == een)))
16503                 bad++;
16504 }
16505 int main() {
16506         check(" 1", 1L, 0);
16507         check(" 0", 0L, 0);
16508 EOCP
16509         case "$longsize" in
16510         8)
16511             $cat >>try.c <<'EOCP'
16512         check("18446744073709551615", 18446744073709551615UL, 0);
16513         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16514 #if 0 /* strtoul() for /^-/ strings is undefined. */
16515         check("-1", 18446744073709551615UL, 0);
16516         check("-18446744073709551614", 2, 0);
16517         check("-18446744073709551615", 1, 0);
16518         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16519         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16520 #endif
16521 EOCP
16522                 ;;
16523         4)
16524                     $cat >>try.c <<'EOCP'
16525         check("4294967295", 4294967295UL, 0);
16526         check("4294967296", 4294967295UL, ERANGE);
16527 #if 0 /* strtoul() for /^-/ strings is undefined. */
16528         check("-1", 4294967295UL, 0);
16529         check("-4294967294", 2, 0);
16530         check("-4294967295", 1, 0);
16531         check("-4294967296", 4294967295UL, ERANGE);
16532         check("-4294967297", 4294967295UL, ERANGE);
16533 #endif
16534 EOCP
16535                 ;;
16536         *)
16537 : Should we write these tests to be more portable by sprintf-ing
16538 : ~0 and then manipulating that char string as input for strtol?
16539                 ;;
16540         esac
16541         $cat >>try.c <<'EOCP'
16542         if (!bad)
16543                 printf("ok\n");
16544         return 0;
16545 }
16546 EOCP
16547         set try
16548         if eval $compile; then
16549                 case "`$run ./try`" in
16550                 ok) echo "Your strtoul() seems to be working okay." ;;
16551                 *) cat <<EOM >&4
16552 Your strtoul() doesn't seem to be working okay.
16553 EOM
16554                    d_strtoul="$undef"
16555                    ;;
16556                 esac
16557         fi
16558         ;;
16559 esac
16560
16561 : see if strtoull exists
16562 set strtoull d_strtoull
16563 eval $inlibc
16564
16565 case "$d_longlong-$d_strtoull" in
16566 "$define-$define")
16567         $cat <<EOM
16568 Checking whether your strtoull() works okay...
16569 EOM
16570         $cat >try.c <<'EOCP'
16571 #include <errno.h>
16572 #ifdef __hpux
16573 #define strtoull __strtoull
16574 #endif
16575 #include <stdio.h>
16576 extern unsigned long long int strtoull(char *s, char **, int); 
16577 static int bad = 0;
16578 int check(char *s, long long eull, int een) {
16579         long long gull;
16580         errno = 0;
16581         gull = strtoull(s, 0, 10);
16582         if (!((gull == eull) && (errno == een)))
16583                 bad++;
16584 }
16585 int main() {
16586         check(" 1",                                        1LL, 0);
16587         check(" 0",                                        0LL, 0);
16588         check("18446744073709551615",  18446744073709551615ULL, 0);
16589         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16590 #if 0 /* strtoull() for /^-/ strings is undefined. */
16591         check("-1",                    18446744073709551615ULL, 0);
16592         check("-18446744073709551614",                     2LL, 0);
16593         check("-18446744073709551615",                     1LL, 0);
16594         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16595         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16596 #endif
16597         if (!bad)
16598                 printf("ok\n");
16599 }
16600 EOCP
16601         set try
16602         if eval $compile; then
16603                 case "`$run ./try`" in
16604                 ok) echo "Your strtoull() seems to be working okay." ;;
16605                 *) cat <<EOM >&4
16606 Your strtoull() doesn't seem to be working okay.
16607 EOM
16608                    d_strtoull="$undef"
16609                    ;;
16610                 esac
16611         fi
16612         ;;
16613 esac
16614
16615 : see if strtouq exists
16616 set strtouq d_strtouq
16617 eval $inlibc
16618
16619 case "$d_strtouq" in
16620 "$define")
16621         $cat <<EOM
16622 Checking whether your strtouq() works okay...
16623 EOM
16624         $cat >try.c <<'EOCP'
16625 #include <errno.h>
16626 #include <stdio.h>
16627 extern unsigned long long int strtouq(char *s, char **, int); 
16628 static int bad = 0;
16629 void check(char *s, unsigned long long eull, int een) {
16630         unsigned long long gull;
16631         errno = 0;
16632         gull = strtouq(s, 0, 10);
16633         if (!((gull == eull) && (errno == een)))
16634                 bad++;
16635 }
16636 int main() {
16637         check(" 1",                                        1LL, 0);
16638         check(" 0",                                        0LL, 0);
16639         check("18446744073709551615",  18446744073709551615ULL, 0);
16640         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16641 #if 0 /* strtouq() for /^-/ strings is undefined. */
16642         check("-1",                    18446744073709551615ULL, 0);
16643         check("-18446744073709551614",                     2LL, 0);
16644         check("-18446744073709551615",                     1LL, 0);
16645         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16646         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16647 #endif
16648         if (!bad)
16649                 printf("ok\n");
16650         return 0;
16651 }
16652 EOCP
16653         set try
16654         if eval $compile; then
16655                 case "`$run ./try`" in
16656                 ok) echo "Your strtouq() seems to be working okay." ;;
16657                 *) cat <<EOM >&4
16658 Your strtouq() doesn't seem to be working okay.
16659 EOM
16660                    d_strtouq="$undef"
16661                    ;;
16662                 esac
16663         fi
16664         ;;
16665 esac
16666
16667 : see if strxfrm exists
16668 set strxfrm d_strxfrm
16669 eval $inlibc
16670
16671 : see if symlink exists
16672 set symlink d_symlink
16673 eval $inlibc
16674
16675 : see if syscall exists
16676 set syscall d_syscall
16677 eval $inlibc
16678
16679 : see if prototype for syscall is available
16680 echo " "
16681 set d_syscallproto syscall $i_unistd unistd.h
16682 eval $hasproto
16683
16684 : see if sysconf exists
16685 set sysconf d_sysconf
16686 eval $inlibc
16687
16688 : see if system exists
16689 set system d_system
16690 eval $inlibc
16691
16692 : see if tcgetpgrp exists
16693 set tcgetpgrp d_tcgetpgrp
16694 eval $inlibc
16695
16696 : see if tcsetpgrp exists
16697 set tcsetpgrp d_tcsetpgrp
16698 eval $inlibc
16699
16700 : see if prototype for telldir is available
16701 echo " "
16702 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16703 eval $hasproto
16704
16705 : see if time exists
16706 echo " "
16707 if test "X$d_time" = X -o X"$timetype" = X; then
16708     if set time val -f d_time; eval $csym; $val; then
16709                 echo 'time() found.' >&4
16710                 val="$define"
16711                 rp="What is the type returned by time() on this system?"
16712                 set time_t timetype long stdio.h sys/types.h
16713                 eval $typedef_ask
16714     else
16715                 echo 'time() not found, hope that will do.' >&4
16716                 val="$undef"
16717                 timetype='int';
16718     fi
16719     set d_time
16720     eval $setvar
16721 fi
16722
16723 : see if this is a sys/times.h system
16724 set sys/times.h i_systimes
16725 eval $inhdr
16726
16727 : see if times exists
16728 echo " "
16729 if set times val -f d_times; eval $csym; $val; then
16730         echo 'times() found.' >&4
16731         d_times="$define"
16732         inc=''
16733         case "$i_systimes" in
16734         "$define") inc='sys/times.h';;
16735         esac
16736         rp="What is the type returned by times() on this system?"
16737         set clock_t clocktype long stdio.h sys/types.h $inc
16738         eval $typedef_ask
16739 else
16740         echo 'times() NOT found, hope that will do.' >&4
16741         d_times="$undef"
16742         clocktype='int'
16743 fi
16744
16745 : see if tmpnam_r exists
16746 set tmpnam_r d_tmpnam_r
16747 eval $inlibc
16748 case "$d_tmpnam_r" in
16749 "$define")
16750         hdrs="$i_systypes sys/types.h define stdio.h "
16751         case "$d_tmpnam_r_proto:$usethreads" in
16752         ":define")      d_tmpnam_r_proto=define
16753                 set d_tmpnam_r_proto tmpnam_r $hdrs
16754                 eval $hasproto ;;
16755         *)      ;;
16756         esac
16757         case "$d_tmpnam_r_proto" in
16758         define)
16759         case "$tmpnam_r_proto" in
16760         ''|0) try='char* tmpnam_r(char*);'
16761         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16762         esac
16763         case "$tmpnam_r_proto" in
16764         ''|0)   d_tmpnam_r=undef
16765                 tmpnam_r_proto=0
16766                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16767         * )     case "$tmpnam_r_proto" in
16768                 REENTRANT_PROTO*) ;;
16769                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16770                 esac
16771                 echo "Prototype: $try" ;;
16772         esac
16773         ;;
16774         *)      case "$usethreads" in
16775                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16776                 esac
16777                 d_tmpnam_r=undef
16778                 tmpnam_r_proto=0
16779                 ;;
16780         esac
16781         ;;
16782 *)      tmpnam_r_proto=0
16783         ;;
16784 esac
16785
16786 : see if truncate exists
16787 set truncate d_truncate
16788 eval $inlibc
16789
16790 : see if ttyname_r exists
16791 set ttyname_r d_ttyname_r
16792 eval $inlibc
16793 case "$d_ttyname_r" in
16794 "$define")
16795         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16796         case "$d_ttyname_r_proto:$usethreads" in
16797         ":define")      d_ttyname_r_proto=define
16798                 set d_ttyname_r_proto ttyname_r $hdrs
16799                 eval $hasproto ;;
16800         *)      ;;
16801         esac
16802         case "$d_ttyname_r_proto" in
16803         define)
16804         case "$ttyname_r_proto" in
16805         ''|0) try='int ttyname_r(int, char*, size_t);'
16806         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16807         esac
16808         case "$ttyname_r_proto" in
16809         ''|0) try='int ttyname_r(int, char*, int);'
16810         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16811         esac
16812         case "$ttyname_r_proto" in
16813         ''|0) try='char* ttyname_r(int, char*, int);'
16814         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16815         esac
16816         case "$ttyname_r_proto" in
16817         ''|0)   d_ttyname_r=undef
16818                 ttyname_r_proto=0
16819                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16820         * )     case "$ttyname_r_proto" in
16821                 REENTRANT_PROTO*) ;;
16822                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16823                 esac
16824                 echo "Prototype: $try" ;;
16825         esac
16826         ;;
16827         *)      case "$usethreads" in
16828                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16829                 esac
16830                 d_ttyname_r=undef
16831                 ttyname_r_proto=0
16832                 ;;
16833         esac
16834         ;;
16835 *)      ttyname_r_proto=0
16836         ;;
16837 esac
16838
16839 : see if tzname[] exists
16840 echo " "
16841 if set tzname val -a d_tzname; eval $csym; $val; then
16842         val="$define"
16843         echo 'tzname[] found.' >&4
16844 else
16845         val="$undef"
16846         echo 'tzname[] NOT found.' >&4
16847 fi
16848 set d_tzname
16849 eval $setvar
16850
16851 case "$osname" in
16852 next|rhapsody|darwin) multiarch="$define" ;;
16853 esac
16854 case "$multiarch" in
16855 ''|[nN]*) multiarch="$undef" ;;
16856 esac
16857
16858 : check for ordering of bytes in a UV
16859 echo " "
16860 case "$usecrosscompile$multiarch" in
16861 *$define*)
16862         $cat <<EOM
16863 You seem to be either cross-compiling or doing a multiarchitecture build,
16864 skipping the byteorder check.
16865
16866 EOM
16867         byteorder='ffff'
16868         ;;
16869 *)
16870         case "$byteorder" in
16871         '')
16872                 $cat <<'EOM'
16873 In the following, larger digits indicate more significance.  A big-endian
16874 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16875 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16876 machines may have weird orders like 3412.  A Cray will report 87654321,
16877 an Alpha will report 12345678. If the test program works the default is
16878 probably right.
16879 I'm now running the test program...
16880 EOM
16881                 $cat >try.c <<EOCP
16882 #include <stdio.h>
16883 #$i_stdlib I_STDLIB
16884 #ifdef I_STDLIB
16885 #include <stdlib.h>
16886 #endif
16887 #include <sys/types.h>
16888 typedef $uvtype UV;
16889 int main()
16890 {
16891         int i;
16892         union {
16893                 UV l;
16894                 char c[$uvsize];
16895         } u;
16896
16897         if ($uvsize > 4)
16898                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16899         else
16900                 u.l = (UV)0x04030201;
16901         for (i = 0; i < $uvsize; i++)
16902                 printf("%c", u.c[i]+'0');
16903         printf("\n");
16904         exit(0);
16905 }
16906 EOCP
16907                 xxx_prompt=y
16908                 set try
16909                 if eval $compile && ./try > /dev/null; then
16910                         dflt=`$run ./try`
16911                         case "$dflt" in
16912                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16913                                 echo "(The test program ran ok.)"
16914                                 echo "byteorder=$dflt"
16915                                 xxx_prompt=n
16916                         ;;
16917                         ????|????????) echo "(The test program ran ok.)" ;;
16918                         *) echo "(The test program didn't run right for some reason.)" ;;
16919                         esac
16920                 else
16921                         dflt='4321'
16922                         cat <<'EOM'
16923 (I can't seem to compile the test program.  Guessing big-endian...)
16924 EOM
16925                 fi
16926                 case "$xxx_prompt" in
16927                 y)
16928                         rp="What is the order of bytes in $uvtype?"
16929                         . ./myread
16930                         byteorder="$ans"
16931                         ;;
16932                 *)      byteorder=$dflt
16933                         ;;
16934                 esac
16935                 ;;
16936         esac
16937         $rm -f try.c try
16938         ;;
16939 esac
16940
16941
16942 $cat <<EOM
16943
16944 Checking to see whether you can access character data unalignedly...
16945 EOM
16946 case "$d_u32align" in
16947 '')   $cat >try.c <<EOCP
16948 #include <stdio.h>
16949 #$i_stdlib I_STDLIB
16950 #ifdef I_STDLIB
16951 #include <stdlib.h>
16952 #endif
16953 #define U32 $u32type
16954 #define BYTEORDER 0x$byteorder
16955 #define U8 $u8type
16956 #include <signal.h>
16957 #ifdef SIGBUS
16958 $signal_t bletch(s) int s; { exit(4); }
16959 #endif
16960 int main() {
16961 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16962     U8 buf[8];
16963     U32 *up;
16964     int i;
16965
16966     if (sizeof(U32) != 4) {
16967         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16968         exit(1);
16969     }
16970
16971     fflush(stdout);
16972
16973 #ifdef SIGBUS
16974     signal(SIGBUS, bletch);
16975 #endif
16976
16977     buf[0] = 0;
16978     buf[1] = 0;
16979     buf[2] = 0;
16980     buf[3] = 1;
16981     buf[4] = 0;
16982     buf[5] = 0;
16983     buf[6] = 0;
16984     buf[7] = 1;
16985
16986     for (i = 0; i < 4; i++) {
16987         up = (U32*)(buf + i);
16988         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16989                (*up == 1 << (8*(3-i)))  /* little-endian */
16990               )
16991            )
16992         {
16993             printf("read failed (%x)\n", *up);
16994             exit(2);
16995         }
16996     }
16997
16998     /* write test */
16999     for (i = 0; i < 4; i++) {
17000         up = (U32*)(buf + i);
17001         *up = 0xBeef;
17002         if (*up != 0xBeef) {
17003             printf("write failed (%x)\n", *up);
17004             exit(3);
17005         }
17006     }
17007
17008     exit(0);
17009 #else
17010     printf("1\n");
17011     exit(1);
17012 #endif
17013     return 0;
17014 }
17015 EOCP
17016 set try
17017 if eval $compile_ok; then
17018         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
17019         $run ./try 2>&1 >/dev/null
17020         case "$?" in
17021         0)      cat >&4 <<EOM
17022 You can access character data pretty unalignedly.
17023 EOM
17024                 d_u32align="$undef"
17025                 ;;
17026         *)      cat >&4 <<EOM
17027 It seems that you must access character data in an aligned manner.
17028 EOM
17029                 d_u32align="$define"
17030                 ;;
17031         esac
17032 else
17033         rp='Can you access character data at unaligned addresses?'
17034         dflt='n'
17035         . ./myread
17036         case "$ans" in
17037         [yY]*)  d_u32align="$undef"  ;;
17038         *)      d_u32align="$define" ;;
17039         esac
17040 fi
17041 $rm -f core core.try.* try.core
17042 ;;
17043 esac
17044
17045 : see if ualarm exists
17046 set ualarm d_ualarm
17047 eval $inlibc
17048
17049 : see if umask exists
17050 set umask d_umask
17051 eval $inlibc
17052
17053 : see if unordered exists
17054 set unordered d_unordered
17055 eval $inlibc
17056
17057 : see if usleep exists
17058 set usleep d_usleep
17059 eval $inlibc
17060
17061 : see if prototype for usleep is available
17062 echo " "
17063 set d_usleepproto usleep $i_unistd unistd.h
17064 eval $hasproto
17065
17066 : see if ustat exists
17067 set ustat d_ustat
17068 eval $inlibc
17069
17070 : backward compatibility for d_hvfork
17071 if test X$d_hvfork != X; then
17072         d_vfork="$d_hvfork"
17073         d_hvfork=''
17074 fi
17075 : see if there is a vfork
17076 val=''
17077 set vfork val
17078 eval $inlibc
17079
17080 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17081 : perl on Solaris 2.x, and probably elsewhere.
17082 case "$val" in
17083 $define)
17084         echo " "
17085         case "$usevfork" in
17086         false) dflt='n';;
17087         *) dflt='y';;
17088         esac
17089         cat <<'EOM'
17090  
17091 Perl can only use a vfork() that doesn't suffer from strict
17092 restrictions on calling functions or modifying global data in
17093 the child.  For example, glibc-2.1 contains such a vfork()
17094 that is unsuitable.  If your system provides a proper fork()
17095 call, chances are that you do NOT want perl to use vfork().
17096
17097 EOM
17098         rp="Do you still want to use vfork()?"
17099         . ./myread
17100         case "$ans" in
17101         y|Y) ;;
17102         *)
17103                 echo "Ok, we won't use vfork()."
17104                 val="$undef"
17105                 ;;
17106         esac
17107         ;;
17108 esac
17109 set d_vfork
17110 eval $setvar
17111 case "$d_vfork" in
17112 $define) usevfork='true';;
17113 *) usevfork='false';;
17114 esac
17115
17116 : see if closedir exists
17117 set closedir d_closedir
17118 eval $inlibc
17119
17120 case "$d_closedir" in
17121 "$define")
17122         echo " "
17123         echo "Checking whether closedir() returns a status..." >&4
17124         cat > try.c <<EOM
17125 #$i_dirent I_DIRENT             /**/
17126 #$i_sysdir I_SYS_DIR            /**/
17127 #$i_sysndir I_SYS_NDIR          /**/
17128 #$i_systypes I_SYS_TYPES        /**/
17129
17130 #if defined(I_SYS_TYPES)
17131 #include <sys/types.h>
17132 #endif
17133 #if defined(I_DIRENT)
17134 #include <dirent.h>
17135 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17136 #include <sys/dir.h>
17137 #endif
17138 #else
17139 #ifdef I_SYS_NDIR
17140 #include <sys/ndir.h>
17141 #else
17142 #ifdef I_SYS_DIR
17143 #ifdef hp9000s500
17144 #include <ndir.h>       /* may be wrong in the future */
17145 #else
17146 #include <sys/dir.h>
17147 #endif
17148 #endif
17149 #endif
17150 #endif 
17151 int main() { return closedir(opendir(".")); }
17152 EOM
17153         set try
17154         if eval $compile_ok; then
17155                 if $run ./try > /dev/null 2>&1 ; then
17156                         echo "Yes, it does."
17157                         val="$undef"
17158                 else
17159                         echo "No, it doesn't."
17160                         val="$define"
17161                 fi
17162         else
17163                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17164                 val="$define"
17165         fi
17166         ;;
17167 *)
17168         val="$undef";
17169         ;;
17170 esac
17171 set d_void_closedir
17172 eval $setvar
17173 $rm -f try try.*
17174 : see if there is a wait4
17175 set wait4 d_wait4
17176 eval $inlibc
17177
17178 : see if waitpid exists
17179 set waitpid d_waitpid
17180 eval $inlibc
17181
17182 : see if wcstombs exists
17183 set wcstombs d_wcstombs
17184 eval $inlibc
17185
17186 : see if wctomb exists
17187 set wctomb d_wctomb
17188 eval $inlibc
17189
17190 : see if writev exists
17191 set writev d_writev
17192 eval $inlibc
17193
17194 : preserve RCS keywords in files with variable substitution, grrr
17195 Date='$Date'
17196 Id='$Id'
17197 Log='$Log'
17198 RCSfile='$RCSfile'
17199 Revision='$Revision'
17200
17201 : check for alignment requirements
17202 echo " "
17203 case "$usecrosscompile$multiarch" in
17204 *$define*)
17205         $cat <<EOM
17206 You seem to be either cross-compiling or doing a multiarchitecture build,
17207 skipping the memory alignment check.
17208
17209 EOM
17210         case "$alignbytes" in
17211         '') alignbytes=8 ;;
17212         esac
17213         ;;
17214 *)
17215         case "$alignbytes" in
17216         '') echo "Checking alignment constraints..." >&4
17217                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17218                         $cat >try.c <<'EOCP'
17219 typedef long double NV;
17220 EOCP
17221                 else
17222                         $cat >try.c <<'EOCP'
17223 typedef double NV;
17224 EOCP
17225                 fi
17226                 $cat >>try.c <<'EOCP'
17227 #include <stdio.h>
17228 struct foobar {
17229         char foo;
17230         NV bar;
17231 } try_algn;
17232 int main()
17233 {
17234     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17235     return(0);
17236 }
17237 EOCP
17238                 set try
17239                 if eval $compile_ok; then
17240                         dflt=`$run ./try`
17241                 else
17242                         dflt='8'
17243                         echo "(I can't seem to compile the test program...)"
17244                 fi
17245                 ;;
17246         *) dflt="$alignbytes"
17247                 ;;
17248         esac
17249         rp="Doubles must be aligned on a how-many-byte boundary?"
17250         . ./myread
17251         alignbytes="$ans"
17252         $rm -f try.c try
17253         ;;
17254 esac
17255
17256
17257 : set the base revision
17258 baserev=5.0
17259
17260 : how do we concatenate cpp tokens here?
17261 echo " "
17262 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17263 $cat >cpp_stuff.c <<'EOCP'
17264 #define RCAT(a,b)a/**/b
17265 #define ACAT(a,b)a ## b
17266 RCAT(Rei,ser)
17267 ACAT(Cir,cus)
17268 EOCP
17269 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17270 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17271         echo "Oh!  Smells like ANSI's been here." >&4
17272         echo "We can catify or stringify, separately or together!"
17273         cpp_stuff=42
17274 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17275         echo "Ah, yes!  The good old days!" >&4
17276         echo "However, in the good old days we don't know how to stringify and"
17277         echo "catify at the same time."
17278         cpp_stuff=1
17279 else
17280         $cat >&4 <<EOM
17281 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17282 You're going to have to edit the values of CAT[2-5] in config.h...
17283 EOM
17284         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17285 fi
17286 $rm -f cpp_stuff.*
17287
17288 : see if this is a db.h system
17289 set db.h i_db
17290 eval $inhdr
17291
17292 case "$i_db" in
17293 $define)
17294         : Check db version.
17295         echo " "
17296         echo "Checking Berkeley DB version ..." >&4
17297         $cat >try.c <<EOCP
17298 #$d_const HASCONST
17299 #ifndef HASCONST
17300 #define const
17301 #endif
17302 #include <sys/types.h>
17303 #include <stdio.h>
17304 #$i_stdlib I_STDLIB
17305 #ifdef I_STDLIB
17306 #include <stdlib.h>
17307 #endif
17308 #include <db.h>
17309 int main(int argc, char *argv[])
17310 {
17311 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17312     int Major, Minor, Patch ;
17313     unsigned long Version ;
17314     (void)db_version(&Major, &Minor, &Patch) ;
17315     if (argc == 2) {
17316         printf("%d %d %d %d %d %d\n",
17317                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17318                Major, Minor, Patch);
17319         exit(0);
17320     }
17321     printf("You have Berkeley DB Version 2 or greater.\n");
17322
17323     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17324                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17325     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17326                 Major, Minor, Patch) ;
17327
17328     /* check that db.h & libdb are compatible */
17329     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17330         printf("db.h and libdb are incompatible.\n") ;
17331         exit(3);        
17332     }
17333
17334     printf("db.h and libdb are compatible.\n") ;
17335
17336     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17337                 + DB_VERSION_PATCH ;
17338
17339     /* needs to be >= 2.3.4 */
17340     if (Version < 2003004) {
17341     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17342         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17343         exit(2);        
17344     }
17345
17346     exit(0);
17347 #else
17348 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17349     if (argc == 2) {
17350         printf("1 0 0\n");
17351         exit(0);
17352     }
17353     printf("You have Berkeley DB Version 1.\n");
17354     exit(0);    /* DB version < 2: the coast is clear. */
17355 #else
17356     exit(1);    /* <db.h> not Berkeley DB? */
17357 #endif
17358 #endif
17359 }
17360 EOCP
17361         set try
17362         if eval $compile_ok && $run ./try; then
17363                 echo 'Looks OK.' >&4
17364                 set `$run ./try 1`
17365                 db_version_major=$1
17366                 db_version_minor=$2
17367                 db_version_patch=$3
17368         else
17369                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17370                 i_db=$undef
17371                 case " $libs " in
17372                 *"-ldb "*)
17373                         : Remove db from list of libraries to use
17374                         echo "Removing unusable -ldb from library list" >&4
17375                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17376                         shift
17377                         libs="$*"
17378                         echo "libs = $libs" >&4
17379                         ;;
17380                 esac
17381         fi
17382         $rm -f try.*
17383         ;;
17384 esac
17385
17386 case "$i_db" in
17387 define)
17388         : Check the return type needed for hash 
17389         echo " "
17390         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17391         $cat >try.c <<EOCP
17392 #$d_const HASCONST
17393 #ifndef HASCONST
17394 #define const
17395 #endif
17396 #include <sys/types.h>
17397 #include <db.h>
17398
17399 #ifndef DB_VERSION_MAJOR
17400 u_int32_t hash_cb (ptr, size)
17401 const void *ptr;
17402 size_t size;
17403 {
17404 }
17405 HASHINFO info;
17406 int main()
17407 {
17408         info.hash = hash_cb;
17409 }
17410 #endif
17411 EOCP
17412         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17413                 if $contains warning try.out >>/dev/null 2>&1 ; then
17414                         db_hashtype='int'
17415                 else
17416                         db_hashtype='u_int32_t'
17417                 fi
17418         else
17419                 : XXX Maybe we should just give up here.
17420                 db_hashtype=u_int32_t
17421                 $cat try.out >&4
17422                 echo "Help:  I can't seem to compile the db test program." >&4
17423                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17424         fi
17425         $rm -f try.*
17426         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17427         ;;
17428 *)      db_hashtype=u_int32_t
17429         ;;
17430 esac
17431 case "$i_db" in
17432 define)
17433         : Check the return type needed for prefix 
17434         echo " "
17435         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17436         cat >try.c <<EOCP
17437 #$d_const HASCONST
17438 #ifndef HASCONST
17439 #define const
17440 #endif
17441 #include <sys/types.h>
17442 #include <db.h>
17443
17444 #ifndef DB_VERSION_MAJOR
17445 size_t prefix_cb (key1, key2)
17446 const DBT *key1;
17447 const DBT *key2;
17448 {
17449 }
17450 BTREEINFO info;
17451 int main()
17452 {
17453         info.prefix = prefix_cb;
17454 }
17455 #endif
17456 EOCP
17457         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17458                 if $contains warning try.out >>/dev/null 2>&1 ; then
17459                         db_prefixtype='int'
17460                 else
17461                         db_prefixtype='size_t'
17462                 fi
17463         else
17464                 db_prefixtype='size_t'
17465                 : XXX Maybe we should just give up here.
17466                 $cat try.out >&4
17467                 echo "Help:  I can't seem to compile the db test program." >&4
17468                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17469         fi
17470         $rm -f try.*
17471         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17472         ;;
17473 *)      db_prefixtype='size_t'
17474         ;;
17475 esac
17476
17477
17478 : How can we generate normalized random numbers ?
17479 echo " "
17480 echo "Looking for a random number function..." >&4
17481 case "$randfunc" in
17482 '')
17483         if set drand48 val -f; eval $csym; $val; then
17484                 dflt="drand48"
17485                 echo "Good, found drand48()." >&4
17486         elif set random val -f; eval $csym; $val; then
17487                 dflt="random"
17488                 echo "OK, found random()." >&4
17489         else
17490                 dflt="rand"
17491                 echo "Yick, looks like I have to use rand()." >&4
17492         fi
17493         echo " "
17494         ;;
17495 *)
17496         dflt="$randfunc"
17497         ;;
17498 esac
17499 cont=true
17500
17501 case "$ccflags" in
17502 *-Dmy_rand=*|*-Dmy_srand=*)
17503         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17504         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17505         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17506         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17507         ;;
17508 esac
17509
17510 while $test "$cont"; do
17511         rp="Use which function to generate random numbers?"
17512         . ./myread
17513         if $test "$ans" = "$dflt"; then
17514                 : null
17515         else
17516                 randbits=''
17517         fi
17518         randfunc="$ans"
17519         if set $ans val -f; eval $csym; $val; then
17520                 cont=''
17521         else
17522                 dflt=y
17523                 rp="I cannot find function $ans. Use that name anyway?"
17524                 . ./myread
17525                 dflt=rand
17526                 case "$ans" in
17527                         [yY]*) cont='';;
17528                 esac
17529         fi
17530         case "$cont" in
17531         '')
17532                 case "$randfunc" in
17533                 drand48)
17534                         drand01="drand48()"
17535                         seedfunc="srand48"
17536                         randbits=48
17537                         randseedtype=long
17538                         ;;
17539                 rand|random)
17540                         case "$randbits" in
17541                         '')
17542 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17543                                 $cat >try.c <<EOCP
17544 #$i_unistd I_UNISTD
17545 #$i_stdlib I_STDLIB
17546 #include <stdio.h>
17547 #ifdef I_UNISTD
17548 #  include <unistd.h>
17549 #endif
17550 #ifdef I_STDLIB
17551 #  include <stdlib.h>
17552 #endif
17553 int main()
17554 {
17555         register int i;
17556         register unsigned long tmp;
17557         register unsigned long max = 0L;
17558
17559         for (i = 1000; i; i--) {
17560                 tmp = (unsigned long) $randfunc();
17561                 if (tmp > max) max = tmp;
17562         }
17563         for (i = 0; max; i++)
17564                 max /= 2;
17565         printf("%d\n",i);
17566 }
17567 EOCP
17568                                 set try
17569                                 if eval $compile_ok; then
17570                                         dflt=`try`
17571                                 else
17572                                         dflt='?'
17573                                         echo "(I can't seem to compile the test program...)"
17574                                 fi
17575                                 ;;
17576                         *)
17577                                 dflt="$randbits"
17578                                 ;;
17579                         esac
17580                         rp="How many bits does your $randfunc() function produce?"
17581                         . ./myread
17582                         randbits="$ans"
17583                         $rm -f try.c try
17584                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17585                         seedfunc="s$randfunc"
17586                         randseedtype=unsigned
17587                         ;;
17588                 *)
17589                         dflt="31"
17590                         rp="How many bits does your $randfunc() function produce?"
17591                         . ./myread
17592                         randbits="$ans"
17593                         seedfunc="s$randfunc"
17594                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17595                         if set $seedfunc val -f; eval $csym; $val; then
17596                                 echo "(Using $seedfunc() to seed random generator)"
17597                         else
17598                                 echo "(Warning: no $seedfunc() to seed random generator)"
17599                                 seedfunc=rand
17600                         fi
17601                         randseedtype=unsigned
17602                         ;;
17603                 esac
17604                 ;;
17605         esac
17606 done
17607
17608 echo " "
17609 echo "Determining whether or not we are on an EBCDIC system..." >&4
17610 $cat >try.c <<'EOM'
17611 int main()
17612 {
17613   if ('M'==0xd4) return 0;
17614   return 1;
17615 }
17616 EOM
17617
17618 val=$undef
17619 set try
17620 if eval $compile_ok; then
17621         if $run ./try; then
17622                 echo "You seem to speak EBCDIC." >&4
17623                 val="$define"
17624         else
17625                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17626         fi
17627 else
17628         echo "I'm unable to compile the test program." >&4
17629         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17630 fi
17631 $rm -f try try.*
17632 set ebcdic
17633 eval $setvar
17634
17635 echo " "
17636 $cat >&4 <<EOM
17637 Checking how to flush all pending stdio output...
17638 EOM
17639 # I only know how to find the first 32 possibly open files on SunOS.
17640 # See also hints/sunos_4_1.sh and util.c  --AD
17641 case "$osname" in
17642 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17643 esac
17644 $cat >>try.c <<EOCP
17645 #include <stdio.h>
17646 #$i_stdlib I_STDLIB
17647 #ifdef I_STDLIB
17648 #include <stdlib.h>
17649 #endif
17650 #$i_unistd I_UNISTD
17651 #ifdef I_UNISTD
17652 # include <unistd.h>
17653 #endif
17654 #$d_sysconf HAS_SYSCONF
17655 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17656 #ifdef HAS_STDIO_STREAM_ARRAY
17657 # define STDIO_STREAM_ARRAY $stdio_stream_array
17658 #endif
17659 int main() {
17660   FILE* p;
17661   unlink("try.out");
17662   p = fopen("try.out", "w");
17663 #ifdef TRY_FPUTC
17664   fputc('x', p);
17665 #else
17666 # ifdef TRY_FPRINTF
17667   fprintf(p, "x");
17668 # endif
17669 #endif
17670 #ifdef TRY_FFLUSH_NULL
17671   fflush(NULL);
17672 #endif
17673 #ifdef TRY_FFLUSH_ALL
17674   {
17675     long open_max = -1;
17676 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17677     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17678 # else
17679 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17680     open_max = sysconf(_SC_OPEN_MAX);
17681 #  else
17682 #   ifdef FOPEN_MAX
17683     open_max = FOPEN_MAX;
17684 #   else
17685 #    ifdef OPEN_MAX
17686     open_max = OPEN_MAX;
17687 #    else
17688 #     ifdef _NFILE
17689     open_max = _NFILE;
17690 #     endif
17691 #    endif
17692 #   endif
17693 #  endif
17694 # endif 
17695 # ifdef HAS_STDIO_STREAM_ARRAY
17696     if (open_max > 0) {
17697       long i;
17698       for (i = 0; i < open_max; i++)
17699             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17700                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17701                 STDIO_STREAM_ARRAY[i]._flag)
17702                 fflush(&STDIO_STREAM_ARRAY[i]);
17703     }   
17704   }
17705 # endif
17706 #endif
17707   _exit(42);
17708 }
17709 EOCP
17710 : first we have to find out how _not_ to flush
17711 $to try.c
17712 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17713     output=''
17714     set try -DTRY_FPUTC
17715     if eval $compile; then
17716             $run ./try 2>/dev/null
17717             code="$?"
17718             $from try.out
17719             if $test ! -s try.out -a "X$code" = X42; then
17720                 output=-DTRY_FPUTC
17721             fi
17722     fi
17723     case "$output" in
17724     '')
17725             set try -DTRY_FPRINTF
17726             if eval $compile; then
17727                     $run ./try 2>/dev/null
17728                     code="$?"
17729                     $from try.out
17730                     if $test ! -s try.out -a "X$code" = X42; then
17731                         output=-DTRY_FPRINTF
17732                     fi
17733             fi
17734         ;;
17735     esac
17736 fi
17737 : check for fflush NULL behaviour
17738 case "$fflushNULL" in
17739 '')     set try -DTRY_FFLUSH_NULL $output
17740         if eval $compile; then
17741                 $run ./try 2>/dev/null
17742                 code="$?"
17743                 $from try.out
17744                 if $test -s try.out -a "X$code" = X42; then
17745                         fflushNULL="`$cat try.out`"
17746                 else
17747                         if $test "X$code" != X42; then
17748                                 $cat >&4 <<EOM
17749 (If this test failed, don't worry, we'll try another method shortly.)
17750 EOM
17751                         fi
17752                 fi
17753         fi
17754         $rm -f core try.core core.try.*
17755         case "$fflushNULL" in
17756         x)      $cat >&4 <<EOM
17757 Your fflush(NULL) works okay for output streams.
17758 Let's see if it clobbers input pipes...
17759 EOM
17760 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17761 # bug that improperly flushes the input end of pipes.  So we avoid the
17762 # autoflush on fork/system/exec support for now. :-(
17763 $cat >tryp.c <<EOCP
17764 #include <stdio.h>
17765 int
17766 main(int argc, char **argv)
17767 {
17768     char buf[1024];
17769     int i;
17770     char *bp = buf;
17771     while (1) {
17772         while ((i = getc(stdin)) != -1
17773                && (*bp++ = i) != '\n'
17774                && bp < &buf[1024])
17775         /* DO NOTHING */ ;
17776         *bp = '\0';
17777         fprintf(stdout, "%s", buf);
17778         fflush(NULL);
17779         if (i == -1)
17780             return 0;
17781         bp = buf;
17782     }
17783 }
17784 EOCP
17785                 fflushNULL="$define"
17786                 set tryp
17787                 if eval $compile; then
17788                     $rm -f tryp.out
17789                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17790                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17791                        $cat >&4 <<EOM
17792 fflush(NULL) seems to behave okay with input streams.
17793 EOM
17794                         fflushNULL="$define"
17795                     else
17796                         $cat >&4 <<EOM
17797 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17798 EOM
17799                         fflushNULL="$undef"
17800                     fi
17801                 fi
17802                 $rm -f core tryp.c tryp.core core.tryp.*
17803                 ;;
17804         '')     $cat >&4 <<EOM
17805 Your fflush(NULL) isn't working (contrary to ANSI C).
17806 EOM
17807                 fflushNULL="$undef"
17808                 ;;
17809         *)      $cat >&4 <<EOM
17810 Cannot figure out whether your fflush(NULL) works or not.
17811 I'm assuming it doesn't (contrary to ANSI C).
17812 EOM
17813                 fflushNULL="$undef"
17814                 ;;
17815         esac
17816         ;;
17817 $define|true|[yY]*)
17818         fflushNULL="$define"
17819         ;;
17820 *)
17821         fflushNULL="$undef"
17822         ;;
17823 esac
17824 : check explicit looping only if NULL did not work, and if the pipe
17825 : bug does not show up on an explicit flush too
17826 case "$fflushNULL" in
17827 "$undef")
17828         $cat >tryp.c <<EOCP
17829 #include <stdio.h>
17830 int
17831 main(int argc, char **argv)
17832 {
17833     char buf[1024];
17834     int i;
17835     char *bp = buf;
17836     while (1) {
17837         while ((i = getc(stdin)) != -1
17838                && (*bp++ = i) != '\n'
17839                && bp < &buf[1024])
17840         /* DO NOTHING */ ;
17841         *bp = '\0';
17842         fprintf(stdout, "%s", buf);
17843         fflush(stdin);
17844         if (i == -1)
17845             return 0;
17846         bp = buf;
17847     }
17848 }
17849 EOCP
17850         set tryp
17851         if eval $compile; then
17852             $rm -f tryp.out
17853             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17854             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17855                $cat >&4 <<EOM
17856 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17857 EOM
17858                 : now check for fflushall behaviour
17859                 case "$fflushall" in
17860                 '')     set try -DTRY_FFLUSH_ALL $output
17861                         if eval $compile; then
17862                                 $cat >&4 <<EOM
17863 (Now testing the other method--but note that this also may fail.)
17864 EOM
17865                                 $run ./try 2>/dev/null
17866                                 code=$?
17867                                 $from try.out
17868                                 if $test -s try.out -a "X$code" = X42; then
17869                                         fflushall="`$cat try.out`"
17870                                 fi
17871                         fi
17872                         $rm -f core try.core core.try.*
17873                         case "$fflushall" in
17874                         x)      $cat >&4 <<EOM
17875 Whew. Flushing explicitly all the stdio streams works.
17876 EOM
17877                                 fflushall="$define"
17878                                 ;;
17879                         '')     $cat >&4 <<EOM
17880 Sigh. Flushing explicitly all the stdio streams doesn't work.
17881 EOM
17882                                 fflushall="$undef"
17883                                 ;;
17884                         *)      $cat >&4 <<EOM
17885 Cannot figure out whether flushing stdio streams explicitly works or not.
17886 I'm assuming it doesn't.
17887 EOM
17888                                 fflushall="$undef"
17889                                 ;;
17890                         esac
17891                         ;;
17892                 "$define"|true|[yY]*)
17893                         fflushall="$define"
17894                         ;;
17895                 *)
17896                         fflushall="$undef"
17897                         ;;
17898                 esac
17899             else
17900                 $cat >&4 <<EOM
17901 All is futile.  Even fflush(stdin) clobbers input pipes!
17902 EOM
17903                 fflushall="$undef"
17904             fi
17905         else
17906             fflushall="$undef"
17907         fi
17908         $rm -f core tryp.c tryp.core core.tryp.*
17909         ;;
17910 *)      fflushall="$undef"
17911         ;;
17912 esac
17913
17914 case "$fflushNULL$fflushall" in
17915 undefundef)
17916         $cat <<EOM
17917 OK, I give up.  I cannot figure out how to flush pending stdio output.
17918 We won't be flushing handles at all before fork/exec/popen.
17919 EOM
17920         ;;
17921 esac
17922 $rm -f try.* try$exe_ext
17923
17924 : Store the full pathname to the ar program for use in the C program
17925 : Respect a hint or command line value for full_ar.
17926 case "$full_ar" in
17927 '') full_ar=$ar ;;
17928 esac
17929
17930 : Store the full pathname to the sed program for use in the C program
17931 full_sed=$sed
17932
17933 : see what type gids are declared as in the kernel
17934 echo " "
17935 echo "Looking for the type for group ids returned by getgid()."
17936 set gid_t gidtype xxx stdio.h sys/types.h
17937 eval $typedef
17938 case "$gidtype" in
17939 xxx)
17940         xxx=`./findhdr sys/user.h`
17941         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17942         case $1 in
17943         unsigned) dflt="$1 $2" ;;
17944         *) dflt="$1" ;;
17945         esac
17946         ;;
17947 *) dflt="$gidtype";;
17948 esac
17949 case "$gidtype" in
17950 gid_t) echo "gid_t found." ;;
17951 *)      rp="What is the type for group ids returned by getgid()?"
17952         . ./myread
17953         gidtype="$ans"
17954         ;;
17955 esac
17956
17957 echo " "
17958 case "$gidtype" in
17959 *_t) zzz="$gidtype"     ;;
17960 *)   zzz="gid"          ;;
17961 esac
17962 echo "Checking the size of $zzz..." >&4 
17963 cat > try.c <<EOCP
17964 #include <sys/types.h>
17965 #include <stdio.h>
17966 #$i_stdlib I_STDLIB
17967 #ifdef I_STDLIB
17968 #include <stdlib.h>
17969 #endif
17970 int main() {
17971     printf("%d\n", (int)sizeof($gidtype));
17972     exit(0);
17973 }
17974 EOCP
17975 set try
17976 if eval $compile_ok; then
17977         yyy=`$run ./try`
17978         case "$yyy" in
17979         '')     gidsize=4
17980                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17981                 ;;
17982         *)      gidsize=$yyy
17983                 echo "Your $zzz is $gidsize bytes long."
17984                 ;;
17985         esac
17986 else
17987         gidsize=4
17988         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17989 fi
17990
17991
17992 echo " "
17993 case "$gidtype" in
17994 *_t) zzz="$gidtype"     ;;
17995 *)   zzz="gid"          ;;
17996 esac
17997 echo "Checking the sign of $zzz..." >&4 
17998 cat > try.c <<EOCP
17999 #include <sys/types.h>
18000 #include <stdio.h>
18001 int main() {
18002         $gidtype foo = -1;
18003         if (foo < 0)
18004                 printf("-1\n");
18005         else
18006                 printf("1\n");
18007 }
18008 EOCP
18009 set try
18010 if eval $compile; then
18011         yyy=`$run ./try`
18012         case "$yyy" in
18013         '')     gidsign=1
18014                 echo "(I can't execute the test program--guessing unsigned.)" >&4
18015                 ;;
18016         *)      gidsign=$yyy
18017                 case "$gidsign" in
18018                  1) echo "Your $zzz is unsigned." ;;
18019                 -1) echo "Your $zzz is signed."   ;;
18020                 esac
18021                 ;;
18022         esac
18023 else
18024         gidsign=1
18025         echo "(I can't compile the test program--guessing unsigned.)" >&4
18026 fi
18027
18028
18029 echo " "
18030
18031 if $test X"$quadtype" != X; then
18032
18033 echo "Checking how to print 64-bit integers..." >&4
18034
18035 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18036         $cat >try.c <<'EOCP'
18037 #include <sys/types.h>
18038 #include <stdio.h>
18039 int main() {
18040   int q = 12345678901;
18041   printf("%ld\n", q);
18042 }
18043 EOCP
18044         set try
18045         if eval $compile; then
18046                 yyy=`$run ./try`
18047                 case "$yyy" in
18048                 12345678901)
18049                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18050                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18051                         echo "We will use %d."
18052                         ;;
18053                 esac
18054         fi
18055 fi
18056
18057 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18058         $cat >try.c <<'EOCP'
18059 #include <sys/types.h>
18060 #include <stdio.h>
18061 int main() {
18062   long q = 12345678901;
18063   printf("%ld\n", q);
18064 }
18065 EOCP
18066         set try
18067         if eval $compile; then
18068                 yyy=`$run ./try`
18069                 case "$yyy" in
18070                 12345678901)
18071                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18072                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18073                         echo "We will use %ld."
18074                         ;;
18075                 esac
18076         fi
18077 fi
18078
18079 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18080         $cat >try.c <<'EOCP'
18081 #include <sys/types.h>
18082 #include <inttypes.h>
18083 #include <stdio.h>
18084 int main() {
18085   int64_t q = 12345678901;
18086   printf("%" PRId64 "\n", q);
18087 }
18088 EOCP
18089         set try
18090         if eval $compile; then
18091                 yyy=`$run ./try`
18092                 case "$yyy" in
18093                 12345678901)
18094                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18095                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18096                         echo "We will use the C9X style."
18097                         ;;
18098                 esac
18099         fi
18100 fi
18101
18102 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18103         $cat >try.c <<EOCP
18104 #include <sys/types.h>
18105 #include <stdio.h>
18106 int main() {
18107   $quadtype q = 12345678901;
18108   printf("%Ld\n", q);
18109 }
18110 EOCP
18111         set try
18112         if eval $compile; then
18113                 yyy=`$run ./try`
18114                 case "$yyy" in
18115                 12345678901)
18116                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18117                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18118                         echo "We will use %Ld."
18119                         ;;
18120                 esac
18121         fi
18122 fi
18123
18124 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18125         $cat >try.c <<'EOCP'
18126 #include <sys/types.h>
18127 #include <stdio.h>
18128 int main() {
18129   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18130   printf("%lld\n", q);
18131 }
18132 EOCP
18133         set try
18134         if eval $compile; then
18135                 yyy=`$run ./try`
18136                 case "$yyy" in
18137                 12345678901)
18138                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18139                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18140                         echo "We will use the %lld style."
18141                         ;;
18142                 esac
18143         fi
18144 fi
18145
18146 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18147         $cat >try.c <<EOCP
18148 #include <sys/types.h>
18149 #include <stdio.h>
18150 int main() {
18151   $quadtype q = 12345678901;
18152   printf("%qd\n", q);
18153 }
18154 EOCP
18155         set try
18156         if eval $compile; then
18157                 yyy=`$run ./try`
18158                 case "$yyy" in
18159                 12345678901)
18160                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18161                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18162                         echo "We will use %qd."
18163                         ;;
18164                 esac
18165         fi
18166 fi
18167
18168 if $test X"$sPRId64" = X; then
18169         echo "Cannot figure out how to print 64-bit integers." >&4
18170 fi
18171
18172 $rm -f try try.*
18173
18174 fi
18175
18176 case "$sPRId64" in
18177 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18178         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18179         ;;
18180 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18181         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18182         ;;
18183 esac
18184
18185
18186 echo " "
18187 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18188
18189 if $test X"$ivsize" = X8; then
18190         ivdformat="$sPRId64"
18191         uvuformat="$sPRIu64"
18192         uvoformat="$sPRIo64"
18193         uvxformat="$sPRIx64"
18194         uvXUformat="$sPRIXU64"
18195 else
18196         if $test X"$ivsize" = X"$longsize"; then
18197                 ivdformat='"ld"'
18198                 uvuformat='"lu"'
18199                 uvoformat='"lo"'
18200                 uvxformat='"lx"'
18201                 uvXUformat='"lX"'
18202         else
18203                 if $test X"$ivsize" = X"$intsize"; then
18204                         ivdformat='"d"'
18205                         uvuformat='"u"'
18206                         uvoformat='"o"'
18207                         uvxformat='"x"'
18208                         uvXUformat='"X"'
18209                 else
18210                         : far out
18211                         if $test X"$ivsize" = X"$shortsize"; then
18212                                 ivdformat='"hd"'
18213                                 uvuformat='"hu"'
18214                                 uvoformat='"ho"'
18215                                 uvxformat='"hx"'
18216                                 uvXUformat='"hX"'
18217                         fi
18218                 fi
18219         fi
18220 fi
18221
18222 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18223         nveformat="$sPRIeldbl"
18224         nvfformat="$sPRIfldbl"
18225         nvgformat="$sPRIgldbl"
18226         nvEUformat="$sPRIEUldbl"
18227         nvFUformat="$sPRIFUldbl"
18228         nvGUformat="$sPRIGUldbl"
18229 else
18230         nveformat='"e"'
18231         nvfformat='"f"'
18232         nvgformat='"g"'
18233         nvEUformat='"E"'
18234         nvFUformat='"F"'
18235         nvGUformat='"G"'
18236 fi
18237
18238 case "$ivdformat" in
18239 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18240     exit 1
18241     ;;
18242 esac
18243
18244
18245 echo " "
18246 $echo "Checking the format string to be used for gids..." >&4
18247
18248 case "$gidsign" in
18249 -1)     if $test X"$gidsize" = X"$ivsize"; then
18250                 gidformat="$ivdformat"
18251         else
18252                 if $test X"$gidsize" = X"$longsize"; then
18253                         gidformat='"ld"'
18254                 else
18255                         if $test X"$gidsize" = X"$intsize"; then
18256                                 gidformat='"d"'
18257                         else
18258                                 if $test X"$gidsize" = X"$shortsize"; then
18259                                         gidformat='"hd"'
18260                                 fi
18261                         fi
18262                 fi
18263         fi
18264         ;;
18265 *)      if $test X"$gidsize" = X"$uvsize"; then
18266                 gidformat="$uvuformat"
18267         else
18268                 if $test X"$gidsize" = X"$longsize"; then
18269                         gidformat='"lu"'
18270                 else
18271                         if $test X"$gidsize" = X"$intsize"; then
18272                                 gidformat='"u"'
18273                         else
18274                                 if $test X"$gidsize" = X"$shortsize"; then
18275                                         gidformat='"hu"'
18276                                 fi
18277                         fi
18278                 fi
18279         fi
18280         ;;
18281 esac
18282
18283 : see if getgroups exists
18284 set getgroups d_getgrps
18285 eval $inlibc
18286
18287 : see if setgroups exists
18288 set setgroups d_setgrps
18289 eval $inlibc
18290
18291
18292 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18293 echo " "
18294 case "$d_getgrps$d_setgrps" in
18295 *define*)
18296         case "$groupstype" in
18297         '') dflt="$gidtype" ;;
18298         *)  dflt="$groupstype" ;;
18299         esac
18300         $cat <<EOM
18301 What type of pointer is the second argument to getgroups() and setgroups()?
18302 Usually this is the same as group ids, $gidtype, but not always.
18303
18304 EOM
18305         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18306         . ./myread
18307         groupstype="$ans"
18308         ;;
18309 *)  groupstype="$gidtype";;
18310 esac
18311
18312 echo " "
18313 echo "Checking if your $make program sets \$(MAKE)..." >&4
18314 case "$make_set_make" in
18315 '')
18316         $sed 's/^X //' > testmake.mak << 'EOF'
18317 Xall:
18318 X       @echo 'maketemp="$(MAKE)"'
18319 EOF
18320         case "`$make -f testmake.mak 2>/dev/null`" in
18321         *maketemp=*) make_set_make='#' ;;
18322         *)      make_set_make="MAKE=$make" ;;
18323         esac
18324         $rm -f testmake.mak
18325         ;;
18326 esac
18327 case "$make_set_make" in
18328 '#') echo "Yup, it does.";;
18329 *) echo "Nope, it doesn't.";;
18330 esac
18331
18332 : see what type is used for mode_t
18333 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18334 set mode_t modetype int stdio.h sys/types.h
18335 eval $typedef_ask
18336
18337 : see if stdarg is available
18338 echo " "
18339 if $test `./findhdr stdarg.h`; then
18340         echo "<stdarg.h> found." >&4
18341         valstd="$define"
18342 else
18343         echo "<stdarg.h> NOT found." >&4
18344         valstd="$undef"
18345 fi
18346
18347 : see if varags is available
18348 echo " "
18349 if $test `./findhdr varargs.h`; then
18350         echo "<varargs.h> found." >&4
18351 else
18352         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18353 fi
18354
18355 : set up the varargs testing programs
18356 $cat > varargs.c <<EOP
18357 #ifdef I_STDARG
18358 #include <stdarg.h>
18359 #endif
18360 #ifdef I_VARARGS
18361 #include <varargs.h>
18362 #endif
18363
18364 #ifdef I_STDARG
18365 int f(char *p, ...)
18366 #else
18367 int f(va_alist)
18368 va_dcl
18369 #endif
18370 {
18371         va_list ap;
18372 #ifndef I_STDARG
18373         char *p;
18374 #endif
18375 #ifdef I_STDARG
18376         va_start(ap,p);
18377 #else
18378         va_start(ap);
18379         p = va_arg(ap, char *);
18380 #endif
18381         va_end(ap);
18382 }
18383 EOP
18384 $cat > varargs <<EOP
18385 $startsh
18386 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18387         echo "true"
18388 else
18389         echo "false"
18390 fi
18391 $rm -f varargs$_o
18392 EOP
18393 chmod +x varargs
18394
18395 : now check which varargs header should be included
18396 echo " "
18397 i_varhdr=''
18398 case "$valstd" in
18399 "$define")
18400         if `./varargs I_STDARG`; then
18401                 val='stdarg.h'
18402         elif `./varargs I_VARARGS`; then
18403                 val='varargs.h'
18404         fi
18405         ;;
18406 *)
18407         if `./varargs I_VARARGS`; then
18408                 val='varargs.h'
18409         fi
18410         ;;
18411 esac
18412 case "$val" in
18413 '')
18414 echo "I could not find the definition for va_dcl... You have problems..." >&4
18415         val="$undef"; set i_stdarg; eval $setvar
18416         val="$undef"; set i_varargs; eval $setvar
18417         ;;
18418 *) 
18419         set i_varhdr
18420         eval $setvar
18421         case "$i_varhdr" in
18422         stdarg.h)
18423                 val="$define"; set i_stdarg; eval $setvar
18424                 val="$undef"; set i_varargs; eval $setvar
18425                 ;;
18426         varargs.h)
18427                 val="$undef"; set i_stdarg; eval $setvar
18428                 val="$define"; set i_varargs; eval $setvar
18429                 ;;
18430         esac
18431         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18432 esac
18433 $rm -f varargs*
18434
18435 : see if we need va_copy
18436 echo " "
18437 case "$i_stdarg" in
18438 "$define")
18439         $cat >try.c <<EOCP
18440 #include <stdarg.h>
18441 #include <stdio.h>
18442 #$i_stdlib I_STDLIB
18443 #ifdef I_STDLIB
18444 #include <stdlib.h>
18445 #endif
18446 #include <signal.h>
18447
18448 int
18449 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18450 {
18451   return vfprintf(f, fmt, *valp);
18452 }
18453  
18454 int    
18455 myvfprintf(FILE *f, const  char *fmt, va_list val)
18456 {
18457   return ivfprintf(f, fmt, &val);
18458 }
18459       
18460 int
18461 myprintf(char *fmt, ...) 
18462 {
18463   va_list val;
18464   va_start(val, fmt);
18465   return myvfprintf(stdout, fmt, val); 
18466 }         
18467
18468 int
18469 main(int ac, char **av)
18470 {
18471   signal(SIGSEGV, exit);
18472
18473   myprintf("%s%cs all right, then\n", "that", '\'');                            
18474   exit(0);      
18475 }
18476 EOCP
18477         set try
18478         if eval $compile && $run ./try 2>&1 >/dev/null; then
18479                 case "`$run ./try`" in
18480                 "that's all right, then")
18481                         okay=yes
18482                         ;;
18483                 esac
18484         fi
18485         case "$okay" in
18486         yes)    echo "It seems that you don't need va_copy()." >&4
18487                 need_va_copy="$undef"
18488                 ;;
18489         *)      echo "It seems that va_copy() or similar will be needed." >&4
18490                 need_va_copy="$define"
18491                 ;;
18492         esac
18493         $rm -f try.* core core.* *.core *.core.*
18494         ;;
18495 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18496         ;;
18497 esac
18498
18499 : see what type is used for size_t
18500 rp="What is the type used for the length parameter for string functions?"
18501 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18502 eval $typedef_ask
18503
18504 : check for type of arguments to gethostbyaddr. 
18505 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18506         case "$d_gethbyaddr" in
18507         $define)
18508                 $cat <<EOM
18509
18510 Checking to see what type of arguments are accepted by gethostbyaddr().
18511 EOM
18512                 hdrs="$define sys/types.h
18513                         $d_socket sys/socket.h 
18514                         $i_niin netinet/in.h 
18515                         $i_netdb netdb.h
18516                         $i_unistd unistd.h"
18517                 : The first arg can 'char *' or 'void *'
18518                 : The second arg is some of integral type
18519                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18520                         for yyy in size_t long int; do
18521                                 case "$netdb_host_type" in
18522                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18523                                         if ./protochk "$try" $hdrs; then
18524                                                 echo "Your system accepts $xxx for the first arg."
18525                                                 echo "...and $yyy for the second arg."
18526                                                 netdb_host_type="$xxx"
18527                                                 netdb_hlen_type="$yyy"
18528                                         fi
18529                                         ;;
18530                                 esac
18531                         done
18532                 done
18533                 : In case none of those worked, prompt the user.
18534                 case "$netdb_host_type" in
18535                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18536                         dflt='char *'
18537                         . ./myread
18538                         netdb_host_type=$ans
18539                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18540                         dflt="$sizetype"
18541                         . ./myread
18542                         netdb_hlen_type=$ans
18543                         ;;
18544                 esac
18545                 ;;
18546         *)      : no gethostbyaddr, so pick harmless defaults
18547                 netdb_host_type='char *'
18548                 netdb_hlen_type="$sizetype"
18549                 ;;
18550         esac
18551         # Remove the "const" if needed. -- but then we'll have a 
18552         # prototype clash!
18553         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18554 fi
18555
18556 : check for type of argument to gethostbyname. 
18557 if test "X$netdb_name_type" = X ; then
18558         case "$d_gethbyname" in
18559         $define)
18560                 $cat <<EOM
18561
18562 Checking to see what type of argument is accepted by gethostbyname().
18563 EOM
18564                 hdrs="$define sys/types.h
18565                         $d_socket sys/socket.h 
18566                         $i_niin netinet/in.h 
18567                         $i_netdb netdb.h
18568                         $i_unistd unistd.h"
18569                 for xxx in "const char *" "char *"; do
18570                         case "$netdb_name_type" in
18571                         '')     try="extern struct hostent *gethostbyname($xxx);"
18572                                 if ./protochk "$try" $hdrs; then
18573                                         echo "Your system accepts $xxx."
18574                                         netdb_name_type="$xxx"
18575                                 fi
18576                                 ;;
18577                         esac
18578                 done
18579                 : In case none of those worked, prompt the user.
18580                 case "$netdb_name_type" in
18581                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18582                         dflt='char *'
18583                         . ./myread
18584                         netdb_name_type=$ans
18585                         ;;
18586                 esac
18587                 ;;
18588         *)      : no gethostbyname, so pick harmless default
18589                 netdb_name_type='char *'
18590                 ;;
18591         esac
18592 fi
18593
18594 : check for type of 1st argument to getnetbyaddr. 
18595 if test "X$netdb_net_type" = X ; then
18596         case "$d_getnbyaddr" in
18597         $define)
18598                 $cat <<EOM
18599
18600 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18601 EOM
18602                 hdrs="$define sys/types.h
18603                         $d_socket sys/socket.h 
18604                         $i_niin netinet/in.h 
18605                         $i_netdb netdb.h
18606                         $i_unistd unistd.h"
18607                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18608                         case "$netdb_net_type" in
18609                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18610                                 if ./protochk "$try" $hdrs; then
18611                                         echo "Your system accepts $xxx."
18612                                         netdb_net_type="$xxx"
18613                                 fi
18614                                 ;;
18615                         esac
18616                 done
18617                 : In case none of those worked, prompt the user.
18618                 case "$netdb_net_type" in
18619                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18620                         dflt='long'
18621                         . ./myread
18622                         netdb_net_type=$ans
18623                         ;;
18624                 esac
18625                 ;;
18626         *)      : no getnetbyaddr, so pick harmless default
18627                 netdb_net_type='long'
18628                 ;;
18629         esac
18630 fi
18631 : locate the preferred pager for this system
18632 fn=f/
18633 case "$pager" in
18634 '')
18635         dflt=''
18636         case "$pg" in
18637         /*) dflt=$pg;;
18638         [a-zA-Z]:/*) dflt=$pg;;
18639         esac
18640         case "$more" in
18641         /*) dflt=$more;;
18642         [a-zA-Z]:/*) dflt=$more;;
18643         esac
18644         case "$less" in
18645         /*) dflt=$less;;
18646         [a-zA-Z]:/*) dflt=$less;;
18647         esac
18648         case "$dflt" in
18649         '') dflt=/usr/ucb/more;;
18650         esac
18651         ;;
18652 *)      dflt="$pager"
18653         : Instruct ./getfile to trust the hinted or previous pager value,
18654         : even if it does not begin with a slash.  For example, on os2,
18655         : pager might be cmd /c more.  See comments in UU/getfile.
18656         fn="f/($pager)"
18657         ;;
18658 esac
18659 echo " "
18660 rp='What pager is used on your system?'
18661 . ./getfile
18662 pager="$ans"
18663
18664 : see what type pids are declared as in the kernel
18665 rp="What is the type of process ids on this system?"
18666 set pid_t pidtype int stdio.h sys/types.h
18667 eval $typedef_ask
18668
18669 : see if ar generates random libraries by itself
18670 echo " "
18671 echo "Checking how to generate random libraries on your machine..." >&4
18672 echo 'int bar1() { return bar2(); }' > bar1.c
18673 echo 'int bar2() { return 2; }' > bar2.c
18674 $cat > foo.c <<EOP
18675 #$i_stdlib I_STDLIB
18676 #ifdef I_STDLIB
18677 #include <stdlib.h>
18678 #endif
18679 int main() { printf("%d\n", bar1()); exit(0); }
18680 EOP
18681 $cc $ccflags -c bar1.c >/dev/null 2>&1
18682 $cc $ccflags -c bar2.c >/dev/null 2>&1
18683 $cc $ccflags -c foo.c >/dev/null 2>&1
18684 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18685 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18686         $run ./foobar >/dev/null 2>&1; then
18687         echo "$ar appears to generate random libraries itself."
18688         orderlib=false
18689         ranlib=":"
18690 elif $ar ts bar$_a >/dev/null 2>&1 &&
18691         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18692         $run ./foobar >/dev/null 2>&1; then
18693                 echo "a table of contents needs to be added with '$ar ts'."
18694                 orderlib=false
18695                 ranlib="$ar ts"
18696 else
18697         case "$ranlib" in
18698         :) ranlib='';;
18699         '')
18700                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18701                 $test -f $ranlib || ranlib=''
18702                 ;;
18703         esac
18704         if $test -n "$ranlib"; then
18705                 echo "your system has '$ranlib'; we'll use that."
18706                 orderlib=false
18707         else
18708                 echo "your system doesn't seem to support random libraries"
18709                 echo "so we'll use lorder and tsort to order the libraries."
18710                 orderlib=true
18711                 ranlib=":"
18712         fi
18713 fi
18714 $rm -f foo* bar* 
18715
18716 : check for type of arguments to select. 
18717 case "$selecttype" in
18718 '') case "$d_select" in
18719         $define)
18720                 echo " "
18721                 $cat <<EOM
18722 Checking to see what type of arguments are accepted by select().
18723 EOM
18724                 hdrs="$define sys/types.h
18725                         $i_systime sys/time.h 
18726                         $i_sysselct sys/select.h
18727                         $d_socket sys/socket.h"
18728                 : The first arg can be int, unsigned, or size_t
18729                 : The last arg may or may not be 'const'
18730                 val=''
18731                 : void pointer has been seen but using that
18732                 : breaks the selectminbits test
18733                 for xxx in 'fd_set *' 'int *'; do
18734                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18735                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18736                                         case "$val" in
18737                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18738                                                 if ./protochk "$try" $hdrs; then
18739                                                         echo "Your system accepts $xxx."
18740                                                         val="$xxx"
18741                                                 fi
18742                                                 ;;
18743                                         esac
18744                                 done
18745                         done
18746                 done
18747                 case "$val" in
18748                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18749                         case "$d_fd_set" in
18750                                 $define) dflt="fd_set *" ;;
18751                                 *)              dflt="int *" ;;
18752                         esac
18753                         . ./myread
18754                         val=$ans
18755                         ;;
18756                 esac
18757                 selecttype="$val"
18758                 ;;
18759         *)      : no select, so pick a harmless default
18760                 selecttype='int *'
18761                 ;;
18762         esac
18763         ;;
18764 esac
18765
18766 : check for the select 'width'
18767 case "$selectminbits" in
18768 '') safebits=`expr $ptrsize \* 8`
18769     case "$d_select" in
18770         $define)
18771                 $cat <<EOM
18772
18773 Checking to see on how many bits at a time your select() operates...
18774 EOM
18775                 $cat >try.c <<EOCP
18776 #include <sys/types.h>
18777 #$i_time I_TIME
18778 #$i_systime I_SYS_TIME
18779 #$i_systimek I_SYS_TIME_KERNEL
18780 #ifdef I_TIME
18781 #   include <time.h>
18782 #endif
18783 #ifdef I_SYS_TIME
18784 #   ifdef I_SYS_TIME_KERNEL
18785 #       define KERNEL
18786 #   endif
18787 #   include <sys/time.h>
18788 #   ifdef I_SYS_TIME_KERNEL
18789 #       undef KERNEL
18790 #   endif
18791 #endif
18792 #$i_sysselct I_SYS_SELECT
18793 #ifdef I_SYS_SELECT
18794 #include <sys/select.h>
18795 #endif
18796 #$d_socket HAS_SOCKET
18797 #ifdef HAS_SOCKET
18798 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18799 #endif
18800 #include <stdio.h>
18801 #$i_stdlib I_STDLIB
18802 #ifdef I_STDLIB
18803 #include <stdlib.h>
18804 #endif
18805 $selecttype b;
18806 #define S sizeof(*(b))
18807 #define MINBITS 64
18808 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18809 #define NBITS  (NBYTES * 8)
18810 int main() {
18811     char *s = malloc(NBYTES);
18812     struct timeval t;
18813     int i;
18814     FILE* fp;
18815     int fd;
18816
18817     if (!s)
18818         exit(1);
18819     fclose(stdin);
18820     fp = fopen("try.c", "r");
18821     if (fp == 0)
18822       exit(2);
18823     fd = fileno(fp);
18824     if (fd < 0)
18825       exit(3);
18826     b = ($selecttype)s;
18827     for (i = 0; i < NBITS; i++)
18828         FD_SET(i, b);
18829     t.tv_sec  = 0;
18830     t.tv_usec = 0;
18831     select(fd + 1, b, 0, 0, &t);
18832     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18833     free(s);
18834     printf("%d\n", i + 1);
18835     return 0;
18836 }
18837 EOCP
18838                 set try
18839                 if eval $compile_ok; then
18840                         selectminbits=`$run ./try`
18841                         case "$selectminbits" in
18842                         '')     cat >&4 <<EOM
18843 Cannot figure out on how many bits at a time your select() operates.
18844 I'll play safe and guess it is $safebits bits.
18845 EOM
18846                                 selectminbits=$safebits
18847                                 bits="$safebits bits"
18848                                 ;;
18849                         1)      bits="1 bit" ;;
18850                         *)      bits="$selectminbits bits" ;;
18851                         esac
18852                         echo "Your select() operates on $bits at a time." >&4
18853                 else
18854                         rp='What is the minimum number of bits your select() operates on?'
18855                         case "$byteorder" in
18856                         12345678)       dflt=64 ;;
18857                         1234)           dflt=32 ;;
18858                         *)              dflt=1  ;;
18859                         esac
18860                         . ./myread
18861                         val=$ans
18862                         selectminbits="$val"
18863                 fi
18864                 $rm -f try.* try
18865                 ;;
18866         *)      : no select, so pick a harmless default
18867                 selectminbits=$safebits
18868                 ;;
18869         esac
18870         ;;
18871 esac
18872
18873 : Trace out the files included by signal.h, then look for SIGxxx names.
18874 : Remove SIGARRAYSIZE used by HPUX.
18875 : Remove SIGSTKSIZE used by Linux.
18876 : Remove SIGSTKSZ used by Posix.
18877 : Remove SIGTYP void lines used by OS2.
18878 : Some cpps, like os390, dont give the file name anywhere
18879 if [ "X$fieldn" = X ]; then
18880         : Just make some guesses.  We check them later.
18881         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18882 else
18883         xxx=`echo '#include <signal.h>' |
18884         $cppstdin $cppminus $cppflags 2>/dev/null |
18885         $grep '^[       ]*#.*include' | 
18886         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18887 fi
18888 : Check this list of files to be sure we have parsed the cpp output ok.
18889 : This will also avoid potentially non-existent files, such 
18890 : as ../foo/bar.h
18891 xxxfiles=''
18892 for xx in $xxx /dev/null ; do
18893         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18894 done
18895 : If we have found no files, at least try signal.h
18896 case "$xxxfiles" in
18897 '')     xxxfiles=`./findhdr signal.h` ;;
18898 esac
18899 xxx=`awk '
18900 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18901         print substr($2, 4, 20)
18902 }
18903 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18904         print substr($3, 4, 20)
18905 }' $xxxfiles`
18906 : Append some common names just in case the awk scan failed.
18907 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18908 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18909 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18910 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18911 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18912
18913 : generate a few handy files for later
18914 $cat > signal.c <<EOCP
18915 #include <sys/types.h>
18916 #include <signal.h>
18917 #$i_stdlib I_STDLIB
18918 #ifdef I_STDLIB
18919 #include <stdlib.h>
18920 #endif
18921 #include <stdio.h>
18922 int main() {
18923
18924 /* Strange style to avoid deeply-nested #if/#else/#endif */
18925 #ifndef NSIG
18926 #  ifdef _NSIG
18927 #    define NSIG (_NSIG)
18928 #  endif
18929 #endif
18930
18931 #ifndef NSIG
18932 #  ifdef SIGMAX
18933 #    define NSIG (SIGMAX+1)
18934 #  endif
18935 #endif
18936
18937 #ifndef NSIG
18938 #  ifdef SIG_MAX
18939 #    define NSIG (SIG_MAX+1)
18940 #  endif
18941 #endif
18942
18943 #ifndef NSIG
18944 #  ifdef MAXSIG
18945 #    define NSIG (MAXSIG+1)
18946 #  endif
18947 #endif
18948
18949 #ifndef NSIG
18950 #  ifdef MAX_SIG
18951 #    define NSIG (MAX_SIG+1)
18952 #  endif
18953 #endif
18954
18955 #ifndef NSIG
18956 #  ifdef SIGARRAYSIZE
18957 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18958 #  endif
18959 #endif
18960
18961 #ifndef NSIG
18962 #  ifdef _sys_nsig
18963 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18964 #  endif
18965 #endif
18966
18967 /* Default to some arbitrary number that's big enough to get most
18968    of the common signals.
18969 */
18970 #ifndef NSIG
18971 #    define NSIG 50
18972 #endif
18973
18974 printf("NSIG %d\n", NSIG);
18975
18976 #ifndef JUST_NSIG
18977
18978 EOCP
18979
18980 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18981 {
18982         printf "#ifdef SIG"; printf $1; printf "\n"
18983         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18984         printf $1; printf ");\n"
18985         printf "#endif\n"
18986 }
18987 END {
18988         printf "#endif /* JUST_NSIG */\n";
18989         printf "exit(0);\n}\n";
18990 }
18991 ' >>signal.c
18992 $cat >signal.awk <<'EOP'
18993 BEGIN { ndups = 0 }
18994 $1 ~ /^NSIG$/ { nsig = $2 }
18995 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18996     if ($2 > maxsig) { maxsig = $2 }
18997     if (sig_name[$2]) {
18998         dup_name[ndups] = $1
18999         dup_num[ndups] = $2
19000         ndups++ 
19001     }
19002     else {
19003         sig_name[$2] = $1
19004         sig_num[$2] = $2
19005     }
19006 }
19007 END { 
19008     if (nsig == 0) {
19009         nsig = maxsig + 1
19010     }
19011     printf("NSIG %d\n", nsig);
19012     for (n = 1; n < nsig; n++) {
19013         if (sig_name[n]) {
19014             printf("%s %d\n", sig_name[n], sig_num[n])
19015         }
19016         else {
19017             printf("NUM%d %d\n", n, n) 
19018         }
19019     }
19020     for (n = 0; n < ndups; n++) {
19021         printf("%s %d\n", dup_name[n], dup_num[n])
19022     }
19023 }
19024 EOP
19025 $cat >signal_cmd <<EOS
19026 $startsh
19027 if $test -s signal.lst; then
19028     echo "Using your existing signal.lst file"
19029         exit 0
19030 fi
19031 xxx="$xxx"
19032 EOS
19033 $cat >>signal_cmd <<'EOS'
19034
19035 set signal
19036 if eval $compile_ok; then
19037         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19038 else
19039         echo "(I can't seem be able to compile the whole test program)" >&4
19040         echo "(I'll try it in little pieces.)" >&4
19041         set signal -DJUST_NSIG
19042         if eval $compile_ok; then
19043                 $run ./signal$_exe > signal.nsg
19044                 $cat signal.nsg
19045         else
19046                 echo "I can't seem to figure out how many signals you have." >&4
19047                 echo "Guessing 50." >&4
19048                 echo 'NSIG 50' > signal.nsg
19049         fi
19050         : Now look at all the signal names, one at a time.
19051         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19052                 $cat > signal.c <<EOCP
19053 #include <sys/types.h>
19054 #include <signal.h>
19055 #include <stdio.h>
19056 int main() {
19057 printf("$xx %d\n", SIG${xx});
19058 return 0;
19059 }
19060 EOCP
19061                 set signal
19062                 if eval $compile; then
19063                         echo "SIG${xx} found."
19064                         $run ./signal$_exe  >> signal.ls1
19065                 else
19066                         echo "SIG${xx} NOT found."
19067                 fi
19068         done
19069         if $test -s signal.ls1; then
19070                 $cat signal.nsg signal.ls1 |
19071                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19072         fi
19073
19074 fi
19075 if $test -s signal.lst; then
19076         :
19077 else
19078         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19079         echo 'kill -l' >signal
19080         set X `csh -f <signal`
19081         $rm -f signal
19082         shift
19083         case $# in
19084         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19085         esac
19086         echo $@ | $tr ' ' $trnl | \
19087             $awk '{ printf "%s %d\n", $1, ++s; }
19088                   END { printf "NSIG %d\n", ++s }' >signal.lst
19089 fi
19090 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19091 EOS
19092 chmod a+x signal_cmd
19093 $eunicefix signal_cmd
19094
19095 : generate list of signal names
19096 echo " "
19097 case "$sig_name_init" in
19098 '') doinit=yes ;;
19099 *)  case "$sig_num_init" in
19100     ''|*,*) doinit=yes ;;
19101     esac ;;
19102 esac
19103 case "$doinit" in
19104 yes)
19105         echo "Generating a list of signal names and numbers..." >&4
19106         . ./signal_cmd
19107         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19108         sig_name=`$awk 'BEGIN { printf "ZERO " }
19109                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19110         sig_num=`$awk  'BEGIN { printf "0 " }
19111                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19112         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19113                              !/^NSIG/   { printf "\"%s\", ", $1 }
19114                              END        { printf "0\n" }' signal.lst`
19115         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19116                              !/^NSIG/   { printf "%d, ", $2}
19117                              END        { printf "0\n"}' signal.lst`
19118         ;;
19119 esac
19120 echo "The following $sig_count signals are available:"
19121 echo " "
19122 echo $sig_name | $awk \
19123 'BEGIN { linelen = 0 }
19124 {
19125         for (i = 1; i <= NF; i++) {
19126                 name = "SIG" $i " "
19127                 linelen = linelen + length(name)
19128                 if (linelen > 70) {
19129                         printf "\n"
19130                         linelen = length(name)
19131                 }
19132                 printf "%s", name
19133         }
19134         printf "\n"
19135 }'
19136 sig_size=`echo $sig_name | awk '{print NF}'`
19137 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19138
19139 echo " "
19140 case "$sizetype" in
19141 *_t) zzz="$sizetype"    ;;
19142 *)   zzz="filesize"     ;;
19143 esac
19144 echo "Checking the size of $zzz..." >&4 
19145 cat > try.c <<EOCP
19146 #include <sys/types.h>
19147 #include <stdio.h>
19148 #$i_stdlib I_STDLIB
19149 #ifdef I_STDLIB
19150 #include <stdlib.h>
19151 #endif
19152 int main() {
19153     printf("%d\n", (int)sizeof($sizetype));
19154     exit(0);
19155 }
19156 EOCP
19157 set try
19158 if eval $compile_ok; then
19159         yyy=`$run ./try`
19160         case "$yyy" in
19161         '')     sizesize=4
19162                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19163                 ;;
19164         *)      sizesize=$yyy
19165                 echo "Your $zzz size is $sizesize bytes."
19166                 ;;
19167         esac
19168 else
19169         sizesize=4
19170         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19171 fi
19172
19173
19174 : check for socklen_t
19175 echo " "
19176 echo "Checking to see if you have socklen_t..." >&4
19177 $cat >try.c <<EOCP
19178 #include <sys/types.h>
19179 #$d_socket HAS_SOCKET
19180 #ifdef HAS_SOCKET
19181 #include <sys/socket.h>
19182 #endif
19183 int main() { socklen_t x = 16; }
19184 EOCP
19185 set try
19186 if eval $compile; then
19187         val="$define"
19188         echo "You have socklen_t."
19189 else
19190         val="$undef"
19191         echo "You do not have socklen_t."
19192         case "$sizetype" in
19193         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19194         esac
19195 fi
19196 $rm -f try try.*
19197 set d_socklen_t
19198 eval $setvar
19199
19200 : see if this is a socks.h system
19201 set socks.h i_socks
19202 eval $inhdr
19203
19204 : check for type of the size argument to socket calls
19205 case "$d_socket" in
19206 "$define")
19207         $cat <<EOM
19208
19209 Checking to see what type is the last argument of accept().
19210 EOM
19211         yyy=''
19212         case "$d_socklen_t" in
19213         "$define") yyy="$yyy socklen_t"
19214         esac
19215         yyy="$yyy $sizetype int long unsigned"
19216         for xxx in $yyy; do
19217                 case "$socksizetype" in
19218                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19219                         case "$usesocks" in
19220                         "$define")
19221                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19222                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19223                                         socksizetype="$xxx"
19224                                 fi
19225                                 ;;
19226                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19227                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19228                                         socksizetype="$xxx"
19229                                 fi
19230                                 ;;
19231                         esac
19232                         ;;
19233                 esac
19234         done
19235 : In case none of those worked, prompt the user.
19236         case "$socksizetype" in
19237         '')     rp='What is the type for socket address structure sizes?'
19238                 dflt='int'
19239                 . ./myread
19240                 socksizetype=$ans
19241                 ;;
19242         esac
19243         ;;
19244 *)      : no sockets, so pick relatively harmless default
19245         socksizetype='int'
19246         ;;
19247 esac
19248
19249 : see what type is used for signed size_t
19250 set ssize_t ssizetype int stdio.h sys/types.h
19251 eval $typedef
19252 dflt="$ssizetype"
19253 $cat > try.c <<EOM
19254 #include <stdio.h>
19255 #$i_stdlib I_STDLIB
19256 #ifdef I_STDLIB
19257 #include <stdlib.h>
19258 #endif
19259 #include <sys/types.h>
19260 #define Size_t $sizetype
19261 #define SSize_t $dflt
19262 int main()
19263 {
19264         if (sizeof(Size_t) == sizeof(SSize_t))
19265                 printf("$dflt\n");
19266         else if (sizeof(Size_t) == sizeof(int))
19267                 printf("int\n");
19268         else 
19269                 printf("long\n");
19270         exit(0);
19271 }
19272 EOM
19273 echo " "
19274 set try
19275 if eval $compile_ok && $run ./try > /dev/null; then
19276         ssizetype=`$run ./try`
19277         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19278 else
19279         $cat >&4 <<EOM
19280 Help! I can't compile and run the ssize_t test program: please enlighten me!
19281 (This is probably a misconfiguration in your system or libraries, and
19282 you really ought to fix it.  Still, I'll try anyway.)
19283
19284 I need a type that is the same size as $sizetype, but is guaranteed to
19285 be signed.  Common values are ssize_t, int and long.
19286
19287 EOM
19288         rp="What signed type is the same size as $sizetype?"
19289         . ./myread
19290         ssizetype="$ans"
19291 fi
19292 $rm -f try try.*
19293
19294 : see what type of char stdio uses.
19295 echo " "
19296 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19297 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19298         echo "Your stdio uses unsigned chars." >&4
19299         stdchar="unsigned char"
19300 else
19301         echo "Your stdio uses signed chars." >&4
19302         stdchar="char"
19303 fi
19304 $rm -f stdioh
19305
19306
19307
19308 : see what type uids are declared as in the kernel
19309 echo " "
19310 echo "Looking for the type for user ids returned by getuid()."
19311 set uid_t uidtype xxx stdio.h sys/types.h
19312 eval $typedef
19313 case "$uidtype" in
19314 xxx)
19315         xxx=`./findhdr sys/user.h`
19316         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19317         case $1 in
19318         unsigned) dflt="$1 $2" ;;
19319         *) dflt="$1" ;;
19320         esac
19321         ;;
19322 *) dflt="$uidtype";;
19323 esac
19324 case "$uidtype" in
19325 uid_t)  echo "uid_t found." ;;
19326 *)      rp="What is the type for user ids returned by getuid()?"
19327         . ./myread
19328         uidtype="$ans"
19329         ;;
19330 esac
19331
19332 echo " "
19333 case "$uidtype" in
19334 *_t) zzz="$uidtype"     ;;
19335 *)   zzz="uid"          ;;
19336 esac
19337 echo "Checking the size of $zzz..." >&4 
19338 cat > try.c <<EOCP
19339 #include <sys/types.h>
19340 #include <stdio.h>
19341 #$i_stdlib I_STDLIB
19342 #ifdef I_STDLIB
19343 #include <stdlib.h>
19344 #endif
19345 int main() {
19346     printf("%d\n", (int)sizeof($uidtype));
19347     exit(0);
19348 }
19349 EOCP
19350 set try
19351 if eval $compile_ok; then
19352         yyy=`$run ./try`
19353         case "$yyy" in
19354         '')     uidsize=4
19355                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19356                 ;;
19357         *)      uidsize=$yyy
19358                 echo "Your $zzz is $uidsize bytes long."
19359                 ;;
19360         esac
19361 else
19362         uidsize=4
19363         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19364 fi
19365
19366 echo " "
19367 case "$uidtype" in
19368 *_t) zzz="$uidtype"     ;;
19369 *)   zzz="uid"          ;;
19370 esac
19371 echo "Checking the sign of $zzz..." >&4
19372 cat > try.c <<EOCP
19373 #include <sys/types.h>
19374 #include <stdio.h>
19375 int main() {
19376         $uidtype foo = -1;
19377         if (foo < 0)
19378                 printf("-1\n");
19379         else
19380                 printf("1\n");
19381 }
19382 EOCP
19383 set try
19384 if eval $compile; then
19385         yyy=`$run ./try`
19386         case "$yyy" in
19387         '')     uidsign=1
19388                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19389                 ;;
19390         *)      uidsign=$yyy
19391                 case "$uidsign" in
19392                  1) echo "Your $zzz is unsigned." ;;
19393                 -1) echo "Your $zzz is signed."   ;;
19394                 esac
19395                 ;;
19396         esac
19397 else
19398         uidsign=1
19399         echo "(I can't compile the test program--guessing unsigned.)" >&4
19400 fi
19401
19402
19403
19404 echo " "
19405 $echo "Checking the format string to be used for uids..." >&4
19406
19407 case "$uidsign" in
19408 -1)     if $test X"$uidsize" = X"$ivsize"; then
19409                 uidformat="$ivdformat"
19410         else
19411                 if $test X"$uidsize" = X"$longsize"; then
19412                         uidformat='"ld"'
19413                 else
19414                         if $test X"$uidsize" = X"$intsize"; then
19415                                 uidformat='"d"'
19416                         else
19417                                 if $test X"$uidsize" = X"$shortsize"; then
19418                                         uidformat='"hd"'
19419                                 fi
19420                         fi
19421                 fi
19422         fi
19423         ;;
19424 *)      if $test X"$uidsize" = X"$uvsize"; then
19425                 uidformat="$uvuformat"
19426         else
19427                 if $test X"$uidsize" = X"$longsize"; then
19428                         uidformat='"lu"'
19429                 else
19430                         if $test X"$uidsize" = X"$intsize"; then
19431                                 uidformat='"u"'
19432                         else
19433                                 if $test X"$uidsize" = X"$shortsize"; then
19434                                         uidformat='"hu"'
19435                                 fi
19436                         fi
19437                 fi
19438         fi
19439         ;;
19440 esac
19441
19442 : determine compiler compiler
19443 case "$yacc" in
19444 '')
19445         dflt=yacc;;
19446 *)
19447         dflt="$yacc";;
19448 esac
19449 echo " "
19450 comp='yacc'
19451 if $test -f "$byacc$_exe"; then
19452         dflt="$byacc"
19453         comp="byacc or $comp"
19454 fi
19455 if $test -f "$bison$_exe"; then
19456         comp="$comp or bison -y"
19457 fi
19458 rp="Which compiler compiler ($comp) shall I use?"
19459 . ./myread
19460 yacc="$ans"
19461 case "$yacc" in
19462 *bis*)
19463         case "$yacc" in
19464         *-y*) ;;
19465         *)
19466                 yacc="$yacc -y"
19467                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19468                 ;;
19469         esac
19470         ;;
19471 esac
19472
19473 : see if this is a fp.h system
19474 set fp.h i_fp
19475 eval $inhdr
19476
19477 : see if this is a fp_class.h system
19478 set fp_class.h i_fp_class
19479 eval $inhdr
19480
19481 : see if this is a ieeefp.h system
19482 case "$i_ieeefp" in
19483 '' ) set ieeefp.h i_ieeefp
19484      eval $inhdr
19485      ;;
19486 esac
19487
19488 : see if this is a libutil.h system
19489 set libutil.h i_libutil
19490 eval $inhdr
19491
19492 : see if mach cthreads are available
19493 if test "X$usethreads" = "X$define"; then
19494         set mach/cthreads.h i_machcthr
19495         eval $inhdr
19496 else
19497         i_machcthr="$undef"
19498 fi
19499
19500
19501
19502 : see if this is a math.h system
19503 set math.h i_math
19504 eval $inhdr
19505
19506 : see if this is a mntent.h system
19507 set mntent.h i_mntent
19508 eval $inhdr
19509
19510 : see if ndbm.h is available
19511 set ndbm.h t_ndbm
19512 eval $inhdr
19513
19514 case "$t_ndbm" in
19515 $undef)
19516     # Some Linux distributions such as RedHat 7.1 put the
19517     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19518     if $test -f /usr/include/gdbm/ndbm.h; then
19519         echo '<gdbm/ndbm.h> found.'
19520         ccflags="$ccflags -I/usr/include/gdbm"
19521         cppflags="$cppflags -I/usr/include/gdbm"
19522         t_ndbm=$define
19523     fi
19524     ;;
19525 esac
19526
19527 case "$t_ndbm" in
19528 $define)
19529         : see if dbm_open exists
19530         set dbm_open d_dbm_open
19531         eval $inlibc
19532         case "$d_dbm_open" in
19533         $undef)
19534                 t_ndbm="$undef"
19535                 echo "We won't be including <ndbm.h>"
19536                 ;;
19537         esac
19538         ;;
19539 esac
19540 val="$t_ndbm"
19541 set i_ndbm
19542 eval $setvar
19543
19544 : see if net/errno.h is available
19545 val=''
19546 set net/errno.h val
19547 eval $inhdr
19548
19549 : Unfortunately, it causes problems on some systems.  Arrgh.
19550 case "$val" in
19551 $define)
19552         cat > try.c <<'EOM'
19553 #include <stdio.h>
19554 #include <errno.h>
19555 #include <net/errno.h>
19556 int func()
19557 {
19558         return ENOTSOCK;
19559 }
19560 EOM
19561         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19562                 echo "We'll be including <net/errno.h>." >&4
19563         else
19564                 echo "We won't be including <net/errno.h>." >&4
19565                 val="$undef"
19566         fi
19567         $rm -f try.* try
19568         ;;
19569 esac
19570 set i_neterrno
19571 eval $setvar
19572
19573 : see if netinet/tcp.h is available
19574 set netinet/tcp.h i_netinettcp
19575 eval $inhdr
19576
19577 : see if this is a poll.h system
19578 set poll.h i_poll
19579 eval $inhdr
19580
19581 : see if this is a prot.h system
19582 set prot.h i_prot
19583 eval $inhdr
19584
19585 echo " "
19586 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19587 $cat <<'EOSH' > Cppsym.know
19588 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19589 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19590 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19591 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19592 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19593 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19594 bull c cadmus clipper CMU COFF COMPILER_VERSION
19595 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19596 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19597 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19598 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19599 GLIBC GLIBC_MINOR
19600 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19601 H3050R H3050RX hbullx20 hcx host_mips
19602 hp200 hp300 hp700 HP700 hp800 hp9000
19603 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19604 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19605 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19606 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19607 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19608 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19609 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19610 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19611 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19612 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19613 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19614 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19615 MATH_HAS_NO_SIDE_EFFECTS
19616 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19617 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19618 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19619 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19620 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19621 NetBSD news1500 news1700 news1800 news1900 news3700
19622 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19623 ns32016 ns32332 ns32k nsc32000
19624 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19625 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19626 pc532 pdp11 PGC PIC plexus PORTAR posix
19627 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19628 POSIX_C_SOURCE POSIX_SOURCE POWER
19629 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19630 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19631 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19632 sony sony_news sonyrisc sparc sparclite spectrum
19633 stardent stdc STDC_EXT stratos sun sun3 sun386
19634 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19635 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19636 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19637 sysV68 sysV88 Tek4132 Tek4300 titan
19638 TM3200 TM5400 TM5600
19639 tower tower32 tower32_200 tower32_600 tower32_700
19640 tower32_800 tower32_850 tss
19641 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19642 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19643 unix UNIX95 UNIX99 unixpc unos
19644 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19645 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19646 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19647 USGr4 USGr4_2
19648 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19649 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19650 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19651 z8000
19652 EOSH
19653 # Maybe put other stuff here too.
19654 cat <<EOSH >>Cppsym.know
19655 $osname
19656 EOSH
19657 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19658 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19659 $cat Cppsym.know > Cppsym.c
19660 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19661 $rm -f Cppsym.a Cppsym.b Cppsym.c
19662 cat <<EOSH > Cppsym
19663 $startsh
19664 if $test \$# -gt 0; then
19665     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19666     if $test -s Cppsym.got; then
19667         $rm -f Cppsym.got
19668         exit 0
19669     fi
19670     $rm -f Cppsym.got
19671     exit 1
19672 else
19673     $tr " " "$trnl" | ./Cppsym.try
19674     exit 0
19675 fi
19676 EOSH
19677 chmod +x Cppsym
19678 $eunicefix Cppsym
19679 cat <<EOSH > Cppsym.try
19680 $startsh
19681 cat <<'EOCP' > try.c
19682 #include <stdio.h>
19683 int main() {
19684 EOCP
19685 $awk \\
19686 EOSH
19687 cat <<'EOSH' >> Cppsym.try
19688 'length($1) > 0 {
19689     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
19690     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
19691     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
19692     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
19693 }'       >> try.c
19694 echo 'return 0;}' >> try.c
19695 EOSH
19696 cat <<EOSH >> Cppsym.try
19697 ccflags="$ccflags"
19698 case "$osname-$gccversion" in
19699 irix-) ccflags="\$ccflags -woff 1178" ;;
19700 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19701 esac
19702 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19703 EOSH
19704 chmod +x Cppsym.try
19705 $eunicefix Cppsym.try
19706 ./Cppsym < Cppsym.know > Cppsym.true
19707 : now check the C compiler for additional symbols
19708 postprocess_cc_v=''
19709 case "$osname" in
19710 aix) postprocess_cc_v="|$tr , ' '" ;;
19711 esac
19712 $cat >ccsym <<EOS
19713 $startsh
19714 $cat >tmp.c <<EOF
19715 extern int foo;
19716 EOF
19717 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19718 do
19719         case "\$i" in
19720         -D*) echo "\$i" | $sed 's/^-D//';;
19721         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19722         esac
19723 done
19724 $rm -f try.c
19725 EOS
19726 postprocess_cc_v=''
19727 chmod +x ccsym
19728 $eunicefix ccsym
19729 ./ccsym > ccsym1.raw
19730 if $test -s ccsym1.raw; then
19731        $sort ccsym1.raw | $uniq >ccsym.raw
19732 else
19733        mv ccsym1.raw ccsym.raw
19734 fi
19735
19736 $awk '/\=/ { print $0; next }
19737         { print $0"=1" }' ccsym.raw >ccsym.list
19738 $awk '/\=/ { print $0; next }
19739         { print $0"=1" }' Cppsym.true >ccsym.true
19740 $comm -13 ccsym.true ccsym.list >ccsym.own
19741 $comm -12 ccsym.true ccsym.list >ccsym.com
19742 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19743 also=''
19744 if $test -z ccsym.raw; then
19745         echo "Your C compiler doesn't seem to define any symbols!" >&4
19746         echo " "
19747         echo "However, your C preprocessor defines the following symbols:"
19748         $cat Cppsym.true
19749         ccsymbols=''
19750         cppsymbols=`$cat Cppsym.true`
19751         cppsymbols=`echo $cppsymbols`
19752         cppccsymbols="$cppsymbols"
19753 else
19754         if $test -s ccsym.com; then
19755                 echo "Your C compiler and pre-processor define these symbols:"
19756                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19757                 also='also '
19758                 symbols='ones'
19759                 cppccsymbols=`$cat ccsym.com`
19760                 cppccsymbols=`echo $cppccsymbols`
19761                 $test "$silent" || sleep 1
19762         fi
19763         if $test -s ccsym.cpp; then
19764                 $test "$also" && echo " "
19765                 echo "Your C pre-processor ${also}defines the following symbols:"
19766                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19767                 also='further '
19768                 cppsymbols=`$cat ccsym.cpp`
19769                 cppsymbols=`echo $cppsymbols`
19770                 $test "$silent" || sleep 1
19771         fi
19772         if $test -s ccsym.own; then
19773                 $test "$also" && echo " "
19774                 echo "Your C compiler ${also}defines the following cpp symbols:"
19775                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19776                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19777                 ccsymbols=`$cat ccsym.own`
19778                 ccsymbols=`echo $ccsymbols`
19779                 $test "$silent" || sleep 1
19780         fi
19781 fi
19782
19783 : see if this is a termio system
19784 val="$undef"
19785 val2="$undef"
19786 val3="$undef"
19787 if $test `./findhdr termios.h`; then
19788         set tcsetattr i_termios
19789         eval $inlibc
19790         val3="$i_termios"
19791 fi
19792 echo " "
19793 case "$val3" in
19794 "$define") echo "You have POSIX termios.h... good!" >&4;;
19795 *) if ./Cppsym pyr; then
19796                 case "`/bin/universe`" in
19797                 ucb) if $test `./findhdr sgtty.h`; then
19798                                 val2="$define"
19799                                 echo "<sgtty.h> found." >&4
19800                         else
19801                                 echo "System is pyramid with BSD universe."
19802                                 echo "<sgtty.h> not found--you could have problems." >&4
19803                         fi;;
19804                 *) if $test `./findhdr termio.h`; then
19805                                 val="$define"
19806                                 echo "<termio.h> found." >&4
19807                         else
19808                                 echo "System is pyramid with USG universe."
19809                                 echo "<termio.h> not found--you could have problems." >&4
19810                         fi;;
19811                 esac
19812         elif ./usg; then
19813                 if $test `./findhdr termio.h`; then
19814                         echo "<termio.h> found." >&4
19815                         val="$define"
19816                 elif $test `./findhdr sgtty.h`; then
19817                         echo "<sgtty.h> found." >&4
19818                         val2="$define"
19819                 else
19820 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19821                 fi
19822         else
19823                 if $test `./findhdr sgtty.h`; then
19824                         echo "<sgtty.h> found." >&4
19825                         val2="$define"
19826                 elif $test `./findhdr termio.h`; then
19827                         echo "<termio.h> found." >&4
19828                         val="$define"
19829                 else
19830 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19831                 fi
19832         fi;;
19833 esac
19834 set i_termio; eval $setvar
19835 val=$val2; set i_sgtty; eval $setvar
19836 val=$val3; set i_termios; eval $setvar
19837
19838 : see if stddef is available
19839 set stddef.h i_stddef
19840 eval $inhdr
19841
19842 : see if this is a sunmath.h system
19843 set sunmath.h i_sunmath
19844 eval $inhdr
19845
19846 : see if sys/access.h is available
19847 set sys/access.h i_sysaccess
19848 eval $inhdr
19849
19850 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19851 set sys/filio.h i_sysfilio
19852 eval $inhdr
19853 echo " "
19854 if $test `./findhdr sys/ioctl.h`; then
19855         val="$define"
19856         echo '<sys/ioctl.h> found.' >&4
19857 else
19858         val="$undef"
19859         if $test $i_sysfilio = "$define"; then
19860             echo '<sys/ioctl.h> NOT found.' >&4
19861         else
19862                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19863                 $test $i_termio = "$define" && xxx="termio.h"
19864                 $test $i_termios = "$define" && xxx="termios.h"
19865 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19866         fi
19867 fi
19868 set i_sysioctl
19869 eval $setvar
19870
19871 : see if socket ioctl defs are in sys/sockio.h
19872 echo " "
19873 xxx=`./findhdr sys/sockio.h`
19874 if $test "$xxx"; then
19875         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19876                 val="$define"
19877                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19878         else
19879                 val="$undef"
19880                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19881         fi
19882 else
19883         val="$undef"
19884         $cat <<EOM
19885 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19886 EOM
19887 fi
19888 set i_syssockio
19889 eval $setvar
19890
19891
19892 : see if this is a syslog.h system
19893 set syslog.h i_syslog
19894 eval $inhdr
19895
19896
19897 : see if this is a sys/mode.h system
19898 set sys/mode.h i_sysmode
19899 eval $inhdr
19900
19901 : see if sys/resource.h has to be included
19902 set sys/resource.h i_sysresrc
19903 eval $inhdr
19904
19905 : see if sys/security.h is available
19906 set sys/security.h i_syssecrt
19907 eval $inhdr
19908
19909 : see if this is a sys/statvfs.h system
19910 set sys/statvfs.h i_sysstatvfs
19911 eval $inhdr
19912
19913 : see if this is a sys/un.h system
19914 set sys/un.h i_sysun
19915 eval $inhdr
19916
19917
19918 : see if this is a sys/utsname.h system
19919 set sys/utsname.h i_sysutsname
19920 eval $inhdr
19921
19922 : see if this is a syswait system
19923 set sys/wait.h i_syswait
19924 eval $inhdr
19925
19926 : see if this is a ustat.h system
19927 set ustat.h i_ustat
19928 eval $inhdr
19929
19930 : see if this is an utime system
19931 set utime.h i_utime
19932 eval $inhdr
19933
19934 : see if this is a values.h system
19935 set values.h i_values
19936 eval $inhdr
19937
19938 : see if this is a vfork system
19939 case "$d_vfork" in
19940 "$define")
19941         set vfork.h i_vfork
19942         eval $inhdr
19943         ;;
19944 *)
19945         i_vfork="$undef"
19946         ;;
19947 esac
19948
19949 : see if gdbm.h is available
19950 set gdbm.h t_gdbm
19951 eval $inhdr
19952 case "$t_gdbm" in
19953 $define)
19954         : see if gdbm_open exists
19955         set gdbm_open d_gdbm_open
19956         eval $inlibc
19957         case "$d_gdbm_open" in
19958         $undef)
19959                 t_gdbm="$undef"
19960                 echo "We won't be including <gdbm.h>"
19961                 ;;
19962         esac
19963         ;;
19964 esac
19965 val="$t_gdbm"
19966 set i_gdbm
19967 eval $setvar
19968
19969 echo " "
19970 echo "Looking for extensions..." >&4
19971 : If we are using the old config.sh, known_extensions may contain
19972 : old or inaccurate or duplicate values.
19973 known_extensions=''
19974 nonxs_extensions=''
19975 : We do not use find because it might not be available.
19976 : We do not just use MANIFEST because the user may have dropped
19977 : some additional extensions into the source tree and expect them
19978 : to be built.
19979
19980 : Function to recursively find available extensions, ignoring DynaLoader
19981 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19982 find_extensions='
19983     for xxx in *; do
19984        case "$xxx" in
19985            DynaLoader|dynaload) ;;
19986            *)
19987            if $test -f $xxx/$xxx.xs; then
19988                known_extensions="$known_extensions $1$xxx";
19989            elif $test -f $xxx/Makefile.PL; then
19990                nonxs_extensions="$nonxs_extensions $1$xxx";
19991            else
19992                if $test -d $xxx -a $# -lt 10; then
19993                    set $1$xxx/ $*;
19994                    cd "$xxx";
19995                    eval $find_extensions;
19996                    cd ..;
19997                    shift;
19998                fi;
19999            fi
20000            ;;
20001        esac;
20002     done'
20003 tdir=`pwd`
20004 cd "$rsrc/ext"
20005 set X
20006 shift
20007 eval $find_extensions
20008 # Special case:  Add in threads/shared since it is not picked up by the
20009 # recursive find above (and adding in general recursive finding breaks
20010 # SDBM_File/sdbm).  A.D.  10/25/2001.
20011 known_extensions="$known_extensions threads/shared"
20012 set X $nonxs_extensions
20013 shift
20014 nonxs_extensions="$*"
20015 set X $known_extensions
20016 shift
20017 known_extensions="$*"
20018 cd "$tdir"
20019
20020 : Now see which are supported on this system.
20021 avail_ext=''
20022 for xxx in $known_extensions ; do
20023         case "$xxx" in
20024         DB_File|db_file)
20025                 case "$i_db" in
20026                 $define) avail_ext="$avail_ext $xxx" ;;
20027                 esac
20028                 ;;
20029         GDBM_File|gdbm_fil)
20030                 case "$i_gdbm" in 
20031                 $define) avail_ext="$avail_ext $xxx" ;;
20032                 esac
20033                 ;;
20034         I18N/Langinfo|i18n_lan)
20035                 case "$i_langinfo$d_nl_langinfo" in 
20036                 $define$define) avail_ext="$avail_ext $xxx" ;;
20037                 esac
20038                 ;;
20039         NDBM_File|ndbm_fil)
20040                 case "$i_ndbm" in
20041                 $define)
20042                     case "$osname-$use64bitint" in
20043                     hpux-define)
20044                         case "$libs" in
20045                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20046                         esac
20047                         ;;
20048                     *) avail_ext="$avail_ext $xxx" ;;
20049                     esac
20050                     ;;
20051                 esac
20052                 ;;
20053         ODBM_File|odbm_fil) 
20054                 case "${i_dbm}${i_rpcsvcdbm}" in
20055                 *"${define}"*)
20056                     case "$osname-$use64bitint" in
20057                     hpux-define)
20058                         case "$libs" in
20059                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20060                         esac
20061                         ;;
20062                     *) avail_ext="$avail_ext $xxx" ;;
20063                     esac
20064                     ;;
20065                 esac
20066                 ;;
20067         POSIX|posix)
20068                 case "$useposix" in
20069                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20070                 esac
20071                 ;;
20072         Opcode|opcode)
20073                 case "$useopcode" in
20074                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20075                 esac
20076                 ;;
20077         Socket|socket)
20078                 case "$d_socket" in 
20079                 true|$define|y)
20080                     case "$osname" in
20081                     beos) ;; # not unless BONE
20082                     *) avail_ext="$avail_ext $xxx" ;;
20083                     esac
20084                     ;;
20085                 esac
20086                 ;;
20087         Sys/Syslog|sys/syslog)
20088                 : XXX syslog requires socket
20089                 case "$d_socket" in 
20090                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20091                 esac
20092                 ;;
20093         Thread|thread)
20094                 case "$usethreads" in
20095                 true|$define|y)
20096                         case "$useithreads" in
20097                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20098                         esac
20099                 esac
20100                 ;;
20101         XS/APItest|xs/apitest)
20102                 # This is just for testing.  Skip it unless we have dynamic loading.
20103
20104                 case "$usedl" in
20105                 $define) avail_ext="$avail_ext $xxx" ;;
20106                 esac
20107                 ;;
20108         XS/Typemap|xs/typemap)
20109                 # This is just for testing.  Skip it unless we have dynamic loading.
20110                 case "$usedl" in
20111                 $define) avail_ext="$avail_ext $xxx" ;;
20112                 esac
20113                 ;;
20114         threads|threads/shared)
20115                 # threads and threads::shared are special cases.
20116                 # To stop people from asking "Perl 5.8.0 was supposed
20117                 # to have this new fancy threads implementation but my
20118                 # perl doesn't have it" and from people trying to
20119                 # (re)install the threads module using CPAN.pm and
20120                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20121                 # the threads.pm and threads/shared.pm will always be
20122                 # there, croaking informatively ("you need to rebuild
20123                 # all of Perl with threads, sorry") when threads haven't
20124                 # been compiled in.
20125                 # --jhi
20126                 avail_ext="$avail_ext $xxx"
20127                 ;;
20128         IPC/SysV|ipc/sysv)
20129                 : XXX Do we need a useipcsysv variable here
20130                 case "${d_msg}${d_sem}${d_shm}" in 
20131                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20132                 esac
20133                 ;;
20134         *)      avail_ext="$avail_ext $xxx"
20135                 ;;
20136         esac
20137 done
20138
20139 set X $avail_ext
20140 shift
20141 avail_ext="$*"
20142
20143 case "$onlyextensions" in
20144 '') ;;
20145 *)  keepextensions=''
20146     echo "You have requested that only certains extensions be included..." >&4
20147     for i in $onlyextensions; do
20148         case " $avail_ext " in
20149         *" $i "*)
20150             echo "Keeping extension $i."
20151             keepextensions="$keepextensions $i"
20152             ;;
20153         *) echo "Ignoring extension $i." ;;
20154         esac
20155     done
20156     avail_ext="$keepextensions"
20157     ;;
20158 esac
20159
20160 case "$noextensions" in
20161 '') ;;
20162 *)  keepextensions=''
20163     echo "You have requested that certain extensions be ignored..." >&4
20164     for i in $avail_ext; do
20165         case " $noextensions " in
20166         *" $i "*) echo "Ignoring extension $i." ;;
20167         *) echo "Keeping extension $i.";
20168            keepextensions="$keepextensions $i"
20169            ;;
20170         esac
20171     done
20172     avail_ext="$keepextensions"
20173     ;;
20174 esac
20175
20176 : Now see which nonxs extensions are supported on this system.
20177 : For now assume all are.
20178 nonxs_ext=''
20179 for xxx in $nonxs_extensions ; do
20180         case "$xxx" in
20181         *)      nonxs_ext="$nonxs_ext $xxx"
20182                 ;;
20183         esac
20184 done
20185
20186 set X $nonxs_ext
20187 shift
20188 nonxs_ext="$*"
20189
20190 case $usedl in
20191 $define)
20192         $cat <<EOM
20193 A number of extensions are supplied with $package.  You may choose to
20194 compile these extensions for dynamic loading (the default), compile
20195 them into the $package executable (static loading), or not include
20196 them at all.  Answer "none" to include no extensions.
20197 Note that DynaLoader is always built and need not be mentioned here.
20198
20199 EOM
20200         case "$dynamic_ext" in
20201         '')
20202                 : Exclude those listed in static_ext
20203                 dflt=''
20204                 for xxx in $avail_ext; do
20205                         case " $static_ext " in
20206                         *" $xxx "*) ;;
20207                         *) dflt="$dflt $xxx" ;;
20208                         esac
20209                 done
20210                 set X $dflt
20211                 shift
20212                 dflt="$*"
20213                 ;;
20214         *)      dflt="$dynamic_ext"
20215                 # Perhaps we are reusing an old out-of-date config.sh.
20216                 case "$hint" in
20217                 previous)
20218                         if test X"$dynamic_ext" != X"$avail_ext"; then
20219                                 $cat <<EOM
20220 NOTICE:  Your previous config.sh list may be incorrect. 
20221 The extensions now available to you are 
20222         ${avail_ext}
20223 but the default list from your previous config.sh is
20224         ${dynamic_ext} 
20225
20226 EOM
20227                         fi
20228                         ;;
20229                 esac
20230                 ;;
20231         esac
20232         case "$dflt" in
20233         '')     dflt=none;;
20234         esac
20235         rp="What extensions do you wish to load dynamically?"
20236         . ./myread
20237         case "$ans" in
20238         none) dynamic_ext=' ' ;;
20239         *) dynamic_ext="$ans" ;;
20240         esac
20241
20242         case "$static_ext" in
20243         '')
20244                 : Exclude those already listed in dynamic linking
20245                 dflt=''
20246                 for xxx in $avail_ext; do
20247                         case " $dynamic_ext " in
20248                         *" $xxx "*) ;;
20249                         *) dflt="$dflt $xxx" ;;
20250                         esac
20251                 done
20252                 set X $dflt
20253                 shift
20254                 dflt="$*"
20255                 ;;
20256         *)  dflt="$static_ext" 
20257                 ;;
20258         esac
20259
20260         case "$dflt" in
20261         '')     dflt=none;;
20262         esac
20263         rp="What extensions do you wish to load statically?"
20264         . ./myread
20265         case "$ans" in
20266         none) static_ext=' ' ;;
20267         *) static_ext="$ans" ;;
20268         esac
20269         ;;
20270 *)
20271         $cat <<EOM
20272 A number of extensions are supplied with $package.  Answer "none" 
20273 to include no extensions. 
20274 Note that DynaLoader is always built and need not be mentioned here.
20275
20276 EOM
20277         case "$static_ext" in
20278         '') dflt="$avail_ext" ;;
20279         *)      dflt="$static_ext"
20280                 # Perhaps we are reusing an old out-of-date config.sh.
20281                 case "$hint" in
20282                 previous)
20283                         if test X"$static_ext" != X"$avail_ext"; then
20284                                 $cat <<EOM
20285 NOTICE:  Your previous config.sh list may be incorrect. 
20286 The extensions now available to you are 
20287         ${avail_ext}
20288 but the default list from your previous config.sh is
20289         ${static_ext} 
20290
20291 EOM
20292                         fi
20293                         ;;
20294                 esac
20295                 ;;
20296         esac
20297         : Exclude those that are not xs extensions
20298         case "$dflt" in
20299         '')     dflt=none;;
20300         esac
20301         rp="What extensions do you wish to include?"
20302         . ./myread
20303         case "$ans" in
20304         none) static_ext=' ' ;;
20305         *) static_ext="$ans" ;;
20306         esac
20307         ;;
20308 esac
20309 #        
20310 # Encode is a special case.  If we are building Encode as a static
20311 # extension, we need to explicitly list its subextensions as well.
20312 # For other nested extensions, this is handled automatically by
20313 # the appropriate Makefile.PL.
20314 case " $static_ext " in
20315         *" Encode "*) # Add the subextensions of Encode
20316         cd "$rsrc/ext"
20317         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20318                 static_ext="$static_ext Encode/$xxx"
20319         done
20320         cd "$tdir"
20321         ;;
20322 esac
20323
20324 set X $dynamic_ext $static_ext $nonxs_ext
20325 shift
20326 extensions="$*"
20327
20328 # Sanity check:  We require an extension suitable for use with
20329 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20330 # should show up as failures in the test suite, but it's helpful to
20331 # catch them now.) The 'extensions' list is normally sorted
20332 # alphabetically, so we need to accept either
20333 #    DB_File ... Fcntl ... IO  ....
20334 # or something like
20335 #    Fcntl ... NDBM_File ... IO  ....
20336 case " $extensions"  in
20337 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20338 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20339 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20340 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20341    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20342    ;;
20343 esac
20344
20345 : Remove libraries needed only for extensions
20346 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20347 : The exception is SunOS 4.x, which needs them.
20348 case "${osname}X${osvers}" in
20349 sunos*X4*)
20350     perllibs="$libs"
20351     ;;
20352 *) case "$usedl" in
20353     $define|true|[yY]*)
20354             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20355             shift
20356             perllibs="$*"
20357             ;;
20358     *)  perllibs="$libs"
20359             ;;
20360     esac
20361     ;;
20362 esac
20363
20364 : Remove build directory name from cppstdin so it can be used from
20365 : either the present location or the final installed location.
20366 echo " "
20367 : Get out of the UU directory to get correct path name.
20368 cd ..
20369 case "$cppstdin" in
20370 `pwd`/cppstdin)
20371         echo "Stripping down cppstdin path name"
20372         cppstdin=cppstdin
20373         ;;
20374 esac
20375 cd UU
20376
20377 : end of configuration questions
20378 echo " "
20379 echo "End of configuration questions."
20380 echo " "
20381
20382 : back to where it started
20383 if test -d ../UU; then
20384         cd ..
20385 fi
20386
20387 : configuration may be patched via a 'config.arch' file
20388 if $test -f config.arch; then
20389         echo "I see a config.arch file, loading it."
20390         . ./config.arch
20391 fi
20392
20393 : configuration may be patched via a 'config.over' file
20394 if $test -f config.over; then
20395         echo " "
20396         dflt=y
20397         rp='I see a config.over file.  Do you wish to load it?'
20398         . UU/myread
20399         case "$ans" in
20400         n*) echo "OK, I'll ignore it.";;
20401         *)      . ./config.over
20402                 echo "Configuration override changes have been loaded."
20403                 ;;
20404         esac
20405 fi
20406
20407 : in case they want portability, strip down executable paths
20408 case "$d_portable" in
20409 "$define")
20410         echo " "
20411         echo "Stripping down executable paths..." >&4
20412         for file in $loclist $trylist; do
20413                 eval temp=\$$file
20414                 eval $file=`basename $temp`
20415         done
20416         ;;
20417 esac
20418
20419 : create config.sh file
20420 echo " "
20421 echo "Creating config.sh..." >&4
20422 $spitshell <<EOT >config.sh
20423 $startsh
20424 #
20425 # This file was produced by running the Configure script. It holds all the
20426 # definitions figured out by Configure. Should you modify one of these values,
20427 # do not forget to propagate your changes by running "Configure -der". You may
20428 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20429 #
20430
20431 # Package name      : $package
20432 # Source directory  : $src
20433 # Configuration time: $cf_time
20434 # Configured by     : $cf_by
20435 # Target system     : $myuname
20436
20437 Author='$Author'
20438 Date='$Date'
20439 Header='$Header'
20440 Id='$Id'
20441 Locker='$Locker'
20442 Log='$Log'
20443 Mcc='$Mcc'
20444 RCSfile='$RCSfile'
20445 Revision='$Revision'
20446 Source='$Source'
20447 State='$State'
20448 _a='$_a'
20449 _exe='$_exe'
20450 _o='$_o'
20451 afs='$afs'
20452 afsroot='$afsroot'
20453 alignbytes='$alignbytes'
20454 ansi2knr='$ansi2knr'
20455 aphostname='$aphostname'
20456 api_revision='$api_revision'
20457 api_subversion='$api_subversion'
20458 api_version='$api_version'
20459 api_versionstring='$api_versionstring'
20460 ar='$ar'
20461 archlib='$archlib'
20462 archlibexp='$archlibexp'
20463 archname64='$archname64'
20464 archname='$archname'
20465 archobjs='$archobjs'
20466 asctime_r_proto='$asctime_r_proto'
20467 awk='$awk'
20468 baserev='$baserev'
20469 bash='$bash'
20470 bin='$bin'
20471 binexp='$binexp'
20472 bison='$bison'
20473 byacc='$byacc'
20474 byteorder='$byteorder'
20475 c='$c'
20476 castflags='$castflags'
20477 cat='$cat'
20478 cc='$cc'
20479 cccdlflags='$cccdlflags'
20480 ccdlflags='$ccdlflags'
20481 ccflags='$ccflags'
20482 ccflags_uselargefiles='$ccflags_uselargefiles'
20483 ccname='$ccname'
20484 ccsymbols='$ccsymbols'
20485 ccversion='$ccversion'
20486 cf_by='$cf_by'
20487 cf_email='$cf_email'
20488 cf_time='$cf_time'
20489 charsize='$charsize'
20490 chgrp='$chgrp'
20491 chmod='$chmod'
20492 chown='$chown'
20493 clocktype='$clocktype'
20494 comm='$comm'
20495 compress='$compress'
20496 contains='$contains'
20497 cp='$cp'
20498 cpio='$cpio'
20499 cpp='$cpp'
20500 cpp_stuff='$cpp_stuff'
20501 cppccsymbols='$cppccsymbols'
20502 cppflags='$cppflags'
20503 cpplast='$cpplast'
20504 cppminus='$cppminus'
20505 cpprun='$cpprun'
20506 cppstdin='$cppstdin'
20507 cppsymbols='$cppsymbols'
20508 crypt_r_proto='$crypt_r_proto'
20509 cryptlib='$cryptlib'
20510 csh='$csh'
20511 ctermid_r_proto='$ctermid_r_proto'
20512 ctime_r_proto='$ctime_r_proto'
20513 d_Gconvert='$d_Gconvert'
20514 d_PRIEUldbl='$d_PRIEUldbl'
20515 d_PRIFUldbl='$d_PRIFUldbl'
20516 d_PRIGUldbl='$d_PRIGUldbl'
20517 d_PRIXU64='$d_PRIXU64'
20518 d_PRId64='$d_PRId64'
20519 d_PRIeldbl='$d_PRIeldbl'
20520 d_PRIfldbl='$d_PRIfldbl'
20521 d_PRIgldbl='$d_PRIgldbl'
20522 d_PRIi64='$d_PRIi64'
20523 d_PRIo64='$d_PRIo64'
20524 d_PRIu64='$d_PRIu64'
20525 d_PRIx64='$d_PRIx64'
20526 d_SCNfldbl='$d_SCNfldbl'
20527 d__fwalk='$d__fwalk'
20528 d_access='$d_access'
20529 d_accessx='$d_accessx'
20530 d_aintl='$d_aintl'
20531 d_alarm='$d_alarm'
20532 d_archlib='$d_archlib'
20533 d_asctime_r='$d_asctime_r'
20534 d_atolf='$d_atolf'
20535 d_atoll='$d_atoll'
20536 d_attribut='$d_attribut'
20537 d_bcmp='$d_bcmp'
20538 d_bcopy='$d_bcopy'
20539 d_bsd='$d_bsd'
20540 d_bsdgetpgrp='$d_bsdgetpgrp'
20541 d_bsdsetpgrp='$d_bsdsetpgrp'
20542 d_bzero='$d_bzero'
20543 d_casti32='$d_casti32'
20544 d_castneg='$d_castneg'
20545 d_charvspr='$d_charvspr'
20546 d_chown='$d_chown'
20547 d_chroot='$d_chroot'
20548 d_chsize='$d_chsize'
20549 d_class='$d_class'
20550 d_closedir='$d_closedir'
20551 d_cmsghdr_s='$d_cmsghdr_s'
20552 d_const='$d_const'
20553 d_copysignl='$d_copysignl'
20554 d_crypt='$d_crypt'
20555 d_crypt_r='$d_crypt_r'
20556 d_csh='$d_csh'
20557 d_ctermid_r='$d_ctermid_r'
20558 d_ctime_r='$d_ctime_r'
20559 d_cuserid='$d_cuserid'
20560 d_dbl_dig='$d_dbl_dig'
20561 d_dbminitproto='$d_dbminitproto'
20562 d_difftime='$d_difftime'
20563 d_dirfd='$d_dirfd'
20564 d_dirnamlen='$d_dirnamlen'
20565 d_dlerror='$d_dlerror'
20566 d_dlopen='$d_dlopen'
20567 d_dlsymun='$d_dlsymun'
20568 d_dosuid='$d_dosuid'
20569 d_drand48_r='$d_drand48_r'
20570 d_drand48proto='$d_drand48proto'
20571 d_dup2='$d_dup2'
20572 d_eaccess='$d_eaccess'
20573 d_endgrent='$d_endgrent'
20574 d_endgrent_r='$d_endgrent_r'
20575 d_endhent='$d_endhent'
20576 d_endhostent_r='$d_endhostent_r'
20577 d_endnent='$d_endnent'
20578 d_endnetent_r='$d_endnetent_r'
20579 d_endpent='$d_endpent'
20580 d_endprotoent_r='$d_endprotoent_r'
20581 d_endpwent='$d_endpwent'
20582 d_endpwent_r='$d_endpwent_r'
20583 d_endsent='$d_endsent'
20584 d_endservent_r='$d_endservent_r'
20585 d_eofnblk='$d_eofnblk'
20586 d_eunice='$d_eunice'
20587 d_faststdio='$d_faststdio'
20588 d_fchdir='$d_fchdir'
20589 d_fchmod='$d_fchmod'
20590 d_fchown='$d_fchown'
20591 d_fcntl='$d_fcntl'
20592 d_fcntl_can_lock='$d_fcntl_can_lock'
20593 d_fd_macros='$d_fd_macros'
20594 d_fd_set='$d_fd_set'
20595 d_fds_bits='$d_fds_bits'
20596 d_fgetpos='$d_fgetpos'
20597 d_finite='$d_finite'
20598 d_finitel='$d_finitel'
20599 d_flexfnam='$d_flexfnam'
20600 d_flock='$d_flock'
20601 d_flockproto='$d_flockproto'
20602 d_fork='$d_fork'
20603 d_fp_class='$d_fp_class'
20604 d_fpathconf='$d_fpathconf'
20605 d_fpclass='$d_fpclass'
20606 d_fpclassify='$d_fpclassify'
20607 d_fpclassl='$d_fpclassl'
20608 d_fpos64_t='$d_fpos64_t'
20609 d_frexpl='$d_frexpl'
20610 d_fs_data_s='$d_fs_data_s'
20611 d_fseeko='$d_fseeko'
20612 d_fsetpos='$d_fsetpos'
20613 d_fstatfs='$d_fstatfs'
20614 d_fstatvfs='$d_fstatvfs'
20615 d_fsync='$d_fsync'
20616 d_ftello='$d_ftello'
20617 d_ftime='$d_ftime'
20618 d_getcwd='$d_getcwd'
20619 d_getespwnam='$d_getespwnam'
20620 d_getfsstat='$d_getfsstat'
20621 d_getgrent='$d_getgrent'
20622 d_getgrent_r='$d_getgrent_r'
20623 d_getgrgid_r='$d_getgrgid_r'
20624 d_getgrnam_r='$d_getgrnam_r'
20625 d_getgrps='$d_getgrps'
20626 d_gethbyaddr='$d_gethbyaddr'
20627 d_gethbyname='$d_gethbyname'
20628 d_gethent='$d_gethent'
20629 d_gethname='$d_gethname'
20630 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20631 d_gethostbyname_r='$d_gethostbyname_r'
20632 d_gethostent_r='$d_gethostent_r'
20633 d_gethostprotos='$d_gethostprotos'
20634 d_getitimer='$d_getitimer'
20635 d_getlogin='$d_getlogin'
20636 d_getlogin_r='$d_getlogin_r'
20637 d_getmnt='$d_getmnt'
20638 d_getmntent='$d_getmntent'
20639 d_getnbyaddr='$d_getnbyaddr'
20640 d_getnbyname='$d_getnbyname'
20641 d_getnent='$d_getnent'
20642 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20643 d_getnetbyname_r='$d_getnetbyname_r'
20644 d_getnetent_r='$d_getnetent_r'
20645 d_getnetprotos='$d_getnetprotos'
20646 d_getpagsz='$d_getpagsz'
20647 d_getpbyname='$d_getpbyname'
20648 d_getpbynumber='$d_getpbynumber'
20649 d_getpent='$d_getpent'
20650 d_getpgid='$d_getpgid'
20651 d_getpgrp2='$d_getpgrp2'
20652 d_getpgrp='$d_getpgrp'
20653 d_getppid='$d_getppid'
20654 d_getprior='$d_getprior'
20655 d_getprotobyname_r='$d_getprotobyname_r'
20656 d_getprotobynumber_r='$d_getprotobynumber_r'
20657 d_getprotoent_r='$d_getprotoent_r'
20658 d_getprotoprotos='$d_getprotoprotos'
20659 d_getprpwnam='$d_getprpwnam'
20660 d_getpwent='$d_getpwent'
20661 d_getpwent_r='$d_getpwent_r'
20662 d_getpwnam_r='$d_getpwnam_r'
20663 d_getpwuid_r='$d_getpwuid_r'
20664 d_getsbyname='$d_getsbyname'
20665 d_getsbyport='$d_getsbyport'
20666 d_getsent='$d_getsent'
20667 d_getservbyname_r='$d_getservbyname_r'
20668 d_getservbyport_r='$d_getservbyport_r'
20669 d_getservent_r='$d_getservent_r'
20670 d_getservprotos='$d_getservprotos'
20671 d_getspnam='$d_getspnam'
20672 d_getspnam_r='$d_getspnam_r'
20673 d_gettimeod='$d_gettimeod'
20674 d_gmtime_r='$d_gmtime_r'
20675 d_gnulibc='$d_gnulibc'
20676 d_grpasswd='$d_grpasswd'
20677 d_hasmntopt='$d_hasmntopt'
20678 d_htonl='$d_htonl'
20679 d_ilogbl='$d_ilogbl'
20680 d_index='$d_index'
20681 d_inetaton='$d_inetaton'
20682 d_int64_t='$d_int64_t'
20683 d_isascii='$d_isascii'
20684 d_isfinite='$d_isfinite'
20685 d_isinf='$d_isinf'
20686 d_isnan='$d_isnan'
20687 d_isnanl='$d_isnanl'
20688 d_killpg='$d_killpg'
20689 d_lchown='$d_lchown'
20690 d_ldbl_dig='$d_ldbl_dig'
20691 d_link='$d_link'
20692 d_localtime_r='$d_localtime_r'
20693 d_locconv='$d_locconv'
20694 d_lockf='$d_lockf'
20695 d_longdbl='$d_longdbl'
20696 d_longlong='$d_longlong'
20697 d_lseekproto='$d_lseekproto'
20698 d_lstat='$d_lstat'
20699 d_madvise='$d_madvise'
20700 d_mblen='$d_mblen'
20701 d_mbstowcs='$d_mbstowcs'
20702 d_mbtowc='$d_mbtowc'
20703 d_memchr='$d_memchr'
20704 d_memcmp='$d_memcmp'
20705 d_memcpy='$d_memcpy'
20706 d_memmove='$d_memmove'
20707 d_memset='$d_memset'
20708 d_mkdir='$d_mkdir'
20709 d_mkdtemp='$d_mkdtemp'
20710 d_mkfifo='$d_mkfifo'
20711 d_mkstemp='$d_mkstemp'
20712 d_mkstemps='$d_mkstemps'
20713 d_mktime='$d_mktime'
20714 d_mmap='$d_mmap'
20715 d_modfl='$d_modfl'
20716 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20717 d_modflproto='$d_modflproto'
20718 d_mprotect='$d_mprotect'
20719 d_msg='$d_msg'
20720 d_msg_ctrunc='$d_msg_ctrunc'
20721 d_msg_dontroute='$d_msg_dontroute'
20722 d_msg_oob='$d_msg_oob'
20723 d_msg_peek='$d_msg_peek'
20724 d_msg_proxy='$d_msg_proxy'
20725 d_msgctl='$d_msgctl'
20726 d_msgget='$d_msgget'
20727 d_msghdr_s='$d_msghdr_s'
20728 d_msgrcv='$d_msgrcv'
20729 d_msgsnd='$d_msgsnd'
20730 d_msync='$d_msync'
20731 d_munmap='$d_munmap'
20732 d_mymalloc='$d_mymalloc'
20733 d_nice='$d_nice'
20734 d_nl_langinfo='$d_nl_langinfo'
20735 d_nv_preserves_uv='$d_nv_preserves_uv'
20736 d_off64_t='$d_off64_t'
20737 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20738 d_oldpthreads='$d_oldpthreads'
20739 d_oldsock='$d_oldsock'
20740 d_open3='$d_open3'
20741 d_pathconf='$d_pathconf'
20742 d_pause='$d_pause'
20743 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20744 d_phostname='$d_phostname'
20745 d_pipe='$d_pipe'
20746 d_poll='$d_poll'
20747 d_portable='$d_portable'
20748 d_procselfexe='$d_procselfexe'
20749 d_pthread_atfork='$d_pthread_atfork'
20750 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20751 d_pthread_yield='$d_pthread_yield'
20752 d_pwage='$d_pwage'
20753 d_pwchange='$d_pwchange'
20754 d_pwclass='$d_pwclass'
20755 d_pwcomment='$d_pwcomment'
20756 d_pwexpire='$d_pwexpire'
20757 d_pwgecos='$d_pwgecos'
20758 d_pwpasswd='$d_pwpasswd'
20759 d_pwquota='$d_pwquota'
20760 d_qgcvt='$d_qgcvt'
20761 d_quad='$d_quad'
20762 d_random_r='$d_random_r'
20763 d_readdir64_r='$d_readdir64_r'
20764 d_readdir='$d_readdir'
20765 d_readdir_r='$d_readdir_r'
20766 d_readlink='$d_readlink'
20767 d_readv='$d_readv'
20768 d_recvmsg='$d_recvmsg'
20769 d_rename='$d_rename'
20770 d_rewinddir='$d_rewinddir'
20771 d_rmdir='$d_rmdir'
20772 d_safebcpy='$d_safebcpy'
20773 d_safemcpy='$d_safemcpy'
20774 d_sanemcmp='$d_sanemcmp'
20775 d_sbrkproto='$d_sbrkproto'
20776 d_scalbnl='$d_scalbnl'
20777 d_sched_yield='$d_sched_yield'
20778 d_scm_rights='$d_scm_rights'
20779 d_seekdir='$d_seekdir'
20780 d_select='$d_select'
20781 d_sem='$d_sem'
20782 d_semctl='$d_semctl'
20783 d_semctl_semid_ds='$d_semctl_semid_ds'
20784 d_semctl_semun='$d_semctl_semun'
20785 d_semget='$d_semget'
20786 d_semop='$d_semop'
20787 d_sendmsg='$d_sendmsg'
20788 d_setegid='$d_setegid'
20789 d_seteuid='$d_seteuid'
20790 d_setgrent='$d_setgrent'
20791 d_setgrent_r='$d_setgrent_r'
20792 d_setgrps='$d_setgrps'
20793 d_sethent='$d_sethent'
20794 d_sethostent_r='$d_sethostent_r'
20795 d_setitimer='$d_setitimer'
20796 d_setlinebuf='$d_setlinebuf'
20797 d_setlocale='$d_setlocale'
20798 d_setlocale_r='$d_setlocale_r'
20799 d_setnent='$d_setnent'
20800 d_setnetent_r='$d_setnetent_r'
20801 d_setpent='$d_setpent'
20802 d_setpgid='$d_setpgid'
20803 d_setpgrp2='$d_setpgrp2'
20804 d_setpgrp='$d_setpgrp'
20805 d_setprior='$d_setprior'
20806 d_setproctitle='$d_setproctitle'
20807 d_setprotoent_r='$d_setprotoent_r'
20808 d_setpwent='$d_setpwent'
20809 d_setpwent_r='$d_setpwent_r'
20810 d_setregid='$d_setregid'
20811 d_setresgid='$d_setresgid'
20812 d_setresuid='$d_setresuid'
20813 d_setreuid='$d_setreuid'
20814 d_setrgid='$d_setrgid'
20815 d_setruid='$d_setruid'
20816 d_setsent='$d_setsent'
20817 d_setservent_r='$d_setservent_r'
20818 d_setsid='$d_setsid'
20819 d_setvbuf='$d_setvbuf'
20820 d_sfio='$d_sfio'
20821 d_shm='$d_shm'
20822 d_shmat='$d_shmat'
20823 d_shmatprototype='$d_shmatprototype'
20824 d_shmctl='$d_shmctl'
20825 d_shmdt='$d_shmdt'
20826 d_shmget='$d_shmget'
20827 d_sigaction='$d_sigaction'
20828 d_sigprocmask='$d_sigprocmask'
20829 d_sigsetjmp='$d_sigsetjmp'
20830 d_sockatmark='$d_sockatmark'
20831 d_sockatmarkproto='$d_sockatmarkproto'
20832 d_socket='$d_socket'
20833 d_socklen_t='$d_socklen_t'
20834 d_sockpair='$d_sockpair'
20835 d_socks5_init='$d_socks5_init'
20836 d_sqrtl='$d_sqrtl'
20837 d_srand48_r='$d_srand48_r'
20838 d_srandom_r='$d_srandom_r'
20839 d_sresgproto='$d_sresgproto'
20840 d_sresuproto='$d_sresuproto'
20841 d_statblks='$d_statblks'
20842 d_statfs_f_flags='$d_statfs_f_flags'
20843 d_statfs_s='$d_statfs_s'
20844 d_statvfs='$d_statvfs'
20845 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20846 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20847 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20848 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20849 d_stdio_stream_array='$d_stdio_stream_array'
20850 d_stdiobase='$d_stdiobase'
20851 d_stdstdio='$d_stdstdio'
20852 d_strchr='$d_strchr'
20853 d_strcoll='$d_strcoll'
20854 d_strctcpy='$d_strctcpy'
20855 d_strerrm='$d_strerrm'
20856 d_strerror='$d_strerror'
20857 d_strerror_r='$d_strerror_r'
20858 d_strftime='$d_strftime'
20859 d_strtod='$d_strtod'
20860 d_strtol='$d_strtol'
20861 d_strtold='$d_strtold'
20862 d_strtoll='$d_strtoll'
20863 d_strtoq='$d_strtoq'
20864 d_strtoul='$d_strtoul'
20865 d_strtoull='$d_strtoull'
20866 d_strtouq='$d_strtouq'
20867 d_strxfrm='$d_strxfrm'
20868 d_suidsafe='$d_suidsafe'
20869 d_symlink='$d_symlink'
20870 d_syscall='$d_syscall'
20871 d_syscallproto='$d_syscallproto'
20872 d_sysconf='$d_sysconf'
20873 d_sysernlst='$d_sysernlst'
20874 d_syserrlst='$d_syserrlst'
20875 d_system='$d_system'
20876 d_tcgetpgrp='$d_tcgetpgrp'
20877 d_tcsetpgrp='$d_tcsetpgrp'
20878 d_telldir='$d_telldir'
20879 d_telldirproto='$d_telldirproto'
20880 d_time='$d_time'
20881 d_times='$d_times'
20882 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20883 d_tm_tm_zone='$d_tm_tm_zone'
20884 d_tmpnam_r='$d_tmpnam_r'
20885 d_truncate='$d_truncate'
20886 d_ttyname_r='$d_ttyname_r'
20887 d_tzname='$d_tzname'
20888 d_u32align='$d_u32align'
20889 d_ualarm='$d_ualarm'
20890 d_umask='$d_umask'
20891 d_uname='$d_uname'
20892 d_union_semun='$d_union_semun'
20893 d_unordered='$d_unordered'
20894 d_usleep='$d_usleep'
20895 d_usleepproto='$d_usleepproto'
20896 d_ustat='$d_ustat'
20897 d_vendorarch='$d_vendorarch'
20898 d_vendorbin='$d_vendorbin'
20899 d_vendorlib='$d_vendorlib'
20900 d_vendorscript='$d_vendorscript'
20901 d_vfork='$d_vfork'
20902 d_void_closedir='$d_void_closedir'
20903 d_voidsig='$d_voidsig'
20904 d_voidtty='$d_voidtty'
20905 d_volatile='$d_volatile'
20906 d_vprintf='$d_vprintf'
20907 d_wait4='$d_wait4'
20908 d_waitpid='$d_waitpid'
20909 d_wcstombs='$d_wcstombs'
20910 d_wctomb='$d_wctomb'
20911 d_writev='$d_writev'
20912 d_xenix='$d_xenix'
20913 date='$date'
20914 db_hashtype='$db_hashtype'
20915 db_prefixtype='$db_prefixtype'
20916 db_version_major='$db_version_major'
20917 db_version_minor='$db_version_minor'
20918 db_version_patch='$db_version_patch'
20919 defvoidused='$defvoidused'
20920 direntrytype='$direntrytype'
20921 dlext='$dlext'
20922 dlsrc='$dlsrc'
20923 doublesize='$doublesize'
20924 drand01='$drand01'
20925 drand48_r_proto='$drand48_r_proto'
20926 dynamic_ext='$dynamic_ext'
20927 eagain='$eagain'
20928 ebcdic='$ebcdic'
20929 echo='$echo'
20930 egrep='$egrep'
20931 emacs='$emacs'
20932 endgrent_r_proto='$endgrent_r_proto'
20933 endhostent_r_proto='$endhostent_r_proto'
20934 endnetent_r_proto='$endnetent_r_proto'
20935 endprotoent_r_proto='$endprotoent_r_proto'
20936 endpwent_r_proto='$endpwent_r_proto'
20937 endservent_r_proto='$endservent_r_proto'
20938 eunicefix='$eunicefix'
20939 exe_ext='$exe_ext'
20940 expr='$expr'
20941 extensions='$extensions'
20942 extras='$extras'
20943 fflushNULL='$fflushNULL'
20944 fflushall='$fflushall'
20945 find='$find'
20946 firstmakefile='$firstmakefile'
20947 flex='$flex'
20948 fpossize='$fpossize'
20949 fpostype='$fpostype'
20950 freetype='$freetype'
20951 from='$from'
20952 full_ar='$full_ar'
20953 full_csh='$full_csh'
20954 full_sed='$full_sed'
20955 gccansipedantic='$gccansipedantic'
20956 gccosandvers='$gccosandvers'
20957 gccversion='$gccversion'
20958 getgrent_r_proto='$getgrent_r_proto'
20959 getgrgid_r_proto='$getgrgid_r_proto'
20960 getgrnam_r_proto='$getgrnam_r_proto'
20961 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20962 gethostbyname_r_proto='$gethostbyname_r_proto'
20963 gethostent_r_proto='$gethostent_r_proto'
20964 getlogin_r_proto='$getlogin_r_proto'
20965 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20966 getnetbyname_r_proto='$getnetbyname_r_proto'
20967 getnetent_r_proto='$getnetent_r_proto'
20968 getprotobyname_r_proto='$getprotobyname_r_proto'
20969 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20970 getprotoent_r_proto='$getprotoent_r_proto'
20971 getpwent_r_proto='$getpwent_r_proto'
20972 getpwnam_r_proto='$getpwnam_r_proto'
20973 getpwuid_r_proto='$getpwuid_r_proto'
20974 getservbyname_r_proto='$getservbyname_r_proto'
20975 getservbyport_r_proto='$getservbyport_r_proto'
20976 getservent_r_proto='$getservent_r_proto'
20977 getspnam_r_proto='$getspnam_r_proto'
20978 gidformat='$gidformat'
20979 gidsign='$gidsign'
20980 gidsize='$gidsize'
20981 gidtype='$gidtype'
20982 glibpth='$glibpth'
20983 gmake='$gmake'
20984 gmtime_r_proto='$gmtime_r_proto'
20985 gnulibc_version='$gnulibc_version'
20986 grep='$grep'
20987 groupcat='$groupcat'
20988 groupstype='$groupstype'
20989 gzip='$gzip'
20990 h_fcntl='$h_fcntl'
20991 h_sysfile='$h_sysfile'
20992 hint='$hint'
20993 hostcat='$hostcat'
20994 html1dir='$html1dir'
20995 html1direxp='$html1direxp'
20996 html3dir='$html3dir'
20997 html3direxp='$html3direxp'
20998 i16size='$i16size'
20999 i16type='$i16type'
21000 i32size='$i32size'
21001 i32type='$i32type'
21002 i64size='$i64size'
21003 i64type='$i64type'
21004 i8size='$i8size'
21005 i8type='$i8type'
21006 i_arpainet='$i_arpainet'
21007 i_bsdioctl='$i_bsdioctl'
21008 i_crypt='$i_crypt'
21009 i_db='$i_db'
21010 i_dbm='$i_dbm'
21011 i_dirent='$i_dirent'
21012 i_dld='$i_dld'
21013 i_dlfcn='$i_dlfcn'
21014 i_fcntl='$i_fcntl'
21015 i_float='$i_float'
21016 i_fp='$i_fp'
21017 i_fp_class='$i_fp_class'
21018 i_gdbm='$i_gdbm'
21019 i_grp='$i_grp'
21020 i_ieeefp='$i_ieeefp'
21021 i_inttypes='$i_inttypes'
21022 i_langinfo='$i_langinfo'
21023 i_libutil='$i_libutil'
21024 i_limits='$i_limits'
21025 i_locale='$i_locale'
21026 i_machcthr='$i_machcthr'
21027 i_malloc='$i_malloc'
21028 i_math='$i_math'
21029 i_memory='$i_memory'
21030 i_mntent='$i_mntent'
21031 i_ndbm='$i_ndbm'
21032 i_netdb='$i_netdb'
21033 i_neterrno='$i_neterrno'
21034 i_netinettcp='$i_netinettcp'
21035 i_niin='$i_niin'
21036 i_poll='$i_poll'
21037 i_prot='$i_prot'
21038 i_pthread='$i_pthread'
21039 i_pwd='$i_pwd'
21040 i_rpcsvcdbm='$i_rpcsvcdbm'
21041 i_sfio='$i_sfio'
21042 i_sgtty='$i_sgtty'
21043 i_shadow='$i_shadow'
21044 i_socks='$i_socks'
21045 i_stdarg='$i_stdarg'
21046 i_stddef='$i_stddef'
21047 i_stdlib='$i_stdlib'
21048 i_string='$i_string'
21049 i_sunmath='$i_sunmath'
21050 i_sysaccess='$i_sysaccess'
21051 i_sysdir='$i_sysdir'
21052 i_sysfile='$i_sysfile'
21053 i_sysfilio='$i_sysfilio'
21054 i_sysin='$i_sysin'
21055 i_sysioctl='$i_sysioctl'
21056 i_syslog='$i_syslog'
21057 i_sysmman='$i_sysmman'
21058 i_sysmode='$i_sysmode'
21059 i_sysmount='$i_sysmount'
21060 i_sysndir='$i_sysndir'
21061 i_sysparam='$i_sysparam'
21062 i_sysresrc='$i_sysresrc'
21063 i_syssecrt='$i_syssecrt'
21064 i_sysselct='$i_sysselct'
21065 i_syssockio='$i_syssockio'
21066 i_sysstat='$i_sysstat'
21067 i_sysstatfs='$i_sysstatfs'
21068 i_sysstatvfs='$i_sysstatvfs'
21069 i_systime='$i_systime'
21070 i_systimek='$i_systimek'
21071 i_systimes='$i_systimes'
21072 i_systypes='$i_systypes'
21073 i_sysuio='$i_sysuio'
21074 i_sysun='$i_sysun'
21075 i_sysutsname='$i_sysutsname'
21076 i_sysvfs='$i_sysvfs'
21077 i_syswait='$i_syswait'
21078 i_termio='$i_termio'
21079 i_termios='$i_termios'
21080 i_time='$i_time'
21081 i_unistd='$i_unistd'
21082 i_ustat='$i_ustat'
21083 i_utime='$i_utime'
21084 i_values='$i_values'
21085 i_varargs='$i_varargs'
21086 i_varhdr='$i_varhdr'
21087 i_vfork='$i_vfork'
21088 ignore_versioned_solibs='$ignore_versioned_solibs'
21089 inc_version_list='$inc_version_list'
21090 inc_version_list_init='$inc_version_list_init'
21091 incpath='$incpath'
21092 inews='$inews'
21093 installarchlib='$installarchlib'
21094 installbin='$installbin'
21095 installhtml1dir='$installhtml1dir'
21096 installhtml3dir='$installhtml3dir'
21097 installman1dir='$installman1dir'
21098 installman3dir='$installman3dir'
21099 installprefix='$installprefix'
21100 installprefixexp='$installprefixexp'
21101 installprivlib='$installprivlib'
21102 installscript='$installscript'
21103 installsitearch='$installsitearch'
21104 installsitebin='$installsitebin'
21105 installsitehtml1dir='$installsitehtml1dir'
21106 installsitehtml3dir='$installsitehtml3dir'
21107 installsitelib='$installsitelib'
21108 installsiteman1dir='$installsiteman1dir'
21109 installsiteman3dir='$installsiteman3dir'
21110 installsitescript='$installsitescript'
21111 installstyle='$installstyle'
21112 installusrbinperl='$installusrbinperl'
21113 installvendorarch='$installvendorarch'
21114 installvendorbin='$installvendorbin'
21115 installvendorhtml1dir='$installvendorhtml1dir'
21116 installvendorhtml3dir='$installvendorhtml3dir'
21117 installvendorlib='$installvendorlib'
21118 installvendorman1dir='$installvendorman1dir'
21119 installvendorman3dir='$installvendorman3dir'
21120 installvendorscript='$installvendorscript'
21121 intsize='$intsize'
21122 issymlink='$issymlink'
21123 ivdformat='$ivdformat'
21124 ivsize='$ivsize'
21125 ivtype='$ivtype'
21126 known_extensions='$known_extensions'
21127 ksh='$ksh'
21128 ld='$ld'
21129 lddlflags='$lddlflags'
21130 ldflags='$ldflags'
21131 ldflags_uselargefiles='$ldflags_uselargefiles'
21132 ldlibpthname='$ldlibpthname'
21133 less='$less'
21134 lib_ext='$lib_ext'
21135 libc='$libc'
21136 libperl='$libperl'
21137 libpth='$libpth'
21138 libs='$libs'
21139 libsdirs='$libsdirs'
21140 libsfiles='$libsfiles'
21141 libsfound='$libsfound'
21142 libspath='$libspath'
21143 libswanted='$libswanted'
21144 libswanted_uselargefiles='$libswanted_uselargefiles'
21145 line='$line'
21146 lint='$lint'
21147 lkflags='$lkflags'
21148 ln='$ln'
21149 lns='$lns'
21150 localtime_r_proto='$localtime_r_proto'
21151 locincpth='$locincpth'
21152 loclibpth='$loclibpth'
21153 longdblsize='$longdblsize'
21154 longlongsize='$longlongsize'
21155 longsize='$longsize'
21156 lp='$lp'
21157 lpr='$lpr'
21158 ls='$ls'
21159 lseeksize='$lseeksize'
21160 lseektype='$lseektype'
21161 mail='$mail'
21162 mailx='$mailx'
21163 make='$make'
21164 make_set_make='$make_set_make'
21165 mallocobj='$mallocobj'
21166 mallocsrc='$mallocsrc'
21167 malloctype='$malloctype'
21168 man1dir='$man1dir'
21169 man1direxp='$man1direxp'
21170 man1ext='$man1ext'
21171 man3dir='$man3dir'
21172 man3direxp='$man3direxp'
21173 man3ext='$man3ext'
21174 mips_type='$mips_type'
21175 mistrustnm='$mistrustnm'
21176 mkdir='$mkdir'
21177 mmaptype='$mmaptype'
21178 modetype='$modetype'
21179 more='$more'
21180 multiarch='$multiarch'
21181 mv='$mv'
21182 myarchname='$myarchname'
21183 mydomain='$mydomain'
21184 myhostname='$myhostname'
21185 myuname='$myuname'
21186 n='$n'
21187 need_va_copy='$need_va_copy'
21188 netdb_hlen_type='$netdb_hlen_type'
21189 netdb_host_type='$netdb_host_type'
21190 netdb_name_type='$netdb_name_type'
21191 netdb_net_type='$netdb_net_type'
21192 nm='$nm'
21193 nm_opt='$nm_opt'
21194 nm_so_opt='$nm_so_opt'
21195 nonxs_ext='$nonxs_ext'
21196 nroff='$nroff'
21197 nvEUformat='$nvEUformat'
21198 nvFUformat='$nvFUformat'
21199 nvGUformat='$nvGUformat'
21200 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21201 nveformat='$nveformat'
21202 nvfformat='$nvfformat'
21203 nvgformat='$nvgformat'
21204 nvsize='$nvsize'
21205 nvtype='$nvtype'
21206 o_nonblock='$o_nonblock'
21207 obj_ext='$obj_ext'
21208 old_pthread_create_joinable='$old_pthread_create_joinable'
21209 optimize='$optimize'
21210 orderlib='$orderlib'
21211 osname='$osname'
21212 osvers='$osvers'
21213 otherlibdirs='$otherlibdirs'
21214 package='$package'
21215 pager='$pager'
21216 passcat='$passcat'
21217 patchlevel='$patchlevel'
21218 path_sep='$path_sep'
21219 perl5='$perl5'
21220 perl='$perl'
21221 perl_patchlevel='$perl_patchlevel'
21222 perladmin='$perladmin'
21223 perllibs='$perllibs'
21224 perlpath='$perlpath'
21225 pg='$pg'
21226 phostname='$phostname'
21227 pidtype='$pidtype'
21228 plibpth='$plibpth'
21229 pmake='$pmake'
21230 pr='$pr'
21231 prefix='$prefix'
21232 prefixexp='$prefixexp'
21233 privlib='$privlib'
21234 privlibexp='$privlibexp'
21235 procselfexe='$procselfexe'
21236 prototype='$prototype'
21237 ptrsize='$ptrsize'
21238 quadkind='$quadkind'
21239 quadtype='$quadtype'
21240 randbits='$randbits'
21241 randfunc='$randfunc'
21242 random_r_proto='$random_r_proto'
21243 randseedtype='$randseedtype'
21244 ranlib='$ranlib'
21245 rd_nodata='$rd_nodata'
21246 readdir64_r_proto='$readdir64_r_proto'
21247 readdir_r_proto='$readdir_r_proto'
21248 revision='$revision'
21249 rm='$rm'
21250 rmail='$rmail'
21251 run='$run'
21252 runnm='$runnm'
21253 sPRIEUldbl='$sPRIEUldbl'
21254 sPRIFUldbl='$sPRIFUldbl'
21255 sPRIGUldbl='$sPRIGUldbl'
21256 sPRIXU64='$sPRIXU64'
21257 sPRId64='$sPRId64'
21258 sPRIeldbl='$sPRIeldbl'
21259 sPRIfldbl='$sPRIfldbl'
21260 sPRIgldbl='$sPRIgldbl'
21261 sPRIi64='$sPRIi64'
21262 sPRIo64='$sPRIo64'
21263 sPRIu64='$sPRIu64'
21264 sPRIx64='$sPRIx64'
21265 sSCNfldbl='$sSCNfldbl'
21266 sched_yield='$sched_yield'
21267 scriptdir='$scriptdir'
21268 scriptdirexp='$scriptdirexp'
21269 sed='$sed'
21270 seedfunc='$seedfunc'
21271 selectminbits='$selectminbits'
21272 selecttype='$selecttype'
21273 sendmail='$sendmail'
21274 setgrent_r_proto='$setgrent_r_proto'
21275 sethostent_r_proto='$sethostent_r_proto'
21276 setlocale_r_proto='$setlocale_r_proto'
21277 setnetent_r_proto='$setnetent_r_proto'
21278 setprotoent_r_proto='$setprotoent_r_proto'
21279 setpwent_r_proto='$setpwent_r_proto'
21280 setservent_r_proto='$setservent_r_proto'
21281 sh='$sh'
21282 shar='$shar'
21283 sharpbang='$sharpbang'
21284 shmattype='$shmattype'
21285 shortsize='$shortsize'
21286 shrpenv='$shrpenv'
21287 shsharp='$shsharp'
21288 sig_count='$sig_count'
21289 sig_name='$sig_name'
21290 sig_name_init='$sig_name_init'
21291 sig_num='$sig_num'
21292 sig_num_init='$sig_num_init'
21293 sig_size='$sig_size'
21294 signal_t='$signal_t'
21295 sitearch='$sitearch'
21296 sitearchexp='$sitearchexp'
21297 sitebin='$sitebin'
21298 sitebinexp='$sitebinexp'
21299 sitehtml1dir='$sitehtml1dir'
21300 sitehtml1direxp='$sitehtml1direxp'
21301 sitehtml3dir='$sitehtml3dir'
21302 sitehtml3direxp='$sitehtml3direxp'
21303 sitelib='$sitelib'
21304 sitelib_stem='$sitelib_stem'
21305 sitelibexp='$sitelibexp'
21306 siteman1dir='$siteman1dir'
21307 siteman1direxp='$siteman1direxp'
21308 siteman3dir='$siteman3dir'
21309 siteman3direxp='$siteman3direxp'
21310 siteprefix='$siteprefix'
21311 siteprefixexp='$siteprefixexp'
21312 sitescript='$sitescript'
21313 sitescriptexp='$sitescriptexp'
21314 sizesize='$sizesize'
21315 sizetype='$sizetype'
21316 sleep='$sleep'
21317 smail='$smail'
21318 so='$so'
21319 sockethdr='$sockethdr'
21320 socketlib='$socketlib'
21321 socksizetype='$socksizetype'
21322 sort='$sort'
21323 spackage='$spackage'
21324 spitshell='$spitshell'
21325 srand48_r_proto='$srand48_r_proto'
21326 srandom_r_proto='$srandom_r_proto'
21327 src='$src'
21328 ssizetype='$ssizetype'
21329 startperl='$startperl'
21330 startsh='$startsh'
21331 static_ext='$static_ext'
21332 stdchar='$stdchar'
21333 stdio_base='$stdio_base'
21334 stdio_bufsiz='$stdio_bufsiz'
21335 stdio_cnt='$stdio_cnt'
21336 stdio_filbuf='$stdio_filbuf'
21337 stdio_ptr='$stdio_ptr'
21338 stdio_stream_array='$stdio_stream_array'
21339 strerror_r_proto='$strerror_r_proto'
21340 strings='$strings'
21341 submit='$submit'
21342 subversion='$subversion'
21343 sysman='$sysman'
21344 tail='$tail'
21345 tar='$tar'
21346 targetarch='$targetarch'
21347 tbl='$tbl'
21348 tee='$tee'
21349 test='$test'
21350 timeincl='$timeincl'
21351 timetype='$timetype'
21352 tmpnam_r_proto='$tmpnam_r_proto'
21353 to='$to'
21354 touch='$touch'
21355 tr='$tr'
21356 trnl='$trnl'
21357 troff='$troff'
21358 ttyname_r_proto='$ttyname_r_proto'
21359 u16size='$u16size'
21360 u16type='$u16type'
21361 u32size='$u32size'
21362 u32type='$u32type'
21363 u64size='$u64size'
21364 u64type='$u64type'
21365 u8size='$u8size'
21366 u8type='$u8type'
21367 uidformat='$uidformat'
21368 uidsign='$uidsign'
21369 uidsize='$uidsize'
21370 uidtype='$uidtype'
21371 uname='$uname'
21372 uniq='$uniq'
21373 uquadtype='$uquadtype'
21374 use5005threads='$use5005threads'
21375 use64bitall='$use64bitall'
21376 use64bitint='$use64bitint'
21377 usecrosscompile='$usecrosscompile'
21378 usedl='$usedl'
21379 usefaststdio='$usefaststdio'
21380 useithreads='$useithreads'
21381 uselargefiles='$uselargefiles'
21382 uselongdouble='$uselongdouble'
21383 usemallocwrap='$usemallocwrap'
21384 usemorebits='$usemorebits'
21385 usemultiplicity='$usemultiplicity'
21386 usemymalloc='$usemymalloc'
21387 usenm='$usenm'
21388 useopcode='$useopcode'
21389 useperlio='$useperlio'
21390 useposix='$useposix'
21391 usereentrant='$usereentrant'
21392 usesfio='$usesfio'
21393 useshrplib='$useshrplib'
21394 usesocks='$usesocks'
21395 usethreads='$usethreads'
21396 usevendorprefix='$usevendorprefix'
21397 usevfork='$usevfork'
21398 usrinc='$usrinc'
21399 uuname='$uuname'
21400 uvXUformat='$uvXUformat'
21401 uvoformat='$uvoformat'
21402 uvsize='$uvsize'
21403 uvtype='$uvtype'
21404 uvuformat='$uvuformat'
21405 uvxformat='$uvxformat'
21406 vendorarch='$vendorarch'
21407 vendorarchexp='$vendorarchexp'
21408 vendorbin='$vendorbin'
21409 vendorbinexp='$vendorbinexp'
21410 vendorhtml1dir='$vendorhtml1dir'
21411 vendorhtml1direxp='$vendorhtml1direxp'
21412 vendorhtml3dir='$vendorhtml3dir'
21413 vendorhtml3direxp='$vendorhtml3direxp'
21414 vendorlib='$vendorlib'
21415 vendorlib_stem='$vendorlib_stem'
21416 vendorlibexp='$vendorlibexp'
21417 vendorman1dir='$vendorman1dir'
21418 vendorman1direxp='$vendorman1direxp'
21419 vendorman3dir='$vendorman3dir'
21420 vendorman3direxp='$vendorman3direxp'
21421 vendorprefix='$vendorprefix'
21422 vendorprefixexp='$vendorprefixexp'
21423 vendorscript='$vendorscript'
21424 vendorscriptexp='$vendorscriptexp'
21425 version='$version'
21426 version_patchlevel_string='$version_patchlevel_string'
21427 versiononly='$versiononly'
21428 vi='$vi'
21429 voidflags='$voidflags'
21430 xlibpth='$xlibpth'
21431 yacc='$yacc'
21432 yaccflags='$yaccflags'
21433 zcat='$zcat'
21434 zip='$zip'
21435 EOT
21436
21437 : Add in command line options if available
21438 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21439
21440 : add special variables
21441 $test -f $src/patchlevel.h && \
21442 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21443 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21444 echo "PERL_CONFIG_SH=true" >>config.sh
21445
21446 : propagate old symbols
21447 if $test -f UU/config.sh; then
21448         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21449         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21450         $sort | $uniq -u >UU/oldsyms
21451         set X `cat UU/oldsyms`
21452         shift
21453         case $# in
21454         0) ;;
21455         *)
21456                 cat <<EOM
21457 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21458 EOM
21459                 echo "# Variables propagated from previous config.sh file." >>config.sh
21460                 for sym in `cat UU/oldsyms`; do
21461                         echo "    Propagating $hint variable "'$'"$sym..."
21462                         eval 'tmp="$'"${sym}"'"'
21463                         echo "$tmp" | \
21464                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21465                 done
21466                 ;;
21467         esac
21468 fi
21469
21470 : Finish up by extracting the .SH files
21471 case "$alldone" in
21472 exit)
21473         $rm -rf UU
21474         echo "Extraction done."
21475         exit 0
21476         ;;
21477 cont)
21478         ;;
21479 '')
21480         dflt=''
21481         nostick=true
21482         $cat <<EOM
21483
21484 If you'd like to make any changes to the config.sh file before I begin
21485 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21486
21487 EOM
21488         rp="Press return or use a shell escape to edit config.sh:"
21489         . UU/myread
21490         nostick=''
21491         case "$ans" in
21492         '') ;;
21493         *) : in case they cannot read
21494                 sh 1>&4 -c "$ans";;
21495         esac
21496         ;;
21497 esac
21498
21499 : if this fails, just run all the .SH files by hand
21500 . ./config.sh
21501
21502 echo " "
21503 exec 1>&4
21504 pwd=`pwd`
21505 . ./UU/extract
21506 cd "$pwd"
21507
21508 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21509         dflt=y
21510         case "$silent" in
21511         true) ;;
21512         *)
21513                 $cat <<EOM
21514
21515 Now you need to generate make dependencies by running "$make depend".
21516 You might prefer to run it in background: "$make depend > makedepend.out &"
21517 It can take a while, so you might not want to run it right now.
21518
21519 EOM
21520                 ;;
21521         esac
21522         rp="Run $make depend now?"
21523         . UU/myread
21524         case "$ans" in
21525         y*)
21526                 $make depend && echo "Now you must run '$make'."
21527                 ;;
21528         *)
21529                 echo "You must run '$make depend' then '$make'."
21530                 ;;
21531         esac
21532 elif test -f [Mm]akefile; then
21533         echo " "
21534         echo "Now you must run a $make."
21535 else
21536         echo "Configure done."
21537 fi
21538
21539 if $test -f Policy.sh; then
21540     $cat <<EOM
21541
21542 If you compile $package on a different machine or from a different object
21543 directory, copy the Policy.sh file from this object directory to the
21544 new one before you run Configure -- this will help you with most of
21545 the policy defaults.
21546
21547 EOM
21548 fi
21549 if $test -f config.msg; then
21550     echo "Hmm.  I also noted the following information while running:"
21551     echo " "
21552     $cat config.msg >&4
21553     $rm -f config.msg
21554 fi
21555 $rm -f kit*isdone ark*isdone
21556 $rm -rf UU
21557
21558 : End of Configure
21559