Make usemallocwrap a Configure-time question. Default is yes for
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Thu Feb 26 10:02:07 MET 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 'I' and 'J'
2879         # (0xc9 and 0xd1), therefore that is a nice testing point.
2880         if test "X$up" = X -o "X$low" = X; then
2881             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2882             ij) up='[A-Z]'
2883                 low='[a-z]'
2884                 ;;
2885             esac
2886         fi
2887         if test "X$up" = X -o "X$low" = X; then
2888             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2889             ij) up='A-Z'
2890                 low='a-z'
2891                 ;;
2892             esac
2893         fi
2894         if test "X$up" = X -o "X$low" = X; then
2895             case "`echo IJ | od -x 2>/dev/null`" in
2896             *C9D1*|*c9d1*)
2897                 echo "Hey, this might be EBCDIC." >&4
2898                 if test "X$up" = X -o "X$low" = X; then
2899                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2900                     ij) up='[A-IJ-RS-Z]'
2901                         low='[a-ij-rs-z]'
2902                         ;;
2903                     esac
2904                 fi
2905                 if test "X$up" = X -o "X$low" = X; then
2906                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2907                     ij) up='A-IJ-RS-Z'
2908                         low='a-ij-rs-z'
2909                         ;;
2910                     esac
2911                 fi
2912                 ;;
2913             esac
2914         fi
2915 esac
2916 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2917 ij)
2918     echo "Using $up and $low to convert case." >&4
2919     ;;
2920 *)
2921     echo "I don't know how to translate letters from upper to lower case." >&4
2922     echo "Your tr is not acting any way I know of." >&4
2923     exit 1
2924     ;;
2925 esac
2926 : set up the translation script tr, must be called with ./tr of course
2927 cat >tr <<EOSC
2928 $startsh
2929 case "\$1\$2" in
2930 '[A-Z][a-z]') exec $tr '$up' '$low';;
2931 '[a-z][A-Z]') exec $tr '$low' '$up';;
2932 esac
2933 exec $tr "\$@"
2934 EOSC
2935 chmod +x tr
2936 $eunicefix tr
2937
2938 : Try to determine whether config.sh was made on this system
2939 case "$config_sh" in
2940 '')
2941 myuname=`$uname -a 2>/dev/null`
2942 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2943 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2944 # because the A-Z/a-z are not consecutive.
2945 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2946         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2947 newmyuname="$myuname"
2948 dflt=n
2949 case "$knowitall" in
2950 '')
2951         if test -f ../config.sh; then
2952                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2953                         eval "`grep myuname= ../config.sh`"
2954                 fi
2955                 if test "X$myuname" = "X$newmyuname"; then
2956                         dflt=y
2957                 fi
2958         fi
2959         ;;
2960 *) dflt=y;;
2961 esac
2962
2963 : Get old answers from old config file if Configure was run on the
2964 : same system, otherwise use the hints.
2965 hint=default
2966 cd ..
2967 if test -f config.sh; then
2968         echo " "
2969         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2970         . UU/myread
2971         case "$ans" in
2972         n*|N*) echo "OK, I'll ignore it."
2973                 mv config.sh config.sh.old
2974                 myuname="$newmyuname"
2975                 ;;
2976         *)  echo "Fetching default answers from your old config.sh file..." >&4
2977                 tmp_n="$n"
2978                 tmp_c="$c"
2979                 tmp_sh="$sh"
2980                 . ./config.sh
2981                 cp config.sh UU
2982                 n="$tmp_n"
2983                 c="$tmp_c"
2984                 : Older versions did not always set $sh.  Catch re-use of such
2985                 : an old config.sh.
2986                 case "$sh" in
2987                 '') sh="$tmp_sh" ;;
2988                 esac
2989                 hint=previous
2990                 ;;
2991         esac
2992 fi
2993 . ./UU/checkcc
2994 if test ! -f config.sh; then
2995         $cat <<EOM
2996
2997 First time through, eh?  I have some defaults handy for some systems
2998 that need some extra help getting the Configure answers right:
2999
3000 EOM
3001         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3002         dflt=''
3003         : Half the following guesses are probably wrong... If you have better
3004         : tests or hints, please send them to perlbug@perl.org
3005         : The metaconfig authors would also appreciate a copy...
3006         $test -f /irix && osname=irix
3007         $test -f /xenix && osname=sco_xenix
3008         $test -f /dynix && osname=dynix
3009         $test -f /dnix && osname=dnix
3010         $test -f /lynx.os && osname=lynxos
3011         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3012         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3013         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3014         $test -f /bin/mips && /bin/mips && osname=mips
3015         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3016                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3017         $test -d /usr/apollo/bin && osname=apollo
3018         $test -f /etc/saf/_sactab && osname=svr4
3019         $test -d /usr/include/minix && osname=minix
3020         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3021         if $test -d /MachTen -o -d /MachTen_Folder; then
3022                 osname=machten
3023                 if $test -x /sbin/version; then
3024                         osvers=`/sbin/version | $awk '{print $2}' |
3025                         $sed -e 's/[A-Za-z]$//'`
3026                 elif $test -x /usr/etc/version; then
3027                         osvers=`/usr/etc/version | $awk '{print $2}' |
3028                         $sed -e 's/[A-Za-z]$//'`
3029                 else
3030                         osvers="$2.$3"
3031                 fi
3032         fi
3033
3034         $test -f /sys/posix.dll &&
3035                 $test -f /usr/bin/what &&
3036                 set X `/usr/bin/what /sys/posix.dll` &&
3037                 $test "$3" = UWIN &&
3038                 osname=uwin &&
3039                 osvers="$5"
3040
3041         if $test -f $uname; then
3042                 set X $myuname
3043                 shift
3044
3045                 case "$5" in
3046                 fps*) osname=fps ;;
3047                 mips*)
3048                         case "$4" in
3049                         umips) osname=umips ;;
3050                         *) osname=mips ;;
3051                         esac;;
3052                 [23]100) osname=mips ;;
3053                 next*) osname=next ;;
3054                 i386*)
3055                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3056                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3057                                 osname='sco'
3058                                 osvers=$tmp
3059                         elif $test -f /etc/kconfig; then
3060                                 osname=isc
3061                                 if test "$lns" = "$ln -s"; then
3062                                         osvers=4
3063                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3064                                         osvers=3
3065                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3066                                         osvers=2
3067                                 fi
3068                         fi
3069                         tmp=''
3070                         ;;
3071                 pc*)
3072                         if test -n "$DJGPP"; then
3073                                 osname=dos
3074                                 osvers=djgpp
3075                         fi
3076                         ;;
3077                 esac
3078
3079                 case "$1" in
3080                 aix) osname=aix
3081                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3082                         case "$tmp" in
3083                         'not found') osvers="$4"."$3" ;;
3084                         '<3240'|'<>3240') osvers=3.2.0 ;;
3085                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3086                         '=3250'|'>3250') osvers=3.2.5 ;;
3087                         *) osvers=$tmp;;
3088                         esac
3089                         ;;
3090                 bsd386) osname=bsd386
3091                         osvers=`$uname -r`
3092                         ;;
3093                 cygwin*) osname=cygwin
3094                         osvers="$3"
3095                         ;;
3096                 *dc.osx) osname=dcosx
3097                         osvers="$3"
3098                         ;;
3099                 dnix) osname=dnix
3100                         osvers="$3"
3101                         ;;
3102                 domainos) osname=apollo
3103                         osvers="$3"
3104                         ;;
3105                 dgux)   osname=dgux 
3106                         osvers="$3"
3107                         ;;
3108                 dynixptx*) osname=dynixptx
3109                         osvers=`echo "$4"|sed 's/^v//'`
3110                         ;;
3111                 freebsd) osname=freebsd 
3112                         osvers="$3" ;;
3113                 genix)  osname=genix ;;
3114                 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 cannot 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 : determine whether to use malloc wrapping
6263 echo " "
6264 case "$usemallocwrap" in
6265 [yY]*|true|$define)     dflt='y' ;;
6266 [nN]*|false|$undef)     dflt='n' ;;
6267 *)      case "$usedevel" in
6268         [yY]*|true|$define)     dflt='y' ;;
6269         *) dflt='n' ;;
6270         esac
6271         ;;
6272 esac
6273 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6274 . ./myread
6275 usemallocwrap="$ans"
6276 case "$ans" in
6277 y*|true)
6278         usemallocwrap="$define" ;;
6279 *)
6280         usemallocwrap="$undef" ;;
6281 esac
6282
6283 : determine which malloc to compile in
6284 echo " "
6285 case "$usemymalloc" in
6286 [yY]*|true|$define)     dflt='y' ;;
6287 [nN]*|false|$undef)     dflt='n' ;;
6288 *)      case "$ptrsize" in
6289         4) dflt='y' ;;
6290         *) dflt='n' ;;
6291         esac
6292         ;;
6293 esac
6294 rp="Do you wish to attempt to use the malloc that comes with $package?"
6295 . ./myread
6296 usemymalloc="$ans"
6297 case "$ans" in
6298 y*|true)
6299         usemymalloc='y'
6300         mallocsrc='malloc.c'
6301         mallocobj="malloc$_o"
6302         d_mymalloc="$define"
6303         case "$libs" in
6304         *-lmalloc*)
6305                 : Remove malloc from list of libraries to use
6306                 echo "Removing unneeded -lmalloc from library list" >&4
6307                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6308                 shift
6309                 libs="$*"
6310                 echo "libs = $libs" >&4
6311                 ;;
6312         esac
6313         ;;
6314 *)
6315         usemymalloc='n'
6316         mallocsrc=''
6317         mallocobj=''
6318         d_mymalloc="$undef"
6319         ;;
6320 esac
6321
6322 : compute the return types of malloc and free
6323 echo " "
6324 $cat >malloc.c <<END
6325 #$i_malloc I_MALLOC
6326 #$i_stdlib I_STDLIB
6327 #include <stdio.h>
6328 #include <sys/types.h>
6329 #ifdef I_MALLOC
6330 #include <malloc.h>
6331 #endif
6332 #ifdef I_STDLIB
6333 #include <stdlib.h>
6334 #endif
6335 #ifdef TRY_MALLOC
6336 void *malloc();
6337 #endif
6338 #ifdef TRY_FREE
6339 void free();
6340 #endif
6341 END
6342 case "$malloctype" in
6343 '')
6344         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6345                 malloctype='void *'
6346         else
6347                 malloctype='char *'
6348         fi
6349         ;;
6350 esac
6351 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6352
6353 case "$freetype" in
6354 '')
6355         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6356                 freetype='void'
6357         else
6358                 freetype='int'
6359         fi
6360         ;;
6361 esac
6362 echo "Your system uses $freetype free(), it would seem." >&4
6363 $rm -f malloc.[co]
6364 $cat <<EOM
6365
6366 After $package is installed, you may wish to install various
6367 add-on modules and utilities.  Typically, these add-ons will
6368 be installed under $prefix with the rest
6369 of this package.  However, you may wish to install such add-ons
6370 elsewhere under a different prefix.
6371
6372 If you do not wish to put everything under a single prefix, that's
6373 ok.  You will be prompted for the individual locations; this siteprefix
6374 is only used to suggest the defaults.
6375
6376 The default should be fine for most people.
6377
6378 EOM
6379 fn=d~+
6380 rp='Installation prefix to use for add-on modules and utilities?'
6381 : XXX Here might be another good place for an installstyle setting.
6382 case "$siteprefix" in
6383 '') dflt=$prefix ;;
6384 *)  dflt=$siteprefix ;;
6385 esac
6386 . ./getfile
6387 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6388 oldsiteprefix=''
6389 case "$siteprefix" in
6390 '') ;;
6391 *)      case "$ans" in
6392         "$prefix") ;;
6393         *) oldsiteprefix="$prefix";;
6394         esac
6395         ;;
6396 esac
6397 siteprefix="$ans"
6398 siteprefixexp="$ansexp"
6399
6400 : determine where site specific libraries go.
6401 : Usual default is /usr/local/lib/perl5/site_perl/$version
6402 : The default "style" setting is made in installstyle.U
6403 : XXX No longer works with Prefixit stuff.
6404 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6405 case "$sitelib" in
6406 '') case "$installstyle" in
6407         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6408         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6409         esac
6410         ;;
6411 *)      dflt="$sitelib"
6412         ;;
6413 esac
6414 $cat <<EOM
6415
6416 The installation process will create a directory for
6417 site-specific extensions and modules.  Most users find it convenient
6418 to place all site-specific files in this directory rather than in the
6419 main distribution directory.
6420
6421 EOM
6422 fn=d~+
6423 rp='Pathname for the site-specific library files?'
6424 . ./getfile
6425 sitelib="$ans"
6426 sitelibexp="$ansexp"
6427 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6428 : Change installation prefix, if necessary.
6429 if $test X"$prefix" != X"$installprefix"; then
6430         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6431 else
6432         installsitelib="$sitelibexp"
6433 fi
6434
6435 : determine where site specific architecture-dependent libraries go.
6436 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6437 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6438 : sitelib may have an optional trailing /share.
6439 case "$sitearch" in
6440 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6441         dflt="$dflt/$archname"
6442         ;;
6443 *)      dflt="$sitearch"
6444         ;;
6445 esac
6446 set sitearch sitearch none
6447 eval $prefixit
6448 $cat <<EOM
6449
6450 The installation process will also create a directory for
6451 architecture-dependent site-specific extensions and modules.
6452
6453 EOM
6454 fn=d~+
6455 rp='Pathname for the site-specific architecture-dependent library files?'
6456 . ./getfile
6457 sitearch="$ans"
6458 sitearchexp="$ansexp"
6459 : Change installation prefix, if necessary.
6460 if $test X"$prefix" != X"$installprefix"; then
6461         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6462 else
6463         installsitearch="$sitearchexp"
6464 fi
6465
6466 $cat <<EOM
6467
6468 The installation process will also create a directory for
6469 vendor-supplied add-ons.  Vendors who supply perl with their system
6470 may find it convenient to place all vendor-supplied files in this
6471 directory rather than in the main distribution directory.  This will
6472 ease upgrades between binary-compatible maintenance versions of perl.
6473
6474 Of course you may also use these directories in whatever way you see
6475 fit.  For example, you might use them to access modules shared over a
6476 company-wide network.
6477
6478 The default answer should be fine for most people.
6479 This causes further questions about vendor add-ons to be skipped
6480 and no vendor-specific directories will be configured for perl.
6481
6482 EOM
6483 rp='Do you want to configure vendor-specific add-on directories?'
6484 case "$usevendorprefix" in
6485 define|true|[yY]*) dflt=y ;;
6486 *)      : User may have set vendorprefix directly on Configure command line.
6487         case "$vendorprefix" in
6488         ''|' ') dflt=n ;;
6489         *)      dflt=y ;;
6490         esac
6491         ;;
6492 esac
6493 . ./myread
6494 case "$ans" in
6495 [yY]*)  fn=d~+
6496         rp='Installation prefix to use for vendor-supplied add-ons?'
6497         case "$vendorprefix" in
6498         '') dflt='' ;;
6499         *)  dflt=$vendorprefix ;;
6500         esac
6501         . ./getfile
6502         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6503         oldvendorprefix=''
6504         case "$vendorprefix" in
6505         '') ;;
6506         *)      case "$ans" in
6507                 "$prefix") ;;
6508                 *) oldvendorprefix="$prefix";;
6509                 esac
6510                 ;;
6511         esac
6512         usevendorprefix="$define"
6513         vendorprefix="$ans"
6514         vendorprefixexp="$ansexp"
6515         ;;
6516 *)      usevendorprefix="$undef"
6517         vendorprefix=''
6518         vendorprefixexp=''
6519         ;;
6520 esac
6521
6522 case "$vendorprefix" in
6523 '')     d_vendorlib="$undef"
6524         vendorlib=''
6525         vendorlibexp=''
6526         ;;
6527 *)      d_vendorlib="$define"
6528         : determine where vendor-supplied modules go.
6529         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6530         case "$vendorlib" in
6531         '')
6532                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6533                 case "$installstyle" in
6534                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6535                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6536                 esac
6537                 ;;
6538         *)      dflt="$vendorlib"
6539                 ;;
6540         esac
6541         fn=d~+
6542         rp='Pathname for the vendor-supplied library files?'
6543         . ./getfile
6544         vendorlib="$ans"
6545         vendorlibexp="$ansexp"
6546         ;;
6547 esac
6548 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6549 : Change installation prefix, if necessary.
6550 if $test X"$prefix" != X"$installprefix"; then
6551         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6552 else
6553         installvendorlib="$vendorlibexp"
6554 fi
6555
6556 case "$vendorprefix" in
6557 '')     d_vendorarch="$undef"
6558         vendorarch=''
6559         vendorarchexp=''
6560         ;;
6561 *)      d_vendorarch="$define"
6562         : determine where vendor-supplied architecture-dependent libraries go.
6563         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6564         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6565         : vendorlib may have an optional trailing /share.
6566         case "$vendorarch" in
6567         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6568                 dflt="$dflt/$archname"
6569                 ;;
6570         *)      dflt="$vendorarch" ;;
6571         esac
6572         fn=d~+
6573         rp='Pathname for vendor-supplied architecture-dependent files?'
6574         . ./getfile
6575         vendorarch="$ans"
6576         vendorarchexp="$ansexp"
6577         ;;
6578 esac
6579 : Change installation prefix, if necessary.
6580 if $test X"$prefix" != X"$installprefix"; then
6581         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6582 else
6583         installvendorarch="$vendorarchexp"
6584 fi
6585
6586 : Final catch-all directories to search
6587 $cat <<EOM
6588
6589 Lastly, you can have perl look in other directories for extensions and
6590 modules in addition to those already specified.
6591 These directories will be searched after 
6592         $sitearch 
6593         $sitelib 
6594 EOM
6595 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6596 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6597 echo ' '
6598 case "$otherlibdirs" in
6599 ''|' ') dflt='none' ;;
6600 *)      dflt="$otherlibdirs" ;;
6601 esac
6602 $cat <<EOM
6603 Enter a colon-separated set of extra paths to include in perl's @INC
6604 search path, or enter 'none' for no extra paths.
6605
6606 EOM
6607
6608 rp='Colon-separated list of additional directories for perl to search?'
6609 . ./myread
6610 case "$ans" in
6611 ' '|''|none)    otherlibdirs=' ' ;;     
6612 *)      otherlibdirs="$ans" ;;
6613 esac
6614 case "$otherlibdirs" in
6615 ' ') val=$undef ;;
6616 *)      val=$define ;;
6617 esac
6618 set d_perl_otherlibdirs
6619 eval $setvar
6620
6621 : Cruising for prototypes
6622 echo " "
6623 echo "Checking out function prototypes..." >&4
6624 $cat >prototype.c <<EOCP
6625 #$i_stdlib I_STDLIB
6626 #ifdef I_STDLIB
6627 #include <stdlib.h>
6628 #endif
6629 int main(int argc, char *argv[]) {
6630         exit(0);}
6631 EOCP
6632 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6633         echo "Your C compiler appears to support function prototypes."
6634         val="$define"
6635 else
6636         echo "Your C compiler doesn't seem to understand function prototypes."
6637         val="$undef"
6638 fi
6639 set prototype
6640 eval $setvar
6641 $rm -f prototype*
6642
6643 case "$prototype" in
6644 "$define") ;;
6645 *)      ansi2knr='ansi2knr'
6646         echo " "
6647         cat <<EOM >&4
6648
6649 $me:  FATAL ERROR:
6650 This version of $package can only be compiled by a compiler that 
6651 understands function prototypes.  Unfortunately, your C compiler 
6652         $cc $ccflags
6653 doesn't seem to understand them.  Sorry about that.
6654
6655 If GNU cc is available for your system, perhaps you could try that instead.  
6656
6657 Eventually, we hope to support building Perl with pre-ANSI compilers.
6658 If you would like to help in that effort, please contact <perlbug@perl.org>.
6659
6660 Aborting Configure now.
6661 EOM
6662         exit 2
6663         ;;
6664 esac
6665
6666 : determine where public executables go
6667 echo " "
6668 set dflt bin bin
6669 eval $prefixit
6670 fn=d~
6671 rp='Pathname where the public executables will reside?'
6672 . ./getfile
6673 if $test "X$ansexp" != "X$binexp"; then
6674         installbin=''
6675 fi
6676 bin="$ans"
6677 binexp="$ansexp"
6678 : Change installation prefix, if necessary.
6679 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6680 if $test X"$prefix" != X"$installprefix"; then
6681         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6682 else
6683         installbin="$binexp"
6684 fi
6685
6686 echo " "
6687 case "$extras" in
6688 '') dflt='n';;
6689 *) dflt='y';;
6690 esac
6691 cat <<EOM
6692 Perl can be built with extra modules or bundles of modules which
6693 will be fetched from the CPAN and installed alongside Perl.
6694
6695 Notice that you will need access to the CPAN; either via the Internet,
6696 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6697 be asked later to configure the CPAN.pm module which will in turn do
6698 the installation of the rest of the extra modules or bundles.)
6699
6700 Notice also that if the modules require any external software such as
6701 libraries and headers (the libz library and the zlib.h header for the
6702 Compress::Zlib module, for example) you MUST have any such software
6703 already installed, this configuration process will NOT install such
6704 things for you.
6705
6706 If this doesn't make any sense to you, just accept the default '$dflt'.
6707 EOM
6708 rp='Install any extra modules (y or n)?'
6709 . ./myread
6710 case "$ans" in
6711 y|Y)
6712         cat <<EOM
6713
6714 Please list any extra modules or bundles to be installed from CPAN,
6715 with spaces between the names.  The names can be in any format the
6716 'install' command of CPAN.pm will understand.  (Answer 'none',
6717 without the quotes, to install no extra modules or bundles.)
6718 EOM
6719         rp='Extras?'
6720         dflt="$extras"
6721         . ./myread
6722         extras="$ans"
6723 esac
6724 case "$extras" in
6725 ''|'none')
6726         val=''
6727         $rm -f ../extras.lst
6728         ;;
6729 *)      echo "(Saving the list of extras for later...)"
6730         echo "$extras" > ../extras.lst
6731         val="'$extras'"
6732         ;;
6733 esac
6734 set extras
6735 eval $setvar
6736 echo " "
6737
6738 : determine where html pages for programs go
6739 set html1dir html1dir none
6740 eval $prefixit
6741 $cat <<EOM
6742
6743 If you wish to install html files for programs in $spackage, indicate 
6744 the appropriate directory here.  To skip installing html files,
6745 answer "none".
6746 EOM
6747 case "$html1dir" in
6748 ''|none|$undef|' ') dflt=none ;;
6749 *) dflt=$html1dir ;;
6750 esac
6751 fn=dn+~
6752 rp="Directory for the main $spackage html pages?"
6753 . ./getfile
6754 html1dir="$ans"
6755 html1direxp="$ansexp"
6756 : Use ' ' for none so value is preserved next time through Configure
6757 $test X"$html1dir" = "X" && html1dir=' '
6758 : Change installation prefix, if necessary.
6759 if $test X"$prefix" != X"$installprefix"; then
6760         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6761 else
6762         installhtml1dir="$html1direxp"
6763 fi
6764
6765 : determine where html pages for libraries and modules go
6766 set html3dir html3dir none
6767 eval $prefixit
6768 $cat <<EOM
6769
6770 If you wish to install html files for modules associated with $spackage,
6771 indicate the appropriate directory here.  To skip installing html files,
6772 answer "none".
6773 EOM
6774 : There is no obvious default.  If they have specified html1dir, then
6775 : try to key off that, possibly changing .../html1 into .../html3.
6776 case "$html3dir" in
6777 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6778 *) dflt=$html3dir ;;
6779 esac
6780 fn=dn+~
6781 rp="Directory for the $spackage module html pages?"
6782 . ./getfile
6783 html3dir="$ans"
6784 html3direxp="$ansexp"
6785 : Use ' ' for none so value is preserved next time through Configure
6786 $test X"$html3dir" = "X" && html3dir=' '
6787 : Change installation prefix, if necessary.
6788 if $test X"$prefix" != X"$installprefix"; then
6789         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6790 else
6791         installhtml3dir="$html3direxp"
6792 fi
6793
6794 : Find perl5.005 or later.
6795 echo "Looking for a previously installed perl5.005 or later... "
6796 case "$perl5" in
6797 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6798                 : Check if this perl is recent and can load a simple module
6799                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6800                         perl5=$tdir/perl
6801                         break;
6802                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6803                         perl5=$tdir/perl5
6804                         break;
6805                 fi
6806         done
6807         ;;
6808 *)      perl5="$perl5"
6809         ;;
6810 esac
6811 case "$perl5" in
6812 '')     echo "None found.  That's ok.";;
6813 *)      echo "Using $perl5." ;;
6814 esac
6815
6816 : Determine list of previous versions to include in @INC
6817 $cat > getverlist <<EOPL
6818 #!$perl5 -w
6819 use File::Basename;
6820 \$api_versionstring = "$api_versionstring";
6821 \$version = "$version";
6822 \$stem = "$sitelib_stem";
6823 \$archname = "$archname";
6824 EOPL
6825         $cat >> getverlist <<'EOPL'
6826 # Can't have leading @ because metaconfig interprets it as a command!
6827 ;@inc_version_list=();
6828 # XXX Redo to do opendir/readdir? 
6829 if (-d $stem) {
6830     chdir($stem);
6831     ;@candidates = glob("5.*");
6832 }
6833 else {
6834     ;@candidates = ();
6835 }
6836
6837 # XXX ToDo:  These comparisons must be reworked when two-digit
6838 # subversions come along, so that 5.7.10 compares as greater than
6839 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6840 # widespread that we can use the built-in version vectors rather
6841 # than reinventing them here.  For 5.6.0, however, we must
6842 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6843 foreach $d (@candidates) {
6844     if ($d lt $version) {
6845         if ($d ge $api_versionstring) {
6846             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6847         }
6848         elsif ($d ge "5.005") {
6849             unshift(@inc_version_list, grep { -d } $d);
6850         }
6851     }
6852     else {
6853         # Skip newer version.  I.e. don't look in
6854         # 5.7.0 if we're installing 5.6.1.
6855     }
6856 }
6857
6858 if (@inc_version_list) {
6859     print join(' ', @inc_version_list);
6860 }
6861 else {
6862     # Blank space to preserve value for next Configure run.
6863     print " ";
6864 }
6865 EOPL
6866 chmod +x getverlist
6867 case "$inc_version_list" in
6868 '')     if test -x "$perl5$exe_ext"; then
6869                 dflt=`$perl5 getverlist`
6870         else
6871                 dflt='none'
6872         fi
6873         ;;
6874 $undef) dflt='none' ;;
6875 *)  eval dflt=\"$inc_version_list\" ;;
6876 esac
6877 case "$dflt" in
6878 ''|' ') dflt=none ;;
6879 esac
6880 case "$dflt" in
6881 5.005) dflt=none ;;
6882 esac
6883 $cat <<EOM
6884
6885 In order to ease the process of upgrading, this version of perl 
6886 can be configured to use modules built and installed with earlier 
6887 versions of perl that were installed under $prefix.  Specify here
6888 the list of earlier versions that this version of perl should check.
6889 If Configure detected no earlier versions of perl installed under
6890 $prefix, then the list will be empty.  Answer 'none' to tell perl
6891 to not search earlier versions.
6892
6893 The default should almost always be sensible, so if you're not sure,
6894 just accept the default.
6895 EOM
6896
6897 rp='List of earlier versions to include in @INC?'
6898 . ./myread
6899 case "$ans" in
6900 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6901 *) inc_version_list="$ans" ;;
6902 esac
6903 case "$inc_version_list" in
6904 ''|' ') 
6905         inc_version_list_init='0';;
6906 *)      inc_version_list_init=`echo $inc_version_list |
6907                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6908         ;;
6909 esac
6910 $rm -f getverlist
6911
6912 : determine whether to install perl also as /usr/bin/perl
6913
6914 echo " "
6915 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6916         $cat <<EOM
6917 Many scripts expect perl to be installed as /usr/bin/perl.
6918
6919 If you want to, I can install the perl you are about to compile
6920 as /usr/bin/perl (in addition to $bin/perl).
6921 EOM
6922         if test -f /usr/bin/perl; then
6923             $cat <<EOM
6924
6925 However, please note that because you already have a /usr/bin/perl,
6926 overwriting that with a new Perl would very probably cause problems.
6927 Therefore I'm assuming you don't want to do that (unless you insist).
6928
6929 EOM
6930             case "$installusrbinperl" in
6931             "$define"|[yY]*)    dflt='y';;
6932             *)                  dflt='n';;
6933             esac
6934         else
6935             $cat <<EOM
6936
6937 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6938
6939 EOM
6940             case "$installusrbinperl" in
6941             "$undef"|[nN]*)     dflt='n';;
6942             *)                  dflt='y';;
6943             esac
6944         fi
6945         rp="Do you want to install perl as /usr/bin/perl?"
6946         . ./myread
6947         case "$ans" in
6948         [yY]*)  val="$define";;
6949         *)      val="$undef" ;;
6950         esac
6951 else
6952         val="$undef"
6953 fi
6954 set installusrbinperl
6955 eval $setvar
6956
6957 echo " "
6958 echo "Checking for GNU C Library..." >&4
6959 cat >try.c <<'EOCP'
6960 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6961    alone are insufficient to distinguish different versions, such as
6962    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6963    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6964 */
6965 #include <stdio.h>
6966 int main(void)
6967 {
6968 #ifdef __GLIBC__
6969 #   ifdef __GLIBC_MINOR__
6970 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6971 #           include <gnu/libc-version.h>
6972             printf("%s\n",  gnu_get_libc_version());
6973 #       else
6974             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6975 #       endif
6976 #   else
6977         printf("%d\n",  __GLIBC__);
6978 #   endif
6979     return 0;
6980 #else
6981     return 1;
6982 #endif
6983 }
6984 EOCP
6985 set try
6986 if eval $compile_ok && $run ./try > glibc.ver; then
6987         val="$define"
6988         gnulibc_version=`$cat glibc.ver`
6989         echo "You are using the GNU C Library version $gnulibc_version"
6990 else
6991         val="$undef"
6992         gnulibc_version=''
6993         echo "You are not using the GNU C Library"
6994 fi
6995 $rm -f try try.* glibc.ver
6996 set d_gnulibc
6997 eval $setvar
6998
6999 : see if nm is to be used to determine whether a symbol is defined or not
7000 case "$usenm" in
7001 '')
7002         dflt=''
7003         case "$d_gnulibc" in
7004         "$define")
7005                 echo " "
7006                 echo "nm probably won't work on the GNU C Library." >&4
7007                 dflt=n
7008                 ;;
7009         esac
7010         case "$dflt" in
7011         '') 
7012                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7013                         echo " "
7014                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7015                         echo "'nm' won't be sufficient on this sytem." >&4
7016                         dflt=n
7017                 fi
7018                 ;;
7019         esac
7020         case "$dflt" in
7021         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7022                 if $test $dflt -gt 20; then
7023                         dflt=y
7024                 else
7025                         dflt=n
7026                 fi
7027                 ;;
7028         esac
7029         ;;
7030 *)
7031         case "$usenm" in
7032         true|$define) dflt=y;;
7033         *) dflt=n;;
7034         esac
7035         ;;
7036 esac
7037 $cat <<EOM
7038
7039 I can use $nm to extract the symbols from your C libraries. This
7040 is a time consuming task which may generate huge output on the disk (up
7041 to 3 megabytes) but that should make the symbols extraction faster. The
7042 alternative is to skip the 'nm' extraction part and to compile a small
7043 test program instead to determine whether each symbol is present. If
7044 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7045 this may be the best solution.
7046
7047 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7048
7049 EOM
7050 rp="Shall I use $nm to extract C symbols from the libraries?"
7051 . ./myread
7052 case "$ans" in
7053 [Nn]*) usenm=false;;
7054 *) usenm=true;;
7055 esac
7056
7057 runnm=$usenm
7058 case "$reuseval" in
7059 true) runnm=false;;
7060 esac
7061
7062 : nm options which may be necessary
7063 case "$nm_opt" in
7064 '') if $test -f /mach_boot; then
7065                 nm_opt=''       # Mach
7066         elif $test -d /usr/ccs/lib; then
7067                 nm_opt='-p'     # Solaris (and SunOS?)
7068         elif $test -f /dgux; then
7069                 nm_opt='-p'     # DG-UX
7070         elif $test -f /lib64/rld; then
7071                 nm_opt='-p'     # 64-bit Irix
7072         else
7073                 nm_opt=''
7074         fi;;
7075 esac
7076
7077 : nm options which may be necessary for shared libraries but illegal
7078 : for archive libraries.  Thank you, Linux.
7079 case "$nm_so_opt" in
7080 '')     case "$myuname" in
7081         *linux*)
7082                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7083                         nm_so_opt='--dynamic'
7084                 fi
7085                 ;;
7086         esac
7087         ;;
7088 esac
7089
7090 case "$runnm" in
7091 true)
7092 : get list of predefined functions in a handy place
7093 echo " "
7094 case "$libc" in
7095 '') libc=unknown
7096         case "$libs" in
7097         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7098         esac
7099         ;;
7100 esac
7101 case "$libs" in
7102 '') ;;
7103 *)  for thislib in $libs; do
7104         case "$thislib" in
7105         -lc|-lc_s)
7106                 : Handle C library specially below.
7107                 ;;
7108         -l*)
7109                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7110                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7111                         :
7112                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7113                         :
7114                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7115                         :
7116                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7117                         :
7118                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7119                         :
7120                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7121                         :
7122                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7123                         :
7124                 else
7125                         try=''
7126                 fi
7127                 libnames="$libnames $try"
7128                 ;;
7129         *) libnames="$libnames $thislib" ;;
7130         esac
7131         done
7132         ;;
7133 esac
7134 xxx=normal
7135 case "$libc" in
7136 unknown)
7137         set /lib/libc.$so
7138         for xxx in $libpth; do
7139                 $test -r $1 || set $xxx/libc.$so
7140                 : The messy sed command sorts on library version numbers.
7141                 $test -r $1 || \
7142                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7143                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7144                                 h
7145                                 s/[0-9][0-9]*/0000&/g
7146                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7147                                 G
7148                                 s/\n/ /' | \
7149                          $sort | $sed -e 's/^.* //'`
7150                 eval set \$$#
7151         done
7152         $test -r $1 || set /usr/ccs/lib/libc.$so
7153         $test -r $1 || set /lib/libsys_s$_a
7154         ;;
7155 *)
7156         set blurfl
7157         ;;
7158 esac
7159 if $test -r "$1"; then
7160         echo "Your (shared) C library seems to be in $1."
7161         libc="$1"
7162 elif $test -r /lib/libc && $test -r /lib/clib; then
7163         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7164         xxx=apollo
7165         libc='/lib/clib /lib/libc'
7166         if $test -r /lib/syslib; then
7167                 echo "(Your math library is in /lib/syslib.)"
7168                 libc="$libc /lib/syslib"
7169         fi
7170 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7171         echo "Your C library seems to be in $libc, as you said before."
7172 elif $test -r $incpath/usr/lib/libc$_a; then
7173         libc=$incpath/usr/lib/libc$_a;
7174         echo "Your C library seems to be in $libc.  That's fine."
7175 elif $test -r /lib/libc$_a; then
7176         libc=/lib/libc$_a;
7177         echo "Your C library seems to be in $libc.  You're normal."
7178 else
7179         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7180                 :
7181         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7182                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7183         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7184                 :
7185         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7186                 :
7187         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7188                 :
7189         else
7190                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7191         fi
7192         if $test -r "$tans"; then
7193                 echo "Your C library seems to be in $tans, of all places."
7194                 libc=$tans
7195         else
7196                 libc='blurfl'
7197         fi
7198 fi
7199 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7200         dflt="$libc"
7201         cat <<EOM
7202
7203 If the guess above is wrong (which it might be if you're using a strange
7204 compiler, or your machine supports multiple models), you can override it here.
7205
7206 EOM
7207 else
7208         dflt=''
7209         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7210         cat >&4 <<EOM
7211 I can't seem to find your C library.  I've looked in the following places:
7212
7213 EOM
7214         $sed 's/^/      /' libpath
7215         cat <<EOM
7216
7217 None of these seems to contain your C library. I need to get its name...
7218
7219 EOM
7220 fi
7221 fn=f
7222 rp='Where is your C library?'
7223 . ./getfile
7224 libc="$ans"
7225
7226 echo " "
7227 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7228 set X `cat libnames`
7229 shift
7230 xxx=files
7231 case $# in 1) xxx=file; esac
7232 echo "Extracting names from the following $xxx for later perusal:" >&4
7233 echo " "
7234 $sed 's/^/      /' libnames >&4
7235 echo " "
7236 $echo $n "This may take a while...$c" >&4
7237
7238 for file in $*; do
7239         case $file in
7240         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7241         *) $nm $nm_opt $file 2>/dev/null;;
7242         esac
7243 done >libc.tmp
7244
7245 $echo $n ".$c"
7246 $grep fprintf libc.tmp > libc.ptf
7247 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7248 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7249 xxx='[ADTSIW]'
7250 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7251         eval $xscan;\
7252         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7253                 eval $xrun
7254 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7255         eval $xscan;\
7256         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7257                 eval $xrun
7258 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7259         eval $xscan;\
7260         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7261                 eval $xrun
7262 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7263         eval $xscan;\
7264         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7265                 eval $xrun
7266 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7267         eval $xscan;\
7268         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7269                 eval $xrun
7270 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7271         eval $xscan;\
7272         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7273                 eval $xrun
7274 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7275                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7276         eval $xscan;\
7277         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7278                 eval $xrun
7279 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7280         eval $xscan;\
7281         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7282                 eval $xrun
7283 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7284         eval $xscan;\
7285         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7286                 eval $xrun
7287 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7288         eval $xscan;\
7289         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7290                 eval $xrun
7291 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7292         eval $xscan;\
7293         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7294                 eval $xrun
7295 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7296         eval $xscan;\
7297         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7298                 eval $xrun
7299 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7300         eval $xscan;\
7301         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7302                 eval $xrun
7303 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7304         eval $xscan;\
7305         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7306                 eval $xrun
7307 else
7308         $nm -p $* 2>/dev/null >libc.tmp
7309         $grep fprintf libc.tmp > libc.ptf
7310         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7311                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7312         then
7313                 nm_opt='-p'
7314                 eval $xrun
7315         else
7316                 echo " "
7317                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7318                 com=''
7319                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7320                         for thisname in $libnames $libc; do
7321                                 $ar t $thisname >>libc.tmp
7322                         done
7323                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7324                         echo "Ok." >&4
7325                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7326                         # Repeat libc to extract forwarders to DLL entries too
7327                         for thisname in $libnames $libc; do
7328                                 $ar tv $thisname >>libc.tmp
7329                                 # Revision 50 of EMX has bug in $ar.
7330                                 # it will not extract forwarders to DLL entries
7331                                 # Use emximp which will extract exactly them.
7332                                 emximp -o tmp.imp $thisname \
7333                                     2>/dev/null && \
7334                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7335                                     < tmp.imp >>libc.tmp
7336                                 $rm tmp.imp
7337                         done
7338                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7339                         echo "Ok." >&4
7340                 else
7341                         echo "$ar didn't seem to work right." >&4
7342                         echo "Maybe this is a Cray...trying bld instead..." >&4
7343                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7344                         then
7345                                 for thisname in $libnames; do
7346                                         bld t $libnames | \
7347                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7348                                         $ar t $thisname >>libc.tmp
7349                                 done
7350                                 echo "Ok." >&4
7351                         else
7352                                 echo "That didn't work either.  Giving up." >&4
7353                                 exit 1
7354                         fi
7355                 fi
7356         fi
7357 fi
7358 nm_extract="$com"
7359 case "$PASE" in
7360 define)
7361     echo " "
7362     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7363     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7364     ;;
7365 *)  if $test -f /lib/syscalls.exp; then
7366         echo " "
7367         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7368         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7369     fi
7370     ;;
7371 esac
7372 ;;
7373 esac
7374 $rm -f libnames libpath
7375
7376 : see if dld is available
7377 set dld.h i_dld
7378 eval $inhdr
7379
7380 : is a C symbol defined?
7381 csym='tlook=$1;
7382 case "$3" in
7383 -v) tf=libc.tmp; tdc="";;
7384 -a) tf=libc.tmp; tdc="[]";;
7385 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7386 esac;
7387 tx=yes;
7388 case "$reuseval-$4" in
7389 true-) ;;
7390 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7391 esac;
7392 case "$tx" in
7393 yes)
7394         tval=false;
7395         if $test "$runnm" = true; then
7396                 if $contains $tlook $tf >/dev/null 2>&1; then
7397                         tval=true;
7398                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7399                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7400                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7401                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7402                         $rm -f try$_exe try.c core core.* try.core;
7403                 fi;
7404         else
7405                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7406                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7407                 $rm -f try$_exe try.c;
7408         fi;
7409         ;;
7410 *)
7411         case "$tval" in
7412         $define) tval=true;;
7413         *) tval=false;;
7414         esac;
7415         ;;
7416 esac;
7417 eval "$2=$tval"'
7418
7419 : define an is-in-libc? function
7420 inlibc='echo " "; td=$define; tu=$undef;
7421 sym=$1; var=$2; eval "was=\$$2";
7422 tx=yes;
7423 case "$reuseval$was" in
7424 true) ;;
7425 true*) tx=no;;
7426 esac;
7427 case "$tx" in
7428 yes)
7429         set $sym tres -f;
7430         eval $csym;
7431         case "$tres" in
7432         true)
7433                 echo "$sym() found." >&4;
7434                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7435         *)
7436                 echo "$sym() NOT found." >&4;
7437                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7438         esac;;
7439 *)
7440         case "$was" in
7441         $define) echo "$sym() found." >&4;;
7442         *) echo "$sym() NOT found." >&4;;
7443         esac;;
7444 esac'
7445
7446 : see if dlopen exists
7447 xxx_runnm="$runnm"
7448 runnm=false
7449 set dlopen d_dlopen
7450 eval $inlibc
7451 runnm="$xxx_runnm"
7452
7453 : determine which dynamic loading, if any, to compile in
7454 echo " "
7455 dldir="ext/DynaLoader"
7456 case "$usedl" in
7457 $define|y|true)
7458         dflt='y'
7459         usedl="$define"
7460         ;;
7461 $undef|n|false)
7462         dflt='n'
7463         usedl="$undef"
7464         ;;
7465 *) 
7466         dflt='n'
7467         case "$d_dlopen" in
7468             $define) dflt='y' ;;
7469         esac
7470         case "$i_dld" in
7471             $define) dflt='y' ;;
7472         esac
7473         : Does a dl_xxx.xs file exist for this operating system
7474         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7475         ;;
7476 esac
7477 rp="Do you wish to use dynamic loading?"
7478 . ./myread
7479 usedl="$ans"
7480 case "$ans" in
7481 y*) usedl="$define"
7482         case "$dlsrc" in
7483         '')
7484                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7485                         dflt="$dldir/dl_${osname}.xs"
7486                 elif $test "$d_dlopen" = "$define" ; then
7487                         dflt="$dldir/dl_dlopen.xs"
7488                 elif $test "$i_dld" = "$define" ; then
7489                         dflt="$dldir/dl_dld.xs"
7490                 else
7491                         dflt=''
7492                 fi
7493                 ;;
7494         *)      dflt="$dldir/$dlsrc"
7495                 ;;
7496         esac
7497     echo "The following dynamic loading files are available:"
7498         : Can not go over to $dldir because getfile has path hard-coded in.
7499         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7500         rp="Source file to use for dynamic loading"
7501         fn="fne"
7502         gfpth="$src"
7503         . ./getfile
7504         usedl="$define"
7505         : emulate basename
7506         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7507
7508         $cat << EOM
7509
7510 Some systems may require passing special flags to $cc -c to
7511 compile modules that will be used to create a shared library.
7512 To use no flags, say "none".
7513
7514 EOM
7515     case "$cccdlflags" in
7516     '') case "$gccversion" in
7517                 '') case "$osname" in
7518                         hpux)   dflt='+z' ;;
7519                         next)   dflt='none' ;;
7520                         irix*)  dflt='-KPIC' ;;
7521                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7522                         sunos)  dflt='-pic' ;;
7523                         *)      dflt='none' ;;
7524                     esac
7525                         ;;
7526                 *)  case "$osname" in
7527                         darwin) dflt='none' ;;
7528                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7529                         *)      dflt='-fpic' ;;
7530                     esac ;;
7531             esac ;;
7532         ' ') dflt='none' ;;
7533     *)  dflt="$cccdlflags" ;;
7534     esac
7535     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7536     . ./myread
7537     case "$ans" in
7538     none) cccdlflags=' ' ;;
7539     *) cccdlflags="$ans" ;;
7540     esac
7541
7542     cat << EOM
7543
7544 Some systems use ld to create libraries that can be dynamically loaded,
7545 while other systems (such as those using ELF) use $cc.
7546
7547 EOM
7548         case "$ld" in
7549         '')     $cat >try.c <<EOM
7550 /* Test for whether ELF binaries are produced */
7551 #include <fcntl.h>
7552 #$i_stdlib I_STDLIB
7553 #ifdef I_STDLIB
7554 #include <stdlib.h>
7555 #endif
7556 int main() {
7557         char b[4];
7558         int i = open("a.out",O_RDONLY);
7559         if(i == -1) 
7560                 exit(1); /* fail */
7561         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7562                 exit(0); /* succeed (yes, it's ELF) */
7563         else
7564                 exit(1); /* fail */
7565 }
7566 EOM
7567                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7568                         cat <<EOM
7569 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7570 EOM
7571                         dflt="$cc"
7572                 else
7573                         echo "I'll use ld to build dynamic libraries."
7574                         dflt='ld'
7575                 fi
7576                 rm -f try.c a.out
7577                 ;;
7578         *)      dflt="$ld"
7579                 ;;
7580         esac
7581
7582     rp="What command should be used to create dynamic libraries?"
7583     . ./myread
7584         ld="$ans"
7585
7586     cat << EOM
7587
7588 Some systems may require passing special flags to $ld to create a
7589 library that can be dynamically loaded.  If your ld flags include
7590 -L/other/path options to locate libraries outside your loader's normal
7591 search path, you may need to specify those -L options here as well.  To
7592 use no flags, say "none".
7593
7594 EOM
7595     case "$lddlflags" in
7596     '') case "$osname" in
7597                         beos) dflt='-nostart' ;;
7598                         hpux) dflt='-b';
7599                               case "$gccversion" in
7600                               '') dflt="$dflt +vnocompatwarnings" ;;
7601                               esac
7602                               ;;        
7603                         linux|irix*)    dflt='-shared' ;;
7604                         next)  dflt='none' ;;
7605                         solaris) dflt='-G' ;;
7606                         sunos) dflt='-assert nodefinitions' ;;
7607                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7608                 *)     dflt='none' ;;
7609                         esac
7610                         ;;
7611     *) dflt="$lddlflags" ;;
7612     esac
7613
7614         : Try to guess additional flags to pick up local libraries.
7615         : Be careful not to append to a plain 'none'
7616         case "$dflt" in
7617         none) dflt='' ;;
7618         esac
7619         for thisflag in $ldflags; do
7620                 case "$thisflag" in
7621                 -L*|-R*|-Wl,-R*)
7622                         case " $dflt " in
7623                         *" $thisflag "*) ;;
7624                         *) dflt="$dflt $thisflag" ;;
7625                         esac
7626                         ;;
7627                 esac
7628         done
7629
7630         case "$dflt" in
7631         ''|' ') dflt='none' ;;
7632         esac
7633
7634     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7635     . ./myread
7636     case "$ans" in
7637     none) lddlflags=' ' ;;
7638     *) lddlflags="$ans" ;;
7639     esac
7640
7641         cat <<EOM
7642
7643 Some systems may require passing special flags to $cc to indicate that
7644 the resulting executable will use dynamic linking.  To use no flags,
7645 say "none".
7646
7647 EOM
7648     case "$ccdlflags" in
7649     '') case "$osname" in
7650             linux|hpux) dflt='-Wl,-E' ;;
7651             next|sunos) dflt='none' ;;
7652             *)          dflt='none' ;;
7653             esac ;;
7654     ' ')  dflt='none' ;;
7655     *)  dflt="$ccdlflags" ;;
7656     esac
7657     rp="Any special flags to pass to $cc to use dynamic linking?"
7658     . ./myread
7659     case "$ans" in
7660     none) ccdlflags=' ' ;;
7661     *) ccdlflags="$ans" ;;
7662     esac
7663     ;;
7664 *)  usedl="$undef"
7665         ld='ld'
7666     dlsrc='dl_none.xs'
7667     lddlflags=''
7668     ccdlflags=''
7669     ;;
7670 esac
7671
7672 also=''
7673 case "$usedl" in
7674 $undef)
7675         # No dynamic loading being used, so don't bother even to prompt.
7676         useshrplib='false'
7677         ;;
7678 *)      case "$useshrplib" in
7679         '')     case "$osname" in
7680                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7681                         dflt=y
7682                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7683                         ;;
7684                 next*)
7685                         case "$osvers" in
7686                         4*)     dflt=y
7687                                 also='Building a shared libperl is needed for MAB support.'
7688                                 ;;
7689                         *)      dflt=n
7690                                 ;;
7691                         esac
7692                         ;;
7693                 *)      dflt=n
7694                         ;;
7695                 esac
7696                 ;;
7697         $define|true|[Yy]*)
7698                 dflt=y
7699                 ;;
7700         *)      dflt=n
7701                 ;;
7702         esac
7703         $cat << EOM
7704
7705 The perl executable is normally obtained by linking perlmain.c with
7706 libperl${_a}, any static extensions (usually just DynaLoader), and
7707 any other libraries needed on this system (such as -lm, etc.).  Since
7708 your system supports dynamic loading, it is probably possible to build
7709 a shared libperl.$so.  If you will have more than one executable linked
7710 to libperl.$so, this will significantly reduce the size of each
7711 executable, but it may have a noticeable affect on performance.  The
7712 default is probably sensible for your system.
7713 $also
7714
7715 EOM
7716         rp="Build a shared libperl.$so (y/n)"
7717         . ./myread
7718         case "$ans" in
7719         true|$define|[Yy]*)
7720                 useshrplib='true'  ;;
7721         *)      useshrplib='false' ;;
7722         esac
7723         ;;
7724 esac
7725
7726 case "$useshrplib" in
7727 true)
7728         case "$libperl" in
7729         '')
7730                 # Figure out a good name for libperl.so.  Since it gets stored in
7731                 # a version-specific architecture-dependent library, the version
7732                 # number isn't really that important, except for making cc/ld happy.
7733                 #
7734                 # A name such as libperl.so.3.1
7735                 majmin="libperl.$so.$patchlevel.$subversion"
7736                 # A name such as libperl.so.301
7737                 majonly=`echo $patchlevel $subversion |
7738                         $awk '{printf "%d%02d", $1, $2}'`
7739                 majonly=libperl.$so.$majonly
7740                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7741                 # rely on figuring it out from the naming of libc.
7742                 case "${osname}${osvers}" in
7743                 next4*)
7744                         dflt=libperl.5.$so
7745                         # XXX How handle the --version stuff for MAB?
7746                         ;;
7747                 linux*)  # ld won't link with a bare -lperl otherwise.
7748                         dflt=libperl.$so
7749                         ;;
7750                 cygwin*) # ld links against an importlib
7751                         dflt=libperl$lib_ext
7752                         ;;
7753                 *)      # Try to guess based on whether libc has major.minor.
7754                         case "$libc" in
7755                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7756                         *libc.$so.[0-9]*) dflt=$majonly ;;
7757                         *)      dflt=libperl.$so ;;
7758                         esac
7759                         ;;
7760                 esac
7761                 ;;
7762         *)      dflt=$libperl
7763                 ;;
7764         esac
7765         cat << EOM
7766
7767 I need to select a good name for the shared libperl.  If your system uses
7768 library names with major and minor numbers, then you might want something
7769 like $majmin.  Alternatively, if your system uses a single version
7770 number for shared libraries, then you might want to use $majonly.
7771 Or, your system might be quite happy with a simple libperl.$so.
7772
7773 Since the shared libperl will get installed into a version-specific
7774 architecture-dependent directory, the version number of the shared perl
7775 library probably isn't important, so the default should be o.k.
7776
7777 EOM
7778         rp='What name do you want to give to the shared libperl?'
7779         . ./myread
7780         libperl=$ans
7781         echo "Ok, I'll use $libperl"
7782         ;;
7783 *)
7784         libperl="libperl${_a}"
7785         ;;
7786 esac
7787
7788 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7789 case "$shrpdir" in
7790 '') ;;
7791 *)      $cat >&4 <<EOM
7792 WARNING:  Use of the shrpdir variable for the installation location of
7793 the shared $libperl is not supported.  It was never documented and
7794 will not work in this version.  Let me (perlbug@perl.org)
7795 know of any problems this may cause.
7796
7797 EOM
7798         case "$shrpdir" in
7799         "$archlibexp/CORE")
7800                 $cat >&4 <<EOM
7801 But your current setting of $shrpdir is
7802 the default anyway, so it's harmless.
7803 EOM
7804                 ;;
7805         *)
7806                 $cat >&4 <<EOM
7807 Further, your current attempted setting of $shrpdir
7808 conflicts with the value of $archlibexp/CORE
7809 that installperl will use.
7810 EOM
7811                 ;;
7812         esac
7813         ;;
7814 esac
7815
7816 # How will the perl executable find the installed shared $libperl?
7817 # Add $xxx to ccdlflags.
7818 # If we can't figure out a command-line option, use $shrpenv to
7819 # set env LD_RUN_PATH.  The main perl makefile uses this.
7820 shrpdir=$archlibexp/CORE
7821 xxx=''
7822 tmp_shrpenv=''
7823 if "$useshrplib"; then
7824     case "$osname" in 
7825         aix)
7826                 # We'll set it in Makefile.SH...
7827                 ;;
7828         solaris)
7829                 xxx="-R $shrpdir"
7830                 ;;
7831         freebsd|netbsd|openbsd)
7832                 xxx="-Wl,-R$shrpdir"
7833                 ;;
7834         bsdos|linux|irix*|dec_osf)
7835                 xxx="-Wl,-rpath,$shrpdir"
7836                 ;;
7837         next)
7838                 # next doesn't like the default...
7839                 ;;
7840         beos)
7841                 # beos doesn't like the default, either.
7842                 ;;
7843         hpux*)
7844                 # hpux doesn't like the default, either.
7845                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7846                 ;;
7847         *)
7848                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7849                 ;;
7850         esac
7851         case "$xxx" in
7852         '') ;;
7853         *)      
7854                 # Only add $xxx if it isn't already in ccdlflags.
7855                 case " $ccdlflags " in
7856                 *" $xxx "*)     ;;
7857                 *)      ccdlflags="$ccdlflags $xxx"
7858                         cat <<EOM >&4
7859
7860 Adding $xxx to the flags
7861 passed to $ld so that the perl executable will find the 
7862 installed shared $libperl.
7863
7864 EOM
7865                         ;;
7866                 esac
7867                 ;;
7868         esac
7869 fi
7870 # Fix ccdlflags in AIX for building external extensions.
7871 # (For building Perl itself bare -bE:perl.exp is needed,
7872 #  Makefile.SH takes care of this.)
7873 case "$osname" in
7874 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7875 esac
7876 # Respect a hint or command-line value.
7877 case "$shrpenv" in
7878 '') shrpenv="$tmp_shrpenv" ;;
7879 esac
7880 case "$ldlibpthname" in
7881 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7882 none)   ldlibpthname='' ;;
7883 esac
7884
7885 : determine where manual pages are on this system
7886 echo " "
7887 case "$sysman" in
7888 '') 
7889         syspath='/usr/share/man/man1 /usr/man/man1'
7890         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7891         syspath="$syspath /usr/man/u_man/man1"
7892         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7893         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7894         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7895         sysman=`./loc . /usr/man/man1 $syspath`
7896         ;;
7897 esac
7898 if $test -d "$sysman"; then
7899         echo "System manual is in $sysman." >&4
7900 else
7901         echo "Could not find manual pages in source form." >&4
7902 fi
7903
7904 : determine where manual pages go
7905 set man1dir man1dir none
7906 eval $prefixit
7907 $cat <<EOM
7908
7909 $spackage has manual pages available in source form.
7910 EOM
7911 case "$nroff" in
7912 nroff)
7913         echo "However, you don't have nroff, so they're probably useless to you."
7914         case "$man1dir" in
7915         '') man1dir="none";;
7916         esac;;
7917 esac
7918 echo "If you don't want the manual sources installed, answer 'none'."
7919 case "$man1dir" in
7920 ' ') dflt=none
7921         ;;
7922 '')
7923         lookpath="$prefixexp/share/man/man1"
7924         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7925         lookpath="$lookpath $prefixexp/man/p_man/man1"
7926         lookpath="$lookpath $prefixexp/man/u_man/man1"
7927         lookpath="$lookpath $prefixexp/man/man.1"
7928         case "$sysman" in
7929         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7930         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7931         esac
7932         set dflt
7933         eval $prefixup
7934         ;;
7935 *)  dflt="$man1dir"
7936         ;;
7937 esac
7938 echo " "
7939 fn=dn+~
7940 rp="Where do the main $spackage manual pages (source) go?"
7941 . ./getfile
7942 if $test "X$man1direxp" != "X$ansexp"; then
7943         installman1dir=''
7944 fi
7945 man1dir="$ans"
7946 man1direxp="$ansexp"
7947 case "$man1dir" in
7948 '')     man1dir=' '
7949         installman1dir='';;
7950 esac
7951
7952 : Change installation prefix, if necessary.
7953 if $test X"$prefix" != X"$installprefix"; then
7954         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7955 else
7956         installman1dir="$man1direxp"
7957 fi
7958
7959 : What suffix to use on installed man pages
7960
7961 case "$man1dir" in
7962 ' ')
7963         man1ext='0'
7964         ;;
7965 *)
7966         rp="What suffix should be used for the main $spackage man pages?"
7967         case "$man1ext" in
7968         '')     case "$man1dir" in
7969                 *1)  dflt=1 ;;
7970                 *1p) dflt=1p ;;
7971                 *1pm) dflt=1pm ;;
7972                 *l) dflt=l;;
7973                 *n) dflt=n;;
7974                 *o) dflt=o;;
7975                 *p) dflt=p;;
7976                 *C) dflt=C;;
7977                 *L) dflt=L;;
7978                 *L1) dflt=L1;;
7979                 *) dflt=1;;
7980                 esac
7981                 ;;
7982         *)      dflt="$man1ext";;
7983         esac
7984         . ./myread
7985         man1ext="$ans"
7986         ;;
7987 esac
7988
7989 : see if we can have long filenames
7990 echo " "
7991 first=123456789abcdef
7992 $rm -f $first
7993 if (echo hi >$first) 2>/dev/null; then
7994         if $test -f 123456789abcde; then
7995                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7996                 val="$undef"
7997         else
7998                 echo 'You can have filenames longer than 14 characters.'>&4
7999                 val="$define"
8000         fi
8001 else
8002         $cat <<'EOM'
8003 You can't have filenames longer than 14 chars.
8004 You can't even think about them!
8005 EOM
8006         val="$undef"
8007 fi 
8008 set d_flexfnam
8009 eval $setvar
8010 $rm -rf 123456789abcde*
8011
8012 : determine where library module manual pages go
8013 set man3dir man3dir none
8014 eval $prefixit
8015 $cat <<EOM
8016
8017 $spackage has manual pages for many of the library modules.
8018 EOM
8019
8020 case "$nroff" in
8021 nroff)
8022         $cat <<'EOM'
8023 However, you don't have nroff, so they're probably useless to you.
8024 EOM
8025         case "$man3dir" in
8026         '') man3dir="none";;
8027         esac;;
8028 esac
8029
8030 case "$d_flexfnam" in
8031 undef)
8032         $cat <<'EOM'
8033 However, your system can't handle the long file names like File::Basename.3. 
8034 EOM
8035         case "$man3dir" in
8036         '') man3dir="none";;
8037         esac;;
8038 esac
8039
8040 echo "If you don't want the manual sources installed, answer 'none'."
8041 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8042 case "$man3dir" in
8043 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8044         if $test -d "$privlib/man/man3"; then
8045                 cat <<EOM >&4
8046
8047 WARNING:  Previous versions of perl installed man3 pages into
8048 $privlib/man/man3.  This version will suggest a 
8049 new default of $dflt.  
8050 EOM
8051                 tdflt=$dflt
8052                 dflt='n'
8053                 rp='Do you wish to preserve the old behavior?(y/n)'
8054                 . ./myread
8055                 case "$ans" in
8056                 y*) dflt="$privlib/man/man3" ;;
8057                 *)  dflt=$tdflt ;;
8058                 esac
8059     fi
8060         ;;
8061 *)      dflt="$man3dir" ;;
8062 esac
8063 case "$dflt" in
8064 ' ') dflt=none ;;
8065 esac
8066 echo " "
8067 fn=dn+~
8068 rp="Where do the $package library man pages (source) go?"
8069 . ./getfile
8070 man3dir="$ans"
8071 man3direxp="$ansexp"
8072 case "$man3dir" in
8073 '')     man3dir=' '
8074         installman3dir='';;
8075 esac
8076
8077 : Change installation prefix, if necessary.
8078 if $test X"$prefix" != X"$installprefix"; then
8079         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8080 else
8081         installman3dir="$man3direxp"
8082 fi
8083
8084 : What suffix to use on installed man pages
8085 case "$man3dir" in
8086 ' ')
8087         man3ext='0'
8088         ;;
8089 *)
8090         rp="What suffix should be used for the $package library man pages?"
8091         case "$man3ext" in
8092         '')     case "$man3dir" in
8093                 *3)  dflt=3 ;;
8094                 *3p) dflt=3p ;;
8095                 *3pm) dflt=3pm ;;
8096                 *l) dflt=l;;
8097                 *n) dflt=n;;
8098                 *o) dflt=o;;
8099                 *p) dflt=p;;
8100                 *C) dflt=C;;
8101                 *L) dflt=L;;
8102                 *L3) dflt=L3;;
8103                 *) dflt=3;;
8104                 esac
8105                 ;;
8106         *)      dflt="$man3ext";;
8107         esac
8108         . ./myread
8109         man3ext="$ans"
8110         ;;
8111 esac
8112
8113 : see if we have to deal with yellow pages, now NIS.
8114 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8115         if $test -f /usr/etc/nibindd; then
8116                 echo " "
8117                 echo "I'm fairly confident you're on a NeXT."
8118                 echo " "
8119                 rp='Do you get the hosts file via NetInfo?'
8120                 dflt=y
8121                 case "$hostcat" in
8122                 nidump*) ;;
8123                 '') ;;
8124                 *) dflt=n;;
8125                 esac
8126                 . ./myread
8127                 case "$ans" in
8128                 y*) hostcat='nidump hosts .';;
8129                 *)      case "$hostcat" in
8130                         nidump*) hostcat='';;
8131                         esac
8132                         ;;
8133                 esac
8134         fi
8135         case "$hostcat" in
8136         nidump*) ;;
8137         *)
8138                 case "$hostcat" in
8139                 *ypcat*) dflt=y;;
8140                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8141                                 dflt=y
8142                         else
8143                                 dflt=n
8144                         fi;;
8145                 *) dflt=n;;
8146                 esac
8147                 echo " "
8148                 rp='Are you getting the hosts file via yellow pages?'
8149                 . ./myread
8150                 case "$ans" in
8151                 y*) hostcat='ypcat hosts';;
8152                 *) hostcat='cat /etc/hosts';;
8153                 esac
8154                 ;;
8155         esac
8156 fi
8157 case "$hostcat" in
8158 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8159 esac
8160 case "$groupcat" in
8161 '') test -f /etc/group && groupcat='cat /etc/group';;
8162 esac
8163 case "$passcat" in
8164 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8165 esac
8166
8167 : now get the host name
8168 echo " "
8169 echo "Figuring out host name..." >&4
8170 case "$myhostname" in
8171 '') cont=true
8172         echo 'Maybe "hostname" will work...'
8173         if tans=`sh -c hostname 2>&1` ; then
8174                 myhostname=$tans
8175                 phostname=hostname
8176                 cont=''
8177         fi
8178         ;;
8179 *) cont='';;
8180 esac
8181 if $test "$cont"; then
8182         if ./xenix; then
8183                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8184                 if tans=`cat /etc/systemid 2>&1` ; then
8185                         myhostname=$tans
8186                         phostname='cat /etc/systemid'
8187                         echo "Whadyaknow.  Xenix always was a bit strange..."
8188                         cont=''
8189                 fi
8190         elif $test -r /etc/systemid; then
8191                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8192         fi
8193 fi
8194 if $test "$cont"; then
8195         echo 'No, maybe "uuname -l" will work...'
8196         if tans=`sh -c 'uuname -l' 2>&1` ; then
8197                 myhostname=$tans
8198                 phostname='uuname -l'
8199         else
8200                 echo 'Strange.  Maybe "uname -n" will work...'
8201                 if tans=`sh -c 'uname -n' 2>&1` ; then
8202                         myhostname=$tans
8203                         phostname='uname -n'
8204                 else
8205                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8206                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8207                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8208                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8209                         else
8210                                 case "$myhostname" in
8211                                 '') echo "Does this machine have an identity crisis or something?"
8212                                         phostname='';;
8213                                 *)
8214                                         echo "Well, you said $myhostname before..."
8215                                         phostname='echo $myhostname';;
8216                                 esac
8217                         fi
8218                 fi
8219         fi
8220 fi
8221 case "$myhostname" in
8222 '') myhostname=noname ;;
8223 esac
8224 : you do not want to know about this
8225 set $myhostname
8226 myhostname=$1
8227
8228 : verify guess
8229 if $test "$myhostname" ; then
8230         dflt=y
8231         rp='Your host name appears to be "'$myhostname'".'" Right?"
8232         . ./myread
8233         case "$ans" in
8234         y*) ;;
8235         *) myhostname='';;
8236         esac
8237 fi
8238
8239 : bad guess or no guess
8240 while $test "X$myhostname" = X ; do
8241         dflt=''
8242         rp="Please type the (one word) name of your host:"
8243         . ./myread
8244         myhostname="$ans"
8245 done
8246
8247 : translate upper to lower if necessary
8248 case "$myhostname" in
8249 *[A-Z]*)
8250         echo "(Normalizing case in your host name)"
8251         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8252         ;;
8253 esac
8254
8255 case "$myhostname" in
8256 *.*)
8257         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8258         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8259         echo "(Trimming domain name from host name--host name is now $myhostname)"
8260         ;;
8261 *) case "$mydomain" in
8262         '')
8263                 {
8264                         test "X$hostcat" = "Xypcat hosts" &&
8265                         ypmatch "$myhostname" hosts 2>/dev/null |\
8266                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8267                         $test -s hosts
8268                 } || {
8269                         test "X$hostcat" != "X" &&
8270                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8271                                         /[       ]$myhostname[  . ]/p" > hosts
8272                 }
8273                 tmp_re="[       . ]"
8274                 if $test -f hosts; then
8275                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8276                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8277                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8278                                 hosts | $sort | $uniq | \
8279                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8280                         case `$echo X$dflt` in
8281                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8282                                 dflt=.
8283                                 ;;
8284                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8285                                 ;;
8286                         esac
8287                 else
8288                         echo "(I cannot locate a hosts database anywhere)"
8289                         dflt=.
8290                 fi
8291                 case "$dflt" in
8292                 .)
8293                         tans=`./loc resolv.conf X /etc /usr/etc`
8294                         if $test -f "$tans"; then
8295                                 echo "(Attempting domain name extraction from $tans)"
8296                                 dflt=.`$sed -n -e 's/   / /g' \
8297                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8298                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8299                                 case "$dflt" in
8300                                 .) dflt=.`$sed -n -e 's/        / /g' \
8301                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8302                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8303                                         ;;
8304                                 esac
8305                         fi
8306                         ;;
8307                 esac
8308                 case "$dflt" in
8309                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8310                         dflt=.`sh -c domainname 2>/dev/null`
8311                         case "$dflt" in
8312                         '') dflt='.';;
8313                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8314                         esac
8315                         ;;
8316                 esac
8317                 case "$dflt$osname" in
8318                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8319                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8320                         ;;
8321                 esac
8322                 case "$dflt" in
8323                 .) echo "(Lost all hope -- silly guess then)"
8324                         dflt='.nonet'
8325                         ;;
8326                 esac
8327                 $rm -f hosts
8328                 ;;
8329         *) dflt="$mydomain";;
8330         esac;;
8331 esac
8332 echo " "
8333 rp="What is your domain name?"
8334 . ./myread
8335 tans="$ans"
8336 case "$ans" in
8337 '') ;;
8338 .*) ;;
8339 *) tans=".$tans";;
8340 esac
8341 mydomain="$tans"
8342
8343 : translate upper to lower if necessary
8344 case "$mydomain" in
8345 *[A-Z]*)
8346         echo "(Normalizing case in your domain name)"
8347         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8348         ;;
8349 esac
8350
8351 : a little sanity check here
8352 case "$phostname" in
8353 '') ;;
8354 *)
8355         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8356         $myhostname$mydomain|$myhostname) ;;
8357         *)
8358                 case "$phostname" in
8359                 sed*)
8360                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8361                         ;;
8362                 *)
8363                         echo "(That doesn't agree with your $phostname command, by the way.)"
8364                         ;;
8365                 esac
8366         ;;
8367         esac
8368         ;;
8369 esac
8370
8371 $cat <<EOM
8372
8373 I need to get your e-mail address in Internet format if possible, i.e.
8374 something like user@host.domain. Please answer accurately since I have
8375 no easy means to double check it. The default value provided below
8376 is most probably close to reality but may not be valid from outside
8377 your organization...
8378
8379 EOM
8380 cont=x
8381 while test "$cont"; do
8382         case "$cf_email" in
8383         '') dflt="$cf_by@$myhostname$mydomain";;
8384         *) dflt="$cf_email";;
8385         esac
8386         rp='What is your e-mail address?'
8387         . ./myread
8388         cf_email="$ans"
8389         case "$cf_email" in
8390         *@*.*) cont='' ;;
8391         *)
8392                 rp='Address does not look like an Internet one.  Use it anyway?'
8393                 case "$fastread" in
8394                 yes) dflt=y ;;
8395                 *) dflt=n ;;
8396                 esac
8397                 . ./myread
8398                 case "$ans" in
8399                 y*) cont='' ;;
8400                 *) echo " " ;;
8401                 esac
8402                 ;;
8403         esac
8404 done
8405
8406 $cat <<EOM
8407
8408 If you or somebody else will be maintaining perl at your site, please
8409 fill in the correct e-mail address here so that they may be contacted
8410 if necessary. Currently, the "perlbug" program included with perl
8411 will send mail to this address in addition to perlbug@perl.org. You may
8412 enter "none" for no administrator.
8413
8414 EOM
8415 case "$perladmin" in
8416 '') dflt="$cf_email";;
8417 *) dflt="$perladmin";;
8418 esac
8419 rp='Perl administrator e-mail address'
8420 . ./myread
8421 perladmin="$ans"
8422
8423 : determine whether to only install version-specific parts.
8424 echo " "
8425 $cat <<EOM
8426 Do you want to install only the version-specific parts of the perl
8427 distribution?  Usually you do *not* want to do this.
8428 EOM
8429 case "$versiononly" in
8430 "$define"|[Yy]*|true) dflt='y' ;;
8431 *) dflt='n';
8432 esac
8433 rp="Do you want to install only the version-specific parts of perl?"
8434 . ./myread
8435 case "$ans" in
8436 [yY]*)  val="$define";;
8437 *)      val="$undef" ;;
8438 esac
8439 set versiononly
8440 eval $setvar
8441
8442 case "$versiononly" in
8443 "$define") inc_version_list=''
8444            inc_version_list_init=0
8445            ;;
8446 esac
8447
8448 : figure out how to guarantee perl startup
8449 case "$startperl" in
8450 '')
8451         case "$sharpbang" in
8452         *!)
8453                 $cat <<EOH
8454
8455 I can use the #! construct to start perl on your system. This will
8456 make startup of perl scripts faster, but may cause problems if you
8457 want to share those scripts and perl is not in a standard place
8458 ($binexp/perl) on all your platforms. The alternative is to force
8459 a shell by starting the script with a single ':' character.
8460
8461 EOH
8462                 case "$versiononly" in
8463                 "$define")      dflt="$binexp/perl$version";;  
8464                 *)              dflt="$binexp/perl";;
8465                 esac
8466                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8467                 . ./myread
8468                 case "$ans" in
8469                 none)   startperl=": # use perl";;
8470                 *)      startperl="#!$ans"
8471                         if $test 30 -lt `echo "$ans" | wc -c`; then
8472                                 $cat >&4 <<EOM
8473
8474 WARNING:  Some systems limit the #! command to 32 characters.
8475 If you experience difficulty running Perl scripts with #!, try
8476 installing Perl in a directory with a shorter pathname.
8477
8478 EOM
8479                         fi ;;
8480                 esac
8481                 ;;
8482         *) startperl=": # use perl"
8483                 ;;
8484         esac
8485         ;;
8486 esac
8487 echo "I'll use $startperl to start perl scripts."
8488
8489 : figure best path for perl in scripts
8490 case "$perlpath" in
8491 '')
8492         case "$versiononly" in
8493         "$define")      perlpath="$binexp/perl$version";;
8494         *)              perlpath="$binexp/perl";;
8495         esac
8496         case "$startperl" in
8497         *!*) ;;
8498         *)
8499                 $cat <<EOH
8500
8501 I will use the "eval 'exec'" idiom to start Perl on your system.
8502 I can use the full path of your Perl binary for this purpose, but
8503 doing so may cause problems if you want to share those scripts and
8504 Perl is not always in a standard place ($binexp/perl).
8505
8506 EOH
8507                 dflt="$binexp/perl"
8508                 rp="What path shall I use in \"eval 'exec'\"?"
8509                 . ./myread
8510                 perlpath="$ans"
8511                 ;;
8512         esac
8513         ;;
8514 esac
8515 case "$startperl" in
8516 *!*)    ;;
8517 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8518 esac
8519
8520 : determine where public executable scripts go
8521 set scriptdir scriptdir
8522 eval $prefixit
8523 case "$scriptdir" in
8524 '')
8525         dflt="$bin"
8526         : guess some guesses
8527         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8528         $test -d /usr/share/bin     && dflt=/usr/share/bin
8529         $test -d /usr/local/script  && dflt=/usr/local/script
8530         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8531         $test -d $prefixexp/script  && dflt=$prefixexp/script
8532         set dflt
8533         eval $prefixup
8534         ;;
8535 *)  dflt="$scriptdir"
8536         ;;
8537 esac
8538 $cat <<EOM
8539  
8540 Some installations have a separate directory just for executable scripts so
8541 that they can mount it across multiple architectures but keep the scripts in
8542 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8543 Or you might just lump your scripts in with all your other executables.
8544  
8545 EOM
8546 fn=d~
8547 rp='Where do you keep publicly executable scripts?'
8548 . ./getfile
8549 if $test "X$ansexp" != "X$scriptdirexp"; then
8550         installscript=''
8551 fi
8552 scriptdir="$ans"
8553 scriptdirexp="$ansexp"
8554 : Change installation prefix, if necessary.
8555 if $test X"$prefix" != X"$installprefix"; then
8556         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8557 else
8558         installscript="$scriptdirexp"
8559 fi
8560
8561 : determine where add-on public executables go
8562 case "$sitebin" in
8563 '')     dflt=$siteprefix/bin ;;
8564 *)      dflt=$sitebin ;;
8565 esac
8566 fn=d~
8567 rp='Pathname where the add-on public executables should be installed?'
8568 . ./getfile
8569 sitebin="$ans"
8570 sitebinexp="$ansexp"
8571 : Change installation prefix, if necessary.
8572 if $test X"$prefix" != X"$installprefix"; then
8573         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8574 else
8575         installsitebin="$sitebinexp"
8576 fi
8577
8578 : determine where add-on html pages go
8579 : There is no standard location, so try to copy the previously-selected
8580 : directory structure for the core html pages.
8581 case "$sitehtml1dir" in
8582 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8583 *)     dflt=$sitehtml1dir ;;
8584 esac
8585 case "$dflt" in
8586 ''|' ') dflt=none ;;
8587 esac
8588 fn=dn+~
8589 rp='Pathname where the site-specific html pages should be installed?'
8590 . ./getfile
8591 sitehtml1dir="$ans"
8592 sitehtml1direxp="$ansexp"
8593 : Change installation prefix, if necessary.
8594 if $test X"$prefix" != X"$installprefix"; then
8595         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8596 else
8597         installsitehtml1dir="$sitehtml1direxp"
8598 fi
8599
8600 : determine where add-on library html pages go
8601 : There is no standard location, so try to copy the previously-selected
8602 : directory structure for the core html pages.
8603 case "$sitehtml3dir" in
8604 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8605 *)     dflt=$sitehtml3dir ;;
8606 esac
8607 case "$dflt" in
8608 ''|' ') dflt=none ;;
8609 esac
8610 fn=dn+~
8611 rp='Pathname where the site-specific library html pages should be installed?'
8612 . ./getfile
8613 sitehtml3dir="$ans"
8614 sitehtml3direxp="$ansexp"
8615 : Change installation prefix, if necessary.
8616 if $test X"$prefix" != X"$installprefix"; then
8617         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8618 else
8619         installsitehtml3dir="$sitehtml3direxp"
8620 fi
8621
8622 : determine where add-on manual pages go
8623 case "$siteman1dir" in
8624 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8625 *)      dflt=$siteman1dir ;;
8626 esac
8627 case "$dflt" in
8628 ''|' ') dflt=none ;;
8629 esac
8630 fn=dn+~
8631 rp='Pathname where the site-specific manual pages should be installed?'
8632 . ./getfile
8633 siteman1dir="$ans"
8634 siteman1direxp="$ansexp"
8635 : Change installation prefix, if necessary.
8636 if $test X"$prefix" != X"$installprefix"; then
8637         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8638 else
8639         installsiteman1dir="$siteman1direxp"
8640 fi
8641
8642 : determine where add-on library man pages go
8643 case "$siteman3dir" in
8644 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8645 *)      dflt=$siteman3dir ;;
8646 esac
8647 case "$dflt" in
8648 ''|' ') dflt=none ;;
8649 esac
8650 fn=dn+~
8651 rp='Pathname where the site-specific library manual pages should be installed?'
8652 . ./getfile
8653 siteman3dir="$ans"
8654 siteman3direxp="$ansexp"
8655 : Change installation prefix, if necessary.
8656 if $test X"$prefix" != X"$installprefix"; then
8657         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8658 else
8659         installsiteman3dir="$siteman3direxp"
8660 fi
8661
8662 : determine where add-on public executable scripts go
8663 case "$sitescript" in
8664 '')     dflt=$siteprefix/script
8665         $test -d $dflt || dflt=$sitebin ;;
8666 *)  dflt="$sitescript" ;;
8667 esac
8668 fn=d~+
8669 rp='Pathname where add-on public executable scripts should be installed?'
8670 . ./getfile
8671 sitescript="$ans"
8672 sitescriptexp="$ansexp"
8673 : Change installation prefix, if necessary.
8674 if $test X"$prefix" != X"$installprefix"; then
8675         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8676 else
8677         installsitescript="$sitescriptexp"
8678 fi
8679
8680 case "$usefaststdio" in
8681 $define|true|[yY]*|'')
8682         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8683         case "$xversion" in
8684         [68])   dflt='y' ;;
8685         *)      dflt='n' ;;
8686         esac
8687         ;;
8688 *) dflt='n';;
8689 esac
8690 cat <<EOM
8691
8692 Perl can be built to use 'fast stdio', which means using the stdio
8693 library but also directly manipulating the stdio buffers to enable
8694 faster I/O.  Using stdio is better for backward compatibility (especially
8695 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8696 interface has been preferred instead of stdio.
8697
8698 If this doesn't make any sense to you, just accept the default '$dflt'.
8699 EOM
8700 rp='Use the "fast stdio" if available?'
8701 . ./myread
8702 case "$ans" in
8703 y|Y)    val="$define" ;;     
8704 *)      val="$undef" ;;
8705 esac
8706 set usefaststdio
8707 eval $setvar
8708
8709
8710 : define an is-a-typedef? function
8711 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8712 case "$inclist" in
8713 "") inclist="sys/types.h";;
8714 esac;
8715 eval "varval=\$$var";
8716 case "$varval" in
8717 "")
8718         $rm -f temp.c;
8719         for inc in $inclist; do
8720                 echo "#include <$inc>" >>temp.c;
8721         done;
8722         echo "#ifdef $type" >> temp.c;
8723         echo "printf(\"We have $type\");" >> temp.c;
8724         echo "#endif" >> temp.c;
8725         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8726         if $contains $type temp.E >/dev/null 2>&1; then
8727                 eval "$var=\$type";
8728         else
8729                 eval "$var=\$def";
8730         fi;
8731         $rm -f temp.?;;
8732 *) eval "$var=\$varval";;
8733 esac'
8734
8735 : define an is-a-typedef? function that prompts if the type is not available.
8736 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8737 case "$inclist" in
8738 "") inclist="sys/types.h";;
8739 esac;
8740 eval "varval=\$$var";
8741 case "$varval" in
8742 "")
8743         $rm -f temp.c;
8744         for inc in $inclist; do
8745                 echo "#include <$inc>" >>temp.c;
8746         done;
8747         echo "#ifdef $type" >> temp.c;
8748         echo "printf(\"We have $type\");" >> temp.c;
8749         echo "#endif" >> temp.c;
8750         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8751         echo " " ;
8752         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8753         if $contains $type temp.E >/dev/null 2>&1; then
8754                 echo "$type found." >&4;
8755                 eval "$var=\$type";
8756         else
8757                 echo "$type NOT found." >&4;
8758                 dflt="$def";
8759                 . ./myread ;
8760                 eval "$var=\$ans";
8761         fi;
8762         $rm -f temp.?;;
8763 *) eval "$var=\$varval";;
8764 esac'
8765
8766 : see what type lseek is declared as in the kernel
8767 rp="What is the type used for lseek's offset on this system?"
8768 set off_t lseektype long stdio.h sys/types.h
8769 eval $typedef_ask
8770
8771 echo " "
8772 echo "Checking to see how big your file offsets are..." >&4
8773 $cat >try.c <<EOCP
8774 #include <sys/types.h>
8775 #include <stdio.h>
8776 int main()
8777 {
8778     printf("%d\n", (int)sizeof($lseektype));
8779     return(0); 
8780 }
8781 EOCP
8782 set try
8783 if eval $compile_ok; then
8784         lseeksize=`$run ./try`
8785         echo "Your file offsets are $lseeksize bytes long."
8786 else
8787         dflt=$longsize
8788         echo " "
8789         echo "(I can't seem to compile the test program.  Guessing...)"
8790         rp="What is the size of your file offsets (in bytes)?"
8791         . ./myread
8792         lseeksize="$ans"
8793 fi
8794 $rm -f try.c try
8795
8796 : see what type file positions are declared as in the library
8797 rp="What is the type for file position used by fsetpos()?"
8798 set fpos_t fpostype long stdio.h sys/types.h
8799 eval $typedef_ask
8800
8801 echo " "
8802 case "$fpostype" in
8803 *_t) zzz="$fpostype"    ;;
8804 *)   zzz="fpos_t"       ;;
8805 esac
8806 echo "Checking the size of $zzz..." >&4 
8807 cat > try.c <<EOCP
8808 #include <sys/types.h>
8809 #include <stdio.h>
8810 #$i_stdlib I_STDLIB
8811 #ifdef I_STDLIB
8812 #include <stdlib.h>
8813 #endif
8814 int main() {
8815     printf("%d\n", (int)sizeof($fpostype));
8816     exit(0);
8817 }
8818 EOCP
8819 set try
8820 if eval $compile_ok; then
8821         yyy=`$run ./try`
8822         case "$yyy" in
8823         '')     fpossize=4
8824                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8825                 ;;
8826         *)      fpossize=$yyy
8827                 echo "Your $zzz is $fpossize bytes long."
8828                 ;;
8829         esac
8830 else
8831         dflt="$longsize"
8832         echo " " >&4
8833         echo "(I can't compile the test program.  Guessing...)" >&4
8834         rp="What is the size of your file positions (in bytes)?"
8835         . ./myread
8836         fpossize="$ans"
8837 fi
8838
8839 # Backward compatibility (uselfs is deprecated).
8840 case "$uselfs" in
8841 "$define"|true|[yY]*)
8842         cat <<EOM >&4
8843
8844 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8845 EOM
8846         uselargefiles="$define"
8847         ;;
8848 esac                          
8849
8850 case "$lseeksize:$fpossize" in
8851 8:8) cat <<EOM
8852
8853 You can have files larger than 2 gigabytes.
8854 EOM
8855    val="$define" ;;
8856 *)    case "$uselargefiles" in
8857    "$undef"|false|[nN]*) dflt='n' ;;
8858    *)   dflt='y' ;;
8859    esac
8860    cat <<EOM
8861
8862 Perl can be built to understand large files (files larger than 2 gigabytes)
8863 on some systems.  To do so, Configure can be run with -Duselargefiles.
8864
8865 If this doesn't make any sense to you, just accept the default '$dflt'.
8866 EOM
8867    rp='Try to understand large files, if available?'
8868    . ./myread
8869    case "$ans" in
8870    y|Y)         val="$define" ;;
8871    *)           val="$undef"  ;;
8872    esac
8873    ;;
8874 esac
8875 set uselargefiles
8876 eval $setvar
8877 : Look for a hint-file generated 'call-back-unit'.  If the
8878 : user has specified that a large files perl is to be built,
8879 : we may need to set or change some other defaults.
8880 if $test -f uselargefiles.cbu; then
8881         echo "Your platform has some specific hints regarding large file builds, using them..."
8882         . ./uselargefiles.cbu
8883 fi
8884 case "$uselargefiles" in
8885 "$define")
8886         if $test -f uselargefiles.cbu; then
8887                 echo " "
8888                 echo "Rechecking to see how big your file offsets are..." >&4
8889                 $cat >try.c <<EOCP
8890 #include <sys/types.h>
8891 #include <stdio.h>
8892 int main()
8893 {
8894     printf("%d\n", (int)sizeof($lseektype));
8895     return(0); 
8896 }
8897 EOCP
8898                 set try
8899                 if eval $compile_ok; then
8900                         lseeksize=`$run ./try`
8901                         $echo "Your file offsets are now $lseeksize bytes long."
8902                 else
8903                         dflt="$lseeksize"
8904                         echo " "
8905                         echo "(I can't seem to compile the test program.  Guessing...)"
8906                         rp="What is the size of your file offsets (in bytes)?"
8907                         . ./myread
8908                         lseeksize="$ans"
8909                 fi
8910                 case "$fpostype" in
8911                 *_t) zzz="$fpostype"    ;;
8912                 *)   zzz="fpos_t"       ;;
8913                 esac
8914                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8915                 $cat > try.c <<EOCP
8916 #include <sys/types.h>
8917 #include <stdio.h>
8918 #$i_stdlib I_STDLIB
8919 #ifdef I_STDLIB
8920 #include <stdlib.h>
8921 #endif
8922 int main() {
8923     printf("%d\n", (int)sizeof($fpostype));
8924     return(0);
8925 }
8926 EOCP
8927                 set try
8928                 if eval $compile_ok; then
8929                         yyy=`$run ./try`
8930                         dflt="$lseeksize"
8931                         case "$yyy" in
8932                         '')     echo " "
8933                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8934                                 ;;
8935                         *)      fpossize=$yyy
8936                                 echo " $fpossize bytes." >&4
8937                                 ;;
8938                         esac
8939                 else
8940                         dflt="$fpossize"
8941                         echo " "
8942                         echo "(I can't compile the test program.  Guessing...)" >&4
8943                         rp="What is the size of your file positions (in bytes)?"
8944                         . ./myread
8945                         fpossize="$ans"
8946                 fi
8947                 $rm -f try.c try
8948         fi
8949         ;;
8950 esac
8951
8952 case "$vendorprefix" in
8953 '')     d_vendorbin="$undef"
8954         vendorbin=''
8955         vendorbinexp=''
8956         ;;
8957 *)      d_vendorbin="$define"
8958         : determine where vendor-supplied executables go.
8959         case "$vendorbin" in
8960         '') dflt=$vendorprefix/bin ;;
8961         *)      dflt="$vendorbin" ;;
8962         esac
8963         fn=d~+
8964         rp='Pathname for the vendor-supplied executables directory?'
8965         . ./getfile
8966         vendorbin="$ans"
8967         vendorbinexp="$ansexp"
8968         ;;
8969 esac
8970 : Change installation prefix, if necessary.
8971 if $test X"$prefix" != X"$installprefix"; then
8972         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8973 else
8974         installvendorbin="$vendorbinexp"
8975 fi
8976
8977 case "$vendorprefix" in
8978 '')     vendorhtml1dir=''
8979         vendorhtml1direxp=''
8980         ;;
8981 *)      : determine where vendor-supplied html pages go.
8982         : There is no standard location, so try to copy the previously-selected
8983         : directory structure for the core html pages.
8984         : XXX Better default suggestions would be welcome.
8985         case "$vendorhtml1dir" in
8986         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8987         *)      dflt=$vendorhtml1dir ;;
8988         esac
8989         case "$dflt" in
8990         ''|' ') dflt=none ;;
8991         esac
8992         fn=dn+~
8993         rp='Pathname for the vendor-supplied html pages?'
8994         . ./getfile
8995         vendorhtml1dir="$ans"
8996         vendorhtml1direxp="$ansexp"
8997         ;;
8998 esac
8999 : Use ' ' for none so value is preserved next time through Configure
9000 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9001 : Change installation prefix, if necessary.
9002 if $test X"$prefix" != X"$installprefix"; then
9003         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
9004 else
9005         installvendorhtml1dir="$vendorhtml1direxp"
9006 fi
9007
9008 case "$vendorprefix" in
9009 '')     vendorhtml3dir=''
9010         vendorhtml3direxp=''
9011         ;;
9012 *)      : determine where vendor-supplied module html pages go.
9013         : There is no standard location, so try to copy the previously-selected
9014         : directory structure for the core html pages.
9015         : XXX Better default suggestions would be welcome.
9016         case "$vendorhtml3dir" in
9017         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9018         *)      dflt=$vendorhtml3dir ;;
9019         esac
9020         case "$dflt" in
9021         ''|' ') dflt=none ;;
9022         esac
9023         fn=dn+~
9024         rp='Pathname for the vendor-supplied html pages?'
9025         . ./getfile
9026         vendorhtml3dir="$ans"
9027         vendorhtml3direxp="$ansexp"
9028         ;;
9029 esac
9030 : Use ' ' for none so value is preserved next time through Configure
9031 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9032 : Change installation prefix, if necessary.
9033 if $test X"$prefix" != X"$installprefix"; then
9034         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9035 else
9036         installvendorhtml3dir="$vendorhtml3direxp"
9037 fi
9038
9039 case "$vendorprefix" in
9040 '')     vendorman1dir=''
9041         vendorman1direxp=''
9042         ;;
9043 *)      : determine where vendor-supplied manual pages go.
9044         case "$vendorman1dir" in
9045         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9046         *)      dflt=$vendorman1dir ;;
9047         esac
9048         case "$dflt" in
9049         ''|' ') dflt=none ;;
9050         esac
9051         fn=nd~+
9052         rp='Pathname for the vendor-supplied manual section 1 pages?'
9053         . ./getfile
9054         vendorman1dir="$ans"
9055         vendorman1direxp="$ansexp"
9056         ;;
9057 esac
9058 : Use ' ' for none so value is preserved next time through Configure
9059 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9060 : Change installation prefix, if necessary.
9061 if $test X"$prefix" != X"$installprefix"; then
9062         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9063 else
9064         installvendorman1dir="$vendorman1direxp"
9065 fi
9066
9067 case "$vendorprefix" in
9068 '')     vendorman3dir=''
9069         vendorman3direxp=''
9070         ;;
9071 *)      : determine where vendor-supplied module manual pages go.
9072         case "$vendorman3dir" in
9073         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9074         *)      dflt=$vendorman3dir ;;
9075         esac
9076         case "$dflt" in
9077         ''|' ') dflt=none ;;
9078         esac
9079         fn=nd~+
9080         rp='Pathname for the vendor-supplied manual section 3 pages?'
9081         . ./getfile
9082         vendorman3dir="$ans"
9083         vendorman3direxp="$ansexp"
9084         ;;
9085 esac
9086 : Use ' ' for none so value is preserved next time through Configure
9087 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9088 : Change installation prefix, if necessary.
9089 if $test X"$prefix" != X"$installprefix"; then
9090         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9091 else
9092         installvendorman3dir="$vendorman3direxp"
9093 fi
9094
9095 case "$vendorprefix" in
9096 '')     d_vendorscript="$undef"
9097         vendorscript=''
9098         vendorscriptexp=''
9099         ;;
9100 *)      d_vendorscript="$define"
9101         : determine where vendor-supplied scripts go.
9102         case "$vendorscript" in
9103         '')     dflt=$vendorprefix/script
9104                 $test -d $dflt || dflt=$vendorbin ;;
9105         *)  dflt="$vendorscript" ;;
9106         esac
9107         $cat <<EOM
9108
9109 The installation process will create a directory for 
9110 vendor-supplied scripts.
9111
9112 EOM
9113         fn=d~+
9114         rp='Pathname for the vendor-supplied scripts directory?'
9115         . ./getfile
9116         vendorscript="$ans"
9117         vendorscriptexp="$ansexp"
9118         ;;
9119 esac
9120 : Change installation prefix, if necessary.
9121 if $test X"$prefix" != X"$installprefix"; then
9122         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9123 else
9124         installvendorscript="$vendorscriptexp"
9125 fi
9126
9127 : see if qgcvt exists
9128 set qgcvt d_qgcvt
9129 eval $inlibc
9130
9131 echo " "
9132
9133 if $test X"$d_longdbl" = X"$define"; then
9134
9135 echo "Checking how to print long doubles..." >&4
9136
9137 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9138         $cat >try.c <<'EOCP'
9139 #include <sys/types.h>
9140 #include <stdio.h>
9141 int main() {
9142   double d = 123.456;
9143   printf("%.3f\n", d);
9144 }
9145 EOCP
9146         set try
9147         if eval $compile; then
9148                 yyy=`$run ./try`
9149                 case "$yyy" in
9150                 123.456)
9151                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9152                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9153                         echo "We will use %f."
9154                         ;;
9155                 esac
9156         fi
9157 fi
9158
9159 if $test X"$sPRIfldbl" = X; then
9160         $cat >try.c <<'EOCP'
9161 #include <sys/types.h>
9162 #include <stdio.h>
9163 int main() {
9164   long double d = 123.456;
9165   printf("%.3Lf\n", d);
9166 }
9167 EOCP
9168         set try
9169         if eval $compile; then
9170                 yyy=`$run ./try`
9171                 case "$yyy" in
9172                 123.456)
9173                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9174                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9175                         echo "We will use %Lf."
9176                         ;;
9177                 esac
9178         fi
9179 fi
9180
9181 if $test X"$sPRIfldbl" = X; then
9182         $cat >try.c <<'EOCP'
9183 #include <sys/types.h>
9184 #include <stdio.h>
9185 int main() {
9186   long double d = 123.456;
9187   printf("%.3llf\n", d);
9188 }
9189 EOCP
9190         set try
9191         if eval $compile; then
9192                 yyy=`$run ./try`
9193                 case "$yyy" in
9194                 123.456)
9195                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9196                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9197                         echo "We will use %llf."
9198                         ;;
9199                 esac
9200         fi
9201 fi
9202
9203 if $test X"$sPRIfldbl" = X; then
9204         $cat >try.c <<'EOCP'
9205 #include <sys/types.h>
9206 #include <stdio.h>
9207 int main() {
9208   long double d = 123.456;
9209   printf("%.3lf\n", d);
9210 }
9211 EOCP
9212         set try
9213         if eval $compile; then
9214                 yyy=`$run ./try`
9215                 case "$yyy" in
9216                 123.456)
9217                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9218                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9219                         echo "We will use %lf."
9220                         ;;
9221                 esac
9222         fi
9223 fi
9224
9225 if $test X"$sPRIfldbl" = X; then
9226         echo "Cannot figure out how to print long doubles." >&4
9227 else
9228         sSCNfldbl=$sPRIfldbl    # expect consistency
9229 fi
9230
9231 $rm -f try try.*
9232
9233 fi # d_longdbl
9234
9235 case "$sPRIfldbl" in
9236 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9237         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9238         d_SCNfldbl="$undef";
9239         ;;
9240 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9241         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9242         d_SCNfldbl="$define";
9243         ;;
9244 esac
9245
9246 : Check how to convert floats to strings.
9247
9248 if test "X$d_Gconvert" = X; then
9249
9250 echo " "
9251 echo "Checking for an efficient way to convert floats to strings."
9252 echo " " > try.c
9253 case "$uselongdouble" in
9254 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9255 esac
9256 case "$d_longdbl" in
9257 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9258 esac
9259 case "$d_PRIgldbl" in
9260 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9261 esac
9262 $cat >>try.c <<EOP
9263 #ifdef TRY_gconvert
9264 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9265 char *myname = "gconvert";
9266 #endif
9267 #ifdef TRY_gcvt
9268 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9269 char *myname = "gcvt";
9270 #endif
9271 #ifdef TRY_qgcvt
9272 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9273 char *myname = "qgcvt";
9274 #define DOUBLETYPE long double
9275 #endif
9276 #ifdef TRY_sprintf
9277 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9278 #ifdef HAS_PRIgldbl
9279 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9280 #else
9281 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9282 #endif
9283 #else
9284 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9285 #endif
9286 char *myname = "sprintf";
9287 #endif
9288
9289 #ifndef DOUBLETYPE
9290 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9291 #define DOUBLETYPE long double
9292 #else
9293 #define DOUBLETYPE double
9294 #endif
9295 #endif
9296
9297 #include <stdio.h>
9298
9299 #define I_STDLIB $i_stdlib
9300 #ifdef I_STDLIB
9301 #include <stdlib.h>
9302 #endif
9303
9304 int
9305 checkit(expect, got)
9306 char *expect;
9307 char *got;
9308 {
9309     if (strcmp(expect, got)) {
9310                 printf("%s oddity:  Expected %s, got %s\n",
9311                         myname, expect, got);
9312                 exit(1);
9313         }
9314 }
9315
9316 int main()
9317
9318         char buf[64]; 
9319         buf[63] = '\0';
9320
9321         /* This must be 1st test on (which?) platform */
9322         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9323         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9324         checkit("0.1", buf);
9325
9326         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9327         checkit("0.01", buf);
9328
9329         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9330         checkit("0.001", buf);
9331
9332         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9333         checkit("0.0001", buf);
9334
9335         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9336         if (strlen(buf) > 5)
9337             checkit("9e-005", buf); /* for Microsoft ?? */
9338         else
9339             checkit("9e-05", buf);
9340
9341         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9342         checkit("1", buf);
9343
9344         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9345         checkit("1.1", buf);
9346
9347         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9348         checkit("1.01", buf);
9349
9350         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9351         checkit("1.001", buf);
9352
9353         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9354         checkit("1.0001", buf);
9355
9356         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9357         checkit("1.00001", buf);
9358
9359         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9360         checkit("1.000001", buf);
9361
9362         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9363         checkit("0", buf);
9364
9365         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9366         checkit("-1", buf);
9367
9368         /* Some Linux gcvt's give 1.e+5 here. */
9369         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9370         checkit("100000", buf);
9371         
9372         /* Some Linux gcvt's give -1.e+5 here. */
9373         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9374         checkit("-100000", buf);
9375
9376         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9377         checkit("123.456", buf);
9378
9379         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9380         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9381         /* 34 should be enough to scare even long double
9382          * places into using the e notation. */
9383         if (strlen(buf) > 5)
9384             checkit("1e+034", buf); /* for Microsoft */
9385         else
9386             checkit("1e+34", buf);
9387
9388         /* For Perl, if you add additional tests here, also add them to
9389          * t/base/num.t for benefit of platforms not using Configure or
9390          * overriding d_Gconvert */
9391
9392         exit(0);
9393 }
9394 EOP
9395 : first add preferred functions to our list
9396 xxx_list=""
9397 for xxx_convert in $gconvert_preference; do
9398     case $xxx_convert in
9399     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9400     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9401     esac 
9402 done
9403 : then add any others
9404 for xxx_convert in gconvert gcvt sprintf; do
9405     case "$xxx_list" in
9406     *$xxx_convert*) ;;
9407     *) xxx_list="$xxx_list $xxx_convert" ;;
9408     esac 
9409 done
9410
9411 case "$d_longdbl$uselongdouble" in
9412 "$define$define")
9413     : again, add prefered functions to our list first
9414     xxx_ld_list=""
9415     for xxx_convert in $gconvert_ld_preference; do
9416         case $xxx_convert in
9417         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9418         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9419         esac
9420     done
9421     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9422     for xxx_convert in qgcvt sprintf $xxx_list; do
9423         case "$xxx_ld_list" in
9424         $xxx_convert*|*" $xxx_convert"*) ;;
9425         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9426         esac
9427     done
9428     : if sprintf cannot do long doubles, move it to the end
9429     if test "$d_PRIgldbl" != "$define"; then
9430         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9431     fi
9432     : if no qgcvt, remove it
9433     if test "$d_qgcvt" != "$define"; then
9434         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9435     fi
9436     : use the ld_list
9437     xxx_list="$xxx_ld_list"
9438     ;;
9439 esac
9440
9441 for xxx_convert in $xxx_list; do
9442         echo "Trying $xxx_convert..."
9443         $rm -f try try$_o
9444         set try -DTRY_$xxx_convert
9445         if eval $compile; then
9446                 echo "$xxx_convert() found." >&4
9447                 if $run ./try; then
9448                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9449                         break;
9450                 else
9451                         echo "...But $xxx_convert didn't work as I expected."
9452                         xxx_convert=''
9453                 fi
9454         else
9455                 echo "$xxx_convert NOT found." >&4
9456         fi
9457 done
9458
9459 if test X$xxx_convert = X; then
9460     echo "*** WHOA THERE!!! ***" >&4
9461     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9462     xxx_convert=sprintf
9463 fi
9464
9465 case "$xxx_convert" in
9466 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9467 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9468 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9469 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9470    "$define$define$define")
9471       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9472    "$define$define$undef")
9473       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9474    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9475    esac
9476    ;;  
9477 esac
9478
9479 fi
9480
9481 : see if _fwalk exists
9482 set fwalk d__fwalk
9483 eval $inlibc
9484
9485 : Initialize h_fcntl
9486 h_fcntl=false
9487
9488 : Initialize h_sysfile
9489 h_sysfile=false
9490
9491 : access call always available on UNIX
9492 set access d_access
9493 eval $inlibc
9494
9495 : locate the flags for 'access()'
9496 case "$d_access" in
9497 "$define")
9498         echo " "
9499         $cat >access.c <<EOCP
9500 #include <sys/types.h>
9501 #ifdef I_FCNTL
9502 #include <fcntl.h>
9503 #endif
9504 #ifdef I_SYS_FILE
9505 #include <sys/file.h>
9506 #endif
9507 #ifdef I_UNISTD
9508 #include <unistd.h>
9509 #endif
9510 #$i_stdlib I_STDLIB
9511 #ifdef I_STDLIB
9512 #include <stdlib.h>
9513 #endif
9514 int main() {
9515         exit(R_OK);
9516 }
9517 EOCP
9518         : check sys/file.h first, no particular reason here
9519         if $test `./findhdr sys/file.h` && \
9520                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9521                 h_sysfile=true;
9522                 echo "<sys/file.h> defines the *_OK access constants." >&4
9523         elif $test `./findhdr fcntl.h` && \
9524                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9525                 h_fcntl=true;
9526                 echo "<fcntl.h> defines the *_OK access constants." >&4
9527         elif $test `./findhdr unistd.h` && \
9528                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9529                 echo "<unistd.h> defines the *_OK access constants." >&4
9530         else
9531                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9532         fi
9533         ;;
9534 esac
9535 $rm -f access*
9536
9537 : see if accessx exists
9538 set accessx d_accessx
9539 eval $inlibc
9540
9541 : see if aintl exists
9542 set aintl d_aintl
9543 eval $inlibc
9544
9545 : see if alarm exists
9546 set alarm d_alarm
9547 eval $inlibc
9548
9549 : see if POSIX threads are available
9550 set pthread.h i_pthread
9551 eval $inhdr
9552
9553 : define a fucntion to check prototypes
9554 $cat > protochk <<EOSH
9555 $startsh
9556 cc="$cc"
9557 optimize="$optimize"
9558 ccflags="$ccflags"
9559 prototype="$prototype"
9560 define="$define"
9561 rm=$rm
9562 usethreads=$usethreads
9563 i_pthread=$i_pthread
9564 pthread_h_first=$pthread_h_first
9565 EOSH
9566
9567 $cat >> protochk <<'EOSH'
9568
9569 $rm -f try.c
9570 foo="$1"
9571 shift
9572 while test $# -ge 2; do
9573         case "$1" in
9574                 $define) echo "#include <$2>" >> try.c ;;
9575                 literal) echo "$2" >> try.c ;;
9576         esac
9577     # Extra magic for the benefit of systems that need pthread.h
9578     # to be included early to correctly detect threadsafe functions.
9579     # Such functions must guarantee themselves, though, that the usethreads
9580     # and i_pthread have been defined, before calling protochk.
9581     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9582         echo "#include <pthread.h>" >> try.c
9583         pthread_h_done=yes
9584     fi
9585     shift 2
9586 done
9587 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9588 cat >> try.c <<'EOCP'
9589 #ifdef CAN_PROTOTYPE
9590 #define _(args) args
9591 #else
9592 #define _(args) ()
9593 #endif
9594 EOCP
9595 echo "$foo" >> try.c
9596 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9597 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9598 status=$?
9599 $rm -f try.[co]
9600 exit $status
9601 EOSH
9602 chmod +x protochk
9603 $eunicefix protochk
9604
9605 hasproto='varname=$1; func=$2; shift; shift;
9606 while $test $# -ge 2; do
9607         case "$1" in
9608         $define) echo "#include <$2>";;
9609         esac ;
9610     shift 2;
9611 done > try.c;
9612 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9613 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9614         echo "$func() prototype found.";
9615         val="$define";
9616 else
9617         echo "$func() prototype NOT found.";
9618         val="$undef";
9619 fi;
9620 set $varname;
9621 eval $setvar;
9622 $rm -f try.c tryout.c'
9623
9624 : see if sys/types.h has to be included
9625 set sys/types.h i_systypes
9626 eval $inhdr
9627
9628 : see if sys/select.h has to be included
9629 set sys/select.h i_sysselct
9630 eval $inhdr
9631
9632 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9633 while $test $# -ge 2; do
9634         case "$1" in
9635         $define) echo "#include <$2>";;
9636         esac ;
9637     shift 2;
9638 done > try.c;
9639 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9640 set try;
9641 if eval $compile; then
9642         val="$define";
9643 else
9644         val="$undef";
9645 fi;
9646 set $varname;
9647 eval $setvar;
9648 $rm -f try.c try.o'
9649
9650 : see if we should include time.h, sys/time.h, or both
9651 echo " "
9652 if test "X$timeincl" = X; then
9653         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9654         $echo $n "I'm now running the test program...$c"
9655         $cat >try.c <<EOCP
9656 #include <sys/types.h>
9657 #ifdef I_TIME
9658 #include <time.h>
9659 #endif
9660 #ifdef I_SYSTIME
9661 #ifdef SYSTIMEKERNEL
9662 #define KERNEL
9663 #endif
9664 #include <sys/time.h>
9665 #endif
9666 #ifdef I_SYSSELECT
9667 #include <sys/select.h>
9668 #endif
9669 #$i_stdlib I_STDLIB
9670 #ifdef I_STDLIB
9671 #include <stdlib.h>
9672 #endif
9673 int main()
9674 {
9675         struct tm foo;
9676 #ifdef S_TIMEVAL
9677         struct timeval bar;
9678 #endif
9679 #ifdef S_TIMEZONE
9680         struct timezone tzp;
9681 #endif
9682         if (foo.tm_sec == foo.tm_sec)
9683                 exit(0);
9684 #ifdef S_TIMEVAL
9685         if (bar.tv_sec == bar.tv_sec)
9686                 exit(0);
9687 #endif
9688         exit(1);
9689 }
9690 EOCP
9691         flags=''
9692         for s_timezone in '-DS_TIMEZONE' ''; do
9693         sysselect=''
9694         for s_timeval in '-DS_TIMEVAL' ''; do
9695         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9696         for i_time in '' '-DI_TIME'; do
9697         for i_systime in '-DI_SYSTIME' ''; do
9698                 case "$flags" in
9699                 '') $echo $n ".$c"
9700                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9701                         if eval $compile; then
9702                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9703                                 shift
9704                                 flags="$*"
9705                                 echo " "
9706                                 $echo $n "Succeeded with $flags$c"
9707                         fi
9708                         ;;
9709                 esac
9710         done
9711         done
9712         done
9713         done
9714         done
9715         timeincl=''
9716         echo " "
9717         case "$flags" in
9718         *SYSTIMEKERNEL*) i_systimek="$define"
9719                 timeincl=`./findhdr sys/time.h`
9720                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9721         *) i_systimek="$undef";;
9722         esac
9723         case "$flags" in
9724         *I_TIME*) i_time="$define"
9725                 timeincl=`./findhdr time.h`" $timeincl"
9726                 echo "We'll include <time.h>." >&4;;
9727         *) i_time="$undef";;
9728         esac
9729         case "$flags" in
9730         *I_SYSTIME*) i_systime="$define"
9731                 timeincl=`./findhdr sys/time.h`" $timeincl"
9732                 echo "We'll include <sys/time.h>." >&4;;
9733         *) i_systime="$undef";;
9734         esac
9735         $rm -f try.c try
9736 fi
9737 : see if struct tm knows about tm_zone
9738 case "$i_systime$i_time" in
9739 *$define*) 
9740         echo " "
9741         echo "Checking to see if your struct tm has tm_zone field..." >&4
9742         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9743         eval $hasfield
9744         ;;
9745 *)      val="$undef"
9746         set d_tm_tm_zone
9747         eval $setvar
9748         ;;
9749 esac
9750 case "$d_tm_tm_zone" in
9751 "$define")      echo "Yes, it does."   ;;
9752 *)              echo "No, it doesn't." ;;
9753 esac
9754 : see if struct tm knows about tm_gmtoff
9755 case "$i_systime$i_time" in
9756 *$define*) 
9757         echo " "
9758         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9759         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9760         eval $hasfield
9761         ;;
9762 *)      val="$undef"
9763         set d_tm_tm_gmtoff
9764         eval $setvar
9765         ;;
9766 esac
9767 case "$d_tm_tm_gmtoff" in
9768 "$define")      echo "Yes, it does."   ;;
9769 *)              echo "No, it doesn't." ;;
9770 esac
9771
9772 : see if asctime_r exists
9773 set asctime_r d_asctime_r
9774 eval $inlibc
9775 case "$d_asctime_r" in
9776 "$define")
9777         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9778         case "$d_asctime_r_proto:$usethreads" in
9779         ":define")      d_asctime_r_proto=define
9780                 set d_asctime_r_proto asctime_r $hdrs
9781                 eval $hasproto ;;
9782         *)      ;;
9783         esac
9784         case "$d_asctime_r_proto" in
9785         define)
9786         case "$asctime_r_proto" in
9787         ''|0) try='char* asctime_r(const struct tm*, char*);'
9788         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9789         esac
9790         case "$asctime_r_proto" in
9791         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9792         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9793         esac
9794         case "$asctime_r_proto" in
9795         ''|0) try='int asctime_r(const struct tm*, char*);'
9796         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9797         esac
9798         case "$asctime_r_proto" in
9799         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9800         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9801         esac
9802         case "$asctime_r_proto" in
9803         ''|0)   d_asctime_r=undef
9804                 asctime_r_proto=0
9805                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9806         * )     case "$asctime_r_proto" in
9807                 REENTRANT_PROTO*) ;;
9808                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9809                 esac
9810                 echo "Prototype: $try" ;;
9811         esac
9812         ;;
9813         *)      case "$usethreads" in
9814                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9815                 esac
9816                 d_asctime_r=undef
9817                 asctime_r_proto=0
9818                 ;;
9819         esac
9820         ;;
9821 *)      asctime_r_proto=0
9822         ;;
9823 esac
9824
9825 : see if atolf exists
9826 set atolf d_atolf
9827 eval $inlibc
9828
9829 : see if atoll exists
9830 set atoll d_atoll
9831 eval $inlibc
9832
9833 : Look for GNU-cc style attribute checking
9834 echo " "
9835 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9836 $cat >attrib.c <<'EOCP'
9837 #include <stdio.h>
9838 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9839 EOCP
9840 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9841         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9842                 echo "Your C compiler doesn't fully support __attribute__."
9843                 val="$undef"
9844         else
9845                 echo "Your C compiler supports __attribute__."
9846                 val="$define"
9847         fi
9848 else
9849         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9850         val="$undef"
9851 fi
9852 set d_attribut
9853 eval $setvar
9854 $rm -f attrib*
9855
9856 : see if bcmp exists
9857 set bcmp d_bcmp
9858 eval $inlibc
9859
9860 : see if bcopy exists
9861 set bcopy d_bcopy
9862 eval $inlibc
9863
9864 : see if this is a unistd.h system
9865 set unistd.h i_unistd
9866 eval $inhdr
9867
9868 : see if getpgrp exists
9869 set getpgrp d_getpgrp
9870 eval $inlibc
9871
9872 case "$d_getpgrp" in
9873 "$define")
9874         echo " "
9875         echo "Checking to see which flavor of getpgrp is in use..."
9876         $cat >try.c <<EOP
9877 #$i_unistd I_UNISTD
9878 #include <sys/types.h>
9879 #ifdef I_UNISTD
9880 #  include <unistd.h>
9881 #endif
9882 #$i_stdlib I_STDLIB
9883 #ifdef I_STDLIB
9884 #include <stdlib.h>
9885 #endif
9886 int main()
9887 {
9888         if (getuid() == 0) {
9889                 printf("(I see you are running Configure as super-user...)\n");
9890                 setuid(1);
9891         }
9892 #ifdef TRY_BSD_PGRP
9893         if (getpgrp(1) == 0)
9894                 exit(0);
9895 #else
9896         if (getpgrp() > 0)
9897                 exit(0);
9898 #endif
9899         exit(1);
9900 }
9901 EOP
9902         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9903                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9904                 val="$define"
9905         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9906                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9907                 val="$undef"
9908         else
9909                 echo "I can't seem to compile and run the test program."
9910                 if ./usg; then
9911                         xxx="a USG one, i.e. you use getpgrp()."
9912                 else
9913                         # SVR4 systems can appear rather BSD-ish.
9914                         case "$i_unistd" in
9915                         $undef)
9916                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9917                                 val="$define"
9918                                 ;;
9919                         $define)
9920                                 xxx="probably a USG one, i.e. you use getpgrp()."
9921                                 val="$undef"
9922                                 ;;
9923                         esac
9924                 fi
9925                 echo "Assuming your getpgrp is $xxx" >&4
9926         fi
9927         ;;
9928 *) val="$undef";;
9929 esac
9930 set d_bsdgetpgrp
9931 eval $setvar
9932 $rm -f try try.*
9933
9934 : see if setpgrp exists
9935 set setpgrp d_setpgrp
9936 eval $inlibc
9937
9938 case "$d_setpgrp" in
9939 "$define")
9940         echo " "
9941         echo "Checking to see which flavor of setpgrp is in use..."
9942         $cat >try.c <<EOP
9943 #$i_unistd I_UNISTD
9944 #include <sys/types.h>
9945 #ifdef I_UNISTD
9946 #  include <unistd.h>
9947 #endif
9948 #$i_stdlib I_STDLIB
9949 #ifdef I_STDLIB
9950 #include <stdlib.h>
9951 #endif
9952 int main()
9953 {
9954         if (getuid() == 0) {
9955                 printf("(I see you are running Configure as super-user...)\n");
9956                 setuid(1);
9957         }
9958 #ifdef TRY_BSD_PGRP
9959         if (-1 == setpgrp(1, 1))
9960                 exit(0);
9961 #else
9962         if (setpgrp() != -1)
9963                 exit(0);
9964 #endif
9965         exit(1);
9966 }
9967 EOP
9968         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9969                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9970                 val="$define"
9971         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9972                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9973                 val="$undef"
9974         else
9975                 echo "(I can't seem to compile and run the test program.)"
9976                 if ./usg; then
9977                         xxx="a USG one, i.e. you use setpgrp()."
9978                 else
9979                         # SVR4 systems can appear rather BSD-ish.
9980                         case "$i_unistd" in
9981                         $undef)
9982                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9983                                 val="$define"
9984                                 ;;
9985                         $define)
9986                                 xxx="probably a USG one, i.e. you use setpgrp()."
9987                                 val="$undef"
9988                                 ;;
9989                         esac
9990                 fi
9991                 echo "Assuming your setpgrp is $xxx" >&4
9992         fi
9993         ;;
9994 *) val="$undef";;
9995 esac
9996 set d_bsdsetpgrp
9997 eval $setvar
9998 $rm -f try try.*
9999 : see if bzero exists
10000 set bzero d_bzero
10001 eval $inlibc
10002
10003 : see if signal is declared as pointer to function returning int or void
10004 echo " "
10005 xxx=`./findhdr signal.h`
10006 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10007 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10008         echo "You have int (*signal())() instead of void." >&4
10009         val="$undef"
10010 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10011         echo "You have void (*signal())()." >&4
10012         val="$define"
10013 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10014         echo "You have int (*signal())() instead of void." >&4
10015         val="$undef"
10016 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10017         echo "You have void (*signal())()." >&4
10018         val="$define"
10019 else
10020         case "$d_voidsig" in
10021         '')
10022         echo "I can't determine whether signal handler returns void or int..." >&4
10023                 dflt=void
10024                 rp="What type does your signal handler return?"
10025                 . ./myread
10026                 case "$ans" in
10027                 v*) val="$define";;
10028                 *) val="$undef";;
10029                 esac;;
10030         "$define")
10031                 echo "As you already told me, signal handler returns void." >&4
10032                 val="$define"
10033                 ;;
10034         *)      echo "As you already told me, signal handler returns int." >&4
10035                 val="$undef"
10036                 ;;
10037         esac
10038 fi
10039 set d_voidsig
10040 eval $setvar
10041 case "$d_voidsig" in
10042 "$define") signal_t="void";;
10043 *) signal_t="int";;
10044 esac
10045 $rm -f $$.tmp
10046
10047 : check for ability to cast large floats to 32-bit ints.
10048 echo " "
10049 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10050 if $test "$intsize" -ge 4; then
10051         xxx=int
10052 else
10053         xxx=long
10054 fi
10055 $cat >try.c <<EOCP
10056 #include <stdio.h>
10057 #$i_stdlib I_STDLIB
10058 #ifdef I_STDLIB
10059 #include <stdlib.h>
10060 #endif
10061 #include <sys/types.h>
10062 #include <signal.h>
10063 $signal_t blech(s) int s; { exit(3); }
10064 int main()
10065 {
10066         $xxx i32;
10067         double f, g;
10068         int result = 0;
10069         char str[16];
10070         signal(SIGFPE, blech);
10071
10072         /* Don't let compiler optimize the test away.  Store the number 
10073            in a writable string for gcc to pass to sscanf under HP/UX.
10074         */
10075         sprintf(str, "2147483647");
10076         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10077         g = 10 * f;
10078         i32  = ($xxx) g;
10079
10080         /* x86 processors will probably give 0x8000 0000, which is a
10081        sign change.  We don't want that.  We want to mimic SPARC
10082            behavior here, which is to preserve the sign and give
10083            back 0x7fff ffff.
10084         */
10085         if (i32 != ($xxx) f)
10086                 result |= 1;
10087         exit(result);
10088 }
10089 EOCP
10090 set try
10091 if eval $compile_ok; then
10092         $run ./try
10093         yyy=$?
10094 else
10095         echo "(I can't seem to compile the test program--assuming it can't)"
10096         yyy=1
10097 fi
10098 case "$yyy" in
10099 0)      val="$define"
10100         echo "Yup, it can."
10101         ;;
10102 *)      val="$undef"
10103         echo "Nope, it can't."
10104         ;;
10105 esac
10106 set d_casti32
10107 eval $setvar
10108 $rm -f try try.*
10109
10110 : check for ability to cast negative floats to unsigned
10111 echo " "
10112 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10113 $cat >try.c <<EOCP
10114 #include <stdio.h>
10115 #$i_stdlib I_STDLIB
10116 #ifdef I_STDLIB
10117 #include <stdlib.h>
10118 #endif
10119 #include <sys/types.h>
10120 #include <signal.h>
10121 $signal_t blech(s) int s; { exit(7); }
10122 $signal_t blech_in_list(s) int s; { exit(4); }
10123 unsigned long dummy_long(p) unsigned long p; { return p; }
10124 unsigned int dummy_int(p) unsigned int p; { return p; }
10125 unsigned short dummy_short(p) unsigned short p; { return p; }
10126 int main()
10127 {
10128         double f;
10129         unsigned long along;
10130         unsigned int aint;
10131         unsigned short ashort;
10132         int result = 0;
10133         char str[16];
10134         
10135         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10136            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10137            optimized the whole file away
10138         */
10139         /* Store the number in a writable string for gcc to pass to 
10140            sscanf under HP/UX.
10141         */
10142         sprintf(str, "-123");
10143         sscanf(str, "%lf", &f);  /* f = -123.; */
10144
10145         signal(SIGFPE, blech);
10146         along = (unsigned long)f;
10147         aint = (unsigned int)f;
10148         ashort = (unsigned short)f;
10149         if (along != (unsigned long)-123)
10150                 result |= 1;
10151         if (aint != (unsigned int)-123)
10152                 result |= 1;
10153         if (ashort != (unsigned short)-123)
10154                 result |= 1;
10155         sprintf(str, "1073741824.");
10156         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10157         f = f + f;
10158         along = 0;
10159         along = (unsigned long)f;
10160         if (along != 0x80000000)
10161                 result |= 2;
10162         f -= 1.;
10163         along = 0;
10164         along = (unsigned long)f;
10165         if (along != 0x7fffffff)
10166                 result |= 1;
10167         f += 2.;
10168         along = 0;
10169         along = (unsigned long)f;
10170         if (along != 0x80000001)
10171                 result |= 2;
10172         if (result)
10173                 exit(result);
10174         signal(SIGFPE, blech_in_list);
10175         sprintf(str, "123.");
10176         sscanf(str, "%lf", &f);  /* f = 123.; */
10177         along = dummy_long((unsigned long)f);
10178         aint = dummy_int((unsigned int)f);
10179         ashort = dummy_short((unsigned short)f);
10180         if (along != (unsigned long)123)
10181                 result |= 4;
10182         if (aint != (unsigned int)123)
10183                 result |= 4;
10184         if (ashort != (unsigned short)123)
10185                 result |= 4;
10186         exit(result);
10187
10188 }
10189 EOCP
10190 set try
10191 if eval $compile_ok; then
10192         $run ./try
10193         castflags=$?
10194 else
10195         echo "(I can't seem to compile the test program--assuming it can't)"
10196         castflags=7
10197 fi
10198 case "$castflags" in
10199 0)      val="$define"
10200         echo "Yup, it can."
10201         ;;
10202 *)      val="$undef"
10203         echo "Nope, it can't."
10204         ;;
10205 esac
10206 set d_castneg
10207 eval $setvar
10208 $rm -f try.*
10209
10210 : see if vprintf exists
10211 echo " "
10212 if set vprintf val -f d_vprintf; eval $csym; $val; then
10213         echo 'vprintf() found.' >&4
10214         val="$define"
10215         $cat >try.c <<EOF
10216 #include <varargs.h>
10217 #$i_stdlib I_STDLIB
10218 #ifdef I_STDLIB
10219 #include <stdlib.h>
10220 #endif
10221
10222 int main() { xxx("foo"); }
10223
10224 xxx(va_alist)
10225 va_dcl
10226 {
10227         va_list args;
10228         char buf[10];
10229
10230         va_start(args);
10231         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10232 }
10233 EOF
10234         set try
10235         if eval $compile && $run ./try; then
10236                 echo "Your vsprintf() returns (int)." >&4
10237                 val2="$undef"
10238         else
10239                 echo "Your vsprintf() returns (char*)." >&4
10240                 val2="$define"
10241         fi
10242 else
10243         echo 'vprintf() NOT found.' >&4
10244                 val="$undef"
10245                 val2="$undef"
10246 fi
10247 $rm -f try try.*
10248 set d_vprintf
10249 eval $setvar
10250 val=$val2
10251 set d_charvspr
10252 eval $setvar
10253
10254 : see if chown exists
10255 set chown d_chown
10256 eval $inlibc
10257
10258 : see if chroot exists
10259 set chroot d_chroot
10260 eval $inlibc
10261
10262 : see if chsize exists
10263 set chsize d_chsize
10264 eval $inlibc
10265
10266 : see if class exists
10267 set class d_class
10268 eval $inlibc
10269
10270 hasstruct='varname=$1; struct=$2; shift; shift;
10271 while $test $# -ge 2; do
10272         case "$1" in
10273         $define) echo "#include <$2>";;
10274         esac ;
10275     shift 2;
10276 done > try.c;
10277 echo "int main () { struct $struct foo; }" >> try.c;
10278 set try;
10279 if eval $compile; then
10280         val="$define";
10281 else
10282         val="$undef";
10283 fi;
10284 set $varname;
10285 eval $setvar;
10286 $rm -f try.c try.o'
10287
10288 socketlib=''
10289 sockethdr=''
10290 : see whether socket exists
10291 echo " "
10292 $echo $n "Hmm... $c" >&4
10293 if set socket val -f d_socket; eval $csym; $val; then
10294         echo "Looks like you have Berkeley networking support." >&4
10295         d_socket="$define"
10296         if set setsockopt val -f; eval $csym; $val; then
10297                 d_oldsock="$undef"
10298         else
10299                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10300                 d_oldsock="$define"
10301         fi
10302 else
10303         if $contains socklib libc.list >/dev/null 2>&1; then
10304                 echo "Looks like you have Berkeley networking support." >&4
10305                 d_socket="$define"
10306                 : we will have to assume that it supports the 4.2 BSD interface
10307                 d_oldsock="$undef"
10308         else
10309                 echo "You don't have Berkeley networking in libc$_a..." >&4
10310                 if test "X$d_socket" = "X$define"; then
10311                    echo "...but you seem to believe that you have sockets." >&4
10312                 else
10313                         for net in net socket
10314                         do
10315                                 if test -f /usr/lib/lib$net$_a; then
10316                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10317                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10318                                         if $contains socket libc.list >/dev/null 2>&1; then
10319                                                 d_socket="$define"
10320                                                 socketlib="-l$net"
10321                                                 case "$net" in
10322                                                 net)
10323                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10324                                                         sockethdr="-I/usr/netinclude"
10325                                                         ;;
10326                                                 esac
10327                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10328                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10329                                                         d_oldsock="$undef"
10330                                                 else
10331                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10332                                                         d_oldsock="$define"
10333                                                 fi
10334                                                 break
10335                                         fi
10336                                 fi
10337                         done
10338                         if test "X$d_socket" != "X$define"; then
10339                            echo "or anywhere else I see." >&4
10340                            d_socket="$undef"
10341                            d_oldsock="$undef"
10342                         fi
10343                 fi
10344         fi
10345 fi
10346
10347 : see if socketpair exists
10348 set socketpair d_sockpair
10349 eval $inlibc
10350
10351
10352 echo " "
10353 echo "Checking the availability of certain socket constants..." >&4
10354 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10355         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10356         $cat >try.c <<EOF
10357 #include <sys/types.h>
10358 #include <sys/socket.h>
10359 int main() {
10360     int i = $ENUM;
10361 }
10362 EOF
10363         val="$undef"
10364         set try; if eval $compile; then
10365                 val="$define"
10366         fi
10367         set d_${enum}; eval $setvar
10368         $rm -f try.c try
10369 done
10370
10371 : see if this is a sys/uio.h system
10372 set sys/uio.h i_sysuio
10373 eval $inhdr
10374
10375
10376 echo " "
10377 echo "Checking to see if your system supports struct cmsghdr..." >&4
10378 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10379 eval $hasstruct
10380 case "$d_cmsghdr_s" in
10381 "$define")      echo "Yes, it does."   ;;
10382 *)              echo "No, it doesn't." ;;
10383 esac
10384
10385
10386 : check for const keyword
10387 echo " "
10388 echo 'Checking to see if your C compiler knows about "const"...' >&4
10389 $cat >const.c <<'EOCP'
10390 typedef struct spug { int drokk; } spug;
10391 int main()
10392 {
10393         const char *foo;
10394         const spug y;
10395 }
10396 EOCP
10397 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10398         val="$define"
10399         echo "Yup, it does."
10400 else
10401         val="$undef"
10402         echo "Nope, it doesn't."
10403 fi
10404 set d_const
10405 eval $setvar
10406
10407 : see if copysignl exists
10408 set copysignl d_copysignl
10409 eval $inlibc
10410
10411 : see if crypt exists
10412 echo " "
10413 set crypt d_crypt
10414 eval $inlibc
10415 case "$d_crypt" in
10416 $define) cryptlib='' ;;
10417 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10418                 echo 'crypt() found.' >&4
10419                 val="$define"
10420                 cryptlib=''
10421         else
10422                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10423                 if $test -z "$cryptlib"; then
10424                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10425                 else
10426                         cryptlib=-lcrypt
10427                 fi
10428                 if $test -z "$cryptlib"; then
10429                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10430                 else
10431                         cryptlib=-lcrypt
10432                 fi
10433                 if $test -z "$cryptlib"; then
10434                         cryptlib=`./loc libcrypt$_a "" $libpth`
10435                 else
10436                         cryptlib=-lcrypt
10437                 fi
10438                 if $test -z "$cryptlib"; then
10439                         echo 'crypt() NOT found.' >&4
10440                         val="$undef"
10441                 else
10442                         val="$define"
10443                 fi
10444         fi
10445         set d_crypt
10446         eval $setvar
10447         ;;
10448 esac
10449
10450 : see if this is a crypt.h system
10451 set crypt.h i_crypt
10452 eval $inhdr
10453
10454 : see if crypt_r exists
10455 set crypt_r d_crypt_r
10456 eval $inlibc
10457 case "$d_crypt_r" in
10458 "$define")
10459         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10460         case "$d_crypt_r_proto:$usethreads" in
10461         ":define")      d_crypt_r_proto=define
10462                 set d_crypt_r_proto crypt_r $hdrs
10463                 eval $hasproto ;;
10464         *)      ;;
10465         esac
10466         case "$d_crypt_r_proto" in
10467         define)
10468         case "$crypt_r_proto" in
10469         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10470         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10471         esac
10472         case "$crypt_r_proto" in
10473         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10474         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10475         esac
10476         case "$crypt_r_proto" in
10477         ''|0)   d_crypt_r=undef
10478                 crypt_r_proto=0
10479                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10480         * )     case "$crypt_r_proto" in
10481                 REENTRANT_PROTO*) ;;
10482                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10483                 esac
10484                 echo "Prototype: $try" ;;
10485         esac
10486         ;;
10487         *)      case "$usethreads" in
10488                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10489                 esac
10490                 d_crypt_r=undef
10491                 crypt_r_proto=0
10492                 ;;
10493         esac
10494         ;;
10495 *)      crypt_r_proto=0
10496         ;;
10497 esac
10498
10499 : get csh whereabouts
10500 case "$csh" in
10501 'csh') val="$undef" ;;
10502 *) val="$define" ;;
10503 esac
10504 set d_csh
10505 eval $setvar
10506 : Respect a hint or command line value for full_csh.
10507 case "$full_csh" in
10508 '') full_csh=$csh ;;
10509 esac
10510
10511 : see if ctermid_r exists
10512 set ctermid_r d_ctermid_r
10513 eval $inlibc
10514 case "$d_ctermid_r" in
10515 "$define")
10516         hdrs="$i_systypes sys/types.h define stdio.h "
10517         case "$d_ctermid_r_proto:$usethreads" in
10518         ":define")      d_ctermid_r_proto=define
10519                 set d_ctermid_r_proto ctermid_r $hdrs
10520                 eval $hasproto ;;
10521         *)      ;;
10522         esac
10523         case "$d_ctermid_r_proto" in
10524         define)
10525         case "$ctermid_r_proto" in
10526         ''|0) try='char* ctermid_r(char*);'
10527         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10528         esac
10529         case "$ctermid_r_proto" in
10530         ''|0)   d_ctermid_r=undef
10531                 ctermid_r_proto=0
10532                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10533         * )     case "$ctermid_r_proto" in
10534                 REENTRANT_PROTO*) ;;
10535                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10536                 esac
10537                 echo "Prototype: $try" ;;
10538         esac
10539         ;;
10540         *)      case "$usethreads" in
10541                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10542                 esac
10543                 d_ctermid_r=undef
10544                 ctermid_r_proto=0
10545                 ;;
10546         esac
10547         ;;
10548 *)      ctermid_r_proto=0
10549         ;;
10550 esac
10551
10552 : see if ctime_r exists
10553 set ctime_r d_ctime_r
10554 eval $inlibc
10555 case "$d_ctime_r" in
10556 "$define")
10557         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10558         case "$d_ctime_r_proto:$usethreads" in
10559         ":define")      d_ctime_r_proto=define
10560                 set d_ctime_r_proto ctime_r $hdrs
10561                 eval $hasproto ;;
10562         *)      ;;
10563         esac
10564         case "$d_ctime_r_proto" in
10565         define)
10566         case "$ctime_r_proto" in
10567         ''|0) try='char* ctime_r(const time_t*, char*);'
10568         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10569         esac
10570         case "$ctime_r_proto" in
10571         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10572         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10573         esac
10574         case "$ctime_r_proto" in
10575         ''|0) try='int ctime_r(const time_t*, char*);'
10576         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10577         esac
10578         case "$ctime_r_proto" in
10579         ''|0) try='int ctime_r(const time_t*, char*, int);'
10580         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10581         esac
10582         case "$ctime_r_proto" in
10583         ''|0)   d_ctime_r=undef
10584                 ctime_r_proto=0
10585                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10586         * )     case "$ctime_r_proto" in
10587                 REENTRANT_PROTO*) ;;
10588                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10589                 esac
10590                 echo "Prototype: $try" ;;
10591         esac
10592         ;;
10593         *)      case "$usethreads" in
10594                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10595                 esac
10596                 d_ctime_r=undef
10597                 ctime_r_proto=0
10598                 ;;
10599         esac
10600         ;;
10601 *)      ctime_r_proto=0
10602         ;;
10603 esac
10604
10605 : see if cuserid exists
10606 set cuserid d_cuserid
10607 eval $inlibc
10608
10609 : see if this is a limits.h system
10610 set limits.h i_limits
10611 eval $inhdr
10612
10613 : see if this is a float.h system
10614 set float.h i_float
10615 eval $inhdr
10616
10617 : See if number of significant digits in a double precision number is known
10618 echo " "
10619 $cat >dbl_dig.c <<EOM
10620 #$i_limits I_LIMITS
10621 #$i_float I_FLOAT
10622 #ifdef I_LIMITS
10623 #include <limits.h>
10624 #endif
10625 #ifdef I_FLOAT
10626 #include <float.h>
10627 #endif
10628 #ifdef DBL_DIG
10629 printf("Contains DBL_DIG");
10630 #endif
10631 EOM
10632 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10633 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10634         echo "DBL_DIG found." >&4
10635         val="$define"
10636 else
10637         echo "DBL_DIG NOT found." >&4
10638         val="$undef"
10639 fi
10640 $rm -f dbl_dig.?
10641 set d_dbl_dig
10642 eval $setvar
10643
10644 : see if dbm.h is available
10645 : see if dbmclose exists
10646 set dbmclose d_dbmclose
10647 eval $inlibc
10648
10649 case "$d_dbmclose" in
10650 $define)
10651         set dbm.h i_dbm
10652         eval $inhdr
10653         case "$i_dbm" in
10654         $define)
10655                 val="$undef"
10656                 set i_rpcsvcdbm
10657                 eval $setvar
10658                 ;;
10659         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10660                 eval $inhdr
10661                 ;;
10662         esac
10663         ;;
10664 *)      echo "We won't be including <dbm.h>"
10665         val="$undef"
10666         set i_dbm
10667         eval $setvar
10668         val="$undef"
10669         set i_rpcsvcdbm
10670         eval $setvar
10671         ;;
10672 esac
10673
10674 : see if prototype for dbminit is available
10675 echo " "
10676 set d_dbminitproto dbminit $i_dbm dbm.h
10677 eval $hasproto
10678
10679 : see if difftime exists
10680 set difftime d_difftime
10681 eval $inlibc
10682
10683 : see if this is a dirent system
10684 echo " "
10685 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10686         val="$define"
10687         echo "<dirent.h> found." >&4
10688 else
10689         val="$undef"
10690         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10691                 echo "<sys/dir.h> found." >&4
10692                 echo " "
10693         else
10694                 xinc=`./findhdr sys/ndir.h`
10695         fi
10696         echo "<dirent.h> NOT found." >&4
10697 fi
10698 set i_dirent
10699 eval $setvar
10700
10701 : Look for type of directory structure.
10702 echo " "
10703 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10704
10705 case "$direntrytype" in
10706 ''|' ')
10707         case "$i_dirent" in
10708         $define) guess1='struct dirent' ;;
10709         *) guess1='struct direct'  ;;
10710         esac
10711         ;;
10712 *)      guess1="$direntrytype"
10713         ;;
10714 esac
10715
10716 case "$guess1" in
10717 'struct dirent') guess2='struct direct' ;;
10718 *) guess2='struct dirent' ;;
10719 esac
10720                 
10721 if $contains "$guess1" try.c >/dev/null 2>&1; then
10722         direntrytype="$guess1"
10723         echo "Your directory entries are $direntrytype." >&4
10724 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10725         direntrytype="$guess2"
10726         echo "Your directory entries seem to be $direntrytype." >&4
10727 else
10728         echo "I don't recognize your system's directory entries." >&4
10729         rp="What type is used for directory entries on this system?"
10730         dflt="$guess1"
10731         . ./myread
10732         direntrytype="$ans"
10733 fi
10734 $rm -f try.c
10735
10736
10737 : see if the directory entry stores field length
10738 echo " "
10739 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10740 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10741         echo "Good, your directory entry keeps length information in d_namlen." >&4
10742         val="$define"
10743 else
10744         echo "Your directory entry does not know about the d_namlen field." >&4
10745         val="$undef"
10746 fi
10747 set d_dirnamlen
10748 eval $setvar
10749 $rm -f try.c
10750
10751 : see if this is an sysdir system
10752 set sys/dir.h i_sysdir
10753 eval $inhdr
10754
10755 : see if this is an sysndir system
10756 set sys/ndir.h i_sysndir
10757 eval $inhdr
10758
10759 : Look for dirfd
10760 echo " "
10761 $cat >dirfd.c <<EOM
10762 #include <stdio.h>
10763 #$i_stdlib I_STDLIB
10764 #ifdef I_STDLIB
10765 #include <stdlib.h>
10766 #endif
10767 #$i_dirent I_DIRENT             /**/
10768 #$i_sysdir I_SYS_DIR            /**/
10769 #$i_sysndir I_SYS_NDIR          /**/
10770 #$i_systypes I_SYS_TYPES        /**/
10771 #if defined(I_SYS_TYPES)
10772 #include <sys/types.h>
10773 #endif
10774 #if defined(I_DIRENT)
10775 #include <dirent.h>
10776 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10777 #include <sys/dir.h>
10778 #endif
10779 #else
10780 #ifdef I_SYS_NDIR
10781 #include <sys/ndir.h>
10782 #else
10783 #ifdef I_SYS_DIR
10784 #ifdef hp9000s500
10785 #include <ndir.h>       /* may be wrong in the future */
10786 #else
10787 #include <sys/dir.h>
10788 #endif
10789 #endif
10790 #endif
10791 #endif 
10792 int main() {
10793         DIR *dirp = opendir(".");
10794         if (dirfd(dirp) >= 0)
10795                 exit(0);
10796         else
10797                 exit(1);
10798 }
10799 EOM
10800 set dirfd
10801 if eval $compile; then
10802         val="$define"
10803 fi
10804 case "$val" in
10805 $define)        echo "dirfd() found." >&4       ;;
10806 *)              echo "dirfd() NOT found." >&4   ;;
10807 esac
10808 set d_dirfd
10809 eval $setvar
10810 $rm -f dirfd*
10811
10812 : see if dlerror exists
10813 xxx_runnm="$runnm"
10814 runnm=false
10815 set dlerror d_dlerror
10816 eval $inlibc
10817 runnm="$xxx_runnm"
10818
10819 : see if dlfcn is available
10820 set dlfcn.h i_dlfcn
10821 eval $inhdr
10822
10823 case "$usedl" in
10824 $define|y|true)
10825         $cat << EOM
10826
10827 On a few systems, the dynamically loaded modules that perl generates and uses
10828 will need a different extension than shared libs. The default will probably
10829 be appropriate.
10830
10831 EOM
10832         case "$dlext" in
10833         '')     dflt="$so" ;;
10834         *)      dflt="$dlext" ;;
10835         esac
10836         rp='What is the extension of dynamically loaded modules'
10837         . ./myread
10838         dlext="$ans"
10839         ;;
10840 *)
10841         dlext="none"
10842         ;;
10843 esac
10844
10845 : Check if dlsym need a leading underscore
10846 echo " "
10847 val="$undef"
10848
10849 case "$dlsrc" in
10850 dl_dlopen.xs)
10851         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10852         $cat >dyna.c <<'EOM'
10853 fred () { }
10854 EOM
10855
10856 $cat >fred.c<<EOM
10857
10858 #include <stdio.h>
10859 #$i_stdlib I_STDLIB
10860 #ifdef I_STDLIB
10861 #include <stdlib.h>
10862 #endif
10863 #$i_dlfcn I_DLFCN
10864 #ifdef I_DLFCN
10865 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10866 #else
10867 #include <sys/types.h>
10868 #include <nlist.h>
10869 #include <link.h>
10870 #endif
10871
10872 extern int fred() ;
10873
10874 int main()
10875 {
10876     void * handle ;
10877     void * symbol ;
10878 #ifndef RTLD_LAZY
10879     int mode = 1 ;
10880 #else
10881     int mode = RTLD_LAZY ;
10882 #endif
10883     handle = dlopen("./dyna.$dlext", mode) ;
10884     if (handle == NULL) {
10885         printf ("1\n") ;
10886         fflush (stdout) ;
10887         exit(0);
10888     }
10889     symbol = dlsym(handle, "fred") ;
10890     if (symbol == NULL) {
10891         /* try putting a leading underscore */
10892         symbol = dlsym(handle, "_fred") ;
10893         if (symbol == NULL) {
10894             printf ("2\n") ;
10895             fflush (stdout) ;
10896             exit(0);
10897         }
10898         printf ("3\n") ;
10899     }
10900     else
10901         printf ("4\n") ;
10902     fflush (stdout) ;
10903     exit(0);
10904 }
10905 EOM
10906         : Call the object file tmp-dyna.o in case dlext=o.
10907         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10908                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10909                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10910                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10911                 xxx=`$run ./fred`
10912                 case $xxx in
10913                 1)      echo "Test program failed using dlopen." >&4
10914                         echo "Perhaps you should not use dynamic loading." >&4;;
10915                 2)      echo "Test program failed using dlsym." >&4
10916                         echo "Perhaps you should not use dynamic loading." >&4;;
10917                 3)      echo "dlsym needs a leading underscore" >&4
10918                         val="$define" ;;
10919                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10920                 esac
10921         else
10922                 echo "I can't compile and run the test program." >&4
10923                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10924         fi
10925         ;;
10926 esac
10927                 
10928 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10929
10930 set d_dlsymun
10931 eval $setvar
10932
10933 : see if drand48_r exists
10934 set drand48_r d_drand48_r
10935 eval $inlibc
10936 case "$d_drand48_r" in
10937 "$define")
10938         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10939         case "$d_drand48_r_proto:$usethreads" in
10940         ":define")      d_drand48_r_proto=define
10941                 set d_drand48_r_proto drand48_r $hdrs
10942                 eval $hasproto ;;
10943         *)      ;;
10944         esac
10945         case "$d_drand48_r_proto" in
10946         define)
10947         case "$drand48_r_proto" in
10948         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10949         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10950         esac
10951         case "$drand48_r_proto" in
10952         ''|0)   d_drand48_r=undef
10953                 drand48_r_proto=0
10954                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10955         * )     case "$drand48_r_proto" in
10956                 REENTRANT_PROTO*) ;;
10957                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10958                 esac
10959                 echo "Prototype: $try" ;;
10960         esac
10961         ;;
10962         *)      case "$usethreads" in
10963                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10964                 esac
10965                 d_drand48_r=undef
10966                 drand48_r_proto=0
10967                 ;;
10968         esac
10969         ;;
10970 *)      drand48_r_proto=0
10971         ;;
10972 esac
10973
10974 : see if prototype for drand48 is available
10975 echo " "
10976 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10977 eval $hasproto
10978
10979 : see if dup2 exists
10980 set dup2 d_dup2
10981 eval $inlibc
10982
10983 : see if eaccess exists
10984 set eaccess d_eaccess
10985 eval $inlibc
10986
10987 : see if endgrent exists
10988 set endgrent d_endgrent
10989 eval $inlibc
10990
10991 : see if this is an grp system
10992 set grp.h i_grp
10993 eval $inhdr
10994
10995 case "$i_grp" in
10996 $define)
10997         xxx=`./findhdr grp.h`
10998         $cppstdin $cppflags $cppminus < $xxx >$$.h
10999
11000         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11001                 val="$define"
11002         else
11003                 val="$undef"
11004         fi
11005         set d_grpasswd
11006         eval $setvar
11007
11008         $rm -f $$.h
11009         ;;
11010 *)
11011         val="$undef";
11012         set d_grpasswd; eval $setvar
11013         ;;
11014 esac
11015
11016 : see if endgrent_r exists
11017 set endgrent_r d_endgrent_r
11018 eval $inlibc
11019 case "$d_endgrent_r" in
11020 "$define")
11021         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11022         case "$d_endgrent_r_proto:$usethreads" in
11023         ":define")      d_endgrent_r_proto=define
11024                 set d_endgrent_r_proto endgrent_r $hdrs
11025                 eval $hasproto ;;
11026         *)      ;;
11027         esac
11028         case "$d_endgrent_r_proto" in
11029         define)
11030         case "$endgrent_r_proto" in
11031         ''|0) try='int endgrent_r(FILE**);'
11032         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11033         esac
11034         case "$endgrent_r_proto" in
11035         ''|0) try='void endgrent_r(FILE**);'
11036         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11037         esac
11038         case "$endgrent_r_proto" in
11039         ''|0)   d_endgrent_r=undef
11040                 endgrent_r_proto=0
11041                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11042         * )     case "$endgrent_r_proto" in
11043                 REENTRANT_PROTO*) ;;
11044                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11045                 esac
11046                 echo "Prototype: $try" ;;
11047         esac
11048         ;;
11049         *)      case "$usethreads" in
11050                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11051                 esac
11052                 d_endgrent_r=undef
11053                 endgrent_r_proto=0
11054                 ;;
11055         esac
11056         ;;
11057 *)      endgrent_r_proto=0
11058         ;;
11059 esac
11060
11061 : see if endhostent exists
11062 set endhostent d_endhent
11063 eval $inlibc
11064
11065 : see if this is a netdb.h system
11066 set netdb.h i_netdb
11067 eval $inhdr
11068
11069 : see if endhostent_r exists
11070 set endhostent_r d_endhostent_r
11071 eval $inlibc
11072 case "$d_endhostent_r" in
11073 "$define")
11074         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11075         case "$d_endhostent_r_proto:$usethreads" in
11076         ":define")      d_endhostent_r_proto=define
11077                 set d_endhostent_r_proto endhostent_r $hdrs
11078                 eval $hasproto ;;
11079         *)      ;;
11080         esac
11081         case "$d_endhostent_r_proto" in
11082         define)
11083         case "$endhostent_r_proto" in
11084         ''|0) try='int endhostent_r(struct hostent_data*);'
11085         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11086         esac
11087         case "$endhostent_r_proto" in
11088         ''|0) try='void endhostent_r(struct hostent_data*);'
11089         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11090         esac
11091         case "$endhostent_r_proto" in
11092         ''|0)   d_endhostent_r=undef
11093                 endhostent_r_proto=0
11094                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11095         * )     case "$endhostent_r_proto" in
11096                 REENTRANT_PROTO*) ;;
11097                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11098                 esac
11099                 echo "Prototype: $try" ;;
11100         esac
11101         ;;
11102         *)      case "$usethreads" in
11103                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11104                 esac
11105                 d_endhostent_r=undef
11106                 endhostent_r_proto=0
11107                 ;;
11108         esac
11109         ;;
11110 *)      endhostent_r_proto=0
11111         ;;
11112 esac
11113
11114 : see if endnetent exists
11115 set endnetent d_endnent
11116 eval $inlibc
11117
11118 : see if endnetent_r exists
11119 set endnetent_r d_endnetent_r
11120 eval $inlibc
11121 case "$d_endnetent_r" in
11122 "$define")
11123         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11124         case "$d_endnetent_r_proto:$usethreads" in
11125         ":define")      d_endnetent_r_proto=define
11126                 set d_endnetent_r_proto endnetent_r $hdrs
11127                 eval $hasproto ;;
11128         *)      ;;
11129         esac
11130         case "$d_endnetent_r_proto" in
11131         define)
11132         case "$endnetent_r_proto" in
11133         ''|0) try='int endnetent_r(struct netent_data*);'
11134         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11135         esac
11136         case "$endnetent_r_proto" in
11137         ''|0) try='void endnetent_r(struct netent_data*);'
11138         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11139         esac
11140         case "$endnetent_r_proto" in
11141         ''|0)   d_endnetent_r=undef
11142                 endnetent_r_proto=0
11143                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11144         * )     case "$endnetent_r_proto" in
11145                 REENTRANT_PROTO*) ;;
11146                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11147                 esac
11148                 echo "Prototype: $try" ;;
11149         esac
11150         ;;
11151         *)      case "$usethreads" in
11152                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11153                 esac
11154                 d_endnetent_r=undef
11155                 endnetent_r_proto=0
11156                 ;;
11157         esac
11158         ;;
11159 *)      endnetent_r_proto=0
11160         ;;
11161 esac
11162
11163 : see if endprotoent exists
11164 set endprotoent d_endpent
11165 eval $inlibc
11166
11167 : see if endprotoent_r exists
11168 set endprotoent_r d_endprotoent_r
11169 eval $inlibc
11170 case "$d_endprotoent_r" in
11171 "$define")
11172         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11173         case "$d_endprotoent_r_proto:$usethreads" in
11174         ":define")      d_endprotoent_r_proto=define
11175                 set d_endprotoent_r_proto endprotoent_r $hdrs
11176                 eval $hasproto ;;
11177         *)      ;;
11178         esac
11179         case "$d_endprotoent_r_proto" in
11180         define)
11181         case "$endprotoent_r_proto" in
11182         ''|0) try='int endprotoent_r(struct protoent_data*);'
11183         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11184         esac
11185         case "$endprotoent_r_proto" in
11186         ''|0) try='void endprotoent_r(struct protoent_data*);'
11187         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11188         esac
11189         case "$endprotoent_r_proto" in
11190         ''|0)   d_endprotoent_r=undef
11191                 endprotoent_r_proto=0
11192                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11193         * )     case "$endprotoent_r_proto" in
11194                 REENTRANT_PROTO*) ;;
11195                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11196                 esac
11197                 echo "Prototype: $try" ;;
11198         esac
11199         ;;
11200         *)      case "$usethreads" in
11201                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11202                 esac
11203                 d_endprotoent_r=undef
11204                 endprotoent_r_proto=0
11205                 ;;
11206         esac
11207         ;;
11208 *)      endprotoent_r_proto=0
11209         ;;
11210 esac
11211
11212 : see if endpwent exists
11213 set endpwent d_endpwent
11214 eval $inlibc
11215
11216 : see if this is a pwd.h system
11217 set pwd.h i_pwd
11218 eval $inhdr
11219
11220 case "$i_pwd" in
11221 $define)
11222         xxx=`./findhdr pwd.h`
11223         $cppstdin $cppflags $cppminus < $xxx >$$.h
11224
11225         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11226                 val="$define"
11227         else
11228                 val="$undef"
11229         fi
11230         set d_pwquota
11231         eval $setvar
11232
11233         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11234                 val="$define"
11235         else
11236                 val="$undef"
11237         fi
11238         set d_pwage
11239         eval $setvar
11240
11241         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11242                 val="$define"
11243         else
11244                 val="$undef"
11245         fi
11246         set d_pwchange
11247         eval $setvar
11248
11249         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11250                 val="$define"
11251         else
11252                 val="$undef"
11253         fi
11254         set d_pwclass
11255         eval $setvar
11256
11257         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11258                 val="$define"
11259         else
11260                 val="$undef"
11261         fi
11262         set d_pwexpire
11263         eval $setvar
11264
11265         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11266                 val="$define"
11267         else
11268                 val="$undef"
11269         fi
11270         set d_pwcomment
11271         eval $setvar
11272
11273         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11274                 val="$define"
11275         else
11276                 val="$undef"
11277         fi
11278         set d_pwgecos
11279         eval $setvar
11280
11281         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11282                 val="$define"
11283         else
11284                 val="$undef"
11285         fi
11286         set d_pwpasswd
11287         eval $setvar
11288
11289         $rm -f $$.h
11290         ;;
11291 *)
11292         val="$undef"; 
11293         set d_pwquota; eval $setvar
11294         set d_pwage; eval $setvar
11295         set d_pwchange; eval $setvar
11296         set d_pwclass; eval $setvar
11297         set d_pwexpire; eval $setvar
11298         set d_pwcomment; eval $setvar
11299         set d_pwgecos; eval $setvar
11300         set d_pwpasswd; eval $setvar
11301         ;;
11302 esac
11303
11304 : see if endpwent_r exists
11305 set endpwent_r d_endpwent_r
11306 eval $inlibc
11307 case "$d_endpwent_r" in
11308 "$define")
11309         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11310         case "$d_endpwent_r_proto:$usethreads" in
11311         ":define")      d_endpwent_r_proto=define
11312                 set d_endpwent_r_proto endpwent_r $hdrs
11313                 eval $hasproto ;;
11314         *)      ;;
11315         esac
11316         case "$d_endpwent_r_proto" in
11317         define)
11318         case "$endpwent_r_proto" in
11319         ''|0) try='int endpwent_r(FILE**);'
11320         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11321         esac
11322         case "$endpwent_r_proto" in
11323         ''|0) try='void endpwent_r(FILE**);'
11324         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11325         esac
11326         case "$endpwent_r_proto" in
11327         ''|0)   d_endpwent_r=undef
11328                 endpwent_r_proto=0
11329                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11330         * )     case "$endpwent_r_proto" in
11331                 REENTRANT_PROTO*) ;;
11332                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11333                 esac
11334                 echo "Prototype: $try" ;;
11335         esac
11336         ;;
11337         *)      case "$usethreads" in
11338                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11339                 esac
11340                 d_endpwent_r=undef
11341                 endpwent_r_proto=0
11342                 ;;
11343         esac
11344         ;;
11345 *)      endpwent_r_proto=0
11346         ;;
11347 esac
11348
11349 : see if endservent exists
11350 set endservent d_endsent
11351 eval $inlibc
11352
11353 : see if endservent_r exists
11354 set endservent_r d_endservent_r
11355 eval $inlibc
11356 case "$d_endservent_r" in
11357 "$define")
11358         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11359         case "$d_endservent_r_proto:$usethreads" in
11360         ":define")      d_endservent_r_proto=define
11361                 set d_endservent_r_proto endservent_r $hdrs
11362                 eval $hasproto ;;
11363         *)      ;;
11364         esac
11365         case "$d_endservent_r_proto" in
11366         define)
11367         case "$endservent_r_proto" in
11368         ''|0) try='int endservent_r(struct servent_data*);'
11369         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11370         esac
11371         case "$endservent_r_proto" in
11372         ''|0) try='void endservent_r(struct servent_data*);'
11373         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11374         esac
11375         case "$endservent_r_proto" in
11376         ''|0)   d_endservent_r=undef
11377                 endservent_r_proto=0
11378                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11379         * )     case "$endservent_r_proto" in
11380                 REENTRANT_PROTO*) ;;
11381                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11382                 esac
11383                 echo "Prototype: $try" ;;
11384         esac
11385         ;;
11386         *)      case "$usethreads" in
11387                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11388                 esac
11389                 d_endservent_r=undef
11390                 endservent_r_proto=0
11391                 ;;
11392         esac
11393         ;;
11394 *)      endservent_r_proto=0
11395         ;;
11396 esac
11397
11398 : Locate the flags for 'open()'
11399 echo " "
11400 $cat >try.c <<EOCP
11401 #include <sys/types.h>
11402 #ifdef I_FCNTL
11403 #include <fcntl.h>
11404 #endif
11405 #ifdef I_SYS_FILE
11406 #include <sys/file.h>
11407 #endif
11408 #$i_stdlib I_STDLIB
11409 #ifdef I_STDLIB
11410 #include <stdlib.h>
11411 #endif
11412 int main() {
11413         if(O_RDONLY);
11414 #ifdef O_TRUNC
11415         exit(0);
11416 #else
11417         exit(1);
11418 #endif
11419 }
11420 EOCP
11421 : check sys/file.h first to get FREAD on Sun
11422 if $test `./findhdr sys/file.h` && \
11423                 set try -DI_SYS_FILE && eval $compile; then
11424         h_sysfile=true;
11425         echo "<sys/file.h> defines the O_* constants..." >&4
11426         if $run ./try; then
11427                 echo "and you have the 3 argument form of open()." >&4
11428                 val="$define"
11429         else
11430                 echo "but not the 3 argument form of open().  Oh, well." >&4
11431                 val="$undef"
11432         fi
11433 elif $test `./findhdr fcntl.h` && \
11434                 set try -DI_FCNTL && eval $compile; then
11435         h_fcntl=true;
11436         echo "<fcntl.h> defines the O_* constants..." >&4
11437         if $run ./try; then
11438                 echo "and you have the 3 argument form of open()." >&4
11439                 val="$define"
11440         else
11441                 echo "but not the 3 argument form of open().  Oh, well." >&4
11442                 val="$undef"
11443         fi
11444 else
11445         val="$undef"
11446         echo "I can't find the O_* constant definitions!  You got problems." >&4
11447 fi
11448 set d_open3
11449 eval $setvar
11450 $rm -f try try.*
11451
11452 : see which of string.h or strings.h is needed
11453 echo " "
11454 strings=`./findhdr string.h`
11455 if $test "$strings" && $test -r "$strings"; then
11456         echo "Using <string.h> instead of <strings.h>." >&4
11457         val="$define"
11458 else
11459         val="$undef"
11460         strings=`./findhdr strings.h`
11461         if $test "$strings" && $test -r "$strings"; then
11462                 echo "Using <strings.h> instead of <string.h>." >&4
11463         else
11464                 echo "No string header found -- You'll surely have problems." >&4
11465         fi
11466 fi
11467 set i_string
11468 eval $setvar
11469 case "$i_string" in
11470 "$undef") strings=`./findhdr strings.h`;;
11471 *)        strings=`./findhdr string.h`;;
11472 esac
11473
11474 : see if this is a sys/file.h system
11475 val=''
11476 set sys/file.h val
11477 eval $inhdr
11478
11479 : do we need to include sys/file.h ?
11480 case "$val" in
11481 "$define")
11482         echo " "
11483         if $h_sysfile; then
11484                 val="$define"
11485                 echo "We'll be including <sys/file.h>." >&4
11486         else
11487                 val="$undef"
11488                 echo "We won't be including <sys/file.h>." >&4
11489         fi
11490         ;;
11491 *)
11492         h_sysfile=false
11493         ;;
11494 esac
11495 set i_sysfile
11496 eval $setvar
11497
11498 : see if fcntl.h is there
11499 val=''
11500 set fcntl.h val
11501 eval $inhdr
11502
11503 : see if we can include fcntl.h
11504 case "$val" in
11505 "$define")
11506         echo " "
11507         if $h_fcntl; then
11508                 val="$define"
11509                 echo "We'll be including <fcntl.h>." >&4
11510         else
11511                 val="$undef"
11512                 if $h_sysfile; then
11513         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11514                 else
11515                         echo "We won't be including <fcntl.h>." >&4
11516                 fi
11517         fi
11518         ;;
11519 *)
11520         h_fcntl=false
11521         val="$undef"
11522         ;;
11523 esac
11524 set i_fcntl
11525 eval $setvar
11526
11527 : check for non-blocking I/O stuff
11528 case "$h_sysfile" in
11529 true) echo "#include <sys/file.h>" > head.c;;
11530 *)
11531        case "$h_fcntl" in
11532        true) echo "#include <fcntl.h>" > head.c;;
11533        *) echo "#include <sys/fcntl.h>" > head.c;;
11534        esac
11535        ;;
11536 esac
11537 echo " "
11538 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11539 case "$o_nonblock" in
11540 '')
11541         $cat head.c > try.c
11542         $cat >>try.c <<EOCP
11543 #include <stdio.h>
11544 #$i_stdlib I_STDLIB
11545 #ifdef I_STDLIB
11546 #include <stdlib.h>
11547 #endif
11548 #$i_fcntl I_FCNTL
11549 #ifdef I_FCNTL
11550 #include <fcntl.h>
11551 #endif
11552 int main() {
11553 #ifdef O_NONBLOCK
11554         printf("O_NONBLOCK\n");
11555         exit(0);
11556 #endif
11557 #ifdef O_NDELAY
11558         printf("O_NDELAY\n");
11559         exit(0);
11560 #endif
11561 #ifdef FNDELAY
11562         printf("FNDELAY\n");
11563         exit(0);
11564 #endif
11565         exit(0);
11566 }
11567 EOCP
11568         set try
11569         if eval $compile_ok; then
11570                 o_nonblock=`$run ./try`
11571                 case "$o_nonblock" in
11572                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11573                 *) echo "Seems like we can use $o_nonblock.";;
11574                 esac
11575         else
11576                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11577         fi
11578         ;;
11579 *) echo "Using $hint value $o_nonblock.";;
11580 esac
11581 $rm -f try try.* .out core
11582
11583 echo " "
11584 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11585 case "$eagain" in
11586 '')
11587         $cat head.c > try.c
11588         $cat >>try.c <<EOCP
11589 #include <errno.h>
11590 #include <sys/types.h>
11591 #include <signal.h>
11592 #include <stdio.h> 
11593 #$i_stdlib I_STDLIB
11594 #ifdef I_STDLIB
11595 #include <stdlib.h>
11596 #endif
11597 #$i_fcntl I_FCNTL
11598 #ifdef I_FCNTL
11599 #include <fcntl.h>
11600 #endif
11601 #define MY_O_NONBLOCK $o_nonblock
11602 #ifndef errno  /* XXX need better Configure test */
11603 extern int errno;
11604 #endif
11605 #$i_unistd I_UNISTD
11606 #ifdef I_UNISTD
11607 #include <unistd.h>
11608 #endif
11609 #$i_string I_STRING
11610 #ifdef I_STRING
11611 #include <string.h>
11612 #else
11613 #include <strings.h>
11614 #endif
11615 $signal_t blech(x) int x; { exit(3); }
11616 EOCP
11617         $cat >> try.c <<'EOCP'
11618 int main()
11619 {
11620         int pd[2];
11621         int pu[2];
11622         char buf[1];
11623         char string[100];
11624
11625         pipe(pd);       /* Down: child -> parent */
11626         pipe(pu);       /* Up: parent -> child */
11627         if (0 != fork()) {
11628                 int ret;
11629                 close(pd[1]);   /* Parent reads from pd[0] */
11630                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11631 #ifdef F_SETFL
11632                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11633                         exit(1);
11634 #else
11635                 exit(4);
11636 #endif
11637                 signal(SIGALRM, blech);
11638                 alarm(5);
11639                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11640                         exit(2);
11641                 sprintf(string, "%d\n", ret);
11642                 write(2, string, strlen(string));
11643                 alarm(0);
11644 #ifdef EAGAIN
11645                 if (errno == EAGAIN) {
11646                         printf("EAGAIN\n");
11647                         goto ok;
11648                 }
11649 #endif
11650 #ifdef EWOULDBLOCK
11651                 if (errno == EWOULDBLOCK)
11652                         printf("EWOULDBLOCK\n");
11653 #endif
11654         ok:
11655                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11656                 sleep(2);                               /* Give it time to close our pipe */
11657                 alarm(5);
11658                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11659                 alarm(0);
11660                 sprintf(string, "%d\n", ret);
11661                 write(4, string, strlen(string));
11662                 exit(0);
11663         }
11664
11665         close(pd[0]);                   /* We write to pd[1] */
11666         close(pu[1]);                   /* We read from pu[0] */
11667         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11668         close(pd[1]);                   /* Pipe pd is now fully closed! */
11669         exit(0);                                /* Bye bye, thank you for playing! */
11670 }
11671 EOCP
11672         set try
11673         if eval $compile_ok; then
11674                 echo "$startsh" >mtry
11675                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11676                 chmod +x mtry
11677                 ./mtry >/dev/null 2>&1
11678                 case $? in
11679                 0) eagain=`$cat try.out`;;
11680                 1) echo "Could not perform non-blocking setting!";;
11681                 2) echo "I did a successful read() for something that was not there!";;
11682                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11683                 4) echo "Could not find F_SETFL!";;
11684                 *) echo "Something terribly wrong happened during testing.";;
11685                 esac
11686                 rd_nodata=`$cat try.ret`
11687                 echo "A read() system call with no data present returns $rd_nodata."
11688                 case "$rd_nodata" in
11689                 0|-1) ;;
11690                 *)
11691                         echo "(That's peculiar, fixing that to be -1.)"
11692                         rd_nodata=-1
11693                         ;;
11694                 esac
11695                 case "$eagain" in
11696                 '')
11697                         echo "Forcing errno EAGAIN on read() with no data available."
11698                         eagain=EAGAIN
11699                         ;;
11700                 *)
11701                         echo "Your read() sets errno to $eagain when no data is available."
11702                         ;;
11703                 esac
11704                 status=`$cat try.err`
11705                 case "$status" in
11706                 0) echo "And it correctly returns 0 to signal EOF.";;
11707                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11708                 *) echo "However, your read() returns '$status' on EOF??";;
11709                 esac
11710                 val="$define"
11711                 if test "$status" = "$rd_nodata"; then
11712                         echo "WARNING: you can't distinguish between EOF and no data!"
11713                         val="$undef"
11714                 fi
11715         else
11716                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11717                 eagain=EAGAIN
11718         fi
11719         set d_eofnblk
11720         eval $setvar
11721         ;;
11722 *)
11723         echo "Using $hint value $eagain."
11724         echo "Your read() returns $rd_nodata when no data is present."
11725         case "$d_eofnblk" in
11726         "$define") echo "And you can see EOF because read() returns 0.";;
11727         "$undef") echo "But you can't see EOF status from read() returned value.";;
11728         *)
11729                 echo "(Assuming you can't see EOF status from read anyway.)"
11730                 d_eofnblk=$undef
11731                 ;;
11732         esac
11733         ;;
11734 esac
11735 $rm -f try try.* .out core head.c mtry
11736
11737 : see if _ptr and _cnt from stdio act std
11738 echo " "
11739
11740 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11741         echo "(Looks like you have stdio.h from BSD.)"
11742         case "$stdio_ptr" in
11743         '') stdio_ptr='((fp)->_p)'
11744                 ptr_lval=$define
11745                 ;;
11746         *)      ptr_lval=$d_stdio_ptr_lval;;
11747         esac
11748         case "$stdio_cnt" in
11749         '') stdio_cnt='((fp)->_r)'
11750                 cnt_lval=$define
11751                 ;;
11752         *)      cnt_lval=$d_stdio_cnt_lval;;
11753         esac
11754         case "$stdio_base" in
11755         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11756         esac
11757         case "$stdio_bufsiz" in
11758         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11759         esac
11760 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11761         echo "(Looks like you have stdio.h from Linux.)"
11762         case "$stdio_ptr" in
11763         '') stdio_ptr='((fp)->_IO_read_ptr)'
11764                 ptr_lval=$define
11765                 ;;
11766         *)      ptr_lval=$d_stdio_ptr_lval;;
11767         esac
11768         case "$stdio_cnt" in
11769         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11770                 cnt_lval=$undef
11771                 ;;
11772         *)      cnt_lval=$d_stdio_cnt_lval;;
11773         esac
11774         case "$stdio_base" in
11775         '') stdio_base='((fp)->_IO_read_base)';;
11776         esac
11777         case "$stdio_bufsiz" in
11778         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11779         esac
11780 else
11781         case "$stdio_ptr" in
11782         '') stdio_ptr='((fp)->_ptr)'
11783                 ptr_lval=$define
11784                 ;;
11785         *)      ptr_lval=$d_stdio_ptr_lval;;
11786         esac
11787         case "$stdio_cnt" in
11788         '') stdio_cnt='((fp)->_cnt)'
11789                 cnt_lval=$define
11790                 ;;
11791         *)      cnt_lval=$d_stdio_cnt_lval;;
11792         esac
11793         case "$stdio_base" in
11794         '') stdio_base='((fp)->_base)';;
11795         esac
11796         case "$stdio_bufsiz" in
11797         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11798         esac
11799 fi
11800
11801 : test whether _ptr and _cnt really work
11802 echo "Checking how std your stdio is..." >&4
11803 $cat >try.c <<EOP
11804 #include <stdio.h>
11805 #$i_stdlib I_STDLIB
11806 #ifdef I_STDLIB
11807 #include <stdlib.h>
11808 #endif
11809 #define FILE_ptr(fp)    $stdio_ptr
11810 #define FILE_cnt(fp)    $stdio_cnt
11811 int main() {
11812         FILE *fp = fopen("try.c", "r");
11813         char c = getc(fp);
11814         if (
11815                 18 <= FILE_cnt(fp) &&
11816                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11817         )
11818                 exit(0);
11819         exit(1);
11820 }
11821 EOP
11822 val="$undef"
11823 set try
11824 if eval $compile && $to try.c; then
11825         if $run ./try; then
11826                 echo "Your stdio acts pretty std."
11827                 val="$define"
11828         else
11829                 echo "Your stdio isn't very std."
11830         fi
11831 else
11832         echo "Your stdio doesn't appear very std."
11833 fi
11834 $rm -f try.c try
11835
11836 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11837 # direct buffer manipulation no longer works.  The Configure tests
11838 # should be changed to correctly detect this, but until then,
11839 # the following check should at least let perl compile and run.
11840 # (This quick fix should be updated before 5.8.1.)
11841 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11842 # A. Dougherty, June 3, 2002.
11843 case "$d_gnulibc" in
11844 $define)
11845         case "$gnulibc_version" in
11846         2.[01]*)  ;;
11847         2.2) ;;
11848         2.2.[0-9]) ;;
11849         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11850                 val="$undef"
11851                 ;;
11852         esac
11853         ;;
11854 esac
11855 set d_stdstdio
11856 eval $setvar
11857
11858 : Can _ptr be used as an lvalue?
11859 case "$d_stdstdio$ptr_lval" in
11860 $define$define) val=$define ;;
11861 *) val=$undef ;;
11862 esac
11863 set d_stdio_ptr_lval
11864 eval $setvar
11865
11866 : Can _cnt be used as an lvalue?
11867 case "$d_stdstdio$cnt_lval" in
11868 $define$define) val=$define ;;
11869 *) val=$undef ;;
11870 esac
11871 set d_stdio_cnt_lval
11872 eval $setvar
11873
11874
11875 : test whether setting _ptr sets _cnt as a side effect
11876 d_stdio_ptr_lval_sets_cnt="$undef"
11877 d_stdio_ptr_lval_nochange_cnt="$undef"
11878 case "$d_stdio_ptr_lval$d_stdstdio" in
11879 $define$define)
11880         echo "Checking to see what happens if we set the stdio ptr..." >&4
11881 $cat >try.c <<EOP
11882 #include <stdio.h>
11883 /* Can we scream? */
11884 /* Eat dust sed :-) */
11885 /* In the buffer space, no one can hear you scream. */
11886 #$i_stdlib I_STDLIB
11887 #ifdef I_STDLIB
11888 #include <stdlib.h>
11889 #endif
11890 #define FILE_ptr(fp)    $stdio_ptr
11891 #define FILE_cnt(fp)    $stdio_cnt
11892 #include <sys/types.h>
11893 int main() {
11894         FILE *fp = fopen("try.c", "r");
11895         int c;
11896         char *ptr;
11897         size_t cnt;
11898         if (!fp) {
11899             puts("Fail even to read");
11900             exit(1);
11901         }
11902         c = getc(fp); /* Read away the first # */
11903         if (c == EOF) {
11904             puts("Fail even to read");
11905             exit(1);
11906         }
11907         if (!(
11908                 18 <= FILE_cnt(fp) &&
11909                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11910         )) {
11911                 puts("Fail even to read");
11912                 exit (1);
11913         }
11914         ptr = (char*) FILE_ptr(fp);
11915         cnt = (size_t)FILE_cnt(fp);
11916
11917         FILE_ptr(fp) += 42;
11918
11919         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11920                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11921                 exit (1);
11922         }
11923         if (FILE_cnt(fp) <= 20) {
11924                 printf ("Fail (<20 chars to test)");
11925                 exit (1);
11926         }
11927         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11928                 puts("Fail compare");
11929                 exit (1);
11930         }
11931         if (cnt == FILE_cnt(fp)) {
11932                 puts("Pass_unchanged");
11933                 exit (0);
11934         }       
11935         if (FILE_cnt(fp) == (cnt - 42)) {
11936                 puts("Pass_changed");
11937                 exit (0);
11938         }
11939         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11940         return 1;
11941
11942 }
11943 EOP
11944         set try
11945         if eval $compile && $to try.c; then
11946                 case `$run ./try` in
11947                 Pass_changed)
11948                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11949                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11950                 Pass_unchanged)
11951                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11952                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11953                 Fail*)
11954                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11955                 *)
11956                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11957         esac
11958         else
11959                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11960         fi
11961         $rm -f try.c try
11962         ;;
11963 esac
11964
11965 : see if _base is also standard
11966 val="$undef"
11967 case "$d_stdstdio" in
11968 $define)
11969         $cat >try.c <<EOP
11970 #include <stdio.h>
11971 #$i_stdlib I_STDLIB
11972 #ifdef I_STDLIB
11973 #include <stdlib.h>
11974 #endif
11975 #define FILE_base(fp)   $stdio_base
11976 #define FILE_bufsiz(fp) $stdio_bufsiz
11977 int main() {
11978         FILE *fp = fopen("try.c", "r");
11979         char c = getc(fp);
11980         if (
11981                 19 <= FILE_bufsiz(fp) &&
11982                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11983         )
11984                 exit(0);
11985         exit(1);
11986 }
11987 EOP
11988         set try
11989         if eval $compile && $to try.c; then
11990                 if $run ./try; then
11991                         echo "And its _base field acts std."
11992                         val="$define"
11993                 else
11994                         echo "But its _base field isn't std."
11995                 fi
11996         else
11997                 echo "However, it seems to be lacking the _base field."
11998         fi
11999         $rm -f try.c try
12000         ;;
12001 esac
12002 set d_stdiobase
12003 eval $setvar
12004
12005 : see if fast_stdio exists
12006 val="$undef"
12007 case "$d_stdstdio:$d_stdio_ptr_lval" in
12008 "$define:$define")
12009         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12010         *$define*)
12011                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12012                 val="$define"
12013                 ;;
12014         esac
12015         ;;
12016 esac
12017 set d_faststdio
12018 eval $setvar
12019
12020
12021
12022 : see if fchdir exists
12023 set fchdir d_fchdir
12024 eval $inlibc
12025
12026 : see if fchmod exists
12027 set fchmod d_fchmod
12028 eval $inlibc
12029
12030 : see if fchown exists
12031 set fchown d_fchown
12032 eval $inlibc
12033
12034 : see if this is an fcntl system
12035 set fcntl d_fcntl
12036 eval $inlibc
12037
12038 echo " "
12039 : See if fcntl-based locking works.
12040 $cat >try.c <<EOCP
12041 #$i_stdlib I_STDLIB
12042 #ifdef I_STDLIB
12043 #include <stdlib.h>
12044 #endif
12045 #include <unistd.h>
12046 #include <fcntl.h>
12047 #include <signal.h>
12048 $signal_t blech(x) int x; { exit(3); }
12049 int main() {
12050 #if defined(F_SETLK) && defined(F_SETLKW)
12051      struct flock flock;
12052      int retval, fd;
12053      fd = open("try.c", O_RDONLY);
12054      flock.l_type = F_RDLCK;
12055      flock.l_whence = SEEK_SET;
12056      flock.l_start = flock.l_len = 0;
12057      signal(SIGALRM, blech);
12058      alarm(10);
12059      retval = fcntl(fd, F_SETLK, &flock);
12060      close(fd);
12061      (retval < 0 ? exit(2) : exit(0));
12062 #else
12063      exit(2);
12064 #endif
12065 }
12066 EOCP
12067 echo "Checking if fcntl-based file locking works... "
12068 case "$d_fcntl" in
12069 "$define")
12070         set try
12071         if eval $compile_ok; then
12072                 if $run ./try; then
12073                         echo "Yes, it seems to work."
12074                         val="$define"
12075                 else
12076                         echo "Nope, it didn't work."
12077                         val="$undef"
12078                         case "$?" in
12079                         3) $cat >&4 <<EOM
12080 ***
12081 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12082 *** This is (almost) impossible.
12083 *** If your NFS lock daemons are not feeling well, something like
12084 *** this may happen, please investigate.  Cannot continue, aborting.
12085 ***
12086 EOM
12087                                 exit 1
12088                                 ;;
12089                         esac
12090                 fi
12091         else
12092                 echo "I'm unable to compile the test program, so I'll assume not."
12093                 val="$undef"
12094         fi
12095         ;;
12096 *) val="$undef";
12097         echo "Nope, since you don't even have fcntl()."
12098         ;;
12099 esac
12100 set d_fcntl_can_lock
12101 eval $setvar
12102 $rm -f try*
12103
12104
12105 : check for fd_set items
12106 $cat <<EOM
12107
12108 Checking to see how well your C compiler handles fd_set and friends ...
12109 EOM
12110 $cat >try.c <<EOCP
12111 #$i_stdlib I_STDLIB
12112 #ifdef I_STDLIB
12113 #include <stdlib.h>
12114 #endif
12115 #$i_systime I_SYS_TIME
12116 #$i_sysselct I_SYS_SELECT
12117 #$d_socket HAS_SOCKET
12118 #include <sys/types.h>
12119 #ifdef HAS_SOCKET
12120 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12121 #endif
12122 #ifdef I_SYS_TIME
12123 #include <sys/time.h>
12124 #endif
12125 #ifdef I_SYS_SELECT
12126 #include <sys/select.h>
12127 #endif
12128 int main() {
12129         fd_set fds;
12130
12131 #ifdef TRYBITS
12132         if(fds.fds_bits);
12133 #endif
12134
12135 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12136         exit(0);
12137 #else
12138         exit(1);
12139 #endif
12140 }
12141 EOCP
12142 set try -DTRYBITS
12143 if eval $compile; then
12144         d_fds_bits="$define"
12145         d_fd_set="$define"
12146         echo "Well, your system knows about the normal fd_set typedef..." >&4
12147         if $run ./try; then
12148                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12149                 d_fd_macros="$define"
12150         else
12151                 $cat >&4 <<'EOM'
12152 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12153 EOM
12154                 d_fd_macros="$undef"
12155         fi
12156 else
12157         $cat <<'EOM'
12158 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12159 EOM
12160         set try
12161         if eval $compile; then
12162                 d_fds_bits="$undef"
12163                 d_fd_set="$define"
12164                 echo "Well, your system has some sort of fd_set available..." >&4
12165                 if $run ./try; then
12166                         echo "and you have the normal fd_set macros." >&4
12167                         d_fd_macros="$define"
12168                 else
12169                         $cat <<'EOM'
12170 but not the normal fd_set macros!  Gross!  More work for me...
12171 EOM
12172                         d_fd_macros="$undef"
12173                 fi
12174         else
12175         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12176                 d_fd_set="$undef"
12177                 d_fds_bits="$undef"
12178                 d_fd_macros="$undef"
12179         fi
12180 fi
12181 $rm -f try try.*
12182
12183 : see if fgetpos exists
12184 set fgetpos d_fgetpos
12185 eval $inlibc
12186
12187 : see if finite exists
12188 set finite d_finite
12189 eval $inlibc
12190
12191 : see if finitel exists
12192 set finitel d_finitel
12193 eval $inlibc
12194
12195 : see if flock exists
12196 set flock d_flock
12197 eval $inlibc
12198
12199 : see if prototype for flock is available
12200 echo " "
12201 set d_flockproto flock $i_sysfile sys/file.h
12202 eval $hasproto
12203
12204 : see if fork exists
12205 set fork d_fork
12206 eval $inlibc
12207
12208 : see if fp_class exists
12209 set fp_class d_fp_class
12210 eval $inlibc
12211
12212 : see if pathconf exists
12213 set pathconf d_pathconf
12214 eval $inlibc
12215
12216 : see if fpathconf exists
12217 set fpathconf d_fpathconf
12218 eval $inlibc
12219
12220 : see if fpclass exists
12221 set fpclass d_fpclass
12222 eval $inlibc
12223
12224 : see if fpclassify exists
12225 set fpclassify d_fpclassify
12226 eval $inlibc
12227
12228 : see if fpclassl exists
12229 set fpclassl d_fpclassl
12230 eval $inlibc
12231
12232
12233 : check for fpos64_t
12234 echo " "
12235 echo "Checking to see if you have fpos64_t..." >&4
12236 $cat >try.c <<EOCP
12237 #include <stdio.h>
12238 int main() { fpos64_t x = 7; }
12239 EOCP
12240 set try
12241 if eval $compile; then
12242         val="$define"
12243         echo "You have fpos64_t."
12244 else
12245         val="$undef"
12246         echo "You do not have fpos64_t."
12247         case "$fpossize" in
12248         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12249         esac
12250 fi
12251 $rm -f try.* try
12252 set d_fpos64_t
12253 eval $setvar
12254
12255 : see if frexpl exists
12256 set frexpl d_frexpl
12257 eval $inlibc
12258
12259 : see if this is a sys/param system
12260 set sys/param.h i_sysparam
12261 eval $inhdr
12262
12263 : see if this is a sys/mount.h system
12264 set sys/mount.h i_sysmount
12265 eval $inhdr
12266
12267
12268 echo " "
12269 echo "Checking to see if your system supports struct fs_data..." >&4
12270 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12271 eval $hasstruct
12272 case "$d_fs_data_s" in
12273 "$define")      echo "Yes, it does."   ;;
12274 *)              echo "No, it doesn't." ;;
12275 esac
12276
12277 : see if fseeko exists
12278 set fseeko d_fseeko
12279 eval $inlibc
12280 case "$longsize" in
12281 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12282 esac
12283
12284 : see if fsetpos exists
12285 set fsetpos d_fsetpos
12286 eval $inlibc
12287
12288
12289 : see if fstatfs exists
12290 set fstatfs d_fstatfs
12291 eval $inlibc
12292
12293
12294 : see if statvfs exists
12295 set statvfs d_statvfs
12296 eval $inlibc
12297
12298 : see if fstatvfs exists
12299 set fstatvfs d_fstatvfs
12300 eval $inlibc
12301
12302
12303 : see if fsync exists
12304 set fsync d_fsync
12305 eval $inlibc
12306
12307 : see if ftello exists
12308 set ftello d_ftello
12309 eval $inlibc
12310 case "$longsize" in
12311 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12312 esac
12313
12314 : see if getcwd exists
12315 set getcwd d_getcwd
12316 eval $inlibc
12317
12318 : see if getespwnam exists
12319 set getespwnam d_getespwnam
12320 eval $inlibc
12321
12322
12323 : see if getfsstat exists
12324 set getfsstat d_getfsstat
12325 eval $inlibc
12326
12327 : see if getgrent exists
12328 set getgrent d_getgrent
12329 eval $inlibc
12330
12331 : see if getgrent_r exists
12332 set getgrent_r d_getgrent_r
12333 eval $inlibc
12334 case "$d_getgrent_r" in
12335 "$define")
12336         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12337         case "$d_getgrent_r_proto:$usethreads" in
12338         ":define")      d_getgrent_r_proto=define
12339                 set d_getgrent_r_proto getgrent_r $hdrs
12340                 eval $hasproto ;;
12341         *)      ;;
12342         esac
12343         case "$d_getgrent_r_proto" in
12344         define)
12345         case "$getgrent_r_proto" in
12346         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12347         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12348         esac
12349         case "$getgrent_r_proto" in
12350         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12351         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12352         esac
12353         case "$getgrent_r_proto" in
12354         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12355         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12356         esac
12357         case "$getgrent_r_proto" in
12358         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12359         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12360         esac
12361         case "$getgrent_r_proto" in
12362         ''|0) try='int getgrent_r(struct group*, char*, int);'
12363         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12364         esac
12365         case "$getgrent_r_proto" in
12366         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12367         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12368         esac
12369         case "$getgrent_r_proto" in
12370         ''|0)   d_getgrent_r=undef
12371                 getgrent_r_proto=0
12372                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12373         * )     case "$getgrent_r_proto" in
12374                 REENTRANT_PROTO*) ;;
12375                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12376                 esac
12377                 echo "Prototype: $try" ;;
12378         esac
12379         ;;
12380         *)      case "$usethreads" in
12381                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12382                 esac
12383                 d_getgrent_r=undef
12384                 getgrent_r_proto=0
12385                 ;;
12386         esac
12387         ;;
12388 *)      getgrent_r_proto=0
12389         ;;
12390 esac
12391
12392 : see if getgrgid_r exists
12393 set getgrgid_r d_getgrgid_r
12394 eval $inlibc
12395 case "$d_getgrgid_r" in
12396 "$define")
12397         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12398         case "$d_getgrgid_r_proto:$usethreads" in
12399         ":define")      d_getgrgid_r_proto=define
12400                 set d_getgrgid_r_proto getgrgid_r $hdrs
12401                 eval $hasproto ;;
12402         *)      ;;
12403         esac
12404         case "$d_getgrgid_r_proto" in
12405         define)
12406         case "$getgrgid_r_proto" in
12407         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12408         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12409         esac
12410         case "$getgrgid_r_proto" in
12411         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12412         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12413         esac
12414         case "$getgrgid_r_proto" in
12415         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12416         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12417         esac
12418         case "$getgrgid_r_proto" in
12419         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12420         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12421         esac
12422         case "$getgrgid_r_proto" in
12423         ''|0)   d_getgrgid_r=undef
12424                 getgrgid_r_proto=0
12425                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12426         * )     case "$getgrgid_r_proto" in
12427                 REENTRANT_PROTO*) ;;
12428                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12429                 esac
12430                 echo "Prototype: $try" ;;
12431         esac
12432         ;;
12433         *)      case "$usethreads" in
12434                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12435                 esac
12436                 d_getgrgid_r=undef
12437                 getgrgid_r_proto=0
12438                 ;;
12439         esac
12440         ;;
12441 *)      getgrgid_r_proto=0
12442         ;;
12443 esac
12444
12445 : see if getgrnam_r exists
12446 set getgrnam_r d_getgrnam_r
12447 eval $inlibc
12448 case "$d_getgrnam_r" in
12449 "$define")
12450         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12451         case "$d_getgrnam_r_proto:$usethreads" in
12452         ":define")      d_getgrnam_r_proto=define
12453                 set d_getgrnam_r_proto getgrnam_r $hdrs
12454                 eval $hasproto ;;
12455         *)      ;;
12456         esac
12457         case "$d_getgrnam_r_proto" in
12458         define)
12459         case "$getgrnam_r_proto" in
12460         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12461         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12462         esac
12463         case "$getgrnam_r_proto" in
12464         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12465         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12466         esac
12467         case "$getgrnam_r_proto" in
12468         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12469         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12470         esac
12471         case "$getgrnam_r_proto" in
12472         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12473         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12474         esac
12475         case "$getgrnam_r_proto" in
12476         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12477         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12478         esac
12479         case "$getgrnam_r_proto" in
12480         ''|0)   d_getgrnam_r=undef
12481                 getgrnam_r_proto=0
12482                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12483         * )     case "$getgrnam_r_proto" in
12484                 REENTRANT_PROTO*) ;;
12485                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12486                 esac
12487                 echo "Prototype: $try" ;;
12488         esac
12489         ;;
12490         *)      case "$usethreads" in
12491                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12492                 esac
12493                 d_getgrnam_r=undef
12494                 getgrnam_r_proto=0
12495                 ;;
12496         esac
12497         ;;
12498 *)      getgrnam_r_proto=0
12499         ;;
12500 esac
12501
12502 : see if gethostbyaddr exists
12503 set gethostbyaddr d_gethbyaddr
12504 eval $inlibc
12505
12506 : see if gethostbyname exists
12507 set gethostbyname d_gethbyname
12508 eval $inlibc
12509
12510 : see if gethostent exists
12511 set gethostent d_gethent
12512 eval $inlibc
12513
12514 : see how we will look up host name
12515 echo " "
12516 call=''
12517 if set gethostname val -f d_gethname; eval $csym; $val; then
12518         echo 'gethostname() found.' >&4
12519         d_gethname="$define"
12520         call=gethostname
12521 fi
12522 if set uname val -f d_uname; eval $csym; $val; then
12523         if ./xenix; then
12524                 $cat <<'EOM'
12525 uname() was found, but you're running xenix, and older versions of xenix
12526 have a broken uname(). If you don't really know whether your xenix is old
12527 enough to have a broken system call, use the default answer.
12528
12529 EOM
12530                 dflt=y
12531                 case "$d_uname" in
12532                 "$define") dflt=n;;
12533                 esac
12534                 rp='Is your uname() broken?'
12535                 . ./myread
12536                 case "$ans" in
12537                 n*) d_uname="$define"; call=uname;;
12538                 esac
12539         else
12540                 echo 'uname() found.' >&4
12541                 d_uname="$define"
12542                 case "$call" in
12543                 '') call=uname ;;
12544                 esac
12545         fi
12546 fi
12547 case "$d_gethname" in
12548 '') d_gethname="$undef";;
12549 esac
12550 case "$d_uname" in
12551 '') d_uname="$undef";;
12552 esac
12553 case "$d_uname$d_gethname" in
12554 *define*)
12555         dflt=n
12556         cat <<EOM
12557  
12558 Every now and then someone has a $call() that lies about the hostname
12559 but can't be fixed for political or economic reasons.  If you wish, I can
12560 pretend $call() isn't there and maybe compute hostname at run-time
12561 thanks to the '$phostname' command.
12562
12563 EOM
12564         rp="Shall I ignore $call() from now on?"
12565         . ./myread
12566         case "$ans" in
12567         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12568         esac;;
12569 esac
12570 case "$phostname" in
12571 '') aphostname='';;
12572 *) case "$aphostname" in
12573         /*) ;;
12574         *) set X $phostname
12575                 shift
12576                 file=$1
12577                 shift
12578                 file=`./loc $file $file $pth`
12579                 aphostname=`echo $file $*`
12580                 ;;
12581         esac
12582         ;;
12583 esac
12584 case "$d_uname$d_gethname" in
12585 *define*) ;;
12586 *)
12587         case "$phostname" in
12588         '')
12589                 echo "There will be no way for $package to get your hostname." >&4;;
12590         *)
12591         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12592                 ;;
12593         esac;;
12594 esac
12595 case "$d_phostname" in
12596 '') d_phostname="$undef";;
12597 esac
12598
12599 : see if gethostbyaddr_r exists
12600 set gethostbyaddr_r d_gethostbyaddr_r
12601 eval $inlibc
12602 case "$d_gethostbyaddr_r" in
12603 "$define")
12604         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12605         case "$d_gethostbyaddr_r_proto:$usethreads" in
12606         ":define")      d_gethostbyaddr_r_proto=define
12607                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12608                 eval $hasproto ;;
12609         *)      ;;
12610         esac
12611         case "$d_gethostbyaddr_r_proto" in
12612         define)
12613         case "$gethostbyaddr_r_proto" in
12614         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12615         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12616         esac
12617         case "$gethostbyaddr_r_proto" in
12618         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12619         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12620         esac
12621         case "$gethostbyaddr_r_proto" in
12622         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12623         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12624         esac
12625         case "$gethostbyaddr_r_proto" in
12626         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12627         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12628         esac
12629         case "$gethostbyaddr_r_proto" in
12630         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12631         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12632         esac
12633         case "$gethostbyaddr_r_proto" in
12634         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12635         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12636         esac
12637         case "$gethostbyaddr_r_proto" in
12638         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12639         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12640         esac
12641         case "$gethostbyaddr_r_proto" in
12642         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12643         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12644         esac
12645         case "$gethostbyaddr_r_proto" in
12646         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12647         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12648         esac
12649         case "$gethostbyaddr_r_proto" in
12650         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12651         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12652         esac
12653         case "$gethostbyaddr_r_proto" in
12654         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12655         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12656         esac
12657         case "$gethostbyaddr_r_proto" in
12658         ''|0)   d_gethostbyaddr_r=undef
12659                 gethostbyaddr_r_proto=0
12660                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12661         * )     case "$gethostbyaddr_r_proto" in
12662                 REENTRANT_PROTO*) ;;
12663                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12664                 esac
12665                 echo "Prototype: $try" ;;
12666         esac
12667         ;;
12668         *)      case "$usethreads" in
12669                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12670                 esac
12671                 d_gethostbyaddr_r=undef
12672                 gethostbyaddr_r_proto=0
12673                 ;;
12674         esac
12675         ;;
12676 *)      gethostbyaddr_r_proto=0
12677         ;;
12678 esac
12679
12680 : see if gethostbyname_r exists
12681 set gethostbyname_r d_gethostbyname_r
12682 eval $inlibc
12683 case "$d_gethostbyname_r" in
12684 "$define")
12685         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12686         case "$d_gethostbyname_r_proto:$usethreads" in
12687         ":define")      d_gethostbyname_r_proto=define
12688                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12689                 eval $hasproto ;;
12690         *)      ;;
12691         esac
12692         case "$d_gethostbyname_r_proto" in
12693         define)
12694         case "$gethostbyname_r_proto" in
12695         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12696         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12697         esac
12698         case "$gethostbyname_r_proto" in
12699         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12700         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12701         esac
12702         case "$gethostbyname_r_proto" in
12703         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12704         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12705         esac
12706         case "$gethostbyname_r_proto" in
12707         ''|0)   d_gethostbyname_r=undef
12708                 gethostbyname_r_proto=0
12709                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12710         * )     case "$gethostbyname_r_proto" in
12711                 REENTRANT_PROTO*) ;;
12712                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12713                 esac
12714                 echo "Prototype: $try" ;;
12715         esac
12716         ;;
12717         *)      case "$usethreads" in
12718                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12719                 esac
12720                 d_gethostbyname_r=undef
12721                 gethostbyname_r_proto=0
12722                 ;;
12723         esac
12724         ;;
12725 *)      gethostbyname_r_proto=0
12726         ;;
12727 esac
12728
12729 : see if gethostent_r exists
12730 set gethostent_r d_gethostent_r
12731 eval $inlibc
12732 case "$d_gethostent_r" in
12733 "$define")
12734         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12735         case "$d_gethostent_r_proto:$usethreads" in
12736         ":define")      d_gethostent_r_proto=define
12737                 set d_gethostent_r_proto gethostent_r $hdrs
12738                 eval $hasproto ;;
12739         *)      ;;
12740         esac
12741         case "$d_gethostent_r_proto" in
12742         define)
12743         case "$gethostent_r_proto" in
12744         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12745         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12746         esac
12747         case "$gethostent_r_proto" in
12748         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12749         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12750         esac
12751         case "$gethostent_r_proto" in
12752         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12753         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12754         esac
12755         case "$gethostent_r_proto" in
12756         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12757         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12758         esac
12759         case "$gethostent_r_proto" in
12760         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12761         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12762         esac
12763         case "$gethostent_r_proto" in
12764         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12765         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12766         esac
12767         case "$gethostent_r_proto" in
12768         ''|0)   d_gethostent_r=undef
12769                 gethostent_r_proto=0
12770                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12771         * )     case "$gethostent_r_proto" in
12772                 REENTRANT_PROTO*) ;;
12773                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12774                 esac
12775                 echo "Prototype: $try" ;;
12776         esac
12777         ;;
12778         *)      case "$usethreads" in
12779                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12780                 esac
12781                 d_gethostent_r=undef
12782                 gethostent_r_proto=0
12783                 ;;
12784         esac
12785         ;;
12786 *)      gethostent_r_proto=0
12787         ;;
12788 esac
12789
12790 : see if prototypes for various gethostxxx netdb.h functions are available
12791 echo " "
12792 set d_gethostprotos gethostent $i_netdb netdb.h
12793 eval $hasproto
12794
12795 : see if getitimer exists
12796 set getitimer d_getitimer
12797 eval $inlibc
12798
12799 : see if getlogin exists
12800 set getlogin d_getlogin
12801 eval $inlibc
12802
12803 : see if getlogin_r exists
12804 set getlogin_r d_getlogin_r
12805 eval $inlibc
12806 case "$d_getlogin_r" in
12807 "$define")
12808         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12809         case "$d_getlogin_r_proto:$usethreads" in
12810         ":define")      d_getlogin_r_proto=define
12811                 set d_getlogin_r_proto getlogin_r $hdrs
12812                 eval $hasproto ;;
12813         *)      ;;
12814         esac
12815         case "$d_getlogin_r_proto" in
12816         define)
12817         case "$getlogin_r_proto" in
12818         ''|0) try='int getlogin_r(char*, size_t);'
12819         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12820         esac
12821         case "$getlogin_r_proto" in
12822         ''|0) try='int getlogin_r(char*, int);'
12823         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12824         esac
12825         case "$getlogin_r_proto" in
12826         ''|0) try='char* getlogin_r(char*, size_t);'
12827         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12828         esac
12829         case "$getlogin_r_proto" in
12830         ''|0) try='char* getlogin_r(char*, int);'
12831         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12832         esac
12833         case "$getlogin_r_proto" in
12834         ''|0)   d_getlogin_r=undef
12835                 getlogin_r_proto=0
12836                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12837         * )     case "$getlogin_r_proto" in
12838                 REENTRANT_PROTO*) ;;
12839                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12840                 esac
12841                 echo "Prototype: $try" ;;
12842         esac
12843         ;;
12844         *)      case "$usethreads" in
12845                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12846                 esac
12847                 d_getlogin_r=undef
12848                 getlogin_r_proto=0
12849                 ;;
12850         esac
12851         ;;
12852 *)      getlogin_r_proto=0
12853         ;;
12854 esac
12855
12856 : see if getmnt exists
12857 set getmnt d_getmnt
12858 eval $inlibc
12859
12860 : see if getmntent exists
12861 set getmntent d_getmntent
12862 eval $inlibc
12863
12864 : see if getnetbyaddr exists
12865 set getnetbyaddr d_getnbyaddr
12866 eval $inlibc
12867
12868 : see if getnetbyname exists
12869 set getnetbyname d_getnbyname
12870 eval $inlibc
12871
12872 : see if getnetent exists
12873 set getnetent d_getnent
12874 eval $inlibc
12875
12876 : see if getnetbyaddr_r exists
12877 set getnetbyaddr_r d_getnetbyaddr_r
12878 eval $inlibc
12879 case "$d_getnetbyaddr_r" in
12880 "$define")
12881         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12882         case "$d_getnetbyaddr_r_proto:$usethreads" in
12883         ":define")      d_getnetbyaddr_r_proto=define
12884                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12885                 eval $hasproto ;;
12886         *)      ;;
12887         esac
12888         case "$d_getnetbyaddr_r_proto" in
12889         define)
12890         case "$getnetbyaddr_r_proto" in
12891         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12892         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12893         esac
12894         case "$getnetbyaddr_r_proto" in
12895         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12896         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12897         esac
12898         case "$getnetbyaddr_r_proto" in
12899         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12900         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12901         esac
12902         case "$getnetbyaddr_r_proto" in
12903         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12904         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12905         esac
12906         case "$getnetbyaddr_r_proto" in
12907         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12908         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12909         esac
12910         case "$getnetbyaddr_r_proto" in
12911         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12912         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12913         esac
12914         case "$getnetbyaddr_r_proto" in
12915         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12916         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12917         esac
12918         case "$getnetbyaddr_r_proto" in
12919         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12920         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12921         esac
12922         case "$getnetbyaddr_r_proto" in
12923         ''|0)   d_getnetbyaddr_r=undef
12924                 getnetbyaddr_r_proto=0
12925                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12926         * )     case "$getnetbyaddr_r_proto" in
12927                 REENTRANT_PROTO*) ;;
12928                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12929                 esac
12930                 echo "Prototype: $try" ;;
12931         esac
12932         ;;
12933         *)      case "$usethreads" in
12934                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12935                 esac
12936                 d_getnetbyaddr_r=undef
12937                 getnetbyaddr_r_proto=0
12938                 ;;
12939         esac
12940         ;;
12941 *)      getnetbyaddr_r_proto=0
12942         ;;
12943 esac
12944
12945 : see if getnetbyname_r exists
12946 set getnetbyname_r d_getnetbyname_r
12947 eval $inlibc
12948 case "$d_getnetbyname_r" in
12949 "$define")
12950         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12951         case "$d_getnetbyname_r_proto:$usethreads" in
12952         ":define")      d_getnetbyname_r_proto=define
12953                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12954                 eval $hasproto ;;
12955         *)      ;;
12956         esac
12957         case "$d_getnetbyname_r_proto" in
12958         define)
12959         case "$getnetbyname_r_proto" in
12960         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12961         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12962         esac
12963         case "$getnetbyname_r_proto" in
12964         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12965         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12966         esac
12967         case "$getnetbyname_r_proto" in
12968         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12969         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12970         esac
12971         case "$getnetbyname_r_proto" in
12972         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12973         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12974         esac
12975         case "$getnetbyname_r_proto" in
12976         ''|0)   d_getnetbyname_r=undef
12977                 getnetbyname_r_proto=0
12978                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12979         * )     case "$getnetbyname_r_proto" in
12980                 REENTRANT_PROTO*) ;;
12981                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12982                 esac
12983                 echo "Prototype: $try" ;;
12984         esac
12985         ;;
12986         *)      case "$usethreads" in
12987                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12988                 esac
12989                 d_getnetbyname_r=undef
12990                 getnetbyname_r_proto=0
12991                 ;;
12992         esac
12993         ;;
12994 *)      getnetbyname_r_proto=0
12995         ;;
12996 esac
12997
12998 : see if getnetent_r exists
12999 set getnetent_r d_getnetent_r
13000 eval $inlibc
13001 case "$d_getnetent_r" in
13002 "$define")
13003         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13004         case "$d_getnetent_r_proto:$usethreads" in
13005         ":define")      d_getnetent_r_proto=define
13006                 set d_getnetent_r_proto getnetent_r $hdrs
13007                 eval $hasproto ;;
13008         *)      ;;
13009         esac
13010         case "$d_getnetent_r_proto" in
13011         define)
13012         case "$getnetent_r_proto" in
13013         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13014         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13015         esac
13016         case "$getnetent_r_proto" in
13017         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13018         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13019         esac
13020         case "$getnetent_r_proto" in
13021         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13022         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13023         esac
13024         case "$getnetent_r_proto" in
13025         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13026         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13027         esac
13028         case "$getnetent_r_proto" in
13029         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13030         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13031         esac
13032         case "$getnetent_r_proto" in
13033         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13034         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13035         esac
13036         case "$getnetent_r_proto" in
13037         ''|0)   d_getnetent_r=undef
13038                 getnetent_r_proto=0
13039                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13040         * )     case "$getnetent_r_proto" in
13041                 REENTRANT_PROTO*) ;;
13042                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13043                 esac
13044                 echo "Prototype: $try" ;;
13045         esac
13046         ;;
13047         *)      case "$usethreads" in
13048                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13049                 esac
13050                 d_getnetent_r=undef
13051                 getnetent_r_proto=0
13052                 ;;
13053         esac
13054         ;;
13055 *)      getnetent_r_proto=0
13056         ;;
13057 esac
13058
13059 : see if prototypes for various getnetxxx netdb.h functions are available
13060 echo " "
13061 set d_getnetprotos getnetent $i_netdb netdb.h
13062 eval $hasproto
13063
13064 : see if getpagesize exists
13065 set getpagesize d_getpagsz
13066 eval $inlibc
13067
13068
13069 : see if getprotobyname exists
13070 set getprotobyname d_getpbyname
13071 eval $inlibc
13072
13073 : see if getprotobynumber exists
13074 set getprotobynumber d_getpbynumber
13075 eval $inlibc
13076
13077 : see if getprotoent exists
13078 set getprotoent d_getpent
13079 eval $inlibc
13080
13081 : see if getpgid exists
13082 set getpgid d_getpgid
13083 eval $inlibc
13084
13085 : see if getpgrp2 exists
13086 set getpgrp2 d_getpgrp2
13087 eval $inlibc
13088
13089 : see if getppid exists
13090 set getppid d_getppid
13091 eval $inlibc
13092
13093 : see if getpriority exists
13094 set getpriority d_getprior
13095 eval $inlibc
13096
13097 : see if getprotobyname_r exists
13098 set getprotobyname_r d_getprotobyname_r
13099 eval $inlibc
13100 case "$d_getprotobyname_r" in
13101 "$define")
13102         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13103         case "$d_getprotobyname_r_proto:$usethreads" in
13104         ":define")      d_getprotobyname_r_proto=define
13105                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13106                 eval $hasproto ;;
13107         *)      ;;
13108         esac
13109         case "$d_getprotobyname_r_proto" in
13110         define)
13111         case "$getprotobyname_r_proto" in
13112         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13113         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13114         esac
13115         case "$getprotobyname_r_proto" in
13116         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13117         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13118         esac
13119         case "$getprotobyname_r_proto" in
13120         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13121         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13122         esac
13123         case "$getprotobyname_r_proto" in
13124         ''|0)   d_getprotobyname_r=undef
13125                 getprotobyname_r_proto=0
13126                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13127         * )     case "$getprotobyname_r_proto" in
13128                 REENTRANT_PROTO*) ;;
13129                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13130                 esac
13131                 echo "Prototype: $try" ;;
13132         esac
13133         ;;
13134         *)      case "$usethreads" in
13135                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13136                 esac
13137                 d_getprotobyname_r=undef
13138                 getprotobyname_r_proto=0
13139                 ;;
13140         esac
13141         ;;
13142 *)      getprotobyname_r_proto=0
13143         ;;
13144 esac
13145
13146 : see if getprotobynumber_r exists
13147 set getprotobynumber_r d_getprotobynumber_r
13148 eval $inlibc
13149 case "$d_getprotobynumber_r" in
13150 "$define")
13151         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13152         case "$d_getprotobynumber_r_proto:$usethreads" in
13153         ":define")      d_getprotobynumber_r_proto=define
13154                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13155                 eval $hasproto ;;
13156         *)      ;;
13157         esac
13158         case "$d_getprotobynumber_r_proto" in
13159         define)
13160         case "$getprotobynumber_r_proto" in
13161         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13162         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13163         esac
13164         case "$getprotobynumber_r_proto" in
13165         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13166         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13167         esac
13168         case "$getprotobynumber_r_proto" in
13169         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13170         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13171         esac
13172         case "$getprotobynumber_r_proto" in
13173         ''|0)   d_getprotobynumber_r=undef
13174                 getprotobynumber_r_proto=0
13175                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13176         * )     case "$getprotobynumber_r_proto" in
13177                 REENTRANT_PROTO*) ;;
13178                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13179                 esac
13180                 echo "Prototype: $try" ;;
13181         esac
13182         ;;
13183         *)      case "$usethreads" in
13184                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13185                 esac
13186                 d_getprotobynumber_r=undef
13187                 getprotobynumber_r_proto=0
13188                 ;;
13189         esac
13190         ;;
13191 *)      getprotobynumber_r_proto=0
13192         ;;
13193 esac
13194
13195 : see if getprotoent_r exists
13196 set getprotoent_r d_getprotoent_r
13197 eval $inlibc
13198 case "$d_getprotoent_r" in
13199 "$define")
13200         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13201         case "$d_getprotoent_r_proto:$usethreads" in
13202         ":define")      d_getprotoent_r_proto=define
13203                 set d_getprotoent_r_proto getprotoent_r $hdrs
13204                 eval $hasproto ;;
13205         *)      ;;
13206         esac
13207         case "$d_getprotoent_r_proto" in
13208         define)
13209         case "$getprotoent_r_proto" in
13210         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13211         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13212         esac
13213         case "$getprotoent_r_proto" in
13214         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13215         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13216         esac
13217         case "$getprotoent_r_proto" in
13218         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13219         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13220         esac
13221         case "$getprotoent_r_proto" in
13222         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13223         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13224         esac
13225         case "$getprotoent_r_proto" in
13226         ''|0)   d_getprotoent_r=undef
13227                 getprotoent_r_proto=0
13228                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13229         * )     case "$getprotoent_r_proto" in
13230                 REENTRANT_PROTO*) ;;
13231                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13232                 esac
13233                 echo "Prototype: $try" ;;
13234         esac
13235         ;;
13236         *)      case "$usethreads" in
13237                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13238                 esac
13239                 d_getprotoent_r=undef
13240                 getprotoent_r_proto=0
13241                 ;;
13242         esac
13243         ;;
13244 *)      getprotoent_r_proto=0
13245         ;;
13246 esac
13247
13248 : see if prototypes for various getprotoxxx netdb.h functions are available
13249 echo " "
13250 set d_getprotoprotos getprotoent $i_netdb netdb.h
13251 eval $hasproto
13252
13253 : see if getprpwnam exists
13254 set getprpwnam d_getprpwnam
13255 eval $inlibc
13256
13257 : see if getpwent exists
13258 set getpwent d_getpwent
13259 eval $inlibc
13260
13261 : see if getpwent_r exists
13262 set getpwent_r d_getpwent_r
13263 eval $inlibc
13264 case "$d_getpwent_r" in
13265 "$define")
13266         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13267         case "$d_getpwent_r_proto:$usethreads" in
13268         ":define")      d_getpwent_r_proto=define
13269                 set d_getpwent_r_proto getpwent_r $hdrs
13270                 eval $hasproto ;;
13271         *)      ;;
13272         esac
13273         case "$d_getpwent_r_proto" in
13274         define)
13275         case "$getpwent_r_proto" in
13276         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13277         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13278         esac
13279         case "$getpwent_r_proto" in
13280         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13281         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13282         esac
13283         case "$getpwent_r_proto" in
13284         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13285         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13286         esac
13287         case "$getpwent_r_proto" in
13288         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13289         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13290         esac
13291         case "$getpwent_r_proto" in
13292         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13293         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13294         esac
13295         case "$getpwent_r_proto" in
13296         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13297         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13298         esac
13299         case "$getpwent_r_proto" in
13300         ''|0)   d_getpwent_r=undef
13301                 getpwent_r_proto=0
13302                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13303         * )     case "$getpwent_r_proto" in
13304                 REENTRANT_PROTO*) ;;
13305                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13306                 esac
13307                 echo "Prototype: $try" ;;
13308         esac
13309         ;;
13310         *)      case "$usethreads" in
13311                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13312                 esac
13313                 d_getpwent_r=undef
13314                 getpwent_r_proto=0
13315                 ;;
13316         esac
13317         ;;
13318 *)      getpwent_r_proto=0
13319         ;;
13320 esac
13321
13322 : see if getpwnam_r exists
13323 set getpwnam_r d_getpwnam_r
13324 eval $inlibc
13325 case "$d_getpwnam_r" in
13326 "$define")
13327         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13328         case "$d_getpwnam_r_proto:$usethreads" in
13329         ":define")      d_getpwnam_r_proto=define
13330                 set d_getpwnam_r_proto getpwnam_r $hdrs
13331                 eval $hasproto ;;
13332         *)      ;;
13333         esac
13334         case "$d_getpwnam_r_proto" in
13335         define)
13336         case "$getpwnam_r_proto" in
13337         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13338         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13339         esac
13340         case "$getpwnam_r_proto" in
13341         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13342         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13343         esac
13344         case "$getpwnam_r_proto" in
13345         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13346         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13347         esac
13348         case "$getpwnam_r_proto" in
13349         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13350         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13351         esac
13352         case "$getpwnam_r_proto" in
13353         ''|0)   d_getpwnam_r=undef
13354                 getpwnam_r_proto=0
13355                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13356         * )     case "$getpwnam_r_proto" in
13357                 REENTRANT_PROTO*) ;;
13358                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13359                 esac
13360                 echo "Prototype: $try" ;;
13361         esac
13362         ;;
13363         *)      case "$usethreads" in
13364                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13365                 esac
13366                 d_getpwnam_r=undef
13367                 getpwnam_r_proto=0
13368                 ;;
13369         esac
13370         ;;
13371 *)      getpwnam_r_proto=0
13372         ;;
13373 esac
13374
13375 : see if getpwuid_r exists
13376 set getpwuid_r d_getpwuid_r
13377 eval $inlibc
13378 case "$d_getpwuid_r" in
13379 "$define")
13380         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13381         case "$d_getpwuid_r_proto:$usethreads" in
13382         ":define")      d_getpwuid_r_proto=define
13383                 set d_getpwuid_r_proto getpwuid_r $hdrs
13384                 eval $hasproto ;;
13385         *)      ;;
13386         esac
13387         case "$d_getpwuid_r_proto" in
13388         define)
13389         case "$getpwuid_r_proto" in
13390         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13391         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13392         esac
13393         case "$getpwuid_r_proto" in
13394         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13395         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13396         esac
13397         case "$getpwuid_r_proto" in
13398         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13399         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13400         esac
13401         case "$getpwuid_r_proto" in
13402         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13403         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13404         esac
13405         case "$getpwuid_r_proto" in
13406         ''|0)   d_getpwuid_r=undef
13407                 getpwuid_r_proto=0
13408                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13409         * )     case "$getpwuid_r_proto" in
13410                 REENTRANT_PROTO*) ;;
13411                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13412                 esac
13413                 echo "Prototype: $try" ;;
13414         esac
13415         ;;
13416         *)      case "$usethreads" in
13417                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13418                 esac
13419                 d_getpwuid_r=undef
13420                 getpwuid_r_proto=0
13421                 ;;
13422         esac
13423         ;;
13424 *)      getpwuid_r_proto=0
13425         ;;
13426 esac
13427
13428
13429 : see if getservbyname exists
13430 set getservbyname d_getsbyname
13431 eval $inlibc
13432
13433 : see if getservbyport exists
13434 set getservbyport d_getsbyport
13435 eval $inlibc
13436
13437 : see if getservent exists
13438 set getservent d_getsent
13439 eval $inlibc
13440
13441 : see if getservbyname_r exists
13442 set getservbyname_r d_getservbyname_r
13443 eval $inlibc
13444 case "$d_getservbyname_r" in
13445 "$define")
13446         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13447         case "$d_getservbyname_r_proto:$usethreads" in
13448         ":define")      d_getservbyname_r_proto=define
13449                 set d_getservbyname_r_proto getservbyname_r $hdrs
13450                 eval $hasproto ;;
13451         *)      ;;
13452         esac
13453         case "$d_getservbyname_r_proto" in
13454         define)
13455         case "$getservbyname_r_proto" in
13456         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13457         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13458         esac
13459         case "$getservbyname_r_proto" in
13460         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13461         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13462         esac
13463         case "$getservbyname_r_proto" in
13464         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13465         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13466         esac
13467         case "$getservbyname_r_proto" in
13468         ''|0)   d_getservbyname_r=undef
13469                 getservbyname_r_proto=0
13470                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13471         * )     case "$getservbyname_r_proto" in
13472                 REENTRANT_PROTO*) ;;
13473                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13474                 esac
13475                 echo "Prototype: $try" ;;
13476         esac
13477         ;;
13478         *)      case "$usethreads" in
13479                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13480                 esac
13481                 d_getservbyname_r=undef
13482                 getservbyname_r_proto=0
13483                 ;;
13484         esac
13485         ;;
13486 *)      getservbyname_r_proto=0
13487         ;;
13488 esac
13489
13490 : see if getservbyport_r exists
13491 set getservbyport_r d_getservbyport_r
13492 eval $inlibc
13493 case "$d_getservbyport_r" in
13494 "$define")
13495         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13496         case "$d_getservbyport_r_proto:$usethreads" in
13497         ":define")      d_getservbyport_r_proto=define
13498                 set d_getservbyport_r_proto getservbyport_r $hdrs
13499                 eval $hasproto ;;
13500         *)      ;;
13501         esac
13502         case "$d_getservbyport_r_proto" in
13503         define)
13504         case "$getservbyport_r_proto" in
13505         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13506         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13507         esac
13508         case "$getservbyport_r_proto" in
13509         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13510         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13511         esac
13512         case "$getservbyport_r_proto" in
13513         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13514         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13515         esac
13516         case "$getservbyport_r_proto" in
13517         ''|0)   d_getservbyport_r=undef
13518                 getservbyport_r_proto=0
13519                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13520         * )     case "$getservbyport_r_proto" in
13521                 REENTRANT_PROTO*) ;;
13522                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13523                 esac
13524                 echo "Prototype: $try" ;;
13525         esac
13526         ;;
13527         *)      case "$usethreads" in
13528                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13529                 esac
13530                 d_getservbyport_r=undef
13531                 getservbyport_r_proto=0
13532                 ;;
13533         esac
13534         ;;
13535 *)      getservbyport_r_proto=0
13536         ;;
13537 esac
13538
13539 : see if getservent_r exists
13540 set getservent_r d_getservent_r
13541 eval $inlibc
13542 case "$d_getservent_r" in
13543 "$define")
13544         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13545         case "$d_getservent_r_proto:$usethreads" in
13546         ":define")      d_getservent_r_proto=define
13547                 set d_getservent_r_proto getservent_r $hdrs
13548                 eval $hasproto ;;
13549         *)      ;;
13550         esac
13551         case "$d_getservent_r_proto" in
13552         define)
13553         case "$getservent_r_proto" in
13554         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13555         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13556         esac
13557         case "$getservent_r_proto" in
13558         ''|0) try='int getservent_r(struct servent*, char*, int);'
13559         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13560         esac
13561         case "$getservent_r_proto" in
13562         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13563         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13564         esac
13565         case "$getservent_r_proto" in
13566         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13567         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13568         esac
13569         case "$getservent_r_proto" in
13570         ''|0)   d_getservent_r=undef
13571                 getservent_r_proto=0
13572                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13573         * )     case "$getservent_r_proto" in
13574                 REENTRANT_PROTO*) ;;
13575                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13576                 esac
13577                 echo "Prototype: $try" ;;
13578         esac
13579         ;;
13580         *)      case "$usethreads" in
13581                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13582                 esac
13583                 d_getservent_r=undef
13584                 getservent_r_proto=0
13585                 ;;
13586         esac
13587         ;;
13588 *)      getservent_r_proto=0
13589         ;;
13590 esac
13591
13592 : see if prototypes for various getservxxx netdb.h functions are available
13593 echo " "
13594 set d_getservprotos getservent $i_netdb netdb.h
13595 eval $hasproto
13596
13597 : see if getspnam exists
13598 set getspnam d_getspnam
13599 eval $inlibc
13600
13601 : see if this is a shadow.h system
13602 set shadow.h i_shadow
13603 eval $inhdr
13604
13605 : see if getspnam_r exists
13606 set getspnam_r d_getspnam_r
13607 eval $inlibc
13608 case "$d_getspnam_r" in
13609 "$define")
13610         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13611         case "$d_getspnam_r_proto:$usethreads" in
13612         ":define")      d_getspnam_r_proto=define
13613                 set d_getspnam_r_proto getspnam_r $hdrs
13614                 eval $hasproto ;;
13615         *)      ;;
13616         esac
13617         case "$d_getspnam_r_proto" in
13618         define)
13619         case "$getspnam_r_proto" in
13620         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13621         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13622         esac
13623         case "$getspnam_r_proto" in
13624         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13625         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13626         esac
13627         case "$getspnam_r_proto" in
13628         ''|0)   d_getspnam_r=undef
13629                 getspnam_r_proto=0
13630                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13631         * )     case "$getspnam_r_proto" in
13632                 REENTRANT_PROTO*) ;;
13633                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13634                 esac
13635                 echo "Prototype: $try" ;;
13636         esac
13637         ;;
13638         *)      case "$usethreads" in
13639                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13640                 esac
13641                 d_getspnam_r=undef
13642                 getspnam_r_proto=0
13643                 ;;
13644         esac
13645         ;;
13646 *)      getspnam_r_proto=0
13647         ;;
13648 esac
13649
13650 : see if gettimeofday or ftime exists
13651 set gettimeofday d_gettimeod
13652 eval $inlibc
13653 case "$d_gettimeod" in
13654 "$undef")
13655         set ftime d_ftime 
13656         eval $inlibc
13657         ;;
13658 *)
13659         val="$undef"; set d_ftime; eval $setvar
13660         ;;
13661 esac
13662 case "$d_gettimeod$d_ftime" in
13663 "$undef$undef")
13664         echo " "
13665         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13666         ;;
13667 esac
13668
13669 : see if gmtime_r exists
13670 set gmtime_r d_gmtime_r
13671 eval $inlibc
13672 case "$d_gmtime_r" in
13673 "$define")
13674         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13675         case "$d_gmtime_r_proto:$usethreads" in
13676         ":define")      d_gmtime_r_proto=define
13677                 set d_gmtime_r_proto gmtime_r $hdrs
13678                 eval $hasproto ;;
13679         *)      ;;
13680         esac
13681         case "$d_gmtime_r_proto" in
13682         define)
13683         case "$gmtime_r_proto" in
13684         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13685         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13686         esac
13687         case "$gmtime_r_proto" in
13688         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13689         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13690         esac
13691         case "$gmtime_r_proto" in
13692         ''|0)   d_gmtime_r=undef
13693                 gmtime_r_proto=0
13694                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13695         * )     case "$gmtime_r_proto" in
13696                 REENTRANT_PROTO*) ;;
13697                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13698                 esac
13699                 echo "Prototype: $try" ;;
13700         esac
13701         ;;
13702         *)      case "$usethreads" in
13703                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13704                 esac
13705                 d_gmtime_r=undef
13706                 gmtime_r_proto=0
13707                 ;;
13708         esac
13709         ;;
13710 *)      gmtime_r_proto=0
13711         ;;
13712 esac
13713
13714 : see if hasmntopt exists
13715 set hasmntopt d_hasmntopt
13716 eval $inlibc
13717
13718 : see if this is a netinet/in.h or sys/in.h system
13719 set netinet/in.h i_niin sys/in.h i_sysin
13720 eval $inhdr
13721
13722 : see if arpa/inet.h has to be included
13723 set arpa/inet.h i_arpainet
13724 eval $inhdr
13725
13726 : see if htonl --and friends-- exists
13727 val=''
13728 set htonl val
13729 eval $inlibc
13730
13731 : Maybe they are macros.
13732 case "$val" in
13733 $undef)
13734         $cat >htonl.c <<EOM
13735 #include <stdio.h>
13736 #include <sys/types.h>
13737 #$i_niin I_NETINET_IN
13738 #$i_sysin I_SYS_IN
13739 #$i_arpainet I_ARPA_INET
13740 #ifdef I_NETINET_IN
13741 #include <netinet/in.h>
13742 #endif
13743 #ifdef I_SYS_IN
13744 #include <sys/in.h>
13745 #endif
13746 #ifdef I_ARPA_INET
13747 #include <arpa/inet.h>
13748 #endif
13749 #ifdef htonl
13750 printf("Defined as a macro.");
13751 #endif
13752 EOM
13753         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13754         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13755                 val="$define"
13756                 echo "But it seems to be defined as a macro." >&4
13757         fi
13758         $rm -f htonl.?
13759         ;;
13760 esac
13761 set d_htonl
13762 eval $setvar
13763
13764 : see if ilogbl exists
13765 set ilogbl d_ilogbl
13766 eval $inlibc
13767
13768 : index or strchr
13769 echo " "
13770 if set index val -f; eval $csym; $val; then
13771         if set strchr val -f d_strchr; eval $csym; $val; then
13772                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13773                         val="$define"
13774                         vali="$undef"
13775                         echo "strchr() found." >&4
13776                 else
13777                         val="$undef"
13778                         vali="$define"
13779                         echo "index() found." >&4
13780                 fi
13781         else
13782                 val="$undef"
13783                 vali="$define"
13784                 echo "index() found." >&4
13785         fi
13786 else
13787         if set strchr val -f d_strchr; eval $csym; $val; then
13788                 val="$define"
13789                 vali="$undef"
13790                 echo "strchr() found." >&4
13791         else
13792                 echo "No index() or strchr() found!" >&4
13793                 val="$undef"
13794                 vali="$undef"
13795         fi
13796 fi
13797 set d_strchr; eval $setvar
13798 val="$vali"
13799 set d_index; eval $setvar
13800
13801 : check whether inet_aton exists
13802 set inet_aton d_inetaton
13803 eval $inlibc
13804
13805 : Look for isascii
13806 echo " "
13807 $cat >isascii.c <<EOCP
13808 #include <stdio.h>
13809 #include <ctype.h>
13810 #$i_stdlib I_STDLIB
13811 #ifdef I_STDLIB
13812 #include <stdlib.h>
13813 #endif
13814 int main() {
13815         int c = 'A';
13816         if (isascii(c))
13817                 exit(0);
13818         else
13819                 exit(1);
13820 }
13821 EOCP
13822 set isascii
13823 if eval $compile; then
13824         echo "isascii() found." >&4
13825         val="$define"
13826 else
13827         echo "isascii() NOT found." >&4
13828         val="$undef"
13829 fi
13830 set d_isascii
13831 eval $setvar
13832 $rm -f isascii*
13833
13834 : see if isfinite exists
13835 set isfinite d_isfinite
13836 eval $inlibc
13837
13838 : see if isinf exists
13839 set isinf d_isinf
13840 eval $inlibc
13841
13842 : see if isnan exists
13843 set isnan d_isnan
13844 eval $inlibc
13845
13846 : see if isnanl exists
13847 set isnanl d_isnanl
13848 eval $inlibc
13849
13850 : see if killpg exists
13851 set killpg d_killpg
13852 eval $inlibc
13853
13854 : see if lchown exists
13855 echo " "
13856 $cat > try.c <<'EOCP'
13857 /* System header to define __stub macros and hopefully few prototypes,
13858     which can conflict with char lchown(); below.  */
13859 #include <assert.h>
13860 /* Override any gcc2 internal prototype to avoid an error.  */
13861 /* We use char because int might match the return type of a gcc2
13862    builtin and then its argument prototype would still apply.  */
13863 char lchown();
13864 int main() {
13865     /*  The GNU C library defines this for functions which it implements
13866         to always fail with ENOSYS.  Some functions are actually named
13867         something starting with __ and the normal name is an alias.  */
13868 #if defined (__stub_lchown) || defined (__stub___lchown)
13869 choke me
13870 #else
13871 lchown();
13872 #endif
13873 ; return 0; }
13874 EOCP
13875 set try
13876 if eval $compile; then
13877     $echo "lchown() found." >&4
13878     val="$define"
13879 else
13880     $echo "lchown() NOT found." >&4
13881     val="$undef"
13882 fi
13883 set d_lchown
13884 eval $setvar
13885
13886 : See if number of significant digits in a double precision number is known
13887 echo " "
13888 $cat >ldbl_dig.c <<EOM
13889 #$i_limits I_LIMITS
13890 #$i_float I_FLOAT
13891 #ifdef I_LIMITS
13892 #include <limits.h>
13893 #endif
13894 #ifdef I_FLOAT
13895 #include <float.h>
13896 #endif
13897 #ifdef LDBL_DIG
13898 printf("Contains LDBL_DIG");
13899 #endif
13900 EOM
13901 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13902 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13903         echo "LDBL_DIG found." >&4
13904         val="$define"
13905 else
13906         echo "LDBL_DIG NOT found." >&4
13907         val="$undef"
13908 fi
13909 $rm -f ldbl_dig.?
13910 set d_ldbl_dig
13911 eval $setvar
13912
13913 : see if link exists
13914 set link d_link
13915 eval $inlibc
13916
13917 : see if localtime_r exists
13918 set localtime_r d_localtime_r
13919 eval $inlibc
13920 case "$d_localtime_r" in
13921 "$define")
13922         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13923         case "$d_localtime_r_proto:$usethreads" in
13924         ":define")      d_localtime_r_proto=define
13925                 set d_localtime_r_proto localtime_r $hdrs
13926                 eval $hasproto ;;
13927         *)      ;;
13928         esac
13929         case "$d_localtime_r_proto" in
13930         define)
13931         case "$localtime_r_proto" in
13932         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13933         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13934         esac
13935         case "$localtime_r_proto" in
13936         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13937         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13938         esac
13939         case "$localtime_r_proto" in
13940         ''|0)   d_localtime_r=undef
13941                 localtime_r_proto=0
13942                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13943         * )     case "$localtime_r_proto" in
13944                 REENTRANT_PROTO*) ;;
13945                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13946                 esac
13947                 echo "Prototype: $try" ;;
13948         esac
13949         ;;
13950         *)      case "$usethreads" in
13951                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13952                 esac
13953                 d_localtime_r=undef
13954                 localtime_r_proto=0
13955                 ;;
13956         esac
13957         ;;
13958 *)      localtime_r_proto=0
13959         ;;
13960 esac
13961
13962 : see if localeconv exists
13963 set localeconv d_locconv
13964 eval $inlibc
13965
13966 : see if lockf exists
13967 set lockf d_lockf
13968 eval $inlibc
13969
13970 : see if prototype for lseek is available
13971 echo " "
13972 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13973 eval $hasproto
13974
13975 : see if lstat exists
13976 set lstat d_lstat
13977 eval $inlibc
13978
13979 : see if madvise exists
13980 set madvise d_madvise
13981 eval $inlibc
13982
13983 : see if mblen exists
13984 set mblen d_mblen
13985 eval $inlibc
13986
13987 : see if mbstowcs exists
13988 set mbstowcs d_mbstowcs
13989 eval $inlibc
13990
13991 : see if mbtowc exists
13992 set mbtowc d_mbtowc
13993 eval $inlibc
13994
13995 : see if memchr exists
13996 set memchr d_memchr
13997 eval $inlibc
13998
13999 : see if memcmp exists
14000 set memcmp d_memcmp
14001 eval $inlibc
14002
14003 : see if memcpy exists
14004 set memcpy d_memcpy
14005 eval $inlibc
14006
14007 : see if memmove exists
14008 set memmove d_memmove
14009 eval $inlibc
14010
14011 : see if memset exists
14012 set memset d_memset
14013 eval $inlibc
14014
14015 : see if mkdir exists
14016 set mkdir d_mkdir
14017 eval $inlibc
14018
14019 : see if mkdtemp exists
14020 set mkdtemp d_mkdtemp
14021 eval $inlibc
14022
14023 : see if mkfifo exists
14024 set mkfifo d_mkfifo
14025 eval $inlibc
14026
14027 : see if mkstemp exists
14028 set mkstemp d_mkstemp
14029 eval $inlibc
14030
14031 : see if mkstemps exists
14032 set mkstemps d_mkstemps
14033 eval $inlibc
14034
14035 : see if mktime exists
14036 set mktime d_mktime
14037 eval $inlibc
14038
14039 : see if this is a sys/mman.h system
14040 set sys/mman.h i_sysmman
14041 eval $inhdr
14042
14043 : see if mmap exists
14044 set mmap d_mmap
14045 eval $inlibc
14046 : see what shmat returns
14047 : default to something harmless
14048 mmaptype='void *'
14049 case "$i_sysmman$d_mmap" in
14050 "$define$define")
14051         $cat >mmap.c <<'END'
14052 #include <sys/mman.h>
14053 void *mmap();
14054 END
14055         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14056                 mmaptype='void *'
14057         else
14058                 mmaptype='caddr_t'
14059         fi
14060         echo "and it returns ($mmaptype)." >&4
14061         ;;
14062 esac
14063
14064
14065
14066 : see if sqrtl exists
14067 set sqrtl d_sqrtl
14068 eval $inlibc
14069
14070 : see if scalbnl exists
14071 set scalbnl d_scalbnl
14072 eval $inlibc
14073
14074 : see if modfl exists
14075 set modfl d_modfl
14076 eval $inlibc
14077
14078 : see if prototype for modfl is available
14079 echo " "
14080 set d_modflproto modfl math.h
14081 eval $hasproto
14082
14083 d_modfl_pow32_bug="$undef"
14084
14085 case "$d_longdbl$d_modfl" in
14086 $define$define)
14087         $cat <<EOM
14088 Checking to see whether your modfl() is okay for large values...
14089 EOM
14090 $cat >try.c <<EOCP
14091 #include <math.h> 
14092 #include <stdio.h>
14093 EOCP
14094 if $test "X$d_modflproto" != "X$define"; then
14095         $cat >>try.c <<EOCP
14096 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14097 long double modfl (long double, long double *);
14098 EOCP
14099 fi
14100 $cat >>try.c <<EOCP
14101 int main() {
14102     long double nv = 4294967303.15;
14103     long double v, w;
14104     v = modfl(nv, &w);         
14105 #ifdef __GLIBC__
14106     printf("glibc");
14107 #endif
14108     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14109     return 0;
14110 }
14111 EOCP
14112         case "$osname:$gccversion" in
14113         aix:)   saveccflags="$ccflags"
14114                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14115         esac
14116         set try
14117         if eval $compile; then
14118                 foo=`$run ./try`
14119                 case "$foo" in
14120                 *" 4294967303.150000 1.150000 4294967302.000000")
14121                         echo >&4 "Your modfl() is broken for large values."
14122                         d_modfl_pow32_bug="$define"
14123                         case "$foo" in
14124                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14125                         ;;
14126                         esac
14127                         ;;
14128                 *" 4294967303.150000 0.150000 4294967303.000000")
14129                         echo >&4 "Your modfl() seems okay for large values."
14130                         ;;
14131                 *)      echo >&4 "I don't understand your modfl() at all."
14132                         d_modfl="$undef"
14133                         ;;
14134                 esac
14135                 $rm -f try.* try core core.try.*
14136         else
14137                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14138                 d_modfl="$undef"
14139         fi
14140         case "$osname:$gccversion" in
14141         aix:)   ccflags="$saveccflags" ;; # restore
14142         esac
14143         ;;
14144 esac
14145
14146 if $test "$uselongdouble" = "$define"; then
14147     message=""
14148     if $test "$d_sqrtl" != "$define"; then
14149         message="$message sqrtl"
14150     fi
14151     if $test "$d_modfl" != "$define"; then
14152         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14153             echo "You have both aintl and copysignl, so I can emulate modfl."
14154         else
14155             message="$message modfl"
14156         fi
14157     fi
14158     if $test "$d_frexpl" != "$define"; then
14159         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14160             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14161         else
14162             message="$message frexpl"
14163         fi
14164     fi
14165
14166     if $test "$message" != ""; then
14167         $cat <<EOM >&4
14168
14169 *** You requested the use of long doubles but you do not seem to have
14170 *** the following mathematical functions needed for long double support:
14171 ***    $message
14172 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14173 *** Cannot continue, aborting.
14174
14175 EOM
14176
14177         exit 1
14178     fi
14179 fi
14180
14181 : see if mprotect exists
14182 set mprotect d_mprotect
14183 eval $inlibc
14184
14185 : see if msgctl exists
14186 set msgctl d_msgctl
14187 eval $inlibc
14188
14189 : see if msgget exists
14190 set msgget d_msgget
14191 eval $inlibc
14192
14193 : see if msgsnd exists
14194 set msgsnd d_msgsnd
14195 eval $inlibc
14196
14197 : see if msgrcv exists
14198 set msgrcv d_msgrcv
14199 eval $inlibc
14200
14201 : see how much of the 'msg*(2)' library is present.
14202 h_msg=true
14203 echo " "
14204 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14205 *"$undef"*) h_msg=false;;
14206 esac
14207 case "$osname" in
14208 freebsd)
14209     case "`ipcs 2>&1`" in
14210     "SVID messages"*"not configured"*)
14211         echo "Your $osname does not have the msg*(2) configured." >&4
14212         h_msg=false
14213         val="$undef"
14214         set msgctl d_msgctl
14215         eval $setvar
14216         set msgget d_msgget
14217         eval $setvar
14218         set msgsnd d_msgsnd
14219         eval $setvar
14220         set msgrcv d_msgrcv
14221         eval $setvar
14222         ;;
14223     esac
14224     ;;
14225 esac
14226 : we could also check for sys/ipc.h ...
14227 if $h_msg && $test `./findhdr sys/msg.h`; then
14228         echo "You have the full msg*(2) library." >&4
14229         val="$define"
14230 else
14231         echo "You don't have the full msg*(2) library." >&4
14232         val="$undef"
14233 fi
14234 set d_msg
14235 eval $setvar
14236
14237
14238 echo " "
14239 echo "Checking to see if your system supports struct msghdr..." >&4
14240 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14241 eval $hasstruct
14242 case "$d_msghdr_s" in
14243 "$define")      echo "Yes, it does."   ;;
14244 *)              echo "No, it doesn't." ;;
14245 esac
14246
14247
14248 : see if msync exists
14249 set msync d_msync
14250 eval $inlibc
14251
14252 : see if munmap exists
14253 set munmap d_munmap
14254 eval $inlibc
14255
14256 : see if nice exists
14257 set nice d_nice
14258 eval $inlibc
14259
14260 : see if this is a langinfo.h system
14261 set langinfo.h i_langinfo
14262 eval $inhdr
14263
14264 : see if nl_langinfo exists
14265 set nl_langinfo d_nl_langinfo
14266 eval $inlibc
14267
14268 : check for length of character
14269 echo " "
14270 case "$charsize" in
14271 '')
14272         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14273         $cat >try.c <<EOCP
14274 #include <stdio.h>
14275 #$i_stdlib I_STDLIB
14276 #ifdef I_STDLIB
14277 #include <stdlib.h>
14278 #endif
14279 int main()
14280 {
14281     printf("%d\n", (int)sizeof(char));
14282     exit(0);
14283 }
14284 EOCP
14285         set try
14286         if eval $compile_ok; then
14287                 dflt=`$run ./try`
14288         else
14289                 dflt='1'
14290                 echo "(I can't seem to compile the test program.  Guessing...)"
14291         fi
14292         ;;
14293 *)
14294         dflt="$charsize"
14295         ;;
14296 esac
14297 rp="What is the size of a character (in bytes)?"
14298 . ./myread
14299 charsize="$ans"
14300 $rm -f try.c try
14301
14302 : check for volatile keyword
14303 echo " "
14304 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14305 $cat >try.c <<'EOCP'
14306 int main()
14307 {
14308         typedef struct _goo_struct goo_struct;
14309         goo_struct * volatile goo = ((goo_struct *)0);
14310         struct _goo_struct {
14311                 long long_int;
14312                 int reg_int;
14313                 char char_var;
14314         };
14315         typedef unsigned short foo_t;
14316         char *volatile foo;
14317         volatile int bar;
14318         volatile foo_t blech;
14319         foo = foo;
14320 }
14321 EOCP
14322 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14323         val="$define"
14324         echo "Yup, it does."
14325 else
14326         val="$undef"
14327         echo "Nope, it doesn't."
14328 fi
14329 set d_volatile
14330 eval $setvar
14331 $rm -f try.*
14332
14333
14334 echo " "
14335 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14336
14337 case "$use64bitint:$d_quad:$quadtype" in
14338 define:define:?*)
14339         ivtype="$quadtype"
14340         uvtype="$uquadtype"
14341         ivsize=8
14342         uvsize=8
14343         ;;
14344 *)      ivtype="long"
14345         uvtype="unsigned long"
14346         ivsize=$longsize
14347         uvsize=$longsize
14348         ;;
14349 esac
14350
14351 case "$uselongdouble:$d_longdbl" in
14352 define:define)
14353         nvtype="long double"
14354         nvsize=$longdblsize
14355         ;;
14356 *)      nvtype=double
14357         nvsize=$doublesize
14358         ;;
14359 esac
14360
14361 $echo "(IV will be "$ivtype", $ivsize bytes)"
14362 $echo "(UV will be "$uvtype", $uvsize bytes)"
14363 $echo "(NV will be "$nvtype", $nvsize bytes)"
14364
14365 $cat >try.c <<EOCP
14366 #$i_inttypes I_INTTYPES
14367 #ifdef I_INTTYPES
14368 #include <inttypes.h>
14369 #endif
14370 #include <stdio.h>
14371 int main() {
14372 #ifdef INT8
14373    int8_t i =  INT8_MAX;
14374   uint8_t u = UINT8_MAX;
14375   printf("int8_t\n");
14376 #endif
14377 #ifdef INT16
14378    int16_t i =  INT16_MAX;
14379   uint16_t i = UINT16_MAX;
14380   printf("int16_t\n");
14381 #endif
14382 #ifdef INT32
14383    int32_t i =  INT32_MAX;
14384   uint32_t u = UINT32_MAX;
14385   printf("int32_t\n");
14386 #endif
14387 }
14388 EOCP
14389
14390 case "$i8type" in
14391 '')     case "$charsize" in
14392         1)      i8type=char
14393                 u8type="unsigned char"
14394                 i8size=$charsize
14395                 u8size=$charsize
14396                 ;;
14397         esac
14398         ;;
14399 esac
14400 case "$i8type" in
14401 '')     set try -DINT8
14402         if eval $compile; then
14403                 case "`$run ./try`" in
14404                 int8_t) i8type=int8_t
14405                         u8type=uint8_t
14406                         i8size=1
14407                         u8size=1
14408                         ;;
14409                 esac
14410         fi
14411         ;;
14412 esac
14413 case "$i8type" in
14414 '')     if $test $charsize -ge 1; then
14415                 i8type=char
14416                 u8type="unsigned char"
14417                 i8size=$charsize
14418                 u8size=$charsize
14419         fi
14420         ;;
14421 esac
14422
14423 case "$i16type" in
14424 '')     case "$shortsize" in
14425         2)      i16type=short
14426                 u16type="unsigned short"
14427                 i16size=$shortsize
14428                 u16size=$shortsize
14429                 ;;
14430         esac
14431         ;;
14432 esac
14433 case "$i16type" in
14434 '')     set try -DINT16
14435         if eval $compile; then
14436                 case "`$run ./try`" in
14437                 int16_t)
14438                         i16type=int16_t
14439                         u16type=uint16_t
14440                         i16size=2
14441                         u16size=2
14442                         ;;
14443                 esac
14444         fi
14445         ;;
14446 esac
14447 case "$i16type" in
14448 '')     if $test $shortsize -ge 2; then
14449                 i16type=short
14450                 u16type="unsigned short"
14451                 i16size=$shortsize
14452                 u16size=$shortsize
14453         fi
14454         ;;
14455 esac
14456
14457 case "$i32type" in
14458 '')     case "$longsize" in
14459         4)      i32type=long
14460                 u32type="unsigned long"
14461                 i32size=$longsize
14462                 u32size=$longsize
14463                 ;;
14464         *)      case "$intsize" in
14465                 4)      i32type=int
14466                         u32type="unsigned int"
14467                         i32size=$intsize
14468                         u32size=$intsize
14469                         ;;
14470                 esac
14471                 ;;
14472         esac
14473         ;;
14474 esac
14475 case "$i32type" in
14476 '')     set try -DINT32
14477         if eval $compile; then
14478                 case "`$run ./try`" in
14479                 int32_t)
14480                         i32type=int32_t
14481                         u32type=uint32_t
14482                         i32size=4
14483                         u32size=4
14484                         ;;
14485                 esac
14486         fi
14487         ;;
14488 esac
14489 case "$i32type" in
14490 '')     if $test $intsize -ge 4; then
14491                 i32type=int
14492                 u32type="unsigned int"
14493                 i32size=$intsize
14494                 u32size=$intsize
14495         fi
14496         ;;
14497 esac
14498
14499 case "$i64type" in
14500 '')     case "$d_quad:$quadtype" in
14501         define:?*)
14502                 i64type="$quadtype"
14503                 u64type="$uquadtype"
14504                 i64size=8
14505                 u64size=8
14506                 ;;
14507         esac
14508         ;;
14509 esac
14510
14511 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14512 : volatile so that the compiler has to store it out to memory.
14513 if test X"$d_volatile" = X"$define"; then
14514         volatile=volatile
14515 fi
14516 $cat <<EOP >try.c
14517 #include <stdio.h>
14518 #$i_stdlib I_STDLIB
14519 #ifdef I_STDLIB
14520 #include <stdlib.h>
14521 #endif
14522 #include <sys/types.h>
14523 #include <signal.h>
14524 #ifdef SIGFPE
14525 $volatile int bletched = 0;
14526 $signal_t blech(s) int s; { bletched = 1; }
14527 #endif
14528 int main() {
14529     $uvtype u = 0;
14530     $nvtype d;
14531     int     n = 8 * $uvsize;
14532     int     i;
14533 #ifdef SIGFPE
14534     signal(SIGFPE, blech);
14535 #endif
14536
14537     for (i = 0; i < n; i++) {
14538       u = u << 1 | ($uvtype)1;
14539       d = ($nvtype)u;
14540       if (($uvtype)d != u)
14541         break;
14542       if (d <= 0)
14543         break;
14544       d = ($nvtype)(u - 1);
14545       if (($uvtype)d != (u - 1))
14546         break;
14547 #ifdef SIGFPE
14548       if (bletched) {
14549         break;
14550 #endif
14551       } 
14552     }
14553     printf("%d\n", ((i == n) ? -n : i));
14554     exit(0);
14555 }
14556 EOP
14557 set try
14558
14559 d_nv_preserves_uv="$undef"
14560 if eval $compile; then
14561         nv_preserves_uv_bits="`$run ./try`"
14562 fi
14563 case "$nv_preserves_uv_bits" in
14564 \-[1-9]*)       
14565         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14566         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14567         d_nv_preserves_uv="$define"
14568         ;;
14569 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14570         d_nv_preserves_uv="$undef" ;;
14571 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14572         nv_preserves_uv_bits="$undef" ;;
14573 esac
14574
14575 $rm -f try.* try
14576
14577
14578 : check for off64_t
14579 echo " "
14580 echo "Checking to see if you have off64_t..." >&4
14581 $cat >try.c <<EOCP
14582 #include <sys/types.h>
14583 #include <unistd.h>
14584 int main() { off64_t x = 7; }
14585 EOCP
14586 set try
14587 if eval $compile; then
14588         val="$define"
14589         echo "You have off64_t."
14590 else
14591         val="$undef"
14592         echo "You do not have off64_t."
14593         case "$lseeksize" in
14594         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14595         esac
14596 fi
14597 $rm -f try.* try
14598 set d_off64_t
14599 eval $setvar
14600
14601 : how to create joinable pthreads
14602 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14603         echo " "
14604         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14605         $cat >try.c <<'EOCP'
14606 #include <pthread.h>
14607 int main() {
14608     int detachstate = JOINABLE;
14609 }
14610 EOCP
14611         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14612         if eval $compile; then
14613                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14614                 val="$undef" # Yes, undef.
14615                 set d_old_pthread_create_joinable
14616                 eval $setvar
14617                 val=""
14618                 set old_pthread_create_joinable
14619                 eval $setvar
14620         else
14621                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14622                 if eval $compile; then
14623                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14624                         val="$define"
14625                         set d_old_pthread_create_joinable
14626                         eval $setvar
14627                         val=PTHREAD_CREATE_UNDETACHED
14628                         set old_pthread_create_joinable
14629                         eval $setvar
14630                 else            
14631                         set try -DJOINABLE=__UNDETACHED
14632                         if eval $compile; then
14633                                 echo "You seem to use __UNDETACHED." >&4
14634                                 val="$define"
14635                                 set d_old_pthread_create_joinable
14636                                 eval $setvar
14637                                 val=__UNDETACHED
14638                                 set old_pthread_create_joinable
14639                                 eval $setvar
14640                         else
14641                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14642                                 val="$define"
14643                                 set d_old_pthread_create_joinable
14644                                 eval $setvar
14645                                 val=0
14646                                 set old_pthread_create_joinable
14647                                 eval $setvar
14648                         fi
14649                 fi
14650         fi
14651         $rm -f try try.*
14652 else
14653     d_old_pthread_create_joinable="$undef"
14654     old_pthread_create_joinable=""
14655 fi
14656
14657 : see if pause exists
14658 set pause d_pause
14659 eval $inlibc
14660
14661 : see if pipe exists
14662 set pipe d_pipe
14663 eval $inlibc
14664
14665 : see if poll exists
14666 set poll d_poll
14667 eval $inlibc
14668
14669 : see if readlink exists
14670 set readlink d_readlink
14671 eval $inlibc
14672
14673 echo " "
14674 procselfexe=''
14675 val="$undef"
14676 case "$d_readlink" in
14677 "$define")
14678         if $issymlink /proc/self/exe ; then
14679                 $ls -l /proc/self/exe > reflect
14680                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14681                         echo "You have Linux-like /proc/self/exe."
14682                         procselfexe='"/proc/self/exe"'
14683                         val="$define"
14684                 fi
14685         fi
14686         if $issymlink /proc/curproc/file ; then
14687                 $ls -l /proc/curproc/file > reflect
14688                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14689                         echo "You have BSD-like /proc/curproc/file."
14690                         procselfexe='"/proc/curproc/file"'
14691                         val="$define"
14692                 fi
14693         fi
14694         ;;
14695 esac
14696 $rm -f reflect
14697 set d_procselfexe
14698 eval $setvar
14699
14700 : see whether the pthread_atfork exists
14701 $cat >try.c <<EOP
14702 #include <pthread.h>
14703 #include <stdio.h>
14704 int main() {
14705 #ifdef  PTHREAD_ATFORK
14706         pthread_atfork(NULL,NULL,NULL);
14707 #endif
14708 }
14709 EOP
14710
14711 : see if pthread_atfork exists
14712 set try -DPTHREAD_ATFORK
14713 if eval $compile; then
14714     val="$define"
14715 else
14716     val="$undef"
14717 fi
14718 case "$usethreads" in
14719 $define)
14720         case "$val" in
14721         $define) echo 'pthread_atfork found.' >&4        ;;
14722         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14723         esac
14724 esac
14725 set d_pthread_atfork
14726 eval $setvar
14727
14728 : see if pthread_attr_setscope exists
14729 set pthread_attr_setscope d_pthread_attr_setscope
14730 eval $inlibc
14731
14732
14733 : see whether the various POSIXish _yields exist
14734 $cat >try.c <<EOP
14735 #include <pthread.h>
14736 #include <stdio.h>
14737 int main() {
14738 #ifdef SCHED_YIELD
14739         sched_yield();
14740 #else
14741 #ifdef PTHREAD_YIELD
14742         pthread_yield();
14743 #else
14744 #ifdef PTHREAD_YIELD_NULL
14745         pthread_yield(NULL);
14746 #endif
14747 #endif
14748 #endif
14749 }
14750 EOP
14751 : see if sched_yield exists
14752 set try -DSCHED_YIELD
14753 if eval $compile; then
14754     val="$define"
14755     sched_yield='sched_yield()'
14756 else
14757     val="$undef"
14758 fi
14759 case "$usethreads" in
14760 $define)
14761         case "$val" in
14762         $define) echo 'sched_yield() found.' >&4        ;;
14763         *)       echo 'sched_yield() NOT found.' >&4    ;;
14764         esac
14765 esac
14766 set d_sched_yield
14767 eval $setvar
14768
14769 : see if pthread_yield exists
14770 set try -DPTHREAD_YIELD
14771 if eval $compile; then
14772     val="$define"
14773     case "$sched_yield" in
14774     '') sched_yield='pthread_yield()' ;;
14775     esac
14776 else
14777     set try -DPTHREAD_YIELD_NULL
14778     if eval $compile; then
14779         val="$define"
14780         case "$sched_yield" in
14781         '') sched_yield='pthread_yield(NULL)' ;;
14782         esac
14783     else
14784         val="$undef"
14785     fi
14786 fi
14787 case "$usethreads" in
14788 $define)
14789         case "$val" in
14790         $define) echo 'pthread_yield() found.' >&4      ;;
14791         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14792         esac
14793         ;;
14794 esac
14795 set d_pthread_yield
14796 eval $setvar
14797
14798 case "$sched_yield" in
14799 '') sched_yield=undef ;;
14800 esac
14801
14802 $rm -f try try.*
14803
14804 : see if random_r exists
14805 set random_r d_random_r
14806 eval $inlibc
14807 case "$d_random_r" in
14808 "$define")
14809         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14810         case "$d_random_r_proto:$usethreads" in
14811         ":define")      d_random_r_proto=define
14812                 set d_random_r_proto random_r $hdrs
14813                 eval $hasproto ;;
14814         *)      ;;
14815         esac
14816         case "$d_random_r_proto" in
14817         define)
14818         case "$random_r_proto" in
14819         ''|0) try='int random_r(int*, struct random_data*);'
14820         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14821         esac
14822         case "$random_r_proto" in
14823         ''|0) try='int random_r(long*, struct random_data*);'
14824         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14825         esac
14826         case "$random_r_proto" in
14827         ''|0) try='int random_r(struct random_data*, int32_t*);'
14828         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14829         esac
14830         case "$random_r_proto" in
14831         ''|0)   d_random_r=undef
14832                 random_r_proto=0
14833                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14834         * )     case "$random_r_proto" in
14835                 REENTRANT_PROTO*) ;;
14836                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14837                 esac
14838                 echo "Prototype: $try" ;;
14839         esac
14840         ;;
14841         *)      case "$usethreads" in
14842                 define) echo "random_r has no prototype, not using it." >&4 ;;
14843                 esac
14844                 d_random_r=undef
14845                 random_r_proto=0
14846                 ;;
14847         esac
14848         ;;
14849 *)      random_r_proto=0
14850         ;;
14851 esac
14852
14853 : see if readdir and friends exist
14854 set readdir d_readdir
14855 eval $inlibc
14856 set seekdir d_seekdir
14857 eval $inlibc
14858 set telldir d_telldir
14859 eval $inlibc
14860 set rewinddir d_rewinddir
14861 eval $inlibc
14862
14863 : see if readdir64_r exists
14864 set readdir64_r d_readdir64_r
14865 eval $inlibc
14866 case "$d_readdir64_r" in
14867 "$define")
14868         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14869         case "$d_readdir64_r_proto:$usethreads" in
14870         ":define")      d_readdir64_r_proto=define
14871                 set d_readdir64_r_proto readdir64_r $hdrs
14872                 eval $hasproto ;;
14873         *)      ;;
14874         esac
14875         case "$d_readdir64_r_proto" in
14876         define)
14877         case "$readdir64_r_proto" in
14878         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14879         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14880         esac
14881         case "$readdir64_r_proto" in
14882         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14883         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14884         esac
14885         case "$readdir64_r_proto" in
14886         ''|0)   d_readdir64_r=undef
14887                 readdir64_r_proto=0
14888                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14889         * )     case "$readdir64_r_proto" in
14890                 REENTRANT_PROTO*) ;;
14891                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14892                 esac
14893                 echo "Prototype: $try" ;;
14894         esac
14895         ;;
14896         *)      case "$usethreads" in
14897                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14898                 esac
14899                 d_readdir64_r=undef
14900                 readdir64_r_proto=0
14901                 ;;
14902         esac
14903         ;;
14904 *)      readdir64_r_proto=0
14905         ;;
14906 esac
14907
14908 : see if readdir_r exists
14909 set readdir_r d_readdir_r
14910 eval $inlibc
14911 case "$d_readdir_r" in
14912 "$define")
14913         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14914         case "$d_readdir_r_proto:$usethreads" in
14915         ":define")      d_readdir_r_proto=define
14916                 set d_readdir_r_proto readdir_r $hdrs
14917                 eval $hasproto ;;
14918         *)      ;;
14919         esac
14920         case "$d_readdir_r_proto" in
14921         define)
14922         case "$readdir_r_proto" in
14923         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14924         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14925         esac
14926         case "$readdir_r_proto" in
14927         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14928         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14929         esac
14930         case "$readdir_r_proto" in
14931         ''|0)   d_readdir_r=undef
14932                 readdir_r_proto=0
14933                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14934         * )     case "$readdir_r_proto" in
14935                 REENTRANT_PROTO*) ;;
14936                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14937                 esac
14938                 echo "Prototype: $try" ;;
14939         esac
14940         ;;
14941         *)      case "$usethreads" in
14942                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14943                 esac
14944                 d_readdir_r=undef
14945                 readdir_r_proto=0
14946                 ;;
14947         esac
14948         ;;
14949 *)      readdir_r_proto=0
14950         ;;
14951 esac
14952
14953 : see if readv exists
14954 set readv d_readv
14955 eval $inlibc
14956
14957 : see if recvmsg exists
14958 set recvmsg d_recvmsg
14959 eval $inlibc
14960
14961 : see if rename exists
14962 set rename d_rename
14963 eval $inlibc
14964
14965 : see if rmdir exists
14966 set rmdir d_rmdir
14967 eval $inlibc
14968
14969 : see if memory.h is available.
14970 val=''
14971 set memory.h val
14972 eval $inhdr
14973
14974 : See if it conflicts with string.h
14975 case "$val" in
14976 $define)
14977         case "$strings" in
14978         '') ;;
14979         *)
14980                 $cppstdin $cppflags $cppminus < $strings > mem.h
14981                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14982                         echo " "
14983                         echo "We won't be including <memory.h>."
14984                         val="$undef"
14985                 fi
14986                 $rm -f mem.h
14987                 ;;
14988         esac
14989 esac
14990 set i_memory
14991 eval $setvar
14992
14993 : can bcopy handle overlapping blocks?
14994 echo " "
14995 val="$undef"
14996 case "$d_memmove" in
14997 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14998 *)      case "$d_bcopy" in
14999         "$define")
15000                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15001                 $cat >try.c <<EOCP
15002 #$i_memory I_MEMORY
15003 #$i_stdlib I_STDLIB
15004 #$i_string I_STRING
15005 #$i_unistd I_UNISTD
15006 EOCP
15007         $cat >>try.c <<'EOCP'
15008 #include <stdio.h>
15009 #ifdef I_MEMORY
15010 #  include <memory.h>
15011 #endif
15012 #ifdef I_STDLIB
15013 #  include <stdlib.h>
15014 #endif
15015 #ifdef I_STRING
15016 #  include <string.h>
15017 #else
15018 #  include <strings.h>
15019 #endif
15020 #ifdef I_UNISTD
15021 #  include <unistd.h>  /* Needed for NetBSD */
15022 #endif
15023 int main()
15024 {
15025 char buf[128], abc[128];
15026 char *b;
15027 int len;
15028 int off;
15029 int align;
15030
15031 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15032    try to store the string in read-only memory. */
15033 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15034
15035 for (align = 7; align >= 0; align--) {
15036         for (len = 36; len; len--) {
15037                 b = buf+align;
15038                 bcopy(abc, b, len);
15039                 for (off = 1; off <= len; off++) {
15040                         bcopy(b, b+off, len);
15041                         bcopy(b+off, b, len);
15042                         if (bcmp(b, abc, len))
15043                                 exit(1);
15044                 }
15045         }
15046 }
15047 exit(0);
15048 }
15049 EOCP
15050                 set try
15051                 if eval $compile_ok; then
15052                         if ./try 2>/dev/null; then
15053                                 echo "Yes, it can."
15054                                 val="$define"
15055                         else
15056                                 echo "It can't, sorry."
15057                         fi
15058                 else
15059                         echo "(I can't compile the test program, so we'll assume not...)"
15060                 fi
15061                 ;;
15062         esac
15063         $rm -f try.* try core
15064         ;;
15065 esac
15066 set d_safebcpy
15067 eval $setvar
15068
15069 : can memcpy handle overlapping blocks?
15070 echo " "
15071 val="$undef"
15072 case "$d_memmove" in
15073 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15074 *)      case "$d_memcpy" in
15075         "$define")
15076                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15077                 $cat >try.c <<EOCP
15078 #$i_memory I_MEMORY
15079 #$i_stdlib I_STDLIB
15080 #$i_string I_STRING
15081 #$i_unistd I_UNISTD
15082 EOCP
15083         $cat >>try.c <<'EOCP'
15084 #include <stdio.h>
15085 #ifdef I_MEMORY
15086 #  include <memory.h>
15087 #endif
15088 #ifdef I_STDLIB
15089 #  include <stdlib.h>
15090 #endif
15091 #ifdef I_STRING
15092 #  include <string.h>
15093 #else
15094 #  include <strings.h>
15095 #endif
15096 #ifdef I_UNISTD
15097 #  include <unistd.h>  /* Needed for NetBSD */
15098 #endif
15099 int main()
15100 {
15101 char buf[128], abc[128];
15102 char *b;
15103 int len;
15104 int off;
15105 int align;
15106
15107 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15108    try to store the string in read-only memory. */
15109 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15110
15111 for (align = 7; align >= 0; align--) {
15112         for (len = 36; len; len--) {
15113                 b = buf+align;
15114                 memcpy(b, abc, len);
15115                 for (off = 1; off <= len; off++) {
15116                         memcpy(b+off, b, len);
15117                         memcpy(b, b+off, len);
15118                         if (memcmp(b, abc, len))
15119                                 exit(1);
15120                 }
15121         }
15122 }
15123 exit(0);
15124 }
15125 EOCP
15126                 set try
15127                 if eval $compile_ok; then
15128                         if ./try 2>/dev/null; then
15129                                 echo "Yes, it can."
15130                                 val="$define"
15131                         else
15132                                 echo "It can't, sorry."
15133                         fi
15134                 else
15135                         echo "(I can't compile the test program, so we'll assume not...)"
15136                 fi
15137                 ;;
15138         esac
15139         $rm -f try.* try core
15140         ;;
15141 esac
15142 set d_safemcpy
15143 eval $setvar
15144
15145 : can memcmp be trusted to compare relative magnitude?
15146 val="$undef"
15147 case "$d_memcmp" in
15148 "$define")
15149         echo " "
15150         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15151         $cat >try.c <<EOCP
15152 #$i_memory I_MEMORY
15153 #$i_stdlib I_STDLIB
15154 #$i_string I_STRING
15155 #$i_unistd I_UNISTD
15156 EOCP
15157         $cat >>try.c <<'EOCP'
15158 #include <stdio.h>
15159 #ifdef I_MEMORY
15160 #  include <memory.h>
15161 #endif
15162 #ifdef I_STDLIB
15163 #  include <stdlib.h>
15164 #endif
15165 #ifdef I_STRING
15166 #  include <string.h>
15167 #else
15168 #  include <strings.h>
15169 #endif
15170 #ifdef I_UNISTD
15171 #  include <unistd.h>  /* Needed for NetBSD */
15172 #endif
15173 int main()
15174 {
15175 char a = -1;
15176 char b = 0;
15177 if ((a < b) && memcmp(&a, &b, 1) < 0)
15178         exit(1);
15179 exit(0);
15180 }
15181 EOCP
15182         set try
15183         if eval $compile_ok; then
15184                 if $run ./try 2>/dev/null; then
15185                         echo "Yes, it can."
15186                         val="$define"
15187                 else
15188                         echo "No, it can't (it uses signed chars)."
15189                 fi
15190         else
15191                 echo "(I can't compile the test program, so we'll assume not...)"
15192         fi
15193         ;;
15194 esac
15195 $rm -f try.* try core
15196 set d_sanemcmp
15197 eval $setvar
15198
15199 : see if prototype for sbrk is available
15200 echo " "
15201 set d_sbrkproto sbrk $i_unistd unistd.h
15202 eval $hasproto
15203
15204 : see if select exists
15205 set select d_select
15206 eval $inlibc
15207
15208 : see if semctl exists
15209 set semctl d_semctl
15210 eval $inlibc
15211
15212 : see if semget exists
15213 set semget d_semget
15214 eval $inlibc
15215
15216 : see if semop exists
15217 set semop d_semop
15218 eval $inlibc
15219
15220 : see how much of the 'sem*(2)' library is present.
15221 h_sem=true
15222 echo " "
15223 case "$d_semctl$d_semget$d_semop" in
15224 *"$undef"*) h_sem=false;;
15225 esac
15226 case "$osname" in
15227 freebsd)
15228     case "`ipcs 2>&1`" in
15229     "SVID messages"*"not configured"*)
15230         echo "Your $osname does not have the sem*(2) configured." >&4
15231         h_sem=false
15232         val="$undef"
15233         set semctl d_semctl
15234         eval $setvar
15235         set semget d_semget
15236         eval $setvar
15237         set semop d_semop
15238         eval $setvar
15239         ;;
15240     esac
15241     ;;
15242 esac
15243 : we could also check for sys/ipc.h ...
15244 if $h_sem && $test `./findhdr sys/sem.h`; then
15245         echo "You have the full sem*(2) library." >&4
15246         val="$define"
15247 else
15248         echo "You don't have the full sem*(2) library." >&4
15249         val="$undef"
15250 fi
15251 set d_sem
15252 eval $setvar
15253
15254 : see whether sys/sem.h defines union semun
15255 echo " "
15256 $cat > try.c <<'END'
15257 #include <sys/types.h>
15258 #include <sys/ipc.h>
15259 #include <sys/sem.h>
15260 int main () { union semun semun; semun.buf = 0; }
15261 END
15262 set try
15263 if eval $compile; then
15264     echo "You have union semun in <sys/sem.h>." >&4
15265     val="$define"
15266 else
15267     echo "You do not have union semun in <sys/sem.h>." >&4
15268     val="$undef"
15269 fi
15270 $rm -f try try.c
15271 set d_union_semun
15272 eval $setvar
15273
15274 : see how to do semctl IPC_STAT
15275 case "$d_sem" in
15276 $define)
15277     echo " "
15278     $cat > try.h <<END
15279 #ifndef S_IRUSR
15280 #   ifdef S_IREAD
15281 #       define S_IRUSR S_IREAD
15282 #       define S_IWUSR S_IWRITE
15283 #       define S_IXUSR S_IEXEC
15284 #   else
15285 #       define S_IRUSR 0400
15286 #       define S_IWUSR 0200
15287 #       define S_IXUSR 0100
15288 #   endif
15289 #   define S_IRGRP (S_IRUSR>>3)
15290 #   define S_IWGRP (S_IWUSR>>3)
15291 #   define S_IXGRP (S_IXUSR>>3)
15292 #   define S_IROTH (S_IRUSR>>6)
15293 #   define S_IWOTH (S_IWUSR>>6)
15294 #   define S_IXOTH (S_IXUSR>>6)
15295 #endif
15296 #ifndef S_IRWXU
15297 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15298 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15299 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15300 #endif
15301 END
15302     : see whether semctl IPC_STAT can use union semun
15303     val="$undef"
15304     case "$d_semctl_semun" in
15305     '')
15306       $cat > try.c <<END
15307 #include <sys/types.h>
15308 #include <sys/ipc.h>
15309 #include <sys/sem.h>
15310 #include <sys/stat.h>
15311 #include <stdio.h>
15312 #include <errno.h>
15313 #include "try.h"
15314 #ifndef errno
15315 extern int errno;
15316 #endif
15317 #$d_union_semun HAS_UNION_SEMUN
15318 int main() {
15319     union semun
15320 #ifndef HAS_UNION_SEMUN
15321     {
15322         int val;
15323         struct semid_ds *buf;
15324         unsigned short *array;
15325     }
15326 #endif
15327     arg;
15328     int sem, st;
15329
15330 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15331     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15332     if (sem > -1) {
15333         struct semid_ds argbuf;
15334         arg.buf = &argbuf;
15335 #       ifdef IPC_STAT
15336         st = semctl(sem, 0, IPC_STAT, arg);
15337         if (st == 0)
15338             printf("semun\n");
15339         else
15340 #       endif /* IPC_STAT */
15341             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15342 #       ifdef IPC_RMID
15343         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15344 #       endif /* IPC_RMID */
15345             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15346     } else
15347 #endif /* IPC_PRIVATE && ... */
15348         printf("semget failed: errno = %d\n", errno);
15349   return 0;
15350 }
15351 END
15352       set try
15353       if eval $compile; then
15354           xxx=`$run ./try`
15355           case "$xxx" in
15356           semun) val="$define" ;;
15357           esac
15358       fi
15359       $rm -f try try.c
15360       ;;
15361     esac
15362     set d_semctl_semun
15363     eval $setvar
15364     case "$d_semctl_semun" in
15365     $define)
15366         echo "You can use union semun for semctl IPC_STAT." >&4
15367         also='also'
15368         ;;
15369     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15370         also=''
15371         ;;
15372     esac
15373
15374     : see whether semctl IPC_STAT can use struct semid_ds pointer
15375     val="$undef"
15376     case "$d_semctl_semid_ds" in
15377     '')
15378       $cat > try.c <<'END'
15379 #include <sys/types.h>
15380 #include <sys/ipc.h>
15381 #include <sys/sem.h>
15382 #include <sys/stat.h>
15383 #include "try.h"
15384 #include <stdio.h>
15385 #include <errno.h>
15386 #ifndef errno
15387 extern int errno;
15388 #endif
15389 int main() {
15390     struct semid_ds arg;
15391     int sem, st;
15392
15393 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15394     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15395     if (sem > -1) {
15396 #       ifdef IPC_STAT
15397         st = semctl(sem, 0, IPC_STAT, &arg);
15398         if (st == 0)
15399             printf("semid_ds\n");
15400         else
15401 #       endif /* IPC_STAT */
15402             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15403 #       ifdef IPC_RMID
15404         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15405 #       endif /* IPC_RMID */
15406             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15407     } else
15408 #endif /* IPC_PRIVATE && ... */
15409         printf("semget failed: errno = %d\n", errno);
15410
15411     return 0;
15412 }
15413 END
15414       set try
15415       if eval $compile; then
15416           xxx=`$run ./try`
15417           case "$xxx" in
15418           semid_ds) val="$define" ;;
15419           esac
15420       fi
15421       $rm -f try try.c
15422       ;;
15423     esac
15424     set d_semctl_semid_ds
15425     eval $setvar
15426     case "$d_semctl_semid_ds" in
15427     $define)
15428         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15429         ;;
15430     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15431         ;;
15432     esac
15433     $rm -f try.h
15434     ;;
15435 *)  val="$undef"
15436
15437     # We do not have the full sem*(2) library, so assume we can not
15438     # use either.
15439
15440     set d_semctl_semun
15441     eval $setvar
15442
15443     set d_semctl_semid_ds
15444     eval $setvar
15445     ;;
15446 esac
15447
15448 : see if sendmsg exists
15449 set sendmsg d_sendmsg
15450 eval $inlibc
15451
15452 : see if setegid exists
15453 set setegid d_setegid
15454 eval $inlibc
15455
15456 : see if seteuid exists
15457 set seteuid d_seteuid
15458 eval $inlibc
15459
15460 : see if setgrent exists
15461 set setgrent d_setgrent
15462 eval $inlibc
15463
15464 : see if setgrent_r exists
15465 set setgrent_r d_setgrent_r
15466 eval $inlibc
15467 case "$d_setgrent_r" in
15468 "$define")
15469         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15470         case "$d_setgrent_r_proto:$usethreads" in
15471         ":define")      d_setgrent_r_proto=define
15472                 set d_setgrent_r_proto setgrent_r $hdrs
15473                 eval $hasproto ;;
15474         *)      ;;
15475         esac
15476         case "$d_setgrent_r_proto" in
15477         define)
15478         case "$setgrent_r_proto" in
15479         ''|0) try='int setgrent_r(FILE**);'
15480         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15481         esac
15482         case "$setgrent_r_proto" in
15483         ''|0) try='void setgrent_r(FILE**);'
15484         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15485         esac
15486         case "$setgrent_r_proto" in
15487         ''|0)   d_setgrent_r=undef
15488                 setgrent_r_proto=0
15489                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15490         * )     case "$setgrent_r_proto" in
15491                 REENTRANT_PROTO*) ;;
15492                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15493                 esac
15494                 echo "Prototype: $try" ;;
15495         esac
15496         ;;
15497         *)      case "$usethreads" in
15498                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15499                 esac
15500                 d_setgrent_r=undef
15501                 setgrent_r_proto=0
15502                 ;;
15503         esac
15504         ;;
15505 *)      setgrent_r_proto=0
15506         ;;
15507 esac
15508
15509 : see if sethostent exists
15510 set sethostent d_sethent
15511 eval $inlibc
15512
15513 : see if sethostent_r exists
15514 set sethostent_r d_sethostent_r
15515 eval $inlibc
15516 case "$d_sethostent_r" in
15517 "$define")
15518         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15519         case "$d_sethostent_r_proto:$usethreads" in
15520         ":define")      d_sethostent_r_proto=define
15521                 set d_sethostent_r_proto sethostent_r $hdrs
15522                 eval $hasproto ;;
15523         *)      ;;
15524         esac
15525         case "$d_sethostent_r_proto" in
15526         define)
15527         case "$sethostent_r_proto" in
15528         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15529         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15530         esac
15531         case "$sethostent_r_proto" in
15532         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15533         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15534         esac
15535         case "$sethostent_r_proto" in
15536         ''|0)   d_sethostent_r=undef
15537                 sethostent_r_proto=0
15538                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15539         * )     case "$sethostent_r_proto" in
15540                 REENTRANT_PROTO*) ;;
15541                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15542                 esac
15543                 echo "Prototype: $try" ;;
15544         esac
15545         ;;
15546         *)      case "$usethreads" in
15547                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15548                 esac
15549                 d_sethostent_r=undef
15550                 sethostent_r_proto=0
15551                 ;;
15552         esac
15553         ;;
15554 *)      sethostent_r_proto=0
15555         ;;
15556 esac
15557
15558 : see if setitimer exists
15559 set setitimer d_setitimer
15560 eval $inlibc
15561
15562 : see if setlinebuf exists
15563 set setlinebuf d_setlinebuf
15564 eval $inlibc
15565
15566 : see if setlocale exists
15567 set setlocale d_setlocale
15568 eval $inlibc
15569
15570 : see if locale.h is available
15571 set locale.h i_locale
15572 eval $inhdr
15573
15574 : see if setlocale_r exists
15575 set setlocale_r d_setlocale_r
15576 eval $inlibc
15577 case "$d_setlocale_r" in
15578 "$define")
15579         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15580         case "$d_setlocale_r_proto:$usethreads" in
15581         ":define")      d_setlocale_r_proto=define
15582                 set d_setlocale_r_proto setlocale_r $hdrs
15583                 eval $hasproto ;;
15584         *)      ;;
15585         esac
15586         case "$d_setlocale_r_proto" in
15587         define)
15588         case "$setlocale_r_proto" in
15589         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15590         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15591         esac
15592         case "$setlocale_r_proto" in
15593         ''|0)   d_setlocale_r=undef
15594                 setlocale_r_proto=0
15595                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15596         * )     case "$setlocale_r_proto" in
15597                 REENTRANT_PROTO*) ;;
15598                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15599                 esac
15600                 echo "Prototype: $try" ;;
15601         esac
15602         ;;
15603         *)      case "$usethreads" in
15604                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15605                 esac
15606                 d_setlocale_r=undef
15607                 setlocale_r_proto=0
15608                 ;;
15609         esac
15610         ;;
15611 *)      setlocale_r_proto=0
15612         ;;
15613 esac
15614
15615 : see if setnetent exists
15616 set setnetent d_setnent
15617 eval $inlibc
15618
15619 : see if setnetent_r exists
15620 set setnetent_r d_setnetent_r
15621 eval $inlibc
15622 case "$d_setnetent_r" in
15623 "$define")
15624         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15625         case "$d_setnetent_r_proto:$usethreads" in
15626         ":define")      d_setnetent_r_proto=define
15627                 set d_setnetent_r_proto setnetent_r $hdrs
15628                 eval $hasproto ;;
15629         *)      ;;
15630         esac
15631         case "$d_setnetent_r_proto" in
15632         define)
15633         case "$setnetent_r_proto" in
15634         ''|0) try='int setnetent_r(int, struct netent_data*);'
15635         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15636         esac
15637         case "$setnetent_r_proto" in
15638         ''|0) try='void setnetent_r(int, struct netent_data*);'
15639         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15640         esac
15641         case "$setnetent_r_proto" in
15642         ''|0)   d_setnetent_r=undef
15643                 setnetent_r_proto=0
15644                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15645         * )     case "$setnetent_r_proto" in
15646                 REENTRANT_PROTO*) ;;
15647                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15648                 esac
15649                 echo "Prototype: $try" ;;
15650         esac
15651         ;;
15652         *)      case "$usethreads" in
15653                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15654                 esac
15655                 d_setnetent_r=undef
15656                 setnetent_r_proto=0
15657                 ;;
15658         esac
15659         ;;
15660 *)      setnetent_r_proto=0
15661         ;;
15662 esac
15663
15664 : see if setprotoent exists
15665 set setprotoent d_setpent
15666 eval $inlibc
15667
15668 : see if setpgid exists
15669 set setpgid d_setpgid
15670 eval $inlibc
15671
15672 : see if setpgrp2 exists
15673 set setpgrp2 d_setpgrp2
15674 eval $inlibc
15675
15676 : see if setpriority exists
15677 set setpriority d_setprior
15678 eval $inlibc
15679
15680 : see if setproctitle exists
15681 set setproctitle d_setproctitle
15682 eval $inlibc
15683
15684 : see if setprotoent_r exists
15685 set setprotoent_r d_setprotoent_r
15686 eval $inlibc
15687 case "$d_setprotoent_r" in
15688 "$define")
15689         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15690         case "$d_setprotoent_r_proto:$usethreads" in
15691         ":define")      d_setprotoent_r_proto=define
15692                 set d_setprotoent_r_proto setprotoent_r $hdrs
15693                 eval $hasproto ;;
15694         *)      ;;
15695         esac
15696         case "$d_setprotoent_r_proto" in
15697         define)
15698         case "$setprotoent_r_proto" in
15699         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15700         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15701         esac
15702         case "$setprotoent_r_proto" in
15703         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15704         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15705         esac
15706         case "$setprotoent_r_proto" in
15707         ''|0)   d_setprotoent_r=undef
15708                 setprotoent_r_proto=0
15709                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15710         * )     case "$setprotoent_r_proto" in
15711                 REENTRANT_PROTO*) ;;
15712                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15713                 esac
15714                 echo "Prototype: $try" ;;
15715         esac
15716         ;;
15717         *)      case "$usethreads" in
15718                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15719                 esac
15720                 d_setprotoent_r=undef
15721                 setprotoent_r_proto=0
15722                 ;;
15723         esac
15724         ;;
15725 *)      setprotoent_r_proto=0
15726         ;;
15727 esac
15728
15729 : see if setpwent exists
15730 set setpwent d_setpwent
15731 eval $inlibc
15732
15733 : see if setpwent_r exists
15734 set setpwent_r d_setpwent_r
15735 eval $inlibc
15736 case "$d_setpwent_r" in
15737 "$define")
15738         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15739         case "$d_setpwent_r_proto:$usethreads" in
15740         ":define")      d_setpwent_r_proto=define
15741                 set d_setpwent_r_proto setpwent_r $hdrs
15742                 eval $hasproto ;;
15743         *)      ;;
15744         esac
15745         case "$d_setpwent_r_proto" in
15746         define)
15747         case "$setpwent_r_proto" in
15748         ''|0) try='int setpwent_r(FILE**);'
15749         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15750         esac
15751         case "$setpwent_r_proto" in
15752         ''|0) try='void setpwent_r(FILE**);'
15753         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15754         esac
15755         case "$setpwent_r_proto" in
15756         ''|0)   d_setpwent_r=undef
15757                 setpwent_r_proto=0
15758                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15759         * )     case "$setpwent_r_proto" in
15760                 REENTRANT_PROTO*) ;;
15761                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15762                 esac
15763                 echo "Prototype: $try" ;;
15764         esac
15765         ;;
15766         *)      case "$usethreads" in
15767                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15768                 esac
15769                 d_setpwent_r=undef
15770                 setpwent_r_proto=0
15771                 ;;
15772         esac
15773         ;;
15774 *)      setpwent_r_proto=0
15775         ;;
15776 esac
15777
15778 : see if setregid exists
15779 set setregid d_setregid
15780 eval $inlibc
15781 set setresgid d_setresgid
15782 eval $inlibc
15783
15784 : see if setreuid exists
15785 set setreuid d_setreuid
15786 eval $inlibc
15787 set setresuid d_setresuid
15788 eval $inlibc
15789
15790 : see if setrgid exists
15791 set setrgid d_setrgid
15792 eval $inlibc
15793
15794 : see if setruid exists
15795 set setruid d_setruid
15796 eval $inlibc
15797
15798 : see if setservent exists
15799 set setservent d_setsent
15800 eval $inlibc
15801
15802 : see if setservent_r exists
15803 set setservent_r d_setservent_r
15804 eval $inlibc
15805 case "$d_setservent_r" in
15806 "$define")
15807         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15808         case "$d_setservent_r_proto:$usethreads" in
15809         ":define")      d_setservent_r_proto=define
15810                 set d_setservent_r_proto setservent_r $hdrs
15811                 eval $hasproto ;;
15812         *)      ;;
15813         esac
15814         case "$d_setservent_r_proto" in
15815         define)
15816         case "$setservent_r_proto" in
15817         ''|0) try='int setservent_r(int, struct servent_data*);'
15818         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15819         esac
15820         case "$setservent_r_proto" in
15821         ''|0) try='void setservent_r(int, struct servent_data*);'
15822         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15823         esac
15824         case "$setservent_r_proto" in
15825         ''|0)   d_setservent_r=undef
15826                 setservent_r_proto=0
15827                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15828         * )     case "$setservent_r_proto" in
15829                 REENTRANT_PROTO*) ;;
15830                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15831                 esac
15832                 echo "Prototype: $try" ;;
15833         esac
15834         ;;
15835         *)      case "$usethreads" in
15836                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15837                 esac
15838                 d_setservent_r=undef
15839                 setservent_r_proto=0
15840                 ;;
15841         esac
15842         ;;
15843 *)      setservent_r_proto=0
15844         ;;
15845 esac
15846
15847 : see if setsid exists
15848 set setsid d_setsid
15849 eval $inlibc
15850
15851 : see if setvbuf exists
15852 set setvbuf d_setvbuf
15853 eval $inlibc
15854
15855 : see if sfio.h is available
15856 set sfio.h i_sfio
15857 eval $inhdr
15858
15859
15860 : see if sfio library is available
15861 case "$i_sfio" in
15862 $define)
15863         val=''
15864         set sfreserve val
15865         eval $inlibc
15866         ;;
15867 *)
15868         val="$undef"
15869         ;;
15870 esac
15871 : Ok, but do we want to use it.
15872 case "$val" in
15873 $define)
15874         case "$usesfio" in
15875         true|$define|[yY]*) dflt='y';;
15876         *) dflt='n';;
15877         esac
15878         echo "$package can use the sfio library, but it is experimental."
15879         case "$useperlio" in
15880         "$undef")
15881             echo "For sfio also the PerlIO abstraction layer is needed."
15882             echo "Earlier you said you wouldn't want that."
15883             ;;
15884         esac
15885         rp="You seem to have sfio available, do you want to try using it?"
15886         . ./myread
15887         case "$ans" in
15888         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15889                 useperlio="$define"
15890                 val="$define"
15891                 ;;
15892         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15893                 val="$undef"
15894                 ;;
15895         esac
15896         ;;
15897 *)      case "$usesfio" in
15898         true|$define|[yY]*)
15899                 echo "Sorry, cannot find sfio on this machine." >&4
15900                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15901                 val="$undef"
15902                 ;;
15903         esac
15904         ;;
15905 esac
15906 set d_sfio
15907 eval $setvar
15908 case "$d_sfio" in
15909 $define) usesfio='true';;
15910 *) usesfio='false';;
15911 esac
15912 case "$d_sfio" in
15913 $define) ;;
15914 *)      : Remove sfio from list of libraries to use
15915         case "$libs" in
15916         *-lsfio*)
15917                 echo "Removing unneeded -lsfio from library list" >&4
15918                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15919                 shift
15920                 libs="$*"
15921                 echo "libs = $libs" >&4
15922                 ;;
15923         esac
15924 ;;
15925 esac
15926
15927
15928 : see if shmctl exists
15929 set shmctl d_shmctl
15930 eval $inlibc
15931
15932 : see if shmget exists
15933 set shmget d_shmget
15934 eval $inlibc
15935
15936 : see if shmat exists
15937 set shmat d_shmat
15938 eval $inlibc
15939 : see what shmat returns
15940 case "$d_shmat" in
15941 "$define")
15942         $cat >shmat.c <<'END'
15943 #include <sys/shm.h>
15944 void *shmat();
15945 END
15946         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15947                 shmattype='void *'
15948         else
15949                 shmattype='char *'
15950         fi
15951         echo "and it returns ($shmattype)." >&4
15952         : see if a prototype for shmat is available
15953         xxx=`./findhdr sys/shm.h`
15954         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15955         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15956                 val="$define"
15957         else
15958                 val="$undef"
15959         fi
15960         $rm -f shmat.[co]
15961         ;;
15962 *)
15963         val="$undef"
15964         ;;
15965 esac
15966 set d_shmatprototype
15967 eval $setvar
15968
15969 : see if shmdt exists
15970 set shmdt d_shmdt
15971 eval $inlibc
15972
15973 : see how much of the 'shm*(2)' library is present.
15974 h_shm=true
15975 echo " "
15976 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15977 *"$undef"*) h_shm=false;;
15978 esac
15979 case "$osname" in
15980 freebsd)
15981     case "`ipcs 2>&1`" in
15982     "SVID shared memory"*"not configured"*)
15983         echo "Your $osname does not have the shm*(2) configured." >&4
15984         h_shm=false
15985         val="$undef"
15986         set shmctl d_shmctl
15987         evat $setvar
15988         set shmget d_shmget
15989         evat $setvar
15990         set shmat d_shmat
15991         evat $setvar
15992         set shmdt d_shmdt
15993         evat $setvar
15994         ;;
15995     esac
15996     ;;
15997 esac
15998 : we could also check for sys/ipc.h ...
15999 if $h_shm && $test `./findhdr sys/shm.h`; then
16000         echo "You have the full shm*(2) library." >&4
16001         val="$define"
16002 else
16003         echo "You don't have the full shm*(2) library." >&4
16004         val="$undef"
16005 fi
16006 set d_shm
16007 eval $setvar
16008
16009 echo " "
16010 : see if we have sigaction
16011 if set sigaction val -f d_sigaction; eval $csym; $val; then
16012         echo 'sigaction() found.' >&4
16013         $cat > try.c <<EOP
16014 #include <stdio.h>
16015 #include <sys/types.h>
16016 #include <signal.h>
16017 #$i_stdlib I_STDLIB
16018 #ifdef I_STDLIB
16019 #include <stdlib.h>
16020 #endif
16021 int main()
16022 {
16023     struct sigaction act, oact;
16024     act.sa_flags = 0;
16025     oact.sa_handler = 0;
16026     /* so that act and oact are used */
16027     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16028 }
16029 EOP
16030         set try
16031         if eval $compile_ok; then
16032                 val="$define"
16033         else
16034                 echo "But you don't seem to have a useable struct sigaction." >&4
16035                 val="$undef"
16036         fi
16037 else
16038         echo 'sigaction NOT found.' >&4
16039         val="$undef"
16040 fi
16041 set d_sigaction; eval $setvar
16042 $rm -f try try$_o try.c
16043
16044 : see if sigprocmask exists
16045 set sigprocmask d_sigprocmask
16046 eval $inlibc
16047
16048 : see if sigsetjmp exists
16049 echo " "
16050 case "$d_sigsetjmp" in
16051 '')
16052         $cat >try.c <<EOP
16053 #include <setjmp.h>
16054 #$i_stdlib I_STDLIB
16055 #ifdef I_STDLIB
16056 #include <stdlib.h>
16057 #endif
16058 sigjmp_buf env;
16059 int set = 1;
16060 int main()
16061 {
16062         if (sigsetjmp(env,1))
16063                 exit(set);
16064         set = 0;
16065         siglongjmp(env, 1);
16066         exit(1);
16067 }
16068 EOP
16069         set try
16070         if eval $compile; then
16071                 if $run ./try >/dev/null 2>&1; then
16072                         echo "POSIX sigsetjmp found." >&4
16073                         val="$define"
16074                 else
16075                         $cat >&4 <<EOM
16076 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16077 I'll ignore them.
16078 EOM
16079                         val="$undef"
16080                 fi
16081         else
16082                 echo "sigsetjmp not found." >&4
16083                 val="$undef"
16084         fi
16085         ;;
16086 *) val="$d_sigsetjmp"
16087         case "$d_sigsetjmp" in
16088         $define) echo "POSIX sigsetjmp found." >&4;;
16089         $undef) echo "sigsetjmp not found." >&4;;
16090         esac
16091         ;;
16092 esac
16093 set d_sigsetjmp
16094 eval $setvar
16095 $rm -f try.c try
16096
16097 : see if sockatmark exists
16098 set sockatmark d_sockatmark
16099 eval $inlibc
16100
16101 : see if prototype for sockatmark is available
16102 echo " "
16103 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16104 eval $hasproto
16105
16106 : see if socks5_init exists
16107 set socks5_init d_socks5_init
16108 eval $inlibc
16109
16110 : see if srand48_r exists
16111 set srand48_r d_srand48_r
16112 eval $inlibc
16113 case "$d_srand48_r" in
16114 "$define")
16115         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16116         case "$d_srand48_r_proto:$usethreads" in
16117         ":define")      d_srand48_r_proto=define
16118                 set d_srand48_r_proto srand48_r $hdrs
16119                 eval $hasproto ;;
16120         *)      ;;
16121         esac
16122         case "$d_srand48_r_proto" in
16123         define)
16124         case "$srand48_r_proto" in
16125         ''|0) try='int srand48_r(long, struct drand48_data*);'
16126         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16127         esac
16128         case "$srand48_r_proto" in
16129         ''|0)   d_srand48_r=undef
16130                 srand48_r_proto=0
16131                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16132         * )     case "$srand48_r_proto" in
16133                 REENTRANT_PROTO*) ;;
16134                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16135                 esac
16136                 echo "Prototype: $try" ;;
16137         esac
16138         ;;
16139         *)      case "$usethreads" in
16140                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16141                 esac
16142                 d_srand48_r=undef
16143                 srand48_r_proto=0
16144                 ;;
16145         esac
16146         ;;
16147 *)      srand48_r_proto=0
16148         ;;
16149 esac
16150
16151 : see if srandom_r exists
16152 set srandom_r d_srandom_r
16153 eval $inlibc
16154 case "$d_srandom_r" in
16155 "$define")
16156         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16157         case "$d_srandom_r_proto:$usethreads" in
16158         ":define")      d_srandom_r_proto=define
16159                 set d_srandom_r_proto srandom_r $hdrs
16160                 eval $hasproto ;;
16161         *)      ;;
16162         esac
16163         case "$d_srandom_r_proto" in
16164         define)
16165         case "$srandom_r_proto" in
16166         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16167         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16168         esac
16169         case "$srandom_r_proto" in
16170         ''|0)   d_srandom_r=undef
16171                 srandom_r_proto=0
16172                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16173         * )     case "$srandom_r_proto" in
16174                 REENTRANT_PROTO*) ;;
16175                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16176                 esac
16177                 echo "Prototype: $try" ;;
16178         esac
16179         ;;
16180         *)      case "$usethreads" in
16181                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16182                 esac
16183                 d_srandom_r=undef
16184                 srandom_r_proto=0
16185                 ;;
16186         esac
16187         ;;
16188 *)      srandom_r_proto=0
16189         ;;
16190 esac
16191
16192 : see if prototype for setresgid is available
16193 echo " "
16194 set d_sresgproto setresgid $i_unistd unistd.h
16195 eval $hasproto
16196
16197 : see if prototype for setresuid is available
16198 echo " "
16199 set d_sresuproto setresuid $i_unistd unistd.h
16200 eval $hasproto
16201
16202 : see if sys/stat.h is available
16203 set sys/stat.h i_sysstat
16204 eval $inhdr
16205
16206
16207 : see if stat knows about block sizes
16208 echo " "
16209 echo "Checking to see if your struct stat has st_blocks field..." >&4
16210 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16211 eval $hasfield
16212
16213
16214 : see if this is a sys/vfs.h system
16215 set sys/vfs.h i_sysvfs
16216 eval $inhdr
16217
16218
16219 : see if this is a sys/statfs.h system
16220 set sys/statfs.h i_sysstatfs
16221 eval $inhdr
16222
16223
16224 echo " "
16225 echo "Checking to see if your system supports struct statfs..." >&4
16226 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
16227 eval $hasstruct
16228 case "$d_statfs_s" in
16229 "$define")      echo "Yes, it does."   ;;
16230 *)              echo "No, it doesn't." ;;
16231 esac
16232
16233
16234
16235 : see if struct statfs knows about f_flags
16236 case "$d_statfs_s" in
16237 define) 
16238         echo " "
16239         echo "Checking to see if your struct statfs has f_flags field..." >&4
16240         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
16241         eval $hasfield
16242         ;;
16243 *)      val="$undef"
16244         set d_statfs_f_flags
16245         eval $setvar
16246         ;;
16247 esac
16248 case "$d_statfs_f_flags" in
16249 "$define")      echo "Yes, it does."   ;;
16250 *)              echo "No, it doesn't." ;;
16251 esac
16252
16253 $cat >&4 <<EOM
16254 Checking how to access stdio streams by file descriptor number...
16255 EOM
16256 case "$stdio_stream_array" in
16257 '')     $cat >try.c <<EOCP
16258 #include <stdio.h>
16259 int main() {
16260   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16261     printf("yes\n");
16262 }
16263 EOCP
16264         for s in _iob __iob __sF
16265         do
16266                 set try -DSTDIO_STREAM_ARRAY=$s
16267                 if eval $compile; then
16268                         case "`$run ./try`" in
16269                         yes)    stdio_stream_array=$s; break ;;
16270                         esac
16271                 fi
16272         done
16273         $rm -f try.* try$exe_ext
16274 esac
16275 case "$stdio_stream_array" in
16276 '')     $cat >&4 <<EOM
16277 I can't figure out how to access stdio streams by file descriptor number.
16278 EOM
16279         d_stdio_stream_array="$undef"
16280         ;;
16281 *)      $cat >&4 <<EOM
16282 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16283 EOM
16284         d_stdio_stream_array="$define"
16285         ;;
16286 esac
16287
16288 : see if strcoll exists
16289 set strcoll d_strcoll
16290 eval $inlibc
16291
16292 : check for structure copying
16293 echo " "
16294 echo "Checking to see if your C compiler can copy structs..." >&4
16295 $cat >try.c <<'EOCP'
16296 int main()
16297 {
16298         struct blurfl {
16299                 int dyick;
16300         } foo, bar;
16301
16302         foo = bar;
16303 }
16304 EOCP
16305 if $cc -c try.c >/dev/null 2>&1 ; then
16306         val="$define"
16307         echo "Yup, it can."
16308 else
16309         val="$undef"
16310         echo "Nope, it can't."
16311 fi
16312 set d_strctcpy
16313 eval $setvar
16314 $rm -f try.*
16315
16316 : see if strerror and/or sys_errlist[] exist
16317 echo " "
16318 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16319     if set strerror val -f d_strerror; eval $csym; $val; then
16320                 echo 'strerror() found.' >&4
16321                 d_strerror="$define"
16322                 d_strerrm='strerror(e)'
16323                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16324                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16325                         d_syserrlst="$define"
16326                 else
16327                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16328                         d_syserrlst="$undef"
16329                 fi
16330     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16331                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16332                 echo 'strerror() found in string header.' >&4
16333                 d_strerror="$define"
16334                 d_strerrm='strerror(e)'
16335                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16336                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16337                                 d_syserrlst="$define"
16338                 else
16339                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16340                         d_syserrlst="$undef"
16341                 fi
16342     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16343                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16344                 d_strerror="$undef"
16345                 d_syserrlst="$define"
16346                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16347     else
16348                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16349                 d_strerror="$undef"
16350                 d_syserrlst="$undef"
16351                 d_strerrm='"unknown"'
16352     fi
16353 fi
16354
16355 : see if strerror_r exists
16356 set strerror_r d_strerror_r
16357 eval $inlibc
16358 case "$d_strerror_r" in
16359 "$define")
16360         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16361         case "$d_strerror_r_proto:$usethreads" in
16362         ":define")      d_strerror_r_proto=define
16363                 set d_strerror_r_proto strerror_r $hdrs
16364                 eval $hasproto ;;
16365         *)      ;;
16366         esac
16367         case "$d_strerror_r_proto" in
16368         define)
16369         case "$strerror_r_proto" in
16370         ''|0) try='int strerror_r(int, char*, size_t);'
16371         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16372         esac
16373         case "$strerror_r_proto" in
16374         ''|0) try='int strerror_r(int, char*, int);'
16375         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16376         esac
16377         case "$strerror_r_proto" in
16378         ''|0) try='char* strerror_r(int, char*, size_t);'
16379         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16380         esac
16381         case "$strerror_r_proto" in
16382         ''|0)   d_strerror_r=undef
16383                 strerror_r_proto=0
16384                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16385         * )     case "$strerror_r_proto" in
16386                 REENTRANT_PROTO*) ;;
16387                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16388                 esac
16389                 echo "Prototype: $try" ;;
16390         esac
16391         ;;
16392         *)      case "$usethreads" in
16393                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16394                 esac
16395                 d_strerror_r=undef
16396                 strerror_r_proto=0
16397                 ;;
16398         esac
16399         ;;
16400 *)      strerror_r_proto=0
16401         ;;
16402 esac
16403
16404 : see if strftime exists
16405 set strftime d_strftime
16406 eval $inlibc
16407
16408 : see if strtod exists
16409 set strtod d_strtod
16410 eval $inlibc
16411
16412 : see if strtol exists
16413 set strtol d_strtol
16414 eval $inlibc
16415
16416 : see if strtold exists
16417 set strtold d_strtold
16418 eval $inlibc
16419
16420 : see if strtoll exists
16421 set strtoll d_strtoll
16422 eval $inlibc
16423
16424 case "$d_longlong-$d_strtoll" in
16425 "$define-$define")
16426         $cat <<EOM
16427 Checking whether your strtoll() works okay...
16428 EOM
16429         $cat >try.c <<'EOCP'
16430 #include <errno.h>
16431 #ifdef __hpux
16432 #define strtoll __strtoll
16433 #endif
16434 #ifdef __EMX__
16435 #define strtoll _strtoll
16436 #endif
16437 #include <stdio.h>
16438 extern long long int strtoll(char *s, char **, int); 
16439 static int bad = 0;
16440 int check(char *s, long long ell, int een) {
16441         long long gll;
16442         errno = 0;
16443         gll = strtoll(s, 0, 10);
16444         if (!((gll == ell) && (errno == een)))
16445                 bad++;
16446 }
16447 int main() {
16448         check(" 1",                                      1LL, 0);
16449         check(" 0",                                      0LL, 0);
16450         check("-1",                                     -1LL, 0);
16451         check("-9223372036854775808", -9223372036854775808LL, 0);
16452         check("-9223372036854775808", -9223372036854775808LL, 0);
16453         check(" 9223372036854775807",  9223372036854775807LL, 0);
16454         check("-9223372036854775808", -9223372036854775808LL, 0);
16455         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16456         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16457         if (!bad)
16458                 printf("ok\n");
16459 }
16460 EOCP
16461         set try
16462         if eval $compile; then
16463                 yyy=`$run ./try`
16464                 case "$yyy" in
16465                 ok) echo "Your strtoll() seems to be working okay." ;;
16466                 *) cat <<EOM >&4
16467 Your strtoll() doesn't seem to be working okay.
16468 EOM
16469                    d_strtoll="$undef"
16470                    ;;
16471                 esac
16472         else
16473                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16474                 d_strtoll="$undef"
16475         fi
16476         ;;
16477 esac
16478
16479 : see if strtoq exists
16480 set strtoq d_strtoq
16481 eval $inlibc
16482
16483 : see if strtoul exists
16484 set strtoul d_strtoul
16485 eval $inlibc
16486
16487 case "$d_strtoul" in
16488 "$define")
16489         $cat <<EOM
16490 Checking whether your strtoul() works okay...
16491 EOM
16492         $cat >try.c <<'EOCP'
16493 #include <errno.h>
16494 #include <stdio.h>
16495 extern unsigned long int strtoul(char *s, char **, int); 
16496 static int bad = 0;
16497 void check(char *s, unsigned long eul, int een) {
16498         unsigned long gul;
16499         errno = 0;
16500         gul = strtoul(s, 0, 10);
16501         if (!((gul == eul) && (errno == een)))
16502                 bad++;
16503 }
16504 int main() {
16505         check(" 1", 1L, 0);
16506         check(" 0", 0L, 0);
16507 EOCP
16508         case "$longsize" in
16509         8)
16510             $cat >>try.c <<'EOCP'
16511         check("18446744073709551615", 18446744073709551615UL, 0);
16512         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16513 #if 0 /* strtoul() for /^-/ strings is undefined. */
16514         check("-1", 18446744073709551615UL, 0);
16515         check("-18446744073709551614", 2, 0);
16516         check("-18446744073709551615", 1, 0);
16517         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16518         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16519 #endif
16520 EOCP
16521                 ;;
16522         4)
16523                     $cat >>try.c <<'EOCP'
16524         check("4294967295", 4294967295UL, 0);
16525         check("4294967296", 4294967295UL, ERANGE);
16526 #if 0 /* strtoul() for /^-/ strings is undefined. */
16527         check("-1", 4294967295UL, 0);
16528         check("-4294967294", 2, 0);
16529         check("-4294967295", 1, 0);
16530         check("-4294967296", 4294967295UL, ERANGE);
16531         check("-4294967297", 4294967295UL, ERANGE);
16532 #endif
16533 EOCP
16534                 ;;
16535         *)
16536 : Should we write these tests to be more portable by sprintf-ing
16537 : ~0 and then manipulating that char string as input for strtol?
16538                 ;;
16539         esac
16540         $cat >>try.c <<'EOCP'
16541         if (!bad)
16542                 printf("ok\n");
16543         return 0;
16544 }
16545 EOCP
16546         set try
16547         if eval $compile; then
16548                 case "`$run ./try`" in
16549                 ok) echo "Your strtoul() seems to be working okay." ;;
16550                 *) cat <<EOM >&4
16551 Your strtoul() doesn't seem to be working okay.
16552 EOM
16553                    d_strtoul="$undef"
16554                    ;;
16555                 esac
16556         fi
16557         ;;
16558 esac
16559
16560 : see if strtoull exists
16561 set strtoull d_strtoull
16562 eval $inlibc
16563
16564 case "$d_longlong-$d_strtoull" in
16565 "$define-$define")
16566         $cat <<EOM
16567 Checking whether your strtoull() works okay...
16568 EOM
16569         $cat >try.c <<'EOCP'
16570 #include <errno.h>
16571 #ifdef __hpux
16572 #define strtoull __strtoull
16573 #endif
16574 #include <stdio.h>
16575 extern unsigned long long int strtoull(char *s, char **, int); 
16576 static int bad = 0;
16577 int check(char *s, long long eull, int een) {
16578         long long gull;
16579         errno = 0;
16580         gull = strtoull(s, 0, 10);
16581         if (!((gull == eull) && (errno == een)))
16582                 bad++;
16583 }
16584 int main() {
16585         check(" 1",                                        1LL, 0);
16586         check(" 0",                                        0LL, 0);
16587         check("18446744073709551615",  18446744073709551615ULL, 0);
16588         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16589 #if 0 /* strtoull() for /^-/ strings is undefined. */
16590         check("-1",                    18446744073709551615ULL, 0);
16591         check("-18446744073709551614",                     2LL, 0);
16592         check("-18446744073709551615",                     1LL, 0);
16593         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16594         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16595 #endif
16596         if (!bad)
16597                 printf("ok\n");
16598 }
16599 EOCP
16600         set try
16601         if eval $compile; then
16602                 case "`$run ./try`" in
16603                 ok) echo "Your strtoull() seems to be working okay." ;;
16604                 *) cat <<EOM >&4
16605 Your strtoull() doesn't seem to be working okay.
16606 EOM
16607                    d_strtoull="$undef"
16608                    ;;
16609                 esac
16610         fi
16611         ;;
16612 esac
16613
16614 : see if strtouq exists
16615 set strtouq d_strtouq
16616 eval $inlibc
16617
16618 case "$d_strtouq" in
16619 "$define")
16620         $cat <<EOM
16621 Checking whether your strtouq() works okay...
16622 EOM
16623         $cat >try.c <<'EOCP'
16624 #include <errno.h>
16625 #include <stdio.h>
16626 extern unsigned long long int strtouq(char *s, char **, int); 
16627 static int bad = 0;
16628 void check(char *s, unsigned long long eull, int een) {
16629         unsigned long long gull;
16630         errno = 0;
16631         gull = strtouq(s, 0, 10);
16632         if (!((gull == eull) && (errno == een)))
16633                 bad++;
16634 }
16635 int main() {
16636         check(" 1",                                        1LL, 0);
16637         check(" 0",                                        0LL, 0);
16638         check("18446744073709551615",  18446744073709551615ULL, 0);
16639         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16640 #if 0 /* strtouq() for /^-/ strings is undefined. */
16641         check("-1",                    18446744073709551615ULL, 0);
16642         check("-18446744073709551614",                     2LL, 0);
16643         check("-18446744073709551615",                     1LL, 0);
16644         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16645         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16646 #endif
16647         if (!bad)
16648                 printf("ok\n");
16649         return 0;
16650 }
16651 EOCP
16652         set try
16653         if eval $compile; then
16654                 case "`$run ./try`" in
16655                 ok) echo "Your strtouq() seems to be working okay." ;;
16656                 *) cat <<EOM >&4
16657 Your strtouq() doesn't seem to be working okay.
16658 EOM
16659                    d_strtouq="$undef"
16660                    ;;
16661                 esac
16662         fi
16663         ;;
16664 esac
16665
16666 : see if strxfrm exists
16667 set strxfrm d_strxfrm
16668 eval $inlibc
16669
16670 : see if symlink exists
16671 set symlink d_symlink
16672 eval $inlibc
16673
16674 : see if syscall exists
16675 set syscall d_syscall
16676 eval $inlibc
16677
16678 : see if prototype for syscall is available
16679 echo " "
16680 set d_syscallproto syscall $i_unistd unistd.h
16681 eval $hasproto
16682
16683 : see if sysconf exists
16684 set sysconf d_sysconf
16685 eval $inlibc
16686
16687 : see if system exists
16688 set system d_system
16689 eval $inlibc
16690
16691 : see if tcgetpgrp exists
16692 set tcgetpgrp d_tcgetpgrp
16693 eval $inlibc
16694
16695 : see if tcsetpgrp exists
16696 set tcsetpgrp d_tcsetpgrp
16697 eval $inlibc
16698
16699 : see if prototype for telldir is available
16700 echo " "
16701 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16702 eval $hasproto
16703
16704 : see if time exists
16705 echo " "
16706 if test "X$d_time" = X -o X"$timetype" = X; then
16707     if set time val -f d_time; eval $csym; $val; then
16708                 echo 'time() found.' >&4
16709                 val="$define"
16710                 rp="What is the type returned by time() on this system?"
16711                 set time_t timetype long stdio.h sys/types.h
16712                 eval $typedef_ask
16713     else
16714                 echo 'time() not found, hope that will do.' >&4
16715                 val="$undef"
16716                 timetype='int';
16717     fi
16718     set d_time
16719     eval $setvar
16720 fi
16721
16722 : see if this is a sys/times.h system
16723 set sys/times.h i_systimes
16724 eval $inhdr
16725
16726 : see if times exists
16727 echo " "
16728 if set times val -f d_times; eval $csym; $val; then
16729         echo 'times() found.' >&4
16730         d_times="$define"
16731         inc=''
16732         case "$i_systimes" in
16733         "$define") inc='sys/times.h';;
16734         esac
16735         rp="What is the type returned by times() on this system?"
16736         set clock_t clocktype long stdio.h sys/types.h $inc
16737         eval $typedef_ask
16738 else
16739         echo 'times() NOT found, hope that will do.' >&4
16740         d_times="$undef"
16741         clocktype='int'
16742 fi
16743
16744 : see if tmpnam_r exists
16745 set tmpnam_r d_tmpnam_r
16746 eval $inlibc
16747 case "$d_tmpnam_r" in
16748 "$define")
16749         hdrs="$i_systypes sys/types.h define stdio.h "
16750         case "$d_tmpnam_r_proto:$usethreads" in
16751         ":define")      d_tmpnam_r_proto=define
16752                 set d_tmpnam_r_proto tmpnam_r $hdrs
16753                 eval $hasproto ;;
16754         *)      ;;
16755         esac
16756         case "$d_tmpnam_r_proto" in
16757         define)
16758         case "$tmpnam_r_proto" in
16759         ''|0) try='char* tmpnam_r(char*);'
16760         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16761         esac
16762         case "$tmpnam_r_proto" in
16763         ''|0)   d_tmpnam_r=undef
16764                 tmpnam_r_proto=0
16765                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16766         * )     case "$tmpnam_r_proto" in
16767                 REENTRANT_PROTO*) ;;
16768                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16769                 esac
16770                 echo "Prototype: $try" ;;
16771         esac
16772         ;;
16773         *)      case "$usethreads" in
16774                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16775                 esac
16776                 d_tmpnam_r=undef
16777                 tmpnam_r_proto=0
16778                 ;;
16779         esac
16780         ;;
16781 *)      tmpnam_r_proto=0
16782         ;;
16783 esac
16784
16785 : see if truncate exists
16786 set truncate d_truncate
16787 eval $inlibc
16788
16789 : see if ttyname_r exists
16790 set ttyname_r d_ttyname_r
16791 eval $inlibc
16792 case "$d_ttyname_r" in
16793 "$define")
16794         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16795         case "$d_ttyname_r_proto:$usethreads" in
16796         ":define")      d_ttyname_r_proto=define
16797                 set d_ttyname_r_proto ttyname_r $hdrs
16798                 eval $hasproto ;;
16799         *)      ;;
16800         esac
16801         case "$d_ttyname_r_proto" in
16802         define)
16803         case "$ttyname_r_proto" in
16804         ''|0) try='int ttyname_r(int, char*, size_t);'
16805         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16806         esac
16807         case "$ttyname_r_proto" in
16808         ''|0) try='int ttyname_r(int, char*, int);'
16809         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16810         esac
16811         case "$ttyname_r_proto" in
16812         ''|0) try='char* ttyname_r(int, char*, int);'
16813         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16814         esac
16815         case "$ttyname_r_proto" in
16816         ''|0)   d_ttyname_r=undef
16817                 ttyname_r_proto=0
16818                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16819         * )     case "$ttyname_r_proto" in
16820                 REENTRANT_PROTO*) ;;
16821                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16822                 esac
16823                 echo "Prototype: $try" ;;
16824         esac
16825         ;;
16826         *)      case "$usethreads" in
16827                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16828                 esac
16829                 d_ttyname_r=undef
16830                 ttyname_r_proto=0
16831                 ;;
16832         esac
16833         ;;
16834 *)      ttyname_r_proto=0
16835         ;;
16836 esac
16837
16838 : see if tzname[] exists
16839 echo " "
16840 if set tzname val -a d_tzname; eval $csym; $val; then
16841         val="$define"
16842         echo 'tzname[] found.' >&4
16843 else
16844         val="$undef"
16845         echo 'tzname[] NOT found.' >&4
16846 fi
16847 set d_tzname
16848 eval $setvar
16849
16850 case "$osname" in
16851 next|rhapsody|darwin) multiarch="$define" ;;
16852 esac
16853 case "$multiarch" in
16854 ''|[nN]*) multiarch="$undef" ;;
16855 esac
16856
16857 : check for ordering of bytes in a UV
16858 echo " "
16859 case "$usecrosscompile$multiarch" in
16860 *$define*)
16861         $cat <<EOM
16862 You seem to be either cross-compiling or doing a multiarchitecture build,
16863 skipping the byteorder check.
16864
16865 EOM
16866         byteorder='ffff'
16867         ;;
16868 *)
16869         case "$byteorder" in
16870         '')
16871                 $cat <<'EOM'
16872 In the following, larger digits indicate more significance.  A big-endian
16873 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16874 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16875 machines may have weird orders like 3412.  A Cray will report 87654321,
16876 an Alpha will report 12345678. If the test program works the default is
16877 probably right.
16878 I'm now running the test program...
16879 EOM
16880                 $cat >try.c <<EOCP
16881 #include <stdio.h>
16882 #$i_stdlib I_STDLIB
16883 #ifdef I_STDLIB
16884 #include <stdlib.h>
16885 #endif
16886 #include <sys/types.h>
16887 typedef $uvtype UV;
16888 int main()
16889 {
16890         int i;
16891         union {
16892                 UV l;
16893                 char c[$uvsize];
16894         } u;
16895
16896         if ($uvsize > 4)
16897                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16898         else
16899                 u.l = (UV)0x04030201;
16900         for (i = 0; i < $uvsize; i++)
16901                 printf("%c", u.c[i]+'0');
16902         printf("\n");
16903         exit(0);
16904 }
16905 EOCP
16906                 xxx_prompt=y
16907                 set try
16908                 if eval $compile && ./try > /dev/null; then
16909                         dflt=`$run ./try`
16910                         case "$dflt" in
16911                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16912                                 echo "(The test program ran ok.)"
16913                                 echo "byteorder=$dflt"
16914                                 xxx_prompt=n
16915                         ;;
16916                         ????|????????) echo "(The test program ran ok.)" ;;
16917                         *) echo "(The test program didn't run right for some reason.)" ;;
16918                         esac
16919                 else
16920                         dflt='4321'
16921                         cat <<'EOM'
16922 (I can't seem to compile the test program.  Guessing big-endian...)
16923 EOM
16924                 fi
16925                 case "$xxx_prompt" in
16926                 y)
16927                         rp="What is the order of bytes in $uvtype?"
16928                         . ./myread
16929                         byteorder="$ans"
16930                         ;;
16931                 *)      byteorder=$dflt
16932                         ;;
16933                 esac
16934                 ;;
16935         esac
16936         $rm -f try.c try
16937         ;;
16938 esac
16939
16940
16941 $cat <<EOM
16942
16943 Checking to see whether you can access character data unalignedly...
16944 EOM
16945 case "$d_u32align" in
16946 '')   $cat >try.c <<EOCP
16947 #include <stdio.h>
16948 #$i_stdlib I_STDLIB
16949 #ifdef I_STDLIB
16950 #include <stdlib.h>
16951 #endif
16952 #define U32 $u32type
16953 #define BYTEORDER 0x$byteorder
16954 #define U8 $u8type
16955 #include <signal.h>
16956 #ifdef SIGBUS
16957 $signal_t bletch(s) int s; { exit(4); }
16958 #endif
16959 int main() {
16960 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16961     U8 buf[8];
16962     U32 *up;
16963     int i;
16964
16965     if (sizeof(U32) != 4) {
16966         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16967         exit(1);
16968     }
16969
16970     fflush(stdout);
16971
16972 #ifdef SIGBUS
16973     signal(SIGBUS, bletch);
16974 #endif
16975
16976     buf[0] = 0;
16977     buf[1] = 0;
16978     buf[2] = 0;
16979     buf[3] = 1;
16980     buf[4] = 0;
16981     buf[5] = 0;
16982     buf[6] = 0;
16983     buf[7] = 1;
16984
16985     for (i = 0; i < 4; i++) {
16986         up = (U32*)(buf + i);
16987         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16988                (*up == 1 << (8*(3-i)))  /* little-endian */
16989               )
16990            )
16991         {
16992             printf("read failed (%x)\n", *up);
16993             exit(2);
16994         }
16995     }
16996
16997     /* write test */
16998     for (i = 0; i < 4; i++) {
16999         up = (U32*)(buf + i);
17000         *up = 0xBeef;
17001         if (*up != 0xBeef) {
17002             printf("write failed (%x)\n", *up);
17003             exit(3);
17004         }
17005     }
17006
17007     exit(0);
17008 #else
17009     printf("1\n");
17010     exit(1);
17011 #endif
17012     return 0;
17013 }
17014 EOCP
17015 set try
17016 if eval $compile_ok; then
17017         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
17018         $run ./try 2>&1 >/dev/null
17019         case "$?" in
17020         0)      cat >&4 <<EOM
17021 You can access character data pretty unalignedly.
17022 EOM
17023                 d_u32align="$undef"
17024                 ;;
17025         *)      cat >&4 <<EOM
17026 It seems that you must access character data in an aligned manner.
17027 EOM
17028                 d_u32align="$define"
17029                 ;;
17030         esac
17031 else
17032         rp='Can you access character data at unaligned addresses?'
17033         dflt='n'
17034         . ./myread
17035         case "$ans" in
17036         [yY]*)  d_u32align="$undef"  ;;
17037         *)      d_u32align="$define" ;;
17038         esac
17039 fi
17040 $rm -f core core.try.* try.core
17041 ;;
17042 esac
17043
17044 : see if ualarm exists
17045 set ualarm d_ualarm
17046 eval $inlibc
17047
17048 : see if umask exists
17049 set umask d_umask
17050 eval $inlibc
17051
17052 : see if unordered exists
17053 set unordered d_unordered
17054 eval $inlibc
17055
17056 : see if usleep exists
17057 set usleep d_usleep
17058 eval $inlibc
17059
17060 : see if prototype for usleep is available
17061 echo " "
17062 set d_usleepproto usleep $i_unistd unistd.h
17063 eval $hasproto
17064
17065 : see if ustat exists
17066 set ustat d_ustat
17067 eval $inlibc
17068
17069 : backward compatibility for d_hvfork
17070 if test X$d_hvfork != X; then
17071         d_vfork="$d_hvfork"
17072         d_hvfork=''
17073 fi
17074 : see if there is a vfork
17075 val=''
17076 set vfork val
17077 eval $inlibc
17078
17079 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17080 : perl on Solaris 2.x, and probably elsewhere.
17081 case "$val" in
17082 $define)
17083         echo " "
17084         case "$usevfork" in
17085         false) dflt='n';;
17086         *) dflt='y';;
17087         esac
17088         cat <<'EOM'
17089  
17090 Perl can only use a vfork() that doesn't suffer from strict
17091 restrictions on calling functions or modifying global data in
17092 the child.  For example, glibc-2.1 contains such a vfork()
17093 that is unsuitable.  If your system provides a proper fork()
17094 call, chances are that you do NOT want perl to use vfork().
17095
17096 EOM
17097         rp="Do you still want to use vfork()?"
17098         . ./myread
17099         case "$ans" in
17100         y|Y) ;;
17101         *)
17102                 echo "Ok, we won't use vfork()."
17103                 val="$undef"
17104                 ;;
17105         esac
17106         ;;
17107 esac
17108 set d_vfork
17109 eval $setvar
17110 case "$d_vfork" in
17111 $define) usevfork='true';;
17112 *) usevfork='false';;
17113 esac
17114
17115 : see if closedir exists
17116 set closedir d_closedir
17117 eval $inlibc
17118
17119 case "$d_closedir" in
17120 "$define")
17121         echo " "
17122         echo "Checking whether closedir() returns a status..." >&4
17123         cat > try.c <<EOM
17124 #$i_dirent I_DIRENT             /**/
17125 #$i_sysdir I_SYS_DIR            /**/
17126 #$i_sysndir I_SYS_NDIR          /**/
17127 #$i_systypes I_SYS_TYPES        /**/
17128
17129 #if defined(I_SYS_TYPES)
17130 #include <sys/types.h>
17131 #endif
17132 #if defined(I_DIRENT)
17133 #include <dirent.h>
17134 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17135 #include <sys/dir.h>
17136 #endif
17137 #else
17138 #ifdef I_SYS_NDIR
17139 #include <sys/ndir.h>
17140 #else
17141 #ifdef I_SYS_DIR
17142 #ifdef hp9000s500
17143 #include <ndir.h>       /* may be wrong in the future */
17144 #else
17145 #include <sys/dir.h>
17146 #endif
17147 #endif
17148 #endif
17149 #endif 
17150 int main() { return closedir(opendir(".")); }
17151 EOM
17152         set try
17153         if eval $compile_ok; then
17154                 if $run ./try > /dev/null 2>&1 ; then
17155                         echo "Yes, it does."
17156                         val="$undef"
17157                 else
17158                         echo "No, it doesn't."
17159                         val="$define"
17160                 fi
17161         else
17162                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17163                 val="$define"
17164         fi
17165         ;;
17166 *)
17167         val="$undef";
17168         ;;
17169 esac
17170 set d_void_closedir
17171 eval $setvar
17172 $rm -f try try.*
17173 : see if there is a wait4
17174 set wait4 d_wait4
17175 eval $inlibc
17176
17177 : see if waitpid exists
17178 set waitpid d_waitpid
17179 eval $inlibc
17180
17181 : see if wcstombs exists
17182 set wcstombs d_wcstombs
17183 eval $inlibc
17184
17185 : see if wctomb exists
17186 set wctomb d_wctomb
17187 eval $inlibc
17188
17189 : see if writev exists
17190 set writev d_writev
17191 eval $inlibc
17192
17193 : preserve RCS keywords in files with variable substitution, grrr
17194 Date='$Date'
17195 Id='$Id'
17196 Log='$Log'
17197 RCSfile='$RCSfile'
17198 Revision='$Revision'
17199
17200 : check for alignment requirements
17201 echo " "
17202 case "$usecrosscompile$multiarch" in
17203 *$define*)
17204         $cat <<EOM
17205 You seem to be either cross-compiling or doing a multiarchitecture build,
17206 skipping the memory alignment check.
17207
17208 EOM
17209         case "$alignbytes" in
17210         '') alignbytes=8 ;;
17211         esac
17212         ;;
17213 *)
17214         case "$alignbytes" in
17215         '') echo "Checking alignment constraints..." >&4
17216                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17217                         $cat >try.c <<'EOCP'
17218 typedef long double NV;
17219 EOCP
17220                 else
17221                         $cat >try.c <<'EOCP'
17222 typedef double NV;
17223 EOCP
17224                 fi
17225                 $cat >>try.c <<'EOCP'
17226 #include <stdio.h>
17227 struct foobar {
17228         char foo;
17229         NV bar;
17230 } try_algn;
17231 int main()
17232 {
17233     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17234     return(0);
17235 }
17236 EOCP
17237                 set try
17238                 if eval $compile_ok; then
17239                         dflt=`$run ./try`
17240                 else
17241                         dflt='8'
17242                         echo "(I can't seem to compile the test program...)"
17243                 fi
17244                 ;;
17245         *) dflt="$alignbytes"
17246                 ;;
17247         esac
17248         rp="Doubles must be aligned on a how-many-byte boundary?"
17249         . ./myread
17250         alignbytes="$ans"
17251         $rm -f try.c try
17252         ;;
17253 esac
17254
17255
17256 : set the base revision
17257 baserev=5.0
17258
17259 : how do we concatenate cpp tokens here?
17260 echo " "
17261 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17262 $cat >cpp_stuff.c <<'EOCP'
17263 #define RCAT(a,b)a/**/b
17264 #define ACAT(a,b)a ## b
17265 RCAT(Rei,ser)
17266 ACAT(Cir,cus)
17267 EOCP
17268 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17269 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17270         echo "Oh!  Smells like ANSI's been here." >&4
17271         echo "We can catify or stringify, separately or together!"
17272         cpp_stuff=42
17273 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17274         echo "Ah, yes!  The good old days!" >&4
17275         echo "However, in the good old days we don't know how to stringify and"
17276         echo "catify at the same time."
17277         cpp_stuff=1
17278 else
17279         $cat >&4 <<EOM
17280 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17281 You're going to have to edit the values of CAT[2-5] in config.h...
17282 EOM
17283         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17284 fi
17285 $rm -f cpp_stuff.*
17286
17287 : see if this is a db.h system
17288 set db.h i_db
17289 eval $inhdr
17290
17291 case "$i_db" in
17292 $define)
17293         : Check db version.
17294         echo " "
17295         echo "Checking Berkeley DB version ..." >&4
17296         $cat >try.c <<EOCP
17297 #$d_const HASCONST
17298 #ifndef HASCONST
17299 #define const
17300 #endif
17301 #include <sys/types.h>
17302 #include <stdio.h>
17303 #$i_stdlib I_STDLIB
17304 #ifdef I_STDLIB
17305 #include <stdlib.h>
17306 #endif
17307 #include <db.h>
17308 int main(int argc, char *argv[])
17309 {
17310 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17311     int Major, Minor, Patch ;
17312     unsigned long Version ;
17313     (void)db_version(&Major, &Minor, &Patch) ;
17314     if (argc == 2) {
17315         printf("%d %d %d %d %d %d\n",
17316                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17317                Major, Minor, Patch);
17318         exit(0);
17319     }
17320     printf("You have Berkeley DB Version 2 or greater.\n");
17321
17322     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17323                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17324     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17325                 Major, Minor, Patch) ;
17326
17327     /* check that db.h & libdb are compatible */
17328     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17329         printf("db.h and libdb are incompatible.\n") ;
17330         exit(3);        
17331     }
17332
17333     printf("db.h and libdb are compatible.\n") ;
17334
17335     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17336                 + DB_VERSION_PATCH ;
17337
17338     /* needs to be >= 2.3.4 */
17339     if (Version < 2003004) {
17340     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17341         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17342         exit(2);        
17343     }
17344
17345     exit(0);
17346 #else
17347 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17348     if (argc == 2) {
17349         printf("1 0 0\n");
17350         exit(0);
17351     }
17352     printf("You have Berkeley DB Version 1.\n");
17353     exit(0);    /* DB version < 2: the coast is clear. */
17354 #else
17355     exit(1);    /* <db.h> not Berkeley DB? */
17356 #endif
17357 #endif
17358 }
17359 EOCP
17360         set try
17361         if eval $compile_ok && $run ./try; then
17362                 echo 'Looks OK.' >&4
17363                 set `$run ./try 1`
17364                 db_version_major=$1
17365                 db_version_minor=$2
17366                 db_version_patch=$3
17367         else
17368                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17369                 i_db=$undef
17370                 case " $libs " in
17371                 *"-ldb "*)
17372                         : Remove db from list of libraries to use
17373                         echo "Removing unusable -ldb from library list" >&4
17374                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17375                         shift
17376                         libs="$*"
17377                         echo "libs = $libs" >&4
17378                         ;;
17379                 esac
17380         fi
17381         $rm -f try.*
17382         ;;
17383 esac
17384
17385 case "$i_db" in
17386 define)
17387         : Check the return type needed for hash 
17388         echo " "
17389         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17390         $cat >try.c <<EOCP
17391 #$d_const HASCONST
17392 #ifndef HASCONST
17393 #define const
17394 #endif
17395 #include <sys/types.h>
17396 #include <db.h>
17397
17398 #ifndef DB_VERSION_MAJOR
17399 u_int32_t hash_cb (ptr, size)
17400 const void *ptr;
17401 size_t size;
17402 {
17403 }
17404 HASHINFO info;
17405 int main()
17406 {
17407         info.hash = hash_cb;
17408 }
17409 #endif
17410 EOCP
17411         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17412                 if $contains warning try.out >>/dev/null 2>&1 ; then
17413                         db_hashtype='int'
17414                 else
17415                         db_hashtype='u_int32_t'
17416                 fi
17417         else
17418                 : XXX Maybe we should just give up here.
17419                 db_hashtype=u_int32_t
17420                 $cat try.out >&4
17421                 echo "Help:  I can't seem to compile the db test program." >&4
17422                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17423         fi
17424         $rm -f try.*
17425         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17426         ;;
17427 *)      db_hashtype=u_int32_t
17428         ;;
17429 esac
17430 case "$i_db" in
17431 define)
17432         : Check the return type needed for prefix 
17433         echo " "
17434         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17435         cat >try.c <<EOCP
17436 #$d_const HASCONST
17437 #ifndef HASCONST
17438 #define const
17439 #endif
17440 #include <sys/types.h>
17441 #include <db.h>
17442
17443 #ifndef DB_VERSION_MAJOR
17444 size_t prefix_cb (key1, key2)
17445 const DBT *key1;
17446 const DBT *key2;
17447 {
17448 }
17449 BTREEINFO info;
17450 int main()
17451 {
17452         info.prefix = prefix_cb;
17453 }
17454 #endif
17455 EOCP
17456         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17457                 if $contains warning try.out >>/dev/null 2>&1 ; then
17458                         db_prefixtype='int'
17459                 else
17460                         db_prefixtype='size_t'
17461                 fi
17462         else
17463                 db_prefixtype='size_t'
17464                 : XXX Maybe we should just give up here.
17465                 $cat try.out >&4
17466                 echo "Help:  I can't seem to compile the db test program." >&4
17467                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17468         fi
17469         $rm -f try.*
17470         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17471         ;;
17472 *)      db_prefixtype='size_t'
17473         ;;
17474 esac
17475
17476
17477 : How can we generate normalized random numbers ?
17478 echo " "
17479 echo "Looking for a random number function..." >&4
17480 case "$randfunc" in
17481 '')
17482         if set drand48 val -f; eval $csym; $val; then
17483                 dflt="drand48"
17484                 echo "Good, found drand48()." >&4
17485         elif set random val -f; eval $csym; $val; then
17486                 dflt="random"
17487                 echo "OK, found random()." >&4
17488         else
17489                 dflt="rand"
17490                 echo "Yick, looks like I have to use rand()." >&4
17491         fi
17492         echo " "
17493         ;;
17494 *)
17495         dflt="$randfunc"
17496         ;;
17497 esac
17498 cont=true
17499
17500 case "$ccflags" in
17501 *-Dmy_rand=*|*-Dmy_srand=*)
17502         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17503         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17504         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17505         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17506         ;;
17507 esac
17508
17509 while $test "$cont"; do
17510         rp="Use which function to generate random numbers?"
17511         . ./myread
17512         if $test "$ans" = "$dflt"; then
17513                 : null
17514         else
17515                 randbits=''
17516         fi
17517         randfunc="$ans"
17518         if set $ans val -f; eval $csym; $val; then
17519                 cont=''
17520         else
17521                 dflt=y
17522                 rp="I cannot find function $ans. Use that name anyway?"
17523                 . ./myread
17524                 dflt=rand
17525                 case "$ans" in
17526                         [yY]*) cont='';;
17527                 esac
17528         fi
17529         case "$cont" in
17530         '')
17531                 case "$randfunc" in
17532                 drand48)
17533                         drand01="drand48()"
17534                         seedfunc="srand48"
17535                         randbits=48
17536                         randseedtype=long
17537                         ;;
17538                 rand|random)
17539                         case "$randbits" in
17540                         '')
17541 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17542                                 $cat >try.c <<EOCP
17543 #$i_unistd I_UNISTD
17544 #$i_stdlib I_STDLIB
17545 #include <stdio.h>
17546 #ifdef I_UNISTD
17547 #  include <unistd.h>
17548 #endif
17549 #ifdef I_STDLIB
17550 #  include <stdlib.h>
17551 #endif
17552 int main()
17553 {
17554         register int i;
17555         register unsigned long tmp;
17556         register unsigned long max = 0L;
17557
17558         for (i = 1000; i; i--) {
17559                 tmp = (unsigned long) $randfunc();
17560                 if (tmp > max) max = tmp;
17561         }
17562         for (i = 0; max; i++)
17563                 max /= 2;
17564         printf("%d\n",i);
17565 }
17566 EOCP
17567                                 set try
17568                                 if eval $compile_ok; then
17569                                         dflt=`try`
17570                                 else
17571                                         dflt='?'
17572                                         echo "(I can't seem to compile the test program...)"
17573                                 fi
17574                                 ;;
17575                         *)
17576                                 dflt="$randbits"
17577                                 ;;
17578                         esac
17579                         rp="How many bits does your $randfunc() function produce?"
17580                         . ./myread
17581                         randbits="$ans"
17582                         $rm -f try.c try
17583                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17584                         seedfunc="s$randfunc"
17585                         randseedtype=unsigned
17586                         ;;
17587                 *)
17588                         dflt="31"
17589                         rp="How many bits does your $randfunc() function produce?"
17590                         . ./myread
17591                         randbits="$ans"
17592                         seedfunc="s$randfunc"
17593                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17594                         if set $seedfunc val -f; eval $csym; $val; then
17595                                 echo "(Using $seedfunc() to seed random generator)"
17596                         else
17597                                 echo "(Warning: no $seedfunc() to seed random generator)"
17598                                 seedfunc=rand
17599                         fi
17600                         randseedtype=unsigned
17601                         ;;
17602                 esac
17603                 ;;
17604         esac
17605 done
17606
17607 echo " "
17608 echo "Determining whether or not we are on an EBCDIC system..." >&4
17609 $cat >try.c <<'EOM'
17610 int main()
17611 {
17612   if ('M'==0xd4) return 0;
17613   return 1;
17614 }
17615 EOM
17616
17617 val=$undef
17618 set try
17619 if eval $compile_ok; then
17620         if $run ./try; then
17621                 echo "You seem to speak EBCDIC." >&4
17622                 val="$define"
17623         else
17624                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17625         fi
17626 else
17627         echo "I'm unable to compile the test program." >&4
17628         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17629 fi
17630 $rm -f try try.*
17631 set ebcdic
17632 eval $setvar
17633
17634 echo " "
17635 $cat >&4 <<EOM
17636 Checking how to flush all pending stdio output...
17637 EOM
17638 # I only know how to find the first 32 possibly open files on SunOS.
17639 # See also hints/sunos_4_1.sh and util.c  --AD
17640 case "$osname" in
17641 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17642 esac
17643 $cat >>try.c <<EOCP
17644 #include <stdio.h>
17645 #$i_stdlib I_STDLIB
17646 #ifdef I_STDLIB
17647 #include <stdlib.h>
17648 #endif
17649 #$i_unistd I_UNISTD
17650 #ifdef I_UNISTD
17651 # include <unistd.h>
17652 #endif
17653 #$d_sysconf HAS_SYSCONF
17654 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17655 #ifdef HAS_STDIO_STREAM_ARRAY
17656 # define STDIO_STREAM_ARRAY $stdio_stream_array
17657 #endif
17658 int main() {
17659   FILE* p;
17660   unlink("try.out");
17661   p = fopen("try.out", "w");
17662 #ifdef TRY_FPUTC
17663   fputc('x', p);
17664 #else
17665 # ifdef TRY_FPRINTF
17666   fprintf(p, "x");
17667 # endif
17668 #endif
17669 #ifdef TRY_FFLUSH_NULL
17670   fflush(NULL);
17671 #endif
17672 #ifdef TRY_FFLUSH_ALL
17673   {
17674     long open_max = -1;
17675 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17676     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17677 # else
17678 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17679     open_max = sysconf(_SC_OPEN_MAX);
17680 #  else
17681 #   ifdef FOPEN_MAX
17682     open_max = FOPEN_MAX;
17683 #   else
17684 #    ifdef OPEN_MAX
17685     open_max = OPEN_MAX;
17686 #    else
17687 #     ifdef _NFILE
17688     open_max = _NFILE;
17689 #     endif
17690 #    endif
17691 #   endif
17692 #  endif
17693 # endif 
17694 # ifdef HAS_STDIO_STREAM_ARRAY
17695     if (open_max > 0) {
17696       long i;
17697       for (i = 0; i < open_max; i++)
17698             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17699                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17700                 STDIO_STREAM_ARRAY[i]._flag)
17701                 fflush(&STDIO_STREAM_ARRAY[i]);
17702     }   
17703   }
17704 # endif
17705 #endif
17706   _exit(42);
17707 }
17708 EOCP
17709 : first we have to find out how _not_ to flush
17710 $to try.c
17711 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17712     output=''
17713     set try -DTRY_FPUTC
17714     if eval $compile; then
17715             $run ./try 2>/dev/null
17716             code="$?"
17717             $from try.out
17718             if $test ! -s try.out -a "X$code" = X42; then
17719                 output=-DTRY_FPUTC
17720             fi
17721     fi
17722     case "$output" in
17723     '')
17724             set try -DTRY_FPRINTF
17725             if eval $compile; then
17726                     $run ./try 2>/dev/null
17727                     code="$?"
17728                     $from try.out
17729                     if $test ! -s try.out -a "X$code" = X42; then
17730                         output=-DTRY_FPRINTF
17731                     fi
17732             fi
17733         ;;
17734     esac
17735 fi
17736 : check for fflush NULL behaviour
17737 case "$fflushNULL" in
17738 '')     set try -DTRY_FFLUSH_NULL $output
17739         if eval $compile; then
17740                 $run ./try 2>/dev/null
17741                 code="$?"
17742                 $from try.out
17743                 if $test -s try.out -a "X$code" = X42; then
17744                         fflushNULL="`$cat try.out`"
17745                 else
17746                         if $test "X$code" != X42; then
17747                                 $cat >&4 <<EOM
17748 (If this test failed, don't worry, we'll try another method shortly.)
17749 EOM
17750                         fi
17751                 fi
17752         fi
17753         $rm -f core try.core core.try.*
17754         case "$fflushNULL" in
17755         x)      $cat >&4 <<EOM
17756 Your fflush(NULL) works okay for output streams.
17757 Let's see if it clobbers input pipes...
17758 EOM
17759 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17760 # bug that improperly flushes the input end of pipes.  So we avoid the
17761 # autoflush on fork/system/exec support for now. :-(
17762 $cat >tryp.c <<EOCP
17763 #include <stdio.h>
17764 int
17765 main(int argc, char **argv)
17766 {
17767     char buf[1024];
17768     int i;
17769     char *bp = buf;
17770     while (1) {
17771         while ((i = getc(stdin)) != -1
17772                && (*bp++ = i) != '\n'
17773                && bp < &buf[1024])
17774         /* DO NOTHING */ ;
17775         *bp = '\0';
17776         fprintf(stdout, "%s", buf);
17777         fflush(NULL);
17778         if (i == -1)
17779             return 0;
17780         bp = buf;
17781     }
17782 }
17783 EOCP
17784                 fflushNULL="$define"
17785                 set tryp
17786                 if eval $compile; then
17787                     $rm -f tryp.out
17788                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17789                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17790                        $cat >&4 <<EOM
17791 fflush(NULL) seems to behave okay with input streams.
17792 EOM
17793                         fflushNULL="$define"
17794                     else
17795                         $cat >&4 <<EOM
17796 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17797 EOM
17798                         fflushNULL="$undef"
17799                     fi
17800                 fi
17801                 $rm -f core tryp.c tryp.core core.tryp.*
17802                 ;;
17803         '')     $cat >&4 <<EOM
17804 Your fflush(NULL) isn't working (contrary to ANSI C).
17805 EOM
17806                 fflushNULL="$undef"
17807                 ;;
17808         *)      $cat >&4 <<EOM
17809 Cannot figure out whether your fflush(NULL) works or not.
17810 I'm assuming it doesn't (contrary to ANSI C).
17811 EOM
17812                 fflushNULL="$undef"
17813                 ;;
17814         esac
17815         ;;
17816 $define|true|[yY]*)
17817         fflushNULL="$define"
17818         ;;
17819 *)
17820         fflushNULL="$undef"
17821         ;;
17822 esac
17823 : check explicit looping only if NULL did not work, and if the pipe
17824 : bug does not show up on an explicit flush too
17825 case "$fflushNULL" in
17826 "$undef")
17827         $cat >tryp.c <<EOCP
17828 #include <stdio.h>
17829 int
17830 main(int argc, char **argv)
17831 {
17832     char buf[1024];
17833     int i;
17834     char *bp = buf;
17835     while (1) {
17836         while ((i = getc(stdin)) != -1
17837                && (*bp++ = i) != '\n'
17838                && bp < &buf[1024])
17839         /* DO NOTHING */ ;
17840         *bp = '\0';
17841         fprintf(stdout, "%s", buf);
17842         fflush(stdin);
17843         if (i == -1)
17844             return 0;
17845         bp = buf;
17846     }
17847 }
17848 EOCP
17849         set tryp
17850         if eval $compile; then
17851             $rm -f tryp.out
17852             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17853             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17854                $cat >&4 <<EOM
17855 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17856 EOM
17857                 : now check for fflushall behaviour
17858                 case "$fflushall" in
17859                 '')     set try -DTRY_FFLUSH_ALL $output
17860                         if eval $compile; then
17861                                 $cat >&4 <<EOM
17862 (Now testing the other method--but note that this also may fail.)
17863 EOM
17864                                 $run ./try 2>/dev/null
17865                                 code=$?
17866                                 $from try.out
17867                                 if $test -s try.out -a "X$code" = X42; then
17868                                         fflushall="`$cat try.out`"
17869                                 fi
17870                         fi
17871                         $rm -f core try.core core.try.*
17872                         case "$fflushall" in
17873                         x)      $cat >&4 <<EOM
17874 Whew. Flushing explicitly all the stdio streams works.
17875 EOM
17876                                 fflushall="$define"
17877                                 ;;
17878                         '')     $cat >&4 <<EOM
17879 Sigh. Flushing explicitly all the stdio streams doesn't work.
17880 EOM
17881                                 fflushall="$undef"
17882                                 ;;
17883                         *)      $cat >&4 <<EOM
17884 Cannot figure out whether flushing stdio streams explicitly works or not.
17885 I'm assuming it doesn't.
17886 EOM
17887                                 fflushall="$undef"
17888                                 ;;
17889                         esac
17890                         ;;
17891                 "$define"|true|[yY]*)
17892                         fflushall="$define"
17893                         ;;
17894                 *)
17895                         fflushall="$undef"
17896                         ;;
17897                 esac
17898             else
17899                 $cat >&4 <<EOM
17900 All is futile.  Even fflush(stdin) clobbers input pipes!
17901 EOM
17902                 fflushall="$undef"
17903             fi
17904         else
17905             fflushall="$undef"
17906         fi
17907         $rm -f core tryp.c tryp.core core.tryp.*
17908         ;;
17909 *)      fflushall="$undef"
17910         ;;
17911 esac
17912
17913 case "$fflushNULL$fflushall" in
17914 undefundef)
17915         $cat <<EOM
17916 OK, I give up.  I cannot figure out how to flush pending stdio output.
17917 We won't be flushing handles at all before fork/exec/popen.
17918 EOM
17919         ;;
17920 esac
17921 $rm -f try.* try$exe_ext
17922
17923 : Store the full pathname to the ar program for use in the C program
17924 : Respect a hint or command line value for full_ar.
17925 case "$full_ar" in
17926 '') full_ar=$ar ;;
17927 esac
17928
17929 : Store the full pathname to the sed program for use in the C program
17930 full_sed=$sed
17931
17932 : see what type gids are declared as in the kernel
17933 echo " "
17934 echo "Looking for the type for group ids returned by getgid()."
17935 set gid_t gidtype xxx stdio.h sys/types.h
17936 eval $typedef
17937 case "$gidtype" in
17938 xxx)
17939         xxx=`./findhdr sys/user.h`
17940         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17941         case $1 in
17942         unsigned) dflt="$1 $2" ;;
17943         *) dflt="$1" ;;
17944         esac
17945         ;;
17946 *) dflt="$gidtype";;
17947 esac
17948 case "$gidtype" in
17949 gid_t) echo "gid_t found." ;;
17950 *)      rp="What is the type for group ids returned by getgid()?"
17951         . ./myread
17952         gidtype="$ans"
17953         ;;
17954 esac
17955
17956 echo " "
17957 case "$gidtype" in
17958 *_t) zzz="$gidtype"     ;;
17959 *)   zzz="gid"          ;;
17960 esac
17961 echo "Checking the size of $zzz..." >&4 
17962 cat > try.c <<EOCP
17963 #include <sys/types.h>
17964 #include <stdio.h>
17965 #$i_stdlib I_STDLIB
17966 #ifdef I_STDLIB
17967 #include <stdlib.h>
17968 #endif
17969 int main() {
17970     printf("%d\n", (int)sizeof($gidtype));
17971     exit(0);
17972 }
17973 EOCP
17974 set try
17975 if eval $compile_ok; then
17976         yyy=`$run ./try`
17977         case "$yyy" in
17978         '')     gidsize=4
17979                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17980                 ;;
17981         *)      gidsize=$yyy
17982                 echo "Your $zzz is $gidsize bytes long."
17983                 ;;
17984         esac
17985 else
17986         gidsize=4
17987         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17988 fi
17989
17990
17991 echo " "
17992 case "$gidtype" in
17993 *_t) zzz="$gidtype"     ;;
17994 *)   zzz="gid"          ;;
17995 esac
17996 echo "Checking the sign of $zzz..." >&4 
17997 cat > try.c <<EOCP
17998 #include <sys/types.h>
17999 #include <stdio.h>
18000 int main() {
18001         $gidtype foo = -1;
18002         if (foo < 0)
18003                 printf("-1\n");
18004         else
18005                 printf("1\n");
18006 }
18007 EOCP
18008 set try
18009 if eval $compile; then
18010         yyy=`$run ./try`
18011         case "$yyy" in
18012         '')     gidsign=1
18013                 echo "(I can't execute the test program--guessing unsigned.)" >&4
18014                 ;;
18015         *)      gidsign=$yyy
18016                 case "$gidsign" in
18017                  1) echo "Your $zzz is unsigned." ;;
18018                 -1) echo "Your $zzz is signed."   ;;
18019                 esac
18020                 ;;
18021         esac
18022 else
18023         gidsign=1
18024         echo "(I can't compile the test program--guessing unsigned.)" >&4
18025 fi
18026
18027
18028 echo " "
18029
18030 if $test X"$quadtype" != X; then
18031
18032 echo "Checking how to print 64-bit integers..." >&4
18033
18034 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18035         $cat >try.c <<'EOCP'
18036 #include <sys/types.h>
18037 #include <stdio.h>
18038 int main() {
18039   int q = 12345678901;
18040   printf("%ld\n", q);
18041 }
18042 EOCP
18043         set try
18044         if eval $compile; then
18045                 yyy=`$run ./try`
18046                 case "$yyy" in
18047                 12345678901)
18048                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18049                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18050                         echo "We will use %d."
18051                         ;;
18052                 esac
18053         fi
18054 fi
18055
18056 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18057         $cat >try.c <<'EOCP'
18058 #include <sys/types.h>
18059 #include <stdio.h>
18060 int main() {
18061   long q = 12345678901;
18062   printf("%ld\n", q);
18063 }
18064 EOCP
18065         set try
18066         if eval $compile; then
18067                 yyy=`$run ./try`
18068                 case "$yyy" in
18069                 12345678901)
18070                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18071                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18072                         echo "We will use %ld."
18073                         ;;
18074                 esac
18075         fi
18076 fi
18077
18078 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18079         $cat >try.c <<'EOCP'
18080 #include <sys/types.h>
18081 #include <inttypes.h>
18082 #include <stdio.h>
18083 int main() {
18084   int64_t q = 12345678901;
18085   printf("%" PRId64 "\n", q);
18086 }
18087 EOCP
18088         set try
18089         if eval $compile; then
18090                 yyy=`$run ./try`
18091                 case "$yyy" in
18092                 12345678901)
18093                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18094                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18095                         echo "We will use the C9X style."
18096                         ;;
18097                 esac
18098         fi
18099 fi
18100
18101 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18102         $cat >try.c <<EOCP
18103 #include <sys/types.h>
18104 #include <stdio.h>
18105 int main() {
18106   $quadtype q = 12345678901;
18107   printf("%Ld\n", q);
18108 }
18109 EOCP
18110         set try
18111         if eval $compile; then
18112                 yyy=`$run ./try`
18113                 case "$yyy" in
18114                 12345678901)
18115                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18116                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18117                         echo "We will use %Ld."
18118                         ;;
18119                 esac
18120         fi
18121 fi
18122
18123 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18124         $cat >try.c <<'EOCP'
18125 #include <sys/types.h>
18126 #include <stdio.h>
18127 int main() {
18128   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18129   printf("%lld\n", q);
18130 }
18131 EOCP
18132         set try
18133         if eval $compile; then
18134                 yyy=`$run ./try`
18135                 case "$yyy" in
18136                 12345678901)
18137                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18138                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18139                         echo "We will use the %lld style."
18140                         ;;
18141                 esac
18142         fi
18143 fi
18144
18145 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18146         $cat >try.c <<EOCP
18147 #include <sys/types.h>
18148 #include <stdio.h>
18149 int main() {
18150   $quadtype q = 12345678901;
18151   printf("%qd\n", q);
18152 }
18153 EOCP
18154         set try
18155         if eval $compile; then
18156                 yyy=`$run ./try`
18157                 case "$yyy" in
18158                 12345678901)
18159                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18160                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18161                         echo "We will use %qd."
18162                         ;;
18163                 esac
18164         fi
18165 fi
18166
18167 if $test X"$sPRId64" = X; then
18168         echo "Cannot figure out how to print 64-bit integers." >&4
18169 fi
18170
18171 $rm -f try try.*
18172
18173 fi
18174
18175 case "$sPRId64" in
18176 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18177         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18178         ;;
18179 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18180         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18181         ;;
18182 esac
18183
18184
18185 echo " "
18186 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18187
18188 if $test X"$ivsize" = X8; then
18189         ivdformat="$sPRId64"
18190         uvuformat="$sPRIu64"
18191         uvoformat="$sPRIo64"
18192         uvxformat="$sPRIx64"
18193         uvXUformat="$sPRIXU64"
18194 else
18195         if $test X"$ivsize" = X"$longsize"; then
18196                 ivdformat='"ld"'
18197                 uvuformat='"lu"'
18198                 uvoformat='"lo"'
18199                 uvxformat='"lx"'
18200                 uvXUformat='"lX"'
18201         else
18202                 if $test X"$ivsize" = X"$intsize"; then
18203                         ivdformat='"d"'
18204                         uvuformat='"u"'
18205                         uvoformat='"o"'
18206                         uvxformat='"x"'
18207                         uvXUformat='"X"'
18208                 else
18209                         : far out
18210                         if $test X"$ivsize" = X"$shortsize"; then
18211                                 ivdformat='"hd"'
18212                                 uvuformat='"hu"'
18213                                 uvoformat='"ho"'
18214                                 uvxformat='"hx"'
18215                                 uvXUformat='"hX"'
18216                         fi
18217                 fi
18218         fi
18219 fi
18220
18221 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18222         nveformat="$sPRIeldbl"
18223         nvfformat="$sPRIfldbl"
18224         nvgformat="$sPRIgldbl"
18225         nvEUformat="$sPRIEUldbl"
18226         nvFUformat="$sPRIFUldbl"
18227         nvGUformat="$sPRIGUldbl"
18228 else
18229         nveformat='"e"'
18230         nvfformat='"f"'
18231         nvgformat='"g"'
18232         nvEUformat='"E"'
18233         nvFUformat='"F"'
18234         nvGUformat='"G"'
18235 fi
18236
18237 case "$ivdformat" in
18238 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18239     exit 1
18240     ;;
18241 esac
18242
18243
18244 echo " "
18245 $echo "Checking the format string to be used for gids..." >&4
18246
18247 case "$gidsign" in
18248 -1)     if $test X"$gidsize" = X"$ivsize"; then
18249                 gidformat="$ivdformat"
18250         else
18251                 if $test X"$gidsize" = X"$longsize"; then
18252                         gidformat='"ld"'
18253                 else
18254                         if $test X"$gidsize" = X"$intsize"; then
18255                                 gidformat='"d"'
18256                         else
18257                                 if $test X"$gidsize" = X"$shortsize"; then
18258                                         gidformat='"hd"'
18259                                 fi
18260                         fi
18261                 fi
18262         fi
18263         ;;
18264 *)      if $test X"$gidsize" = X"$uvsize"; then
18265                 gidformat="$uvuformat"
18266         else
18267                 if $test X"$gidsize" = X"$longsize"; then
18268                         gidformat='"lu"'
18269                 else
18270                         if $test X"$gidsize" = X"$intsize"; then
18271                                 gidformat='"u"'
18272                         else
18273                                 if $test X"$gidsize" = X"$shortsize"; then
18274                                         gidformat='"hu"'
18275                                 fi
18276                         fi
18277                 fi
18278         fi
18279         ;;
18280 esac
18281
18282 : see if getgroups exists
18283 set getgroups d_getgrps
18284 eval $inlibc
18285
18286 : see if setgroups exists
18287 set setgroups d_setgrps
18288 eval $inlibc
18289
18290
18291 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18292 echo " "
18293 case "$d_getgrps$d_setgrps" in
18294 *define*)
18295         case "$groupstype" in
18296         '') dflt="$gidtype" ;;
18297         *)  dflt="$groupstype" ;;
18298         esac
18299         $cat <<EOM
18300 What type of pointer is the second argument to getgroups() and setgroups()?
18301 Usually this is the same as group ids, $gidtype, but not always.
18302
18303 EOM
18304         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18305         . ./myread
18306         groupstype="$ans"
18307         ;;
18308 *)  groupstype="$gidtype";;
18309 esac
18310
18311 echo " "
18312 echo "Checking if your $make program sets \$(MAKE)..." >&4
18313 case "$make_set_make" in
18314 '')
18315         $sed 's/^X //' > testmake.mak << 'EOF'
18316 Xall:
18317 X       @echo 'maketemp="$(MAKE)"'
18318 EOF
18319         case "`$make -f testmake.mak 2>/dev/null`" in
18320         *maketemp=*) make_set_make='#' ;;
18321         *)      make_set_make="MAKE=$make" ;;
18322         esac
18323         $rm -f testmake.mak
18324         ;;
18325 esac
18326 case "$make_set_make" in
18327 '#') echo "Yup, it does.";;
18328 *) echo "Nope, it doesn't.";;
18329 esac
18330
18331 : see what type is used for mode_t
18332 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18333 set mode_t modetype int stdio.h sys/types.h
18334 eval $typedef_ask
18335
18336 : see if stdarg is available
18337 echo " "
18338 if $test `./findhdr stdarg.h`; then
18339         echo "<stdarg.h> found." >&4
18340         valstd="$define"
18341 else
18342         echo "<stdarg.h> NOT found." >&4
18343         valstd="$undef"
18344 fi
18345
18346 : see if varags is available
18347 echo " "
18348 if $test `./findhdr varargs.h`; then
18349         echo "<varargs.h> found." >&4
18350 else
18351         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18352 fi
18353
18354 : set up the varargs testing programs
18355 $cat > varargs.c <<EOP
18356 #ifdef I_STDARG
18357 #include <stdarg.h>
18358 #endif
18359 #ifdef I_VARARGS
18360 #include <varargs.h>
18361 #endif
18362
18363 #ifdef I_STDARG
18364 int f(char *p, ...)
18365 #else
18366 int f(va_alist)
18367 va_dcl
18368 #endif
18369 {
18370         va_list ap;
18371 #ifndef I_STDARG
18372         char *p;
18373 #endif
18374 #ifdef I_STDARG
18375         va_start(ap,p);
18376 #else
18377         va_start(ap);
18378         p = va_arg(ap, char *);
18379 #endif
18380         va_end(ap);
18381 }
18382 EOP
18383 $cat > varargs <<EOP
18384 $startsh
18385 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18386         echo "true"
18387 else
18388         echo "false"
18389 fi
18390 $rm -f varargs$_o
18391 EOP
18392 chmod +x varargs
18393
18394 : now check which varargs header should be included
18395 echo " "
18396 i_varhdr=''
18397 case "$valstd" in
18398 "$define")
18399         if `./varargs I_STDARG`; then
18400                 val='stdarg.h'
18401         elif `./varargs I_VARARGS`; then
18402                 val='varargs.h'
18403         fi
18404         ;;
18405 *)
18406         if `./varargs I_VARARGS`; then
18407                 val='varargs.h'
18408         fi
18409         ;;
18410 esac
18411 case "$val" in
18412 '')
18413 echo "I could not find the definition for va_dcl... You have problems..." >&4
18414         val="$undef"; set i_stdarg; eval $setvar
18415         val="$undef"; set i_varargs; eval $setvar
18416         ;;
18417 *) 
18418         set i_varhdr
18419         eval $setvar
18420         case "$i_varhdr" in
18421         stdarg.h)
18422                 val="$define"; set i_stdarg; eval $setvar
18423                 val="$undef"; set i_varargs; eval $setvar
18424                 ;;
18425         varargs.h)
18426                 val="$undef"; set i_stdarg; eval $setvar
18427                 val="$define"; set i_varargs; eval $setvar
18428                 ;;
18429         esac
18430         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18431 esac
18432 $rm -f varargs*
18433
18434 : see if we need va_copy
18435 echo " "
18436 case "$i_stdarg" in
18437 "$define")
18438         $cat >try.c <<EOCP
18439 #include <stdarg.h>
18440 #include <stdio.h>
18441 #$i_stdlib I_STDLIB
18442 #ifdef I_STDLIB
18443 #include <stdlib.h>
18444 #endif
18445 #include <signal.h>
18446
18447 int
18448 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18449 {
18450   return vfprintf(f, fmt, *valp);
18451 }
18452  
18453 int    
18454 myvfprintf(FILE *f, const  char *fmt, va_list val)
18455 {
18456   return ivfprintf(f, fmt, &val);
18457 }
18458       
18459 int
18460 myprintf(char *fmt, ...) 
18461 {
18462   va_list val;
18463   va_start(val, fmt);
18464   return myvfprintf(stdout, fmt, val); 
18465 }         
18466
18467 int
18468 main(int ac, char **av)
18469 {
18470   signal(SIGSEGV, exit);
18471
18472   myprintf("%s%cs all right, then\n", "that", '\'');                            
18473   exit(0);      
18474 }
18475 EOCP
18476         set try
18477         if eval $compile && $run ./try 2>&1 >/dev/null; then
18478                 case "`$run ./try`" in
18479                 "that's all right, then")
18480                         okay=yes
18481                         ;;
18482                 esac
18483         fi
18484         case "$okay" in
18485         yes)    echo "It seems that you don't need va_copy()." >&4
18486                 need_va_copy="$undef"
18487                 ;;
18488         *)      echo "It seems that va_copy() or similar will be needed." >&4
18489                 need_va_copy="$define"
18490                 ;;
18491         esac
18492         $rm -f try.* core core.* *.core *.core.*
18493         ;;
18494 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18495         ;;
18496 esac
18497
18498 : see what type is used for size_t
18499 rp="What is the type used for the length parameter for string functions?"
18500 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18501 eval $typedef_ask
18502
18503 : check for type of arguments to gethostbyaddr. 
18504 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18505         case "$d_gethbyaddr" in
18506         $define)
18507                 $cat <<EOM
18508
18509 Checking to see what type of arguments are accepted by gethostbyaddr().
18510 EOM
18511                 hdrs="$define sys/types.h
18512                         $d_socket sys/socket.h 
18513                         $i_niin netinet/in.h 
18514                         $i_netdb netdb.h
18515                         $i_unistd unistd.h"
18516                 : The first arg can 'char *' or 'void *'
18517                 : The second arg is some of integral type
18518                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18519                         for yyy in size_t long int; do
18520                                 case "$netdb_host_type" in
18521                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18522                                         if ./protochk "$try" $hdrs; then
18523                                                 echo "Your system accepts $xxx for the first arg."
18524                                                 echo "...and $yyy for the second arg."
18525                                                 netdb_host_type="$xxx"
18526                                                 netdb_hlen_type="$yyy"
18527                                         fi
18528                                         ;;
18529                                 esac
18530                         done
18531                 done
18532                 : In case none of those worked, prompt the user.
18533                 case "$netdb_host_type" in
18534                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18535                         dflt='char *'
18536                         . ./myread
18537                         netdb_host_type=$ans
18538                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18539                         dflt="$sizetype"
18540                         . ./myread
18541                         netdb_hlen_type=$ans
18542                         ;;
18543                 esac
18544                 ;;
18545         *)      : no gethostbyaddr, so pick harmless defaults
18546                 netdb_host_type='char *'
18547                 netdb_hlen_type="$sizetype"
18548                 ;;
18549         esac
18550         # Remove the "const" if needed. -- but then we'll have a 
18551         # prototype clash!
18552         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18553 fi
18554
18555 : check for type of argument to gethostbyname. 
18556 if test "X$netdb_name_type" = X ; then
18557         case "$d_gethbyname" in
18558         $define)
18559                 $cat <<EOM
18560
18561 Checking to see what type of argument is accepted by gethostbyname().
18562 EOM
18563                 hdrs="$define sys/types.h
18564                         $d_socket sys/socket.h 
18565                         $i_niin netinet/in.h 
18566                         $i_netdb netdb.h
18567                         $i_unistd unistd.h"
18568                 for xxx in "const char *" "char *"; do
18569                         case "$netdb_name_type" in
18570                         '')     try="extern struct hostent *gethostbyname($xxx);"
18571                                 if ./protochk "$try" $hdrs; then
18572                                         echo "Your system accepts $xxx."
18573                                         netdb_name_type="$xxx"
18574                                 fi
18575                                 ;;
18576                         esac
18577                 done
18578                 : In case none of those worked, prompt the user.
18579                 case "$netdb_name_type" in
18580                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18581                         dflt='char *'
18582                         . ./myread
18583                         netdb_name_type=$ans
18584                         ;;
18585                 esac
18586                 ;;
18587         *)      : no gethostbyname, so pick harmless default
18588                 netdb_name_type='char *'
18589                 ;;
18590         esac
18591 fi
18592
18593 : check for type of 1st argument to getnetbyaddr. 
18594 if test "X$netdb_net_type" = X ; then
18595         case "$d_getnbyaddr" in
18596         $define)
18597                 $cat <<EOM
18598
18599 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18600 EOM
18601                 hdrs="$define sys/types.h
18602                         $d_socket sys/socket.h 
18603                         $i_niin netinet/in.h 
18604                         $i_netdb netdb.h
18605                         $i_unistd unistd.h"
18606                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18607                         case "$netdb_net_type" in
18608                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18609                                 if ./protochk "$try" $hdrs; then
18610                                         echo "Your system accepts $xxx."
18611                                         netdb_net_type="$xxx"
18612                                 fi
18613                                 ;;
18614                         esac
18615                 done
18616                 : In case none of those worked, prompt the user.
18617                 case "$netdb_net_type" in
18618                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18619                         dflt='long'
18620                         . ./myread
18621                         netdb_net_type=$ans
18622                         ;;
18623                 esac
18624                 ;;
18625         *)      : no getnetbyaddr, so pick harmless default
18626                 netdb_net_type='long'
18627                 ;;
18628         esac
18629 fi
18630 : locate the preferred pager for this system
18631 fn=f/
18632 case "$pager" in
18633 '')
18634         dflt=''
18635         case "$pg" in
18636         /*) dflt=$pg;;
18637         [a-zA-Z]:/*) dflt=$pg;;
18638         esac
18639         case "$more" in
18640         /*) dflt=$more;;
18641         [a-zA-Z]:/*) dflt=$more;;
18642         esac
18643         case "$less" in
18644         /*) dflt=$less;;
18645         [a-zA-Z]:/*) dflt=$less;;
18646         esac
18647         case "$dflt" in
18648         '') dflt=/usr/ucb/more;;
18649         esac
18650         ;;
18651 *)      dflt="$pager"
18652         : Instruct ./getfile to trust the hinted or previous pager value,
18653         : even if it does not begin with a slash.  For example, on os2,
18654         : pager might be cmd /c more.  See comments in UU/getfile.
18655         fn="f/($pager)"
18656         ;;
18657 esac
18658 echo " "
18659 rp='What pager is used on your system?'
18660 . ./getfile
18661 pager="$ans"
18662
18663 : see what type pids are declared as in the kernel
18664 rp="What is the type of process ids on this system?"
18665 set pid_t pidtype int stdio.h sys/types.h
18666 eval $typedef_ask
18667
18668 : see if ar generates random libraries by itself
18669 echo " "
18670 echo "Checking how to generate random libraries on your machine..." >&4
18671 echo 'int bar1() { return bar2(); }' > bar1.c
18672 echo 'int bar2() { return 2; }' > bar2.c
18673 $cat > foo.c <<EOP
18674 #$i_stdlib I_STDLIB
18675 #ifdef I_STDLIB
18676 #include <stdlib.h>
18677 #endif
18678 int main() { printf("%d\n", bar1()); exit(0); }
18679 EOP
18680 $cc $ccflags -c bar1.c >/dev/null 2>&1
18681 $cc $ccflags -c bar2.c >/dev/null 2>&1
18682 $cc $ccflags -c foo.c >/dev/null 2>&1
18683 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18684 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18685         $run ./foobar >/dev/null 2>&1; then
18686         echo "$ar appears to generate random libraries itself."
18687         orderlib=false
18688         ranlib=":"
18689 elif $ar ts bar$_a >/dev/null 2>&1 &&
18690         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18691         $run ./foobar >/dev/null 2>&1; then
18692                 echo "a table of contents needs to be added with '$ar ts'."
18693                 orderlib=false
18694                 ranlib="$ar ts"
18695 else
18696         case "$ranlib" in
18697         :) ranlib='';;
18698         '')
18699                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18700                 $test -f $ranlib || ranlib=''
18701                 ;;
18702         esac
18703         if $test -n "$ranlib"; then
18704                 echo "your system has '$ranlib'; we'll use that."
18705                 orderlib=false
18706         else
18707                 echo "your system doesn't seem to support random libraries"
18708                 echo "so we'll use lorder and tsort to order the libraries."
18709                 orderlib=true
18710                 ranlib=":"
18711         fi
18712 fi
18713 $rm -f foo* bar* 
18714
18715 : check for type of arguments to select. 
18716 case "$selecttype" in
18717 '') case "$d_select" in
18718         $define)
18719                 echo " "
18720                 $cat <<EOM
18721 Checking to see what type of arguments are accepted by select().
18722 EOM
18723                 hdrs="$define sys/types.h
18724                         $i_systime sys/time.h 
18725                         $i_sysselct sys/select.h
18726                         $d_socket sys/socket.h"
18727                 : The first arg can be int, unsigned, or size_t
18728                 : The last arg may or may not be 'const'
18729                 val=''
18730                 : void pointer has been seen but using that
18731                 : breaks the selectminbits test
18732                 for xxx in 'fd_set *' 'int *'; do
18733                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18734                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18735                                         case "$val" in
18736                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18737                                                 if ./protochk "$try" $hdrs; then
18738                                                         echo "Your system accepts $xxx."
18739                                                         val="$xxx"
18740                                                 fi
18741                                                 ;;
18742                                         esac
18743                                 done
18744                         done
18745                 done
18746                 case "$val" in
18747                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18748                         case "$d_fd_set" in
18749                                 $define) dflt="fd_set *" ;;
18750                                 *)              dflt="int *" ;;
18751                         esac
18752                         . ./myread
18753                         val=$ans
18754                         ;;
18755                 esac
18756                 selecttype="$val"
18757                 ;;
18758         *)      : no select, so pick a harmless default
18759                 selecttype='int *'
18760                 ;;
18761         esac
18762         ;;
18763 esac
18764
18765 : check for the select 'width'
18766 case "$selectminbits" in
18767 '') safebits=`expr $ptrsize \* 8`
18768     case "$d_select" in
18769         $define)
18770                 $cat <<EOM
18771
18772 Checking to see on how many bits at a time your select() operates...
18773 EOM
18774                 $cat >try.c <<EOCP
18775 #include <sys/types.h>
18776 #$i_time I_TIME
18777 #$i_systime I_SYS_TIME
18778 #$i_systimek I_SYS_TIME_KERNEL
18779 #ifdef I_TIME
18780 #   include <time.h>
18781 #endif
18782 #ifdef I_SYS_TIME
18783 #   ifdef I_SYS_TIME_KERNEL
18784 #       define KERNEL
18785 #   endif
18786 #   include <sys/time.h>
18787 #   ifdef I_SYS_TIME_KERNEL
18788 #       undef KERNEL
18789 #   endif
18790 #endif
18791 #$i_sysselct I_SYS_SELECT
18792 #ifdef I_SYS_SELECT
18793 #include <sys/select.h>
18794 #endif
18795 #$d_socket HAS_SOCKET
18796 #ifdef HAS_SOCKET
18797 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18798 #endif
18799 #include <stdio.h>
18800 #$i_stdlib I_STDLIB
18801 #ifdef I_STDLIB
18802 #include <stdlib.h>
18803 #endif
18804 $selecttype b;
18805 #define S sizeof(*(b))
18806 #define MINBITS 64
18807 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18808 #define NBITS  (NBYTES * 8)
18809 int main() {
18810     char *s = malloc(NBYTES);
18811     struct timeval t;
18812     int i;
18813     FILE* fp;
18814     int fd;
18815
18816     if (!s)
18817         exit(1);
18818     fclose(stdin);
18819     fp = fopen("try.c", "r");
18820     if (fp == 0)
18821       exit(2);
18822     fd = fileno(fp);
18823     if (fd < 0)
18824       exit(3);
18825     b = ($selecttype)s;
18826     for (i = 0; i < NBITS; i++)
18827         FD_SET(i, b);
18828     t.tv_sec  = 0;
18829     t.tv_usec = 0;
18830     select(fd + 1, b, 0, 0, &t);
18831     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18832     free(s);
18833     printf("%d\n", i + 1);
18834     return 0;
18835 }
18836 EOCP
18837                 set try
18838                 if eval $compile_ok; then
18839                         selectminbits=`$run ./try`
18840                         case "$selectminbits" in
18841                         '')     cat >&4 <<EOM
18842 Cannot figure out on how many bits at a time your select() operates.
18843 I'll play safe and guess it is $safebits bits.
18844 EOM
18845                                 selectminbits=$safebits
18846                                 bits="$safebits bits"
18847                                 ;;
18848                         1)      bits="1 bit" ;;
18849                         *)      bits="$selectminbits bits" ;;
18850                         esac
18851                         echo "Your select() operates on $bits at a time." >&4
18852                 else
18853                         rp='What is the minimum number of bits your select() operates on?'
18854                         case "$byteorder" in
18855                         12345678)       dflt=64 ;;
18856                         1234)           dflt=32 ;;
18857                         *)              dflt=1  ;;
18858                         esac
18859                         . ./myread
18860                         val=$ans
18861                         selectminbits="$val"
18862                 fi
18863                 $rm -f try.* try
18864                 ;;
18865         *)      : no select, so pick a harmless default
18866                 selectminbits=$safebits
18867                 ;;
18868         esac
18869         ;;
18870 esac
18871
18872 : Trace out the files included by signal.h, then look for SIGxxx names.
18873 : Remove SIGARRAYSIZE used by HPUX.
18874 : Remove SIGSTKSIZE used by Linux.
18875 : Remove SIGSTKSZ used by Posix.
18876 : Remove SIGTYP void lines used by OS2.
18877 : Some cpps, like os390, dont give the file name anywhere
18878 if [ "X$fieldn" = X ]; then
18879         : Just make some guesses.  We check them later.
18880         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18881 else
18882         xxx=`echo '#include <signal.h>' |
18883         $cppstdin $cppminus $cppflags 2>/dev/null |
18884         $grep '^[       ]*#.*include' | 
18885         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18886 fi
18887 : Check this list of files to be sure we have parsed the cpp output ok.
18888 : This will also avoid potentially non-existent files, such 
18889 : as ../foo/bar.h
18890 xxxfiles=''
18891 for xx in $xxx /dev/null ; do
18892         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18893 done
18894 : If we have found no files, at least try signal.h
18895 case "$xxxfiles" in
18896 '')     xxxfiles=`./findhdr signal.h` ;;
18897 esac
18898 xxx=`awk '
18899 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18900         print substr($2, 4, 20)
18901 }
18902 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18903         print substr($3, 4, 20)
18904 }' $xxxfiles`
18905 : Append some common names just in case the awk scan failed.
18906 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18907 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18908 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18909 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18910 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18911
18912 : generate a few handy files for later
18913 $cat > signal.c <<EOCP
18914 #include <sys/types.h>
18915 #include <signal.h>
18916 #$i_stdlib I_STDLIB
18917 #ifdef I_STDLIB
18918 #include <stdlib.h>
18919 #endif
18920 #include <stdio.h>
18921 int main() {
18922
18923 /* Strange style to avoid deeply-nested #if/#else/#endif */
18924 #ifndef NSIG
18925 #  ifdef _NSIG
18926 #    define NSIG (_NSIG)
18927 #  endif
18928 #endif
18929
18930 #ifndef NSIG
18931 #  ifdef SIGMAX
18932 #    define NSIG (SIGMAX+1)
18933 #  endif
18934 #endif
18935
18936 #ifndef NSIG
18937 #  ifdef SIG_MAX
18938 #    define NSIG (SIG_MAX+1)
18939 #  endif
18940 #endif
18941
18942 #ifndef NSIG
18943 #  ifdef MAXSIG
18944 #    define NSIG (MAXSIG+1)
18945 #  endif
18946 #endif
18947
18948 #ifndef NSIG
18949 #  ifdef MAX_SIG
18950 #    define NSIG (MAX_SIG+1)
18951 #  endif
18952 #endif
18953
18954 #ifndef NSIG
18955 #  ifdef SIGARRAYSIZE
18956 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18957 #  endif
18958 #endif
18959
18960 #ifndef NSIG
18961 #  ifdef _sys_nsig
18962 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18963 #  endif
18964 #endif
18965
18966 /* Default to some arbitrary number that's big enough to get most
18967    of the common signals.
18968 */
18969 #ifndef NSIG
18970 #    define NSIG 50
18971 #endif
18972
18973 printf("NSIG %d\n", NSIG);
18974
18975 #ifndef JUST_NSIG
18976
18977 EOCP
18978
18979 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18980 {
18981         printf "#ifdef SIG"; printf $1; printf "\n"
18982         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18983         printf $1; printf ");\n"
18984         printf "#endif\n"
18985 }
18986 END {
18987         printf "#endif /* JUST_NSIG */\n";
18988         printf "exit(0);\n}\n";
18989 }
18990 ' >>signal.c
18991 $cat >signal.awk <<'EOP'
18992 BEGIN { ndups = 0 }
18993 $1 ~ /^NSIG$/ { nsig = $2 }
18994 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18995     if ($2 > maxsig) { maxsig = $2 }
18996     if (sig_name[$2]) {
18997         dup_name[ndups] = $1
18998         dup_num[ndups] = $2
18999         ndups++ 
19000     }
19001     else {
19002         sig_name[$2] = $1
19003         sig_num[$2] = $2
19004     }
19005 }
19006 END { 
19007     if (nsig == 0) {
19008         nsig = maxsig + 1
19009     }
19010     printf("NSIG %d\n", nsig);
19011     for (n = 1; n < nsig; n++) {
19012         if (sig_name[n]) {
19013             printf("%s %d\n", sig_name[n], sig_num[n])
19014         }
19015         else {
19016             printf("NUM%d %d\n", n, n) 
19017         }
19018     }
19019     for (n = 0; n < ndups; n++) {
19020         printf("%s %d\n", dup_name[n], dup_num[n])
19021     }
19022 }
19023 EOP
19024 $cat >signal_cmd <<EOS
19025 $startsh
19026 if $test -s signal.lst; then
19027     echo "Using your existing signal.lst file"
19028         exit 0
19029 fi
19030 xxx="$xxx"
19031 EOS
19032 $cat >>signal_cmd <<'EOS'
19033
19034 set signal
19035 if eval $compile_ok; then
19036         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19037 else
19038         echo "(I can't seem be able to compile the whole test program)" >&4
19039         echo "(I'll try it in little pieces.)" >&4
19040         set signal -DJUST_NSIG
19041         if eval $compile_ok; then
19042                 $run ./signal$_exe > signal.nsg
19043                 $cat signal.nsg
19044         else
19045                 echo "I can't seem to figure out how many signals you have." >&4
19046                 echo "Guessing 50." >&4
19047                 echo 'NSIG 50' > signal.nsg
19048         fi
19049         : Now look at all the signal names, one at a time.
19050         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19051                 $cat > signal.c <<EOCP
19052 #include <sys/types.h>
19053 #include <signal.h>
19054 #include <stdio.h>
19055 int main() {
19056 printf("$xx %d\n", SIG${xx});
19057 return 0;
19058 }
19059 EOCP
19060                 set signal
19061                 if eval $compile; then
19062                         echo "SIG${xx} found."
19063                         $run ./signal$_exe  >> signal.ls1
19064                 else
19065                         echo "SIG${xx} NOT found."
19066                 fi
19067         done
19068         if $test -s signal.ls1; then
19069                 $cat signal.nsg signal.ls1 |
19070                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19071         fi
19072
19073 fi
19074 if $test -s signal.lst; then
19075         :
19076 else
19077         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19078         echo 'kill -l' >signal
19079         set X `csh -f <signal`
19080         $rm -f signal
19081         shift
19082         case $# in
19083         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19084         esac
19085         echo $@ | $tr ' ' $trnl | \
19086             $awk '{ printf "%s %d\n", $1, ++s; }
19087                   END { printf "NSIG %d\n", ++s }' >signal.lst
19088 fi
19089 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19090 EOS
19091 chmod a+x signal_cmd
19092 $eunicefix signal_cmd
19093
19094 : generate list of signal names
19095 echo " "
19096 case "$sig_name_init" in
19097 '') doinit=yes ;;
19098 *)  case "$sig_num_init" in
19099     ''|*,*) doinit=yes ;;
19100     esac ;;
19101 esac
19102 case "$doinit" in
19103 yes)
19104         echo "Generating a list of signal names and numbers..." >&4
19105         . ./signal_cmd
19106         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19107         sig_name=`$awk 'BEGIN { printf "ZERO " }
19108                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19109         sig_num=`$awk  'BEGIN { printf "0 " }
19110                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19111         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19112                              !/^NSIG/   { printf "\"%s\", ", $1 }
19113                              END        { printf "0\n" }' signal.lst`
19114         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19115                              !/^NSIG/   { printf "%d, ", $2}
19116                              END        { printf "0\n"}' signal.lst`
19117         ;;
19118 esac
19119 echo "The following $sig_count signals are available:"
19120 echo " "
19121 echo $sig_name | $awk \
19122 'BEGIN { linelen = 0 }
19123 {
19124         for (i = 1; i <= NF; i++) {
19125                 name = "SIG" $i " "
19126                 linelen = linelen + length(name)
19127                 if (linelen > 70) {
19128                         printf "\n"
19129                         linelen = length(name)
19130                 }
19131                 printf "%s", name
19132         }
19133         printf "\n"
19134 }'
19135 sig_size=`echo $sig_name | awk '{print NF}'`
19136 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19137
19138 echo " "
19139 case "$sizetype" in
19140 *_t) zzz="$sizetype"    ;;
19141 *)   zzz="filesize"     ;;
19142 esac
19143 echo "Checking the size of $zzz..." >&4 
19144 cat > try.c <<EOCP
19145 #include <sys/types.h>
19146 #include <stdio.h>
19147 #$i_stdlib I_STDLIB
19148 #ifdef I_STDLIB
19149 #include <stdlib.h>
19150 #endif
19151 int main() {
19152     printf("%d\n", (int)sizeof($sizetype));
19153     exit(0);
19154 }
19155 EOCP
19156 set try
19157 if eval $compile_ok; then
19158         yyy=`$run ./try`
19159         case "$yyy" in
19160         '')     sizesize=4
19161                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19162                 ;;
19163         *)      sizesize=$yyy
19164                 echo "Your $zzz size is $sizesize bytes."
19165                 ;;
19166         esac
19167 else
19168         sizesize=4
19169         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19170 fi
19171
19172
19173 : check for socklen_t
19174 echo " "
19175 echo "Checking to see if you have socklen_t..." >&4
19176 $cat >try.c <<EOCP
19177 #include <sys/types.h>
19178 #$d_socket HAS_SOCKET
19179 #ifdef HAS_SOCKET
19180 #include <sys/socket.h>
19181 #endif
19182 int main() { socklen_t x = 16; }
19183 EOCP
19184 set try
19185 if eval $compile; then
19186         val="$define"
19187         echo "You have socklen_t."
19188 else
19189         val="$undef"
19190         echo "You do not have socklen_t."
19191         case "$sizetype" in
19192         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19193         esac
19194 fi
19195 $rm -f try try.*
19196 set d_socklen_t
19197 eval $setvar
19198
19199 : see if this is a socks.h system
19200 set socks.h i_socks
19201 eval $inhdr
19202
19203 : check for type of the size argument to socket calls
19204 case "$d_socket" in
19205 "$define")
19206         $cat <<EOM
19207
19208 Checking to see what type is the last argument of accept().
19209 EOM
19210         yyy=''
19211         case "$d_socklen_t" in
19212         "$define") yyy="$yyy socklen_t"
19213         esac
19214         yyy="$yyy $sizetype int long unsigned"
19215         for xxx in $yyy; do
19216                 case "$socksizetype" in
19217                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19218                         case "$usesocks" in
19219                         "$define")
19220                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19221                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19222                                         socksizetype="$xxx"
19223                                 fi
19224                                 ;;
19225                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19226                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19227                                         socksizetype="$xxx"
19228                                 fi
19229                                 ;;
19230                         esac
19231                         ;;
19232                 esac
19233         done
19234 : In case none of those worked, prompt the user.
19235         case "$socksizetype" in
19236         '')     rp='What is the type for socket address structure sizes?'
19237                 dflt='int'
19238                 . ./myread
19239                 socksizetype=$ans
19240                 ;;
19241         esac
19242         ;;
19243 *)      : no sockets, so pick relatively harmless default
19244         socksizetype='int'
19245         ;;
19246 esac
19247
19248 : see what type is used for signed size_t
19249 set ssize_t ssizetype int stdio.h sys/types.h
19250 eval $typedef
19251 dflt="$ssizetype"
19252 $cat > try.c <<EOM
19253 #include <stdio.h>
19254 #$i_stdlib I_STDLIB
19255 #ifdef I_STDLIB
19256 #include <stdlib.h>
19257 #endif
19258 #include <sys/types.h>
19259 #define Size_t $sizetype
19260 #define SSize_t $dflt
19261 int main()
19262 {
19263         if (sizeof(Size_t) == sizeof(SSize_t))
19264                 printf("$dflt\n");
19265         else if (sizeof(Size_t) == sizeof(int))
19266                 printf("int\n");
19267         else 
19268                 printf("long\n");
19269         exit(0);
19270 }
19271 EOM
19272 echo " "
19273 set try
19274 if eval $compile_ok && $run ./try > /dev/null; then
19275         ssizetype=`$run ./try`
19276         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19277 else
19278         $cat >&4 <<EOM
19279 Help! I can't compile and run the ssize_t test program: please enlighten me!
19280 (This is probably a misconfiguration in your system or libraries, and
19281 you really ought to fix it.  Still, I'll try anyway.)
19282
19283 I need a type that is the same size as $sizetype, but is guaranteed to
19284 be signed.  Common values are ssize_t, int and long.
19285
19286 EOM
19287         rp="What signed type is the same size as $sizetype?"
19288         . ./myread
19289         ssizetype="$ans"
19290 fi
19291 $rm -f try try.*
19292
19293 : see what type of char stdio uses.
19294 echo " "
19295 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19296 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19297         echo "Your stdio uses unsigned chars." >&4
19298         stdchar="unsigned char"
19299 else
19300         echo "Your stdio uses signed chars." >&4
19301         stdchar="char"
19302 fi
19303 $rm -f stdioh
19304
19305
19306
19307 : see what type uids are declared as in the kernel
19308 echo " "
19309 echo "Looking for the type for user ids returned by getuid()."
19310 set uid_t uidtype xxx stdio.h sys/types.h
19311 eval $typedef
19312 case "$uidtype" in
19313 xxx)
19314         xxx=`./findhdr sys/user.h`
19315         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19316         case $1 in
19317         unsigned) dflt="$1 $2" ;;
19318         *) dflt="$1" ;;
19319         esac
19320         ;;
19321 *) dflt="$uidtype";;
19322 esac
19323 case "$uidtype" in
19324 uid_t)  echo "uid_t found." ;;
19325 *)      rp="What is the type for user ids returned by getuid()?"
19326         . ./myread
19327         uidtype="$ans"
19328         ;;
19329 esac
19330
19331 echo " "
19332 case "$uidtype" in
19333 *_t) zzz="$uidtype"     ;;
19334 *)   zzz="uid"          ;;
19335 esac
19336 echo "Checking the size of $zzz..." >&4 
19337 cat > try.c <<EOCP
19338 #include <sys/types.h>
19339 #include <stdio.h>
19340 #$i_stdlib I_STDLIB
19341 #ifdef I_STDLIB
19342 #include <stdlib.h>
19343 #endif
19344 int main() {
19345     printf("%d\n", (int)sizeof($uidtype));
19346     exit(0);
19347 }
19348 EOCP
19349 set try
19350 if eval $compile_ok; then
19351         yyy=`$run ./try`
19352         case "$yyy" in
19353         '')     uidsize=4
19354                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19355                 ;;
19356         *)      uidsize=$yyy
19357                 echo "Your $zzz is $uidsize bytes long."
19358                 ;;
19359         esac
19360 else
19361         uidsize=4
19362         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19363 fi
19364
19365 echo " "
19366 case "$uidtype" in
19367 *_t) zzz="$uidtype"     ;;
19368 *)   zzz="uid"          ;;
19369 esac
19370 echo "Checking the sign of $zzz..." >&4
19371 cat > try.c <<EOCP
19372 #include <sys/types.h>
19373 #include <stdio.h>
19374 int main() {
19375         $uidtype foo = -1;
19376         if (foo < 0)
19377                 printf("-1\n");
19378         else
19379                 printf("1\n");
19380 }
19381 EOCP
19382 set try
19383 if eval $compile; then
19384         yyy=`$run ./try`
19385         case "$yyy" in
19386         '')     uidsign=1
19387                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19388                 ;;
19389         *)      uidsign=$yyy
19390                 case "$uidsign" in
19391                  1) echo "Your $zzz is unsigned." ;;
19392                 -1) echo "Your $zzz is signed."   ;;
19393                 esac
19394                 ;;
19395         esac
19396 else
19397         uidsign=1
19398         echo "(I can't compile the test program--guessing unsigned.)" >&4
19399 fi
19400
19401
19402
19403 echo " "
19404 $echo "Checking the format string to be used for uids..." >&4
19405
19406 case "$uidsign" in
19407 -1)     if $test X"$uidsize" = X"$ivsize"; then
19408                 uidformat="$ivdformat"
19409         else
19410                 if $test X"$uidsize" = X"$longsize"; then
19411                         uidformat='"ld"'
19412                 else
19413                         if $test X"$uidsize" = X"$intsize"; then
19414                                 uidformat='"d"'
19415                         else
19416                                 if $test X"$uidsize" = X"$shortsize"; then
19417                                         uidformat='"hd"'
19418                                 fi
19419                         fi
19420                 fi
19421         fi
19422         ;;
19423 *)      if $test X"$uidsize" = X"$uvsize"; then
19424                 uidformat="$uvuformat"
19425         else
19426                 if $test X"$uidsize" = X"$longsize"; then
19427                         uidformat='"lu"'
19428                 else
19429                         if $test X"$uidsize" = X"$intsize"; then
19430                                 uidformat='"u"'
19431                         else
19432                                 if $test X"$uidsize" = X"$shortsize"; then
19433                                         uidformat='"hu"'
19434                                 fi
19435                         fi
19436                 fi
19437         fi
19438         ;;
19439 esac
19440
19441 : determine compiler compiler
19442 case "$yacc" in
19443 '')
19444         dflt=yacc;;
19445 *)
19446         dflt="$yacc";;
19447 esac
19448 echo " "
19449 comp='yacc'
19450 if $test -f "$byacc$_exe"; then
19451         dflt="$byacc"
19452         comp="byacc or $comp"
19453 fi
19454 if $test -f "$bison$_exe"; then
19455         comp="$comp or bison -y"
19456 fi
19457 rp="Which compiler compiler ($comp) shall I use?"
19458 . ./myread
19459 yacc="$ans"
19460 case "$yacc" in
19461 *bis*)
19462         case "$yacc" in
19463         *-y*) ;;
19464         *)
19465                 yacc="$yacc -y"
19466                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19467                 ;;
19468         esac
19469         ;;
19470 esac
19471
19472 : see if this is a fp.h system
19473 set fp.h i_fp
19474 eval $inhdr
19475
19476 : see if this is a fp_class.h system
19477 set fp_class.h i_fp_class
19478 eval $inhdr
19479
19480 : see if this is a ieeefp.h system
19481 case "$i_ieeefp" in
19482 '' ) set ieeefp.h i_ieeefp
19483      eval $inhdr
19484      ;;
19485 esac
19486
19487 : see if this is a libutil.h system
19488 set libutil.h i_libutil
19489 eval $inhdr
19490
19491 : see if mach cthreads are available
19492 if test "X$usethreads" = "X$define"; then
19493         set mach/cthreads.h i_machcthr
19494         eval $inhdr
19495 else
19496         i_machcthr="$undef"
19497 fi
19498
19499
19500
19501 : see if this is a math.h system
19502 set math.h i_math
19503 eval $inhdr
19504
19505 : see if this is a mntent.h system
19506 set mntent.h i_mntent
19507 eval $inhdr
19508
19509 : see if ndbm.h is available
19510 set ndbm.h t_ndbm
19511 eval $inhdr
19512
19513 case "$t_ndbm" in
19514 $undef)
19515     # Some Linux distributions such as RedHat 7.1 put the
19516     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19517     if $test -f /usr/include/gdbm/ndbm.h; then
19518         echo '<gdbm/ndbm.h> found.'
19519         ccflags="$ccflags -I/usr/include/gdbm"
19520         cppflags="$cppflags -I/usr/include/gdbm"
19521         t_ndbm=$define
19522     fi
19523     ;;
19524 esac
19525
19526 case "$t_ndbm" in
19527 $define)
19528         : see if dbm_open exists
19529         set dbm_open d_dbm_open
19530         eval $inlibc
19531         case "$d_dbm_open" in
19532         $undef)
19533                 t_ndbm="$undef"
19534                 echo "We won't be including <ndbm.h>"
19535                 ;;
19536         esac
19537         ;;
19538 esac
19539 val="$t_ndbm"
19540 set i_ndbm
19541 eval $setvar
19542
19543 : see if net/errno.h is available
19544 val=''
19545 set net/errno.h val
19546 eval $inhdr
19547
19548 : Unfortunately, it causes problems on some systems.  Arrgh.
19549 case "$val" in
19550 $define)
19551         cat > try.c <<'EOM'
19552 #include <stdio.h>
19553 #include <errno.h>
19554 #include <net/errno.h>
19555 int func()
19556 {
19557         return ENOTSOCK;
19558 }
19559 EOM
19560         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19561                 echo "We'll be including <net/errno.h>." >&4
19562         else
19563                 echo "We won't be including <net/errno.h>." >&4
19564                 val="$undef"
19565         fi
19566         $rm -f try.* try
19567         ;;
19568 esac
19569 set i_neterrno
19570 eval $setvar
19571
19572 : see if netinet/tcp.h is available
19573 set netinet/tcp.h i_netinettcp
19574 eval $inhdr
19575
19576 : see if this is a poll.h system
19577 set poll.h i_poll
19578 eval $inhdr
19579
19580 : see if this is a prot.h system
19581 set prot.h i_prot
19582 eval $inhdr
19583
19584 echo " "
19585 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19586 $cat <<'EOSH' > Cppsym.know
19587 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19588 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19589 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19590 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19591 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19592 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19593 bull c cadmus clipper CMU COFF COMPILER_VERSION
19594 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19595 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19596 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19597 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19598 GLIBC GLIBC_MINOR
19599 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19600 H3050R H3050RX hbullx20 hcx host_mips
19601 hp200 hp300 hp700 HP700 hp800 hp9000
19602 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19603 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19604 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19605 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19606 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19607 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19608 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19609 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19610 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19611 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19612 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19613 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19614 MATH_HAS_NO_SIDE_EFFECTS
19615 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19616 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19617 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19618 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19619 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19620 NetBSD news1500 news1700 news1800 news1900 news3700
19621 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19622 ns32016 ns32332 ns32k nsc32000
19623 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19624 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19625 pc532 pdp11 PGC PIC plexus PORTAR posix
19626 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19627 POSIX_C_SOURCE POSIX_SOURCE POWER
19628 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19629 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19630 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19631 sony sony_news sonyrisc sparc sparclite spectrum
19632 stardent stdc STDC_EXT stratos sun sun3 sun386
19633 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19634 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19635 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19636 sysV68 sysV88 Tek4132 Tek4300 titan
19637 TM3200 TM5400 TM5600
19638 tower tower32 tower32_200 tower32_600 tower32_700
19639 tower32_800 tower32_850 tss
19640 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19641 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19642 unix UNIX95 UNIX99 unixpc unos
19643 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19644 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19645 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19646 USGr4 USGr4_2
19647 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19648 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19649 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19650 z8000
19651 EOSH
19652 # Maybe put other stuff here too.
19653 cat <<EOSH >>Cppsym.know
19654 $osname
19655 EOSH
19656 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19657 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19658 $cat Cppsym.know > Cppsym.c
19659 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19660 $rm -f Cppsym.a Cppsym.b Cppsym.c
19661 cat <<EOSH > Cppsym
19662 $startsh
19663 if $test \$# -gt 0; then
19664     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19665     if $test -s Cppsym.got; then
19666         $rm -f Cppsym.got
19667         exit 0
19668     fi
19669     $rm -f Cppsym.got
19670     exit 1
19671 else
19672     $tr " " "$trnl" | ./Cppsym.try
19673     exit 0
19674 fi
19675 EOSH
19676 chmod +x Cppsym
19677 $eunicefix Cppsym
19678 cat <<EOSH > Cppsym.try
19679 $startsh
19680 cat <<'EOCP' > try.c
19681 #include <stdio.h>
19682 int main() {
19683 EOCP
19684 $awk \\
19685 EOSH
19686 cat <<'EOSH' >> Cppsym.try
19687 'length($1) > 0 {
19688     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
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 }'       >> try.c
19693 echo 'return 0;}' >> try.c
19694 EOSH
19695 cat <<EOSH >> Cppsym.try
19696 ccflags="$ccflags"
19697 case "$osname-$gccversion" in
19698 irix-) ccflags="\$ccflags -woff 1178" ;;
19699 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19700 esac
19701 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19702 EOSH
19703 chmod +x Cppsym.try
19704 $eunicefix Cppsym.try
19705 ./Cppsym < Cppsym.know > Cppsym.true
19706 : now check the C compiler for additional symbols
19707 postprocess_cc_v=''
19708 case "$osname" in
19709 aix) postprocess_cc_v="|$tr , ' '" ;;
19710 esac
19711 $cat >ccsym <<EOS
19712 $startsh
19713 $cat >tmp.c <<EOF
19714 extern int foo;
19715 EOF
19716 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19717 do
19718         case "\$i" in
19719         -D*) echo "\$i" | $sed 's/^-D//';;
19720         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19721         esac
19722 done
19723 $rm -f try.c
19724 EOS
19725 postprocess_cc_v=''
19726 chmod +x ccsym
19727 $eunicefix ccsym
19728 ./ccsym > ccsym1.raw
19729 if $test -s ccsym1.raw; then
19730        $sort ccsym1.raw | $uniq >ccsym.raw
19731 else
19732        mv ccsym1.raw ccsym.raw
19733 fi
19734
19735 $awk '/\=/ { print $0; next }
19736         { print $0"=1" }' ccsym.raw >ccsym.list
19737 $awk '/\=/ { print $0; next }
19738         { print $0"=1" }' Cppsym.true >ccsym.true
19739 $comm -13 ccsym.true ccsym.list >ccsym.own
19740 $comm -12 ccsym.true ccsym.list >ccsym.com
19741 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19742 also=''
19743 if $test -z ccsym.raw; then
19744         echo "Your C compiler doesn't seem to define any symbols!" >&4
19745         echo " "
19746         echo "However, your C preprocessor defines the following symbols:"
19747         $cat Cppsym.true
19748         ccsymbols=''
19749         cppsymbols=`$cat Cppsym.true`
19750         cppsymbols=`echo $cppsymbols`
19751         cppccsymbols="$cppsymbols"
19752 else
19753         if $test -s ccsym.com; then
19754                 echo "Your C compiler and pre-processor define these symbols:"
19755                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19756                 also='also '
19757                 symbols='ones'
19758                 cppccsymbols=`$cat ccsym.com`
19759                 cppccsymbols=`echo $cppccsymbols`
19760                 $test "$silent" || sleep 1
19761         fi
19762         if $test -s ccsym.cpp; then
19763                 $test "$also" && echo " "
19764                 echo "Your C pre-processor ${also}defines the following symbols:"
19765                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19766                 also='further '
19767                 cppsymbols=`$cat ccsym.cpp`
19768                 cppsymbols=`echo $cppsymbols`
19769                 $test "$silent" || sleep 1
19770         fi
19771         if $test -s ccsym.own; then
19772                 $test "$also" && echo " "
19773                 echo "Your C compiler ${also}defines the following cpp symbols:"
19774                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19775                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19776                 ccsymbols=`$cat ccsym.own`
19777                 ccsymbols=`echo $ccsymbols`
19778                 $test "$silent" || sleep 1
19779         fi
19780 fi
19781
19782 : see if this is a termio system
19783 val="$undef"
19784 val2="$undef"
19785 val3="$undef"
19786 if $test `./findhdr termios.h`; then
19787         set tcsetattr i_termios
19788         eval $inlibc
19789         val3="$i_termios"
19790 fi
19791 echo " "
19792 case "$val3" in
19793 "$define") echo "You have POSIX termios.h... good!" >&4;;
19794 *) if ./Cppsym pyr; then
19795                 case "`/bin/universe`" in
19796                 ucb) if $test `./findhdr sgtty.h`; then
19797                                 val2="$define"
19798                                 echo "<sgtty.h> found." >&4
19799                         else
19800                                 echo "System is pyramid with BSD universe."
19801                                 echo "<sgtty.h> not found--you could have problems." >&4
19802                         fi;;
19803                 *) if $test `./findhdr termio.h`; then
19804                                 val="$define"
19805                                 echo "<termio.h> found." >&4
19806                         else
19807                                 echo "System is pyramid with USG universe."
19808                                 echo "<termio.h> not found--you could have problems." >&4
19809                         fi;;
19810                 esac
19811         elif ./usg; then
19812                 if $test `./findhdr termio.h`; then
19813                         echo "<termio.h> found." >&4
19814                         val="$define"
19815                 elif $test `./findhdr sgtty.h`; then
19816                         echo "<sgtty.h> found." >&4
19817                         val2="$define"
19818                 else
19819 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19820                 fi
19821         else
19822                 if $test `./findhdr sgtty.h`; then
19823                         echo "<sgtty.h> found." >&4
19824                         val2="$define"
19825                 elif $test `./findhdr termio.h`; then
19826                         echo "<termio.h> found." >&4
19827                         val="$define"
19828                 else
19829 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19830                 fi
19831         fi;;
19832 esac
19833 set i_termio; eval $setvar
19834 val=$val2; set i_sgtty; eval $setvar
19835 val=$val3; set i_termios; eval $setvar
19836
19837 : see if stddef is available
19838 set stddef.h i_stddef
19839 eval $inhdr
19840
19841 : see if this is a sunmath.h system
19842 set sunmath.h i_sunmath
19843 eval $inhdr
19844
19845 : see if sys/access.h is available
19846 set sys/access.h i_sysaccess
19847 eval $inhdr
19848
19849 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19850 set sys/filio.h i_sysfilio
19851 eval $inhdr
19852 echo " "
19853 if $test `./findhdr sys/ioctl.h`; then
19854         val="$define"
19855         echo '<sys/ioctl.h> found.' >&4
19856 else
19857         val="$undef"
19858         if $test $i_sysfilio = "$define"; then
19859             echo '<sys/ioctl.h> NOT found.' >&4
19860         else
19861                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19862                 $test $i_termio = "$define" && xxx="termio.h"
19863                 $test $i_termios = "$define" && xxx="termios.h"
19864 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19865         fi
19866 fi
19867 set i_sysioctl
19868 eval $setvar
19869
19870 : see if socket ioctl defs are in sys/sockio.h
19871 echo " "
19872 xxx=`./findhdr sys/sockio.h`
19873 if $test "$xxx"; then
19874         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19875                 val="$define"
19876                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19877         else
19878                 val="$undef"
19879                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19880         fi
19881 else
19882         val="$undef"
19883         $cat <<EOM
19884 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19885 EOM
19886 fi
19887 set i_syssockio
19888 eval $setvar
19889
19890
19891 : see if this is a syslog.h system
19892 set syslog.h i_syslog
19893 eval $inhdr
19894
19895
19896 : see if this is a sys/mode.h system
19897 set sys/mode.h i_sysmode
19898 eval $inhdr
19899
19900 : see if sys/resource.h has to be included
19901 set sys/resource.h i_sysresrc
19902 eval $inhdr
19903
19904 : see if sys/security.h is available
19905 set sys/security.h i_syssecrt
19906 eval $inhdr
19907
19908 : see if this is a sys/statvfs.h system
19909 set sys/statvfs.h i_sysstatvfs
19910 eval $inhdr
19911
19912 : see if this is a sys/un.h system
19913 set sys/un.h i_sysun
19914 eval $inhdr
19915
19916
19917 : see if this is a sys/utsname.h system
19918 set sys/utsname.h i_sysutsname
19919 eval $inhdr
19920
19921 : see if this is a syswait system
19922 set sys/wait.h i_syswait
19923 eval $inhdr
19924
19925 : see if this is a ustat.h system
19926 set ustat.h i_ustat
19927 eval $inhdr
19928
19929 : see if this is an utime system
19930 set utime.h i_utime
19931 eval $inhdr
19932
19933 : see if this is a values.h system
19934 set values.h i_values
19935 eval $inhdr
19936
19937 : see if this is a vfork system
19938 case "$d_vfork" in
19939 "$define")
19940         set vfork.h i_vfork
19941         eval $inhdr
19942         ;;
19943 *)
19944         i_vfork="$undef"
19945         ;;
19946 esac
19947
19948 : see if gdbm.h is available
19949 set gdbm.h t_gdbm
19950 eval $inhdr
19951 case "$t_gdbm" in
19952 $define)
19953         : see if gdbm_open exists
19954         set gdbm_open d_gdbm_open
19955         eval $inlibc
19956         case "$d_gdbm_open" in
19957         $undef)
19958                 t_gdbm="$undef"
19959                 echo "We won't be including <gdbm.h>"
19960                 ;;
19961         esac
19962         ;;
19963 esac
19964 val="$t_gdbm"
19965 set i_gdbm
19966 eval $setvar
19967
19968 echo " "
19969 echo "Looking for extensions..." >&4
19970 : If we are using the old config.sh, known_extensions may contain
19971 : old or inaccurate or duplicate values.
19972 known_extensions=''
19973 nonxs_extensions=''
19974 : We do not use find because it might not be available.
19975 : We do not just use MANIFEST because the user may have dropped
19976 : some additional extensions into the source tree and expect them
19977 : to be built.
19978
19979 : Function to recursively find available extensions, ignoring DynaLoader
19980 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19981 find_extensions='
19982     for xxx in *; do
19983        case "$xxx" in
19984            DynaLoader|dynaload) ;;
19985            *)
19986            if $test -f $xxx/$xxx.xs; then
19987                known_extensions="$known_extensions $1$xxx";
19988            elif $test -f $xxx/Makefile.PL; then
19989                nonxs_extensions="$nonxs_extensions $1$xxx";
19990            else
19991                if $test -d $xxx -a $# -lt 10; then
19992                    set $1$xxx/ $*;
19993                    cd "$xxx";
19994                    eval $find_extensions;
19995                    cd ..;
19996                    shift;
19997                fi;
19998            fi
19999            ;;
20000        esac;
20001     done'
20002 tdir=`pwd`
20003 cd "$rsrc/ext"
20004 set X
20005 shift
20006 eval $find_extensions
20007 # Special case:  Add in threads/shared since it is not picked up by the
20008 # recursive find above (and adding in general recursive finding breaks
20009 # SDBM_File/sdbm).  A.D.  10/25/2001.
20010 known_extensions="$known_extensions threads/shared"
20011 set X $nonxs_extensions
20012 shift
20013 nonxs_extensions="$*"
20014 set X $known_extensions
20015 shift
20016 known_extensions="$*"
20017 cd "$tdir"
20018
20019 : Now see which are supported on this system.
20020 avail_ext=''
20021 for xxx in $known_extensions ; do
20022         case "$xxx" in
20023         DB_File|db_file)
20024                 case "$i_db" in
20025                 $define) avail_ext="$avail_ext $xxx" ;;
20026                 esac
20027                 ;;
20028         GDBM_File|gdbm_fil)
20029                 case "$i_gdbm" in 
20030                 $define) avail_ext="$avail_ext $xxx" ;;
20031                 esac
20032                 ;;
20033         I18N/Langinfo|i18n_lan)
20034                 case "$i_langinfo$d_nl_langinfo" in 
20035                 $define$define) avail_ext="$avail_ext $xxx" ;;
20036                 esac
20037                 ;;
20038         NDBM_File|ndbm_fil)
20039                 case "$i_ndbm" in
20040                 $define)
20041                     case "$osname-$use64bitint" in
20042                     hpux-define)
20043                         case "$libs" in
20044                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20045                         esac
20046                         ;;
20047                     *) avail_ext="$avail_ext $xxx" ;;
20048                     esac
20049                     ;;
20050                 esac
20051                 ;;
20052         ODBM_File|odbm_fil) 
20053                 case "${i_dbm}${i_rpcsvcdbm}" in
20054                 *"${define}"*)
20055                     case "$osname-$use64bitint" in
20056                     hpux-define)
20057                         case "$libs" in
20058                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20059                         esac
20060                         ;;
20061                     *) avail_ext="$avail_ext $xxx" ;;
20062                     esac
20063                     ;;
20064                 esac
20065                 ;;
20066         POSIX|posix)
20067                 case "$useposix" in
20068                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20069                 esac
20070                 ;;
20071         Opcode|opcode)
20072                 case "$useopcode" in
20073                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20074                 esac
20075                 ;;
20076         Socket|socket)
20077                 case "$d_socket" in 
20078                 true|$define|y)
20079                     case "$osname" in
20080                     beos) ;; # not unless BONE
20081                     *) avail_ext="$avail_ext $xxx" ;;
20082                     esac
20083                     ;;
20084                 esac
20085                 ;;
20086         Sys/Syslog|sys/syslog)
20087                 : XXX syslog requires socket
20088                 case "$d_socket" in 
20089                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20090                 esac
20091                 ;;
20092         Thread|thread)
20093                 case "$usethreads" in
20094                 true|$define|y)
20095                         case "$useithreads" in
20096                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20097                         esac
20098                 esac
20099                 ;;
20100         XS/APItest|xs/apitest)
20101                 # This is just for testing.  Skip it unless we have dynamic loading.
20102
20103                 case "$usedl" in
20104                 $define) avail_ext="$avail_ext $xxx" ;;
20105                 esac
20106                 ;;
20107         XS/Typemap|xs/typemap)
20108                 # This is just for testing.  Skip it unless we have dynamic loading.
20109                 case "$usedl" in
20110                 $define) avail_ext="$avail_ext $xxx" ;;
20111                 esac
20112                 ;;
20113         threads|threads/shared)
20114                 # threads and threads::shared are special cases.
20115                 # To stop people from asking "Perl 5.8.0 was supposed
20116                 # to have this new fancy threads implementation but my
20117                 # perl doesn't have it" and from people trying to
20118                 # (re)install the threads module using CPAN.pm and
20119                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20120                 # the threads.pm and threads/shared.pm will always be
20121                 # there, croaking informatively ("you need to rebuild
20122                 # all of Perl with threads, sorry") when threads haven't
20123                 # been compiled in.
20124                 # --jhi
20125                 avail_ext="$avail_ext $xxx"
20126                 ;;
20127         IPC/SysV|ipc/sysv)
20128                 : XXX Do we need a useipcsysv variable here
20129                 case "${d_msg}${d_sem}${d_shm}" in 
20130                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20131                 esac
20132                 ;;
20133         *)      avail_ext="$avail_ext $xxx"
20134                 ;;
20135         esac
20136 done
20137
20138 set X $avail_ext
20139 shift
20140 avail_ext="$*"
20141
20142 case "$onlyextensions" in
20143 '') ;;
20144 *)  keepextensions=''
20145     echo "You have requested that only certains extensions be included..." >&4
20146     for i in $onlyextensions; do
20147         case " $avail_ext " in
20148         *" $i "*)
20149             echo "Keeping extension $i."
20150             keepextensions="$keepextensions $i"
20151             ;;
20152         *) echo "Ignoring extension $i." ;;
20153         esac
20154     done
20155     avail_ext="$keepextensions"
20156     ;;
20157 esac
20158
20159 case "$noextensions" in
20160 '') ;;
20161 *)  keepextensions=''
20162     echo "You have requested that certain extensions be ignored..." >&4
20163     for i in $avail_ext; do
20164         case " $noextensions " in
20165         *" $i "*) echo "Ignoring extension $i." ;;
20166         *) echo "Keeping extension $i.";
20167            keepextensions="$keepextensions $i"
20168            ;;
20169         esac
20170     done
20171     avail_ext="$keepextensions"
20172     ;;
20173 esac
20174
20175 : Now see which nonxs extensions are supported on this system.
20176 : For now assume all are.
20177 nonxs_ext=''
20178 for xxx in $nonxs_extensions ; do
20179         case "$xxx" in
20180         *)      nonxs_ext="$nonxs_ext $xxx"
20181                 ;;
20182         esac
20183 done
20184
20185 set X $nonxs_ext
20186 shift
20187 nonxs_ext="$*"
20188
20189 case $usedl in
20190 $define)
20191         $cat <<EOM
20192 A number of extensions are supplied with $package.  You may choose to
20193 compile these extensions for dynamic loading (the default), compile
20194 them into the $package executable (static loading), or not include
20195 them at all.  Answer "none" to include no extensions.
20196 Note that DynaLoader is always built and need not be mentioned here.
20197
20198 EOM
20199         case "$dynamic_ext" in
20200         '')
20201                 : Exclude those listed in static_ext
20202                 dflt=''
20203                 for xxx in $avail_ext; do
20204                         case " $static_ext " in
20205                         *" $xxx "*) ;;
20206                         *) dflt="$dflt $xxx" ;;
20207                         esac
20208                 done
20209                 set X $dflt
20210                 shift
20211                 dflt="$*"
20212                 ;;
20213         *)      dflt="$dynamic_ext"
20214                 # Perhaps we are reusing an old out-of-date config.sh.
20215                 case "$hint" in
20216                 previous)
20217                         if test X"$dynamic_ext" != X"$avail_ext"; then
20218                                 $cat <<EOM
20219 NOTICE:  Your previous config.sh list may be incorrect. 
20220 The extensions now available to you are 
20221         ${avail_ext}
20222 but the default list from your previous config.sh is
20223         ${dynamic_ext} 
20224
20225 EOM
20226                         fi
20227                         ;;
20228                 esac
20229                 ;;
20230         esac
20231         case "$dflt" in
20232         '')     dflt=none;;
20233         esac
20234         rp="What extensions do you wish to load dynamically?"
20235         . ./myread
20236         case "$ans" in
20237         none) dynamic_ext=' ' ;;
20238         *) dynamic_ext="$ans" ;;
20239         esac
20240
20241         case "$static_ext" in
20242         '')
20243                 : Exclude those already listed in dynamic linking
20244                 dflt=''
20245                 for xxx in $avail_ext; do
20246                         case " $dynamic_ext " in
20247                         *" $xxx "*) ;;
20248                         *) dflt="$dflt $xxx" ;;
20249                         esac
20250                 done
20251                 set X $dflt
20252                 shift
20253                 dflt="$*"
20254                 ;;
20255         *)  dflt="$static_ext" 
20256                 ;;
20257         esac
20258
20259         case "$dflt" in
20260         '')     dflt=none;;
20261         esac
20262         rp="What extensions do you wish to load statically?"
20263         . ./myread
20264         case "$ans" in
20265         none) static_ext=' ' ;;
20266         *) static_ext="$ans" ;;
20267         esac
20268         ;;
20269 *)
20270         $cat <<EOM
20271 A number of extensions are supplied with $package.  Answer "none" 
20272 to include no extensions. 
20273 Note that DynaLoader is always built and need not be mentioned here.
20274
20275 EOM
20276         case "$static_ext" in
20277         '') dflt="$avail_ext" ;;
20278         *)      dflt="$static_ext"
20279                 # Perhaps we are reusing an old out-of-date config.sh.
20280                 case "$hint" in
20281                 previous)
20282                         if test X"$static_ext" != X"$avail_ext"; then
20283                                 $cat <<EOM
20284 NOTICE:  Your previous config.sh list may be incorrect. 
20285 The extensions now available to you are 
20286         ${avail_ext}
20287 but the default list from your previous config.sh is
20288         ${static_ext} 
20289
20290 EOM
20291                         fi
20292                         ;;
20293                 esac
20294                 ;;
20295         esac
20296         : Exclude those that are not xs extensions
20297         case "$dflt" in
20298         '')     dflt=none;;
20299         esac
20300         rp="What extensions do you wish to include?"
20301         . ./myread
20302         case "$ans" in
20303         none) static_ext=' ' ;;
20304         *) static_ext="$ans" ;;
20305         esac
20306         ;;
20307 esac
20308 #        
20309 # Encode is a special case.  If we are building Encode as a static
20310 # extension, we need to explicitly list its subextensions as well.
20311 # For other nested extensions, this is handled automatically by
20312 # the appropriate Makefile.PL.
20313 case " $static_ext " in
20314         *" Encode "*) # Add the subextensions of Encode
20315         cd "$rsrc/ext"
20316         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20317                 static_ext="$static_ext Encode/$xxx"
20318         done
20319         cd "$tdir"
20320         ;;
20321 esac
20322
20323 set X $dynamic_ext $static_ext $nonxs_ext
20324 shift
20325 extensions="$*"
20326
20327 # Sanity check:  We require an extension suitable for use with
20328 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20329 # should show up as failures in the test suite, but it's helpful to
20330 # catch them now.) The 'extensions' list is normally sorted
20331 # alphabetically, so we need to accept either
20332 #    DB_File ... Fcntl ... IO  ....
20333 # or something like
20334 #    Fcntl ... NDBM_File ... IO  ....
20335 case " $extensions"  in
20336 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20337 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20338 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20339 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20340    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20341    ;;
20342 esac
20343
20344 : Remove libraries needed only for extensions
20345 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20346 : The exception is SunOS 4.x, which needs them.
20347 case "${osname}X${osvers}" in
20348 sunos*X4*)
20349     perllibs="$libs"
20350     ;;
20351 *) case "$usedl" in
20352     $define|true|[yY]*)
20353             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20354             shift
20355             perllibs="$*"
20356             ;;
20357     *)  perllibs="$libs"
20358             ;;
20359     esac
20360     ;;
20361 esac
20362
20363 : Remove build directory name from cppstdin so it can be used from
20364 : either the present location or the final installed location.
20365 echo " "
20366 : Get out of the UU directory to get correct path name.
20367 cd ..
20368 case "$cppstdin" in
20369 `pwd`/cppstdin)
20370         echo "Stripping down cppstdin path name"
20371         cppstdin=cppstdin
20372         ;;
20373 esac
20374 cd UU
20375
20376 : end of configuration questions
20377 echo " "
20378 echo "End of configuration questions."
20379 echo " "
20380
20381 : back to where it started
20382 if test -d ../UU; then
20383         cd ..
20384 fi
20385
20386 : configuration may be patched via a 'config.arch' file
20387 if $test -f config.arch; then
20388         echo "I see a config.arch file, loading it."
20389         . ./config.arch
20390 fi
20391
20392 : configuration may be patched via a 'config.over' file
20393 if $test -f config.over; then
20394         echo " "
20395         dflt=y
20396         rp='I see a config.over file.  Do you wish to load it?'
20397         . UU/myread
20398         case "$ans" in
20399         n*) echo "OK, I'll ignore it.";;
20400         *)      . ./config.over
20401                 echo "Configuration override changes have been loaded."
20402                 ;;
20403         esac
20404 fi
20405
20406 : in case they want portability, strip down executable paths
20407 case "$d_portable" in
20408 "$define")
20409         echo " "
20410         echo "Stripping down executable paths..." >&4
20411         for file in $loclist $trylist; do
20412                 eval temp=\$$file
20413                 eval $file=`basename $temp`
20414         done
20415         ;;
20416 esac
20417
20418 : create config.sh file
20419 echo " "
20420 echo "Creating config.sh..." >&4
20421 $spitshell <<EOT >config.sh
20422 $startsh
20423 #
20424 # This file was produced by running the Configure script. It holds all the
20425 # definitions figured out by Configure. Should you modify one of these values,
20426 # do not forget to propagate your changes by running "Configure -der". You may
20427 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20428 #
20429
20430 # Package name      : $package
20431 # Source directory  : $src
20432 # Configuration time: $cf_time
20433 # Configured by     : $cf_by
20434 # Target system     : $myuname
20435
20436 Author='$Author'
20437 Date='$Date'
20438 Header='$Header'
20439 Id='$Id'
20440 Locker='$Locker'
20441 Log='$Log'
20442 Mcc='$Mcc'
20443 RCSfile='$RCSfile'
20444 Revision='$Revision'
20445 Source='$Source'
20446 State='$State'
20447 _a='$_a'
20448 _exe='$_exe'
20449 _o='$_o'
20450 afs='$afs'
20451 afsroot='$afsroot'
20452 alignbytes='$alignbytes'
20453 ansi2knr='$ansi2knr'
20454 aphostname='$aphostname'
20455 api_revision='$api_revision'
20456 api_subversion='$api_subversion'
20457 api_version='$api_version'
20458 api_versionstring='$api_versionstring'
20459 ar='$ar'
20460 archlib='$archlib'
20461 archlibexp='$archlibexp'
20462 archname64='$archname64'
20463 archname='$archname'
20464 archobjs='$archobjs'
20465 asctime_r_proto='$asctime_r_proto'
20466 awk='$awk'
20467 baserev='$baserev'
20468 bash='$bash'
20469 bin='$bin'
20470 binexp='$binexp'
20471 bison='$bison'
20472 byacc='$byacc'
20473 byteorder='$byteorder'
20474 c='$c'
20475 castflags='$castflags'
20476 cat='$cat'
20477 cc='$cc'
20478 cccdlflags='$cccdlflags'
20479 ccdlflags='$ccdlflags'
20480 ccflags='$ccflags'
20481 ccflags_uselargefiles='$ccflags_uselargefiles'
20482 ccname='$ccname'
20483 ccsymbols='$ccsymbols'
20484 ccversion='$ccversion'
20485 cf_by='$cf_by'
20486 cf_email='$cf_email'
20487 cf_time='$cf_time'
20488 charsize='$charsize'
20489 chgrp='$chgrp'
20490 chmod='$chmod'
20491 chown='$chown'
20492 clocktype='$clocktype'
20493 comm='$comm'
20494 compress='$compress'
20495 contains='$contains'
20496 cp='$cp'
20497 cpio='$cpio'
20498 cpp='$cpp'
20499 cpp_stuff='$cpp_stuff'
20500 cppccsymbols='$cppccsymbols'
20501 cppflags='$cppflags'
20502 cpplast='$cpplast'
20503 cppminus='$cppminus'
20504 cpprun='$cpprun'
20505 cppstdin='$cppstdin'
20506 cppsymbols='$cppsymbols'
20507 crypt_r_proto='$crypt_r_proto'
20508 cryptlib='$cryptlib'
20509 csh='$csh'
20510 ctermid_r_proto='$ctermid_r_proto'
20511 ctime_r_proto='$ctime_r_proto'
20512 d_Gconvert='$d_Gconvert'
20513 d_PRIEUldbl='$d_PRIEUldbl'
20514 d_PRIFUldbl='$d_PRIFUldbl'
20515 d_PRIGUldbl='$d_PRIGUldbl'
20516 d_PRIXU64='$d_PRIXU64'
20517 d_PRId64='$d_PRId64'
20518 d_PRIeldbl='$d_PRIeldbl'
20519 d_PRIfldbl='$d_PRIfldbl'
20520 d_PRIgldbl='$d_PRIgldbl'
20521 d_PRIi64='$d_PRIi64'
20522 d_PRIo64='$d_PRIo64'
20523 d_PRIu64='$d_PRIu64'
20524 d_PRIx64='$d_PRIx64'
20525 d_SCNfldbl='$d_SCNfldbl'
20526 d__fwalk='$d__fwalk'
20527 d_access='$d_access'
20528 d_accessx='$d_accessx'
20529 d_aintl='$d_aintl'
20530 d_alarm='$d_alarm'
20531 d_archlib='$d_archlib'
20532 d_asctime_r='$d_asctime_r'
20533 d_atolf='$d_atolf'
20534 d_atoll='$d_atoll'
20535 d_attribut='$d_attribut'
20536 d_bcmp='$d_bcmp'
20537 d_bcopy='$d_bcopy'
20538 d_bsd='$d_bsd'
20539 d_bsdgetpgrp='$d_bsdgetpgrp'
20540 d_bsdsetpgrp='$d_bsdsetpgrp'
20541 d_bzero='$d_bzero'
20542 d_casti32='$d_casti32'
20543 d_castneg='$d_castneg'
20544 d_charvspr='$d_charvspr'
20545 d_chown='$d_chown'
20546 d_chroot='$d_chroot'
20547 d_chsize='$d_chsize'
20548 d_class='$d_class'
20549 d_closedir='$d_closedir'
20550 d_cmsghdr_s='$d_cmsghdr_s'
20551 d_const='$d_const'
20552 d_copysignl='$d_copysignl'
20553 d_crypt='$d_crypt'
20554 d_crypt_r='$d_crypt_r'
20555 d_csh='$d_csh'
20556 d_ctermid_r='$d_ctermid_r'
20557 d_ctime_r='$d_ctime_r'
20558 d_cuserid='$d_cuserid'
20559 d_dbl_dig='$d_dbl_dig'
20560 d_dbminitproto='$d_dbminitproto'
20561 d_difftime='$d_difftime'
20562 d_dirfd='$d_dirfd'
20563 d_dirnamlen='$d_dirnamlen'
20564 d_dlerror='$d_dlerror'
20565 d_dlopen='$d_dlopen'
20566 d_dlsymun='$d_dlsymun'
20567 d_dosuid='$d_dosuid'
20568 d_drand48_r='$d_drand48_r'
20569 d_drand48proto='$d_drand48proto'
20570 d_dup2='$d_dup2'
20571 d_eaccess='$d_eaccess'
20572 d_endgrent='$d_endgrent'
20573 d_endgrent_r='$d_endgrent_r'
20574 d_endhent='$d_endhent'
20575 d_endhostent_r='$d_endhostent_r'
20576 d_endnent='$d_endnent'
20577 d_endnetent_r='$d_endnetent_r'
20578 d_endpent='$d_endpent'
20579 d_endprotoent_r='$d_endprotoent_r'
20580 d_endpwent='$d_endpwent'
20581 d_endpwent_r='$d_endpwent_r'
20582 d_endsent='$d_endsent'
20583 d_endservent_r='$d_endservent_r'
20584 d_eofnblk='$d_eofnblk'
20585 d_eunice='$d_eunice'
20586 d_faststdio='$d_faststdio'
20587 d_fchdir='$d_fchdir'
20588 d_fchmod='$d_fchmod'
20589 d_fchown='$d_fchown'
20590 d_fcntl='$d_fcntl'
20591 d_fcntl_can_lock='$d_fcntl_can_lock'
20592 d_fd_macros='$d_fd_macros'
20593 d_fd_set='$d_fd_set'
20594 d_fds_bits='$d_fds_bits'
20595 d_fgetpos='$d_fgetpos'
20596 d_finite='$d_finite'
20597 d_finitel='$d_finitel'
20598 d_flexfnam='$d_flexfnam'
20599 d_flock='$d_flock'
20600 d_flockproto='$d_flockproto'
20601 d_fork='$d_fork'
20602 d_fp_class='$d_fp_class'
20603 d_fpathconf='$d_fpathconf'
20604 d_fpclass='$d_fpclass'
20605 d_fpclassify='$d_fpclassify'
20606 d_fpclassl='$d_fpclassl'
20607 d_fpos64_t='$d_fpos64_t'
20608 d_frexpl='$d_frexpl'
20609 d_fs_data_s='$d_fs_data_s'
20610 d_fseeko='$d_fseeko'
20611 d_fsetpos='$d_fsetpos'
20612 d_fstatfs='$d_fstatfs'
20613 d_fstatvfs='$d_fstatvfs'
20614 d_fsync='$d_fsync'
20615 d_ftello='$d_ftello'
20616 d_ftime='$d_ftime'
20617 d_getcwd='$d_getcwd'
20618 d_getespwnam='$d_getespwnam'
20619 d_getfsstat='$d_getfsstat'
20620 d_getgrent='$d_getgrent'
20621 d_getgrent_r='$d_getgrent_r'
20622 d_getgrgid_r='$d_getgrgid_r'
20623 d_getgrnam_r='$d_getgrnam_r'
20624 d_getgrps='$d_getgrps'
20625 d_gethbyaddr='$d_gethbyaddr'
20626 d_gethbyname='$d_gethbyname'
20627 d_gethent='$d_gethent'
20628 d_gethname='$d_gethname'
20629 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20630 d_gethostbyname_r='$d_gethostbyname_r'
20631 d_gethostent_r='$d_gethostent_r'
20632 d_gethostprotos='$d_gethostprotos'
20633 d_getitimer='$d_getitimer'
20634 d_getlogin='$d_getlogin'
20635 d_getlogin_r='$d_getlogin_r'
20636 d_getmnt='$d_getmnt'
20637 d_getmntent='$d_getmntent'
20638 d_getnbyaddr='$d_getnbyaddr'
20639 d_getnbyname='$d_getnbyname'
20640 d_getnent='$d_getnent'
20641 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20642 d_getnetbyname_r='$d_getnetbyname_r'
20643 d_getnetent_r='$d_getnetent_r'
20644 d_getnetprotos='$d_getnetprotos'
20645 d_getpagsz='$d_getpagsz'
20646 d_getpbyname='$d_getpbyname'
20647 d_getpbynumber='$d_getpbynumber'
20648 d_getpent='$d_getpent'
20649 d_getpgid='$d_getpgid'
20650 d_getpgrp2='$d_getpgrp2'
20651 d_getpgrp='$d_getpgrp'
20652 d_getppid='$d_getppid'
20653 d_getprior='$d_getprior'
20654 d_getprotobyname_r='$d_getprotobyname_r'
20655 d_getprotobynumber_r='$d_getprotobynumber_r'
20656 d_getprotoent_r='$d_getprotoent_r'
20657 d_getprotoprotos='$d_getprotoprotos'
20658 d_getprpwnam='$d_getprpwnam'
20659 d_getpwent='$d_getpwent'
20660 d_getpwent_r='$d_getpwent_r'
20661 d_getpwnam_r='$d_getpwnam_r'
20662 d_getpwuid_r='$d_getpwuid_r'
20663 d_getsbyname='$d_getsbyname'
20664 d_getsbyport='$d_getsbyport'
20665 d_getsent='$d_getsent'
20666 d_getservbyname_r='$d_getservbyname_r'
20667 d_getservbyport_r='$d_getservbyport_r'
20668 d_getservent_r='$d_getservent_r'
20669 d_getservprotos='$d_getservprotos'
20670 d_getspnam='$d_getspnam'
20671 d_getspnam_r='$d_getspnam_r'
20672 d_gettimeod='$d_gettimeod'
20673 d_gmtime_r='$d_gmtime_r'
20674 d_gnulibc='$d_gnulibc'
20675 d_grpasswd='$d_grpasswd'
20676 d_hasmntopt='$d_hasmntopt'
20677 d_htonl='$d_htonl'
20678 d_ilogbl='$d_ilogbl'
20679 d_index='$d_index'
20680 d_inetaton='$d_inetaton'
20681 d_int64_t='$d_int64_t'
20682 d_isascii='$d_isascii'
20683 d_isfinite='$d_isfinite'
20684 d_isinf='$d_isinf'
20685 d_isnan='$d_isnan'
20686 d_isnanl='$d_isnanl'
20687 d_killpg='$d_killpg'
20688 d_lchown='$d_lchown'
20689 d_ldbl_dig='$d_ldbl_dig'
20690 d_link='$d_link'
20691 d_localtime_r='$d_localtime_r'
20692 d_locconv='$d_locconv'
20693 d_lockf='$d_lockf'
20694 d_longdbl='$d_longdbl'
20695 d_longlong='$d_longlong'
20696 d_lseekproto='$d_lseekproto'
20697 d_lstat='$d_lstat'
20698 d_madvise='$d_madvise'
20699 d_mblen='$d_mblen'
20700 d_mbstowcs='$d_mbstowcs'
20701 d_mbtowc='$d_mbtowc'
20702 d_memchr='$d_memchr'
20703 d_memcmp='$d_memcmp'
20704 d_memcpy='$d_memcpy'
20705 d_memmove='$d_memmove'
20706 d_memset='$d_memset'
20707 d_mkdir='$d_mkdir'
20708 d_mkdtemp='$d_mkdtemp'
20709 d_mkfifo='$d_mkfifo'
20710 d_mkstemp='$d_mkstemp'
20711 d_mkstemps='$d_mkstemps'
20712 d_mktime='$d_mktime'
20713 d_mmap='$d_mmap'
20714 d_modfl='$d_modfl'
20715 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20716 d_modflproto='$d_modflproto'
20717 d_mprotect='$d_mprotect'
20718 d_msg='$d_msg'
20719 d_msg_ctrunc='$d_msg_ctrunc'
20720 d_msg_dontroute='$d_msg_dontroute'
20721 d_msg_oob='$d_msg_oob'
20722 d_msg_peek='$d_msg_peek'
20723 d_msg_proxy='$d_msg_proxy'
20724 d_msgctl='$d_msgctl'
20725 d_msgget='$d_msgget'
20726 d_msghdr_s='$d_msghdr_s'
20727 d_msgrcv='$d_msgrcv'
20728 d_msgsnd='$d_msgsnd'
20729 d_msync='$d_msync'
20730 d_munmap='$d_munmap'
20731 d_mymalloc='$d_mymalloc'
20732 d_nice='$d_nice'
20733 d_nl_langinfo='$d_nl_langinfo'
20734 d_nv_preserves_uv='$d_nv_preserves_uv'
20735 d_off64_t='$d_off64_t'
20736 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20737 d_oldpthreads='$d_oldpthreads'
20738 d_oldsock='$d_oldsock'
20739 d_open3='$d_open3'
20740 d_pathconf='$d_pathconf'
20741 d_pause='$d_pause'
20742 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20743 d_phostname='$d_phostname'
20744 d_pipe='$d_pipe'
20745 d_poll='$d_poll'
20746 d_portable='$d_portable'
20747 d_procselfexe='$d_procselfexe'
20748 d_pthread_atfork='$d_pthread_atfork'
20749 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20750 d_pthread_yield='$d_pthread_yield'
20751 d_pwage='$d_pwage'
20752 d_pwchange='$d_pwchange'
20753 d_pwclass='$d_pwclass'
20754 d_pwcomment='$d_pwcomment'
20755 d_pwexpire='$d_pwexpire'
20756 d_pwgecos='$d_pwgecos'
20757 d_pwpasswd='$d_pwpasswd'
20758 d_pwquota='$d_pwquota'
20759 d_qgcvt='$d_qgcvt'
20760 d_quad='$d_quad'
20761 d_random_r='$d_random_r'
20762 d_readdir64_r='$d_readdir64_r'
20763 d_readdir='$d_readdir'
20764 d_readdir_r='$d_readdir_r'
20765 d_readlink='$d_readlink'
20766 d_readv='$d_readv'
20767 d_recvmsg='$d_recvmsg'
20768 d_rename='$d_rename'
20769 d_rewinddir='$d_rewinddir'
20770 d_rmdir='$d_rmdir'
20771 d_safebcpy='$d_safebcpy'
20772 d_safemcpy='$d_safemcpy'
20773 d_sanemcmp='$d_sanemcmp'
20774 d_sbrkproto='$d_sbrkproto'
20775 d_scalbnl='$d_scalbnl'
20776 d_sched_yield='$d_sched_yield'
20777 d_scm_rights='$d_scm_rights'
20778 d_seekdir='$d_seekdir'
20779 d_select='$d_select'
20780 d_sem='$d_sem'
20781 d_semctl='$d_semctl'
20782 d_semctl_semid_ds='$d_semctl_semid_ds'
20783 d_semctl_semun='$d_semctl_semun'
20784 d_semget='$d_semget'
20785 d_semop='$d_semop'
20786 d_sendmsg='$d_sendmsg'
20787 d_setegid='$d_setegid'
20788 d_seteuid='$d_seteuid'
20789 d_setgrent='$d_setgrent'
20790 d_setgrent_r='$d_setgrent_r'
20791 d_setgrps='$d_setgrps'
20792 d_sethent='$d_sethent'
20793 d_sethostent_r='$d_sethostent_r'
20794 d_setitimer='$d_setitimer'
20795 d_setlinebuf='$d_setlinebuf'
20796 d_setlocale='$d_setlocale'
20797 d_setlocale_r='$d_setlocale_r'
20798 d_setnent='$d_setnent'
20799 d_setnetent_r='$d_setnetent_r'
20800 d_setpent='$d_setpent'
20801 d_setpgid='$d_setpgid'
20802 d_setpgrp2='$d_setpgrp2'
20803 d_setpgrp='$d_setpgrp'
20804 d_setprior='$d_setprior'
20805 d_setproctitle='$d_setproctitle'
20806 d_setprotoent_r='$d_setprotoent_r'
20807 d_setpwent='$d_setpwent'
20808 d_setpwent_r='$d_setpwent_r'
20809 d_setregid='$d_setregid'
20810 d_setresgid='$d_setresgid'
20811 d_setresuid='$d_setresuid'
20812 d_setreuid='$d_setreuid'
20813 d_setrgid='$d_setrgid'
20814 d_setruid='$d_setruid'
20815 d_setsent='$d_setsent'
20816 d_setservent_r='$d_setservent_r'
20817 d_setsid='$d_setsid'
20818 d_setvbuf='$d_setvbuf'
20819 d_sfio='$d_sfio'
20820 d_shm='$d_shm'
20821 d_shmat='$d_shmat'
20822 d_shmatprototype='$d_shmatprototype'
20823 d_shmctl='$d_shmctl'
20824 d_shmdt='$d_shmdt'
20825 d_shmget='$d_shmget'
20826 d_sigaction='$d_sigaction'
20827 d_sigprocmask='$d_sigprocmask'
20828 d_sigsetjmp='$d_sigsetjmp'
20829 d_sockatmark='$d_sockatmark'
20830 d_sockatmarkproto='$d_sockatmarkproto'
20831 d_socket='$d_socket'
20832 d_socklen_t='$d_socklen_t'
20833 d_sockpair='$d_sockpair'
20834 d_socks5_init='$d_socks5_init'
20835 d_sqrtl='$d_sqrtl'
20836 d_srand48_r='$d_srand48_r'
20837 d_srandom_r='$d_srandom_r'
20838 d_sresgproto='$d_sresgproto'
20839 d_sresuproto='$d_sresuproto'
20840 d_statblks='$d_statblks'
20841 d_statfs_f_flags='$d_statfs_f_flags'
20842 d_statfs_s='$d_statfs_s'
20843 d_statvfs='$d_statvfs'
20844 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20845 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20846 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20847 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20848 d_stdio_stream_array='$d_stdio_stream_array'
20849 d_stdiobase='$d_stdiobase'
20850 d_stdstdio='$d_stdstdio'
20851 d_strchr='$d_strchr'
20852 d_strcoll='$d_strcoll'
20853 d_strctcpy='$d_strctcpy'
20854 d_strerrm='$d_strerrm'
20855 d_strerror='$d_strerror'
20856 d_strerror_r='$d_strerror_r'
20857 d_strftime='$d_strftime'
20858 d_strtod='$d_strtod'
20859 d_strtol='$d_strtol'
20860 d_strtold='$d_strtold'
20861 d_strtoll='$d_strtoll'
20862 d_strtoq='$d_strtoq'
20863 d_strtoul='$d_strtoul'
20864 d_strtoull='$d_strtoull'
20865 d_strtouq='$d_strtouq'
20866 d_strxfrm='$d_strxfrm'
20867 d_suidsafe='$d_suidsafe'
20868 d_symlink='$d_symlink'
20869 d_syscall='$d_syscall'
20870 d_syscallproto='$d_syscallproto'
20871 d_sysconf='$d_sysconf'
20872 d_sysernlst='$d_sysernlst'
20873 d_syserrlst='$d_syserrlst'
20874 d_system='$d_system'
20875 d_tcgetpgrp='$d_tcgetpgrp'
20876 d_tcsetpgrp='$d_tcsetpgrp'
20877 d_telldir='$d_telldir'
20878 d_telldirproto='$d_telldirproto'
20879 d_time='$d_time'
20880 d_times='$d_times'
20881 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20882 d_tm_tm_zone='$d_tm_tm_zone'
20883 d_tmpnam_r='$d_tmpnam_r'
20884 d_truncate='$d_truncate'
20885 d_ttyname_r='$d_ttyname_r'
20886 d_tzname='$d_tzname'
20887 d_u32align='$d_u32align'
20888 d_ualarm='$d_ualarm'
20889 d_umask='$d_umask'
20890 d_uname='$d_uname'
20891 d_union_semun='$d_union_semun'
20892 d_unordered='$d_unordered'
20893 d_usleep='$d_usleep'
20894 d_usleepproto='$d_usleepproto'
20895 d_ustat='$d_ustat'
20896 d_vendorarch='$d_vendorarch'
20897 d_vendorbin='$d_vendorbin'
20898 d_vendorlib='$d_vendorlib'
20899 d_vendorscript='$d_vendorscript'
20900 d_vfork='$d_vfork'
20901 d_void_closedir='$d_void_closedir'
20902 d_voidsig='$d_voidsig'
20903 d_voidtty='$d_voidtty'
20904 d_volatile='$d_volatile'
20905 d_vprintf='$d_vprintf'
20906 d_wait4='$d_wait4'
20907 d_waitpid='$d_waitpid'
20908 d_wcstombs='$d_wcstombs'
20909 d_wctomb='$d_wctomb'
20910 d_writev='$d_writev'
20911 d_xenix='$d_xenix'
20912 date='$date'
20913 db_hashtype='$db_hashtype'
20914 db_prefixtype='$db_prefixtype'
20915 db_version_major='$db_version_major'
20916 db_version_minor='$db_version_minor'
20917 db_version_patch='$db_version_patch'
20918 defvoidused='$defvoidused'
20919 direntrytype='$direntrytype'
20920 dlext='$dlext'
20921 dlsrc='$dlsrc'
20922 doublesize='$doublesize'
20923 drand01='$drand01'
20924 drand48_r_proto='$drand48_r_proto'
20925 dynamic_ext='$dynamic_ext'
20926 eagain='$eagain'
20927 ebcdic='$ebcdic'
20928 echo='$echo'
20929 egrep='$egrep'
20930 emacs='$emacs'
20931 endgrent_r_proto='$endgrent_r_proto'
20932 endhostent_r_proto='$endhostent_r_proto'
20933 endnetent_r_proto='$endnetent_r_proto'
20934 endprotoent_r_proto='$endprotoent_r_proto'
20935 endpwent_r_proto='$endpwent_r_proto'
20936 endservent_r_proto='$endservent_r_proto'
20937 eunicefix='$eunicefix'
20938 exe_ext='$exe_ext'
20939 expr='$expr'
20940 extensions='$extensions'
20941 extras='$extras'
20942 fflushNULL='$fflushNULL'
20943 fflushall='$fflushall'
20944 find='$find'
20945 firstmakefile='$firstmakefile'
20946 flex='$flex'
20947 fpossize='$fpossize'
20948 fpostype='$fpostype'
20949 freetype='$freetype'
20950 from='$from'
20951 full_ar='$full_ar'
20952 full_csh='$full_csh'
20953 full_sed='$full_sed'
20954 gccansipedantic='$gccansipedantic'
20955 gccosandvers='$gccosandvers'
20956 gccversion='$gccversion'
20957 getgrent_r_proto='$getgrent_r_proto'
20958 getgrgid_r_proto='$getgrgid_r_proto'
20959 getgrnam_r_proto='$getgrnam_r_proto'
20960 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20961 gethostbyname_r_proto='$gethostbyname_r_proto'
20962 gethostent_r_proto='$gethostent_r_proto'
20963 getlogin_r_proto='$getlogin_r_proto'
20964 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20965 getnetbyname_r_proto='$getnetbyname_r_proto'
20966 getnetent_r_proto='$getnetent_r_proto'
20967 getprotobyname_r_proto='$getprotobyname_r_proto'
20968 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20969 getprotoent_r_proto='$getprotoent_r_proto'
20970 getpwent_r_proto='$getpwent_r_proto'
20971 getpwnam_r_proto='$getpwnam_r_proto'
20972 getpwuid_r_proto='$getpwuid_r_proto'
20973 getservbyname_r_proto='$getservbyname_r_proto'
20974 getservbyport_r_proto='$getservbyport_r_proto'
20975 getservent_r_proto='$getservent_r_proto'
20976 getspnam_r_proto='$getspnam_r_proto'
20977 gidformat='$gidformat'
20978 gidsign='$gidsign'
20979 gidsize='$gidsize'
20980 gidtype='$gidtype'
20981 glibpth='$glibpth'
20982 gmake='$gmake'
20983 gmtime_r_proto='$gmtime_r_proto'
20984 gnulibc_version='$gnulibc_version'
20985 grep='$grep'
20986 groupcat='$groupcat'
20987 groupstype='$groupstype'
20988 gzip='$gzip'
20989 h_fcntl='$h_fcntl'
20990 h_sysfile='$h_sysfile'
20991 hint='$hint'
20992 hostcat='$hostcat'
20993 html1dir='$html1dir'
20994 html1direxp='$html1direxp'
20995 html3dir='$html3dir'
20996 html3direxp='$html3direxp'
20997 i16size='$i16size'
20998 i16type='$i16type'
20999 i32size='$i32size'
21000 i32type='$i32type'
21001 i64size='$i64size'
21002 i64type='$i64type'
21003 i8size='$i8size'
21004 i8type='$i8type'
21005 i_arpainet='$i_arpainet'
21006 i_bsdioctl='$i_bsdioctl'
21007 i_crypt='$i_crypt'
21008 i_db='$i_db'
21009 i_dbm='$i_dbm'
21010 i_dirent='$i_dirent'
21011 i_dld='$i_dld'
21012 i_dlfcn='$i_dlfcn'
21013 i_fcntl='$i_fcntl'
21014 i_float='$i_float'
21015 i_fp='$i_fp'
21016 i_fp_class='$i_fp_class'
21017 i_gdbm='$i_gdbm'
21018 i_grp='$i_grp'
21019 i_ieeefp='$i_ieeefp'
21020 i_inttypes='$i_inttypes'
21021 i_langinfo='$i_langinfo'
21022 i_libutil='$i_libutil'
21023 i_limits='$i_limits'
21024 i_locale='$i_locale'
21025 i_machcthr='$i_machcthr'
21026 i_malloc='$i_malloc'
21027 i_math='$i_math'
21028 i_memory='$i_memory'
21029 i_mntent='$i_mntent'
21030 i_ndbm='$i_ndbm'
21031 i_netdb='$i_netdb'
21032 i_neterrno='$i_neterrno'
21033 i_netinettcp='$i_netinettcp'
21034 i_niin='$i_niin'
21035 i_poll='$i_poll'
21036 i_prot='$i_prot'
21037 i_pthread='$i_pthread'
21038 i_pwd='$i_pwd'
21039 i_rpcsvcdbm='$i_rpcsvcdbm'
21040 i_sfio='$i_sfio'
21041 i_sgtty='$i_sgtty'
21042 i_shadow='$i_shadow'
21043 i_socks='$i_socks'
21044 i_stdarg='$i_stdarg'
21045 i_stddef='$i_stddef'
21046 i_stdlib='$i_stdlib'
21047 i_string='$i_string'
21048 i_sunmath='$i_sunmath'
21049 i_sysaccess='$i_sysaccess'
21050 i_sysdir='$i_sysdir'
21051 i_sysfile='$i_sysfile'
21052 i_sysfilio='$i_sysfilio'
21053 i_sysin='$i_sysin'
21054 i_sysioctl='$i_sysioctl'
21055 i_syslog='$i_syslog'
21056 i_sysmman='$i_sysmman'
21057 i_sysmode='$i_sysmode'
21058 i_sysmount='$i_sysmount'
21059 i_sysndir='$i_sysndir'
21060 i_sysparam='$i_sysparam'
21061 i_sysresrc='$i_sysresrc'
21062 i_syssecrt='$i_syssecrt'
21063 i_sysselct='$i_sysselct'
21064 i_syssockio='$i_syssockio'
21065 i_sysstat='$i_sysstat'
21066 i_sysstatfs='$i_sysstatfs'
21067 i_sysstatvfs='$i_sysstatvfs'
21068 i_systime='$i_systime'
21069 i_systimek='$i_systimek'
21070 i_systimes='$i_systimes'
21071 i_systypes='$i_systypes'
21072 i_sysuio='$i_sysuio'
21073 i_sysun='$i_sysun'
21074 i_sysutsname='$i_sysutsname'
21075 i_sysvfs='$i_sysvfs'
21076 i_syswait='$i_syswait'
21077 i_termio='$i_termio'
21078 i_termios='$i_termios'
21079 i_time='$i_time'
21080 i_unistd='$i_unistd'
21081 i_ustat='$i_ustat'
21082 i_utime='$i_utime'
21083 i_values='$i_values'
21084 i_varargs='$i_varargs'
21085 i_varhdr='$i_varhdr'
21086 i_vfork='$i_vfork'
21087 ignore_versioned_solibs='$ignore_versioned_solibs'
21088 inc_version_list='$inc_version_list'
21089 inc_version_list_init='$inc_version_list_init'
21090 incpath='$incpath'
21091 inews='$inews'
21092 installarchlib='$installarchlib'
21093 installbin='$installbin'
21094 installhtml1dir='$installhtml1dir'
21095 installhtml3dir='$installhtml3dir'
21096 installman1dir='$installman1dir'
21097 installman3dir='$installman3dir'
21098 installprefix='$installprefix'
21099 installprefixexp='$installprefixexp'
21100 installprivlib='$installprivlib'
21101 installscript='$installscript'
21102 installsitearch='$installsitearch'
21103 installsitebin='$installsitebin'
21104 installsitehtml1dir='$installsitehtml1dir'
21105 installsitehtml3dir='$installsitehtml3dir'
21106 installsitelib='$installsitelib'
21107 installsiteman1dir='$installsiteman1dir'
21108 installsiteman3dir='$installsiteman3dir'
21109 installsitescript='$installsitescript'
21110 installstyle='$installstyle'
21111 installusrbinperl='$installusrbinperl'
21112 installvendorarch='$installvendorarch'
21113 installvendorbin='$installvendorbin'
21114 installvendorhtml1dir='$installvendorhtml1dir'
21115 installvendorhtml3dir='$installvendorhtml3dir'
21116 installvendorlib='$installvendorlib'
21117 installvendorman1dir='$installvendorman1dir'
21118 installvendorman3dir='$installvendorman3dir'
21119 installvendorscript='$installvendorscript'
21120 intsize='$intsize'
21121 issymlink='$issymlink'
21122 ivdformat='$ivdformat'
21123 ivsize='$ivsize'
21124 ivtype='$ivtype'
21125 known_extensions='$known_extensions'
21126 ksh='$ksh'
21127 ld='$ld'
21128 lddlflags='$lddlflags'
21129 ldflags='$ldflags'
21130 ldflags_uselargefiles='$ldflags_uselargefiles'
21131 ldlibpthname='$ldlibpthname'
21132 less='$less'
21133 lib_ext='$lib_ext'
21134 libc='$libc'
21135 libperl='$libperl'
21136 libpth='$libpth'
21137 libs='$libs'
21138 libsdirs='$libsdirs'
21139 libsfiles='$libsfiles'
21140 libsfound='$libsfound'
21141 libspath='$libspath'
21142 libswanted='$libswanted'
21143 libswanted_uselargefiles='$libswanted_uselargefiles'
21144 line='$line'
21145 lint='$lint'
21146 lkflags='$lkflags'
21147 ln='$ln'
21148 lns='$lns'
21149 localtime_r_proto='$localtime_r_proto'
21150 locincpth='$locincpth'
21151 loclibpth='$loclibpth'
21152 longdblsize='$longdblsize'
21153 longlongsize='$longlongsize'
21154 longsize='$longsize'
21155 lp='$lp'
21156 lpr='$lpr'
21157 ls='$ls'
21158 lseeksize='$lseeksize'
21159 lseektype='$lseektype'
21160 mail='$mail'
21161 mailx='$mailx'
21162 make='$make'
21163 make_set_make='$make_set_make'
21164 mallocobj='$mallocobj'
21165 mallocsrc='$mallocsrc'
21166 malloctype='$malloctype'
21167 usemallocwrap='$usemallocwrap'
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 usemorebits='$usemorebits'
21384 usemultiplicity='$usemultiplicity'
21385 usemymalloc='$usemymalloc'
21386 usenm='$usenm'
21387 useopcode='$useopcode'
21388 useperlio='$useperlio'
21389 useposix='$useposix'
21390 usereentrant='$usereentrant'
21391 usesfio='$usesfio'
21392 useshrplib='$useshrplib'
21393 usesocks='$usesocks'
21394 usethreads='$usethreads'
21395 usevendorprefix='$usevendorprefix'
21396 usevfork='$usevfork'
21397 usrinc='$usrinc'
21398 uuname='$uuname'
21399 uvXUformat='$uvXUformat'
21400 uvoformat='$uvoformat'
21401 uvsize='$uvsize'
21402 uvtype='$uvtype'
21403 uvuformat='$uvuformat'
21404 uvxformat='$uvxformat'
21405 vendorarch='$vendorarch'
21406 vendorarchexp='$vendorarchexp'
21407 vendorbin='$vendorbin'
21408 vendorbinexp='$vendorbinexp'
21409 vendorhtml1dir='$vendorhtml1dir'
21410 vendorhtml1direxp='$vendorhtml1direxp'
21411 vendorhtml3dir='$vendorhtml3dir'
21412 vendorhtml3direxp='$vendorhtml3direxp'
21413 vendorlib='$vendorlib'
21414 vendorlib_stem='$vendorlib_stem'
21415 vendorlibexp='$vendorlibexp'
21416 vendorman1dir='$vendorman1dir'
21417 vendorman1direxp='$vendorman1direxp'
21418 vendorman3dir='$vendorman3dir'
21419 vendorman3direxp='$vendorman3direxp'
21420 vendorprefix='$vendorprefix'
21421 vendorprefixexp='$vendorprefixexp'
21422 vendorscript='$vendorscript'
21423 vendorscriptexp='$vendorscriptexp'
21424 version='$version'
21425 version_patchlevel_string='$version_patchlevel_string'
21426 versiononly='$versiononly'
21427 vi='$vi'
21428 voidflags='$voidflags'
21429 xlibpth='$xlibpth'
21430 yacc='$yacc'
21431 yaccflags='$yaccflags'
21432 zcat='$zcat'
21433 zip='$zip'
21434 EOT
21435
21436 : Add in command line options if available
21437 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21438
21439 : add special variables
21440 $test -f $src/patchlevel.h && \
21441 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21442 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21443 echo "PERL_CONFIG_SH=true" >>config.sh
21444
21445 : propagate old symbols
21446 if $test -f UU/config.sh; then
21447         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21448         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21449         $sort | $uniq -u >UU/oldsyms
21450         set X `cat UU/oldsyms`
21451         shift
21452         case $# in
21453         0) ;;
21454         *)
21455                 cat <<EOM
21456 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21457 EOM
21458                 echo "# Variables propagated from previous config.sh file." >>config.sh
21459                 for sym in `cat UU/oldsyms`; do
21460                         echo "    Propagating $hint variable "'$'"$sym..."
21461                         eval 'tmp="$'"${sym}"'"'
21462                         echo "$tmp" | \
21463                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21464                 done
21465                 ;;
21466         esac
21467 fi
21468
21469 : Finish up by extracting the .SH files
21470 case "$alldone" in
21471 exit)
21472         $rm -rf UU
21473         echo "Extraction done."
21474         exit 0
21475         ;;
21476 cont)
21477         ;;
21478 '')
21479         dflt=''
21480         nostick=true
21481         $cat <<EOM
21482
21483 If you'd like to make any changes to the config.sh file before I begin
21484 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21485
21486 EOM
21487         rp="Press return or use a shell escape to edit config.sh:"
21488         . UU/myread
21489         nostick=''
21490         case "$ans" in
21491         '') ;;
21492         *) : in case they cannot read
21493                 sh 1>&4 -c "$ans";;
21494         esac
21495         ;;
21496 esac
21497
21498 : if this fails, just run all the .SH files by hand
21499 . ./config.sh
21500
21501 echo " "
21502 exec 1>&4
21503 pwd=`pwd`
21504 . ./UU/extract
21505 cd "$pwd"
21506
21507 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21508         dflt=y
21509         case "$silent" in
21510         true) ;;
21511         *)
21512                 $cat <<EOM
21513
21514 Now you need to generate make dependencies by running "$make depend".
21515 You might prefer to run it in background: "$make depend > makedepend.out &"
21516 It can take a while, so you might not want to run it right now.
21517
21518 EOM
21519                 ;;
21520         esac
21521         rp="Run $make depend now?"
21522         . UU/myread
21523         case "$ans" in
21524         y*)
21525                 $make depend && echo "Now you must run '$make'."
21526                 ;;
21527         *)
21528                 echo "You must run '$make depend' then '$make'."
21529                 ;;
21530         esac
21531 elif test -f [Mm]akefile; then
21532         echo " "
21533         echo "Now you must run a $make."
21534 else
21535         echo "Configure done."
21536 fi
21537
21538 if $test -f Policy.sh; then
21539     $cat <<EOM
21540
21541 If you compile $package on a different machine or from a different object
21542 directory, copy the Policy.sh file from this object directory to the
21543 new one before you run Configure -- this will help you with most of
21544 the policy defaults.
21545
21546 EOM
21547 fi
21548 if $test -f config.msg; then
21549     echo "Hmm.  I also noted the following information while running:"
21550     echo " "
21551     $cat config.msg >&4
21552     $rm -f config.msg
21553 fi
21554 $rm -f kit*isdone ark*isdone
21555 $rm -rf UU
21556
21557 : End of Configure
21558