This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
1. Creating backward compatibility for Configure after patches
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Tue Feb 17 12:34:40 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 usemymalloc=''
946 installman1dir=''
947 man1dir=''
948 man1direxp=''
949 man1ext=''
950 installman3dir=''
951 man3dir=''
952 man3direxp=''
953 man3ext=''
954 modetype=''
955 multiarch=''
956 mydomain=''
957 myhostname=''
958 phostname=''
959 c=''
960 n=''
961 d_eofnblk=''
962 eagain=''
963 o_nonblock=''
964 rd_nodata=''
965 need_va_copy=''
966 netdb_hlen_type=''
967 netdb_host_type=''
968 netdb_name_type=''
969 netdb_net_type=''
970 groupcat=''
971 hostcat=''
972 passcat=''
973 orderlib=''
974 ranlib=''
975 d_perl_otherlibdirs=''
976 otherlibdirs=''
977 package=''
978 spackage=''
979 pager=''
980 api_revision=''
981 api_subversion=''
982 api_version=''
983 api_versionstring=''
984 patchlevel=''
985 perl_patchlevel=''
986 revision=''
987 subversion=''
988 version=''
989 version_patchlevel_string=''
990 perl5=''
991 perladmin=''
992 perlpath=''
993 d_nv_preserves_uv=''
994 i16size=''
995 i16type=''
996 i32size=''
997 i32type=''
998 i64size=''
999 i64type=''
1000 i8size=''
1001 i8type=''
1002 ivsize=''
1003 ivtype=''
1004 nv_preserves_uv_bits=''
1005 nvsize=''
1006 nvtype=''
1007 u16size=''
1008 u16type=''
1009 u32size=''
1010 u32type=''
1011 u64size=''
1012 u64type=''
1013 u8size=''
1014 u8type=''
1015 uvsize=''
1016 uvtype=''
1017 ivdformat=''
1018 nvEUformat=''
1019 nvFUformat=''
1020 nvGUformat=''
1021 nveformat=''
1022 nvfformat=''
1023 nvgformat=''
1024 uvXUformat=''
1025 uvoformat=''
1026 uvuformat=''
1027 uvxformat=''
1028 pidtype=''
1029 prefix=''
1030 prefixexp=''
1031 installprivlib=''
1032 privlib=''
1033 privlibexp=''
1034 prototype=''
1035 ptrsize=''
1036 d_PRIXU64=''
1037 d_PRId64=''
1038 d_PRIi64=''
1039 d_PRIo64=''
1040 d_PRIu64=''
1041 d_PRIx64=''
1042 sPRIXU64=''
1043 sPRId64=''
1044 sPRIi64=''
1045 sPRIo64=''
1046 sPRIu64=''
1047 sPRIx64=''
1048 d_quad=''
1049 quadkind=''
1050 quadtype=''
1051 uquadtype=''
1052 drand01=''
1053 randbits=''
1054 randfunc=''
1055 randseedtype=''
1056 seedfunc=''
1057 installscript=''
1058 scriptdir=''
1059 scriptdirexp=''
1060 selectminbits=''
1061 selecttype=''
1062 sh=''
1063 sig_count=''
1064 sig_name=''
1065 sig_name_init=''
1066 sig_num=''
1067 sig_num_init=''
1068 sig_size=''
1069 installsitearch=''
1070 sitearch=''
1071 sitearchexp=''
1072 installsitebin=''
1073 sitebin=''
1074 sitebinexp=''
1075 installsitehtml1dir=''
1076 sitehtml1dir=''
1077 sitehtml1direxp=''
1078 installsitehtml3dir=''
1079 sitehtml3dir=''
1080 sitehtml3direxp=''
1081 installsitelib=''
1082 sitelib=''
1083 sitelib_stem=''
1084 sitelibexp=''
1085 installsiteman1dir=''
1086 siteman1dir=''
1087 siteman1direxp=''
1088 installsiteman3dir=''
1089 siteman3dir=''
1090 siteman3direxp=''
1091 siteprefix=''
1092 siteprefixexp=''
1093 installsitescript=''
1094 sitescript=''
1095 sitescriptexp=''
1096 sizesize=''
1097 sizetype=''
1098 so=''
1099 socksizetype=''
1100 sharpbang=''
1101 shsharp=''
1102 spitshell=''
1103 src=''
1104 ssizetype=''
1105 startperl=''
1106 startsh=''
1107 stdchar=''
1108 d_stdio_stream_array=''
1109 stdio_stream_array=''
1110 sysman=''
1111 trnl=''
1112 uidformat=''
1113 uidsign=''
1114 uidsize=''
1115 uidtype=''
1116 archname64=''
1117 use64bitall=''
1118 use64bitint=''
1119 usefaststdio=''
1120 ccflags_uselargefiles=''
1121 ldflags_uselargefiles=''
1122 libswanted_uselargefiles=''
1123 uselargefiles=''
1124 uselongdouble=''
1125 usemorebits=''
1126 usemultiplicity=''
1127 nm_opt=''
1128 nm_so_opt=''
1129 runnm=''
1130 usenm=''
1131 useperlio=''
1132 usesocks=''
1133 d_oldpthreads=''
1134 use5005threads=''
1135 useithreads=''
1136 usereentrant=''
1137 usethreads=''
1138 incpath=''
1139 mips_type=''
1140 usrinc=''
1141 d_vendorarch=''
1142 installvendorarch=''
1143 vendorarch=''
1144 vendorarchexp=''
1145 d_vendorbin=''
1146 installvendorbin=''
1147 vendorbin=''
1148 vendorbinexp=''
1149 installvendorhtml1dir=''
1150 vendorhtml1dir=''
1151 vendorhtml1direxp=''
1152 installvendorhtml3dir=''
1153 vendorhtml3dir=''
1154 vendorhtml3direxp=''
1155 d_vendorlib=''
1156 installvendorlib=''
1157 vendorlib=''
1158 vendorlib_stem=''
1159 vendorlibexp=''
1160 installvendorman1dir=''
1161 vendorman1dir=''
1162 vendorman1direxp=''
1163 installvendorman3dir=''
1164 vendorman3dir=''
1165 vendorman3direxp=''
1166 usevendorprefix=''
1167 vendorprefix=''
1168 vendorprefixexp=''
1169 d_vendorscript=''
1170 installvendorscript=''
1171 vendorscript=''
1172 vendorscriptexp=''
1173 versiononly=''
1174 defvoidused=''
1175 voidflags=''
1176 pm_apiversion=''
1177 xs_apiversion=''
1178 yacc=''
1179 yaccflags=''
1180 CONFIG=''
1181
1182 define='define'
1183 undef='undef'
1184 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1185 rmlist=''
1186
1187 : We must find out about Eunice early
1188 eunicefix=':'
1189 if test -f /etc/unixtovms; then
1190         eunicefix=/etc/unixtovms
1191 fi
1192 if test -f /etc/unixtovms.exe; then
1193         eunicefix=/etc/unixtovms.exe
1194 fi
1195
1196 : Set executable suffix now -- needed before hints available
1197 if test -f "/libs/version.library"; then
1198 : Amiga OS
1199     _exe=""
1200 elif test -f "/system/gnu_library/bin/ar.pm"; then
1201 : Stratus VOS
1202     _exe=".pm"
1203 elif test -n "$DJGPP"; then
1204 : DOS DJGPP
1205     _exe=".exe"
1206 elif test -d c:/. -o -n "$is_os2" ; then
1207 : OS/2 or cygwin
1208     _exe=".exe"
1209 fi
1210
1211 i_whoami=''
1212 ccname=''
1213 ccversion=''
1214 perllibs=''
1215 : set useposix=false in your hint file to disable the POSIX extension.
1216 useposix=true
1217 : set useopcode=false in your hint file to disable the Opcode extension.
1218 useopcode=true
1219 : Trailing extension.  Override this in a hint file, if needed.
1220 : Extra object files, if any, needed on this platform.
1221 archobjs=''
1222 archname=''
1223 : Possible local include directories to search.
1224 : Set locincpth to "" in a hint file to defeat local include searches.
1225 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1226 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1227 :
1228 : no include file wanted by default
1229 inclwanted=''
1230
1231 groupstype=''
1232 libnames=''
1233 : change the next line if compiling for Xenix/286 on Xenix/386
1234 xlibpth='/usr/lib/386 /lib/386'
1235 : Possible local library directories to search.
1236 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1237 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1238
1239 : general looking path for locating libraries
1240 glibpth="/lib /usr/lib $xlibpth"
1241 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1242 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1243 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1244
1245 : Private path used by Configure to find libraries.  Its value
1246 : is prepended to libpth. This variable takes care of special
1247 : machines, like the mips.  Usually, it should be empty.
1248 plibpth=''
1249
1250 : default library list
1251 libswanted=''
1252 : some systems want to use only the non-versioned libso:s
1253 ignore_versioned_solibs=''
1254 siteman1dir=''
1255 siteman3dir=''
1256 sitescript=''
1257 archname64=''
1258 ccflags_uselargefiles=''
1259 ldflags_uselargefiles=''
1260 libswanted_uselargefiles=''
1261 : set usemultiplicity on the Configure command line to enable multiplicity.
1262 : set usesocks on the Configure command line to enable socks.
1263 : set usethreads on the Configure command line to enable threads.
1264 usereentrant='undef'
1265 : full support for void wanted by default
1266 defvoidused=15
1267
1268 : List of libraries we want.
1269 : If anyone needs extra -lxxx, put those in a hint file.
1270 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1271 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1272 : We probably want to search /usr/shlib before most other libraries.
1273 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1274 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1275 glibpth="/usr/shlib $glibpth"
1276 : Do not use vfork unless overridden by a hint file.
1277 usevfork=false
1278
1279 : Find the basic shell for Bourne shell scripts
1280 case "$sh" in
1281 '')
1282         case "$SYSTYPE" in
1283         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1284         *) xxx='/bin/sh';;
1285         esac
1286         if test -f "$xxx"; then
1287                 sh="$xxx"
1288         else
1289                 : Build up a list and do a single loop so we can 'break' out.
1290                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1291                 for xxx in sh bash ksh pdksh ash; do
1292                         for p in $pth; do
1293                                 try="$try ${p}/${xxx}"
1294                         done
1295                 done
1296                 for xxx in $try; do
1297                         if test -f "$xxx"; then
1298                                 sh="$xxx";
1299                                 break
1300                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1301                                 sh="$xxx";
1302                                 break
1303                         elif test -f "$xxx.exe"; then
1304                                 sh="$xxx";
1305                                 break
1306                         fi
1307                 done
1308         fi
1309         ;;
1310 esac
1311
1312 case "$sh" in
1313 '')     cat >&2 <<EOM
1314 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1315
1316 Usually it's in /bin/sh.  How did you even get this far?
1317 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1318 we'll try to straighten this all out.
1319 EOM
1320         exit 1
1321         ;;
1322 esac
1323
1324 : see if sh knows # comments
1325 if `$sh -c '#' >/dev/null 2>&1`; then
1326         shsharp=true
1327         spitshell=cat
1328         xcat=/bin/cat
1329         test -f $xcat$_exe || xcat=/usr/bin/cat
1330         if test ! -f $xcat$_exe; then
1331                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1332                         if test -f $p/cat$_exe; then
1333                                 xcat=$p/cat
1334                                 break
1335                         fi
1336                 done
1337                 if test ! -f $xcat$_exe; then
1338                         echo "Can't find cat anywhere!"
1339                         exit 1
1340                 fi
1341         fi
1342         echo "#!$xcat" >sharp
1343         $eunicefix sharp
1344         chmod +x sharp
1345         ./sharp > today
1346         if test -s today; then
1347                 sharpbang='#!'
1348         else
1349                 echo "#! $xcat" > sharp
1350                 $eunicefix sharp
1351                 chmod +x sharp
1352                 ./sharp > today
1353                 if test -s today; then
1354                         sharpbang='#! '
1355                 else
1356                         sharpbang=': use '
1357                 fi
1358         fi
1359 else
1360         echo " "
1361         echo "Your $sh doesn't grok # comments--I will strip them later on."
1362         shsharp=false
1363         cd ..
1364         echo "exec grep -v '^[  ]*#'" >spitshell
1365         chmod +x spitshell
1366         $eunicefix spitshell
1367         spitshell=`pwd`/spitshell
1368         cd UU
1369         echo "I presume that if # doesn't work, #! won't work either!"
1370         sharpbang=': use '
1371 fi
1372 rm -f sharp today
1373
1374 : figure out how to guarantee sh startup
1375 case "$startsh" in
1376 '') startsh=${sharpbang}${sh} ;;
1377 *)
1378 esac
1379 cat >sharp <<EOSS
1380 $startsh
1381 set abc
1382 test "$?abc" != 1
1383 EOSS
1384
1385 chmod +x sharp
1386 $eunicefix sharp
1387 if ./sharp; then
1388         : echo "Yup, it does."
1389 else
1390         echo "Hmm... '$startsh' does not guarantee sh startup..."
1391         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1392 fi
1393 rm -f sharp
1394
1395
1396 : Save command line options in file UU/cmdline.opt for later use in
1397 : generating config.sh.
1398 cat > cmdline.opt <<EOSH
1399 # Configure command line arguments.
1400 config_arg0='$0'
1401 config_args='$*'
1402 config_argc=$#
1403 EOSH
1404 argn=1
1405 args_exp=''
1406 args_sep=''
1407 for arg in "$@"; do
1408         cat >>cmdline.opt <<EOSH
1409 config_arg$argn='$arg'
1410 EOSH
1411         # Extreme backslashitis: replace each ' by '"'"'
1412         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1413 $arg
1414 EOC
1415         arg_exp=`cat cmdl.opt`
1416         args_exp="$args_exp$args_sep'$arg_exp'"
1417         argn=`expr $argn + 1`
1418         args_sep=' '
1419 done
1420 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1421 # used by ./hints/os2.sh
1422 rm -f cmdl.opt
1423
1424 : produce awk script to parse command line options
1425 cat >options.awk <<'EOF'
1426 BEGIN {
1427         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1428
1429         len = length(optstr);
1430         for (i = 1; i <= len; i++) {
1431                 c = substr(optstr, i, 1);
1432                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1433                 if (a == ":") {
1434                         arg[c] = 1;
1435                         i++;
1436                 }
1437                 opt[c] = 1;
1438         }
1439 }
1440 {
1441         expect = 0;
1442         str = $0;
1443         if (substr(str, 1, 1) != "-") {
1444                 printf("'%s'\n", str);
1445                 next;
1446         }
1447         len = length($0);
1448         for (i = 2; i <= len; i++) {
1449                 c = substr(str, i, 1);
1450                 if (!opt[c]) {
1451                         printf("-%s\n", substr(str, i));
1452                         next;
1453                 }
1454                 printf("-%s\n", c);
1455                 if (arg[c]) {
1456                         if (i < len)
1457                                 printf("'%s'\n", substr(str, i + 1));
1458                         else
1459                                 expect = 1;
1460                         next;
1461                 }
1462         }
1463 }
1464 END {
1465         if (expect)
1466                 print "?";
1467 }
1468 EOF
1469
1470 : process the command line options
1471 set X `for arg in "$@"; do echo "X$arg"; done |
1472         sed -e s/X// | awk -f options.awk`
1473 eval "set $*"
1474 shift
1475 rm -f options.awk
1476
1477 : set up default values
1478 fastread=''
1479 reuseval=false
1480 config_sh=''
1481 alldone=''
1482 error=''
1483 silent=''
1484 extractsh=''
1485 override=''
1486 knowitall=''
1487 rm -f optdef.sh posthint.sh
1488 cat >optdef.sh <<EOS
1489 $startsh
1490 EOS
1491
1492
1493 : option parsing
1494 while test $# -gt 0; do
1495         case "$1" in
1496         -d) shift; fastread=yes;;
1497         -e) shift; alldone=cont;;
1498         -f)
1499                 shift
1500                 cd ..
1501                 if test -r "$1"; then
1502                         config_sh="$1"
1503                 else
1504                         echo "$me: cannot read config file $1." >&2
1505                         error=true
1506                 fi
1507                 cd UU
1508                 shift;;
1509         -h) shift; error=true;;
1510         -r) shift; reuseval=true;;
1511         -s) shift; silent=true; realsilent=true;;
1512         -E) shift; alldone=exit;;
1513         -K) shift; knowitall=true;;
1514         -O) shift; override=true;;
1515         -S) shift; silent=true; extractsh=true;;
1516         -D)
1517                 shift
1518                 case "$1" in
1519                 *=)
1520                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1521                         echo "$me: ignoring -D $1" >&2
1522                         ;;
1523                 *=*) echo "$1" | \
1524                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1525                 *) echo "$1='define'" >> optdef.sh;;
1526                 esac
1527                 shift
1528                 ;;
1529         -U)
1530                 shift
1531                 case "$1" in
1532                 *=) echo "$1" >> optdef.sh;;
1533                 *=*)
1534                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1535                         echo "$me: ignoring -U $1" >&2
1536                         ;;
1537                 *) echo "$1='undef'" >> optdef.sh;;
1538                 esac
1539                 shift
1540                 ;;
1541         -A)
1542             shift
1543             xxx=''
1544             yyy="$1"
1545             zzz=''
1546             uuu=undef
1547             case "$yyy" in
1548             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1549                  case "$zzz" in
1550                  *:*) zzz='' ;;
1551                  *)   xxx=append
1552                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1553                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1554                  esac
1555                  ;;
1556             esac
1557             case "$xxx" in
1558             '')  case "$yyy" in
1559                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1560                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1561                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1562                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1563                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1564                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1565                  esac
1566                  ;;       
1567             esac
1568             case "$xxx" in
1569             append)
1570                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1571             clear)
1572                 echo "$yyy=''"                  >> posthint.sh ;;
1573             define)
1574                 case "$zzz" in
1575                 '') zzz=define ;;
1576                 esac
1577                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1578             eval)
1579                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1580             prepend)
1581                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1582             undef)
1583                 case "$zzz" in
1584                 '') zzz="$uuu" ;;
1585                 esac
1586                 echo "$yyy=$zzz"                >> posthint.sh ;;
1587             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1588             esac
1589             shift
1590             ;;
1591         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1592             exit 0;;
1593         --) break;;
1594         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1595         *) break;;
1596         esac
1597 done
1598
1599 case "$error" in
1600 true)
1601         cat >&2 <<EOM
1602 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1603                  [-U symbol] [-U symbol=] [-A command:symbol...]
1604   -d : use defaults for all answers.
1605   -e : go on without questioning past the production of config.sh.
1606   -f : specify an alternate default configuration file.
1607   -h : print this help message and exit (with an error status).
1608   -r : reuse C symbols value if possible (skips costly nm extraction).
1609   -s : silent mode, only echoes questions and essential information.
1610   -D : define symbol to have some value:
1611          -D symbol         symbol gets the value 'define'
1612          -D symbol=value   symbol gets the value 'value'
1613   -E : stop at the end of questions, after having produced config.sh.
1614   -K : do not use unless you know what you are doing.
1615   -O : let -D and -U override definitions from loaded configuration file.
1616   -S : perform variable substitutions on all .SH files (can mix with -f)
1617   -U : undefine symbol:
1618          -U symbol    symbol gets the value 'undef'
1619          -U symbol=   symbol gets completely empty
1620   -A : manipulate symbol after the platform specific hints have been applied:
1621          -A symbol=value                append " "value to symbol
1622          -A append:symbol=value         append value to symbol
1623          -A define:symbol=value         define symbol to have value
1624          -A clear:symbol                define symbol to be ''
1625          -A define:symbol               define symbol to be 'define'
1626          -A eval:symbol=value           define symbol to be eval of value
1627          -A prepend:symbol=value        prepend value to symbol
1628          -A undef:symbol                define symbol to be 'undef'
1629          -A undef:symbol=               define symbol to be ''
1630   -V : print version number and exit (with a zero status).
1631 EOM
1632         exit 1
1633         ;;
1634 esac
1635
1636 : Sanity checks
1637 case "$fastread$alldone" in
1638 yescont|yesexit) ;;
1639 *)
1640         case "$extractsh" in
1641         true) ;;
1642         *)
1643                 if test ! -t 0; then
1644                         echo "Say 'sh Configure', not 'sh <Configure'"
1645                         exit 1
1646                 fi
1647                 ;;
1648         esac
1649         ;;
1650 esac
1651
1652 exec 4>&1
1653 case "$silent" in
1654 true) exec 1>/dev/null;;
1655 esac
1656
1657 : run the defines and the undefines, if any, but leave the file out there...
1658 touch optdef.sh
1659 . ./optdef.sh
1660 : create the posthint manipulation script and leave the file out there...
1661 touch posthint.sh
1662
1663 : set package name
1664 package=perl5
1665 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1666 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1667 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1668 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1669 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1670 esac
1671
1672 : Some greps do not return status, grrr.
1673 echo "grimblepritz" >grimble
1674 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1675         contains=contains
1676 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1677         contains=grep
1678 else
1679         contains=contains
1680 fi
1681 rm -f grimble
1682 : the following should work in any shell
1683 case "$contains" in
1684 contains*)
1685         echo " "
1686         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1687         cat >contains <<'EOSS'
1688 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1689 EOSS
1690 chmod +x contains
1691 esac
1692
1693 : Find the path to the source tree
1694 case "$src" in
1695 '') case "$0" in
1696     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1697          case "$src" in
1698          /*)    ;;
1699          .)     ;;
1700          *)     src=`cd ../$src && pwd` ;;
1701          esac
1702          ;;
1703     *)   src='.';;
1704     esac;;
1705 esac
1706 case "$src" in
1707 '')     src=/
1708         rsrc=/
1709         ;;
1710 /*) rsrc="$src";;
1711 *) rsrc="../$src";;
1712 esac
1713 if test -f $rsrc/Configure && \
1714         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1715 then
1716    : found it, so we are ok.
1717 else
1718         rsrc=''
1719         for src in . .. ../.. ../../.. ../../../..; do
1720                 if test -f ../$src/Configure && \
1721                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1722                 then
1723                         rsrc=../$src
1724                         break
1725                 fi
1726         done
1727 fi
1728 case "$rsrc" in
1729 '')
1730         cat <<EOM >&4
1731
1732 Sorry, I can't seem to locate the source dir for $package.  Please start
1733 Configure with an explicit path -- i.e. /some/path/Configure.
1734
1735 EOM
1736         exit 1
1737         ;;
1738 ../.)   rsrc='..';;
1739 *)
1740         echo " "
1741         echo "Sources for $package found in \"$src\"." >&4
1742         ;;
1743 esac
1744
1745 : script used to extract .SH files with variable substitutions
1746 cat >extract <<'EOS'
1747 PERL_CONFIG_SH=true
1748 echo "Doing variable substitutions on .SH files..."
1749 if test -f MANIFEST; then
1750         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1751 else
1752         echo "(Looking for .SH files under the source directory.)"
1753         set x `(cd "$src"; find . -name "*.SH" -print)`
1754 fi
1755 shift
1756 case $# in
1757 0) set x `(cd "$src"; echo *.SH)`; shift;;
1758 esac
1759 if test ! -f "$src/$1"; then
1760         shift
1761 fi
1762 mkdir_p='
1763 name=$1;
1764 create="";
1765 while test $name; do
1766         if test ! -d "$name"; then
1767                 create="$name $create";
1768                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1769                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1770         else
1771                 name="";
1772         fi;
1773 done;
1774 for file in $create; do
1775         mkdir $file;
1776 done
1777 '
1778 for file in $*; do
1779         case "$src" in
1780         ".")
1781                 case "$file" in
1782                 */*)
1783                         dir=`expr X$file : 'X\(.*\)/'`
1784                         file=`expr X$file : 'X.*/\(.*\)'`
1785                         (cd "$dir" && . ./$file)
1786                         ;;
1787                 *)
1788                         . ./$file
1789                         ;;
1790                 esac
1791                 ;;
1792         *)
1793                 case "$file" in
1794                 */*)
1795                         dir=`expr X$file : 'X\(.*\)/'`
1796                         file=`expr X$file : 'X.*/\(.*\)'`
1797                         (set x $dir; shift; eval $mkdir_p)
1798                         sh <"$src/$dir/$file"
1799                         ;;
1800                 *)
1801                         sh <"$src/$file"
1802                         ;;
1803                 esac
1804                 ;;
1805         esac
1806 done
1807 if test -f "$src/config_h.SH"; then
1808         if test ! -f config.h; then
1809         : oops, they left it out of MANIFEST, probably, so do it anyway.
1810         . "$src/config_h.SH"
1811         fi
1812 fi
1813 EOS
1814
1815 : extract files and exit if asked to do so
1816 case "$extractsh" in
1817 true)
1818         case "$realsilent" in
1819         true) ;;
1820         *) exec 1>&4;;
1821         esac
1822         case "$config_sh" in
1823         '') config_sh='config.sh';;
1824         esac
1825         echo " "
1826         echo "Fetching answers from $config_sh..."
1827         cd ..
1828         . $config_sh
1829         test "$override" && . ./optdef.sh
1830         echo " "
1831         . UU/extract
1832         rm -rf UU
1833         echo "Extraction done."
1834         exit 0
1835         ;;
1836 esac
1837
1838 : Eunice requires " " instead of "", can you believe it
1839 echo " "
1840 : Here we go...
1841 echo "Beginning of configuration questions for $package."
1842
1843 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1844
1845 : first determine how to suppress newline on echo command
1846 echo " "
1847 echo "Checking echo to see how to suppress newlines..."
1848 (echo "hi there\c" ; echo " ") >.echotmp
1849 if $contains c .echotmp >/dev/null 2>&1 ; then
1850         echo "...using -n."
1851         n='-n'
1852         c=''
1853 else
1854         cat <<'EOM'
1855 ...using \c
1856 EOM
1857         n=''
1858         c='\c'
1859 fi
1860 echo $n "The star should be here-->$c"
1861 echo '*'
1862 rm -f .echotmp
1863
1864 : Now test for existence of everything in MANIFEST
1865 echo " "
1866 if test -f "$rsrc/MANIFEST"; then
1867         echo "First let's make sure your kit is complete.  Checking..." >&4
1868         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1869         rm -f missing
1870         tmppwd=`pwd`
1871         for filelist in x??; do
1872                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1873         done
1874         if test -s missing; then
1875                 cat missing >&4
1876                 cat >&4 <<'EOM'
1877
1878 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1879
1880 You have the option of continuing the configuration process, despite the
1881 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1882 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1883 and contact the author (perlbug@perl.org).
1884
1885 EOM
1886                 echo $n "Continue? [n] $c" >&4
1887                 read ans
1888                 case "$ans" in
1889                 y*)
1890                         echo "Continuing..." >&4
1891                         rm -f missing
1892                         ;;
1893                 *)
1894                         echo "ABORTING..." >&4
1895                         kill $$
1896                         ;;
1897                 esac
1898         else
1899                 echo "Looks good..."
1900         fi
1901 else
1902         echo "There is no MANIFEST file.  I hope your kit is complete !"
1903 fi
1904 rm -f missing x??
1905
1906 echo " "
1907 : Find the appropriate value for a newline for tr
1908 if test -n "$DJGPP"; then
1909        trnl='\012'
1910 fi
1911 if test X"$trnl" = X; then
1912         case "`echo foo|tr '\n' x 2>/dev/null`" in
1913         foox) trnl='\n' ;;
1914         esac
1915 fi
1916 if test X"$trnl" = X; then
1917         case "`echo foo|tr '\012' x 2>/dev/null`" in
1918         foox) trnl='\012' ;;
1919         esac
1920 fi
1921 if test X"$trnl" = X; then
1922        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1923        fooxy) trnl='\n\r' ;;
1924        esac
1925 fi
1926 if test X"$trnl" = X; then
1927         cat <<EOM >&2
1928
1929 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1930
1931 EOM
1932         exit 1
1933 fi
1934
1935 : compute the number of columns on the terminal for proper question formatting
1936 case "$COLUMNS" in
1937 '') COLUMNS='80';;
1938 esac
1939
1940 : set up the echo used in my read
1941 myecho="case \"\$xxxm\" in
1942 '') echo $n \"\$rp $c\" >&4;;
1943 *) case \"\$rp\" in
1944         '') echo $n \"[\$xxxm] $c\";;
1945         *)
1946                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1947                         echo \"\$rp\" >&4
1948                         echo $n \"[\$xxxm] $c\" >&4
1949                 else
1950                         echo $n \"\$rp [\$xxxm] $c\" >&4
1951                 fi
1952                 ;;
1953         esac;;
1954 esac"
1955
1956 : now set up to do reads with possible shell escape and default assignment
1957 cat <<EOSC >myread
1958 $startsh
1959 xxxm=\$dflt
1960 $myecho
1961 ans='!'
1962 case "\$fastread" in
1963 yes) case "\$dflt" in
1964         '') ;;
1965         *) ans='';
1966                 case "\$silent-\$rp" in
1967                 true-) ;;
1968                 *) echo " " >&4;;
1969                 esac;;
1970         esac;;
1971 *) case "\$silent" in
1972         true) case "\$rp" in
1973                 '') ans='';;
1974                 esac;;
1975         esac;;
1976 esac
1977 while expr "X\$ans" : "X!" >/dev/null; do
1978         read answ
1979         set x \$xxxm
1980         shift
1981         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1982         case  "\$answ" in
1983         "!")
1984                 sh 1>&4
1985                 echo " "
1986                 $myecho
1987                 ;;
1988         !*)
1989                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1990                 shift
1991                 sh 1>&4 -c "\$*"
1992                 echo " "
1993                 $myecho
1994                 ;;
1995         "\$ans")
1996                 case "\$ans" in
1997                 \\&*)
1998                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1999                         shift
2000                         case "\$1" in
2001                         -d)
2002                                 fastread=yes
2003                                 echo "(OK, I'll run with -d after this question.)" >&4
2004                                 ;;
2005                         -*)
2006                                 echo "*** Sorry, \$1 not supported yet." >&4
2007                                 ;;
2008                         esac
2009                         $myecho
2010                         ans=!
2011                         ;;
2012                 esac;;
2013         *)
2014                 case "\$aok" in
2015                 y)
2016                         echo "*** Substitution done -- please confirm."
2017                         xxxm="\$ans"
2018                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2019                         xxxm="\$ans"
2020                         ans=!
2021                         ;;
2022                 *)
2023                         echo "*** Error -- try again."
2024                         ans=!
2025                         ;;
2026                 esac
2027                 $myecho
2028                 ;;
2029         esac
2030         case "\$ans\$xxxm\$nostick" in
2031         '')
2032                 ans=!
2033                 $myecho
2034                 ;;
2035         esac
2036 done
2037 case "\$ans" in
2038 '') ans="\$xxxm";;
2039 esac
2040 EOSC
2041
2042 : create .config dir to save info across Configure sessions
2043 test -d ../.config || mkdir ../.config
2044 cat >../.config/README <<EOF
2045 This directory created by Configure to save information that should
2046 persist across sessions for $package.
2047
2048 You may safely delete it if you wish.
2049 EOF
2050
2051 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2052 case "$usedevel" in
2053 $define|true|[yY]*) ;;
2054 *) case "$xversion" in
2055    *[13579])
2056         cat >&4 <<EOH
2057 *** WHOA THERE!!! ***
2058
2059     This is an UNSTABLE DEVELOPMENT release.
2060     The version of this $package distribution is $xversion, that is, odd,
2061     (as opposed to even) and that signifies a development release.
2062     If you want a maintenance release, you want an even-numbered version.
2063
2064     Do ***NOT*** install this into production use.
2065     Data corruption and crashes are possible.
2066
2067     It is most seriously suggested that you do not continue any further
2068     unless you want to help in developing and debugging Perl.
2069
2070     If you *still* want to build perl, you can answer 'y' now,
2071     or pass -Dusedevel to Configure.
2072
2073 EOH
2074         rp='Do you really want to continue?'
2075         dflt='n'
2076         . ./myread
2077         case "$ans" in
2078         [yY]) echo >&4 "Okay, continuing."
2079               usedevel="$define" ;;
2080         *) echo >&4 "Okay, bye."
2081            exit 1
2082            ;;
2083         esac
2084         ;;
2085     esac
2086     ;;
2087 esac
2088 case "$usedevel" in
2089 $define|true|[yY]*)
2090         case "$versiononly" in
2091         '') versiononly="$define" ;;
2092         esac
2093         case "$installusrbinperl" in
2094         '') installusrbinperl="$undef" ;;
2095         esac
2096         ;;
2097 esac
2098
2099 : general instructions
2100 needman=true
2101 firsttime=true
2102 user=`(logname) 2>/dev/null`
2103 case "$user" in
2104 '') user=`whoami 2>&1`;;
2105 esac
2106 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2107         firsttime=false
2108         echo " "
2109         rp='Would you like to see the instructions?'
2110         dflt=n
2111         . ./myread
2112         case "$ans" in
2113         [yY]*) ;;
2114         *) needman=false;;
2115         esac
2116 fi
2117 if $needman; then
2118         cat <<EOH
2119
2120 This installation shell script will examine your system and ask you questions
2121 to determine how the perl5 package should be installed. If you get
2122 stuck on a question, you may use a ! shell escape to start a subshell or
2123 execute a command.  Many of the questions will have default answers in square
2124 brackets; typing carriage return will give you the default.
2125
2126 On some of the questions which ask for file or directory names you are allowed
2127 to use the ~name construct to specify the login directory belonging to "name",
2128 even if you don't have a shell which knows about that.  Questions where this is
2129 allowed will be marked "(~name ok)".
2130
2131 EOH
2132         rp=''
2133         dflt='Type carriage return to continue'
2134         . ./myread
2135         cat <<'EOH'
2136
2137 The prompter used in this script allows you to use shell variables and
2138 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2139 in the default answer, as if the default line was a set of arguments given to a
2140 script shell.  This means you may also use $* to repeat the whole default line,
2141 so you do not have to re-type everything to add something to the default.
2142
2143 Everytime there is a substitution, you will have to confirm.  If there is an
2144 error (e.g. an unmatched backtick), the default answer will remain unchanged
2145 and you will be prompted again.
2146
2147 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2148 the questions and use the computed defaults (or the previous answers if there
2149 was already a config.sh file). Type 'Configure -h' for a list of options.
2150 You may also start interactively and then answer '& -d' at any prompt to turn
2151 on the non-interactive behaviour for the remainder of the execution.
2152
2153 EOH
2154         . ./myread
2155         cat <<EOH
2156
2157 Much effort has been expended to ensure that this shell script will run on any
2158 Unix system.  If despite that it blows up on yours, your best bet is to edit
2159 Configure and run it again.  If you can't run Configure for some reason,
2160 you'll have to generate a config.sh file by hand.  Whatever problems you
2161 have, let me (perlbug@perl.org) know how I blew it.
2162
2163 This installation script affects things in two ways:
2164
2165 1) it may do direct variable substitutions on some of the files included
2166    in this kit.
2167 2) it builds a config.h file for inclusion in C programs.  You may edit
2168    any of these files as the need arises after running this script.
2169
2170 If you make a mistake on a question, there is no easy way to back up to it
2171 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2172 files.  Configure will offer to let you do this before it runs the SH files.
2173
2174 EOH
2175         dflt='Type carriage return to continue'
2176         . ./myread
2177         case "$firsttime" in
2178         true) echo $user >>../.config/instruct;;
2179         esac
2180 fi
2181
2182 : find out where common programs are
2183 echo " "
2184 echo "Locating common programs..." >&4
2185 cat <<EOSC >loc
2186 $startsh
2187 case \$# in
2188 0) exit 1;;
2189 esac
2190 thing=\$1
2191 shift
2192 dflt=\$1
2193 shift
2194 for dir in \$*; do
2195         case "\$thing" in
2196         .)
2197         if test -d \$dir/\$thing; then
2198                 echo \$dir
2199                 exit 0
2200         fi
2201         ;;
2202         *)
2203         for thisthing in \$dir/\$thing; do
2204                 : just loop through to pick last item
2205         done
2206         if test -f \$thisthing; then
2207                 echo \$thisthing
2208                 exit 0
2209         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2210                 echo \$thisthing
2211                 exit 0
2212         elif test -f \$dir/\$thing.exe; then
2213                 if test -n "$DJGPP"; then
2214                         echo \$dir/\$thing.exe
2215                 elif test "$eunicefix" != ":"; then
2216                         : on Eunice apparently
2217                         echo \$dir/\$thing
2218                         exit 0
2219                 fi
2220                 exit 0
2221         fi
2222         ;;
2223         esac
2224 done
2225 echo \$dflt
2226 exit 1
2227 EOSC
2228 chmod +x loc
2229 $eunicefix loc
2230 loclist="
2231 awk
2232 cat
2233 chmod
2234 comm
2235 cp
2236 echo
2237 expr
2238 grep
2239 ls
2240 mkdir
2241 rm
2242 sed
2243 sort
2244 touch
2245 tr
2246 uniq
2247 "
2248 trylist="
2249 Mcc
2250 ar
2251 bison
2252 byacc
2253 cpp
2254 csh
2255 date
2256 egrep
2257 gmake
2258 gzip
2259 less
2260 ln
2261 make
2262 more
2263 nm
2264 nroff
2265 pg
2266 test
2267 uname
2268 zip
2269 "
2270 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2271 pth="$pth /lib /usr/lib"
2272 for file in $loclist; do
2273         eval xxx=\$$file
2274         case "$xxx" in
2275         /*|?:[\\/]*)
2276                 if test -f "$xxx"; then
2277                         : ok
2278                 else
2279                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2280                         xxx=`./loc $file $file $pth`
2281                 fi
2282                 ;;
2283         '') xxx=`./loc $file $file $pth`;;
2284         *) xxx=`./loc $xxx $xxx $pth`;;
2285         esac
2286         eval $file=$xxx$_exe
2287         eval _$file=$xxx
2288         case "$xxx" in
2289         /*)
2290                 echo $file is in $xxx.
2291                 ;;
2292         ?:[\\/]*)
2293                 echo $file is in $xxx.
2294                 ;;
2295         *)
2296                 echo "I don't know where '$file' is, and my life depends on it." >&4
2297                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2298                 exit 1
2299                 ;;
2300         esac
2301 done
2302 echo " "
2303 echo "Don't worry if any of the following aren't found..."
2304 say=offhand
2305 for file in $trylist; do
2306         eval xxx=\$$file
2307         case "$xxx" in
2308         /*|?:[\\/]*)
2309                 if test -f "$xxx"; then
2310                         : ok
2311                 else
2312                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2313                         xxx=`./loc $file $file $pth`
2314                 fi
2315                 ;;
2316         '') xxx=`./loc $file $file $pth`;;
2317         *) xxx=`./loc $xxx $xxx $pth`;;
2318         esac
2319         eval $file=$xxx$_exe
2320         eval _$file=$xxx
2321         case "$xxx" in
2322         /*)
2323                 echo $file is in $xxx.
2324                 ;;
2325         ?:[\\/]*)
2326                 echo $file is in $xxx.
2327                 ;;
2328         *)
2329                 echo "I don't see $file out there, $say."
2330                 say=either
2331                 ;;
2332         esac
2333 done
2334 case "$egrep" in
2335 egrep)
2336         echo "Substituting grep for egrep."
2337         egrep=$grep
2338         _egrep=$grep
2339         ;;
2340 esac
2341 case "$ln" in
2342 ln)
2343         echo "Substituting cp for ln."
2344         ln=$cp
2345         _ln=$cp
2346         ;;
2347 esac
2348 case "$make" in
2349 make)   
2350         case "$gmake" in
2351         gmake)
2352         echo "I can't find make or gmake, and my life depends on it." >&4
2353         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2354         exit 1
2355         ;;
2356         esac
2357         ;;
2358 esac    
2359 case "$gmake" in
2360 gmake)  ;;
2361 *)      # We can't have osname yet.
2362         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2363                 # Assume that gmake, if found, is definitely GNU make
2364                 # and prefer it over the system make.
2365                 echo "Substituting gmake for make."
2366                 make=$gmake
2367                 _make=$gmake
2368         fi
2369         ;;
2370 esac
2371 case "$test" in
2372 test)
2373         echo "Hopefully test is built into your sh."
2374         ;;
2375 *)
2376         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2377                 echo "Using the test built into your sh."
2378                 test=test
2379                 _test=test
2380         fi
2381         ;;
2382 esac
2383 case "$echo" in
2384 echo)
2385         echo "Hopefully echo is built into your sh."
2386         ;;
2387 '') ;;
2388 *)
2389         echo " "
2390 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2391         $echo $n "hi there$c" >foo1
2392         echo $n "hi there$c" >foo2
2393         if cmp foo1 foo2 >/dev/null 2>&1; then
2394                 echo "They are compatible.  In fact, they may be identical."
2395         else
2396                 case "$n" in
2397                 '-n') n='' c='\c';;
2398                 *) n='-n' c='';;
2399                 esac
2400                 cat <<FOO
2401 They are not compatible!  You are probably running ksh on a non-USG system.
2402 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2403 have echo built in and we may have to run some Bourne shell scripts.  That
2404 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2405
2406 FOO
2407                 $echo $n "The star should be here-->$c"
2408                 $echo "*"
2409         fi
2410         $rm -f foo1 foo2
2411         ;;
2412 esac
2413
2414 cat <<EOS >trygcc
2415 $startsh
2416 EOS
2417 cat <<'EOSC' >>trygcc
2418 case "$cc" in
2419 '') ;;
2420 *)  $rm -f try try.*
2421     $cat >try.c <<EOM
2422 int main(int argc, char *argv[]) {
2423   return 0;
2424 }
2425 EOM
2426     if $cc -o try $ccflags $ldflags try.c; then
2427        :
2428     else
2429         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2430         despair=yes
2431         trygcc=yes
2432         case "$cc" in
2433         *gcc*) trygcc=no ;;
2434         esac
2435         case "`$cc -v -c try.c 2>&1`" in
2436         *gcc*) trygcc=no ;;
2437         esac
2438         if $test X"$trygcc" = Xyes; then
2439             if gcc -o try -c try.c; then
2440                 echo " "
2441                 echo "You seem to have a working gcc, though." >&4
2442                 rp="Would you like to use it?"
2443                 dflt=y
2444                 if $test -f myread; then
2445                     . ./myread
2446                 else
2447                     if $test -f UU/myread; then
2448                         . ./UU/myread
2449                     else
2450                         echo "Cannot find myread, sorry.  Aborting." >&2
2451                         exit 1
2452                     fi
2453                 fi  
2454                 case "$ans" in
2455                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2456                        if $test -f usethreads.cbu; then
2457                            $cat >&4 <<EOM 
2458
2459 *** However, any setting of the C compiler flags (e.g. for thread support)
2460 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2461 *** (together with e.g. -Dusethreads).
2462
2463 EOM
2464                        fi;;
2465                 esac
2466             fi
2467         fi
2468     fi
2469     $rm -f try try.*
2470     ;;
2471 esac
2472 EOSC
2473
2474 cat <<EOS >checkcc
2475 $startsh
2476 EOS
2477 cat <<'EOSC' >>checkcc
2478 case "$cc" in        
2479 '') ;;
2480 *)  $rm -f try try.*              
2481     $cat >try.c <<EOM
2482 int main(int argc, char *argv[]) {
2483   return 0;
2484 }
2485 EOM
2486     if $cc -o try $ccflags $ldflags try.c; then
2487        :
2488     else
2489         if $test X"$despair" = Xyes; then
2490            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2491         fi
2492         $cat >&4 <<EOM         
2493 You need to find a working C compiler.
2494 Either (purchase and) install the C compiler supplied by your OS vendor,
2495 or for a free C compiler try http://gcc.gnu.org/
2496 I cannot continue any further, aborting.
2497 EOM
2498         exit 1
2499     fi
2500     $rm -f try try.*
2501     ;;
2502 esac
2503 EOSC
2504
2505 : determine whether symbolic links are supported
2506 echo " "
2507 $touch blurfl
2508 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2509         echo "Symbolic links are supported." >&4
2510         lns="$ln -s"
2511 else
2512         echo "Symbolic links are NOT supported." >&4
2513         lns="$ln"
2514 fi
2515 $rm -f blurfl sym
2516
2517 : determine whether symbolic links are supported
2518 echo " "
2519 case "$lns" in
2520 *"ln"*" -s")
2521         echo "Checking how to test for symbolic links..." >&4
2522         $lns blurfl sym
2523         if $test "X$issymlink" = X; then
2524                 case "$newsh" in
2525                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2526                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2527                 esac
2528                 if test $? = 0; then
2529                         issymlink="test -h"
2530                 else
2531                         echo "Your builtin 'test -h' may be broken." >&4
2532                         case "$test" in
2533                         /*)     ;;
2534                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2535                                 for p in $pth
2536                                 do
2537                                         if test -f "$p/$test"; then
2538                                                 test="$p/$test"
2539                                                 break
2540                                         fi
2541                                 done
2542                                 ;;
2543                         esac
2544                         case "$test" in
2545                         /*)
2546                                 echo "Trying external '$test -h'." >&4
2547                                 issymlink="$test -h"
2548                                 if $test ! -h sym >/dev/null 2>&1; then
2549                                         echo "External '$test -h' is broken, too." >&4
2550                                         issymlink=''
2551                                 fi
2552                                 ;;
2553                         *)      issymlink='' ;;
2554                         esac
2555                 fi              
2556         fi
2557         if $test "X$issymlink" = X; then
2558                 if $test -L sym 2>/dev/null; then
2559                         issymlink="$test -L"
2560                         echo "The builtin '$test -L' worked." >&4
2561                 fi
2562         fi
2563         if $test "X$issymlink" != X; then
2564                 echo "You can test for symbolic links with '$issymlink'." >&4
2565         else
2566                 echo "I do not know how you can test for symbolic links." >&4
2567         fi
2568         $rm -f blurfl sym
2569         ;;
2570 *)      echo "No symbolic links, so not testing for their testing..." >&4
2571         ;;
2572 esac
2573 echo " "
2574
2575
2576 case "$mksymlinks" in
2577 $define|true|[yY]*)
2578         case "$src" in
2579         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2580                 exit 1
2581                 ;;
2582         *)      case "$lns:$issymlink" in
2583                 *"ln"*" -s:"*"test -"?)
2584                         echo "Creating the symbolic links..." >&4
2585                         echo "(First creating the subdirectories...)" >&4
2586                         cd ..
2587                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2588                                 read directory
2589                                 test -z "$directory" && break
2590                                 mkdir -p $directory
2591                         done
2592                         # Sanity check 1.
2593                         if test ! -d t/base; then
2594                                 echo "Failed to create the subdirectories.  Aborting." >&4
2595                                 exit 1
2596                         fi
2597                         echo "(Then creating the symlinks...)" >&4
2598                         awk '{print $1}' $src/MANIFEST | while true; do
2599                                 read filename
2600                                 test -z "$filename" && break
2601                                 if test -f $filename; then
2602                                         if $issymlink $filename; then
2603                                                 rm -f $filename
2604                                         fi
2605                                 fi
2606                                 if test -f $filename; then
2607                                         echo "$filename already exists, not symlinking."
2608                                 else
2609                                         ln -s $src/$filename $filename
2610                                 fi
2611                         done
2612                         # Sanity check 2.
2613                         if test ! -f t/base/lex.t; then
2614                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2615                                 exit 1
2616                         fi
2617                         cd UU
2618                         ;;
2619                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2620                         ;;
2621                 esac
2622                 ;;
2623         esac
2624         ;;
2625 esac
2626
2627
2628 case "$usecrosscompile" in
2629 $define|true|[yY]*)
2630         $echo "Cross-compiling..."
2631         croak=''
2632         case "$cc" in
2633         *-*-gcc) # A cross-compiling gcc, probably.
2634             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2635             ar=$targetarch-ar
2636             # leave out ld, choosing it is more complex
2637             nm=$targetarch-nm
2638             ranlib=$targetarch-ranlib
2639             $echo 'extern int foo;' > try.c
2640             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2641             shift
2642             if $test $# -gt 0; then
2643                 incpth="$incpth $*"
2644                 incpth="`$echo $incpth|$sed 's/^ //'`"
2645                 echo "Guessing incpth '$incpth'." >&4
2646                 for i in $*; do
2647                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2648                     if $test -d $j; then
2649                         libpth="$libpth $j"
2650                     fi
2651                 done   
2652                 libpth="`$echo $libpth|$sed 's/^ //'`"
2653                 echo "Guessing libpth '$libpth'." >&4
2654             fi
2655             $rm -f try.c
2656             ;;
2657         esac
2658         case "$targetarch" in
2659         '') echo "Targetarch not defined." >&4; croak=y ;;
2660         *)  echo "Using targetarch $targetarch." >&4 ;;
2661         esac
2662         case "$incpth" in
2663         '') echo "Incpth not defined." >&4; croak=y ;;
2664         *)  echo "Using incpth '$incpth'." >&4 ;;
2665         esac
2666         case "$libpth" in
2667         '') echo "Libpth not defined." >&4; croak=y ;;
2668         *)  echo "Using libpth '$libpth'." >&4 ;;
2669         esac
2670         case "$usrinc" in
2671         '') for i in $incpth; do
2672                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2673                     usrinc=$i
2674                     echo "Guessing usrinc $usrinc." >&4
2675                     break
2676                 fi
2677             done
2678             case "$usrinc" in
2679             '') echo "Usrinc not defined." >&4; croak=y ;;
2680             esac
2681             ;;
2682         *)  echo "Using usrinc $usrinc." >&4 ;;
2683         esac
2684         case "$targethost" in
2685         '') echo "Targethost not defined." >&4; croak=y ;;
2686         *)  echo "Using targethost $targethost." >&4
2687         esac
2688         locincpth=' '
2689         loclibpth=' '
2690         case "$croak" in
2691         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2692         esac
2693         case "$src" in
2694         /*) run=$src/Cross/run
2695             targetmkdir=$src/Cross/mkdir
2696             to=$src/Cross/to
2697             from=$src/Cross/from
2698             ;;
2699         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2700             run=$pwd/Cross/run
2701             targetmkdir=$pwd/Cross/mkdir
2702             to=$pwd/Cross/to
2703             from=$pwd/Cross/from
2704             ;;
2705         esac
2706         case "$targetrun" in
2707         '') targetrun=ssh ;;
2708         esac
2709         case "$targetto" in
2710         '') targetto=scp ;;
2711         esac
2712         case "$targetfrom" in
2713         '') targetfrom=scp ;;
2714         esac
2715         run=$run-$targetrun
2716         to=$to-$targetto
2717         from=$from-$targetfrom
2718         case "$targetdir" in
2719         '')  targetdir=/tmp
2720              echo "Guessing targetdir $targetdir." >&4
2721              ;;
2722         esac
2723         case "$targetuser" in
2724         '')  targetuser=root
2725              echo "Guessing targetuser $targetuser." >&4
2726              ;;
2727         esac
2728         case "$targetfrom" in
2729         scp)    q=-q ;;
2730         *)      q='' ;;
2731         esac
2732         case "$targetrun" in
2733         ssh|rsh)
2734             cat >$run <<EOF
2735 #!/bin/sh
2736 case "\$1" in
2737 -cwd)
2738   shift
2739   cwd=\$1
2740   shift
2741   ;;
2742 esac
2743 case "\$cwd" in
2744 '') cwd=$targetdir ;;
2745 esac
2746 exe=\$1
2747 shift
2748 if $test ! -f \$exe.xok; then
2749   $to \$exe
2750   $touch \$exe.xok
2751 fi
2752 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2753 EOF
2754             ;;
2755         *)  echo "Unknown targetrun '$targetrun'" >&4
2756             exit 1
2757             ;;
2758         esac
2759         case "$targetmkdir" in
2760         */Cross/mkdir)
2761             cat >$targetmkdir <<EOF
2762 #!/bin/sh
2763 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2764 EOF
2765             $chmod a+rx $targetmkdir
2766             ;;
2767         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2768             exit 1
2769             ;;
2770         esac
2771         case "$targetto" in
2772         scp|rcp)
2773             cat >$to <<EOF
2774 #!/bin/sh
2775 for f in \$@
2776 do
2777   case "\$f" in
2778   /*)
2779     $targetmkdir \`dirname \$f\`
2780     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2781     ;;
2782   *)
2783     $targetmkdir $targetdir/\`dirname \$f\`
2784     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2785     ;;
2786   esac
2787 done
2788 exit 0
2789 EOF
2790             ;;
2791         cp) cat >$to <<EOF
2792 #!/bin/sh
2793 for f in \$@
2794 do
2795   case "\$f" in
2796   /*)
2797     $mkdir -p $targetdir/\`dirname \$f\`
2798     $cp \$f $targetdir/\$f || exit 1
2799     ;;
2800   *)
2801     $targetmkdir $targetdir/\`dirname \$f\`
2802     $cp \$f $targetdir/\$f || exit 1
2803     ;;
2804   esac
2805 done
2806 exit 0
2807 EOF
2808             ;;
2809         *)  echo "Unknown targetto '$targetto'" >&4
2810             exit 1
2811             ;;
2812         esac
2813         case "$targetfrom" in
2814         scp|rcp)
2815           cat >$from <<EOF
2816 #!/bin/sh
2817 for f in \$@
2818 do
2819   $rm -f \$f
2820   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2821 done
2822 exit 0
2823 EOF
2824             ;;
2825         cp) cat >$from <<EOF
2826 #!/bin/sh
2827 for f in \$@
2828 do
2829   $rm -f \$f
2830   cp $targetdir/\$f . || exit 1
2831 done
2832 exit 0
2833 EOF
2834             ;;
2835         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2836             exit 1
2837             ;;
2838         esac
2839         if $test ! -f $run; then
2840             echo "Target 'run' script '$run' not found." >&4
2841         else
2842             $chmod a+rx $run
2843         fi
2844         if $test ! -f $to; then
2845             echo "Target 'to' script '$to' not found." >&4
2846         else
2847             $chmod a+rx $to
2848         fi
2849         if $test ! -f $from; then
2850             echo "Target 'from' script '$from' not found." >&4
2851         else
2852             $chmod a+rx $from
2853         fi
2854         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2855             exit 1
2856         fi
2857         cat >&4 <<EOF
2858 Using '$run' for remote execution,
2859 and '$from' and '$to'
2860 for remote file transfer.
2861 EOF
2862         ;;
2863 *)      run=''
2864         to=:
2865         from=:
2866         usecrosscompile='undef'
2867         targetarch=''
2868         ;;
2869 esac
2870
2871 : see whether [:lower:] and [:upper:] are supported character classes
2872 echo " "
2873 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2874 ABYZ)
2875         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2876         up='[:upper:]'
2877         low='[:lower:]'
2878         ;;
2879 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2880         # (0xc9 and 0xd1), therefore that is a nice testing point.
2881         if test "X$up" = X -o "X$low" = X; then
2882             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2883             ij) up='[A-Z]'
2884                 low='[a-z]'
2885                 ;;
2886             esac
2887         fi
2888         if test "X$up" = X -o "X$low" = X; then
2889             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2890             ij) up='A-Z'
2891                 low='a-z'
2892                 ;;
2893             esac
2894         fi
2895         if test "X$up" = X -o "X$low" = X; then
2896             case "`echo IJ | od -x 2>/dev/null`" in
2897             *C9D1*|*c9d1*)
2898                 echo "Hey, this might be EBCDIC." >&4
2899                 if test "X$up" = X -o "X$low" = X; then
2900                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2901                     ij) up='[A-IJ-RS-Z]'
2902                         low='[a-ij-rs-z]'
2903                         ;;
2904                     esac
2905                 fi
2906                 if test "X$up" = X -o "X$low" = X; then
2907                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2908                     ij) up='A-IJ-RS-Z'
2909                         low='a-ij-rs-z'
2910                         ;;
2911                     esac
2912                 fi
2913                 ;;
2914             esac
2915         fi
2916 esac
2917 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2918 ij)
2919     echo "Using $up and $low to convert case." >&4
2920     ;;
2921 *)
2922     echo "I don't know how to translate letters from upper to lower case." >&4
2923     echo "Your tr is not acting any way I know of." >&4
2924     exit 1
2925     ;;
2926 esac
2927 : set up the translation script tr, must be called with ./tr of course
2928 cat >tr <<EOSC
2929 $startsh
2930 case "\$1\$2" in
2931 '[A-Z][a-z]') exec $tr '$up' '$low';;
2932 '[a-z][A-Z]') exec $tr '$low' '$up';;
2933 esac
2934 exec $tr "\$@"
2935 EOSC
2936 chmod +x tr
2937 $eunicefix tr
2938
2939 : Try to determine whether config.sh was made on this system
2940 case "$config_sh" in
2941 '')
2942 myuname=`$uname -a 2>/dev/null`
2943 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2944 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2945 # because the A-Z/a-z are not consecutive.
2946 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2947         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2948 newmyuname="$myuname"
2949 dflt=n
2950 case "$knowitall" in
2951 '')
2952         if test -f ../config.sh; then
2953                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2954                         eval "`grep myuname= ../config.sh`"
2955                 fi
2956                 if test "X$myuname" = "X$newmyuname"; then
2957                         dflt=y
2958                 fi
2959         fi
2960         ;;
2961 *) dflt=y;;
2962 esac
2963
2964 : Get old answers from old config file if Configure was run on the
2965 : same system, otherwise use the hints.
2966 hint=default
2967 cd ..
2968 if test -f config.sh; then
2969         echo " "
2970         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2971         . UU/myread
2972         case "$ans" in
2973         n*|N*) echo "OK, I'll ignore it."
2974                 mv config.sh config.sh.old
2975                 myuname="$newmyuname"
2976                 ;;
2977         *)  echo "Fetching default answers from your old config.sh file..." >&4
2978                 tmp_n="$n"
2979                 tmp_c="$c"
2980                 tmp_sh="$sh"
2981                 . ./config.sh
2982                 cp config.sh UU
2983                 n="$tmp_n"
2984                 c="$tmp_c"
2985                 : Older versions did not always set $sh.  Catch re-use of such
2986                 : an old config.sh.
2987                 case "$sh" in
2988                 '') sh="$tmp_sh" ;;
2989                 esac
2990                 hint=previous
2991                 ;;
2992         esac
2993 fi
2994 . ./UU/checkcc
2995 if test ! -f config.sh; then
2996         $cat <<EOM
2997
2998 First time through, eh?  I have some defaults handy for some systems
2999 that need some extra help getting the Configure answers right:
3000
3001 EOM
3002         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3003         dflt=''
3004         : Half the following guesses are probably wrong... If you have better
3005         : tests or hints, please send them to perlbug@perl.org
3006         : The metaconfig authors would also appreciate a copy...
3007         $test -f /irix && osname=irix
3008         $test -f /xenix && osname=sco_xenix
3009         $test -f /dynix && osname=dynix
3010         $test -f /dnix && osname=dnix
3011         $test -f /lynx.os && osname=lynxos
3012         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3013         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3014         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3015         $test -f /bin/mips && /bin/mips && osname=mips
3016         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3017                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3018         $test -d /usr/apollo/bin && osname=apollo
3019         $test -f /etc/saf/_sactab && osname=svr4
3020         $test -d /usr/include/minix && osname=minix
3021         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3022         if $test -d /MachTen -o -d /MachTen_Folder; then
3023                 osname=machten
3024                 if $test -x /sbin/version; then
3025                         osvers=`/sbin/version | $awk '{print $2}' |
3026                         $sed -e 's/[A-Za-z]$//'`
3027                 elif $test -x /usr/etc/version; then
3028                         osvers=`/usr/etc/version | $awk '{print $2}' |
3029                         $sed -e 's/[A-Za-z]$//'`
3030                 else
3031                         osvers="$2.$3"
3032                 fi
3033         fi
3034
3035         $test -f /sys/posix.dll &&
3036                 $test -f /usr/bin/what &&
3037                 set X `/usr/bin/what /sys/posix.dll` &&
3038                 $test "$3" = UWIN &&
3039                 osname=uwin &&
3040                 osvers="$5"
3041
3042         if $test -f $uname; then
3043                 set X $myuname
3044                 shift
3045
3046                 case "$5" in
3047                 fps*) osname=fps ;;
3048                 mips*)
3049                         case "$4" in
3050                         umips) osname=umips ;;
3051                         *) osname=mips ;;
3052                         esac;;
3053                 [23]100) osname=mips ;;
3054                 next*) osname=next ;;
3055                 i386*)
3056                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3057                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3058                                 osname='sco'
3059                                 osvers=$tmp
3060                         elif $test -f /etc/kconfig; then
3061                                 osname=isc
3062                                 if test "$lns" = "$ln -s"; then
3063                                         osvers=4
3064                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3065                                         osvers=3
3066                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3067                                         osvers=2
3068                                 fi
3069                         fi
3070                         tmp=''
3071                         ;;
3072                 pc*)
3073                         if test -n "$DJGPP"; then
3074                                 osname=dos
3075                                 osvers=djgpp
3076                         fi
3077                         ;;
3078                 esac
3079
3080                 case "$1" in
3081                 aix) osname=aix
3082                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3083                         case "$tmp" in
3084                         'not found') osvers="$4"."$3" ;;
3085                         '<3240'|'<>3240') osvers=3.2.0 ;;
3086                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3087                         '=3250'|'>3250') osvers=3.2.5 ;;
3088                         *) osvers=$tmp;;
3089                         esac
3090                         ;;
3091                 bsd386) osname=bsd386
3092                         osvers=`$uname -r`
3093                         ;;
3094                 cygwin*) osname=cygwin
3095                         osvers="$3"
3096                         ;;
3097                 *dc.osx) osname=dcosx
3098                         osvers="$3"
3099                         ;;
3100                 dnix) osname=dnix
3101                         osvers="$3"
3102                         ;;
3103                 domainos) osname=apollo
3104                         osvers="$3"
3105                         ;;
3106                 dgux)   osname=dgux 
3107                         osvers="$3"
3108                         ;;
3109                 dynixptx*) osname=dynixptx
3110                         osvers=`echo "$4"|sed 's/^v//'`
3111                         ;;
3112                 freebsd) osname=freebsd 
3113                         osvers="$3" ;;
3114                 genix)  osname=genix ;;
3115                 gnu)    osname=gnu
3116                         osvers="$3" ;;
3117                 hp*)    osname=hpux 
3118                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3119                         ;;
3120                 irix*)  osname=irix
3121                         case "$3" in
3122                         4*) osvers=4 ;;
3123                         5*) osvers=5 ;;
3124                         *)      osvers="$3" ;;
3125                         esac
3126                         ;;
3127                 linux)  osname=linux
3128                         case "$3" in
3129                         *)      osvers="$3" ;;
3130                         esac
3131                         ;;
3132                 MiNT)   osname=mint
3133                         ;;
3134                 netbsd*) osname=netbsd
3135                         osvers="$3"
3136                         ;;
3137                 news-os) osvers="$3"
3138                         case "$3" in
3139                         4*) osname=newsos4 ;;
3140                         *) osname=newsos ;;
3141                         esac
3142                         ;;
3143                 next*) osname=next ;;
3144                 nonstop-ux) osname=nonstopux ;;
3145                 openbsd) osname=openbsd
3146                         osvers="$3"
3147                         ;;
3148                 os2)    osname=os2
3149                         osvers="$4"
3150                         ;;
3151                 POSIX-BC | posix-bc ) osname=posix-bc
3152                         osvers="$3"
3153                         ;;
3154                 powerux | power_ux | powermax_os | powermaxos | \
3155                 powerunix | power_unix) osname=powerux
3156                         osvers="$3"
3157                         ;;
3158                 qnx) osname=qnx
3159                         osvers="$4"
3160                         ;;
3161                 solaris) osname=solaris
3162                         case "$3" in
3163                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3164                         *)      osvers="$3" ;;
3165                         esac
3166                         ;;
3167                 sunos) osname=sunos
3168                         case "$3" in
3169                         5*) osname=solaris
3170                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3171                         *)      osvers="$3" ;;
3172                         esac
3173                         ;;
3174                 titanos) osname=titanos
3175                         case "$3" in
3176                         1*) osvers=1 ;;
3177                         2*) osvers=2 ;;
3178                         3*) osvers=3 ;;
3179                         4*) osvers=4 ;;
3180                         *)      osvers="$3" ;;
3181                         esac
3182                         ;;
3183                 ultrix) osname=ultrix
3184                         osvers="$3"
3185                         ;;
3186                 osf1|mls+)      case "$5" in
3187                                 alpha)
3188                                         osname=dec_osf
3189                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3190                                         case "$osvers" in
3191                                         [1-9].[0-9]*) ;;
3192                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3193                                         esac
3194                                         ;;
3195                         hp*)    osname=hp_osf1  ;;
3196                         mips)   osname=mips_osf1 ;;
3197                         esac
3198                         ;;
3199                 # UnixWare 7.1.2 is known as Open UNIX 8
3200                 openunix|unixware) osname=svr5
3201                         osvers="$4"
3202                         ;;
3203                 uts)    osname=uts
3204                         osvers="$3"
3205                         ;;
3206                 vos) osvers="$3"
3207                         ;;
3208                 $2) case "$osname" in
3209                         *isc*) ;;
3210                         *freebsd*) ;;
3211                         svr*)
3212                                 : svr4.x or possibly later
3213                                 case "svr$3" in 
3214                                 ${osname}*)
3215                                         osname=svr$3
3216                                         osvers=$4
3217                                         ;;
3218                                 esac
3219                                 case "$osname" in
3220                                 svr4.0)
3221                                         : Check for ESIX
3222                                         if test -f /stand/boot ; then
3223                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3224                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3225                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3226                                                         if test -n "$isesix"; then
3227                                                                 osname=esix4
3228                                                         fi
3229                                                 fi
3230                                         fi
3231                                         ;;
3232                                 esac
3233                                 ;;
3234                         *)      if test -f /etc/systemid; then
3235                                         osname=sco
3236                                         set `echo $3 | $sed 's/\./ /g'` $4
3237                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3238                                                 osvers=$1.$2.$3
3239                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3240                                                 osvers=$1.$2
3241                                         elif $test -f $src/hints/sco_$1.sh; then
3242                                                 osvers=$1
3243                                         fi
3244                                 else
3245                                         case "$osname" in
3246                                         '') : Still unknown.  Probably a generic Sys V.
3247                                                 osname="sysv"
3248                                                 osvers="$3"
3249                                                 ;;
3250                                         esac
3251                                 fi
3252                                 ;;
3253                         esac
3254                         ;;
3255                 *)      case "$osname" in
3256                         '') : Still unknown.  Probably a generic BSD.
3257                                 osname="$1"
3258                                 osvers="$3"
3259                                 ;;
3260                         esac
3261                         ;;
3262                 esac
3263         else
3264                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3265                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3266                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3267                                 osname=news_os
3268                         fi
3269                         $rm -f UU/kernel.what
3270                 elif test -d c:/. -o -n "$is_os2" ; then
3271                         set X $myuname
3272                         osname=os2
3273                         osvers="$5"
3274                 fi
3275         fi
3276         
3277         case "$targetarch" in
3278         '') ;;
3279         *)  hostarch=$osname
3280             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3281             osvers=''
3282             ;;
3283         esac
3284
3285         : Now look for a hint file osname_osvers, unless one has been
3286         : specified already.
3287         case "$hintfile" in
3288         ''|' ')
3289                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3290                 : Also try without trailing minor version numbers.
3291                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3292                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3293                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3294                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3295                 case "$file" in
3296                 '') dflt=none ;;
3297                 *)  case "$osvers" in
3298                         '') dflt=$file
3299                                 ;;
3300                         *)  if $test -f $src/hints/$file.sh ; then
3301                                         dflt=$file
3302                                 elif $test -f $src/hints/$xfile.sh ; then
3303                                         dflt=$xfile
3304                                 elif $test -f $src/hints/$xxfile.sh ; then
3305                                         dflt=$xxfile
3306                                 elif $test -f $src/hints/$xxxfile.sh ; then
3307                                         dflt=$xxxfile
3308                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3309                                         dflt=$xxxxfile
3310                                 elif $test -f "$src/hints/${osname}.sh" ; then
3311                                         dflt="${osname}"
3312                                 else
3313                                         dflt=none
3314                                 fi
3315                                 ;;
3316                         esac
3317                         ;;
3318                 esac
3319                 if $test -f Policy.sh ; then
3320                         case "$dflt" in
3321                         *Policy*) ;;
3322                         none) dflt="Policy" ;;
3323                         *) dflt="Policy $dflt" ;;
3324                         esac
3325                 fi
3326                 ;;
3327         *)
3328                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3329                 ;;
3330         esac
3331
3332         if $test -f Policy.sh ; then
3333                 $cat <<EOM
3334
3335 There's also a Policy hint file available, which should make the
3336 site-specific (policy) questions easier to answer.
3337 EOM
3338
3339         fi
3340
3341         $cat <<EOM
3342
3343 You may give one or more space-separated answers, or "none" if appropriate.
3344 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3345 is a good thing.  DO NOT give a wrong version or a wrong OS.
3346
3347 EOM
3348
3349         rp="Which of these apply, if any?"
3350         . UU/myread
3351         tans=$ans
3352         for file in $tans; do
3353                 if $test X$file = XPolicy -a -f Policy.sh; then
3354                         . Policy.sh
3355                         $cat Policy.sh >> UU/config.sh
3356                 elif $test -f $src/hints/$file.sh; then
3357                         . $src/hints/$file.sh
3358                         $cat $src/hints/$file.sh >> UU/config.sh
3359                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3360                         : nothing
3361                 else
3362                         : Give one chance to correct a possible typo.
3363                         echo "$file.sh does not exist"
3364                         dflt=$file
3365                         rp="hint to use instead?"
3366                         . UU/myread
3367                         for file in $ans; do
3368                                 if $test -f "$src/hints/$file.sh"; then
3369                                         . $src/hints/$file.sh
3370                                         $cat $src/hints/$file.sh >> UU/config.sh
3371                                 elif $test X$ans = X -o X$ans = Xnone ; then
3372                                         : nothing
3373                                 else
3374                                         echo "$file.sh does not exist -- ignored."
3375                                 fi
3376                         done
3377                 fi
3378         done
3379
3380         hint=recommended
3381         : Remember our hint file for later.
3382         if $test -f "$src/hints/$file.sh" ; then
3383                 hintfile="$file"
3384         else
3385                 hintfile=''
3386         fi
3387 fi
3388 cd UU
3389 ;;
3390 *)
3391         echo " "
3392         echo "Fetching default answers from $config_sh..." >&4
3393         tmp_n="$n"
3394         tmp_c="$c"
3395         cd ..
3396         cp $config_sh config.sh 2>/dev/null
3397         chmod +w config.sh
3398         . ./config.sh
3399         cd UU
3400         cp ../config.sh .
3401         n="$tmp_n"
3402         c="$tmp_c"
3403         hint=previous
3404         ;;
3405 esac
3406 test "$override" && . ./optdef.sh
3407
3408 : Restore computed paths
3409 for file in $loclist $trylist; do
3410         eval $file="\$_$file"
3411 done
3412
3413 cat << EOM
3414
3415 Configure uses the operating system name and version to set some defaults.
3416 The default value is probably right if the name rings a bell. Otherwise,
3417 since spelling matters for me, either accept the default or answer "none"
3418 to leave it blank.
3419
3420 EOM
3421 case "$osname" in
3422         ''|' ')
3423                 case "$hintfile" in
3424                 ''|' '|none) dflt=none ;;
3425                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3426                 esac
3427                 ;;
3428         *) dflt="$osname" ;;
3429 esac
3430 rp="Operating system name?"
3431 . ./myread
3432 case "$ans" in
3433 none)  osname='' ;;
3434 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3435 esac
3436 echo " "
3437 case "$osvers" in
3438         ''|' ')
3439                 case "$hintfile" in
3440                 ''|' '|none) dflt=none ;;
3441                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3442                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3443                         case "$dflt" in
3444                         ''|' ') dflt=none ;;
3445                         esac
3446                         ;;
3447                 esac
3448                 ;;
3449         *) dflt="$osvers" ;;
3450 esac
3451 rp="Operating system version?"
3452 . ./myread
3453 case "$ans" in
3454 none)  osvers='' ;;
3455 *) osvers="$ans" ;;
3456 esac
3457
3458
3459 . ./posthint.sh
3460
3461 : who configured the system
3462 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3463 case "$cf_by" in
3464 "")
3465         cf_by=`(logname) 2>/dev/null`
3466         case "$cf_by" in
3467         "")
3468                 cf_by=`(whoami) 2>/dev/null`
3469                 case "$cf_by" in
3470                 "") cf_by=unknown ;;
3471                 esac ;;
3472         esac ;;
3473 esac
3474
3475 : set up the script used to warn in case of inconsistency
3476 cat <<EOS >whoa
3477 $startsh
3478 EOS
3479 cat <<'EOSC' >>whoa
3480 dflt=y
3481 echo " "
3482 echo "*** WHOA THERE!!! ***" >&4
3483 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3484 rp="    Keep the $hint value?"
3485 . ./myread
3486 case "$ans" in
3487 y) td=$was; tu=$was;;
3488 esac
3489 EOSC
3490
3491 : function used to set $1 to $val
3492 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3493 case "$val$was" in
3494 $define$undef) . ./whoa; eval "$var=\$td";;
3495 $undef$define) . ./whoa; eval "$var=\$tu";;
3496 *) eval "$var=$val";;
3497 esac'
3498
3499 case "$usesocks" in
3500 $define|true|[yY]*)     dflt='y';;
3501 *) dflt='n';;
3502 esac
3503 cat <<EOM
3504
3505 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3506 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3507 to use the PerlIO abstraction layer, this will be implicitly selected.
3508
3509 If this doesn't make any sense to you, just accept the default '$dflt'.
3510 EOM
3511 rp='Build Perl for SOCKS?'
3512 . ./myread
3513 case "$ans" in
3514 y|Y)    val="$define" ;;     
3515 *)      val="$undef" ;;
3516 esac
3517 set usesocks
3518 eval $setvar
3519
3520 case "$usesocks" in
3521 $define|true|[yY]*) useperlio="$define";;
3522 esac
3523
3524 case "$useperlio" in
3525 $define|true|[yY]*|'')  dflt='y';;
3526 *) dflt='n';;
3527 esac
3528 cat <<EOM
3529
3530 Previous version of $package used the standard IO mechanisms as
3531 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3532 alternate IO mechanisms via the PerlIO abstraction layer, but the
3533 stdio mechanism is still available if needed.  The abstraction layer
3534 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3535 Using PerlIO with sfio may cause problems with some extension modules.
3536
3537 If this doesn't make any sense to you, just accept the default '$dflt'.
3538 EOM
3539 rp='Use the PerlIO abstraction layer?'
3540 . ./myread
3541 case "$ans" in
3542 y|Y) 
3543         val="$define"
3544         ;;
3545 *)      
3546         echo "Ok, doing things the stdio way."
3547         val="$undef"
3548         ;;
3549 esac
3550 set useperlio
3551 eval $setvar 
3552
3553 case "$usesocks" in
3554 $define|true|[yY]*)
3555         case "$useperlio" in
3556         $define|true|[yY]*) ;;
3557         *)      cat >&4 <<EOM
3558
3559 You are using the SOCKS proxy protocol library which means that you
3560 should also use the PerlIO layer.  You may be headed for trouble.
3561
3562 EOM
3563                 ;;
3564         esac
3565         ;;
3566 esac
3567
3568         
3569 case "$usethreads" in
3570 $define|true|[yY]*)     dflt='y';;
3571 *)     # Catch case where user specified ithreads or 5005threads but
3572        # forgot -Dusethreads (A.D. 4/2002)
3573        case "$useithreads$use5005threads" in
3574        *$define*)      
3575                 case "$useperlio" in
3576                 "$define")      dflt='y' ;;
3577                 *)              dflt='n' ;;
3578                 esac
3579                 ;;
3580        *)       dflt='n';;
3581        esac
3582        ;;
3583 esac
3584 cat <<EOM
3585
3586 Perl can be built to take advantage of threads on some systems.
3587 To do so, Configure can be run with -Dusethreads.
3588
3589 Note that Perl built with threading support runs slightly slower
3590 and uses more memory than plain Perl. The current implementation
3591 is believed to be stable, but it is fairly new, and so should be
3592 treated with caution.
3593
3594 If this doesn't make any sense to you, just accept the default '$dflt'.
3595 EOM
3596 rp='Build a threading Perl?'
3597 . ./myread
3598 case "$ans" in
3599 y|Y)    val="$define" ;;
3600 *)      val="$undef" ;;
3601 esac
3602 set usethreads
3603 eval $setvar
3604
3605 case "$usethreads" in
3606 $define)
3607         $cat <<EOM
3608
3609 Since release 5.6, Perl has had two different threading implementations,
3610 the newer interpreter-based version (ithreads) with one interpreter per
3611 thread, and the older 5.005 version (5005threads).
3612 The 5005threads version is effectively unmaintained and will probably be
3613 removed in Perl 5.10, so there should be no need to build a Perl using it
3614 unless needed for backwards compatibility with some existing 5.005threads
3615 code.
3616
3617 EOM
3618         : Default to ithreads unless overridden on command line or with
3619         : old config.sh
3620         dflt='y'
3621         case "$use5005threads" in
3622                 $define|true|[yY]*) dflt='n';;
3623         esac
3624         case "$useithreads" in
3625                 $undef|false|[nN]*) dflt='n';;
3626         esac
3627         rp='Use the newer interpreter-based ithreads?'
3628         . ./myread
3629         case "$ans" in
3630         y|Y)    val="$define" ;;
3631         *)      val="$undef" ;;
3632         esac
3633         set useithreads
3634         eval $setvar
3635         : Now set use5005threads to the opposite value.
3636         case "$useithreads" in
3637         $define) val="$undef" ;;
3638         *) val="$define" ;;
3639         esac
3640         set use5005threads
3641         eval $setvar
3642         ;;
3643 *)
3644         useithreads="$undef"
3645         use5005threads="$undef"
3646         ;;
3647 esac
3648
3649 case "$useithreads$use5005threads" in
3650 "$define$define")
3651         $cat >&4 <<EOM
3652
3653 You cannot have both the ithreads and the 5.005 threads enabled
3654 at the same time.  Disabling the 5.005 threads since they are
3655 much less stable than the ithreads.
3656
3657 EOM
3658         use5005threads="$undef"
3659         ;;
3660 esac
3661
3662 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3663         cat >&4 <<EOF
3664 ***
3665 *** To build with ithreads you must also use the PerlIO layer.
3666 *** Cannot continue, aborting.
3667 ***
3668 EOF
3669         exit 1
3670 fi
3671
3672 case "$d_oldpthreads" in
3673 '')     : Configure tests would be welcome here.  For now, assume undef.
3674         val="$undef" ;;
3675 *)      val="$d_oldpthreads" ;;
3676 esac
3677 set d_oldpthreads
3678 eval $setvar
3679
3680
3681 : Look for a hint-file generated 'call-back-unit'.  If the
3682 : user has specified that a threading perl is to be built,
3683 : we may need to set or change some other defaults.
3684 if $test -f usethreads.cbu; then
3685     echo "Your platform has some specific hints regarding threaded builds, using them..."
3686     . ./usethreads.cbu
3687 else
3688     case "$usethreads" in
3689         "$define"|true|[yY]*)
3690                 $cat <<EOM
3691 (Your platform does not have any specific hints for threaded builds.
3692  Assuming POSIX threads, then.)
3693 EOM
3694         ;;
3695     esac
3696 fi
3697
3698 cat <<EOM
3699
3700 Perl can be built so that multiple Perl interpreters can coexist
3701 within the same Perl executable.
3702 EOM
3703
3704 case "$useithreads" in
3705 $define)
3706         cat <<EOM
3707 This multiple interpreter support is required for interpreter-based threads.
3708 EOM
3709         val="$define"
3710         ;;
3711 *)      case "$usemultiplicity" in
3712         $define|true|[yY]*)     dflt='y';;
3713         *) dflt='n';;
3714         esac
3715         echo " "
3716         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3717         rp='Build Perl for multiplicity?'
3718         . ./myread
3719         case "$ans" in
3720         y|Y)    val="$define" ;;
3721         *)      val="$undef" ;;
3722         esac
3723         ;;
3724 esac
3725 set usemultiplicity
3726 eval $setvar
3727
3728
3729 case "$usemorebits" in
3730 "$define"|true|[yY]*)
3731         use64bitint="$define"
3732         uselongdouble="$define"
3733         usemorebits="$define"
3734         ;;
3735 *)      usemorebits="$undef"
3736         ;;
3737 esac
3738
3739 : make some quick guesses about what we are up against
3740 echo " "
3741 $echo $n "Hmm...  $c"
3742 echo exit 1 >bsd
3743 echo exit 1 >usg
3744 echo exit 1 >v7
3745 echo exit 1 >osf1
3746 echo exit 1 >eunice
3747 echo exit 1 >xenix
3748 echo exit 1 >venix
3749 echo exit 1 >os2
3750 d_bsd="$undef"
3751 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3752 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3753 then
3754         echo "Looks kind of like an OSF/1 system, but we'll see..."
3755         echo exit 0 >osf1
3756 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3757         xxx=`./loc addbib blurfl $pth`
3758         if $test -f $xxx; then
3759         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3760                 echo exit 0 >bsd
3761                 echo exit 0 >usg
3762         else
3763                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3764                         echo "Looks kind of like an extended USG system, but we'll see..."
3765                 else
3766                         echo "Looks kind of like a USG system, but we'll see..."
3767                 fi
3768                 echo exit 0 >usg
3769         fi
3770 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3771         echo "Looks kind of like a BSD system, but we'll see..."
3772         d_bsd="$define"
3773         echo exit 0 >bsd
3774 else
3775         echo "Looks kind of like a Version 7 system, but we'll see..."
3776         echo exit 0 >v7
3777 fi
3778 case "$eunicefix" in
3779 *unixtovms*)
3780         $cat <<'EOI'
3781 There is, however, a strange, musty smell in the air that reminds me of
3782 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3783 EOI
3784         echo exit 0 >eunice
3785         d_eunice="$define"
3786 : it so happens the Eunice I know will not run shell scripts in Unix format
3787         ;;
3788 *)
3789         echo " "
3790         echo "Congratulations.  You aren't running Eunice."
3791         d_eunice="$undef"
3792         ;;
3793 esac
3794 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3795 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3796 : semicolon as a patch separator
3797 case "$p_" in
3798 :) ;;
3799 *)
3800         $cat <<'EOI'
3801 I have the feeling something is not exactly right, however...don't tell me...
3802 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3803 (Or you may be running DOS with DJGPP.)
3804 EOI
3805         echo exit 0 >os2
3806         ;;
3807 esac
3808 if test -f /xenix; then
3809         echo "Actually, this looks more like a XENIX system..."
3810         echo exit 0 >xenix
3811         d_xenix="$define"
3812 else
3813         echo " "
3814         echo "It's not Xenix..."
3815         d_xenix="$undef"
3816 fi
3817 chmod +x xenix
3818 $eunicefix xenix
3819 if test -f /venix; then
3820         echo "Actually, this looks more like a VENIX system..."
3821         echo exit 0 >venix
3822 else
3823         echo " "
3824         if ./xenix; then
3825                 : null
3826         else
3827                 echo "Nor is it Venix..."
3828         fi
3829 fi
3830 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3831 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3832 $rm -f foo
3833
3834 case "$cc" in
3835 '') dflt=cc;;
3836 *) dflt="$cc";;
3837 esac
3838 rp="Use which C compiler?"
3839 . ./myread
3840 cc="$ans"
3841
3842 : See if they have not cc but they do have gcc
3843 . ./trygcc
3844 : Look for a hint-file generated 'call-back-unit'.  Now that the
3845 : user has specified the compiler, we may need to set or change some
3846 : other defaults.
3847 if $test -f cc.cbu; then
3848     . ./cc.cbu
3849 fi
3850 . ./checkcc
3851
3852 echo " "
3853 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3854 $cat >try.c <<EOM
3855 #include <stdio.h>
3856 int main() {
3857 #ifdef __GNUC__
3858 #ifdef __VERSION__
3859         printf("%s\n", __VERSION__);
3860 #else
3861         printf("%s\n", "1");
3862 #endif
3863 #endif
3864         return(0);
3865 }
3866 EOM
3867 if $cc -o try $ccflags $ldflags try.c; then
3868         gccversion=`$run ./try`
3869         case "$gccversion" in
3870         '') echo "You are not using GNU cc." ;;
3871         *)  echo "You are using GNU cc $gccversion."
3872             ccname=gcc
3873             ;;
3874         esac
3875 else
3876         echo " "
3877         echo "*** WHOA THERE!!! ***" >&4
3878         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3879         case "$knowitall" in
3880         '')
3881         echo "    You'd better start hunting for one and let me know about it." >&4
3882                 exit 1
3883                 ;;
3884         esac
3885 fi
3886 $rm -f try try.*
3887 case "$gccversion" in
3888 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3889 esac
3890 case "$gccversion" in
3891 '') gccosandvers='' ;;
3892 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3893    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3894    gccshortvers=''
3895    case "$gccosandvers" in
3896    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3897    $osname$osvers) ;; # looking good
3898    $osname*) cat <<EOM >&4
3899
3900 *** WHOA THERE!!! ***
3901
3902     Your gcc has not been compiled for the exact release of
3903     your operating system ($gccosandvers versus $osname$osvers).
3904
3905     In general it is a good idea to keep gcc synchronized with
3906     the operating system because otherwise serious problems
3907     may ensue when trying to compile software, like Perl.
3908
3909     I'm trying to be optimistic here, though, and will continue.
3910     If later during the configuration and build icky compilation
3911     problems appear (headerfile conflicts being the most common
3912     manifestation), I suggest reinstalling the gcc to match
3913     your operating system release.
3914
3915 EOM
3916       ;;
3917    *) gccosandvers='' ;; # failed to parse, better be silent
3918    esac
3919    ;;
3920 esac
3921 case "$ccname" in
3922 '') ccname="$cc" ;;
3923 esac
3924
3925 # gcc 3.* complain about adding -Idirectories that they already know about,
3926 # so we will take those off from locincpth.
3927 case "$gccversion" in
3928 3*)
3929     echo "main(){}">try.c
3930     for incdir in $locincpth; do
3931        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3932              grep '^c[cp]p*[01]: warning: changing search order '`
3933        if test "X$warn" != X; then
3934            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3935        fi
3936     done
3937     $rm -f try try.*
3938 esac
3939
3940 : decide how portable to be.  Allow command line overrides.
3941 case "$d_portable" in
3942 "$undef") ;;
3943 *)      d_portable="$define" ;;
3944 esac
3945
3946 : set up shell script to do ~ expansion
3947 cat >filexp <<EOSS
3948 $startsh
3949 : expand filename
3950 case "\$1" in
3951  ~/*|~)
3952         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3953         ;;
3954  ~*)
3955         if $test -f /bin/csh; then
3956                 /bin/csh -f -c "glob \$1"
3957                 failed=\$?
3958                 echo ""
3959                 exit \$failed
3960         else
3961                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3962                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3963                 if $test ! -d "\$dir"; then
3964                         me=\`basename \$0\`
3965                         echo "\$me: can't locate home directory for: \$name" >&2
3966                         exit 1
3967                 fi
3968                 case "\$1" in
3969                 */*)
3970                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3971                         ;;
3972                 *)
3973                         echo \$dir
3974                         ;;
3975                 esac
3976         fi
3977         ;;
3978 *)
3979         echo \$1
3980         ;;
3981 esac
3982 EOSS
3983 chmod +x filexp
3984 $eunicefix filexp
3985
3986 : now set up to get a file name
3987 cat <<EOS >getfile
3988 $startsh
3989 EOS
3990 cat <<'EOSC' >>getfile
3991 tilde=''
3992 fullpath=''
3993 already=''
3994 skip=''
3995 none_ok=''
3996 exp_file=''
3997 nopath_ok=''
3998 orig_rp="$rp"
3999 orig_dflt="$dflt"
4000 case "$gfpth" in
4001 '') gfpth='.' ;;
4002 esac
4003
4004 case "$fn" in
4005 *\(*)
4006         : getfile will accept an answer from the comma-separated list
4007         : enclosed in parentheses even if it does not meet other criteria.
4008         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4009         fn=`echo $fn | sed 's/(.*)//'`
4010         ;;
4011 esac
4012
4013 case "$fn" in
4014 *:*)
4015         loc_file=`expr $fn : '.*:\(.*\)'`
4016         fn=`expr $fn : '\(.*\):.*'`
4017         ;;
4018 esac
4019
4020 case "$fn" in
4021 *~*) tilde=true;;
4022 esac
4023 case "$fn" in
4024 */*) fullpath=true;;
4025 esac
4026 case "$fn" in
4027 *+*) skip=true;;
4028 esac
4029 case "$fn" in
4030 *n*) none_ok=true;;
4031 esac
4032 case "$fn" in
4033 *e*) exp_file=true;;
4034 esac
4035 case "$fn" in
4036 *p*) nopath_ok=true;;
4037 esac
4038
4039 case "$fn" in
4040 *f*) type='File';;
4041 *d*) type='Directory';;
4042 *l*) type='Locate';;
4043 esac
4044
4045 what="$type"
4046 case "$what" in
4047 Locate) what='File';;
4048 esac
4049
4050 case "$exp_file" in
4051 '')
4052         case "$d_portable" in
4053         "$define") ;;
4054         *) exp_file=true;;
4055         esac
4056         ;;
4057 esac
4058
4059 cd ..
4060 while test "$type"; do
4061         redo=''
4062         rp="$orig_rp"
4063         dflt="$orig_dflt"
4064         case "$tilde" in
4065         true) rp="$rp (~name ok)";;
4066         esac
4067         . UU/myread
4068         if test -f UU/getfile.ok && \
4069                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4070         then
4071                 value="$ans"
4072                 ansexp="$ans"
4073                 break
4074         fi
4075         case "$ans" in
4076         none)
4077                 value=''
4078                 ansexp=''
4079                 case "$none_ok" in
4080                 true) type='';;
4081                 esac
4082                 ;;
4083         *)
4084                 case "$tilde" in
4085                 '') value="$ans"
4086                         ansexp="$ans";;
4087                 *)
4088                         value=`UU/filexp $ans`
4089                         case $? in
4090                         0)
4091                                 if test "$ans" != "$value"; then
4092                                         echo "(That expands to $value on this system.)"
4093                                 fi
4094                                 ;;
4095                         *) value="$ans";;
4096                         esac
4097                         ansexp="$value"
4098                         case "$exp_file" in
4099                         '') value="$ans";;
4100                         esac
4101                         ;;
4102                 esac
4103                 case "$fullpath" in
4104                 true)
4105                         case "$ansexp" in
4106                         /*) value="$ansexp" ;;
4107                         [a-zA-Z]:/*) value="$ansexp" ;;
4108                         *)
4109                                 redo=true
4110                                 case "$already" in
4111                                 true)
4112                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4113                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4114                                         ;;
4115                                 *)
4116                                 echo "Please give a full path name, starting with slash." >&4
4117                                         case "$tilde" in
4118                                         true)
4119                                 echo "Note that using ~name is ok provided it expands well." >&4
4120                                                 already=true
4121                                                 ;;
4122                                         esac
4123                                 esac
4124                                 ;;
4125                         esac
4126                         ;;
4127                 esac
4128                 case "$redo" in
4129                 '')
4130                         case "$type" in
4131                         File)
4132                                 for fp in $gfpth; do
4133                                         if test "X$fp" = X.; then
4134                                             pf="$ansexp"
4135                                         else    
4136                                             pf="$fp/$ansexp"
4137                                         fi
4138                                         if test -f "$pf"; then
4139                                                 type=''
4140                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4141                                         then
4142                                                 echo "($value is not a plain file, but that's ok.)"
4143                                                 type=''
4144                                         fi
4145                                         if test X"$type" = X; then
4146                                             value="$pf"
4147                                             break
4148                                         fi
4149                                 done
4150                                 ;;
4151                         Directory)
4152                                 for fp in $gfpth; do
4153                                         if test "X$fp" = X.; then
4154                                             dir="$ans"
4155                                             direxp="$ansexp"
4156                                         else    
4157                                             dir="$fp/$ansexp"
4158                                             direxp="$fp/$ansexp"
4159                                         fi
4160                                         if test -d "$direxp"; then
4161                                                 type=''
4162                                                 value="$dir"
4163                                                 break
4164                                         fi
4165                                 done
4166                                 ;;
4167                         Locate)
4168                                 if test -d "$ansexp"; then
4169                                         echo "(Looking for $loc_file in directory $value.)"
4170                                         value="$value/$loc_file"
4171                                         ansexp="$ansexp/$loc_file"
4172                                 fi
4173                                 if test -f "$ansexp"; then
4174                                         type=''
4175                                 fi
4176                                 case "$nopath_ok" in
4177                                 true)   case "$value" in
4178                                         */*) ;;
4179                                         *)      echo "Assuming $value will be in people's path."
4180                                                 type=''
4181                                                 ;;
4182                                         esac
4183                                         ;;
4184                                 esac
4185                                 ;;
4186                         esac
4187
4188                         case "$skip" in
4189                         true) type='';
4190                         esac
4191
4192                         case "$type" in
4193                         '') ;;
4194                         *)
4195                                 if test "$fastread" = yes; then
4196                                         dflt=y
4197                                 else
4198                                         dflt=n
4199                                 fi
4200                                 rp="$what $value doesn't exist.  Use that name anyway?"
4201                                 . UU/myread
4202                                 dflt=''
4203                                 case "$ans" in
4204                                 y*) type='';;
4205                                 *) echo " ";;
4206                                 esac
4207                                 ;;
4208                         esac
4209                         ;;
4210                 esac
4211                 ;;
4212         esac
4213 done
4214 cd UU
4215 ans="$value"
4216 rp="$orig_rp"
4217 dflt="$orig_dflt"
4218 rm -f getfile.ok
4219 test "X$gfpthkeep" != Xy && gfpth=""
4220 EOSC
4221
4222 : What should the include directory be ?
4223 echo " "
4224 $echo $n "Hmm...  $c"
4225 dflt='/usr/include'
4226 incpath=''
4227 mips_type=''
4228 if $test -f /bin/mips && /bin/mips; then
4229         echo "Looks like a MIPS system..."
4230         $cat >usr.c <<'EOCP'
4231 #ifdef SYSTYPE_BSD43
4232 /bsd43
4233 #endif
4234 EOCP
4235         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4236                 dflt='/bsd43/usr/include'
4237                 incpath='/bsd43'
4238                 mips_type='BSD 4.3'
4239         else
4240                 mips_type='System V'
4241         fi
4242         $rm -f usr.c usr.out
4243         echo "and you're compiling with the $mips_type compiler and libraries."
4244         xxx_prompt=y
4245         echo "exit 0" >mips
4246 else
4247         echo "Doesn't look like a MIPS system."
4248         xxx_prompt=n
4249         echo "exit 1" >mips
4250 fi
4251 chmod +x mips
4252 $eunicefix mips
4253 case "$usrinc" in
4254 '') ;;
4255 *) dflt="$usrinc";;
4256 esac
4257 case "$xxx_prompt" in
4258 y)      fn=d/
4259         echo " "
4260         rp='Where are the include files you want to use?'
4261         . ./getfile
4262         usrinc="$ans"
4263         ;;
4264 *)      usrinc="$dflt"
4265         ;;
4266 esac
4267
4268 : see how we invoke the C preprocessor
4269 echo " "
4270 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4271 cat <<'EOT' >testcpp.c
4272 #define ABC abc
4273 #define XYZ xyz
4274 ABC.XYZ
4275 EOT
4276 cd ..
4277 if test ! -f cppstdin; then
4278         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4279                 # AIX cc -E doesn't show the absolute headerfile
4280                 # locations but we'll cheat by using the -M flag.
4281                 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
4282         else
4283                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4284         fi
4285 else
4286         echo "Keeping your $hint cppstdin wrapper."
4287 fi
4288 chmod 755 cppstdin
4289 wrapper=`pwd`/cppstdin
4290 ok='false'
4291 cd UU
4292
4293 if $test "X$cppstdin" != "X" && \
4294         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4295         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4296 then
4297         echo "You used to use $cppstdin $cppminus so we'll use that again."
4298         case "$cpprun" in
4299         '') echo "But let's see if we can live without a wrapper..." ;;
4300         *)
4301                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4302                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4303                 then
4304                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4305                         ok='true'
4306                 else
4307                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4308                 fi
4309                 ;;
4310         esac
4311 else
4312         case "$cppstdin" in
4313         '') ;;
4314         *)
4315                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4316                 ;;
4317         esac
4318 fi
4319
4320 if $ok; then
4321         : nothing
4322 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4323         $cc -E <testcpp.c >testcpp.out 2>&1; \
4324         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4325         echo "Yup, it does."
4326         x_cpp="$cc -E"
4327         x_minus='';
4328 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4329         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4330         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4331         echo "Yup, it does."
4332         x_cpp="$cc -E"
4333         x_minus='-';
4334 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4335         $cc -P <testcpp.c >testcpp.out 2>&1; \
4336         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4337         echo "Yipee, that works!"
4338         x_cpp="$cc -P"
4339         x_minus='';
4340 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4341         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4342         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4343         echo "At long last!"
4344         x_cpp="$cc -P"
4345         x_minus='-';
4346 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4347         $cpp <testcpp.c >testcpp.out 2>&1; \
4348         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4349         echo "It works!"
4350         x_cpp="$cpp"
4351         x_minus='';
4352 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4353         $cpp - <testcpp.c >testcpp.out 2>&1; \
4354         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4355         echo "Hooray, it works!  I was beginning to wonder."
4356         x_cpp="$cpp"
4357         x_minus='-';
4358 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4359         $wrapper <testcpp.c >testcpp.out 2>&1; \
4360         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4361         x_cpp="$wrapper"
4362         x_minus=''
4363         echo "Eureka!"
4364 else
4365         dflt=''
4366         rp="No dice.  I can't find a C preprocessor.  Name one:"
4367         . ./myread
4368         x_cpp="$ans"
4369         x_minus=''
4370         $x_cpp <testcpp.c >testcpp.out 2>&1
4371         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4372                 echo "OK, that will do." >&4
4373         else
4374 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4375                 exit 1
4376         fi
4377 fi
4378
4379 case "$ok" in
4380 false)
4381         cppstdin="$x_cpp"
4382         cppminus="$x_minus"
4383         cpprun="$x_cpp"
4384         cpplast="$x_minus"
4385         set X $x_cpp
4386         shift
4387         case "$1" in
4388         "$cpp")
4389                 echo "Perhaps can we force $cc -E using a wrapper..."
4390                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4391                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4392                 then
4393                         echo "Yup, we can."
4394                         cppstdin="$wrapper"
4395                         cppminus='';
4396                 else
4397                         echo "Nope, we'll have to live without it..."
4398                 fi
4399                 ;;
4400         esac
4401         case "$cpprun" in
4402         "$wrapper")
4403                 cpprun=''
4404                 cpplast=''
4405                 ;;
4406         esac
4407         ;;
4408 esac
4409
4410 case "$cppstdin" in
4411 "$wrapper"|'cppstdin') ;;
4412 *) $rm -f $wrapper;;
4413 esac
4414 $rm -f testcpp.c testcpp.out
4415
4416 : Set private lib path
4417 case "$plibpth" in
4418 '') if ./mips; then
4419                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4420         fi;;
4421 esac
4422 case "$libpth" in
4423 ' ') dlist='';;
4424 '') dlist="$loclibpth $plibpth $glibpth";;
4425 *) dlist="$libpth";;
4426 esac
4427
4428 : Now check and see which directories actually exist, avoiding duplicates
4429 libpth=''
4430 for xxx in $dlist
4431 do
4432     if $test -d $xxx; then
4433                 case " $libpth " in
4434                 *" $xxx "*) ;;
4435                 *) libpth="$libpth $xxx";;
4436                 esac
4437     fi
4438 done
4439 $cat <<'EOM'
4440
4441 Some systems have incompatible or broken versions of libraries.  Among
4442 the directories listed in the question below, please remove any you
4443 know not to be holding relevant libraries, and add any that are needed.
4444 Say "none" for none.
4445
4446 EOM
4447 case "$libpth" in
4448 '') dflt='none';;
4449 *)
4450         set X $libpth
4451         shift
4452         dflt=${1+"$@"}
4453         ;;
4454 esac
4455 rp="Directories to use for library searches?"
4456 . ./myread
4457 case "$ans" in
4458 none) libpth=' ';;
4459 *) libpth="$ans";;
4460 esac
4461
4462 : compute shared library extension
4463 case "$so" in
4464 '')
4465         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4466                 dflt='sl'
4467         else
4468                 dflt='so'
4469         fi
4470         ;;
4471 *) dflt="$so";;
4472 esac
4473 $cat <<EOM
4474
4475 On some systems, shared libraries may be available.  Answer 'none' if
4476 you want to suppress searching of shared libraries for the remainder
4477 of this configuration.
4478
4479 EOM
4480 rp='What is the file extension used for shared libraries?'
4481 . ./myread
4482 so="$ans"
4483
4484 : Define several unixisms.
4485 : Hints files or command line option can be used to override them.
4486 : The convoluted testing is in case hints files set either the old
4487 : or the new name.
4488 case "$_exe" in
4489 '')     case "$exe_ext" in
4490         '')     ;;
4491         *)      _exe="$exe_ext" ;;
4492         esac
4493         ;;
4494 esac
4495 case "$_a" in
4496 '')     case "$lib_ext" in
4497     '') _a='.a';;
4498         *)      _a="$lib_ext" ;;
4499         esac
4500         ;;
4501 esac
4502 case "$_o" in
4503 '') case "$obj_ext" in
4504         '')     _o='.o';;
4505         *)      _o="$obj_ext";;
4506         esac
4507         ;;
4508 esac
4509 case "$p_" in
4510 '') case "$path_sep" in
4511         '')     p_=':';;
4512         *)      p_="$path_sep";;
4513         esac
4514         ;;
4515 esac
4516 exe_ext=$_exe
4517 lib_ext=$_a
4518 obj_ext=$_o
4519 path_sep=$p_
4520
4521 : Which makefile gets called first.  This is used by make depend.
4522 case "$firstmakefile" in
4523 '') firstmakefile='makefile';;
4524 esac
4525
4526 case "$ccflags" in
4527 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4528 esac
4529
4530 case "$uselongdouble" in
4531 $define|true|[yY]*)     dflt='y';;
4532 *) dflt='n';;
4533 esac
4534 cat <<EOM
4535
4536 Perl can be built to take advantage of long doubles which
4537 (if available) may give more accuracy and range for floating point numbers.
4538
4539 If this doesn't make any sense to you, just accept the default '$dflt'.
4540 EOM
4541 rp='Try to use long doubles if available?'
4542 . ./myread
4543 case "$ans" in
4544 y|Y)    val="$define"   ;;
4545 *)      val="$undef"    ;;
4546 esac
4547 set uselongdouble
4548 eval $setvar
4549
4550 case "$uselongdouble" in
4551 true|[yY]*) uselongdouble="$define" ;;
4552 esac
4553
4554 : Look for a hint-file generated 'call-back-unit'.  If the
4555 : user has specified that long doubles should be used,
4556 : we may need to set or change some other defaults.
4557 if $test -f uselongdouble.cbu; then
4558     echo "Your platform has some specific hints regarding long doubles, using them..."
4559     . ./uselongdouble.cbu
4560 else
4561     case "$uselongdouble" in
4562         $define)
4563                 $cat <<EOM
4564 (Your platform does not have any specific hints for long doubles.)
4565 EOM
4566         ;;
4567     esac
4568 fi
4569
4570 : Looking for optional libraries
4571 echo " "
4572 echo "Checking for optional libraries..." >&4
4573 case "$libs" in
4574 ' '|'') dflt='';;
4575 *) dflt="$libs";;
4576 esac
4577 case "$libswanted" in
4578 '') libswanted='c_s';;
4579 esac
4580 case "$usesocks" in
4581 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4582 esac
4583 libsfound=''
4584 libsfiles=''
4585 libsdirs=''
4586 libspath=''
4587 for thisdir in $libpth $xlibpth; do
4588   test -d $thisdir && libspath="$libspath $thisdir"
4589 done
4590 for thislib in $libswanted; do
4591         for thisdir in $libspath; do
4592             xxx=''
4593             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4594                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4595                 $test -f "$xxx" && eval $libscheck
4596                 $test -f "$xxx" && libstyle=shared
4597             fi
4598             if test ! -f "$xxx"; then
4599                 xxx=$thisdir/lib$thislib.$so
4600                 $test -f "$xxx" && eval $libscheck
4601                 $test -f "$xxx" && libstyle=shared
4602             fi  
4603             if test ! -f "$xxx"; then
4604                 xxx=$thisdir/lib$thislib$_a
4605                 $test -f "$xxx" && eval $libscheck
4606                 $test -f "$xxx" && libstyle=static
4607             fi
4608             if test ! -f "$xxx"; then
4609                 xxx=$thisdir/$thislib$_a
4610                 $test -f "$xxx" && eval $libscheck
4611                 $test -f "$xxx" && libstyle=static
4612             fi
4613             if test ! -f "$xxx"; then
4614                 xxx=$thisdir/lib${thislib}_s$_a
4615                 $test -f "$xxx" && eval $libscheck
4616                 $test -f "$xxx" && libstyle=static
4617                 $test -f "$xxx" && thislib=${thislib}_s
4618             fi
4619             if test ! -f "$xxx"; then
4620                 xxx=$thisdir/Slib$thislib$_a
4621                 $test -f "$xxx" && eval $libscheck
4622                 $test -f "$xxx" && libstyle=static
4623             fi
4624             if $test -f "$xxx"; then
4625                 case "$libstyle" in
4626                 shared) echo "Found -l$thislib (shared)." ;;
4627                 static) echo "Found -l$thislib." ;;
4628                 *)      echo "Found -l$thislib ($libstyle)." ;;
4629                 esac
4630                 case " $dflt " in
4631                 *"-l$thislib "*);;
4632                 *) dflt="$dflt -l$thislib"
4633                    libsfound="$libsfound $xxx"
4634                    yyy=`basename $xxx`
4635                    libsfiles="$libsfiles $yyy"
4636                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4637                    case " $libsdirs " in
4638                    *" $yyy "*) ;;
4639                    *) libsdirs="$libsdirs $yyy" ;;
4640                    esac
4641                    ;;
4642                 esac
4643                 break
4644             fi  
4645         done
4646         if $test ! -f "$xxx"; then
4647             echo "No -l$thislib."
4648         fi
4649 done
4650 set X $dflt
4651 shift
4652 dflt="$*"
4653 case "$libs" in
4654 '') dflt="$dflt";;
4655 *) dflt="$libs";;
4656 esac
4657 case "$dflt" in
4658 ' '|'') dflt='none';;
4659 esac
4660
4661 $cat <<EOM
4662
4663 In order to compile $package on your machine, a number of libraries
4664 are usually needed.  Include any other special libraries here as well.
4665 Say "none" for none.  The default list is almost always right.
4666 EOM
4667
4668 echo " "
4669 rp="What libraries to use?"
4670 . ./myread
4671 case "$ans" in
4672 none) libs=' ';;
4673 *) libs="$ans";;
4674 esac
4675
4676 : determine optimization, if desired, or use for debug flag also
4677 case "$optimize" in
4678 ' '|$undef) dflt='none';;
4679 '') dflt='-O';;
4680 *) dflt="$optimize";;
4681 esac
4682 $cat <<EOH
4683
4684 By default, $package compiles with the -O flag to use the optimizer.
4685 Alternately, you might want to use the symbolic debugger, which uses
4686 the -g flag (on traditional Unix systems).  Either flag can be
4687 specified here.  To use neither flag, specify the word "none".
4688
4689 EOH
4690 rp="What optimizer/debugger flag should be used?"
4691 . ./myread
4692 optimize="$ans"
4693 case "$optimize" in
4694 'none') optimize=" ";;
4695 esac
4696
4697 dflt=''
4698 : We will not override a previous value, but we might want to
4699 : augment a hint file
4700 case "$hint" in
4701 default|recommended)
4702         case "$gccversion" in
4703         1*) dflt='-fpcc-struct-return' ;;
4704         esac
4705         case "$optimize" in
4706         *-g*) dflt="$dflt -DDEBUGGING";;
4707         esac
4708         case "$gccversion" in
4709         2*) if test -d /etc/conf/kconfig.d &&
4710                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4711                 then
4712                         dflt="$dflt -posix"
4713                 fi
4714                 ;;
4715         esac
4716         case "$gccversion" in
4717         1*) ;;
4718         2.[0-8]*) ;;
4719         ?*)     echo " "
4720                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4721                 echo 'int main(void) { return 0; }' > gcctest.c
4722                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4723                         echo "Yes, it does." 2>&1
4724                         case "$ccflags" in
4725                         *strict-aliasing*) 
4726                                 echo "Leaving current flags $ccflags alone." 2>&1
4727                                 ;;
4728                         *) dflt="$dflt -fno-strict-aliasing" ;;
4729                         esac
4730                 else
4731                         echo "Nope, it doesn't, but that's ok." 2>&1
4732                 fi
4733                 ;;
4734         esac
4735         ;;
4736 esac
4737
4738 case "$mips_type" in
4739 *BSD*|'') inclwanted="$locincpth $usrinc";;
4740 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4741 esac
4742 for thisincl in $inclwanted; do
4743         if $test -d $thisincl; then
4744                 if $test x$thisincl != x$usrinc; then
4745                         case "$dflt" in
4746                         *" -I$thisincl "*);;
4747                         *) dflt="$dflt -I$thisincl ";;
4748                         esac
4749                 fi
4750         fi
4751 done
4752
4753 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4754         xxx=true;
4755 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4756         xxx=true;
4757 else
4758         xxx=false;
4759 fi;
4760 if $xxx; then
4761         case "$dflt" in
4762         *$2*);;
4763         *) dflt="$dflt -D$2";;
4764         esac;
4765 fi'
4766
4767 set signal.h LANGUAGE_C; eval $inctest
4768
4769 case "$usesocks" in
4770 $define)
4771         ccflags="$ccflags -DSOCKS"
4772         ;;
4773 esac
4774
4775 case "$hint" in
4776 default|recommended) dflt="$ccflags $dflt" ;;
4777 *) dflt="$ccflags";;
4778 esac
4779
4780 case "$dflt" in
4781 ''|' ') dflt=none;;
4782 esac
4783
4784 $cat <<EOH
4785
4786 Your C compiler may want other flags.  For this question you should include
4787 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4788 but you should NOT include libraries or ld flags like -lwhatever.  If you
4789 want $package to honor its debug switch, you should include -DDEBUGGING here.
4790 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4791
4792 To use no flags, specify the word "none".
4793
4794 EOH
4795 set X $dflt
4796 shift
4797 dflt=${1+"$@"}
4798 rp="Any additional cc flags?"
4799 . ./myread
4800 case "$ans" in
4801 none) ccflags='';;
4802 *) ccflags="$ans";;
4803 esac
4804
4805 : the following weeds options from ccflags that are of no interest to cpp
4806 case "$cppflags" in
4807 '') cppflags="$ccflags" ;;
4808 *)  cppflags="$cppflags $ccflags" ;;
4809 esac
4810 case "$gccversion" in
4811 1*) cppflags="$cppflags -D__GNUC__"
4812 esac
4813 case "$mips_type" in
4814 '');;
4815 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4816 esac
4817 case "$cppflags" in
4818 '');;
4819 *)
4820         echo " "
4821         echo "Let me guess what the preprocessor flags are..." >&4
4822         set X $cppflags
4823         shift
4824         cppflags=''
4825         $cat >cpp.c <<'EOM'
4826 #define BLURFL foo
4827
4828 BLURFL xx LFRULB
4829 EOM
4830         previous=''
4831         for flag in $*
4832         do
4833                 case "$flag" in
4834                 -*) ftry="$flag";;
4835                 *) ftry="$previous $flag";;
4836                 esac
4837                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4838                         >cpp1.out 2>/dev/null && \
4839                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4840                         >cpp2.out 2>/dev/null && \
4841                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4842                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4843                 then
4844                         cppflags="$cppflags $ftry"
4845                         previous=''
4846                 else
4847                         previous="$flag"
4848                 fi
4849         done
4850         set X $cppflags
4851         shift
4852         cppflags=${1+"$@"}
4853         case "$cppflags" in
4854         *-*)  echo "They appear to be: $cppflags";;
4855         esac
4856         $rm -f cpp.c cpp?.out
4857         ;;
4858 esac
4859
4860 : flags used in final linking phase
4861 case "$ldflags" in
4862 '') if ./venix; then
4863                 dflt='-i -z'
4864         else
4865                 dflt=''
4866         fi
4867         case "$ccflags" in
4868         *-posix*) dflt="$dflt -posix" ;;
4869         esac
4870         ;;
4871 *) dflt="$ldflags";;
4872 esac
4873
4874 : Try to guess additional flags to pick up local libraries.
4875 for thislibdir in $libpth; do
4876         case " $loclibpth " in
4877         *" $thislibdir "*)
4878                 case "$dflt " in 
4879                 *"-L$thislibdir "*) ;;
4880                 *)  dflt="$dflt -L$thislibdir" ;;
4881                 esac
4882                 ;;
4883         esac
4884 done
4885
4886 case "$dflt" in
4887 '') dflt='none' ;;
4888 esac
4889
4890 $cat <<EOH
4891
4892 Your C linker may need flags.  For this question you should
4893 include -L/whatever and any other flags used by the C linker, but you
4894 should NOT include libraries like -lwhatever.
4895
4896 Make sure you include the appropriate -L/path flags if your C linker
4897 does not normally search all of the directories you specified above,
4898 namely
4899         $libpth
4900 To use no flags, specify the word "none".
4901
4902 EOH
4903
4904 rp="Any additional ld flags (NOT including libraries)?"
4905 . ./myread
4906 case "$ans" in
4907 none) ldflags='';;
4908 *) ldflags="$ans";;
4909 esac
4910 rmlist="$rmlist pdp11"
4911
4912 : coherency check
4913 echo " "
4914 echo "Checking your choice of C compiler and flags for coherency..." >&4
4915 $cat > try.c <<'EOF'
4916 #include <stdio.h>
4917 int main() { printf("Ok\n"); return(0); }
4918 EOF
4919 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4920 shift
4921 $cat >try.msg <<'EOM'
4922 I've tried to compile and run the following simple program:
4923
4924 EOM
4925 $cat try.c >> try.msg
4926
4927 $cat >> try.msg <<EOM
4928
4929 I used the command:
4930
4931         $*
4932         $run ./try
4933
4934 and I got the following output:
4935
4936 EOM
4937 dflt=y
4938 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4939         if $sh -c "$run ./try" >>try.msg 2>&1; then
4940                 xxx=`$run ./try`
4941                 case "$xxx" in
4942                 "Ok") dflt=n ;;
4943                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4944                         case " $libs " in
4945                         *" -lsfio "*)
4946                                 cat >> try.msg <<'EOQS'
4947 If $libs contains -lsfio, and sfio is mis-configured, then it
4948 sometimes (apparently) runs and exits with a 0 status, but with no
4949 output!  It may have to do with sfio's use of _exit vs. exit.
4950
4951 EOQS
4952                                 rp="You have a big problem.  Shall I abort Configure"
4953                                 dflt=y
4954                                 ;;
4955                         esac
4956                         ;;
4957                 esac
4958         else
4959                 echo "The program compiled OK, but exited with status $?." >>try.msg
4960                 rp="You have a problem.  Shall I abort Configure"
4961                 dflt=y
4962         fi
4963 else
4964         echo "I can't compile the test program." >>try.msg
4965         rp="You have a BIG problem.  Shall I abort Configure"
4966         dflt=y
4967 fi
4968 case "$dflt" in
4969 y)
4970         $cat try.msg >&4
4971         case "$knowitall" in
4972         '')
4973                 echo "(The supplied flags or libraries might be incorrect.)"
4974                 ;;
4975         *) dflt=n;;
4976         esac
4977         echo " "
4978         . ./myread
4979         case "$ans" in
4980         n*|N*) ;;
4981         *)      echo "Ok.  Stopping Configure." >&4
4982                 exit 1
4983                 ;;
4984         esac
4985         ;;
4986 n) echo "OK, that should do.";;
4987 esac
4988 $rm -f try try.* core
4989
4990 : define a shorthand compile call
4991 compile='
4992 mc_file=$1;
4993 shift;
4994 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4995 : define a shorthand compile call for compilations that should be ok.
4996 compile_ok='
4997 mc_file=$1;
4998 shift;
4999 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5000
5001 : determine filename position in cpp output
5002 echo " "
5003 echo "Computing filename position in cpp output for #include directives..." >&4
5004 case "$osname" in
5005 vos) testaccess=-e ;;
5006 *)   testaccess=-r ;;
5007 esac
5008 echo '#include <stdio.h>' > foo.c
5009 $cat >fieldn <<EOF
5010 $startsh
5011 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5012 $grep '^[       ]*#.*stdio\.h' | \
5013 while read cline; do
5014         pos=1
5015         set \$cline
5016         while $test \$# -gt 0; do
5017                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5018                         echo "\$pos"
5019                         exit 0
5020                 fi
5021                 shift
5022                 pos=\`expr \$pos + 1\`
5023         done
5024 done
5025 EOF
5026 chmod +x fieldn
5027 fieldn=`./fieldn`
5028 $rm -f foo.c fieldn
5029 case $fieldn in
5030 '') pos='???';;
5031 1) pos=first;;
5032 2) pos=second;;
5033 3) pos=third;;
5034 *) pos="${fieldn}th";;
5035 esac
5036 echo "Your cpp writes the filename in the $pos field of the line."
5037
5038 case "$osname" in
5039 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5040 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5041 *)   cppfilter='' ;;
5042 esac
5043 : locate header file
5044 $cat >findhdr <<EOF
5045 $startsh
5046 wanted=\$1
5047 name=''
5048 for usrincdir in $usrinc
5049 do
5050         if test -f \$usrincdir/\$wanted; then
5051                 echo "\$usrincdir/\$wanted"
5052                 exit 0
5053         fi
5054 done
5055 awkprg='{ print \$$fieldn }'
5056 echo "#include <\$wanted>" > foo\$\$.c
5057 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5058 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5059 while read cline; do
5060         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5061         case "\$name" in
5062         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5063         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5064         *) exit 2;;
5065         esac;
5066 done;
5067 #
5068 # status = 0: grep returned 0 lines, case statement not executed
5069 # status = 1: headerfile found
5070 # status = 2: while loop executed, no headerfile found
5071 #
5072 status=\$?
5073 $rm -f foo\$\$.c;
5074 if test \$status -eq 1; then
5075         exit 0;
5076 fi
5077 exit 1
5078 EOF
5079 chmod +x findhdr
5080
5081 : define an alternate in-header-list? function
5082 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5083 cont=true; xxf="echo \"<\$1> found.\" >&4";
5084 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5085 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5086 esac;
5087 case $# in 4) instead=instead;; *) instead="at last";; esac;
5088 while $test "$cont"; do
5089         xxx=`./findhdr $1`
5090         var=$2; eval "was=\$$2";
5091         if $test "$xxx" && $test -r "$xxx";
5092         then eval $xxf;
5093         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5094                 cont="";
5095         else eval $xxnf;
5096         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5097         set $yyy; shift; shift; yyy=$@;
5098         case $# in 0) cont="";;
5099         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5100                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5101         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5102                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5103         esac;
5104 done;
5105 while $test "$yyy";
5106 do set $yyy; var=$2; eval "was=\$$2";
5107         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5108         set $yyy; shift; shift; yyy=$@;
5109 done'
5110
5111 : see if stdlib is available
5112 set stdlib.h i_stdlib
5113 eval $inhdr
5114
5115 : check for lengths of integral types
5116 echo " "
5117 case "$intsize" in
5118 '')
5119         echo "Checking to see how big your integers are..." >&4
5120         $cat >try.c <<EOCP
5121 #include <stdio.h>
5122 #$i_stdlib I_STDLIB
5123 #ifdef I_STDLIB
5124 #include <stdlib.h>
5125 #endif
5126 int main()
5127 {
5128         printf("intsize=%d;\n", (int)sizeof(int));
5129         printf("longsize=%d;\n", (int)sizeof(long));
5130         printf("shortsize=%d;\n", (int)sizeof(short));
5131         exit(0);
5132 }
5133 EOCP
5134         set try
5135         if eval $compile_ok && $run ./try > /dev/null; then
5136                 eval `$run ./try`
5137                 echo "Your integers are $intsize bytes long."
5138                 echo "Your long integers are $longsize bytes long."
5139                 echo "Your short integers are $shortsize bytes long."
5140         else
5141                 $cat >&4 <<EOM
5142 !
5143 Help! I can't compile and run the intsize test program: please enlighten me!
5144 (This is probably a misconfiguration in your system or libraries, and
5145 you really ought to fix it.  Still, I'll try anyway.)
5146 !
5147 EOM
5148                 dflt=4
5149                 rp="What is the size of an integer (in bytes)?"
5150                 . ./myread
5151                 intsize="$ans"
5152                 dflt=$intsize
5153                 rp="What is the size of a long integer (in bytes)?"
5154                 . ./myread
5155                 longsize="$ans"
5156                 dflt=2
5157                 rp="What is the size of a short integer (in bytes)?"
5158                 . ./myread
5159                 shortsize="$ans"
5160         fi
5161         ;;
5162 esac
5163 $rm -f try try.*
5164
5165 : check for long long
5166 echo " "
5167 echo "Checking to see if you have long long..." >&4
5168 echo 'int main() { long long x = 7; return 0; }' > try.c
5169 set try
5170 if eval $compile; then
5171         val="$define"
5172         echo "You have long long."
5173 else
5174         val="$undef"
5175         echo "You do not have long long."
5176 fi
5177 $rm try.*
5178 set d_longlong
5179 eval $setvar
5180
5181 : check for length of long long
5182 case "${d_longlong}${longlongsize}" in
5183 $define)
5184         echo " "
5185         echo "Checking to see how big your long longs are..." >&4
5186         $cat >try.c <<'EOCP'
5187 #include <stdio.h>
5188 int main()
5189 {
5190     printf("%d\n", (int)sizeof(long long));
5191     return(0);
5192 }
5193 EOCP
5194         set try
5195         if eval $compile_ok; then
5196                 longlongsize=`$run ./try`
5197                 echo "Your long longs are $longlongsize bytes long."
5198         else
5199                 dflt='8'
5200                 echo " "
5201                 echo "(I can't seem to compile the test program.  Guessing...)"
5202                 rp="What is the size of a long long (in bytes)?"
5203                 . ./myread
5204                 longlongsize="$ans"
5205         fi
5206         if $test "X$longsize" = "X$longlongsize"; then
5207                 echo "(That isn't any different from an ordinary long.)"
5208         fi      
5209         ;;
5210 esac
5211 $rm -f try.* try
5212
5213 : see if inttypes.h is available
5214 : we want a real compile instead of Inhdr because some systems
5215 : have an inttypes.h which includes non-existent headers
5216 echo " "
5217 $cat >try.c <<EOCP
5218 #include <inttypes.h>
5219 int main() {
5220         static int32_t foo32 = 0x12345678;
5221 }
5222 EOCP
5223 set try
5224 if eval $compile; then
5225         echo "<inttypes.h> found." >&4
5226         val="$define"
5227 else
5228         echo "<inttypes.h> NOT found." >&4
5229         val="$undef"
5230 fi
5231 $rm -f try.c try
5232 set i_inttypes
5233 eval $setvar
5234
5235 : check for int64_t
5236 echo " "
5237 echo "Checking to see if you have int64_t..." >&4
5238 $cat >try.c <<EOCP
5239 #include <sys/types.h>
5240 #$i_inttypes I_INTTYPES
5241 #ifdef I_INTTYPES
5242 #include <inttypes.h>
5243 #endif
5244 int main() { int64_t x = 7; }
5245 EOCP
5246 set try
5247 if eval $compile; then
5248         val="$define"
5249         echo "You have int64_t."
5250 else
5251         val="$undef"
5252         echo "You do not have int64_t."
5253 fi
5254 $rm -f try try.*
5255 set d_int64_t
5256 eval $setvar
5257
5258
5259 echo " "
5260 echo "Checking which 64-bit integer type we could use..." >&4
5261
5262 case "$intsize" in
5263 8) val=int
5264    set quadtype
5265    eval $setvar
5266    val='"unsigned int"'
5267    set uquadtype
5268    eval $setvar
5269    quadkind=1
5270    ;;
5271 *) case "$longsize" in
5272    8) val=long
5273       set quadtype
5274       eval $setvar
5275       val='"unsigned long"'
5276       set uquadtype
5277       eval $setvar
5278       quadkind=2
5279       ;;
5280    *) case "$d_longlong:$longlongsize" in
5281       define:8)
5282         val='"long long"'
5283         set quadtype
5284         eval $setvar
5285         val='"unsigned long long"'
5286         set uquadtype
5287         eval $setvar
5288         quadkind=3
5289         ;;
5290       *) case "$d_int64_t" in
5291          define)
5292            val=int64_t
5293            set quadtype
5294            eval $setvar
5295            val=uint64_t
5296            set uquadtype
5297            eval $setvar
5298            quadkind=4
5299            ;;
5300          esac
5301          ;;
5302       esac
5303       ;;
5304    esac
5305    ;;
5306 esac
5307
5308 case "$quadtype" in
5309 '')     echo "Alas, no 64-bit integer types in sight." >&4
5310         d_quad="$undef"
5311         ;;
5312 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5313         d_quad="$define"
5314         ;;
5315 esac
5316
5317
5318 case "$uselonglong" in
5319 "$define"|true|[yY]*)
5320         cat <<EOM >&4
5321
5322 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5323 EOM
5324         use64bitint="$define"
5325         ;;
5326 esac                          
5327 case "$use64bits" in
5328 "$define"|true|[yY]*)
5329         cat <<EOM >&4
5330
5331 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5332 EOM
5333         use64bitint="$define"
5334         ;;
5335 esac                          
5336 case "$use64bitints" in
5337 "$define"|true|[yY]*)
5338         cat <<EOM >&4
5339
5340 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5341 EOM
5342         use64bitint="$define"
5343         ;;
5344 esac                          
5345 case "$use64bitsint" in
5346 "$define"|true|[yY]*)
5347         cat <<EOM >&4
5348
5349 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5350 EOM
5351         use64bitint="$define"
5352         ;;
5353 esac                          
5354 case "$uselonglongs" in
5355 "$define"|true|[yY]*)
5356         cat <<EOM >&4
5357
5358 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5359 EOM
5360         use64bitint="$define"
5361         ;;
5362 esac                          
5363 case "$use64bitsall" in
5364 "$define"|true|[yY]*)
5365         cat <<EOM >&4
5366
5367 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5368 EOM
5369         use64bitall="$define"
5370         ;;
5371 esac                          
5372
5373 case "$ccflags" in
5374 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5375 esac
5376 case "$use64bitall" in
5377 "$define"|true|[yY]*) use64bitint="$define" ;;
5378 esac
5379
5380 case "$longsize" in
5381 8) cat <<EOM
5382
5383 You have natively 64-bit long integers.
5384 EOM
5385    val="$define"
5386    ;;
5387 *) case "$use64bitint" in
5388    "$define"|true|[yY]*) dflt='y';;
5389    *) dflt='n';;
5390    esac
5391    case "$d_quad" in
5392    "$define") ;;
5393    *) dflt='n' ;;
5394    esac
5395    cat <<EOM
5396
5397 Perl can be built to take advantage of 64-bit integer types
5398 on some systems.  To do so, Configure can be run with -Duse64bitint.
5399 Choosing this option will most probably introduce binary incompatibilities.
5400
5401 If this doesn't make any sense to you, just accept the default '$dflt'.
5402 (The default has been chosen based on your configuration.)
5403 EOM
5404    rp='Try to use 64-bit integers, if available?'
5405    . ./myread
5406    case "$ans" in
5407    [yY]*) val="$define" ;;
5408    *)     val="$undef"  ;;
5409    esac
5410    ;;
5411 esac
5412 set use64bitint
5413 eval $setvar
5414
5415 case "$use64bitall" in
5416 "$define"|true|[yY]*) dflt='y' ;;
5417 *) case "$longsize" in
5418    8) dflt='y' ;;
5419    *) dflt='n' ;;
5420    esac
5421    ;;
5422 esac    
5423 cat <<EOM
5424
5425 You may also choose to try maximal 64-bitness.  It means using as much
5426 64-bitness as possible on the platform.  This in turn means even more
5427 binary incompatibilities.  On the other hand, your platform may not
5428 have any more 64-bitness available than what you already have chosen.
5429
5430 If this doesn't make any sense to you, just accept the default '$dflt'.
5431 (The default has been chosen based on your configuration.)
5432 EOM
5433 rp='Try to use maximal 64-bit support, if available?'
5434 . ./myread
5435 case "$ans" in
5436 [yY]*) val="$define" ;;
5437 *)     val="$undef"  ;;
5438 esac
5439 set use64bitall
5440 eval $setvar
5441 case "$use64bitall" in
5442 "$define")
5443         case "$use64bitint" in
5444         "$undef")
5445                 cat <<EOM
5446
5447 Since you have chosen a maximally 64-bit build, I'm also turning on
5448 the use of 64-bit integers.
5449 EOM
5450                 use64bitint="$define" ;;
5451         esac
5452         ;;
5453 esac
5454
5455 : Look for a hint-file generated 'call-back-unit'.  If the
5456 : user has specified that a 64-bit perl is to be built,
5457 : we may need to set or change some other defaults.
5458         if $test -f use64bitint.cbu; then
5459         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5460                 . ./use64bitint.cbu
5461         fi
5462 case "$use64bitint" in
5463 "$define"|true|[yY]*)
5464         case "$longsize" in
5465         4) case "$archname64" in
5466            '') archname64=64int ;;
5467            esac
5468            ;;
5469         esac
5470         ;;
5471 esac
5472
5473 : Look for a hint-file generated 'call-back-unit'.  If the
5474 : user has specified that a maximally 64-bit perl is to be built,
5475 : we may need to set or change some other defaults.
5476         if $test -f use64bitall.cbu; then
5477         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5478                 . ./use64bitall.cbu
5479         fi
5480 case "$use64bitall" in
5481 "$define"|true|[yY]*)
5482         case "$longsize" in
5483         4) case "$archname64" in
5484            ''|64int) archname64=64all ;;
5485            esac
5486            ;;
5487         esac
5488         ;;
5489 esac
5490
5491 case "$d_quad:$use64bitint" in
5492 $undef:$define)
5493         cat >&4 <<EOF
5494
5495 *** You have chosen to use 64-bit integers,
5496 *** but none cannot be found.
5497 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5498 *** Cannot continue, aborting.
5499
5500 EOF
5501         exit 1
5502         ;;
5503 esac
5504
5505 : check for length of double
5506 echo " "
5507 case "$doublesize" in
5508 '')
5509         echo "Checking to see how big your double precision numbers are..." >&4
5510         $cat >try.c <<EOCP
5511 #include <stdio.h>
5512 #$i_stdlib I_STDLIB
5513 #ifdef I_STDLIB
5514 #include <stdlib.h>
5515 #endif
5516 int main()
5517 {
5518     printf("%d\n", (int)sizeof(double));
5519     exit(0);
5520 }
5521 EOCP
5522         set try
5523         if eval $compile_ok; then
5524                 doublesize=`$run ./try`
5525                 echo "Your double is $doublesize bytes long."
5526         else
5527                 dflt='8'
5528                 echo "(I can't seem to compile the test program.  Guessing...)"
5529                 rp="What is the size of a double precision number (in bytes)?"
5530                 . ./myread
5531                 doublesize="$ans"
5532         fi
5533         ;;
5534 esac
5535 $rm -f try.c try
5536
5537 : check for long doubles
5538 echo " "
5539 echo "Checking to see if you have long double..." >&4
5540 echo 'int main() { long double x = 7.0; }' > try.c
5541 set try
5542 if eval $compile; then
5543         val="$define"
5544         echo "You have long double."
5545 else
5546         val="$undef"
5547         echo "You do not have long double."
5548 fi
5549 $rm try.*
5550 set d_longdbl
5551 eval $setvar
5552
5553 : check for length of long double
5554 case "${d_longdbl}${longdblsize}" in
5555 $define)
5556         echo " "
5557         echo "Checking to see how big your long doubles are..." >&4
5558         $cat >try.c <<'EOCP'
5559 #include <stdio.h>
5560 int main()
5561 {
5562         printf("%d\n", sizeof(long double));
5563 }
5564 EOCP
5565         set try
5566         set try
5567         if eval $compile; then
5568                 longdblsize=`$run ./try`
5569                 echo "Your long doubles are $longdblsize bytes long."
5570         else
5571                 dflt='8'
5572                 echo " "
5573                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5574                 rp="What is the size of a long double (in bytes)?"
5575                 . ./myread
5576                 longdblsize="$ans"
5577         fi
5578         if $test "X$doublesize" = "X$longdblsize"; then
5579                 echo "That isn't any different from an ordinary double."
5580                 echo "I'll keep your setting anyway, but you may see some"
5581                 echo "harmless compilation warnings."
5582         fi      
5583         ;;
5584 esac
5585 $rm -f try.* try
5586
5587 : determine the architecture name
5588 echo " "
5589 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5590         tarch=`arch`"-$osname"
5591 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5592         if uname -m > tmparch 2>&1 ; then
5593                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5594                         -e 's/$/'"-$osname/" tmparch`
5595         else
5596                 tarch="$osname"
5597         fi
5598         $rm -f tmparch
5599 else
5600         tarch="$osname"
5601 fi
5602 case "$myarchname" in
5603 ''|"$tarch") ;;
5604 *)
5605         echo "(Your architecture name used to be $myarchname.)"
5606         archname=''
5607         ;;
5608 esac
5609 case "$targetarch" in
5610 '') ;;
5611 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5612 esac
5613 myarchname="$tarch"
5614 case "$archname" in
5615 '') dflt="$tarch";;
5616 *) dflt="$archname";;
5617 esac
5618 rp='What is your architecture name'
5619 . ./myread
5620 archname="$ans"
5621 case "$usethreads" in
5622 $define)
5623         echo "Threads selected." >&4
5624         case "$archname" in
5625         *-thread*) echo "...and architecture name already has -thread." >&4
5626                 ;;
5627         *)      archname="$archname-thread"
5628                 echo "...setting architecture name to $archname." >&4
5629                 ;;
5630         esac
5631         ;;
5632 esac
5633 case "$usemultiplicity" in
5634 $define)
5635         echo "Multiplicity selected." >&4
5636         case "$archname" in
5637         *-multi*) echo "...and architecture name already has -multi." >&4
5638                 ;;
5639         *)      archname="$archname-multi"
5640                 echo "...setting architecture name to $archname." >&4
5641                 ;;
5642         esac
5643         ;;
5644 esac
5645 case "$use64bitint$use64bitall" in
5646 *"$define"*)
5647         case "$archname64" in
5648         '')
5649                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5650                 ;;
5651         *)
5652                 case "$use64bitint" in
5653                 "$define") echo "64 bit integers selected." >&4 ;;
5654                 esac
5655                 case "$use64bitall" in
5656                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5657                 esac
5658                 case "$archname" in
5659                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5660                         ;;
5661                 *)      archname="$archname-$archname64"
5662                         echo "...setting architecture name to $archname." >&4
5663                         ;;
5664                 esac
5665                 ;;
5666         esac
5667 esac
5668 case "$uselongdouble" in
5669 $define)
5670         echo "Long doubles selected." >&4
5671         case "$longdblsize" in
5672         $doublesize)
5673                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5674                 ;;
5675         *)
5676                 case "$archname" in
5677                 *-ld*) echo "...and architecture name already has -ld." >&4
5678                         ;;
5679                 *)      archname="$archname-ld"
5680                         echo "...setting architecture name to $archname." >&4
5681                         ;;
5682                 esac
5683                 ;;
5684         esac
5685         ;;
5686 esac
5687 case "$useperlio" in
5688 $define)
5689         echo "Perlio selected." >&4
5690         ;;
5691 *)
5692         echo "Perlio not selected, using stdio." >&4
5693         case "$archname" in
5694         *-stdio*) echo "...and architecture name already has -stdio." >&4
5695                 ;;
5696         *)      archname="$archname-stdio"
5697                 echo "...setting architecture name to $archname." >&4
5698                 ;;
5699         esac
5700         ;;
5701 esac
5702 if $test -f archname.cbu; then
5703         echo "Your platform has some specific hints for architecture name, using them..."
5704         . ./archname.cbu
5705 fi
5706
5707 : determine root of directory hierarchy where package will be installed.
5708 case "$prefix" in
5709 '')
5710         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5711         ;;
5712 *?/)
5713         dflt=`echo "$prefix" | sed 's/.$//'`
5714         ;;
5715 *)
5716         dflt="$prefix"
5717         ;;
5718 esac
5719 $cat <<EOM
5720
5721 By default, $package will be installed in $dflt/bin, manual pages
5722 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5723 installation directories. Typically this is something like /usr/local.
5724 If you wish to have binaries under /usr/bin but other parts of the
5725 installation under /usr/local, that's ok: you will be prompted
5726 separately for each of the installation directories, the prefix being
5727 only used to set the defaults.
5728
5729 EOM
5730 fn=d~
5731 rp='Installation prefix to use?'
5732 . ./getfile
5733 oldprefix=''
5734 case "$prefix" in
5735 '') ;;
5736 *)
5737         case "$ans" in
5738         "$prefix") ;;
5739         *) oldprefix="$prefix";;
5740         esac
5741         ;;
5742 esac
5743 prefix="$ans"
5744 prefixexp="$ansexp"
5745
5746 case "$afsroot" in
5747 '')     afsroot=/afs ;;
5748 *)      afsroot=$afsroot ;;
5749 esac
5750
5751 : is AFS running?
5752 echo " "
5753 case "$afs" in
5754 $define|true)   afs=true ;;
5755 $undef|false)   afs=false ;;
5756 *)      if test -d $afsroot; then
5757                 afs=true
5758         else
5759                 afs=false
5760         fi
5761         ;;
5762 esac
5763 if $afs; then
5764         echo "AFS may be running... I'll be extra cautious then..." >&4
5765 else
5766         echo "AFS does not seem to be running..." >&4
5767 fi
5768
5769 : determine installation prefix for where package is to be installed.
5770 if $afs; then 
5771 $cat <<EOM
5772
5773 Since you are running AFS, I need to distinguish the directory in which
5774 files will reside from the directory in which they are installed (and from
5775 which they are presumably copied to the former directory by occult means).
5776
5777 EOM
5778         case "$installprefix" in
5779         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5780         *) dflt="$installprefix";;
5781         esac
5782 else
5783 $cat <<EOM
5784
5785 In some special cases, particularly when building $package for distribution,
5786 it is convenient to distinguish the directory in which files should be
5787 installed from the directory ($prefix) in which they will
5788 eventually reside.  For most users, these two directories are the same.
5789
5790 EOM
5791         case "$installprefix" in
5792         '') dflt=$prefix ;;
5793         *) dflt=$installprefix;;
5794         esac
5795 fi
5796 fn=d~
5797 rp='What installation prefix should I use for installing files?'
5798 . ./getfile
5799 installprefix="$ans"
5800 installprefixexp="$ansexp"
5801
5802 : set the prefixit variable, to compute a suitable default value
5803 prefixit='case "$3" in
5804 ""|none)
5805         case "$oldprefix" in
5806         "") eval "$1=\"\$$2\"";;
5807         *)
5808                 case "$3" in
5809                 "") eval "$1=";;
5810                 none)
5811                         eval "tp=\"\$$2\"";
5812                         case "$tp" in
5813                         ""|" ") eval "$1=\"\$$2\"";;
5814                         *) eval "$1=";;
5815                         esac;;
5816                 esac;;
5817         esac;;
5818 *)
5819         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5820         case "$tp" in
5821         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5822         /*-$oldprefix/*|\~*-$oldprefix/*)
5823                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5824         *) eval "$1=\"\$$2\"";;
5825         esac;;
5826 esac'
5827
5828 : get the patchlevel
5829 echo " "
5830 echo "Getting the current patchlevel..." >&4
5831 if $test -r $rsrc/patchlevel.h;then
5832         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5833         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5834         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5835         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5836         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5837         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5838        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5839 else
5840         revision=0
5841         patchlevel=0
5842         subversion=0
5843         api_revision=0
5844         api_version=0
5845         api_subversion=0
5846         perl_patchlevel=0
5847         $echo "(You do not have patchlevel.h.  Eek.)"
5848 fi
5849 if $test -r $rsrc/.patch ; then  
5850         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5851                 perl_patchlevel=`cat $rsrc/.patch`
5852         fi
5853 fi
5854 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5855 version_patchlevel_string="version $patchlevel subversion $subversion"
5856 case "$perl_patchlevel" in
5857 0|'') ;;
5858 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5859 esac
5860
5861 $echo "(You have $package $version_patchlevel_string.)"
5862
5863 case "$osname" in
5864 dos|vms)
5865         : XXX Should be a Configure test for double-dots in filenames.
5866         version=`echo $revision $patchlevel $subversion | \
5867                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5868         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5869                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5870         ;;
5871 *)
5872         version=`echo $revision $patchlevel $subversion | \
5873                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5874         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5875                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5876         ;;
5877 esac
5878 : Special case the 5.005_xx maintenance series, which used 5.005
5879 : without any subversion label as a subdirectory in $sitelib
5880 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5881         api_versionstring='5.005'
5882 fi
5883
5884 : determine installation style
5885 : For now, try to deduce it from prefix unless it is already set.
5886 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5887 case "$installstyle" in
5888 '')     case "$prefix" in
5889                 *perl*) dflt='lib';;
5890                 *) dflt='lib/perl5' ;;
5891         esac
5892         ;;
5893 *)      dflt="$installstyle" ;;
5894 esac
5895 : Probably not worth prompting for this since we prompt for all
5896 : the directories individually, and the prompt would be too long and
5897 : confusing anyway.
5898 installstyle=$dflt
5899
5900 : determine where private library files go
5901 : Usual default is /usr/local/lib/perl5/$version.
5902 : Also allow things like /opt/perl/lib/$version, since 
5903 : /opt/perl/lib/perl5... would be redundant.
5904 : The default "style" setting is made in installstyle.U
5905 case "$installstyle" in
5906 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5907 *)       set dflt privlib lib/$version ;;
5908 esac
5909 eval $prefixit
5910 $cat <<EOM
5911
5912 There are some auxiliary files for $package that need to be put into a
5913 private library directory that is accessible by everyone.
5914
5915 EOM
5916 fn=d~+
5917 rp='Pathname where the private library files will reside?'
5918 . ./getfile
5919 privlib="$ans"
5920 privlibexp="$ansexp"
5921 : Change installation prefix, if necessary.
5922 if $test X"$prefix" != X"$installprefix"; then
5923         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5924 else
5925         installprivlib="$privlibexp"
5926 fi
5927
5928 : set the prefixup variable, to restore leading tilda escape
5929 prefixup='case "$prefixexp" in
5930 "$prefix") ;;
5931 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5932 esac'
5933
5934 : determine where public architecture dependent libraries go
5935 set archlib archlib
5936 eval $prefixit
5937 : privlib default is /usr/local/lib/$package/$version
5938 : archlib default is /usr/local/lib/$package/$version/$archname
5939 : privlib may have an optional trailing /share.
5940 tdflt=`echo $privlib | $sed 's,/share$,,'`
5941 tdflt=$tdflt/$archname
5942 case "$archlib" in
5943 '')     dflt=$tdflt
5944         ;;
5945 *)      dflt="$archlib"
5946     ;;
5947 esac
5948 $cat <<EOM
5949
5950 $spackage contains architecture-dependent library files.  If you are
5951 sharing libraries in a heterogeneous environment, you might store
5952 these files in a separate location.  Otherwise, you can just include
5953 them with the rest of the public library files.
5954
5955 EOM
5956 fn=d+~
5957 rp='Where do you want to put the public architecture-dependent libraries?'
5958 . ./getfile
5959 archlib="$ans"
5960 archlibexp="$ansexp"
5961 if $test X"$archlib" = X"$privlib"; then
5962         d_archlib="$undef"
5963 else
5964         d_archlib="$define"
5965 fi
5966 : Change installation prefix, if necessary.
5967 if $test X"$prefix" != X"$installprefix"; then
5968         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5969 else
5970         installarchlib="$archlibexp"
5971 fi
5972
5973 : see if setuid scripts can be secure
5974 $cat <<EOM
5975
5976 Some kernels have a bug that prevents setuid #! scripts from being
5977 secure.  Some sites have disabled setuid #! scripts because of this.
5978
5979 First let's decide if your kernel supports secure setuid #! scripts.
5980 (If setuid #! scripts would be secure but have been disabled anyway,
5981 don't say that they are secure if asked.)
5982
5983 EOM
5984
5985 val="$undef"
5986 if $test -d /dev/fd; then
5987         echo "#!$ls" >reflect
5988         chmod +x,u+s reflect
5989         ./reflect >flect 2>&1
5990         if $contains "/dev/fd" flect >/dev/null; then
5991                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5992                 val="$define"
5993         else
5994                 $cat <<EOM
5995 If you are not sure if they are secure, I can check but I'll need a
5996 username and password different from the one you are using right now.
5997 If you don't have such a username or don't want me to test, simply
5998 enter 'none'.
5999
6000 EOM
6001                 rp='Other username to test security of setuid scripts with?'
6002                 dflt='none'
6003                 . ./myread
6004                 case "$ans" in
6005                 n|none)
6006                         case "$d_suidsafe" in
6007                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6008                                 dflt=n;;
6009                         "$undef")
6010                                 echo "Well, the $hint value is *not* secure." >&4
6011                                 dflt=n;;
6012                         *)      echo "Well, the $hint value *is* secure." >&4
6013                                 dflt=y;;
6014                         esac
6015                         ;;
6016                 *)
6017                         $rm -f reflect flect
6018                         echo "#!$ls" >reflect
6019                         chmod +x,u+s reflect
6020                         echo >flect
6021                         chmod a+w flect
6022                         echo '"su" will (probably) prompt you for '"$ans's password."
6023                         su $ans -c './reflect >flect'
6024                         if $contains "/dev/fd" flect >/dev/null; then
6025                                 echo "Okay, it looks like setuid scripts are secure." >&4
6026                                 dflt=y
6027                         else
6028                                 echo "I don't think setuid scripts are secure." >&4
6029                                 dflt=n
6030                         fi
6031                         ;;
6032                 esac
6033                 rp='Does your kernel have *secure* setuid scripts?'
6034                 . ./myread
6035                 case "$ans" in
6036                 [yY]*)  val="$define";;
6037                 *)      val="$undef";;
6038                 esac
6039         fi
6040 else
6041         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6042         echo "(That's for file descriptors, not floppy disks.)"
6043         val="$undef"
6044 fi
6045 set d_suidsafe
6046 eval $setvar
6047
6048 $rm -f reflect flect
6049
6050 : now see if they want to do setuid emulation
6051 echo " "
6052 val="$undef"
6053 case "$d_suidsafe" in
6054 "$define")
6055         val="$undef"
6056         echo "No need to emulate SUID scripts since they are secure here." >&4
6057         ;;
6058 *)
6059         $cat <<EOM
6060 Some systems have disabled setuid scripts, especially systems where
6061 setuid scripts cannot be secure.  On systems where setuid scripts have
6062 been disabled, the setuid/setgid bits on scripts are currently
6063 useless.  It is possible for $package to detect those bits and emulate
6064 setuid/setgid in a secure fashion.  This emulation will only work if
6065 setuid scripts have been disabled in your kernel.
6066
6067 EOM
6068         case "$d_dosuid" in
6069         "$define") dflt=y ;;
6070         *) dflt=n ;;
6071         esac
6072         rp="Do you want to do setuid/setgid emulation?"
6073         . ./myread
6074         case "$ans" in
6075         [yY]*)  val="$define";;
6076         *)      val="$undef";;
6077         esac
6078         ;;
6079 esac
6080 set d_dosuid
6081 eval $setvar
6082
6083 : see if this is a malloc.h system
6084 : we want a real compile instead of Inhdr because some systems have a
6085 : malloc.h that just gives a compile error saying to use stdlib.h instead
6086 echo " "
6087 $cat >try.c <<EOCP
6088 #include <stdlib.h>
6089 #include <malloc.h>
6090 int main () { return 0; }
6091 EOCP
6092 set try
6093 if eval $compile; then
6094     echo "<malloc.h> found." >&4
6095     val="$define"
6096 else
6097     echo "<malloc.h> NOT found." >&4
6098     val="$undef"
6099 fi
6100 $rm -f try.c try
6101 set i_malloc
6102 eval $setvar
6103
6104 : check for void type
6105 echo " "
6106 echo "Checking to see how well your C compiler groks the void type..." >&4
6107 case "$voidflags" in
6108 '')
6109         $cat >try.c <<EOCP
6110 #$i_stdlib I_STDLIB
6111 #ifdef I_STDLIB
6112 #include <stdlib.h>
6113 #endif
6114 #if TRY & 1
6115 void sub() {
6116 #else
6117 sub() {
6118 #endif
6119         extern void moo();      /* function returning void */
6120         void (*goo)();          /* ptr to func returning void */
6121 #if TRY & 8
6122         void *hue;              /* generic ptr */
6123 #endif
6124 #if TRY & 2
6125         void (*foo[10])();
6126 #endif
6127
6128 #if TRY & 4
6129         if(goo == moo) {
6130                 exit(0);
6131         }
6132 #endif
6133         exit(0);
6134 }
6135 int main() { sub(); }
6136 EOCP
6137         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6138                 voidflags=$defvoidused
6139         echo "Good.  It appears to support void to the level $package wants.">&4
6140                 if $contains warning .out >/dev/null 2>&1; then
6141                         echo "However, you might get some warnings that look like this:"
6142                         $cat .out
6143                 fi
6144         else
6145 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6146                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6147                         echo "It supports 1..."
6148                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6149                                 echo "It also supports 2..."
6150                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6151                                         voidflags=7
6152                                         echo "And it supports 4 but not 8 definitely."
6153                                 else
6154                                         echo "It doesn't support 4..."
6155                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6156                                                 voidflags=11
6157                                                 echo "But it supports 8."
6158                                         else
6159                                                 voidflags=3
6160                                                 echo "Neither does it support 8."
6161                                         fi
6162                                 fi
6163                         else
6164                                 echo "It does not support 2..."
6165                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6166                                         voidflags=13
6167                                         echo "But it supports 4 and 8."
6168                                 else
6169                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6170                                                 voidflags=5
6171                                                 echo "And it supports 4 but has not heard about 8."
6172                                         else
6173                                                 echo "However it supports 8 but not 4."
6174                                         fi
6175                                 fi
6176                         fi
6177                 else
6178                         echo "There is no support at all for void."
6179                         voidflags=0
6180                 fi
6181         fi
6182 esac
6183 case "$voidflags" in
6184 "$defvoidused") ;;
6185 *)      $cat >&4 <<'EOM'
6186   Support flag bits are:
6187     1: basic void declarations.
6188     2: arrays of pointers to functions returning void.
6189     4: operations between pointers to and addresses of void functions.
6190     8: generic void pointers.
6191 EOM
6192         dflt="$voidflags";
6193         rp="Your void support flags add up to what?"
6194         . ./myread
6195         voidflags="$ans"
6196         ;;
6197 esac
6198 $rm -f try.* .out
6199
6200 : check for length of pointer
6201 echo " "
6202 case "$ptrsize" in
6203 '')
6204         echo "Checking to see how big your pointers are..." >&4
6205         if test "$voidflags" -gt 7; then
6206                 echo '#define VOID_PTR char *' > try.c
6207         else
6208                 echo '#define VOID_PTR void *' > try.c
6209         fi
6210         $cat >>try.c <<EOCP
6211 #include <stdio.h>
6212 #$i_stdlib I_STDLIB
6213 #ifdef I_STDLIB
6214 #include <stdlib.h>
6215 #endif
6216 int main()
6217 {
6218     printf("%d\n", (int)sizeof(VOID_PTR));
6219     exit(0);
6220 }
6221 EOCP
6222         set try
6223         if eval $compile_ok; then
6224                 ptrsize=`$run ./try`
6225                 echo "Your pointers are $ptrsize bytes long."
6226         else
6227                 dflt='4'
6228                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6229                 rp="What is the size of a pointer (in bytes)?"
6230                 . ./myread
6231                 ptrsize="$ans"
6232         fi
6233         ;;
6234 esac
6235 $rm -f try.c try
6236 case "$use64bitall" in
6237 "$define"|true|[yY]*)
6238         case "$ptrsize" in
6239         4)      cat <<EOM >&4
6240
6241 *** You have chosen a maximally 64-bit build,
6242 *** but your pointers are only 4 bytes wide.
6243 *** Please rerun Configure without -Duse64bitall.
6244 EOM
6245                 case "$d_quad" in
6246                 define)
6247                         cat <<EOM >&4
6248 *** Since you have quads, you could possibly try with -Duse64bitint.
6249 EOM
6250                         ;;
6251                 esac
6252                 cat <<EOM >&4
6253 *** Cannot continue, aborting.
6254
6255 EOM
6256
6257                 exit 1
6258                 ;;
6259         esac
6260         ;;
6261 esac
6262
6263
6264 : determine which malloc to compile in
6265 echo " "
6266 case "$usemymalloc" in
6267 [yY]*|true|$define)     dflt='y' ;;
6268 [nN]*|false|$undef)     dflt='n' ;;
6269 *)      case "$ptrsize" in
6270         4) dflt='y' ;;
6271         *) dflt='n' ;;
6272         esac
6273         ;;
6274 esac
6275 rp="Do you wish to attempt to use the malloc that comes with $package?"
6276 . ./myread
6277 usemymalloc="$ans"
6278 case "$ans" in
6279 y*|true)
6280         usemymalloc='y'
6281         mallocsrc='malloc.c'
6282         mallocobj="malloc$_o"
6283         d_mymalloc="$define"
6284         case "$libs" in
6285         *-lmalloc*)
6286                 : Remove malloc from list of libraries to use
6287                 echo "Removing unneeded -lmalloc from library list" >&4
6288                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6289                 shift
6290                 libs="$*"
6291                 echo "libs = $libs" >&4
6292                 ;;
6293         esac
6294         ;;
6295 *)
6296         usemymalloc='n'
6297         mallocsrc=''
6298         mallocobj=''
6299         d_mymalloc="$undef"
6300         ;;
6301 esac
6302
6303 : compute the return types of malloc and free
6304 echo " "
6305 $cat >malloc.c <<END
6306 #$i_malloc I_MALLOC
6307 #$i_stdlib I_STDLIB
6308 #include <stdio.h>
6309 #include <sys/types.h>
6310 #ifdef I_MALLOC
6311 #include <malloc.h>
6312 #endif
6313 #ifdef I_STDLIB
6314 #include <stdlib.h>
6315 #endif
6316 #ifdef TRY_MALLOC
6317 void *malloc();
6318 #endif
6319 #ifdef TRY_FREE
6320 void free();
6321 #endif
6322 END
6323 case "$malloctype" in
6324 '')
6325         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6326                 malloctype='void *'
6327         else
6328                 malloctype='char *'
6329         fi
6330         ;;
6331 esac
6332 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6333
6334 case "$freetype" in
6335 '')
6336         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6337                 freetype='void'
6338         else
6339                 freetype='int'
6340         fi
6341         ;;
6342 esac
6343 echo "Your system uses $freetype free(), it would seem." >&4
6344 $rm -f malloc.[co]
6345 $cat <<EOM
6346
6347 After $package is installed, you may wish to install various
6348 add-on modules and utilities.  Typically, these add-ons will
6349 be installed under $prefix with the rest
6350 of this package.  However, you may wish to install such add-ons
6351 elsewhere under a different prefix.
6352
6353 If you do not wish to put everything under a single prefix, that's
6354 ok.  You will be prompted for the individual locations; this siteprefix
6355 is only used to suggest the defaults.
6356
6357 The default should be fine for most people.
6358
6359 EOM
6360 fn=d~+
6361 rp='Installation prefix to use for add-on modules and utilities?'
6362 : XXX Here might be another good place for an installstyle setting.
6363 case "$siteprefix" in
6364 '') dflt=$prefix ;;
6365 *)  dflt=$siteprefix ;;
6366 esac
6367 . ./getfile
6368 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6369 oldsiteprefix=''
6370 case "$siteprefix" in
6371 '') ;;
6372 *)      case "$ans" in
6373         "$prefix") ;;
6374         *) oldsiteprefix="$prefix";;
6375         esac
6376         ;;
6377 esac
6378 siteprefix="$ans"
6379 siteprefixexp="$ansexp"
6380
6381 : determine where site specific libraries go.
6382 : Usual default is /usr/local/lib/perl5/site_perl/$version
6383 : The default "style" setting is made in installstyle.U
6384 : XXX No longer works with Prefixit stuff.
6385 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6386 case "$sitelib" in
6387 '') case "$installstyle" in
6388         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6389         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6390         esac
6391         ;;
6392 *)      dflt="$sitelib"
6393         ;;
6394 esac
6395 $cat <<EOM
6396
6397 The installation process will create a directory for
6398 site-specific extensions and modules.  Most users find it convenient
6399 to place all site-specific files in this directory rather than in the
6400 main distribution directory.
6401
6402 EOM
6403 fn=d~+
6404 rp='Pathname for the site-specific library files?'
6405 . ./getfile
6406 sitelib="$ans"
6407 sitelibexp="$ansexp"
6408 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6409 : Change installation prefix, if necessary.
6410 if $test X"$prefix" != X"$installprefix"; then
6411         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6412 else
6413         installsitelib="$sitelibexp"
6414 fi
6415
6416 : determine where site specific architecture-dependent libraries go.
6417 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6418 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6419 : sitelib may have an optional trailing /share.
6420 case "$sitearch" in
6421 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6422         dflt="$dflt/$archname"
6423         ;;
6424 *)      dflt="$sitearch"
6425         ;;
6426 esac
6427 set sitearch sitearch none
6428 eval $prefixit
6429 $cat <<EOM
6430
6431 The installation process will also create a directory for
6432 architecture-dependent site-specific extensions and modules.
6433
6434 EOM
6435 fn=d~+
6436 rp='Pathname for the site-specific architecture-dependent library files?'
6437 . ./getfile
6438 sitearch="$ans"
6439 sitearchexp="$ansexp"
6440 : Change installation prefix, if necessary.
6441 if $test X"$prefix" != X"$installprefix"; then
6442         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6443 else
6444         installsitearch="$sitearchexp"
6445 fi
6446
6447 $cat <<EOM
6448
6449 The installation process will also create a directory for
6450 vendor-supplied add-ons.  Vendors who supply perl with their system
6451 may find it convenient to place all vendor-supplied files in this
6452 directory rather than in the main distribution directory.  This will
6453 ease upgrades between binary-compatible maintenance versions of perl.
6454
6455 Of course you may also use these directories in whatever way you see
6456 fit.  For example, you might use them to access modules shared over a
6457 company-wide network.
6458
6459 The default answer should be fine for most people.
6460 This causes further questions about vendor add-ons to be skipped
6461 and no vendor-specific directories will be configured for perl.
6462
6463 EOM
6464 rp='Do you want to configure vendor-specific add-on directories?'
6465 case "$usevendorprefix" in
6466 define|true|[yY]*) dflt=y ;;
6467 *)      : User may have set vendorprefix directly on Configure command line.
6468         case "$vendorprefix" in
6469         ''|' ') dflt=n ;;
6470         *)      dflt=y ;;
6471         esac
6472         ;;
6473 esac
6474 . ./myread
6475 case "$ans" in
6476 [yY]*)  fn=d~+
6477         rp='Installation prefix to use for vendor-supplied add-ons?'
6478         case "$vendorprefix" in
6479         '') dflt='' ;;
6480         *)  dflt=$vendorprefix ;;
6481         esac
6482         . ./getfile
6483         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6484         oldvendorprefix=''
6485         case "$vendorprefix" in
6486         '') ;;
6487         *)      case "$ans" in
6488                 "$prefix") ;;
6489                 *) oldvendorprefix="$prefix";;
6490                 esac
6491                 ;;
6492         esac
6493         usevendorprefix="$define"
6494         vendorprefix="$ans"
6495         vendorprefixexp="$ansexp"
6496         ;;
6497 *)      usevendorprefix="$undef"
6498         vendorprefix=''
6499         vendorprefixexp=''
6500         ;;
6501 esac
6502
6503 case "$vendorprefix" in
6504 '')     d_vendorlib="$undef"
6505         vendorlib=''
6506         vendorlibexp=''
6507         ;;
6508 *)      d_vendorlib="$define"
6509         : determine where vendor-supplied modules go.
6510         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6511         case "$vendorlib" in
6512         '')
6513                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6514                 case "$installstyle" in
6515                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6516                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6517                 esac
6518                 ;;
6519         *)      dflt="$vendorlib"
6520                 ;;
6521         esac
6522         fn=d~+
6523         rp='Pathname for the vendor-supplied library files?'
6524         . ./getfile
6525         vendorlib="$ans"
6526         vendorlibexp="$ansexp"
6527         ;;
6528 esac
6529 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6530 : Change installation prefix, if necessary.
6531 if $test X"$prefix" != X"$installprefix"; then
6532         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6533 else
6534         installvendorlib="$vendorlibexp"
6535 fi
6536
6537 case "$vendorprefix" in
6538 '')     d_vendorarch="$undef"
6539         vendorarch=''
6540         vendorarchexp=''
6541         ;;
6542 *)      d_vendorarch="$define"
6543         : determine where vendor-supplied architecture-dependent libraries go.
6544         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6545         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6546         : vendorlib may have an optional trailing /share.
6547         case "$vendorarch" in
6548         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6549                 dflt="$dflt/$archname"
6550                 ;;
6551         *)      dflt="$vendorarch" ;;
6552         esac
6553         fn=d~+
6554         rp='Pathname for vendor-supplied architecture-dependent files?'
6555         . ./getfile
6556         vendorarch="$ans"
6557         vendorarchexp="$ansexp"
6558         ;;
6559 esac
6560 : Change installation prefix, if necessary.
6561 if $test X"$prefix" != X"$installprefix"; then
6562         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6563 else
6564         installvendorarch="$vendorarchexp"
6565 fi
6566
6567 : Final catch-all directories to search
6568 $cat <<EOM
6569
6570 Lastly, you can have perl look in other directories for extensions and
6571 modules in addition to those already specified.
6572 These directories will be searched after 
6573         $sitearch 
6574         $sitelib 
6575 EOM
6576 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6577 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6578 echo ' '
6579 case "$otherlibdirs" in
6580 ''|' ') dflt='none' ;;
6581 *)      dflt="$otherlibdirs" ;;
6582 esac
6583 $cat <<EOM
6584 Enter a colon-separated set of extra paths to include in perl's @INC
6585 search path, or enter 'none' for no extra paths.
6586
6587 EOM
6588
6589 rp='Colon-separated list of additional directories for perl to search?'
6590 . ./myread
6591 case "$ans" in
6592 ' '|''|none)    otherlibdirs=' ' ;;     
6593 *)      otherlibdirs="$ans" ;;
6594 esac
6595 case "$otherlibdirs" in
6596 ' ') val=$undef ;;
6597 *)      val=$define ;;
6598 esac
6599 set d_perl_otherlibdirs
6600 eval $setvar
6601
6602 : Cruising for prototypes
6603 echo " "
6604 echo "Checking out function prototypes..." >&4
6605 $cat >prototype.c <<EOCP
6606 #$i_stdlib I_STDLIB
6607 #ifdef I_STDLIB
6608 #include <stdlib.h>
6609 #endif
6610 int main(int argc, char *argv[]) {
6611         exit(0);}
6612 EOCP
6613 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6614         echo "Your C compiler appears to support function prototypes."
6615         val="$define"
6616 else
6617         echo "Your C compiler doesn't seem to understand function prototypes."
6618         val="$undef"
6619 fi
6620 set prototype
6621 eval $setvar
6622 $rm -f prototype*
6623
6624 case "$prototype" in
6625 "$define") ;;
6626 *)      ansi2knr='ansi2knr'
6627         echo " "
6628         cat <<EOM >&4
6629
6630 $me:  FATAL ERROR:
6631 This version of $package can only be compiled by a compiler that 
6632 understands function prototypes.  Unfortunately, your C compiler 
6633         $cc $ccflags
6634 doesn't seem to understand them.  Sorry about that.
6635
6636 If GNU cc is available for your system, perhaps you could try that instead.  
6637
6638 Eventually, we hope to support building Perl with pre-ANSI compilers.
6639 If you would like to help in that effort, please contact <perlbug@perl.org>.
6640
6641 Aborting Configure now.
6642 EOM
6643         exit 2
6644         ;;
6645 esac
6646
6647 : determine where public executables go
6648 echo " "
6649 set dflt bin bin
6650 eval $prefixit
6651 fn=d~
6652 rp='Pathname where the public executables will reside?'
6653 . ./getfile
6654 if $test "X$ansexp" != "X$binexp"; then
6655         installbin=''
6656 fi
6657 bin="$ans"
6658 binexp="$ansexp"
6659 : Change installation prefix, if necessary.
6660 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6661 if $test X"$prefix" != X"$installprefix"; then
6662         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6663 else
6664         installbin="$binexp"
6665 fi
6666
6667 echo " "
6668 case "$extras" in
6669 '') dflt='n';;
6670 *) dflt='y';;
6671 esac
6672 cat <<EOM
6673 Perl can be built with extra modules or bundles of modules which
6674 will be fetched from the CPAN and installed alongside Perl.
6675
6676 Notice that you will need access to the CPAN; either via the Internet,
6677 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6678 be asked later to configure the CPAN.pm module which will in turn do
6679 the installation of the rest of the extra modules or bundles.)
6680
6681 Notice also that if the modules require any external software such as
6682 libraries and headers (the libz library and the zlib.h header for the
6683 Compress::Zlib module, for example) you MUST have any such software
6684 already installed, this configuration process will NOT install such
6685 things for you.
6686
6687 If this doesn't make any sense to you, just accept the default '$dflt'.
6688 EOM
6689 rp='Install any extra modules (y or n)?'
6690 . ./myread
6691 case "$ans" in
6692 y|Y)
6693         cat <<EOM
6694
6695 Please list any extra modules or bundles to be installed from CPAN,
6696 with spaces between the names.  The names can be in any format the
6697 'install' command of CPAN.pm will understand.  (Answer 'none',
6698 without the quotes, to install no extra modules or bundles.)
6699 EOM
6700         rp='Extras?'
6701         dflt="$extras"
6702         . ./myread
6703         extras="$ans"
6704 esac
6705 case "$extras" in
6706 ''|'none')
6707         val=''
6708         $rm -f ../extras.lst
6709         ;;
6710 *)      echo "(Saving the list of extras for later...)"
6711         echo "$extras" > ../extras.lst
6712         val="'$extras'"
6713         ;;
6714 esac
6715 set extras
6716 eval $setvar
6717 echo " "
6718
6719 : determine where html pages for programs go
6720 set html1dir html1dir none
6721 eval $prefixit
6722 $cat <<EOM
6723
6724 If you wish to install html files for programs in $spackage, indicate 
6725 the appropriate directory here.  To skip installing html files,
6726 answer "none".
6727 EOM
6728 case "$html1dir" in
6729 ''|none|$undef|' ') dflt=none ;;
6730 *) dflt=$html1dir ;;
6731 esac
6732 fn=dn+~
6733 rp="Directory for the main $spackage html pages?"
6734 . ./getfile
6735 html1dir="$ans"
6736 html1direxp="$ansexp"
6737 : Use ' ' for none so value is preserved next time through Configure
6738 $test X"$html1dir" = "X" && html1dir=' '
6739 : Change installation prefix, if necessary.
6740 if $test X"$prefix" != X"$installprefix"; then
6741         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6742 else
6743         installhtml1dir="$html1direxp"
6744 fi
6745
6746 : determine where html pages for libraries and modules go
6747 set html3dir html3dir none
6748 eval $prefixit
6749 $cat <<EOM
6750
6751 If you wish to install html files for modules associated with $spackage,
6752 indicate the appropriate directory here.  To skip installing html files,
6753 answer "none".
6754 EOM
6755 : There is no obvious default.  If they have specified html1dir, then
6756 : try to key off that, possibly changing .../html1 into .../html3.
6757 case "$html3dir" in
6758 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6759 *) dflt=$html3dir ;;
6760 esac
6761 fn=dn+~
6762 rp="Directory for the $spackage module html pages?"
6763 . ./getfile
6764 html3dir="$ans"
6765 html3direxp="$ansexp"
6766 : Use ' ' for none so value is preserved next time through Configure
6767 $test X"$html3dir" = "X" && html3dir=' '
6768 : Change installation prefix, if necessary.
6769 if $test X"$prefix" != X"$installprefix"; then
6770         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6771 else
6772         installhtml3dir="$html3direxp"
6773 fi
6774
6775 : Find perl5.005 or later.
6776 echo "Looking for a previously installed perl5.005 or later... "
6777 case "$perl5" in
6778 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6779                 : Check if this perl is recent and can load a simple module
6780                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6781                         perl5=$tdir/perl
6782                         break;
6783                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6784                         perl5=$tdir/perl5
6785                         break;
6786                 fi
6787         done
6788         ;;
6789 *)      perl5="$perl5"
6790         ;;
6791 esac
6792 case "$perl5" in
6793 '')     echo "None found.  That's ok.";;
6794 *)      echo "Using $perl5." ;;
6795 esac
6796
6797 : Determine list of previous versions to include in @INC
6798 $cat > getverlist <<EOPL
6799 #!$perl5 -w
6800 use File::Basename;
6801 \$api_versionstring = "$api_versionstring";
6802 \$version = "$version";
6803 \$stem = "$sitelib_stem";
6804 \$archname = "$archname";
6805 EOPL
6806         $cat >> getverlist <<'EOPL'
6807 # Can't have leading @ because metaconfig interprets it as a command!
6808 ;@inc_version_list=();
6809 # XXX Redo to do opendir/readdir? 
6810 if (-d $stem) {
6811     chdir($stem);
6812     ;@candidates = glob("5.*");
6813 }
6814 else {
6815     ;@candidates = ();
6816 }
6817
6818 # XXX ToDo:  These comparisons must be reworked when two-digit
6819 # subversions come along, so that 5.7.10 compares as greater than
6820 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6821 # widespread that we can use the built-in version vectors rather
6822 # than reinventing them here.  For 5.6.0, however, we must
6823 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6824 foreach $d (@candidates) {
6825     if ($d lt $version) {
6826         if ($d ge $api_versionstring) {
6827             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6828         }
6829         elsif ($d ge "5.005") {
6830             unshift(@inc_version_list, grep { -d } $d);
6831         }
6832     }
6833     else {
6834         # Skip newer version.  I.e. don't look in
6835         # 5.7.0 if we're installing 5.6.1.
6836     }
6837 }
6838
6839 if (@inc_version_list) {
6840     print join(' ', @inc_version_list);
6841 }
6842 else {
6843     # Blank space to preserve value for next Configure run.
6844     print " ";
6845 }
6846 EOPL
6847 chmod +x getverlist
6848 case "$inc_version_list" in
6849 '')     if test -x "$perl5$exe_ext"; then
6850                 dflt=`$perl5 getverlist`
6851         else
6852                 dflt='none'
6853         fi
6854         ;;
6855 $undef) dflt='none' ;;
6856 *)  eval dflt=\"$inc_version_list\" ;;
6857 esac
6858 case "$dflt" in
6859 ''|' ') dflt=none ;;
6860 esac
6861 case "$dflt" in
6862 5.005) dflt=none ;;
6863 esac
6864 $cat <<EOM
6865
6866 In order to ease the process of upgrading, this version of perl 
6867 can be configured to use modules built and installed with earlier 
6868 versions of perl that were installed under $prefix.  Specify here
6869 the list of earlier versions that this version of perl should check.
6870 If Configure detected no earlier versions of perl installed under
6871 $prefix, then the list will be empty.  Answer 'none' to tell perl
6872 to not search earlier versions.
6873
6874 The default should almost always be sensible, so if you're not sure,
6875 just accept the default.
6876 EOM
6877
6878 rp='List of earlier versions to include in @INC?'
6879 . ./myread
6880 case "$ans" in
6881 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6882 *) inc_version_list="$ans" ;;
6883 esac
6884 case "$inc_version_list" in
6885 ''|' ') 
6886         inc_version_list_init='0';;
6887 *)      inc_version_list_init=`echo $inc_version_list |
6888                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6889         ;;
6890 esac
6891 $rm -f getverlist
6892
6893 : determine whether to install perl also as /usr/bin/perl
6894
6895 echo " "
6896 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6897         $cat <<EOM
6898 Many scripts expect perl to be installed as /usr/bin/perl.
6899
6900 If you want to, I can install the perl you are about to compile
6901 as /usr/bin/perl (in addition to $bin/perl).
6902 EOM
6903         if test -f /usr/bin/perl; then
6904             $cat <<EOM
6905
6906 However, please note that because you already have a /usr/bin/perl,
6907 overwriting that with a new Perl would very probably cause problems.
6908 Therefore I'm assuming you don't want to do that (unless you insist).
6909
6910 EOM
6911             case "$installusrbinperl" in
6912             "$define"|[yY]*)    dflt='y';;
6913             *)                  dflt='n';;
6914             esac
6915         else
6916             $cat <<EOM
6917
6918 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6919
6920 EOM
6921             case "$installusrbinperl" in
6922             "$undef"|[nN]*)     dflt='n';;
6923             *)                  dflt='y';;
6924             esac
6925         fi
6926         rp="Do you want to install perl as /usr/bin/perl?"
6927         . ./myread
6928         case "$ans" in
6929         [yY]*)  val="$define";;
6930         *)      val="$undef" ;;
6931         esac
6932 else
6933         val="$undef"
6934 fi
6935 set installusrbinperl
6936 eval $setvar
6937
6938 echo " "
6939 echo "Checking for GNU C Library..." >&4
6940 cat >try.c <<'EOCP'
6941 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6942    alone are insufficient to distinguish different versions, such as
6943    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6944    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6945 */
6946 #include <stdio.h>
6947 int main(void)
6948 {
6949 #ifdef __GLIBC__
6950 #   ifdef __GLIBC_MINOR__
6951 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6952 #           include <gnu/libc-version.h>
6953             printf("%s\n",  gnu_get_libc_version());
6954 #       else
6955             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6956 #       endif
6957 #   else
6958         printf("%d\n",  __GLIBC__);
6959 #   endif
6960     return 0;
6961 #else
6962     return 1;
6963 #endif
6964 }
6965 EOCP
6966 set try
6967 if eval $compile_ok && $run ./try > glibc.ver; then
6968         val="$define"
6969         gnulibc_version=`$cat glibc.ver`
6970         echo "You are using the GNU C Library version $gnulibc_version"
6971 else
6972         val="$undef"
6973         gnulibc_version=''
6974         echo "You are not using the GNU C Library"
6975 fi
6976 $rm -f try try.* glibc.ver
6977 set d_gnulibc
6978 eval $setvar
6979
6980 : see if nm is to be used to determine whether a symbol is defined or not
6981 case "$usenm" in
6982 '')
6983         dflt=''
6984         case "$d_gnulibc" in
6985         "$define")
6986                 echo " "
6987                 echo "nm probably won't work on the GNU C Library." >&4
6988                 dflt=n
6989                 ;;
6990         esac
6991         case "$dflt" in
6992         '') 
6993                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
6994                         echo " "
6995                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
6996                         echo "'nm' won't be sufficient on this sytem." >&4
6997                         dflt=n
6998                 fi
6999                 ;;
7000         esac
7001         case "$dflt" in
7002         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7003                 if $test $dflt -gt 20; then
7004                         dflt=y
7005                 else
7006                         dflt=n
7007                 fi
7008                 ;;
7009         esac
7010         ;;
7011 *)
7012         case "$usenm" in
7013         true|$define) dflt=y;;
7014         *) dflt=n;;
7015         esac
7016         ;;
7017 esac
7018 $cat <<EOM
7019
7020 I can use $nm to extract the symbols from your C libraries. This
7021 is a time consuming task which may generate huge output on the disk (up
7022 to 3 megabytes) but that should make the symbols extraction faster. The
7023 alternative is to skip the 'nm' extraction part and to compile a small
7024 test program instead to determine whether each symbol is present. If
7025 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7026 this may be the best solution.
7027
7028 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7029
7030 EOM
7031 rp="Shall I use $nm to extract C symbols from the libraries?"
7032 . ./myread
7033 case "$ans" in
7034 [Nn]*) usenm=false;;
7035 *) usenm=true;;
7036 esac
7037
7038 runnm=$usenm
7039 case "$reuseval" in
7040 true) runnm=false;;
7041 esac
7042
7043 : nm options which may be necessary
7044 case "$nm_opt" in
7045 '') if $test -f /mach_boot; then
7046                 nm_opt=''       # Mach
7047         elif $test -d /usr/ccs/lib; then
7048                 nm_opt='-p'     # Solaris (and SunOS?)
7049         elif $test -f /dgux; then
7050                 nm_opt='-p'     # DG-UX
7051         elif $test -f /lib64/rld; then
7052                 nm_opt='-p'     # 64-bit Irix
7053         else
7054                 nm_opt=''
7055         fi;;
7056 esac
7057
7058 : nm options which may be necessary for shared libraries but illegal
7059 : for archive libraries.  Thank you, Linux.
7060 case "$nm_so_opt" in
7061 '')     case "$myuname" in
7062         *linux*)
7063                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7064                         nm_so_opt='--dynamic'
7065                 fi
7066                 ;;
7067         esac
7068         ;;
7069 esac
7070
7071 case "$runnm" in
7072 true)
7073 : get list of predefined functions in a handy place
7074 echo " "
7075 case "$libc" in
7076 '') libc=unknown
7077         case "$libs" in
7078         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7079         esac
7080         ;;
7081 esac
7082 case "$libs" in
7083 '') ;;
7084 *)  for thislib in $libs; do
7085         case "$thislib" in
7086         -lc|-lc_s)
7087                 : Handle C library specially below.
7088                 ;;
7089         -l*)
7090                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7091                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7092                         :
7093                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7094                         :
7095                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7096                         :
7097                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7098                         :
7099                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7100                         :
7101                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7102                         :
7103                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7104                         :
7105                 else
7106                         try=''
7107                 fi
7108                 libnames="$libnames $try"
7109                 ;;
7110         *) libnames="$libnames $thislib" ;;
7111         esac
7112         done
7113         ;;
7114 esac
7115 xxx=normal
7116 case "$libc" in
7117 unknown)
7118         set /lib/libc.$so
7119         for xxx in $libpth; do
7120                 $test -r $1 || set $xxx/libc.$so
7121                 : The messy sed command sorts on library version numbers.
7122                 $test -r $1 || \
7123                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7124                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7125                                 h
7126                                 s/[0-9][0-9]*/0000&/g
7127                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7128                                 G
7129                                 s/\n/ /' | \
7130                          $sort | $sed -e 's/^.* //'`
7131                 eval set \$$#
7132         done
7133         $test -r $1 || set /usr/ccs/lib/libc.$so
7134         $test -r $1 || set /lib/libsys_s$_a
7135         ;;
7136 *)
7137         set blurfl
7138         ;;
7139 esac
7140 if $test -r "$1"; then
7141         echo "Your (shared) C library seems to be in $1."
7142         libc="$1"
7143 elif $test -r /lib/libc && $test -r /lib/clib; then
7144         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7145         xxx=apollo
7146         libc='/lib/clib /lib/libc'
7147         if $test -r /lib/syslib; then
7148                 echo "(Your math library is in /lib/syslib.)"
7149                 libc="$libc /lib/syslib"
7150         fi
7151 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7152         echo "Your C library seems to be in $libc, as you said before."
7153 elif $test -r $incpath/usr/lib/libc$_a; then
7154         libc=$incpath/usr/lib/libc$_a;
7155         echo "Your C library seems to be in $libc.  That's fine."
7156 elif $test -r /lib/libc$_a; then
7157         libc=/lib/libc$_a;
7158         echo "Your C library seems to be in $libc.  You're normal."
7159 else
7160         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7161                 :
7162         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7163                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7164         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7165                 :
7166         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7167                 :
7168         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7169                 :
7170         else
7171                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7172         fi
7173         if $test -r "$tans"; then
7174                 echo "Your C library seems to be in $tans, of all places."
7175                 libc=$tans
7176         else
7177                 libc='blurfl'
7178         fi
7179 fi
7180 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7181         dflt="$libc"
7182         cat <<EOM
7183
7184 If the guess above is wrong (which it might be if you're using a strange
7185 compiler, or your machine supports multiple models), you can override it here.
7186
7187 EOM
7188 else
7189         dflt=''
7190         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7191         cat >&4 <<EOM
7192 I can't seem to find your C library.  I've looked in the following places:
7193
7194 EOM
7195         $sed 's/^/      /' libpath
7196         cat <<EOM
7197
7198 None of these seems to contain your C library. I need to get its name...
7199
7200 EOM
7201 fi
7202 fn=f
7203 rp='Where is your C library?'
7204 . ./getfile
7205 libc="$ans"
7206
7207 echo " "
7208 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7209 set X `cat libnames`
7210 shift
7211 xxx=files
7212 case $# in 1) xxx=file; esac
7213 echo "Extracting names from the following $xxx for later perusal:" >&4
7214 echo " "
7215 $sed 's/^/      /' libnames >&4
7216 echo " "
7217 $echo $n "This may take a while...$c" >&4
7218
7219 for file in $*; do
7220         case $file in
7221         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7222         *) $nm $nm_opt $file 2>/dev/null;;
7223         esac
7224 done >libc.tmp
7225
7226 $echo $n ".$c"
7227 $grep fprintf libc.tmp > libc.ptf
7228 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7229 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7230 xxx='[ADTSIW]'
7231 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7232         eval $xscan;\
7233         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7234                 eval $xrun
7235 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7236         eval $xscan;\
7237         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7238                 eval $xrun
7239 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7240         eval $xscan;\
7241         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7242                 eval $xrun
7243 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7244         eval $xscan;\
7245         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7246                 eval $xrun
7247 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7248         eval $xscan;\
7249         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7250                 eval $xrun
7251 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7252         eval $xscan;\
7253         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7254                 eval $xrun
7255 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7256                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7257         eval $xscan;\
7258         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7259                 eval $xrun
7260 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7261         eval $xscan;\
7262         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7263                 eval $xrun
7264 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7265         eval $xscan;\
7266         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7267                 eval $xrun
7268 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7269         eval $xscan;\
7270         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7271                 eval $xrun
7272 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7273         eval $xscan;\
7274         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7275                 eval $xrun
7276 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7277         eval $xscan;\
7278         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7279                 eval $xrun
7280 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7281         eval $xscan;\
7282         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7283                 eval $xrun
7284 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7285         eval $xscan;\
7286         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7287                 eval $xrun
7288 else
7289         $nm -p $* 2>/dev/null >libc.tmp
7290         $grep fprintf libc.tmp > libc.ptf
7291         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7292                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7293         then
7294                 nm_opt='-p'
7295                 eval $xrun
7296         else
7297                 echo " "
7298                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7299                 com=''
7300                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7301                         for thisname in $libnames $libc; do
7302                                 $ar t $thisname >>libc.tmp
7303                         done
7304                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7305                         echo "Ok." >&4
7306                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7307                         # Repeat libc to extract forwarders to DLL entries too
7308                         for thisname in $libnames $libc; do
7309                                 $ar tv $thisname >>libc.tmp
7310                                 # Revision 50 of EMX has bug in $ar.
7311                                 # it will not extract forwarders to DLL entries
7312                                 # Use emximp which will extract exactly them.
7313                                 emximp -o tmp.imp $thisname \
7314                                     2>/dev/null && \
7315                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7316                                     < tmp.imp >>libc.tmp
7317                                 $rm tmp.imp
7318                         done
7319                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7320                         echo "Ok." >&4
7321                 else
7322                         echo "$ar didn't seem to work right." >&4
7323                         echo "Maybe this is a Cray...trying bld instead..." >&4
7324                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7325                         then
7326                                 for thisname in $libnames; do
7327                                         bld t $libnames | \
7328                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7329                                         $ar t $thisname >>libc.tmp
7330                                 done
7331                                 echo "Ok." >&4
7332                         else
7333                                 echo "That didn't work either.  Giving up." >&4
7334                                 exit 1
7335                         fi
7336                 fi
7337         fi
7338 fi
7339 nm_extract="$com"
7340 case "$PASE" in
7341 define)
7342     echo " "
7343     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7344     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7345     ;;
7346 *)  if $test -f /lib/syscalls.exp; then
7347         echo " "
7348         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7349         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7350     fi
7351     ;;
7352 esac
7353 ;;
7354 esac
7355 $rm -f libnames libpath
7356
7357 : see if dld is available
7358 set dld.h i_dld
7359 eval $inhdr
7360
7361 : is a C symbol defined?
7362 csym='tlook=$1;
7363 case "$3" in
7364 -v) tf=libc.tmp; tdc="";;
7365 -a) tf=libc.tmp; tdc="[]";;
7366 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7367 esac;
7368 tx=yes;
7369 case "$reuseval-$4" in
7370 true-) ;;
7371 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7372 esac;
7373 case "$tx" in
7374 yes)
7375         tval=false;
7376         if $test "$runnm" = true; then
7377                 if $contains $tlook $tf >/dev/null 2>&1; then
7378                         tval=true;
7379                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7380                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7381                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7382                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7383                         $rm -f try$_exe try.c core core.* try.core;
7384                 fi;
7385         else
7386                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7387                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7388                 $rm -f try$_exe try.c;
7389         fi;
7390         ;;
7391 *)
7392         case "$tval" in
7393         $define) tval=true;;
7394         *) tval=false;;
7395         esac;
7396         ;;
7397 esac;
7398 eval "$2=$tval"'
7399
7400 : define an is-in-libc? function
7401 inlibc='echo " "; td=$define; tu=$undef;
7402 sym=$1; var=$2; eval "was=\$$2";
7403 tx=yes;
7404 case "$reuseval$was" in
7405 true) ;;
7406 true*) tx=no;;
7407 esac;
7408 case "$tx" in
7409 yes)
7410         set $sym tres -f;
7411         eval $csym;
7412         case "$tres" in
7413         true)
7414                 echo "$sym() found." >&4;
7415                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7416         *)
7417                 echo "$sym() NOT found." >&4;
7418                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7419         esac;;
7420 *)
7421         case "$was" in
7422         $define) echo "$sym() found." >&4;;
7423         *) echo "$sym() NOT found." >&4;;
7424         esac;;
7425 esac'
7426
7427 : see if dlopen exists
7428 xxx_runnm="$runnm"
7429 runnm=false
7430 set dlopen d_dlopen
7431 eval $inlibc
7432 runnm="$xxx_runnm"
7433
7434 : determine which dynamic loading, if any, to compile in
7435 echo " "
7436 dldir="ext/DynaLoader"
7437 case "$usedl" in
7438 $define|y|true)
7439         dflt='y'
7440         usedl="$define"
7441         ;;
7442 $undef|n|false)
7443         dflt='n'
7444         usedl="$undef"
7445         ;;
7446 *) 
7447         dflt='n'
7448         case "$d_dlopen" in
7449             $define) dflt='y' ;;
7450         esac
7451         case "$i_dld" in
7452             $define) dflt='y' ;;
7453         esac
7454         : Does a dl_xxx.xs file exist for this operating system
7455         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7456         ;;
7457 esac
7458 rp="Do you wish to use dynamic loading?"
7459 . ./myread
7460 usedl="$ans"
7461 case "$ans" in
7462 y*) usedl="$define"
7463         case "$dlsrc" in
7464         '')
7465                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7466                         dflt="$dldir/dl_${osname}.xs"
7467                 elif $test "$d_dlopen" = "$define" ; then
7468                         dflt="$dldir/dl_dlopen.xs"
7469                 elif $test "$i_dld" = "$define" ; then
7470                         dflt="$dldir/dl_dld.xs"
7471                 else
7472                         dflt=''
7473                 fi
7474                 ;;
7475         *)      dflt="$dldir/$dlsrc"
7476                 ;;
7477         esac
7478     echo "The following dynamic loading files are available:"
7479         : Can not go over to $dldir because getfile has path hard-coded in.
7480         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7481         rp="Source file to use for dynamic loading"
7482         fn="fne"
7483         gfpth="$src"
7484         . ./getfile
7485         usedl="$define"
7486         : emulate basename
7487         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7488
7489         $cat << EOM
7490
7491 Some systems may require passing special flags to $cc -c to
7492 compile modules that will be used to create a shared library.
7493 To use no flags, say "none".
7494
7495 EOM
7496     case "$cccdlflags" in
7497     '') case "$gccversion" in
7498                 '') case "$osname" in
7499                         hpux)   dflt='+z' ;;
7500                         next)   dflt='none' ;;
7501                         irix*)  dflt='-KPIC' ;;
7502                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7503                         sunos)  dflt='-pic' ;;
7504                         *)      dflt='none' ;;
7505                     esac
7506                         ;;
7507                 *)  case "$osname" in
7508                         darwin) dflt='none' ;;
7509                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7510                         *)      dflt='-fpic' ;;
7511                     esac ;;
7512             esac ;;
7513         ' ') dflt='none' ;;
7514     *)  dflt="$cccdlflags" ;;
7515     esac
7516     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7517     . ./myread
7518     case "$ans" in
7519     none) cccdlflags=' ' ;;
7520     *) cccdlflags="$ans" ;;
7521     esac
7522
7523     cat << EOM
7524
7525 Some systems use ld to create libraries that can be dynamically loaded,
7526 while other systems (such as those using ELF) use $cc.
7527
7528 EOM
7529         case "$ld" in
7530         '')     $cat >try.c <<EOM
7531 /* Test for whether ELF binaries are produced */
7532 #include <fcntl.h>
7533 #$i_stdlib I_STDLIB
7534 #ifdef I_STDLIB
7535 #include <stdlib.h>
7536 #endif
7537 int main() {
7538         char b[4];
7539         int i = open("a.out",O_RDONLY);
7540         if(i == -1) 
7541                 exit(1); /* fail */
7542         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7543                 exit(0); /* succeed (yes, it's ELF) */
7544         else
7545                 exit(1); /* fail */
7546 }
7547 EOM
7548                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7549                         cat <<EOM
7550 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7551 EOM
7552                         dflt="$cc"
7553                 else
7554                         echo "I'll use ld to build dynamic libraries."
7555                         dflt='ld'
7556                 fi
7557                 rm -f try.c a.out
7558                 ;;
7559         *)      dflt="$ld"
7560                 ;;
7561         esac
7562
7563     rp="What command should be used to create dynamic libraries?"
7564     . ./myread
7565         ld="$ans"
7566
7567     cat << EOM
7568
7569 Some systems may require passing special flags to $ld to create a
7570 library that can be dynamically loaded.  If your ld flags include
7571 -L/other/path options to locate libraries outside your loader's normal
7572 search path, you may need to specify those -L options here as well.  To
7573 use no flags, say "none".
7574
7575 EOM
7576     case "$lddlflags" in
7577     '') case "$osname" in
7578                         beos) dflt='-nostart' ;;
7579                         hpux) dflt='-b';
7580                               case "$gccversion" in
7581                               '') dflt="$dflt +vnocompatwarnings" ;;
7582                               esac
7583                               ;;        
7584                         linux|irix*)    dflt='-shared' ;;
7585                         next)  dflt='none' ;;
7586                         solaris) dflt='-G' ;;
7587                         sunos) dflt='-assert nodefinitions' ;;
7588                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7589                 *)     dflt='none' ;;
7590                         esac
7591                         ;;
7592     *) dflt="$lddlflags" ;;
7593     esac
7594
7595         : Try to guess additional flags to pick up local libraries.
7596         : Be careful not to append to a plain 'none'
7597         case "$dflt" in
7598         none) dflt='' ;;
7599         esac
7600         for thisflag in $ldflags; do
7601                 case "$thisflag" in
7602                 -L*|-R*|-Wl,-R*)
7603                         case " $dflt " in
7604                         *" $thisflag "*) ;;
7605                         *) dflt="$dflt $thisflag" ;;
7606                         esac
7607                         ;;
7608                 esac
7609         done
7610
7611         case "$dflt" in
7612         ''|' ') dflt='none' ;;
7613         esac
7614
7615     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7616     . ./myread
7617     case "$ans" in
7618     none) lddlflags=' ' ;;
7619     *) lddlflags="$ans" ;;
7620     esac
7621
7622         cat <<EOM
7623
7624 Some systems may require passing special flags to $cc to indicate that
7625 the resulting executable will use dynamic linking.  To use no flags,
7626 say "none".
7627
7628 EOM
7629     case "$ccdlflags" in
7630     '') case "$osname" in
7631                 hpux)   dflt='-Wl,-E' ;;
7632                 linux)  dflt='-rdynamic' ;;
7633                 next)   dflt='none' ;;
7634                 sunos)  dflt='none' ;;
7635                 *)      dflt='none' ;;
7636             esac ;;
7637     ' ')  dflt='none' ;;
7638     *)  dflt="$ccdlflags" ;;
7639     esac
7640     rp="Any special flags to pass to $cc to use dynamic linking?"
7641     . ./myread
7642     case "$ans" in
7643     none) ccdlflags=' ' ;;
7644     *) ccdlflags="$ans" ;;
7645     esac
7646     ;;
7647 *)  usedl="$undef"
7648         ld='ld'
7649     dlsrc='dl_none.xs'
7650     lddlflags=''
7651     ccdlflags=''
7652     ;;
7653 esac
7654
7655 also=''
7656 case "$usedl" in
7657 $undef)
7658         # No dynamic loading being used, so don't bother even to prompt.
7659         useshrplib='false'
7660         ;;
7661 *)      case "$useshrplib" in
7662         '')     case "$osname" in
7663                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7664                         dflt=y
7665                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7666                         ;;
7667                 next*)
7668                         case "$osvers" in
7669                         4*)     dflt=y
7670                                 also='Building a shared libperl is needed for MAB support.'
7671                                 ;;
7672                         *)      dflt=n
7673                                 ;;
7674                         esac
7675                         ;;
7676                 *)      dflt=n
7677                         ;;
7678                 esac
7679                 ;;
7680         $define|true|[Yy]*)
7681                 dflt=y
7682                 ;;
7683         *)      dflt=n
7684                 ;;
7685         esac
7686         $cat << EOM
7687
7688 The perl executable is normally obtained by linking perlmain.c with
7689 libperl${_a}, any static extensions (usually just DynaLoader), and
7690 any other libraries needed on this system (such as -lm, etc.).  Since
7691 your system supports dynamic loading, it is probably possible to build
7692 a shared libperl.$so.  If you will have more than one executable linked
7693 to libperl.$so, this will significantly reduce the size of each
7694 executable, but it may have a noticeable affect on performance.  The
7695 default is probably sensible for your system.
7696 $also
7697
7698 EOM
7699         rp="Build a shared libperl.$so (y/n)"
7700         . ./myread
7701         case "$ans" in
7702         true|$define|[Yy]*)
7703                 useshrplib='true'  ;;
7704         *)      useshrplib='false' ;;
7705         esac
7706         ;;
7707 esac
7708
7709 case "$useshrplib" in
7710 true)
7711         case "$libperl" in
7712         '')
7713                 # Figure out a good name for libperl.so.  Since it gets stored in
7714                 # a version-specific architecture-dependent library, the version
7715                 # number isn't really that important, except for making cc/ld happy.
7716                 #
7717                 # A name such as libperl.so.3.1
7718                 majmin="libperl.$so.$patchlevel.$subversion"
7719                 # A name such as libperl.so.301
7720                 majonly=`echo $patchlevel $subversion |
7721                         $awk '{printf "%d%02d", $1, $2}'`
7722                 majonly=libperl.$so.$majonly
7723                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7724                 # rely on figuring it out from the naming of libc.
7725                 case "${osname}${osvers}" in
7726                 next4*)
7727                         dflt=libperl.5.$so
7728                         # XXX How handle the --version stuff for MAB?
7729                         ;;
7730                 linux*)  # ld won't link with a bare -lperl otherwise.
7731                         dflt=libperl.$so
7732                         ;;
7733                 cygwin*) # ld links against an importlib
7734                         dflt=libperl$lib_ext
7735                         ;;
7736                 *)      # Try to guess based on whether libc has major.minor.
7737                         case "$libc" in
7738                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7739                         *libc.$so.[0-9]*) dflt=$majonly ;;
7740                         *)      dflt=libperl.$so ;;
7741                         esac
7742                         ;;
7743                 esac
7744                 ;;
7745         *)      dflt=$libperl
7746                 ;;
7747         esac
7748         cat << EOM
7749
7750 I need to select a good name for the shared libperl.  If your system uses
7751 library names with major and minor numbers, then you might want something
7752 like $majmin.  Alternatively, if your system uses a single version
7753 number for shared libraries, then you might want to use $majonly.
7754 Or, your system might be quite happy with a simple libperl.$so.
7755
7756 Since the shared libperl will get installed into a version-specific
7757 architecture-dependent directory, the version number of the shared perl
7758 library probably isn't important, so the default should be o.k.
7759
7760 EOM
7761         rp='What name do you want to give to the shared libperl?'
7762         . ./myread
7763         libperl=$ans
7764         echo "Ok, I'll use $libperl"
7765         ;;
7766 *)
7767         libperl="libperl${_a}"
7768         ;;
7769 esac
7770
7771 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7772 case "$shrpdir" in
7773 '') ;;
7774 *)      $cat >&4 <<EOM
7775 WARNING:  Use of the shrpdir variable for the installation location of
7776 the shared $libperl is not supported.  It was never documented and
7777 will not work in this version.  Let me (perlbug@perl.org)
7778 know of any problems this may cause.
7779
7780 EOM
7781         case "$shrpdir" in
7782         "$archlibexp/CORE")
7783                 $cat >&4 <<EOM
7784 But your current setting of $shrpdir is
7785 the default anyway, so it's harmless.
7786 EOM
7787                 ;;
7788         *)
7789                 $cat >&4 <<EOM
7790 Further, your current attempted setting of $shrpdir
7791 conflicts with the value of $archlibexp/CORE
7792 that installperl will use.
7793 EOM
7794                 ;;
7795         esac
7796         ;;
7797 esac
7798
7799 # How will the perl executable find the installed shared $libperl?
7800 # Add $xxx to ccdlflags.
7801 # If we can't figure out a command-line option, use $shrpenv to
7802 # set env LD_RUN_PATH.  The main perl makefile uses this.
7803 shrpdir=$archlibexp/CORE
7804 xxx=''
7805 tmp_shrpenv=''
7806 if "$useshrplib"; then
7807     case "$osname" in 
7808         aix)
7809                 # We'll set it in Makefile.SH...
7810                 ;;
7811         solaris)
7812                 xxx="-R $shrpdir"
7813                 ;;
7814         freebsd|netbsd|openbsd)
7815                 xxx="-Wl,-R$shrpdir"
7816                 ;;
7817         bsdos|linux|irix*|dec_osf)
7818                 xxx="-Wl,-rpath,$shrpdir"
7819                 ;;
7820         next)
7821                 # next doesn't like the default...
7822                 ;;
7823         beos)
7824                 # beos doesn't like the default, either.
7825                 ;;
7826         hpux*)
7827                 # hpux doesn't like the default, either.
7828                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7829                 ;;
7830         *)
7831                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7832                 ;;
7833         esac
7834         case "$xxx" in
7835         '') ;;
7836         *)      
7837                 # Only add $xxx if it isn't already in ccdlflags.
7838                 case " $ccdlflags " in
7839                 *" $xxx "*)     ;;
7840                 *)      ccdlflags="$ccdlflags $xxx"
7841                         cat <<EOM >&4
7842
7843 Adding $xxx to the flags
7844 passed to $ld so that the perl executable will find the 
7845 installed shared $libperl.
7846
7847 EOM
7848                         ;;
7849                 esac
7850                 ;;
7851         esac
7852 fi
7853 # Fix ccdlflags in AIX for building external extensions.
7854 # (For building Perl itself bare -bE:perl.exp is needed,
7855 #  Makefile.SH takes care of this.)
7856 case "$osname" in
7857 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7858 esac
7859 # Respect a hint or command-line value.
7860 case "$shrpenv" in
7861 '') shrpenv="$tmp_shrpenv" ;;
7862 esac
7863 case "$ldlibpthname" in
7864 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7865 none)   ldlibpthname='' ;;
7866 esac
7867
7868 : determine where manual pages are on this system
7869 echo " "
7870 case "$sysman" in
7871 '') 
7872         syspath='/usr/share/man/man1 /usr/man/man1'
7873         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7874         syspath="$syspath /usr/man/u_man/man1"
7875         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7876         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7877         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7878         sysman=`./loc . /usr/man/man1 $syspath`
7879         ;;
7880 esac
7881 if $test -d "$sysman"; then
7882         echo "System manual is in $sysman." >&4
7883 else
7884         echo "Could not find manual pages in source form." >&4
7885 fi
7886
7887 : determine where manual pages go
7888 set man1dir man1dir none
7889 eval $prefixit
7890 $cat <<EOM
7891
7892 $spackage has manual pages available in source form.
7893 EOM
7894 case "$nroff" in
7895 nroff)
7896         echo "However, you don't have nroff, so they're probably useless to you."
7897         case "$man1dir" in
7898         '') man1dir="none";;
7899         esac;;
7900 esac
7901 echo "If you don't want the manual sources installed, answer 'none'."
7902 case "$man1dir" in
7903 ' ') dflt=none
7904         ;;
7905 '')
7906         lookpath="$prefixexp/share/man/man1"
7907         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7908         lookpath="$lookpath $prefixexp/man/p_man/man1"
7909         lookpath="$lookpath $prefixexp/man/u_man/man1"
7910         lookpath="$lookpath $prefixexp/man/man.1"
7911         case "$sysman" in
7912         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7913         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7914         esac
7915         set dflt
7916         eval $prefixup
7917         ;;
7918 *)  dflt="$man1dir"
7919         ;;
7920 esac
7921 echo " "
7922 fn=dn+~
7923 rp="Where do the main $spackage manual pages (source) go?"
7924 . ./getfile
7925 if $test "X$man1direxp" != "X$ansexp"; then
7926         installman1dir=''
7927 fi
7928 man1dir="$ans"
7929 man1direxp="$ansexp"
7930 case "$man1dir" in
7931 '')     man1dir=' '
7932         installman1dir='';;
7933 esac
7934
7935 : Change installation prefix, if necessary.
7936 if $test X"$prefix" != X"$installprefix"; then
7937         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7938 else
7939         installman1dir="$man1direxp"
7940 fi
7941
7942 : What suffix to use on installed man pages
7943
7944 case "$man1dir" in
7945 ' ')
7946         man1ext='0'
7947         ;;
7948 *)
7949         rp="What suffix should be used for the main $spackage man pages?"
7950         case "$man1ext" in
7951         '')     case "$man1dir" in
7952                 *1)  dflt=1 ;;
7953                 *1p) dflt=1p ;;
7954                 *1pm) dflt=1pm ;;
7955                 *l) dflt=l;;
7956                 *n) dflt=n;;
7957                 *o) dflt=o;;
7958                 *p) dflt=p;;
7959                 *C) dflt=C;;
7960                 *L) dflt=L;;
7961                 *L1) dflt=L1;;
7962                 *) dflt=1;;
7963                 esac
7964                 ;;
7965         *)      dflt="$man1ext";;
7966         esac
7967         . ./myread
7968         man1ext="$ans"
7969         ;;
7970 esac
7971
7972 : see if we can have long filenames
7973 echo " "
7974 first=123456789abcdef
7975 $rm -f $first
7976 if (echo hi >$first) 2>/dev/null; then
7977         if $test -f 123456789abcde; then
7978                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7979                 val="$undef"
7980         else
7981                 echo 'You can have filenames longer than 14 characters.'>&4
7982                 val="$define"
7983         fi
7984 else
7985         $cat <<'EOM'
7986 You can't have filenames longer than 14 chars.
7987 You can't even think about them!
7988 EOM
7989         val="$undef"
7990 fi 
7991 set d_flexfnam
7992 eval $setvar
7993 $rm -rf 123456789abcde*
7994
7995 : determine where library module manual pages go
7996 set man3dir man3dir none
7997 eval $prefixit
7998 $cat <<EOM
7999
8000 $spackage has manual pages for many of the library modules.
8001 EOM
8002
8003 case "$nroff" in
8004 nroff)
8005         $cat <<'EOM'
8006 However, you don't have nroff, so they're probably useless to you.
8007 EOM
8008         case "$man3dir" in
8009         '') man3dir="none";;
8010         esac;;
8011 esac
8012
8013 case "$d_flexfnam" in
8014 undef)
8015         $cat <<'EOM'
8016 However, your system can't handle the long file names like File::Basename.3. 
8017 EOM
8018         case "$man3dir" in
8019         '') man3dir="none";;
8020         esac;;
8021 esac
8022
8023 echo "If you don't want the manual sources installed, answer 'none'."
8024 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8025 case "$man3dir" in
8026 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8027         if $test -d "$privlib/man/man3"; then
8028                 cat <<EOM >&4
8029
8030 WARNING:  Previous versions of perl installed man3 pages into
8031 $privlib/man/man3.  This version will suggest a 
8032 new default of $dflt.  
8033 EOM
8034                 tdflt=$dflt
8035                 dflt='n'
8036                 rp='Do you wish to preserve the old behavior?(y/n)'
8037                 . ./myread
8038                 case "$ans" in
8039                 y*) dflt="$privlib/man/man3" ;;
8040                 *)  dflt=$tdflt ;;
8041                 esac
8042     fi
8043         ;;
8044 *)      dflt="$man3dir" ;;
8045 esac
8046 case "$dflt" in
8047 ' ') dflt=none ;;
8048 esac
8049 echo " "
8050 fn=dn+~
8051 rp="Where do the $package library man pages (source) go?"
8052 . ./getfile
8053 man3dir="$ans"
8054 man3direxp="$ansexp"
8055 case "$man3dir" in
8056 '')     man3dir=' '
8057         installman3dir='';;
8058 esac
8059
8060 : Change installation prefix, if necessary.
8061 if $test X"$prefix" != X"$installprefix"; then
8062         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8063 else
8064         installman3dir="$man3direxp"
8065 fi
8066
8067 : What suffix to use on installed man pages
8068 case "$man3dir" in
8069 ' ')
8070         man3ext='0'
8071         ;;
8072 *)
8073         rp="What suffix should be used for the $package library man pages?"
8074         case "$man3ext" in
8075         '')     case "$man3dir" in
8076                 *3)  dflt=3 ;;
8077                 *3p) dflt=3p ;;
8078                 *3pm) dflt=3pm ;;
8079                 *l) dflt=l;;
8080                 *n) dflt=n;;
8081                 *o) dflt=o;;
8082                 *p) dflt=p;;
8083                 *C) dflt=C;;
8084                 *L) dflt=L;;
8085                 *L3) dflt=L3;;
8086                 *) dflt=3;;
8087                 esac
8088                 ;;
8089         *)      dflt="$man3ext";;
8090         esac
8091         . ./myread
8092         man3ext="$ans"
8093         ;;
8094 esac
8095
8096 : see if we have to deal with yellow pages, now NIS.
8097 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8098         if $test -f /usr/etc/nibindd; then
8099                 echo " "
8100                 echo "I'm fairly confident you're on a NeXT."
8101                 echo " "
8102                 rp='Do you get the hosts file via NetInfo?'
8103                 dflt=y
8104                 case "$hostcat" in
8105                 nidump*) ;;
8106                 '') ;;
8107                 *) dflt=n;;
8108                 esac
8109                 . ./myread
8110                 case "$ans" in
8111                 y*) hostcat='nidump hosts .';;
8112                 *)      case "$hostcat" in
8113                         nidump*) hostcat='';;
8114                         esac
8115                         ;;
8116                 esac
8117         fi
8118         case "$hostcat" in
8119         nidump*) ;;
8120         *)
8121                 case "$hostcat" in
8122                 *ypcat*) dflt=y;;
8123                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8124                                 dflt=y
8125                         else
8126                                 dflt=n
8127                         fi;;
8128                 *) dflt=n;;
8129                 esac
8130                 echo " "
8131                 rp='Are you getting the hosts file via yellow pages?'
8132                 . ./myread
8133                 case "$ans" in
8134                 y*) hostcat='ypcat hosts';;
8135                 *) hostcat='cat /etc/hosts';;
8136                 esac
8137                 ;;
8138         esac
8139 fi
8140 case "$hostcat" in
8141 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8142 esac
8143 case "$groupcat" in
8144 '') test -f /etc/group && groupcat='cat /etc/group';;
8145 esac
8146 case "$passcat" in
8147 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8148 esac
8149
8150 : now get the host name
8151 echo " "
8152 echo "Figuring out host name..." >&4
8153 case "$myhostname" in
8154 '') cont=true
8155         echo 'Maybe "hostname" will work...'
8156         if tans=`sh -c hostname 2>&1` ; then
8157                 myhostname=$tans
8158                 phostname=hostname
8159                 cont=''
8160         fi
8161         ;;
8162 *) cont='';;
8163 esac
8164 if $test "$cont"; then
8165         if ./xenix; then
8166                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8167                 if tans=`cat /etc/systemid 2>&1` ; then
8168                         myhostname=$tans
8169                         phostname='cat /etc/systemid'
8170                         echo "Whadyaknow.  Xenix always was a bit strange..."
8171                         cont=''
8172                 fi
8173         elif $test -r /etc/systemid; then
8174                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8175         fi
8176 fi
8177 if $test "$cont"; then
8178         echo 'No, maybe "uuname -l" will work...'
8179         if tans=`sh -c 'uuname -l' 2>&1` ; then
8180                 myhostname=$tans
8181                 phostname='uuname -l'
8182         else
8183                 echo 'Strange.  Maybe "uname -n" will work...'
8184                 if tans=`sh -c 'uname -n' 2>&1` ; then
8185                         myhostname=$tans
8186                         phostname='uname -n'
8187                 else
8188                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8189                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8190                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8191                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8192                         else
8193                                 case "$myhostname" in
8194                                 '') echo "Does this machine have an identity crisis or something?"
8195                                         phostname='';;
8196                                 *)
8197                                         echo "Well, you said $myhostname before..."
8198                                         phostname='echo $myhostname';;
8199                                 esac
8200                         fi
8201                 fi
8202         fi
8203 fi
8204 case "$myhostname" in
8205 '') myhostname=noname ;;
8206 esac
8207 : you do not want to know about this
8208 set $myhostname
8209 myhostname=$1
8210
8211 : verify guess
8212 if $test "$myhostname" ; then
8213         dflt=y
8214         rp='Your host name appears to be "'$myhostname'".'" Right?"
8215         . ./myread
8216         case "$ans" in
8217         y*) ;;
8218         *) myhostname='';;
8219         esac
8220 fi
8221
8222 : bad guess or no guess
8223 while $test "X$myhostname" = X ; do
8224         dflt=''
8225         rp="Please type the (one word) name of your host:"
8226         . ./myread
8227         myhostname="$ans"
8228 done
8229
8230 : translate upper to lower if necessary
8231 case "$myhostname" in
8232 *[A-Z]*)
8233         echo "(Normalizing case in your host name)"
8234         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8235         ;;
8236 esac
8237
8238 case "$myhostname" in
8239 *.*)
8240         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8241         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8242         echo "(Trimming domain name from host name--host name is now $myhostname)"
8243         ;;
8244 *) case "$mydomain" in
8245         '')
8246                 {
8247                         test "X$hostcat" = "Xypcat hosts" &&
8248                         ypmatch "$myhostname" hosts 2>/dev/null |\
8249                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8250                         $test -s hosts
8251                 } || {
8252                         test "X$hostcat" != "X" &&
8253                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8254                                         /[       ]$myhostname[  . ]/p" > hosts
8255                 }
8256                 tmp_re="[       . ]"
8257                 if $test -f hosts; then
8258                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8259                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8260                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8261                                 hosts | $sort | $uniq | \
8262                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8263                         case `$echo X$dflt` in
8264                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8265                                 dflt=.
8266                                 ;;
8267                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8268                                 ;;
8269                         esac
8270                 else
8271                         echo "(I cannot locate a hosts database anywhere)"
8272                         dflt=.
8273                 fi
8274                 case "$dflt" in
8275                 .)
8276                         tans=`./loc resolv.conf X /etc /usr/etc`
8277                         if $test -f "$tans"; then
8278                                 echo "(Attempting domain name extraction from $tans)"
8279                                 dflt=.`$sed -n -e 's/   / /g' \
8280                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8281                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8282                                 case "$dflt" in
8283                                 .) dflt=.`$sed -n -e 's/        / /g' \
8284                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8285                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8286                                         ;;
8287                                 esac
8288                         fi
8289                         ;;
8290                 esac
8291                 case "$dflt" in
8292                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8293                         dflt=.`sh -c domainname 2>/dev/null`
8294                         case "$dflt" in
8295                         '') dflt='.';;
8296                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8297                         esac
8298                         ;;
8299                 esac
8300                 case "$dflt$osname" in
8301                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8302                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8303                         ;;
8304                 esac
8305                 case "$dflt" in
8306                 .) echo "(Lost all hope -- silly guess then)"
8307                         dflt='.nonet'
8308                         ;;
8309                 esac
8310                 $rm -f hosts
8311                 ;;
8312         *) dflt="$mydomain";;
8313         esac;;
8314 esac
8315 echo " "
8316 rp="What is your domain name?"
8317 . ./myread
8318 tans="$ans"
8319 case "$ans" in
8320 '') ;;
8321 .*) ;;
8322 *) tans=".$tans";;
8323 esac
8324 mydomain="$tans"
8325
8326 : translate upper to lower if necessary
8327 case "$mydomain" in
8328 *[A-Z]*)
8329         echo "(Normalizing case in your domain name)"
8330         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8331         ;;
8332 esac
8333
8334 : a little sanity check here
8335 case "$phostname" in
8336 '') ;;
8337 *)
8338         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8339         $myhostname$mydomain|$myhostname) ;;
8340         *)
8341                 case "$phostname" in
8342                 sed*)
8343                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8344                         ;;
8345                 *)
8346                         echo "(That doesn't agree with your $phostname command, by the way.)"
8347                         ;;
8348                 esac
8349         ;;
8350         esac
8351         ;;
8352 esac
8353
8354 $cat <<EOM
8355
8356 I need to get your e-mail address in Internet format if possible, i.e.
8357 something like user@host.domain. Please answer accurately since I have
8358 no easy means to double check it. The default value provided below
8359 is most probably close to reality but may not be valid from outside
8360 your organization...
8361
8362 EOM
8363 cont=x
8364 while test "$cont"; do
8365         case "$cf_email" in
8366         '') dflt="$cf_by@$myhostname$mydomain";;
8367         *) dflt="$cf_email";;
8368         esac
8369         rp='What is your e-mail address?'
8370         . ./myread
8371         cf_email="$ans"
8372         case "$cf_email" in
8373         *@*.*) cont='' ;;
8374         *)
8375                 rp='Address does not look like an Internet one.  Use it anyway?'
8376                 case "$fastread" in
8377                 yes) dflt=y ;;
8378                 *) dflt=n ;;
8379                 esac
8380                 . ./myread
8381                 case "$ans" in
8382                 y*) cont='' ;;
8383                 *) echo " " ;;
8384                 esac
8385                 ;;
8386         esac
8387 done
8388
8389 $cat <<EOM
8390
8391 If you or somebody else will be maintaining perl at your site, please
8392 fill in the correct e-mail address here so that they may be contacted
8393 if necessary. Currently, the "perlbug" program included with perl
8394 will send mail to this address in addition to perlbug@perl.org. You may
8395 enter "none" for no administrator.
8396
8397 EOM
8398 case "$perladmin" in
8399 '') dflt="$cf_email";;
8400 *) dflt="$perladmin";;
8401 esac
8402 rp='Perl administrator e-mail address'
8403 . ./myread
8404 perladmin="$ans"
8405
8406 : determine whether to only install version-specific parts.
8407 echo " "
8408 $cat <<EOM
8409 Do you want to install only the version-specific parts of the perl
8410 distribution?  Usually you do *not* want to do this.
8411 EOM
8412 case "$versiononly" in
8413 "$define"|[Yy]*|true) dflt='y' ;;
8414 *) dflt='n';
8415 esac
8416 rp="Do you want to install only the version-specific parts of perl?"
8417 . ./myread
8418 case "$ans" in
8419 [yY]*)  val="$define";;
8420 *)      val="$undef" ;;
8421 esac
8422 set versiononly
8423 eval $setvar
8424
8425 case "$versiononly" in
8426 "$define") inc_version_list=''
8427            inc_version_list_init=0
8428            ;;
8429 esac
8430
8431 : figure out how to guarantee perl startup
8432 case "$startperl" in
8433 '')
8434         case "$sharpbang" in
8435         *!)
8436                 $cat <<EOH
8437
8438 I can use the #! construct to start perl on your system. This will
8439 make startup of perl scripts faster, but may cause problems if you
8440 want to share those scripts and perl is not in a standard place
8441 ($binexp/perl) on all your platforms. The alternative is to force
8442 a shell by starting the script with a single ':' character.
8443
8444 EOH
8445                 case "$versiononly" in
8446                 "$define")      dflt="$binexp/perl$version";;  
8447                 *)              dflt="$binexp/perl";;
8448                 esac
8449                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8450                 . ./myread
8451                 case "$ans" in
8452                 none)   startperl=": # use perl";;
8453                 *)      startperl="#!$ans"
8454                         if $test 30 -lt `echo "$ans" | wc -c`; then
8455                                 $cat >&4 <<EOM
8456
8457 WARNING:  Some systems limit the #! command to 32 characters.
8458 If you experience difficulty running Perl scripts with #!, try
8459 installing Perl in a directory with a shorter pathname.
8460
8461 EOM
8462                         fi ;;
8463                 esac
8464                 ;;
8465         *) startperl=": # use perl"
8466                 ;;
8467         esac
8468         ;;
8469 esac
8470 echo "I'll use $startperl to start perl scripts."
8471
8472 : figure best path for perl in scripts
8473 case "$perlpath" in
8474 '')
8475         case "$versiononly" in
8476         "$define")      perlpath="$binexp/perl$version";;
8477         *)              perlpath="$binexp/perl";;
8478         esac
8479         case "$startperl" in
8480         *!*) ;;
8481         *)
8482                 $cat <<EOH
8483
8484 I will use the "eval 'exec'" idiom to start Perl on your system.
8485 I can use the full path of your Perl binary for this purpose, but
8486 doing so may cause problems if you want to share those scripts and
8487 Perl is not always in a standard place ($binexp/perl).
8488
8489 EOH
8490                 dflt="$binexp/perl"
8491                 rp="What path shall I use in \"eval 'exec'\"?"
8492                 . ./myread
8493                 perlpath="$ans"
8494                 ;;
8495         esac
8496         ;;
8497 esac
8498 case "$startperl" in
8499 *!*)    ;;
8500 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8501 esac
8502
8503 : determine where public executable scripts go
8504 set scriptdir scriptdir
8505 eval $prefixit
8506 case "$scriptdir" in
8507 '')
8508         dflt="$bin"
8509         : guess some guesses
8510         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8511         $test -d /usr/share/bin     && dflt=/usr/share/bin
8512         $test -d /usr/local/script  && dflt=/usr/local/script
8513         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8514         $test -d $prefixexp/script  && dflt=$prefixexp/script
8515         set dflt
8516         eval $prefixup
8517         ;;
8518 *)  dflt="$scriptdir"
8519         ;;
8520 esac
8521 $cat <<EOM
8522  
8523 Some installations have a separate directory just for executable scripts so
8524 that they can mount it across multiple architectures but keep the scripts in
8525 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8526 Or you might just lump your scripts in with all your other executables.
8527  
8528 EOM
8529 fn=d~
8530 rp='Where do you keep publicly executable scripts?'
8531 . ./getfile
8532 if $test "X$ansexp" != "X$scriptdirexp"; then
8533         installscript=''
8534 fi
8535 scriptdir="$ans"
8536 scriptdirexp="$ansexp"
8537 : Change installation prefix, if necessary.
8538 if $test X"$prefix" != X"$installprefix"; then
8539         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8540 else
8541         installscript="$scriptdirexp"
8542 fi
8543
8544 : determine where add-on public executables go
8545 case "$sitebin" in
8546 '')     dflt=$siteprefix/bin ;;
8547 *)      dflt=$sitebin ;;
8548 esac
8549 fn=d~
8550 rp='Pathname where the add-on public executables should be installed?'
8551 . ./getfile
8552 sitebin="$ans"
8553 sitebinexp="$ansexp"
8554 : Change installation prefix, if necessary.
8555 if $test X"$prefix" != X"$installprefix"; then
8556         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8557 else
8558         installsitebin="$sitebinexp"
8559 fi
8560
8561 : determine where add-on html pages go
8562 : There is no standard location, so try to copy the previously-selected
8563 : directory structure for the core html pages.
8564 case "$sitehtml1dir" in
8565 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8566 *)     dflt=$sitehtml1dir ;;
8567 esac
8568 case "$dflt" in
8569 ''|' ') dflt=none ;;
8570 esac
8571 fn=dn+~
8572 rp='Pathname where the site-specific html pages should be installed?'
8573 . ./getfile
8574 sitehtml1dir="$ans"
8575 sitehtml1direxp="$ansexp"
8576 : Change installation prefix, if necessary.
8577 if $test X"$prefix" != X"$installprefix"; then
8578         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8579 else
8580         installsitehtml1dir="$sitehtml1direxp"
8581 fi
8582
8583 : determine where add-on library html pages go
8584 : There is no standard location, so try to copy the previously-selected
8585 : directory structure for the core html pages.
8586 case "$sitehtml3dir" in
8587 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8588 *)     dflt=$sitehtml3dir ;;
8589 esac
8590 case "$dflt" in
8591 ''|' ') dflt=none ;;
8592 esac
8593 fn=dn+~
8594 rp='Pathname where the site-specific library html pages should be installed?'
8595 . ./getfile
8596 sitehtml3dir="$ans"
8597 sitehtml3direxp="$ansexp"
8598 : Change installation prefix, if necessary.
8599 if $test X"$prefix" != X"$installprefix"; then
8600         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8601 else
8602         installsitehtml3dir="$sitehtml3direxp"
8603 fi
8604
8605 : determine where add-on manual pages go
8606 case "$siteman1dir" in
8607 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8608 *)      dflt=$siteman1dir ;;
8609 esac
8610 case "$dflt" in
8611 ''|' ') dflt=none ;;
8612 esac
8613 fn=dn+~
8614 rp='Pathname where the site-specific manual pages should be installed?'
8615 . ./getfile
8616 siteman1dir="$ans"
8617 siteman1direxp="$ansexp"
8618 : Change installation prefix, if necessary.
8619 if $test X"$prefix" != X"$installprefix"; then
8620         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8621 else
8622         installsiteman1dir="$siteman1direxp"
8623 fi
8624
8625 : determine where add-on library man pages go
8626 case "$siteman3dir" in
8627 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8628 *)      dflt=$siteman3dir ;;
8629 esac
8630 case "$dflt" in
8631 ''|' ') dflt=none ;;
8632 esac
8633 fn=dn+~
8634 rp='Pathname where the site-specific library manual pages should be installed?'
8635 . ./getfile
8636 siteman3dir="$ans"
8637 siteman3direxp="$ansexp"
8638 : Change installation prefix, if necessary.
8639 if $test X"$prefix" != X"$installprefix"; then
8640         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8641 else
8642         installsiteman3dir="$siteman3direxp"
8643 fi
8644
8645 : determine where add-on public executable scripts go
8646 case "$sitescript" in
8647 '')     dflt=$siteprefix/script
8648         $test -d $dflt || dflt=$sitebin ;;
8649 *)  dflt="$sitescript" ;;
8650 esac
8651 fn=d~+
8652 rp='Pathname where add-on public executable scripts should be installed?'
8653 . ./getfile
8654 sitescript="$ans"
8655 sitescriptexp="$ansexp"
8656 : Change installation prefix, if necessary.
8657 if $test X"$prefix" != X"$installprefix"; then
8658         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8659 else
8660         installsitescript="$sitescriptexp"
8661 fi
8662
8663 case "$usefaststdio" in
8664 $define|true|[yY]*|'')
8665         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8666         case "$xversion" in
8667         [68])   dflt='y' ;;
8668         *)      dflt='n' ;;
8669         esac
8670         ;;
8671 *) dflt='n';;
8672 esac
8673 cat <<EOM
8674
8675 Perl can be built to use 'fast stdio', which means using the stdio
8676 library but also directly manipulating the stdio buffers to enable
8677 faster I/O.  Using stdio is better for backward compatibility (especially
8678 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8679 interface has been preferred instead of stdio.
8680
8681 If this doesn't make any sense to you, just accept the default '$dflt'.
8682 EOM
8683 rp='Use the "fast stdio" if available?'
8684 . ./myread
8685 case "$ans" in
8686 y|Y)    val="$define" ;;     
8687 *)      val="$undef" ;;
8688 esac
8689 set usefaststdio
8690 eval $setvar
8691
8692
8693 : define an is-a-typedef? function
8694 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8695 case "$inclist" in
8696 "") inclist="sys/types.h";;
8697 esac;
8698 eval "varval=\$$var";
8699 case "$varval" in
8700 "")
8701         $rm -f temp.c;
8702         for inc in $inclist; do
8703                 echo "#include <$inc>" >>temp.c;
8704         done;
8705         echo "#ifdef $type" >> temp.c;
8706         echo "printf(\"We have $type\");" >> temp.c;
8707         echo "#endif" >> temp.c;
8708         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8709         if $contains $type temp.E >/dev/null 2>&1; then
8710                 eval "$var=\$type";
8711         else
8712                 eval "$var=\$def";
8713         fi;
8714         $rm -f temp.?;;
8715 *) eval "$var=\$varval";;
8716 esac'
8717
8718 : define an is-a-typedef? function that prompts if the type is not available.
8719 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8720 case "$inclist" in
8721 "") inclist="sys/types.h";;
8722 esac;
8723 eval "varval=\$$var";
8724 case "$varval" in
8725 "")
8726         $rm -f temp.c;
8727         for inc in $inclist; do
8728                 echo "#include <$inc>" >>temp.c;
8729         done;
8730         echo "#ifdef $type" >> temp.c;
8731         echo "printf(\"We have $type\");" >> temp.c;
8732         echo "#endif" >> temp.c;
8733         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8734         echo " " ;
8735         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8736         if $contains $type temp.E >/dev/null 2>&1; then
8737                 echo "$type found." >&4;
8738                 eval "$var=\$type";
8739         else
8740                 echo "$type NOT found." >&4;
8741                 dflt="$def";
8742                 . ./myread ;
8743                 eval "$var=\$ans";
8744         fi;
8745         $rm -f temp.?;;
8746 *) eval "$var=\$varval";;
8747 esac'
8748
8749 : see what type lseek is declared as in the kernel
8750 rp="What is the type used for lseek's offset on this system?"
8751 set off_t lseektype long stdio.h sys/types.h
8752 eval $typedef_ask
8753
8754 echo " "
8755 echo "Checking to see how big your file offsets are..." >&4
8756 $cat >try.c <<EOCP
8757 #include <sys/types.h>
8758 #include <stdio.h>
8759 int main()
8760 {
8761     printf("%d\n", (int)sizeof($lseektype));
8762     return(0); 
8763 }
8764 EOCP
8765 set try
8766 if eval $compile_ok; then
8767         lseeksize=`$run ./try`
8768         echo "Your file offsets are $lseeksize bytes long."
8769 else
8770         dflt=$longsize
8771         echo " "
8772         echo "(I can't seem to compile the test program.  Guessing...)"
8773         rp="What is the size of your file offsets (in bytes)?"
8774         . ./myread
8775         lseeksize="$ans"
8776 fi
8777 $rm -f try.c try
8778
8779 : see what type file positions are declared as in the library
8780 rp="What is the type for file position used by fsetpos()?"
8781 set fpos_t fpostype long stdio.h sys/types.h
8782 eval $typedef_ask
8783
8784 echo " "
8785 case "$fpostype" in
8786 *_t) zzz="$fpostype"    ;;
8787 *)   zzz="fpos_t"       ;;
8788 esac
8789 echo "Checking the size of $zzz..." >&4 
8790 cat > try.c <<EOCP
8791 #include <sys/types.h>
8792 #include <stdio.h>
8793 #$i_stdlib I_STDLIB
8794 #ifdef I_STDLIB
8795 #include <stdlib.h>
8796 #endif
8797 int main() {
8798     printf("%d\n", (int)sizeof($fpostype));
8799     exit(0);
8800 }
8801 EOCP
8802 set try
8803 if eval $compile_ok; then
8804         yyy=`$run ./try`
8805         case "$yyy" in
8806         '')     fpossize=4
8807                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8808                 ;;
8809         *)      fpossize=$yyy
8810                 echo "Your $zzz is $fpossize bytes long."
8811                 ;;
8812         esac
8813 else
8814         dflt="$longsize"
8815         echo " " >&4
8816         echo "(I can't compile the test program.  Guessing...)" >&4
8817         rp="What is the size of your file positions (in bytes)?"
8818         . ./myread
8819         fpossize="$ans"
8820 fi
8821
8822 # Backward compatibility (uselfs is deprecated).
8823 case "$uselfs" in
8824 "$define"|true|[yY]*)
8825         cat <<EOM >&4
8826
8827 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8828 EOM
8829         uselargefiles="$define"
8830         ;;
8831 esac                          
8832
8833 case "$lseeksize:$fpossize" in
8834 8:8) cat <<EOM
8835
8836 You can have files larger than 2 gigabytes.
8837 EOM
8838    val="$define" ;;
8839 *)    case "$uselargefiles" in
8840    "$undef"|false|[nN]*) dflt='n' ;;
8841    *)   dflt='y' ;;
8842    esac
8843    cat <<EOM
8844
8845 Perl can be built to understand large files (files larger than 2 gigabytes)
8846 on some systems.  To do so, Configure can be run with -Duselargefiles.
8847
8848 If this doesn't make any sense to you, just accept the default '$dflt'.
8849 EOM
8850    rp='Try to understand large files, if available?'
8851    . ./myread
8852    case "$ans" in
8853    y|Y)         val="$define" ;;
8854    *)           val="$undef"  ;;
8855    esac
8856    ;;
8857 esac
8858 set uselargefiles
8859 eval $setvar
8860 : Look for a hint-file generated 'call-back-unit'.  If the
8861 : user has specified that a large files perl is to be built,
8862 : we may need to set or change some other defaults.
8863 if $test -f uselargefiles.cbu; then
8864         echo "Your platform has some specific hints regarding large file builds, using them..."
8865         . ./uselargefiles.cbu
8866 fi
8867 case "$uselargefiles" in
8868 "$define")
8869         if $test -f uselargefiles.cbu; then
8870                 echo " "
8871                 echo "Rechecking to see how big your file offsets are..." >&4
8872                 $cat >try.c <<EOCP
8873 #include <sys/types.h>
8874 #include <stdio.h>
8875 int main()
8876 {
8877     printf("%d\n", (int)sizeof($lseektype));
8878     return(0); 
8879 }
8880 EOCP
8881                 set try
8882                 if eval $compile_ok; then
8883                         lseeksize=`$run ./try`
8884                         $echo "Your file offsets are now $lseeksize bytes long."
8885                 else
8886                         dflt="$lseeksize"
8887                         echo " "
8888                         echo "(I can't seem to compile the test program.  Guessing...)"
8889                         rp="What is the size of your file offsets (in bytes)?"
8890                         . ./myread
8891                         lseeksize="$ans"
8892                 fi
8893                 case "$fpostype" in
8894                 *_t) zzz="$fpostype"    ;;
8895                 *)   zzz="fpos_t"       ;;
8896                 esac
8897                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8898                 $cat > try.c <<EOCP
8899 #include <sys/types.h>
8900 #include <stdio.h>
8901 #$i_stdlib I_STDLIB
8902 #ifdef I_STDLIB
8903 #include <stdlib.h>
8904 #endif
8905 int main() {
8906     printf("%d\n", (int)sizeof($fpostype));
8907     return(0);
8908 }
8909 EOCP
8910                 set try
8911                 if eval $compile_ok; then
8912                         yyy=`$run ./try`
8913                         dflt="$lseeksize"
8914                         case "$yyy" in
8915                         '')     echo " "
8916                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8917                                 ;;
8918                         *)      fpossize=$yyy
8919                                 echo " $fpossize bytes." >&4
8920                                 ;;
8921                         esac
8922                 else
8923                         dflt="$fpossize"
8924                         echo " "
8925                         echo "(I can't compile the test program.  Guessing...)" >&4
8926                         rp="What is the size of your file positions (in bytes)?"
8927                         . ./myread
8928                         fpossize="$ans"
8929                 fi
8930                 $rm -f try.c try
8931         fi
8932         ;;
8933 esac
8934
8935 case "$vendorprefix" in
8936 '')     d_vendorbin="$undef"
8937         vendorbin=''
8938         vendorbinexp=''
8939         ;;
8940 *)      d_vendorbin="$define"
8941         : determine where vendor-supplied executables go.
8942         case "$vendorbin" in
8943         '') dflt=$vendorprefix/bin ;;
8944         *)      dflt="$vendorbin" ;;
8945         esac
8946         fn=d~+
8947         rp='Pathname for the vendor-supplied executables directory?'
8948         . ./getfile
8949         vendorbin="$ans"
8950         vendorbinexp="$ansexp"
8951         ;;
8952 esac
8953 : Change installation prefix, if necessary.
8954 if $test X"$prefix" != X"$installprefix"; then
8955         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8956 else
8957         installvendorbin="$vendorbinexp"
8958 fi
8959
8960 case "$vendorprefix" in
8961 '')     vendorhtml1dir=''
8962         vendorhtml1direxp=''
8963         ;;
8964 *)      : determine where vendor-supplied html pages go.
8965         : There is no standard location, so try to copy the previously-selected
8966         : directory structure for the core html pages.
8967         : XXX Better default suggestions would be welcome.
8968         case "$vendorhtml1dir" in
8969         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8970         *)      dflt=$vendorhtml1dir ;;
8971         esac
8972         case "$dflt" in
8973         ''|' ') dflt=none ;;
8974         esac
8975         fn=dn+~
8976         rp='Pathname for the vendor-supplied html pages?'
8977         . ./getfile
8978         vendorhtml1dir="$ans"
8979         vendorhtml1direxp="$ansexp"
8980         ;;
8981 esac
8982 : Use ' ' for none so value is preserved next time through Configure
8983 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
8984 : Change installation prefix, if necessary.
8985 if $test X"$prefix" != X"$installprefix"; then
8986         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
8987 else
8988         installvendorhtml1dir="$vendorhtml1direxp"
8989 fi
8990
8991 case "$vendorprefix" in
8992 '')     vendorhtml3dir=''
8993         vendorhtml3direxp=''
8994         ;;
8995 *)      : determine where vendor-supplied module html pages go.
8996         : There is no standard location, so try to copy the previously-selected
8997         : directory structure for the core html pages.
8998         : XXX Better default suggestions would be welcome.
8999         case "$vendorhtml3dir" in
9000         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9001         *)      dflt=$vendorhtml3dir ;;
9002         esac
9003         case "$dflt" in
9004         ''|' ') dflt=none ;;
9005         esac
9006         fn=dn+~
9007         rp='Pathname for the vendor-supplied html pages?'
9008         . ./getfile
9009         vendorhtml3dir="$ans"
9010         vendorhtml3direxp="$ansexp"
9011         ;;
9012 esac
9013 : Use ' ' for none so value is preserved next time through Configure
9014 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9015 : Change installation prefix, if necessary.
9016 if $test X"$prefix" != X"$installprefix"; then
9017         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9018 else
9019         installvendorhtml3dir="$vendorhtml3direxp"
9020 fi
9021
9022 case "$vendorprefix" in
9023 '')     vendorman1dir=''
9024         vendorman1direxp=''
9025         ;;
9026 *)      : determine where vendor-supplied manual pages go.
9027         case "$vendorman1dir" in
9028         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9029         *)      dflt=$vendorman1dir ;;
9030         esac
9031         case "$dflt" in
9032         ''|' ') dflt=none ;;
9033         esac
9034         fn=nd~+
9035         rp='Pathname for the vendor-supplied manual section 1 pages?'
9036         . ./getfile
9037         vendorman1dir="$ans"
9038         vendorman1direxp="$ansexp"
9039         ;;
9040 esac
9041 : Use ' ' for none so value is preserved next time through Configure
9042 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9043 : Change installation prefix, if necessary.
9044 if $test X"$prefix" != X"$installprefix"; then
9045         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9046 else
9047         installvendorman1dir="$vendorman1direxp"
9048 fi
9049
9050 case "$vendorprefix" in
9051 '')     vendorman3dir=''
9052         vendorman3direxp=''
9053         ;;
9054 *)      : determine where vendor-supplied module manual pages go.
9055         case "$vendorman3dir" in
9056         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9057         *)      dflt=$vendorman3dir ;;
9058         esac
9059         case "$dflt" in
9060         ''|' ') dflt=none ;;
9061         esac
9062         fn=nd~+
9063         rp='Pathname for the vendor-supplied manual section 3 pages?'
9064         . ./getfile
9065         vendorman3dir="$ans"
9066         vendorman3direxp="$ansexp"
9067         ;;
9068 esac
9069 : Use ' ' for none so value is preserved next time through Configure
9070 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9071 : Change installation prefix, if necessary.
9072 if $test X"$prefix" != X"$installprefix"; then
9073         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9074 else
9075         installvendorman3dir="$vendorman3direxp"
9076 fi
9077
9078 case "$vendorprefix" in
9079 '')     d_vendorscript="$undef"
9080         vendorscript=''
9081         vendorscriptexp=''
9082         ;;
9083 *)      d_vendorscript="$define"
9084         : determine where vendor-supplied scripts go.
9085         case "$vendorscript" in
9086         '')     dflt=$vendorprefix/script
9087                 $test -d $dflt || dflt=$vendorbin ;;
9088         *)  dflt="$vendorscript" ;;
9089         esac
9090         $cat <<EOM
9091
9092 The installation process will create a directory for 
9093 vendor-supplied scripts.
9094
9095 EOM
9096         fn=d~+
9097         rp='Pathname for the vendor-supplied scripts directory?'
9098         . ./getfile
9099         vendorscript="$ans"
9100         vendorscriptexp="$ansexp"
9101         ;;
9102 esac
9103 : Change installation prefix, if necessary.
9104 if $test X"$prefix" != X"$installprefix"; then
9105         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9106 else
9107         installvendorscript="$vendorscriptexp"
9108 fi
9109
9110 : see if qgcvt exists
9111 set qgcvt d_qgcvt
9112 eval $inlibc
9113
9114 echo " "
9115
9116 if $test X"$d_longdbl" = X"$define"; then
9117
9118 echo "Checking how to print long doubles..." >&4
9119
9120 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9121         $cat >try.c <<'EOCP'
9122 #include <sys/types.h>
9123 #include <stdio.h>
9124 int main() {
9125   double d = 123.456;
9126   printf("%.3f\n", d);
9127 }
9128 EOCP
9129         set try
9130         if eval $compile; then
9131                 yyy=`$run ./try`
9132                 case "$yyy" in
9133                 123.456)
9134                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9135                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9136                         echo "We will use %f."
9137                         ;;
9138                 esac
9139         fi
9140 fi
9141
9142 if $test X"$sPRIfldbl" = X; then
9143         $cat >try.c <<'EOCP'
9144 #include <sys/types.h>
9145 #include <stdio.h>
9146 int main() {
9147   long double d = 123.456;
9148   printf("%.3Lf\n", d);
9149 }
9150 EOCP
9151         set try
9152         if eval $compile; then
9153                 yyy=`$run ./try`
9154                 case "$yyy" in
9155                 123.456)
9156                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9157                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9158                         echo "We will use %Lf."
9159                         ;;
9160                 esac
9161         fi
9162 fi
9163
9164 if $test X"$sPRIfldbl" = X; then
9165         $cat >try.c <<'EOCP'
9166 #include <sys/types.h>
9167 #include <stdio.h>
9168 int main() {
9169   long double d = 123.456;
9170   printf("%.3llf\n", d);
9171 }
9172 EOCP
9173         set try
9174         if eval $compile; then
9175                 yyy=`$run ./try`
9176                 case "$yyy" in
9177                 123.456)
9178                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9179                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9180                         echo "We will use %llf."
9181                         ;;
9182                 esac
9183         fi
9184 fi
9185
9186 if $test X"$sPRIfldbl" = X; then
9187         $cat >try.c <<'EOCP'
9188 #include <sys/types.h>
9189 #include <stdio.h>
9190 int main() {
9191   long double d = 123.456;
9192   printf("%.3lf\n", d);
9193 }
9194 EOCP
9195         set try
9196         if eval $compile; then
9197                 yyy=`$run ./try`
9198                 case "$yyy" in
9199                 123.456)
9200                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9201                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9202                         echo "We will use %lf."
9203                         ;;
9204                 esac
9205         fi
9206 fi
9207
9208 if $test X"$sPRIfldbl" = X; then
9209         echo "Cannot figure out how to print long doubles." >&4
9210 else
9211         sSCNfldbl=$sPRIfldbl    # expect consistency
9212 fi
9213
9214 $rm -f try try.*
9215
9216 fi # d_longdbl
9217
9218 case "$sPRIfldbl" in
9219 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9220         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9221         d_SCNfldbl="$undef";
9222         ;;
9223 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9224         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9225         d_SCNfldbl="$define";
9226         ;;
9227 esac
9228
9229 : Check how to convert floats to strings.
9230
9231 if test "X$d_Gconvert" = X; then
9232
9233 echo " "
9234 echo "Checking for an efficient way to convert floats to strings."
9235 echo " " > try.c
9236 case "$uselongdouble" in
9237 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9238 esac
9239 case "$d_longdbl" in
9240 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9241 esac
9242 case "$d_PRIgldbl" in
9243 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9244 esac
9245 $cat >>try.c <<EOP
9246 #ifdef TRY_gconvert
9247 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9248 char *myname = "gconvert";
9249 #endif
9250 #ifdef TRY_gcvt
9251 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9252 char *myname = "gcvt";
9253 #endif
9254 #ifdef TRY_qgcvt
9255 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9256 char *myname = "qgcvt";
9257 #define DOUBLETYPE long double
9258 #endif
9259 #ifdef TRY_sprintf
9260 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9261 #ifdef HAS_PRIgldbl
9262 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9263 #else
9264 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9265 #endif
9266 #else
9267 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9268 #endif
9269 char *myname = "sprintf";
9270 #endif
9271
9272 #ifndef DOUBLETYPE
9273 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9274 #define DOUBLETYPE long double
9275 #else
9276 #define DOUBLETYPE double
9277 #endif
9278 #endif
9279
9280 #include <stdio.h>
9281
9282 #define I_STDLIB $i_stdlib
9283 #ifdef I_STDLIB
9284 #include <stdlib.h>
9285 #endif
9286
9287 int
9288 checkit(expect, got)
9289 char *expect;
9290 char *got;
9291 {
9292     if (strcmp(expect, got)) {
9293                 printf("%s oddity:  Expected %s, got %s\n",
9294                         myname, expect, got);
9295                 exit(1);
9296         }
9297 }
9298
9299 int main()
9300
9301         char buf[64]; 
9302         buf[63] = '\0';
9303
9304         /* This must be 1st test on (which?) platform */
9305         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9306         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9307         checkit("0.1", buf);
9308
9309         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9310         checkit("0.01", buf);
9311
9312         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9313         checkit("0.001", buf);
9314
9315         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9316         checkit("0.0001", buf);
9317
9318         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9319         if (strlen(buf) > 5)
9320             checkit("9e-005", buf); /* for Microsoft ?? */
9321         else
9322             checkit("9e-05", buf);
9323
9324         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9325         checkit("1", buf);
9326
9327         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9328         checkit("1.1", buf);
9329
9330         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9331         checkit("1.01", buf);
9332
9333         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9334         checkit("1.001", buf);
9335
9336         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9337         checkit("1.0001", buf);
9338
9339         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9340         checkit("1.00001", buf);
9341
9342         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9343         checkit("1.000001", buf);
9344
9345         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9346         checkit("0", buf);
9347
9348         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9349         checkit("-1", buf);
9350
9351         /* Some Linux gcvt's give 1.e+5 here. */
9352         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9353         checkit("100000", buf);
9354         
9355         /* Some Linux gcvt's give -1.e+5 here. */
9356         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9357         checkit("-100000", buf);
9358
9359         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9360         checkit("123.456", buf);
9361
9362         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9363         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9364         /* 34 should be enough to scare even long double
9365          * places into using the e notation. */
9366         if (strlen(buf) > 5)
9367             checkit("1e+034", buf); /* for Microsoft */
9368         else
9369             checkit("1e+34", buf);
9370
9371         /* For Perl, if you add additional tests here, also add them to
9372          * t/base/num.t for benefit of platforms not using Configure or
9373          * overriding d_Gconvert */
9374
9375         exit(0);
9376 }
9377 EOP
9378 : first add preferred functions to our list
9379 xxx_list=""
9380 for xxx_convert in $gconvert_preference; do
9381     case $xxx_convert in
9382     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9383     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9384     esac 
9385 done
9386 : then add any others
9387 for xxx_convert in gconvert gcvt sprintf; do
9388     case "$xxx_list" in
9389     *$xxx_convert*) ;;
9390     *) xxx_list="$xxx_list $xxx_convert" ;;
9391     esac 
9392 done
9393
9394 case "$d_longdbl$uselongdouble" in
9395 "$define$define")
9396     : again, add prefered functions to our list first
9397     xxx_ld_list=""
9398     for xxx_convert in $gconvert_ld_preference; do
9399         case $xxx_convert in
9400         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9401         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9402         esac
9403     done
9404     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9405     for xxx_convert in qgcvt sprintf $xxx_list; do
9406         case "$xxx_ld_list" in
9407         $xxx_convert*|*" $xxx_convert"*) ;;
9408         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9409         esac
9410     done
9411     : if sprintf cannot do long doubles, move it to the end
9412     if test "$d_PRIgldbl" != "$define"; then
9413         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9414     fi
9415     : if no qgcvt, remove it
9416     if test "$d_qgcvt" != "$define"; then
9417         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9418     fi
9419     : use the ld_list
9420     xxx_list="$xxx_ld_list"
9421     ;;
9422 esac
9423
9424 for xxx_convert in $xxx_list; do
9425         echo "Trying $xxx_convert..."
9426         $rm -f try try$_o
9427         set try -DTRY_$xxx_convert
9428         if eval $compile; then
9429                 echo "$xxx_convert() found." >&4
9430                 if $run ./try; then
9431                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9432                         break;
9433                 else
9434                         echo "...But $xxx_convert didn't work as I expected."
9435                         xxx_convert=''
9436                 fi
9437         else
9438                 echo "$xxx_convert NOT found." >&4
9439         fi
9440 done
9441
9442 if test X$xxx_convert = X; then
9443     echo "*** WHOA THERE!!! ***" >&4
9444     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9445     xxx_convert=sprintf
9446 fi
9447
9448 case "$xxx_convert" in
9449 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9450 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9451 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9452 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9453    "$define$define$define")
9454       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9455    "$define$define$undef")
9456       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9457    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9458    esac
9459    ;;  
9460 esac
9461
9462 fi
9463
9464 : see if _fwalk exists
9465 set fwalk d__fwalk
9466 eval $inlibc
9467
9468 : Initialize h_fcntl
9469 h_fcntl=false
9470
9471 : Initialize h_sysfile
9472 h_sysfile=false
9473
9474 : access call always available on UNIX
9475 set access d_access
9476 eval $inlibc
9477
9478 : locate the flags for 'access()'
9479 case "$d_access" in
9480 "$define")
9481         echo " "
9482         $cat >access.c <<EOCP
9483 #include <sys/types.h>
9484 #ifdef I_FCNTL
9485 #include <fcntl.h>
9486 #endif
9487 #ifdef I_SYS_FILE
9488 #include <sys/file.h>
9489 #endif
9490 #ifdef I_UNISTD
9491 #include <unistd.h>
9492 #endif
9493 #$i_stdlib I_STDLIB
9494 #ifdef I_STDLIB
9495 #include <stdlib.h>
9496 #endif
9497 int main() {
9498         exit(R_OK);
9499 }
9500 EOCP
9501         : check sys/file.h first, no particular reason here
9502         if $test `./findhdr sys/file.h` && \
9503                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9504                 h_sysfile=true;
9505                 echo "<sys/file.h> defines the *_OK access constants." >&4
9506         elif $test `./findhdr fcntl.h` && \
9507                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9508                 h_fcntl=true;
9509                 echo "<fcntl.h> defines the *_OK access constants." >&4
9510         elif $test `./findhdr unistd.h` && \
9511                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9512                 echo "<unistd.h> defines the *_OK access constants." >&4
9513         else
9514                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9515         fi
9516         ;;
9517 esac
9518 $rm -f access*
9519
9520 : see if accessx exists
9521 set accessx d_accessx
9522 eval $inlibc
9523
9524 : see if aintl exists
9525 set aintl d_aintl
9526 eval $inlibc
9527
9528 : see if alarm exists
9529 set alarm d_alarm
9530 eval $inlibc
9531
9532 : see if POSIX threads are available
9533 set pthread.h i_pthread
9534 eval $inhdr
9535
9536 : define a fucntion to check prototypes
9537 $cat > protochk <<EOSH
9538 $startsh
9539 cc="$cc"
9540 optimize="$optimize"
9541 ccflags="$ccflags"
9542 prototype="$prototype"
9543 define="$define"
9544 rm=$rm
9545 usethreads=$usethreads
9546 i_pthread=$i_pthread
9547 pthread_h_first=$pthread_h_first
9548 EOSH
9549
9550 $cat >> protochk <<'EOSH'
9551
9552 $rm -f try.c
9553 foo="$1"
9554 shift
9555 while test $# -ge 2; do
9556         case "$1" in
9557                 $define) echo "#include <$2>" >> try.c ;;
9558                 literal) echo "$2" >> try.c ;;
9559         esac
9560     # Extra magic for the benefit of systems that need pthread.h
9561     # to be included early to correctly detect threadsafe functions.
9562     # Such functions must guarantee themselves, though, that the usethreads
9563     # and i_pthread have been defined, before calling protochk.
9564     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9565         echo "#include <pthread.h>" >> try.c
9566         pthread_h_done=yes
9567     fi
9568     shift 2
9569 done
9570 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9571 cat >> try.c <<'EOCP'
9572 #ifdef CAN_PROTOTYPE
9573 #define _(args) args
9574 #else
9575 #define _(args) ()
9576 #endif
9577 EOCP
9578 echo "$foo" >> try.c
9579 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9580 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9581 status=$?
9582 $rm -f try.[co]
9583 exit $status
9584 EOSH
9585 chmod +x protochk
9586 $eunicefix protochk
9587
9588 hasproto='varname=$1; func=$2; shift; shift;
9589 while $test $# -ge 2; do
9590         case "$1" in
9591         $define) echo "#include <$2>";;
9592         esac ;
9593     shift 2;
9594 done > try.c;
9595 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9596 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9597         echo "$func() prototype found.";
9598         val="$define";
9599 else
9600         echo "$func() prototype NOT found.";
9601         val="$undef";
9602 fi;
9603 set $varname;
9604 eval $setvar;
9605 $rm -f try.c tryout.c'
9606
9607 : see if sys/types.h has to be included
9608 set sys/types.h i_systypes
9609 eval $inhdr
9610
9611 : see if sys/select.h has to be included
9612 set sys/select.h i_sysselct
9613 eval $inhdr
9614
9615 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9616 while $test $# -ge 2; do
9617         case "$1" in
9618         $define) echo "#include <$2>";;
9619         esac ;
9620     shift 2;
9621 done > try.c;
9622 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9623 set try;
9624 if eval $compile; then
9625         val="$define";
9626 else
9627         val="$undef";
9628 fi;
9629 set $varname;
9630 eval $setvar;
9631 $rm -f try.c try.o'
9632
9633 : see if we should include time.h, sys/time.h, or both
9634 echo " "
9635 if test "X$timeincl" = X; then
9636         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9637         $echo $n "I'm now running the test program...$c"
9638         $cat >try.c <<EOCP
9639 #include <sys/types.h>
9640 #ifdef I_TIME
9641 #include <time.h>
9642 #endif
9643 #ifdef I_SYSTIME
9644 #ifdef SYSTIMEKERNEL
9645 #define KERNEL
9646 #endif
9647 #include <sys/time.h>
9648 #endif
9649 #ifdef I_SYSSELECT
9650 #include <sys/select.h>
9651 #endif
9652 #$i_stdlib I_STDLIB
9653 #ifdef I_STDLIB
9654 #include <stdlib.h>
9655 #endif
9656 int main()
9657 {
9658         struct tm foo;
9659 #ifdef S_TIMEVAL
9660         struct timeval bar;
9661 #endif
9662 #ifdef S_TIMEZONE
9663         struct timezone tzp;
9664 #endif
9665         if (foo.tm_sec == foo.tm_sec)
9666                 exit(0);
9667 #ifdef S_TIMEVAL
9668         if (bar.tv_sec == bar.tv_sec)
9669                 exit(0);
9670 #endif
9671         exit(1);
9672 }
9673 EOCP
9674         flags=''
9675         for s_timezone in '-DS_TIMEZONE' ''; do
9676         sysselect=''
9677         for s_timeval in '-DS_TIMEVAL' ''; do
9678         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9679         for i_time in '' '-DI_TIME'; do
9680         for i_systime in '-DI_SYSTIME' ''; do
9681                 case "$flags" in
9682                 '') $echo $n ".$c"
9683                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9684                         if eval $compile; then
9685                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9686                                 shift
9687                                 flags="$*"
9688                                 echo " "
9689                                 $echo $n "Succeeded with $flags$c"
9690                         fi
9691                         ;;
9692                 esac
9693         done
9694         done
9695         done
9696         done
9697         done
9698         timeincl=''
9699         echo " "
9700         case "$flags" in
9701         *SYSTIMEKERNEL*) i_systimek="$define"
9702                 timeincl=`./findhdr sys/time.h`
9703                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9704         *) i_systimek="$undef";;
9705         esac
9706         case "$flags" in
9707         *I_TIME*) i_time="$define"
9708                 timeincl=`./findhdr time.h`" $timeincl"
9709                 echo "We'll include <time.h>." >&4;;
9710         *) i_time="$undef";;
9711         esac
9712         case "$flags" in
9713         *I_SYSTIME*) i_systime="$define"
9714                 timeincl=`./findhdr sys/time.h`" $timeincl"
9715                 echo "We'll include <sys/time.h>." >&4;;
9716         *) i_systime="$undef";;
9717         esac
9718         $rm -f try.c try
9719 fi
9720 : see if struct tm knows about tm_zone
9721 case "$i_systime$i_time" in
9722 *$define*) 
9723         echo " "
9724         echo "Checking to see if your struct tm has tm_zone field..." >&4
9725         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9726         eval $hasfield
9727         ;;
9728 *)      val="$undef"
9729         set d_tm_tm_zone
9730         eval $setvar
9731         ;;
9732 esac
9733 case "$d_tm_tm_zone" in
9734 "$define")      echo "Yes, it does."   ;;
9735 *)              echo "No, it doesn't." ;;
9736 esac
9737 : see if struct tm knows about tm_gmtoff
9738 case "$i_systime$i_time" in
9739 *$define*) 
9740         echo " "
9741         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9742         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9743         eval $hasfield
9744         ;;
9745 *)      val="$undef"
9746         set d_tm_tm_gmtoff
9747         eval $setvar
9748         ;;
9749 esac
9750 case "$d_tm_tm_gmtoff" in
9751 "$define")      echo "Yes, it does."   ;;
9752 *)              echo "No, it doesn't." ;;
9753 esac
9754
9755 : see if asctime_r exists
9756 set asctime_r d_asctime_r
9757 eval $inlibc
9758 case "$d_asctime_r" in
9759 "$define")
9760         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9761         case "$d_asctime_r_proto:$usethreads" in
9762         ":define")      d_asctime_r_proto=define
9763                 set d_asctime_r_proto asctime_r $hdrs
9764                 eval $hasproto ;;
9765         *)      ;;
9766         esac
9767         case "$d_asctime_r_proto" in
9768         define)
9769         case "$asctime_r_proto" in
9770         ''|0) try='char* asctime_r(const struct tm*, char*);'
9771         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9772         esac
9773         case "$asctime_r_proto" in
9774         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9775         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9776         esac
9777         case "$asctime_r_proto" in
9778         ''|0) try='int asctime_r(const struct tm*, char*);'
9779         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9780         esac
9781         case "$asctime_r_proto" in
9782         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9783         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9784         esac
9785         case "$asctime_r_proto" in
9786         ''|0)   d_asctime_r=undef
9787                 asctime_r_proto=0
9788                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9789         * )     case "$asctime_r_proto" in
9790                 REENTRANT_PROTO*) ;;
9791                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9792                 esac
9793                 echo "Prototype: $try" ;;
9794         esac
9795         ;;
9796         *)      case "$usethreads" in
9797                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9798                 esac
9799                 d_asctime_r=undef
9800                 asctime_r_proto=0
9801                 ;;
9802         esac
9803         ;;
9804 *)      asctime_r_proto=0
9805         ;;
9806 esac
9807
9808 : see if atolf exists
9809 set atolf d_atolf
9810 eval $inlibc
9811
9812 : see if atoll exists
9813 set atoll d_atoll
9814 eval $inlibc
9815
9816 : Look for GNU-cc style attribute checking
9817 echo " "
9818 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9819 $cat >attrib.c <<'EOCP'
9820 #include <stdio.h>
9821 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9822 EOCP
9823 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9824         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9825                 echo "Your C compiler doesn't fully support __attribute__."
9826                 val="$undef"
9827         else
9828                 echo "Your C compiler supports __attribute__."
9829                 val="$define"
9830         fi
9831 else
9832         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9833         val="$undef"
9834 fi
9835 set d_attribut
9836 eval $setvar
9837 $rm -f attrib*
9838
9839 : see if bcmp exists
9840 set bcmp d_bcmp
9841 eval $inlibc
9842
9843 : see if bcopy exists
9844 set bcopy d_bcopy
9845 eval $inlibc
9846
9847 : see if this is a unistd.h system
9848 set unistd.h i_unistd
9849 eval $inhdr
9850
9851 : see if getpgrp exists
9852 set getpgrp d_getpgrp
9853 eval $inlibc
9854
9855 case "$d_getpgrp" in
9856 "$define")
9857         echo " "
9858         echo "Checking to see which flavor of getpgrp is in use..."
9859         $cat >try.c <<EOP
9860 #$i_unistd I_UNISTD
9861 #include <sys/types.h>
9862 #ifdef I_UNISTD
9863 #  include <unistd.h>
9864 #endif
9865 #$i_stdlib I_STDLIB
9866 #ifdef I_STDLIB
9867 #include <stdlib.h>
9868 #endif
9869 int main()
9870 {
9871         if (getuid() == 0) {
9872                 printf("(I see you are running Configure as super-user...)\n");
9873                 setuid(1);
9874         }
9875 #ifdef TRY_BSD_PGRP
9876         if (getpgrp(1) == 0)
9877                 exit(0);
9878 #else
9879         if (getpgrp() > 0)
9880                 exit(0);
9881 #endif
9882         exit(1);
9883 }
9884 EOP
9885         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9886                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9887                 val="$define"
9888         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9889                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9890                 val="$undef"
9891         else
9892                 echo "I can't seem to compile and run the test program."
9893                 if ./usg; then
9894                         xxx="a USG one, i.e. you use getpgrp()."
9895                 else
9896                         # SVR4 systems can appear rather BSD-ish.
9897                         case "$i_unistd" in
9898                         $undef)
9899                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9900                                 val="$define"
9901                                 ;;
9902                         $define)
9903                                 xxx="probably a USG one, i.e. you use getpgrp()."
9904                                 val="$undef"
9905                                 ;;
9906                         esac
9907                 fi
9908                 echo "Assuming your getpgrp is $xxx" >&4
9909         fi
9910         ;;
9911 *) val="$undef";;
9912 esac
9913 set d_bsdgetpgrp
9914 eval $setvar
9915 $rm -f try try.*
9916
9917 : see if setpgrp exists
9918 set setpgrp d_setpgrp
9919 eval $inlibc
9920
9921 case "$d_setpgrp" in
9922 "$define")
9923         echo " "
9924         echo "Checking to see which flavor of setpgrp is in use..."
9925         $cat >try.c <<EOP
9926 #$i_unistd I_UNISTD
9927 #include <sys/types.h>
9928 #ifdef I_UNISTD
9929 #  include <unistd.h>
9930 #endif
9931 #$i_stdlib I_STDLIB
9932 #ifdef I_STDLIB
9933 #include <stdlib.h>
9934 #endif
9935 int main()
9936 {
9937         if (getuid() == 0) {
9938                 printf("(I see you are running Configure as super-user...)\n");
9939                 setuid(1);
9940         }
9941 #ifdef TRY_BSD_PGRP
9942         if (-1 == setpgrp(1, 1))
9943                 exit(0);
9944 #else
9945         if (setpgrp() != -1)
9946                 exit(0);
9947 #endif
9948         exit(1);
9949 }
9950 EOP
9951         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9952                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9953                 val="$define"
9954         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9955                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9956                 val="$undef"
9957         else
9958                 echo "(I can't seem to compile and run the test program.)"
9959                 if ./usg; then
9960                         xxx="a USG one, i.e. you use setpgrp()."
9961                 else
9962                         # SVR4 systems can appear rather BSD-ish.
9963                         case "$i_unistd" in
9964                         $undef)
9965                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9966                                 val="$define"
9967                                 ;;
9968                         $define)
9969                                 xxx="probably a USG one, i.e. you use setpgrp()."
9970                                 val="$undef"
9971                                 ;;
9972                         esac
9973                 fi
9974                 echo "Assuming your setpgrp is $xxx" >&4
9975         fi
9976         ;;
9977 *) val="$undef";;
9978 esac
9979 set d_bsdsetpgrp
9980 eval $setvar
9981 $rm -f try try.*
9982 : see if bzero exists
9983 set bzero d_bzero
9984 eval $inlibc
9985
9986 : see if signal is declared as pointer to function returning int or void
9987 echo " "
9988 xxx=`./findhdr signal.h`
9989 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9990 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9991         echo "You have int (*signal())() instead of void." >&4
9992         val="$undef"
9993 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9994         echo "You have void (*signal())()." >&4
9995         val="$define"
9996 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9997         echo "You have int (*signal())() instead of void." >&4
9998         val="$undef"
9999 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10000         echo "You have void (*signal())()." >&4
10001         val="$define"
10002 else
10003         case "$d_voidsig" in
10004         '')
10005         echo "I can't determine whether signal handler returns void or int..." >&4
10006                 dflt=void
10007                 rp="What type does your signal handler return?"
10008                 . ./myread
10009                 case "$ans" in
10010                 v*) val="$define";;
10011                 *) val="$undef";;
10012                 esac;;
10013         "$define")
10014                 echo "As you already told me, signal handler returns void." >&4
10015                 val="$define"
10016                 ;;
10017         *)      echo "As you already told me, signal handler returns int." >&4
10018                 val="$undef"
10019                 ;;
10020         esac
10021 fi
10022 set d_voidsig
10023 eval $setvar
10024 case "$d_voidsig" in
10025 "$define") signal_t="void";;
10026 *) signal_t="int";;
10027 esac
10028 $rm -f $$.tmp
10029
10030 : check for ability to cast large floats to 32-bit ints.
10031 echo " "
10032 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10033 if $test "$intsize" -ge 4; then
10034         xxx=int
10035 else
10036         xxx=long
10037 fi
10038 $cat >try.c <<EOCP
10039 #include <stdio.h>
10040 #$i_stdlib I_STDLIB
10041 #ifdef I_STDLIB
10042 #include <stdlib.h>
10043 #endif
10044 #include <sys/types.h>
10045 #include <signal.h>
10046 $signal_t blech(s) int s; { exit(3); }
10047 int main()
10048 {
10049         $xxx i32;
10050         double f, g;
10051         int result = 0;
10052         char str[16];
10053         signal(SIGFPE, blech);
10054
10055         /* Don't let compiler optimize the test away.  Store the number 
10056            in a writable string for gcc to pass to sscanf under HP/UX.
10057         */
10058         sprintf(str, "2147483647");
10059         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10060         g = 10 * f;
10061         i32  = ($xxx) g;
10062
10063         /* x86 processors will probably give 0x8000 0000, which is a
10064        sign change.  We don't want that.  We want to mimic SPARC
10065            behavior here, which is to preserve the sign and give
10066            back 0x7fff ffff.
10067         */
10068         if (i32 != ($xxx) f)
10069                 result |= 1;
10070         exit(result);
10071 }
10072 EOCP
10073 set try
10074 if eval $compile_ok; then
10075         $run ./try
10076         yyy=$?
10077 else
10078         echo "(I can't seem to compile the test program--assuming it can't)"
10079         yyy=1
10080 fi
10081 case "$yyy" in
10082 0)      val="$define"
10083         echo "Yup, it can."
10084         ;;
10085 *)      val="$undef"
10086         echo "Nope, it can't."
10087         ;;
10088 esac
10089 set d_casti32
10090 eval $setvar
10091 $rm -f try try.*
10092
10093 : check for ability to cast negative floats to unsigned
10094 echo " "
10095 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10096 $cat >try.c <<EOCP
10097 #include <stdio.h>
10098 #$i_stdlib I_STDLIB
10099 #ifdef I_STDLIB
10100 #include <stdlib.h>
10101 #endif
10102 #include <sys/types.h>
10103 #include <signal.h>
10104 $signal_t blech(s) int s; { exit(7); }
10105 $signal_t blech_in_list(s) int s; { exit(4); }
10106 unsigned long dummy_long(p) unsigned long p; { return p; }
10107 unsigned int dummy_int(p) unsigned int p; { return p; }
10108 unsigned short dummy_short(p) unsigned short p; { return p; }
10109 int main()
10110 {
10111         double f;
10112         unsigned long along;
10113         unsigned int aint;
10114         unsigned short ashort;
10115         int result = 0;
10116         char str[16];
10117         
10118         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10119            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10120            optimized the whole file away
10121         */
10122         /* Store the number in a writable string for gcc to pass to 
10123            sscanf under HP/UX.
10124         */
10125         sprintf(str, "-123");
10126         sscanf(str, "%lf", &f);  /* f = -123.; */
10127
10128         signal(SIGFPE, blech);
10129         along = (unsigned long)f;
10130         aint = (unsigned int)f;
10131         ashort = (unsigned short)f;
10132         if (along != (unsigned long)-123)
10133                 result |= 1;
10134         if (aint != (unsigned int)-123)
10135                 result |= 1;
10136         if (ashort != (unsigned short)-123)
10137                 result |= 1;
10138         sprintf(str, "1073741824.");
10139         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10140         f = f + f;
10141         along = 0;
10142         along = (unsigned long)f;
10143         if (along != 0x80000000)
10144                 result |= 2;
10145         f -= 1.;
10146         along = 0;
10147         along = (unsigned long)f;
10148         if (along != 0x7fffffff)
10149                 result |= 1;
10150         f += 2.;
10151         along = 0;
10152         along = (unsigned long)f;
10153         if (along != 0x80000001)
10154                 result |= 2;
10155         if (result)
10156                 exit(result);
10157         signal(SIGFPE, blech_in_list);
10158         sprintf(str, "123.");
10159         sscanf(str, "%lf", &f);  /* f = 123.; */
10160         along = dummy_long((unsigned long)f);
10161         aint = dummy_int((unsigned int)f);
10162         ashort = dummy_short((unsigned short)f);
10163         if (along != (unsigned long)123)
10164                 result |= 4;
10165         if (aint != (unsigned int)123)
10166                 result |= 4;
10167         if (ashort != (unsigned short)123)
10168                 result |= 4;
10169         exit(result);
10170
10171 }
10172 EOCP
10173 set try
10174 if eval $compile_ok; then
10175         $run ./try
10176         castflags=$?
10177 else
10178         echo "(I can't seem to compile the test program--assuming it can't)"
10179         castflags=7
10180 fi
10181 case "$castflags" in
10182 0)      val="$define"
10183         echo "Yup, it can."
10184         ;;
10185 *)      val="$undef"
10186         echo "Nope, it can't."
10187         ;;
10188 esac
10189 set d_castneg
10190 eval $setvar
10191 $rm -f try.*
10192
10193 : see if vprintf exists
10194 echo " "
10195 if set vprintf val -f d_vprintf; eval $csym; $val; then
10196         echo 'vprintf() found.' >&4
10197         val="$define"
10198         $cat >try.c <<EOF
10199 #include <varargs.h>
10200 #$i_stdlib I_STDLIB
10201 #ifdef I_STDLIB
10202 #include <stdlib.h>
10203 #endif
10204
10205 int main() { xxx("foo"); }
10206
10207 xxx(va_alist)
10208 va_dcl
10209 {
10210         va_list args;
10211         char buf[10];
10212
10213         va_start(args);
10214         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10215 }
10216 EOF
10217         set try
10218         if eval $compile && $run ./try; then
10219                 echo "Your vsprintf() returns (int)." >&4
10220                 val2="$undef"
10221         else
10222                 echo "Your vsprintf() returns (char*)." >&4
10223                 val2="$define"
10224         fi
10225 else
10226         echo 'vprintf() NOT found.' >&4
10227                 val="$undef"
10228                 val2="$undef"
10229 fi
10230 $rm -f try try.*
10231 set d_vprintf
10232 eval $setvar
10233 val=$val2
10234 set d_charvspr
10235 eval $setvar
10236
10237 : see if chown exists
10238 set chown d_chown
10239 eval $inlibc
10240
10241 : see if chroot exists
10242 set chroot d_chroot
10243 eval $inlibc
10244
10245 : see if chsize exists
10246 set chsize d_chsize
10247 eval $inlibc
10248
10249 : see if class exists
10250 set class d_class
10251 eval $inlibc
10252
10253 hasstruct='varname=$1; struct=$2; shift; shift;
10254 while $test $# -ge 2; do
10255         case "$1" in
10256         $define) echo "#include <$2>";;
10257         esac ;
10258     shift 2;
10259 done > try.c;
10260 echo "int main () { struct $struct foo; }" >> try.c;
10261 set try;
10262 if eval $compile; then
10263         val="$define";
10264 else
10265         val="$undef";
10266 fi;
10267 set $varname;
10268 eval $setvar;
10269 $rm -f try.c try.o'
10270
10271 socketlib=''
10272 sockethdr=''
10273 : see whether socket exists
10274 echo " "
10275 $echo $n "Hmm... $c" >&4
10276 if set socket val -f d_socket; eval $csym; $val; then
10277         echo "Looks like you have Berkeley networking support." >&4
10278         d_socket="$define"
10279         if set setsockopt val -f; eval $csym; $val; then
10280                 d_oldsock="$undef"
10281         else
10282                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10283                 d_oldsock="$define"
10284         fi
10285 else
10286         if $contains socklib libc.list >/dev/null 2>&1; then
10287                 echo "Looks like you have Berkeley networking support." >&4
10288                 d_socket="$define"
10289                 : we will have to assume that it supports the 4.2 BSD interface
10290                 d_oldsock="$undef"
10291         else
10292                 echo "You don't have Berkeley networking in libc$_a..." >&4
10293                 if test "X$d_socket" = "X$define"; then
10294                    echo "...but you seem to believe that you have sockets." >&4
10295                 else
10296                         for net in net socket
10297                         do
10298                                 if test -f /usr/lib/lib$net$_a; then
10299                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10300                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10301                                         if $contains socket libc.list >/dev/null 2>&1; then
10302                                                 d_socket="$define"
10303                                                 socketlib="-l$net"
10304                                                 case "$net" in
10305                                                 net)
10306                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10307                                                         sockethdr="-I/usr/netinclude"
10308                                                         ;;
10309                                                 esac
10310                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10311                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10312                                                         d_oldsock="$undef"
10313                                                 else
10314                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10315                                                         d_oldsock="$define"
10316                                                 fi
10317                                                 break
10318                                         fi
10319                                 fi
10320                         done
10321                         if test "X$d_socket" != "X$define"; then
10322                            echo "or anywhere else I see." >&4
10323                            d_socket="$undef"
10324                            d_oldsock="$undef"
10325                         fi
10326                 fi
10327         fi
10328 fi
10329
10330 : see if socketpair exists
10331 set socketpair d_sockpair
10332 eval $inlibc
10333
10334
10335 echo " "
10336 echo "Checking the availability of certain socket constants..." >&4
10337 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10338         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10339         $cat >try.c <<EOF
10340 #include <sys/types.h>
10341 #include <sys/socket.h>
10342 int main() {
10343     int i = $ENUM;
10344 }
10345 EOF
10346         val="$undef"
10347         set try; if eval $compile; then
10348                 val="$define"
10349         fi
10350         set d_${enum}; eval $setvar
10351         $rm -f try.c try
10352 done
10353
10354 : see if this is a sys/uio.h system
10355 set sys/uio.h i_sysuio
10356 eval $inhdr
10357
10358
10359 echo " "
10360 echo "Checking to see if your system supports struct cmsghdr..." >&4
10361 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10362 eval $hasstruct
10363 case "$d_cmsghdr_s" in
10364 "$define")      echo "Yes, it does."   ;;
10365 *)              echo "No, it doesn't." ;;
10366 esac
10367
10368
10369 : check for const keyword
10370 echo " "
10371 echo 'Checking to see if your C compiler knows about "const"...' >&4
10372 $cat >const.c <<'EOCP'
10373 typedef struct spug { int drokk; } spug;
10374 int main()
10375 {
10376         const char *foo;
10377         const spug y;
10378 }
10379 EOCP
10380 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10381         val="$define"
10382         echo "Yup, it does."
10383 else
10384         val="$undef"
10385         echo "Nope, it doesn't."
10386 fi
10387 set d_const
10388 eval $setvar
10389
10390 : see if copysignl exists
10391 set copysignl d_copysignl
10392 eval $inlibc
10393
10394 : see if crypt exists
10395 echo " "
10396 set crypt d_crypt
10397 eval $inlibc
10398 case "$d_crypt" in
10399 $define) cryptlib='' ;;
10400 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10401                 echo 'crypt() found.' >&4
10402                 val="$define"
10403                 cryptlib=''
10404         else
10405                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10406                 if $test -z "$cryptlib"; then
10407                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10408                 else
10409                         cryptlib=-lcrypt
10410                 fi
10411                 if $test -z "$cryptlib"; then
10412                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10413                 else
10414                         cryptlib=-lcrypt
10415                 fi
10416                 if $test -z "$cryptlib"; then
10417                         cryptlib=`./loc libcrypt$_a "" $libpth`
10418                 else
10419                         cryptlib=-lcrypt
10420                 fi
10421                 if $test -z "$cryptlib"; then
10422                         echo 'crypt() NOT found.' >&4
10423                         val="$undef"
10424                 else
10425                         val="$define"
10426                 fi
10427         fi
10428         set d_crypt
10429         eval $setvar
10430         ;;
10431 esac
10432
10433 : see if this is a crypt.h system
10434 set crypt.h i_crypt
10435 eval $inhdr
10436
10437 : see if crypt_r exists
10438 set crypt_r d_crypt_r
10439 eval $inlibc
10440 case "$d_crypt_r" in
10441 "$define")
10442         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10443         case "$d_crypt_r_proto:$usethreads" in
10444         ":define")      d_crypt_r_proto=define
10445                 set d_crypt_r_proto crypt_r $hdrs
10446                 eval $hasproto ;;
10447         *)      ;;
10448         esac
10449         case "$d_crypt_r_proto" in
10450         define)
10451         case "$crypt_r_proto" in
10452         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10453         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10454         esac
10455         case "$crypt_r_proto" in
10456         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10457         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10458         esac
10459         case "$crypt_r_proto" in
10460         ''|0)   d_crypt_r=undef
10461                 crypt_r_proto=0
10462                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10463         * )     case "$crypt_r_proto" in
10464                 REENTRANT_PROTO*) ;;
10465                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10466                 esac
10467                 echo "Prototype: $try" ;;
10468         esac
10469         ;;
10470         *)      case "$usethreads" in
10471                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10472                 esac
10473                 d_crypt_r=undef
10474                 crypt_r_proto=0
10475                 ;;
10476         esac
10477         ;;
10478 *)      crypt_r_proto=0
10479         ;;
10480 esac
10481
10482 : get csh whereabouts
10483 case "$csh" in
10484 'csh') val="$undef" ;;
10485 *) val="$define" ;;
10486 esac
10487 set d_csh
10488 eval $setvar
10489 : Respect a hint or command line value for full_csh.
10490 case "$full_csh" in
10491 '') full_csh=$csh ;;
10492 esac
10493
10494 : see if ctermid_r exists
10495 set ctermid_r d_ctermid_r
10496 eval $inlibc
10497 case "$d_ctermid_r" in
10498 "$define")
10499         hdrs="$i_systypes sys/types.h define stdio.h "
10500         case "$d_ctermid_r_proto:$usethreads" in
10501         ":define")      d_ctermid_r_proto=define
10502                 set d_ctermid_r_proto ctermid_r $hdrs
10503                 eval $hasproto ;;
10504         *)      ;;
10505         esac
10506         case "$d_ctermid_r_proto" in
10507         define)
10508         case "$ctermid_r_proto" in
10509         ''|0) try='char* ctermid_r(char*);'
10510         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10511         esac
10512         case "$ctermid_r_proto" in
10513         ''|0)   d_ctermid_r=undef
10514                 ctermid_r_proto=0
10515                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10516         * )     case "$ctermid_r_proto" in
10517                 REENTRANT_PROTO*) ;;
10518                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10519                 esac
10520                 echo "Prototype: $try" ;;
10521         esac
10522         ;;
10523         *)      case "$usethreads" in
10524                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10525                 esac
10526                 d_ctermid_r=undef
10527                 ctermid_r_proto=0
10528                 ;;
10529         esac
10530         ;;
10531 *)      ctermid_r_proto=0
10532         ;;
10533 esac
10534
10535 : see if ctime_r exists
10536 set ctime_r d_ctime_r
10537 eval $inlibc
10538 case "$d_ctime_r" in
10539 "$define")
10540         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10541         case "$d_ctime_r_proto:$usethreads" in
10542         ":define")      d_ctime_r_proto=define
10543                 set d_ctime_r_proto ctime_r $hdrs
10544                 eval $hasproto ;;
10545         *)      ;;
10546         esac
10547         case "$d_ctime_r_proto" in
10548         define)
10549         case "$ctime_r_proto" in
10550         ''|0) try='char* ctime_r(const time_t*, char*);'
10551         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10552         esac
10553         case "$ctime_r_proto" in
10554         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10555         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10556         esac
10557         case "$ctime_r_proto" in
10558         ''|0) try='int ctime_r(const time_t*, char*);'
10559         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10560         esac
10561         case "$ctime_r_proto" in
10562         ''|0) try='int ctime_r(const time_t*, char*, int);'
10563         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10564         esac
10565         case "$ctime_r_proto" in
10566         ''|0)   d_ctime_r=undef
10567                 ctime_r_proto=0
10568                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10569         * )     case "$ctime_r_proto" in
10570                 REENTRANT_PROTO*) ;;
10571                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10572                 esac
10573                 echo "Prototype: $try" ;;
10574         esac
10575         ;;
10576         *)      case "$usethreads" in
10577                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10578                 esac
10579                 d_ctime_r=undef
10580                 ctime_r_proto=0
10581                 ;;
10582         esac
10583         ;;
10584 *)      ctime_r_proto=0
10585         ;;
10586 esac
10587
10588 : see if cuserid exists
10589 set cuserid d_cuserid
10590 eval $inlibc
10591
10592 : see if this is a limits.h system
10593 set limits.h i_limits
10594 eval $inhdr
10595
10596 : see if this is a float.h system
10597 set float.h i_float
10598 eval $inhdr
10599
10600 : See if number of significant digits in a double precision number is known
10601 echo " "
10602 $cat >dbl_dig.c <<EOM
10603 #$i_limits I_LIMITS
10604 #$i_float I_FLOAT
10605 #ifdef I_LIMITS
10606 #include <limits.h>
10607 #endif
10608 #ifdef I_FLOAT
10609 #include <float.h>
10610 #endif
10611 #ifdef DBL_DIG
10612 printf("Contains DBL_DIG");
10613 #endif
10614 EOM
10615 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10616 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10617         echo "DBL_DIG found." >&4
10618         val="$define"
10619 else
10620         echo "DBL_DIG NOT found." >&4
10621         val="$undef"
10622 fi
10623 $rm -f dbl_dig.?
10624 set d_dbl_dig
10625 eval $setvar
10626
10627 : see if dbm.h is available
10628 : see if dbmclose exists
10629 set dbmclose d_dbmclose
10630 eval $inlibc
10631
10632 case "$d_dbmclose" in
10633 $define)
10634         set dbm.h i_dbm
10635         eval $inhdr
10636         case "$i_dbm" in
10637         $define)
10638                 val="$undef"
10639                 set i_rpcsvcdbm
10640                 eval $setvar
10641                 ;;
10642         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10643                 eval $inhdr
10644                 ;;
10645         esac
10646         ;;
10647 *)      echo "We won't be including <dbm.h>"
10648         val="$undef"
10649         set i_dbm
10650         eval $setvar
10651         val="$undef"
10652         set i_rpcsvcdbm
10653         eval $setvar
10654         ;;
10655 esac
10656
10657 : see if prototype for dbminit is available
10658 echo " "
10659 set d_dbminitproto dbminit $i_dbm dbm.h
10660 eval $hasproto
10661
10662 : see if difftime exists
10663 set difftime d_difftime
10664 eval $inlibc
10665
10666 : see if this is a dirent system
10667 echo " "
10668 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10669         val="$define"
10670         echo "<dirent.h> found." >&4
10671 else
10672         val="$undef"
10673         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10674                 echo "<sys/dir.h> found." >&4
10675                 echo " "
10676         else
10677                 xinc=`./findhdr sys/ndir.h`
10678         fi
10679         echo "<dirent.h> NOT found." >&4
10680 fi
10681 set i_dirent
10682 eval $setvar
10683
10684 : Look for type of directory structure.
10685 echo " "
10686 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10687
10688 case "$direntrytype" in
10689 ''|' ')
10690         case "$i_dirent" in
10691         $define) guess1='struct dirent' ;;
10692         *) guess1='struct direct'  ;;
10693         esac
10694         ;;
10695 *)      guess1="$direntrytype"
10696         ;;
10697 esac
10698
10699 case "$guess1" in
10700 'struct dirent') guess2='struct direct' ;;
10701 *) guess2='struct dirent' ;;
10702 esac
10703                 
10704 if $contains "$guess1" try.c >/dev/null 2>&1; then
10705         direntrytype="$guess1"
10706         echo "Your directory entries are $direntrytype." >&4
10707 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10708         direntrytype="$guess2"
10709         echo "Your directory entries seem to be $direntrytype." >&4
10710 else
10711         echo "I don't recognize your system's directory entries." >&4
10712         rp="What type is used for directory entries on this system?"
10713         dflt="$guess1"
10714         . ./myread
10715         direntrytype="$ans"
10716 fi
10717 $rm -f try.c
10718
10719
10720 : see if the directory entry stores field length
10721 echo " "
10722 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10723 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10724         echo "Good, your directory entry keeps length information in d_namlen." >&4
10725         val="$define"
10726 else
10727         echo "Your directory entry does not know about the d_namlen field." >&4
10728         val="$undef"
10729 fi
10730 set d_dirnamlen
10731 eval $setvar
10732 $rm -f try.c
10733
10734 : see if this is an sysdir system
10735 set sys/dir.h i_sysdir
10736 eval $inhdr
10737
10738 : see if this is an sysndir system
10739 set sys/ndir.h i_sysndir
10740 eval $inhdr
10741
10742 : Look for dirfd
10743 echo " "
10744 $cat >dirfd.c <<EOM
10745 #include <stdio.h>
10746 #$i_stdlib I_STDLIB
10747 #ifdef I_STDLIB
10748 #include <stdlib.h>
10749 #endif
10750 #$i_dirent I_DIRENT             /**/
10751 #$i_sysdir I_SYS_DIR            /**/
10752 #$i_sysndir I_SYS_NDIR          /**/
10753 #$i_systypes I_SYS_TYPES        /**/
10754 #if defined(I_SYS_TYPES)
10755 #include <sys/types.h>
10756 #endif
10757 #if defined(I_DIRENT)
10758 #include <dirent.h>
10759 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10760 #include <sys/dir.h>
10761 #endif
10762 #else
10763 #ifdef I_SYS_NDIR
10764 #include <sys/ndir.h>
10765 #else
10766 #ifdef I_SYS_DIR
10767 #ifdef hp9000s500
10768 #include <ndir.h>       /* may be wrong in the future */
10769 #else
10770 #include <sys/dir.h>
10771 #endif
10772 #endif
10773 #endif
10774 #endif 
10775 int main() {
10776         DIR *dirp = opendir(".");
10777         if (dirfd(dirp) >= 0)
10778                 exit(0);
10779         else
10780                 exit(1);
10781 }
10782 EOM
10783 set dirfd
10784 if eval $compile; then
10785         val="$define"
10786 fi
10787 case "$val" in
10788 $define)        echo "dirfd() found." >&4       ;;
10789 *)              echo "dirfd() NOT found." >&4   ;;
10790 esac
10791 set d_dirfd
10792 eval $setvar
10793 $rm -f dirfd*
10794
10795 : see if dlerror exists
10796 xxx_runnm="$runnm"
10797 runnm=false
10798 set dlerror d_dlerror
10799 eval $inlibc
10800 runnm="$xxx_runnm"
10801
10802 : see if dlfcn is available
10803 set dlfcn.h i_dlfcn
10804 eval $inhdr
10805
10806 case "$usedl" in
10807 $define|y|true)
10808         $cat << EOM
10809
10810 On a few systems, the dynamically loaded modules that perl generates and uses
10811 will need a different extension than shared libs. The default will probably
10812 be appropriate.
10813
10814 EOM
10815         case "$dlext" in
10816         '')     dflt="$so" ;;
10817         *)      dflt="$dlext" ;;
10818         esac
10819         rp='What is the extension of dynamically loaded modules'
10820         . ./myread
10821         dlext="$ans"
10822         ;;
10823 *)
10824         dlext="none"
10825         ;;
10826 esac
10827
10828 : Check if dlsym need a leading underscore
10829 echo " "
10830 val="$undef"
10831
10832 case "$dlsrc" in
10833 dl_dlopen.xs)
10834         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10835         $cat >dyna.c <<'EOM'
10836 fred () { }
10837 EOM
10838
10839 $cat >fred.c<<EOM
10840
10841 #include <stdio.h>
10842 #$i_stdlib I_STDLIB
10843 #ifdef I_STDLIB
10844 #include <stdlib.h>
10845 #endif
10846 #$i_dlfcn I_DLFCN
10847 #ifdef I_DLFCN
10848 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10849 #else
10850 #include <sys/types.h>
10851 #include <nlist.h>
10852 #include <link.h>
10853 #endif
10854
10855 extern int fred() ;
10856
10857 int main()
10858 {
10859     void * handle ;
10860     void * symbol ;
10861 #ifndef RTLD_LAZY
10862     int mode = 1 ;
10863 #else
10864     int mode = RTLD_LAZY ;
10865 #endif
10866     handle = dlopen("./dyna.$dlext", mode) ;
10867     if (handle == NULL) {
10868         printf ("1\n") ;
10869         fflush (stdout) ;
10870         exit(0);
10871     }
10872     symbol = dlsym(handle, "fred") ;
10873     if (symbol == NULL) {
10874         /* try putting a leading underscore */
10875         symbol = dlsym(handle, "_fred") ;
10876         if (symbol == NULL) {
10877             printf ("2\n") ;
10878             fflush (stdout) ;
10879             exit(0);
10880         }
10881         printf ("3\n") ;
10882     }
10883     else
10884         printf ("4\n") ;
10885     fflush (stdout) ;
10886     exit(0);
10887 }
10888 EOM
10889         : Call the object file tmp-dyna.o in case dlext=o.
10890         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10891                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10892                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10893                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10894                 xxx=`$run ./fred`
10895                 case $xxx in
10896                 1)      echo "Test program failed using dlopen." >&4
10897                         echo "Perhaps you should not use dynamic loading." >&4;;
10898                 2)      echo "Test program failed using dlsym." >&4
10899                         echo "Perhaps you should not use dynamic loading." >&4;;
10900                 3)      echo "dlsym needs a leading underscore" >&4
10901                         val="$define" ;;
10902                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10903                 esac
10904         else
10905                 echo "I can't compile and run the test program." >&4
10906                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10907         fi
10908         ;;
10909 esac
10910                 
10911 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10912
10913 set d_dlsymun
10914 eval $setvar
10915
10916 : see if drand48_r exists
10917 set drand48_r d_drand48_r
10918 eval $inlibc
10919 case "$d_drand48_r" in
10920 "$define")
10921         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10922         case "$d_drand48_r_proto:$usethreads" in
10923         ":define")      d_drand48_r_proto=define
10924                 set d_drand48_r_proto drand48_r $hdrs
10925                 eval $hasproto ;;
10926         *)      ;;
10927         esac
10928         case "$d_drand48_r_proto" in
10929         define)
10930         case "$drand48_r_proto" in
10931         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10932         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10933         esac
10934         case "$drand48_r_proto" in
10935         ''|0)   d_drand48_r=undef
10936                 drand48_r_proto=0
10937                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10938         * )     case "$drand48_r_proto" in
10939                 REENTRANT_PROTO*) ;;
10940                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10941                 esac
10942                 echo "Prototype: $try" ;;
10943         esac
10944         ;;
10945         *)      case "$usethreads" in
10946                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10947                 esac
10948                 d_drand48_r=undef
10949                 drand48_r_proto=0
10950                 ;;
10951         esac
10952         ;;
10953 *)      drand48_r_proto=0
10954         ;;
10955 esac
10956
10957 : see if prototype for drand48 is available
10958 echo " "
10959 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10960 eval $hasproto
10961
10962 : see if dup2 exists
10963 set dup2 d_dup2
10964 eval $inlibc
10965
10966 : see if eaccess exists
10967 set eaccess d_eaccess
10968 eval $inlibc
10969
10970 : see if endgrent exists
10971 set endgrent d_endgrent
10972 eval $inlibc
10973
10974 : see if this is an grp system
10975 set grp.h i_grp
10976 eval $inhdr
10977
10978 case "$i_grp" in
10979 $define)
10980         xxx=`./findhdr grp.h`
10981         $cppstdin $cppflags $cppminus < $xxx >$$.h
10982
10983         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10984                 val="$define"
10985         else
10986                 val="$undef"
10987         fi
10988         set d_grpasswd
10989         eval $setvar
10990
10991         $rm -f $$.h
10992         ;;
10993 *)
10994         val="$undef";
10995         set d_grpasswd; eval $setvar
10996         ;;
10997 esac
10998
10999 : see if endgrent_r exists
11000 set endgrent_r d_endgrent_r
11001 eval $inlibc
11002 case "$d_endgrent_r" in
11003 "$define")
11004         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11005         case "$d_endgrent_r_proto:$usethreads" in
11006         ":define")      d_endgrent_r_proto=define
11007                 set d_endgrent_r_proto endgrent_r $hdrs
11008                 eval $hasproto ;;
11009         *)      ;;
11010         esac
11011         case "$d_endgrent_r_proto" in
11012         define)
11013         case "$endgrent_r_proto" in
11014         ''|0) try='int endgrent_r(FILE**);'
11015         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11016         esac
11017         case "$endgrent_r_proto" in
11018         ''|0) try='void endgrent_r(FILE**);'
11019         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11020         esac
11021         case "$endgrent_r_proto" in
11022         ''|0)   d_endgrent_r=undef
11023                 endgrent_r_proto=0
11024                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11025         * )     case "$endgrent_r_proto" in
11026                 REENTRANT_PROTO*) ;;
11027                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11028                 esac
11029                 echo "Prototype: $try" ;;
11030         esac
11031         ;;
11032         *)      case "$usethreads" in
11033                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11034                 esac
11035                 d_endgrent_r=undef
11036                 endgrent_r_proto=0
11037                 ;;
11038         esac
11039         ;;
11040 *)      endgrent_r_proto=0
11041         ;;
11042 esac
11043
11044 : see if endhostent exists
11045 set endhostent d_endhent
11046 eval $inlibc
11047
11048 : see if this is a netdb.h system
11049 set netdb.h i_netdb
11050 eval $inhdr
11051
11052 : see if endhostent_r exists
11053 set endhostent_r d_endhostent_r
11054 eval $inlibc
11055 case "$d_endhostent_r" in
11056 "$define")
11057         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11058         case "$d_endhostent_r_proto:$usethreads" in
11059         ":define")      d_endhostent_r_proto=define
11060                 set d_endhostent_r_proto endhostent_r $hdrs
11061                 eval $hasproto ;;
11062         *)      ;;
11063         esac
11064         case "$d_endhostent_r_proto" in
11065         define)
11066         case "$endhostent_r_proto" in
11067         ''|0) try='int endhostent_r(struct hostent_data*);'
11068         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11069         esac
11070         case "$endhostent_r_proto" in
11071         ''|0) try='void endhostent_r(struct hostent_data*);'
11072         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11073         esac
11074         case "$endhostent_r_proto" in
11075         ''|0)   d_endhostent_r=undef
11076                 endhostent_r_proto=0
11077                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11078         * )     case "$endhostent_r_proto" in
11079                 REENTRANT_PROTO*) ;;
11080                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11081                 esac
11082                 echo "Prototype: $try" ;;
11083         esac
11084         ;;
11085         *)      case "$usethreads" in
11086                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11087                 esac
11088                 d_endhostent_r=undef
11089                 endhostent_r_proto=0
11090                 ;;
11091         esac
11092         ;;
11093 *)      endhostent_r_proto=0
11094         ;;
11095 esac
11096
11097 : see if endnetent exists
11098 set endnetent d_endnent
11099 eval $inlibc
11100
11101 : see if endnetent_r exists
11102 set endnetent_r d_endnetent_r
11103 eval $inlibc
11104 case "$d_endnetent_r" in
11105 "$define")
11106         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11107         case "$d_endnetent_r_proto:$usethreads" in
11108         ":define")      d_endnetent_r_proto=define
11109                 set d_endnetent_r_proto endnetent_r $hdrs
11110                 eval $hasproto ;;
11111         *)      ;;
11112         esac
11113         case "$d_endnetent_r_proto" in
11114         define)
11115         case "$endnetent_r_proto" in
11116         ''|0) try='int endnetent_r(struct netent_data*);'
11117         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11118         esac
11119         case "$endnetent_r_proto" in
11120         ''|0) try='void endnetent_r(struct netent_data*);'
11121         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11122         esac
11123         case "$endnetent_r_proto" in
11124         ''|0)   d_endnetent_r=undef
11125                 endnetent_r_proto=0
11126                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11127         * )     case "$endnetent_r_proto" in
11128                 REENTRANT_PROTO*) ;;
11129                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11130                 esac
11131                 echo "Prototype: $try" ;;
11132         esac
11133         ;;
11134         *)      case "$usethreads" in
11135                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11136                 esac
11137                 d_endnetent_r=undef
11138                 endnetent_r_proto=0
11139                 ;;
11140         esac
11141         ;;
11142 *)      endnetent_r_proto=0
11143         ;;
11144 esac
11145
11146 : see if endprotoent exists
11147 set endprotoent d_endpent
11148 eval $inlibc
11149
11150 : see if endprotoent_r exists
11151 set endprotoent_r d_endprotoent_r
11152 eval $inlibc
11153 case "$d_endprotoent_r" in
11154 "$define")
11155         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11156         case "$d_endprotoent_r_proto:$usethreads" in
11157         ":define")      d_endprotoent_r_proto=define
11158                 set d_endprotoent_r_proto endprotoent_r $hdrs
11159                 eval $hasproto ;;
11160         *)      ;;
11161         esac
11162         case "$d_endprotoent_r_proto" in
11163         define)
11164         case "$endprotoent_r_proto" in
11165         ''|0) try='int endprotoent_r(struct protoent_data*);'
11166         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11167         esac
11168         case "$endprotoent_r_proto" in
11169         ''|0) try='void endprotoent_r(struct protoent_data*);'
11170         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11171         esac
11172         case "$endprotoent_r_proto" in
11173         ''|0)   d_endprotoent_r=undef
11174                 endprotoent_r_proto=0
11175                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11176         * )     case "$endprotoent_r_proto" in
11177                 REENTRANT_PROTO*) ;;
11178                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11179                 esac
11180                 echo "Prototype: $try" ;;
11181         esac
11182         ;;
11183         *)      case "$usethreads" in
11184                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11185                 esac
11186                 d_endprotoent_r=undef
11187                 endprotoent_r_proto=0
11188                 ;;
11189         esac
11190         ;;
11191 *)      endprotoent_r_proto=0
11192         ;;
11193 esac
11194
11195 : see if endpwent exists
11196 set endpwent d_endpwent
11197 eval $inlibc
11198
11199 : see if this is a pwd.h system
11200 set pwd.h i_pwd
11201 eval $inhdr
11202
11203 case "$i_pwd" in
11204 $define)
11205         xxx=`./findhdr pwd.h`
11206         $cppstdin $cppflags $cppminus < $xxx >$$.h
11207
11208         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11209                 val="$define"
11210         else
11211                 val="$undef"
11212         fi
11213         set d_pwquota
11214         eval $setvar
11215
11216         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11217                 val="$define"
11218         else
11219                 val="$undef"
11220         fi
11221         set d_pwage
11222         eval $setvar
11223
11224         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11225                 val="$define"
11226         else
11227                 val="$undef"
11228         fi
11229         set d_pwchange
11230         eval $setvar
11231
11232         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11233                 val="$define"
11234         else
11235                 val="$undef"
11236         fi
11237         set d_pwclass
11238         eval $setvar
11239
11240         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11241                 val="$define"
11242         else
11243                 val="$undef"
11244         fi
11245         set d_pwexpire
11246         eval $setvar
11247
11248         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11249                 val="$define"
11250         else
11251                 val="$undef"
11252         fi
11253         set d_pwcomment
11254         eval $setvar
11255
11256         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11257                 val="$define"
11258         else
11259                 val="$undef"
11260         fi
11261         set d_pwgecos
11262         eval $setvar
11263
11264         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11265                 val="$define"
11266         else
11267                 val="$undef"
11268         fi
11269         set d_pwpasswd
11270         eval $setvar
11271
11272         $rm -f $$.h
11273         ;;
11274 *)
11275         val="$undef"; 
11276         set d_pwquota; eval $setvar
11277         set d_pwage; eval $setvar
11278         set d_pwchange; eval $setvar
11279         set d_pwclass; eval $setvar
11280         set d_pwexpire; eval $setvar
11281         set d_pwcomment; eval $setvar
11282         set d_pwgecos; eval $setvar
11283         set d_pwpasswd; eval $setvar
11284         ;;
11285 esac
11286
11287 : see if endpwent_r exists
11288 set endpwent_r d_endpwent_r
11289 eval $inlibc
11290 case "$d_endpwent_r" in
11291 "$define")
11292         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11293         case "$d_endpwent_r_proto:$usethreads" in
11294         ":define")      d_endpwent_r_proto=define
11295                 set d_endpwent_r_proto endpwent_r $hdrs
11296                 eval $hasproto ;;
11297         *)      ;;
11298         esac
11299         case "$d_endpwent_r_proto" in
11300         define)
11301         case "$endpwent_r_proto" in
11302         ''|0) try='int endpwent_r(FILE**);'
11303         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11304         esac
11305         case "$endpwent_r_proto" in
11306         ''|0) try='void endpwent_r(FILE**);'
11307         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11308         esac
11309         case "$endpwent_r_proto" in
11310         ''|0)   d_endpwent_r=undef
11311                 endpwent_r_proto=0
11312                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11313         * )     case "$endpwent_r_proto" in
11314                 REENTRANT_PROTO*) ;;
11315                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11316                 esac
11317                 echo "Prototype: $try" ;;
11318         esac
11319         ;;
11320         *)      case "$usethreads" in
11321                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11322                 esac
11323                 d_endpwent_r=undef
11324                 endpwent_r_proto=0
11325                 ;;
11326         esac
11327         ;;
11328 *)      endpwent_r_proto=0
11329         ;;
11330 esac
11331
11332 : see if endservent exists
11333 set endservent d_endsent
11334 eval $inlibc
11335
11336 : see if endservent_r exists
11337 set endservent_r d_endservent_r
11338 eval $inlibc
11339 case "$d_endservent_r" in
11340 "$define")
11341         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11342         case "$d_endservent_r_proto:$usethreads" in
11343         ":define")      d_endservent_r_proto=define
11344                 set d_endservent_r_proto endservent_r $hdrs
11345                 eval $hasproto ;;
11346         *)      ;;
11347         esac
11348         case "$d_endservent_r_proto" in
11349         define)
11350         case "$endservent_r_proto" in
11351         ''|0) try='int endservent_r(struct servent_data*);'
11352         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11353         esac
11354         case "$endservent_r_proto" in
11355         ''|0) try='void endservent_r(struct servent_data*);'
11356         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11357         esac
11358         case "$endservent_r_proto" in
11359         ''|0)   d_endservent_r=undef
11360                 endservent_r_proto=0
11361                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11362         * )     case "$endservent_r_proto" in
11363                 REENTRANT_PROTO*) ;;
11364                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11365                 esac
11366                 echo "Prototype: $try" ;;
11367         esac
11368         ;;
11369         *)      case "$usethreads" in
11370                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11371                 esac
11372                 d_endservent_r=undef
11373                 endservent_r_proto=0
11374                 ;;
11375         esac
11376         ;;
11377 *)      endservent_r_proto=0
11378         ;;
11379 esac
11380
11381 : Locate the flags for 'open()'
11382 echo " "
11383 $cat >try.c <<EOCP
11384 #include <sys/types.h>
11385 #ifdef I_FCNTL
11386 #include <fcntl.h>
11387 #endif
11388 #ifdef I_SYS_FILE
11389 #include <sys/file.h>
11390 #endif
11391 #$i_stdlib I_STDLIB
11392 #ifdef I_STDLIB
11393 #include <stdlib.h>
11394 #endif
11395 int main() {
11396         if(O_RDONLY);
11397 #ifdef O_TRUNC
11398         exit(0);
11399 #else
11400         exit(1);
11401 #endif
11402 }
11403 EOCP
11404 : check sys/file.h first to get FREAD on Sun
11405 if $test `./findhdr sys/file.h` && \
11406                 set try -DI_SYS_FILE && eval $compile; then
11407         h_sysfile=true;
11408         echo "<sys/file.h> defines the O_* constants..." >&4
11409         if $run ./try; then
11410                 echo "and you have the 3 argument form of open()." >&4
11411                 val="$define"
11412         else
11413                 echo "but not the 3 argument form of open().  Oh, well." >&4
11414                 val="$undef"
11415         fi
11416 elif $test `./findhdr fcntl.h` && \
11417                 set try -DI_FCNTL && eval $compile; then
11418         h_fcntl=true;
11419         echo "<fcntl.h> defines the O_* constants..." >&4
11420         if $run ./try; then
11421                 echo "and you have the 3 argument form of open()." >&4
11422                 val="$define"
11423         else
11424                 echo "but not the 3 argument form of open().  Oh, well." >&4
11425                 val="$undef"
11426         fi
11427 else
11428         val="$undef"
11429         echo "I can't find the O_* constant definitions!  You got problems." >&4
11430 fi
11431 set d_open3
11432 eval $setvar
11433 $rm -f try try.*
11434
11435 : see which of string.h or strings.h is needed
11436 echo " "
11437 strings=`./findhdr string.h`
11438 if $test "$strings" && $test -r "$strings"; then
11439         echo "Using <string.h> instead of <strings.h>." >&4
11440         val="$define"
11441 else
11442         val="$undef"
11443         strings=`./findhdr strings.h`
11444         if $test "$strings" && $test -r "$strings"; then
11445                 echo "Using <strings.h> instead of <string.h>." >&4
11446         else
11447                 echo "No string header found -- You'll surely have problems." >&4
11448         fi
11449 fi
11450 set i_string
11451 eval $setvar
11452 case "$i_string" in
11453 "$undef") strings=`./findhdr strings.h`;;
11454 *)        strings=`./findhdr string.h`;;
11455 esac
11456
11457 : see if this is a sys/file.h system
11458 val=''
11459 set sys/file.h val
11460 eval $inhdr
11461
11462 : do we need to include sys/file.h ?
11463 case "$val" in
11464 "$define")
11465         echo " "
11466         if $h_sysfile; then
11467                 val="$define"
11468                 echo "We'll be including <sys/file.h>." >&4
11469         else
11470                 val="$undef"
11471                 echo "We won't be including <sys/file.h>." >&4
11472         fi
11473         ;;
11474 *)
11475         h_sysfile=false
11476         ;;
11477 esac
11478 set i_sysfile
11479 eval $setvar
11480
11481 : see if fcntl.h is there
11482 val=''
11483 set fcntl.h val
11484 eval $inhdr
11485
11486 : see if we can include fcntl.h
11487 case "$val" in
11488 "$define")
11489         echo " "
11490         if $h_fcntl; then
11491                 val="$define"
11492                 echo "We'll be including <fcntl.h>." >&4
11493         else
11494                 val="$undef"
11495                 if $h_sysfile; then
11496         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11497                 else
11498                         echo "We won't be including <fcntl.h>." >&4
11499                 fi
11500         fi
11501         ;;
11502 *)
11503         h_fcntl=false
11504         val="$undef"
11505         ;;
11506 esac
11507 set i_fcntl
11508 eval $setvar
11509
11510 : check for non-blocking I/O stuff
11511 case "$h_sysfile" in
11512 true) echo "#include <sys/file.h>" > head.c;;
11513 *)
11514        case "$h_fcntl" in
11515        true) echo "#include <fcntl.h>" > head.c;;
11516        *) echo "#include <sys/fcntl.h>" > head.c;;
11517        esac
11518        ;;
11519 esac
11520 echo " "
11521 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11522 case "$o_nonblock" in
11523 '')
11524         $cat head.c > try.c
11525         $cat >>try.c <<EOCP
11526 #include <stdio.h>
11527 #$i_stdlib I_STDLIB
11528 #ifdef I_STDLIB
11529 #include <stdlib.h>
11530 #endif
11531 #$i_fcntl I_FCNTL
11532 #ifdef I_FCNTL
11533 #include <fcntl.h>
11534 #endif
11535 int main() {
11536 #ifdef O_NONBLOCK
11537         printf("O_NONBLOCK\n");
11538         exit(0);
11539 #endif
11540 #ifdef O_NDELAY
11541         printf("O_NDELAY\n");
11542         exit(0);
11543 #endif
11544 #ifdef FNDELAY
11545         printf("FNDELAY\n");
11546         exit(0);
11547 #endif
11548         exit(0);
11549 }
11550 EOCP
11551         set try
11552         if eval $compile_ok; then
11553                 o_nonblock=`$run ./try`
11554                 case "$o_nonblock" in
11555                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11556                 *) echo "Seems like we can use $o_nonblock.";;
11557                 esac
11558         else
11559                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11560         fi
11561         ;;
11562 *) echo "Using $hint value $o_nonblock.";;
11563 esac
11564 $rm -f try try.* .out core
11565
11566 echo " "
11567 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11568 case "$eagain" in
11569 '')
11570         $cat head.c > try.c
11571         $cat >>try.c <<EOCP
11572 #include <errno.h>
11573 #include <sys/types.h>
11574 #include <signal.h>
11575 #include <stdio.h> 
11576 #$i_stdlib I_STDLIB
11577 #ifdef I_STDLIB
11578 #include <stdlib.h>
11579 #endif
11580 #$i_fcntl I_FCNTL
11581 #ifdef I_FCNTL
11582 #include <fcntl.h>
11583 #endif
11584 #define MY_O_NONBLOCK $o_nonblock
11585 #ifndef errno  /* XXX need better Configure test */
11586 extern int errno;
11587 #endif
11588 #$i_unistd I_UNISTD
11589 #ifdef I_UNISTD
11590 #include <unistd.h>
11591 #endif
11592 #$i_string I_STRING
11593 #ifdef I_STRING
11594 #include <string.h>
11595 #else
11596 #include <strings.h>
11597 #endif
11598 $signal_t blech(x) int x; { exit(3); }
11599 EOCP
11600         $cat >> try.c <<'EOCP'
11601 int main()
11602 {
11603         int pd[2];
11604         int pu[2];
11605         char buf[1];
11606         char string[100];
11607
11608         pipe(pd);       /* Down: child -> parent */
11609         pipe(pu);       /* Up: parent -> child */
11610         if (0 != fork()) {
11611                 int ret;
11612                 close(pd[1]);   /* Parent reads from pd[0] */
11613                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11614 #ifdef F_SETFL
11615                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11616                         exit(1);
11617 #else
11618                 exit(4);
11619 #endif
11620                 signal(SIGALRM, blech);
11621                 alarm(5);
11622                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11623                         exit(2);
11624                 sprintf(string, "%d\n", ret);
11625                 write(2, string, strlen(string));
11626                 alarm(0);
11627 #ifdef EAGAIN
11628                 if (errno == EAGAIN) {
11629                         printf("EAGAIN\n");
11630                         goto ok;
11631                 }
11632 #endif
11633 #ifdef EWOULDBLOCK
11634                 if (errno == EWOULDBLOCK)
11635                         printf("EWOULDBLOCK\n");
11636 #endif
11637         ok:
11638                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11639                 sleep(2);                               /* Give it time to close our pipe */
11640                 alarm(5);
11641                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11642                 alarm(0);
11643                 sprintf(string, "%d\n", ret);
11644                 write(4, string, strlen(string));
11645                 exit(0);
11646         }
11647
11648         close(pd[0]);                   /* We write to pd[1] */
11649         close(pu[1]);                   /* We read from pu[0] */
11650         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11651         close(pd[1]);                   /* Pipe pd is now fully closed! */
11652         exit(0);                                /* Bye bye, thank you for playing! */
11653 }
11654 EOCP
11655         set try
11656         if eval $compile_ok; then
11657                 echo "$startsh" >mtry
11658                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11659                 chmod +x mtry
11660                 ./mtry >/dev/null 2>&1
11661                 case $? in
11662                 0) eagain=`$cat try.out`;;
11663                 1) echo "Could not perform non-blocking setting!";;
11664                 2) echo "I did a successful read() for something that was not there!";;
11665                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11666                 4) echo "Could not find F_SETFL!";;
11667                 *) echo "Something terribly wrong happened during testing.";;
11668                 esac
11669                 rd_nodata=`$cat try.ret`
11670                 echo "A read() system call with no data present returns $rd_nodata."
11671                 case "$rd_nodata" in
11672                 0|-1) ;;
11673                 *)
11674                         echo "(That's peculiar, fixing that to be -1.)"
11675                         rd_nodata=-1
11676                         ;;
11677                 esac
11678                 case "$eagain" in
11679                 '')
11680                         echo "Forcing errno EAGAIN on read() with no data available."
11681                         eagain=EAGAIN
11682                         ;;
11683                 *)
11684                         echo "Your read() sets errno to $eagain when no data is available."
11685                         ;;
11686                 esac
11687                 status=`$cat try.err`
11688                 case "$status" in
11689                 0) echo "And it correctly returns 0 to signal EOF.";;
11690                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11691                 *) echo "However, your read() returns '$status' on EOF??";;
11692                 esac
11693                 val="$define"
11694                 if test "$status" = "$rd_nodata"; then
11695                         echo "WARNING: you can't distinguish between EOF and no data!"
11696                         val="$undef"
11697                 fi
11698         else
11699                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11700                 eagain=EAGAIN
11701         fi
11702         set d_eofnblk
11703         eval $setvar
11704         ;;
11705 *)
11706         echo "Using $hint value $eagain."
11707         echo "Your read() returns $rd_nodata when no data is present."
11708         case "$d_eofnblk" in
11709         "$define") echo "And you can see EOF because read() returns 0.";;
11710         "$undef") echo "But you can't see EOF status from read() returned value.";;
11711         *)
11712                 echo "(Assuming you can't see EOF status from read anyway.)"
11713                 d_eofnblk=$undef
11714                 ;;
11715         esac
11716         ;;
11717 esac
11718 $rm -f try try.* .out core head.c mtry
11719
11720 : see if _ptr and _cnt from stdio act std
11721 echo " "
11722
11723 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11724         echo "(Looks like you have stdio.h from BSD.)"
11725         case "$stdio_ptr" in
11726         '') stdio_ptr='((fp)->_p)'
11727                 ptr_lval=$define
11728                 ;;
11729         *)      ptr_lval=$d_stdio_ptr_lval;;
11730         esac
11731         case "$stdio_cnt" in
11732         '') stdio_cnt='((fp)->_r)'
11733                 cnt_lval=$define
11734                 ;;
11735         *)      cnt_lval=$d_stdio_cnt_lval;;
11736         esac
11737         case "$stdio_base" in
11738         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11739         esac
11740         case "$stdio_bufsiz" in
11741         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11742         esac
11743 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11744         echo "(Looks like you have stdio.h from Linux.)"
11745         case "$stdio_ptr" in
11746         '') stdio_ptr='((fp)->_IO_read_ptr)'
11747                 ptr_lval=$define
11748                 ;;
11749         *)      ptr_lval=$d_stdio_ptr_lval;;
11750         esac
11751         case "$stdio_cnt" in
11752         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11753                 cnt_lval=$undef
11754                 ;;
11755         *)      cnt_lval=$d_stdio_cnt_lval;;
11756         esac
11757         case "$stdio_base" in
11758         '') stdio_base='((fp)->_IO_read_base)';;
11759         esac
11760         case "$stdio_bufsiz" in
11761         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11762         esac
11763 else
11764         case "$stdio_ptr" in
11765         '') stdio_ptr='((fp)->_ptr)'
11766                 ptr_lval=$define
11767                 ;;
11768         *)      ptr_lval=$d_stdio_ptr_lval;;
11769         esac
11770         case "$stdio_cnt" in
11771         '') stdio_cnt='((fp)->_cnt)'
11772                 cnt_lval=$define
11773                 ;;
11774         *)      cnt_lval=$d_stdio_cnt_lval;;
11775         esac
11776         case "$stdio_base" in
11777         '') stdio_base='((fp)->_base)';;
11778         esac
11779         case "$stdio_bufsiz" in
11780         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11781         esac
11782 fi
11783
11784 : test whether _ptr and _cnt really work
11785 echo "Checking how std your stdio is..." >&4
11786 $cat >try.c <<EOP
11787 #include <stdio.h>
11788 #$i_stdlib I_STDLIB
11789 #ifdef I_STDLIB
11790 #include <stdlib.h>
11791 #endif
11792 #define FILE_ptr(fp)    $stdio_ptr
11793 #define FILE_cnt(fp)    $stdio_cnt
11794 int main() {
11795         FILE *fp = fopen("try.c", "r");
11796         char c = getc(fp);
11797         if (
11798                 18 <= FILE_cnt(fp) &&
11799                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11800         )
11801                 exit(0);
11802         exit(1);
11803 }
11804 EOP
11805 val="$undef"
11806 set try
11807 if eval $compile && $to try.c; then
11808         if $run ./try; then
11809                 echo "Your stdio acts pretty std."
11810                 val="$define"
11811         else
11812                 echo "Your stdio isn't very std."
11813         fi
11814 else
11815         echo "Your stdio doesn't appear very std."
11816 fi
11817 $rm -f try.c try
11818
11819 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11820 # direct buffer manipulation no longer works.  The Configure tests
11821 # should be changed to correctly detect this, but until then,
11822 # the following check should at least let perl compile and run.
11823 # (This quick fix should be updated before 5.8.1.)
11824 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11825 # A. Dougherty, June 3, 2002.
11826 case "$d_gnulibc" in
11827 $define)
11828         case "$gnulibc_version" in
11829         2.[01]*)  ;;
11830         2.2) ;;
11831         2.2.[0-9]) ;;
11832         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11833                 val="$undef"
11834                 ;;
11835         esac
11836         ;;
11837 esac
11838 set d_stdstdio
11839 eval $setvar
11840
11841 : Can _ptr be used as an lvalue?
11842 case "$d_stdstdio$ptr_lval" in
11843 $define$define) val=$define ;;
11844 *) val=$undef ;;
11845 esac
11846 set d_stdio_ptr_lval
11847 eval $setvar
11848
11849 : Can _cnt be used as an lvalue?
11850 case "$d_stdstdio$cnt_lval" in
11851 $define$define) val=$define ;;
11852 *) val=$undef ;;
11853 esac
11854 set d_stdio_cnt_lval
11855 eval $setvar
11856
11857
11858 : test whether setting _ptr sets _cnt as a side effect
11859 d_stdio_ptr_lval_sets_cnt="$undef"
11860 d_stdio_ptr_lval_nochange_cnt="$undef"
11861 case "$d_stdio_ptr_lval$d_stdstdio" in
11862 $define$define)
11863         echo "Checking to see what happens if we set the stdio ptr..." >&4
11864 $cat >try.c <<EOP
11865 #include <stdio.h>
11866 /* Can we scream? */
11867 /* Eat dust sed :-) */
11868 /* In the buffer space, no one can hear you scream. */
11869 #$i_stdlib I_STDLIB
11870 #ifdef I_STDLIB
11871 #include <stdlib.h>
11872 #endif
11873 #define FILE_ptr(fp)    $stdio_ptr
11874 #define FILE_cnt(fp)    $stdio_cnt
11875 #include <sys/types.h>
11876 int main() {
11877         FILE *fp = fopen("try.c", "r");
11878         int c;
11879         char *ptr;
11880         size_t cnt;
11881         if (!fp) {
11882             puts("Fail even to read");
11883             exit(1);
11884         }
11885         c = getc(fp); /* Read away the first # */
11886         if (c == EOF) {
11887             puts("Fail even to read");
11888             exit(1);
11889         }
11890         if (!(
11891                 18 <= FILE_cnt(fp) &&
11892                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11893         )) {
11894                 puts("Fail even to read");
11895                 exit (1);
11896         }
11897         ptr = (char*) FILE_ptr(fp);
11898         cnt = (size_t)FILE_cnt(fp);
11899
11900         FILE_ptr(fp) += 42;
11901
11902         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11903                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11904                 exit (1);
11905         }
11906         if (FILE_cnt(fp) <= 20) {
11907                 printf ("Fail (<20 chars to test)");
11908                 exit (1);
11909         }
11910         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11911                 puts("Fail compare");
11912                 exit (1);
11913         }
11914         if (cnt == FILE_cnt(fp)) {
11915                 puts("Pass_unchanged");
11916                 exit (0);
11917         }       
11918         if (FILE_cnt(fp) == (cnt - 42)) {
11919                 puts("Pass_changed");
11920                 exit (0);
11921         }
11922         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11923         return 1;
11924
11925 }
11926 EOP
11927         set try
11928         if eval $compile && $to try.c; then
11929                 case `$run ./try` in
11930                 Pass_changed)
11931                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11932                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11933                 Pass_unchanged)
11934                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11935                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11936                 Fail*)
11937                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11938                 *)
11939                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11940         esac
11941         else
11942                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11943         fi
11944         $rm -f try.c try
11945         ;;
11946 esac
11947
11948 : see if _base is also standard
11949 val="$undef"
11950 case "$d_stdstdio" in
11951 $define)
11952         $cat >try.c <<EOP
11953 #include <stdio.h>
11954 #$i_stdlib I_STDLIB
11955 #ifdef I_STDLIB
11956 #include <stdlib.h>
11957 #endif
11958 #define FILE_base(fp)   $stdio_base
11959 #define FILE_bufsiz(fp) $stdio_bufsiz
11960 int main() {
11961         FILE *fp = fopen("try.c", "r");
11962         char c = getc(fp);
11963         if (
11964                 19 <= FILE_bufsiz(fp) &&
11965                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11966         )
11967                 exit(0);
11968         exit(1);
11969 }
11970 EOP
11971         set try
11972         if eval $compile && $to try.c; then
11973                 if $run ./try; then
11974                         echo "And its _base field acts std."
11975                         val="$define"
11976                 else
11977                         echo "But its _base field isn't std."
11978                 fi
11979         else
11980                 echo "However, it seems to be lacking the _base field."
11981         fi
11982         $rm -f try.c try
11983         ;;
11984 esac
11985 set d_stdiobase
11986 eval $setvar
11987
11988 : see if fast_stdio exists
11989 val="$undef"
11990 case "$d_stdstdio:$d_stdio_ptr_lval" in
11991 "$define:$define")
11992         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
11993         *$define*)
11994                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
11995                 val="$define"
11996                 ;;
11997         esac
11998         ;;
11999 esac
12000 set d_faststdio
12001 eval $setvar
12002
12003
12004
12005 : see if fchdir exists
12006 set fchdir d_fchdir
12007 eval $inlibc
12008
12009 : see if fchmod exists
12010 set fchmod d_fchmod
12011 eval $inlibc
12012
12013 : see if fchown exists
12014 set fchown d_fchown
12015 eval $inlibc
12016
12017 : see if this is an fcntl system
12018 set fcntl d_fcntl
12019 eval $inlibc
12020
12021 echo " "
12022 : See if fcntl-based locking works.
12023 $cat >try.c <<EOCP
12024 #$i_stdlib I_STDLIB
12025 #ifdef I_STDLIB
12026 #include <stdlib.h>
12027 #endif
12028 #include <unistd.h>
12029 #include <fcntl.h>
12030 #include <signal.h>
12031 $signal_t blech(x) int x; { exit(3); }
12032 int main() {
12033 #if defined(F_SETLK) && defined(F_SETLKW)
12034      struct flock flock;
12035      int retval, fd;
12036      fd = open("try.c", O_RDONLY);
12037      flock.l_type = F_RDLCK;
12038      flock.l_whence = SEEK_SET;
12039      flock.l_start = flock.l_len = 0;
12040      signal(SIGALRM, blech);
12041      alarm(10);
12042      retval = fcntl(fd, F_SETLK, &flock);
12043      close(fd);
12044      (retval < 0 ? exit(2) : exit(0));
12045 #else
12046      exit(2);
12047 #endif
12048 }
12049 EOCP
12050 echo "Checking if fcntl-based file locking works... "
12051 case "$d_fcntl" in
12052 "$define")
12053         set try
12054         if eval $compile_ok; then
12055                 if $run ./try; then
12056                         echo "Yes, it seems to work."
12057                         val="$define"
12058                 else
12059                         echo "Nope, it didn't work."
12060                         val="$undef"
12061                         case "$?" in
12062                         3) $cat >&4 <<EOM
12063 ***
12064 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12065 *** This is (almost) impossible.
12066 *** If your NFS lock daemons are not feeling well, something like
12067 *** this may happen, please investigate.  Cannot continue, aborting.
12068 ***
12069 EOM
12070                                 exit 1
12071                                 ;;
12072                         esac
12073                 fi
12074         else
12075                 echo "I'm unable to compile the test program, so I'll assume not."
12076                 val="$undef"
12077         fi
12078         ;;
12079 *) val="$undef";
12080         echo "Nope, since you don't even have fcntl()."
12081         ;;
12082 esac
12083 set d_fcntl_can_lock
12084 eval $setvar
12085 $rm -f try*
12086
12087
12088 : check for fd_set items
12089 $cat <<EOM
12090
12091 Checking to see how well your C compiler handles fd_set and friends ...
12092 EOM
12093 $cat >try.c <<EOCP
12094 #$i_stdlib I_STDLIB
12095 #ifdef I_STDLIB
12096 #include <stdlib.h>
12097 #endif
12098 #$i_systime I_SYS_TIME
12099 #$i_sysselct I_SYS_SELECT
12100 #$d_socket HAS_SOCKET
12101 #include <sys/types.h>
12102 #ifdef HAS_SOCKET
12103 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12104 #endif
12105 #ifdef I_SYS_TIME
12106 #include <sys/time.h>
12107 #endif
12108 #ifdef I_SYS_SELECT
12109 #include <sys/select.h>
12110 #endif
12111 int main() {
12112         fd_set fds;
12113
12114 #ifdef TRYBITS
12115         if(fds.fds_bits);
12116 #endif
12117
12118 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12119         exit(0);
12120 #else
12121         exit(1);
12122 #endif
12123 }
12124 EOCP
12125 set try -DTRYBITS
12126 if eval $compile; then
12127         d_fds_bits="$define"
12128         d_fd_set="$define"
12129         echo "Well, your system knows about the normal fd_set typedef..." >&4
12130         if $run ./try; then
12131                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12132                 d_fd_macros="$define"
12133         else
12134                 $cat >&4 <<'EOM'
12135 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12136 EOM
12137                 d_fd_macros="$undef"
12138         fi
12139 else
12140         $cat <<'EOM'
12141 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12142 EOM
12143         set try
12144         if eval $compile; then
12145                 d_fds_bits="$undef"
12146                 d_fd_set="$define"
12147                 echo "Well, your system has some sort of fd_set available..." >&4
12148                 if $run ./try; then
12149                         echo "and you have the normal fd_set macros." >&4
12150                         d_fd_macros="$define"
12151                 else
12152                         $cat <<'EOM'
12153 but not the normal fd_set macros!  Gross!  More work for me...
12154 EOM
12155                         d_fd_macros="$undef"
12156                 fi
12157         else
12158         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12159                 d_fd_set="$undef"
12160                 d_fds_bits="$undef"
12161                 d_fd_macros="$undef"
12162         fi
12163 fi
12164 $rm -f try try.*
12165
12166 : see if fgetpos exists
12167 set fgetpos d_fgetpos
12168 eval $inlibc
12169
12170 : see if finite exists
12171 set finite d_finite
12172 eval $inlibc
12173
12174 : see if finitel exists
12175 set finitel d_finitel
12176 eval $inlibc
12177
12178 : see if flock exists
12179 set flock d_flock
12180 eval $inlibc
12181
12182 : see if prototype for flock is available
12183 echo " "
12184 set d_flockproto flock $i_sysfile sys/file.h
12185 eval $hasproto
12186
12187 : see if fork exists
12188 set fork d_fork
12189 eval $inlibc
12190
12191 : see if fp_class exists
12192 set fp_class d_fp_class
12193 eval $inlibc
12194
12195 : see if pathconf exists
12196 set pathconf d_pathconf
12197 eval $inlibc
12198
12199 : see if fpathconf exists
12200 set fpathconf d_fpathconf
12201 eval $inlibc
12202
12203 : see if fpclass exists
12204 set fpclass d_fpclass
12205 eval $inlibc
12206
12207 : see if fpclassify exists
12208 set fpclassify d_fpclassify
12209 eval $inlibc
12210
12211 : see if fpclassl exists
12212 set fpclassl d_fpclassl
12213 eval $inlibc
12214
12215
12216 : check for fpos64_t
12217 echo " "
12218 echo "Checking to see if you have fpos64_t..." >&4
12219 $cat >try.c <<EOCP
12220 #include <stdio.h>
12221 int main() { fpos64_t x = 7; }
12222 EOCP
12223 set try
12224 if eval $compile; then
12225         val="$define"
12226         echo "You have fpos64_t."
12227 else
12228         val="$undef"
12229         echo "You do not have fpos64_t."
12230         case "$fpossize" in
12231         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12232         esac
12233 fi
12234 $rm -f try.* try
12235 set d_fpos64_t
12236 eval $setvar
12237
12238 : see if frexpl exists
12239 set frexpl d_frexpl
12240 eval $inlibc
12241
12242 : see if this is a sys/param system
12243 set sys/param.h i_sysparam
12244 eval $inhdr
12245
12246 : see if this is a sys/mount.h system
12247 set sys/mount.h i_sysmount
12248 eval $inhdr
12249
12250
12251 echo " "
12252 echo "Checking to see if your system supports struct fs_data..." >&4
12253 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12254 eval $hasstruct
12255 case "$d_fs_data_s" in
12256 "$define")      echo "Yes, it does."   ;;
12257 *)              echo "No, it doesn't." ;;
12258 esac
12259
12260 : see if fseeko exists
12261 set fseeko d_fseeko
12262 eval $inlibc
12263 case "$longsize" in
12264 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12265 esac
12266
12267 : see if fsetpos exists
12268 set fsetpos d_fsetpos
12269 eval $inlibc
12270
12271
12272 : see if fstatfs exists
12273 set fstatfs d_fstatfs
12274 eval $inlibc
12275
12276
12277 : see if statvfs exists
12278 set statvfs d_statvfs
12279 eval $inlibc
12280
12281 : see if fstatvfs exists
12282 set fstatvfs d_fstatvfs
12283 eval $inlibc
12284
12285
12286 : see if fsync exists
12287 set fsync d_fsync
12288 eval $inlibc
12289
12290 : see if ftello exists
12291 set ftello d_ftello
12292 eval $inlibc
12293 case "$longsize" in
12294 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12295 esac
12296
12297 : see if getcwd exists
12298 set getcwd d_getcwd
12299 eval $inlibc
12300
12301 : see if getespwnam exists
12302 set getespwnam d_getespwnam
12303 eval $inlibc
12304
12305
12306 : see if getfsstat exists
12307 set getfsstat d_getfsstat
12308 eval $inlibc
12309
12310 : see if getgrent exists
12311 set getgrent d_getgrent
12312 eval $inlibc
12313
12314 : see if getgrent_r exists
12315 set getgrent_r d_getgrent_r
12316 eval $inlibc
12317 case "$d_getgrent_r" in
12318 "$define")
12319         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12320         case "$d_getgrent_r_proto:$usethreads" in
12321         ":define")      d_getgrent_r_proto=define
12322                 set d_getgrent_r_proto getgrent_r $hdrs
12323                 eval $hasproto ;;
12324         *)      ;;
12325         esac
12326         case "$d_getgrent_r_proto" in
12327         define)
12328         case "$getgrent_r_proto" in
12329         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12330         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12331         esac
12332         case "$getgrent_r_proto" in
12333         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12334         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12335         esac
12336         case "$getgrent_r_proto" in
12337         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12338         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12339         esac
12340         case "$getgrent_r_proto" in
12341         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12342         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12343         esac
12344         case "$getgrent_r_proto" in
12345         ''|0) try='int getgrent_r(struct group*, char*, int);'
12346         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12347         esac
12348         case "$getgrent_r_proto" in
12349         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12350         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12351         esac
12352         case "$getgrent_r_proto" in
12353         ''|0)   d_getgrent_r=undef
12354                 getgrent_r_proto=0
12355                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12356         * )     case "$getgrent_r_proto" in
12357                 REENTRANT_PROTO*) ;;
12358                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12359                 esac
12360                 echo "Prototype: $try" ;;
12361         esac
12362         ;;
12363         *)      case "$usethreads" in
12364                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12365                 esac
12366                 d_getgrent_r=undef
12367                 getgrent_r_proto=0
12368                 ;;
12369         esac
12370         ;;
12371 *)      getgrent_r_proto=0
12372         ;;
12373 esac
12374
12375 : see if getgrgid_r exists
12376 set getgrgid_r d_getgrgid_r
12377 eval $inlibc
12378 case "$d_getgrgid_r" in
12379 "$define")
12380         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12381         case "$d_getgrgid_r_proto:$usethreads" in
12382         ":define")      d_getgrgid_r_proto=define
12383                 set d_getgrgid_r_proto getgrgid_r $hdrs
12384                 eval $hasproto ;;
12385         *)      ;;
12386         esac
12387         case "$d_getgrgid_r_proto" in
12388         define)
12389         case "$getgrgid_r_proto" in
12390         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12391         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12392         esac
12393         case "$getgrgid_r_proto" in
12394         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12395         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12396         esac
12397         case "$getgrgid_r_proto" in
12398         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12399         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12400         esac
12401         case "$getgrgid_r_proto" in
12402         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12403         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12404         esac
12405         case "$getgrgid_r_proto" in
12406         ''|0)   d_getgrgid_r=undef
12407                 getgrgid_r_proto=0
12408                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12409         * )     case "$getgrgid_r_proto" in
12410                 REENTRANT_PROTO*) ;;
12411                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12412                 esac
12413                 echo "Prototype: $try" ;;
12414         esac
12415         ;;
12416         *)      case "$usethreads" in
12417                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12418                 esac
12419                 d_getgrgid_r=undef
12420                 getgrgid_r_proto=0
12421                 ;;
12422         esac
12423         ;;
12424 *)      getgrgid_r_proto=0
12425         ;;
12426 esac
12427
12428 : see if getgrnam_r exists
12429 set getgrnam_r d_getgrnam_r
12430 eval $inlibc
12431 case "$d_getgrnam_r" in
12432 "$define")
12433         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12434         case "$d_getgrnam_r_proto:$usethreads" in
12435         ":define")      d_getgrnam_r_proto=define
12436                 set d_getgrnam_r_proto getgrnam_r $hdrs
12437                 eval $hasproto ;;
12438         *)      ;;
12439         esac
12440         case "$d_getgrnam_r_proto" in
12441         define)
12442         case "$getgrnam_r_proto" in
12443         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12444         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12445         esac
12446         case "$getgrnam_r_proto" in
12447         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12448         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12449         esac
12450         case "$getgrnam_r_proto" in
12451         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12452         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12453         esac
12454         case "$getgrnam_r_proto" in
12455         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12456         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12457         esac
12458         case "$getgrnam_r_proto" in
12459         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12460         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12461         esac
12462         case "$getgrnam_r_proto" in
12463         ''|0)   d_getgrnam_r=undef
12464                 getgrnam_r_proto=0
12465                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12466         * )     case "$getgrnam_r_proto" in
12467                 REENTRANT_PROTO*) ;;
12468                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12469                 esac
12470                 echo "Prototype: $try" ;;
12471         esac
12472         ;;
12473         *)      case "$usethreads" in
12474                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12475                 esac
12476                 d_getgrnam_r=undef
12477                 getgrnam_r_proto=0
12478                 ;;
12479         esac
12480         ;;
12481 *)      getgrnam_r_proto=0
12482         ;;
12483 esac
12484
12485 : see if gethostbyaddr exists
12486 set gethostbyaddr d_gethbyaddr
12487 eval $inlibc
12488
12489 : see if gethostbyname exists
12490 set gethostbyname d_gethbyname
12491 eval $inlibc
12492
12493 : see if gethostent exists
12494 set gethostent d_gethent
12495 eval $inlibc
12496
12497 : see how we will look up host name
12498 echo " "
12499 call=''
12500 if set gethostname val -f d_gethname; eval $csym; $val; then
12501         echo 'gethostname() found.' >&4
12502         d_gethname="$define"
12503         call=gethostname
12504 fi
12505 if set uname val -f d_uname; eval $csym; $val; then
12506         if ./xenix; then
12507                 $cat <<'EOM'
12508 uname() was found, but you're running xenix, and older versions of xenix
12509 have a broken uname(). If you don't really know whether your xenix is old
12510 enough to have a broken system call, use the default answer.
12511
12512 EOM
12513                 dflt=y
12514                 case "$d_uname" in
12515                 "$define") dflt=n;;
12516                 esac
12517                 rp='Is your uname() broken?'
12518                 . ./myread
12519                 case "$ans" in
12520                 n*) d_uname="$define"; call=uname;;
12521                 esac
12522         else
12523                 echo 'uname() found.' >&4
12524                 d_uname="$define"
12525                 case "$call" in
12526                 '') call=uname ;;
12527                 esac
12528         fi
12529 fi
12530 case "$d_gethname" in
12531 '') d_gethname="$undef";;
12532 esac
12533 case "$d_uname" in
12534 '') d_uname="$undef";;
12535 esac
12536 case "$d_uname$d_gethname" in
12537 *define*)
12538         dflt=n
12539         cat <<EOM
12540  
12541 Every now and then someone has a $call() that lies about the hostname
12542 but can't be fixed for political or economic reasons.  If you wish, I can
12543 pretend $call() isn't there and maybe compute hostname at run-time
12544 thanks to the '$phostname' command.
12545
12546 EOM
12547         rp="Shall I ignore $call() from now on?"
12548         . ./myread
12549         case "$ans" in
12550         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12551         esac;;
12552 esac
12553 case "$phostname" in
12554 '') aphostname='';;
12555 *) case "$aphostname" in
12556         /*) ;;
12557         *) set X $phostname
12558                 shift
12559                 file=$1
12560                 shift
12561                 file=`./loc $file $file $pth`
12562                 aphostname=`echo $file $*`
12563                 ;;
12564         esac
12565         ;;
12566 esac
12567 case "$d_uname$d_gethname" in
12568 *define*) ;;
12569 *)
12570         case "$phostname" in
12571         '')
12572                 echo "There will be no way for $package to get your hostname." >&4;;
12573         *)
12574         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12575                 ;;
12576         esac;;
12577 esac
12578 case "$d_phostname" in
12579 '') d_phostname="$undef";;
12580 esac
12581
12582 : see if gethostbyaddr_r exists
12583 set gethostbyaddr_r d_gethostbyaddr_r
12584 eval $inlibc
12585 case "$d_gethostbyaddr_r" in
12586 "$define")
12587         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12588         case "$d_gethostbyaddr_r_proto:$usethreads" in
12589         ":define")      d_gethostbyaddr_r_proto=define
12590                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12591                 eval $hasproto ;;
12592         *)      ;;
12593         esac
12594         case "$d_gethostbyaddr_r_proto" in
12595         define)
12596         case "$gethostbyaddr_r_proto" in
12597         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12598         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12599         esac
12600         case "$gethostbyaddr_r_proto" in
12601         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12602         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12603         esac
12604         case "$gethostbyaddr_r_proto" in
12605         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12606         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12607         esac
12608         case "$gethostbyaddr_r_proto" in
12609         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12610         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12611         esac
12612         case "$gethostbyaddr_r_proto" in
12613         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12614         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12615         esac
12616         case "$gethostbyaddr_r_proto" in
12617         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12618         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12619         esac
12620         case "$gethostbyaddr_r_proto" in
12621         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12622         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12623         esac
12624         case "$gethostbyaddr_r_proto" in
12625         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12626         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12627         esac
12628         case "$gethostbyaddr_r_proto" in
12629         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12630         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12631         esac
12632         case "$gethostbyaddr_r_proto" in
12633         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12634         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12635         esac
12636         case "$gethostbyaddr_r_proto" in
12637         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12638         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12639         esac
12640         case "$gethostbyaddr_r_proto" in
12641         ''|0)   d_gethostbyaddr_r=undef
12642                 gethostbyaddr_r_proto=0
12643                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12644         * )     case "$gethostbyaddr_r_proto" in
12645                 REENTRANT_PROTO*) ;;
12646                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12647                 esac
12648                 echo "Prototype: $try" ;;
12649         esac
12650         ;;
12651         *)      case "$usethreads" in
12652                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12653                 esac
12654                 d_gethostbyaddr_r=undef
12655                 gethostbyaddr_r_proto=0
12656                 ;;
12657         esac
12658         ;;
12659 *)      gethostbyaddr_r_proto=0
12660         ;;
12661 esac
12662
12663 : see if gethostbyname_r exists
12664 set gethostbyname_r d_gethostbyname_r
12665 eval $inlibc
12666 case "$d_gethostbyname_r" in
12667 "$define")
12668         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12669         case "$d_gethostbyname_r_proto:$usethreads" in
12670         ":define")      d_gethostbyname_r_proto=define
12671                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12672                 eval $hasproto ;;
12673         *)      ;;
12674         esac
12675         case "$d_gethostbyname_r_proto" in
12676         define)
12677         case "$gethostbyname_r_proto" in
12678         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12679         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12680         esac
12681         case "$gethostbyname_r_proto" in
12682         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12683         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12684         esac
12685         case "$gethostbyname_r_proto" in
12686         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12687         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12688         esac
12689         case "$gethostbyname_r_proto" in
12690         ''|0)   d_gethostbyname_r=undef
12691                 gethostbyname_r_proto=0
12692                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12693         * )     case "$gethostbyname_r_proto" in
12694                 REENTRANT_PROTO*) ;;
12695                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12696                 esac
12697                 echo "Prototype: $try" ;;
12698         esac
12699         ;;
12700         *)      case "$usethreads" in
12701                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12702                 esac
12703                 d_gethostbyname_r=undef
12704                 gethostbyname_r_proto=0
12705                 ;;
12706         esac
12707         ;;
12708 *)      gethostbyname_r_proto=0
12709         ;;
12710 esac
12711
12712 : see if gethostent_r exists
12713 set gethostent_r d_gethostent_r
12714 eval $inlibc
12715 case "$d_gethostent_r" in
12716 "$define")
12717         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12718         case "$d_gethostent_r_proto:$usethreads" in
12719         ":define")      d_gethostent_r_proto=define
12720                 set d_gethostent_r_proto gethostent_r $hdrs
12721                 eval $hasproto ;;
12722         *)      ;;
12723         esac
12724         case "$d_gethostent_r_proto" in
12725         define)
12726         case "$gethostent_r_proto" in
12727         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12728         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12729         esac
12730         case "$gethostent_r_proto" in
12731         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12732         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12733         esac
12734         case "$gethostent_r_proto" in
12735         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12736         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12737         esac
12738         case "$gethostent_r_proto" in
12739         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12740         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12741         esac
12742         case "$gethostent_r_proto" in
12743         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12744         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12745         esac
12746         case "$gethostent_r_proto" in
12747         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12748         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12749         esac
12750         case "$gethostent_r_proto" in
12751         ''|0)   d_gethostent_r=undef
12752                 gethostent_r_proto=0
12753                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12754         * )     case "$gethostent_r_proto" in
12755                 REENTRANT_PROTO*) ;;
12756                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12757                 esac
12758                 echo "Prototype: $try" ;;
12759         esac
12760         ;;
12761         *)      case "$usethreads" in
12762                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12763                 esac
12764                 d_gethostent_r=undef
12765                 gethostent_r_proto=0
12766                 ;;
12767         esac
12768         ;;
12769 *)      gethostent_r_proto=0
12770         ;;
12771 esac
12772
12773 : see if prototypes for various gethostxxx netdb.h functions are available
12774 echo " "
12775 set d_gethostprotos gethostent $i_netdb netdb.h
12776 eval $hasproto
12777
12778 : see if getitimer exists
12779 set getitimer d_getitimer
12780 eval $inlibc
12781
12782 : see if getlogin exists
12783 set getlogin d_getlogin
12784 eval $inlibc
12785
12786 : see if getlogin_r exists
12787 set getlogin_r d_getlogin_r
12788 eval $inlibc
12789 case "$d_getlogin_r" in
12790 "$define")
12791         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12792         case "$d_getlogin_r_proto:$usethreads" in
12793         ":define")      d_getlogin_r_proto=define
12794                 set d_getlogin_r_proto getlogin_r $hdrs
12795                 eval $hasproto ;;
12796         *)      ;;
12797         esac
12798         case "$d_getlogin_r_proto" in
12799         define)
12800         case "$getlogin_r_proto" in
12801         ''|0) try='int getlogin_r(char*, size_t);'
12802         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12803         esac
12804         case "$getlogin_r_proto" in
12805         ''|0) try='int getlogin_r(char*, int);'
12806         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12807         esac
12808         case "$getlogin_r_proto" in
12809         ''|0) try='char* getlogin_r(char*, size_t);'
12810         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12811         esac
12812         case "$getlogin_r_proto" in
12813         ''|0) try='char* getlogin_r(char*, int);'
12814         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12815         esac
12816         case "$getlogin_r_proto" in
12817         ''|0)   d_getlogin_r=undef
12818                 getlogin_r_proto=0
12819                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12820         * )     case "$getlogin_r_proto" in
12821                 REENTRANT_PROTO*) ;;
12822                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12823                 esac
12824                 echo "Prototype: $try" ;;
12825         esac
12826         ;;
12827         *)      case "$usethreads" in
12828                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12829                 esac
12830                 d_getlogin_r=undef
12831                 getlogin_r_proto=0
12832                 ;;
12833         esac
12834         ;;
12835 *)      getlogin_r_proto=0
12836         ;;
12837 esac
12838
12839 : see if getmnt exists
12840 set getmnt d_getmnt
12841 eval $inlibc
12842
12843 : see if getmntent exists
12844 set getmntent d_getmntent
12845 eval $inlibc
12846
12847 : see if getnetbyaddr exists
12848 set getnetbyaddr d_getnbyaddr
12849 eval $inlibc
12850
12851 : see if getnetbyname exists
12852 set getnetbyname d_getnbyname
12853 eval $inlibc
12854
12855 : see if getnetent exists
12856 set getnetent d_getnent
12857 eval $inlibc
12858
12859 : see if getnetbyaddr_r exists
12860 set getnetbyaddr_r d_getnetbyaddr_r
12861 eval $inlibc
12862 case "$d_getnetbyaddr_r" in
12863 "$define")
12864         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12865         case "$d_getnetbyaddr_r_proto:$usethreads" in
12866         ":define")      d_getnetbyaddr_r_proto=define
12867                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12868                 eval $hasproto ;;
12869         *)      ;;
12870         esac
12871         case "$d_getnetbyaddr_r_proto" in
12872         define)
12873         case "$getnetbyaddr_r_proto" in
12874         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12875         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12876         esac
12877         case "$getnetbyaddr_r_proto" in
12878         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12879         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12880         esac
12881         case "$getnetbyaddr_r_proto" in
12882         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12883         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12884         esac
12885         case "$getnetbyaddr_r_proto" in
12886         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12887         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12888         esac
12889         case "$getnetbyaddr_r_proto" in
12890         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12891         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12892         esac
12893         case "$getnetbyaddr_r_proto" in
12894         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12895         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12896         esac
12897         case "$getnetbyaddr_r_proto" in
12898         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12899         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12900         esac
12901         case "$getnetbyaddr_r_proto" in
12902         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12903         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12904         esac
12905         case "$getnetbyaddr_r_proto" in
12906         ''|0)   d_getnetbyaddr_r=undef
12907                 getnetbyaddr_r_proto=0
12908                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12909         * )     case "$getnetbyaddr_r_proto" in
12910                 REENTRANT_PROTO*) ;;
12911                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12912                 esac
12913                 echo "Prototype: $try" ;;
12914         esac
12915         ;;
12916         *)      case "$usethreads" in
12917                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12918                 esac
12919                 d_getnetbyaddr_r=undef
12920                 getnetbyaddr_r_proto=0
12921                 ;;
12922         esac
12923         ;;
12924 *)      getnetbyaddr_r_proto=0
12925         ;;
12926 esac
12927
12928 : see if getnetbyname_r exists
12929 set getnetbyname_r d_getnetbyname_r
12930 eval $inlibc
12931 case "$d_getnetbyname_r" in
12932 "$define")
12933         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12934         case "$d_getnetbyname_r_proto:$usethreads" in
12935         ":define")      d_getnetbyname_r_proto=define
12936                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12937                 eval $hasproto ;;
12938         *)      ;;
12939         esac
12940         case "$d_getnetbyname_r_proto" in
12941         define)
12942         case "$getnetbyname_r_proto" in
12943         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12944         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12945         esac
12946         case "$getnetbyname_r_proto" in
12947         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12948         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12949         esac
12950         case "$getnetbyname_r_proto" in
12951         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12952         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12953         esac
12954         case "$getnetbyname_r_proto" in
12955         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12956         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12957         esac
12958         case "$getnetbyname_r_proto" in
12959         ''|0)   d_getnetbyname_r=undef
12960                 getnetbyname_r_proto=0
12961                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12962         * )     case "$getnetbyname_r_proto" in
12963                 REENTRANT_PROTO*) ;;
12964                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12965                 esac
12966                 echo "Prototype: $try" ;;
12967         esac
12968         ;;
12969         *)      case "$usethreads" in
12970                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12971                 esac
12972                 d_getnetbyname_r=undef
12973                 getnetbyname_r_proto=0
12974                 ;;
12975         esac
12976         ;;
12977 *)      getnetbyname_r_proto=0
12978         ;;
12979 esac
12980
12981 : see if getnetent_r exists
12982 set getnetent_r d_getnetent_r
12983 eval $inlibc
12984 case "$d_getnetent_r" in
12985 "$define")
12986         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12987         case "$d_getnetent_r_proto:$usethreads" in
12988         ":define")      d_getnetent_r_proto=define
12989                 set d_getnetent_r_proto getnetent_r $hdrs
12990                 eval $hasproto ;;
12991         *)      ;;
12992         esac
12993         case "$d_getnetent_r_proto" in
12994         define)
12995         case "$getnetent_r_proto" in
12996         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12997         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12998         esac
12999         case "$getnetent_r_proto" in
13000         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13001         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13002         esac
13003         case "$getnetent_r_proto" in
13004         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13005         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13006         esac
13007         case "$getnetent_r_proto" in
13008         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13009         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13010         esac
13011         case "$getnetent_r_proto" in
13012         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13013         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13014         esac
13015         case "$getnetent_r_proto" in
13016         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13017         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13018         esac
13019         case "$getnetent_r_proto" in
13020         ''|0)   d_getnetent_r=undef
13021                 getnetent_r_proto=0
13022                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13023         * )     case "$getnetent_r_proto" in
13024                 REENTRANT_PROTO*) ;;
13025                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13026                 esac
13027                 echo "Prototype: $try" ;;
13028         esac
13029         ;;
13030         *)      case "$usethreads" in
13031                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13032                 esac
13033                 d_getnetent_r=undef
13034                 getnetent_r_proto=0
13035                 ;;
13036         esac
13037         ;;
13038 *)      getnetent_r_proto=0
13039         ;;
13040 esac
13041
13042 : see if prototypes for various getnetxxx netdb.h functions are available
13043 echo " "
13044 set d_getnetprotos getnetent $i_netdb netdb.h
13045 eval $hasproto
13046
13047 : see if getpagesize exists
13048 set getpagesize d_getpagsz
13049 eval $inlibc
13050
13051
13052 : see if getprotobyname exists
13053 set getprotobyname d_getpbyname
13054 eval $inlibc
13055
13056 : see if getprotobynumber exists
13057 set getprotobynumber d_getpbynumber
13058 eval $inlibc
13059
13060 : see if getprotoent exists
13061 set getprotoent d_getpent
13062 eval $inlibc
13063
13064 : see if getpgid exists
13065 set getpgid d_getpgid
13066 eval $inlibc
13067
13068 : see if getpgrp2 exists
13069 set getpgrp2 d_getpgrp2
13070 eval $inlibc
13071
13072 : see if getppid exists
13073 set getppid d_getppid
13074 eval $inlibc
13075
13076 : see if getpriority exists
13077 set getpriority d_getprior
13078 eval $inlibc
13079
13080 : see if getprotobyname_r exists
13081 set getprotobyname_r d_getprotobyname_r
13082 eval $inlibc
13083 case "$d_getprotobyname_r" in
13084 "$define")
13085         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13086         case "$d_getprotobyname_r_proto:$usethreads" in
13087         ":define")      d_getprotobyname_r_proto=define
13088                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13089                 eval $hasproto ;;
13090         *)      ;;
13091         esac
13092         case "$d_getprotobyname_r_proto" in
13093         define)
13094         case "$getprotobyname_r_proto" in
13095         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13096         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13097         esac
13098         case "$getprotobyname_r_proto" in
13099         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13100         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13101         esac
13102         case "$getprotobyname_r_proto" in
13103         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13104         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13105         esac
13106         case "$getprotobyname_r_proto" in
13107         ''|0)   d_getprotobyname_r=undef
13108                 getprotobyname_r_proto=0
13109                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13110         * )     case "$getprotobyname_r_proto" in
13111                 REENTRANT_PROTO*) ;;
13112                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13113                 esac
13114                 echo "Prototype: $try" ;;
13115         esac
13116         ;;
13117         *)      case "$usethreads" in
13118                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13119                 esac
13120                 d_getprotobyname_r=undef
13121                 getprotobyname_r_proto=0
13122                 ;;
13123         esac
13124         ;;
13125 *)      getprotobyname_r_proto=0
13126         ;;
13127 esac
13128
13129 : see if getprotobynumber_r exists
13130 set getprotobynumber_r d_getprotobynumber_r
13131 eval $inlibc
13132 case "$d_getprotobynumber_r" in
13133 "$define")
13134         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13135         case "$d_getprotobynumber_r_proto:$usethreads" in
13136         ":define")      d_getprotobynumber_r_proto=define
13137                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13138                 eval $hasproto ;;
13139         *)      ;;
13140         esac
13141         case "$d_getprotobynumber_r_proto" in
13142         define)
13143         case "$getprotobynumber_r_proto" in
13144         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13145         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13146         esac
13147         case "$getprotobynumber_r_proto" in
13148         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13149         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13150         esac
13151         case "$getprotobynumber_r_proto" in
13152         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13153         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13154         esac
13155         case "$getprotobynumber_r_proto" in
13156         ''|0)   d_getprotobynumber_r=undef
13157                 getprotobynumber_r_proto=0
13158                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13159         * )     case "$getprotobynumber_r_proto" in
13160                 REENTRANT_PROTO*) ;;
13161                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13162                 esac
13163                 echo "Prototype: $try" ;;
13164         esac
13165         ;;
13166         *)      case "$usethreads" in
13167                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13168                 esac
13169                 d_getprotobynumber_r=undef
13170                 getprotobynumber_r_proto=0
13171                 ;;
13172         esac
13173         ;;
13174 *)      getprotobynumber_r_proto=0
13175         ;;
13176 esac
13177
13178 : see if getprotoent_r exists
13179 set getprotoent_r d_getprotoent_r
13180 eval $inlibc
13181 case "$d_getprotoent_r" in
13182 "$define")
13183         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13184         case "$d_getprotoent_r_proto:$usethreads" in
13185         ":define")      d_getprotoent_r_proto=define
13186                 set d_getprotoent_r_proto getprotoent_r $hdrs
13187                 eval $hasproto ;;
13188         *)      ;;
13189         esac
13190         case "$d_getprotoent_r_proto" in
13191         define)
13192         case "$getprotoent_r_proto" in
13193         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13194         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13195         esac
13196         case "$getprotoent_r_proto" in
13197         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13198         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13199         esac
13200         case "$getprotoent_r_proto" in
13201         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13202         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13203         esac
13204         case "$getprotoent_r_proto" in
13205         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13206         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13207         esac
13208         case "$getprotoent_r_proto" in
13209         ''|0)   d_getprotoent_r=undef
13210                 getprotoent_r_proto=0
13211                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13212         * )     case "$getprotoent_r_proto" in
13213                 REENTRANT_PROTO*) ;;
13214                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13215                 esac
13216                 echo "Prototype: $try" ;;
13217         esac
13218         ;;
13219         *)      case "$usethreads" in
13220                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13221                 esac
13222                 d_getprotoent_r=undef
13223                 getprotoent_r_proto=0
13224                 ;;
13225         esac
13226         ;;
13227 *)      getprotoent_r_proto=0
13228         ;;
13229 esac
13230
13231 : see if prototypes for various getprotoxxx netdb.h functions are available
13232 echo " "
13233 set d_getprotoprotos getprotoent $i_netdb netdb.h
13234 eval $hasproto
13235
13236 : see if getprpwnam exists
13237 set getprpwnam d_getprpwnam
13238 eval $inlibc
13239
13240 : see if getpwent exists
13241 set getpwent d_getpwent
13242 eval $inlibc
13243
13244 : see if getpwent_r exists
13245 set getpwent_r d_getpwent_r
13246 eval $inlibc
13247 case "$d_getpwent_r" in
13248 "$define")
13249         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13250         case "$d_getpwent_r_proto:$usethreads" in
13251         ":define")      d_getpwent_r_proto=define
13252                 set d_getpwent_r_proto getpwent_r $hdrs
13253                 eval $hasproto ;;
13254         *)      ;;
13255         esac
13256         case "$d_getpwent_r_proto" in
13257         define)
13258         case "$getpwent_r_proto" in
13259         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13260         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13261         esac
13262         case "$getpwent_r_proto" in
13263         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13264         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13265         esac
13266         case "$getpwent_r_proto" in
13267         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13268         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13269         esac
13270         case "$getpwent_r_proto" in
13271         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13272         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13273         esac
13274         case "$getpwent_r_proto" in
13275         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13276         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13277         esac
13278         case "$getpwent_r_proto" in
13279         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13280         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13281         esac
13282         case "$getpwent_r_proto" in
13283         ''|0)   d_getpwent_r=undef
13284                 getpwent_r_proto=0
13285                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13286         * )     case "$getpwent_r_proto" in
13287                 REENTRANT_PROTO*) ;;
13288                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13289                 esac
13290                 echo "Prototype: $try" ;;
13291         esac
13292         ;;
13293         *)      case "$usethreads" in
13294                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13295                 esac
13296                 d_getpwent_r=undef
13297                 getpwent_r_proto=0
13298                 ;;
13299         esac
13300         ;;
13301 *)      getpwent_r_proto=0
13302         ;;
13303 esac
13304
13305 : see if getpwnam_r exists
13306 set getpwnam_r d_getpwnam_r
13307 eval $inlibc
13308 case "$d_getpwnam_r" in
13309 "$define")
13310         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13311         case "$d_getpwnam_r_proto:$usethreads" in
13312         ":define")      d_getpwnam_r_proto=define
13313                 set d_getpwnam_r_proto getpwnam_r $hdrs
13314                 eval $hasproto ;;
13315         *)      ;;
13316         esac
13317         case "$d_getpwnam_r_proto" in
13318         define)
13319         case "$getpwnam_r_proto" in
13320         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13321         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13322         esac
13323         case "$getpwnam_r_proto" in
13324         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13325         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13326         esac
13327         case "$getpwnam_r_proto" in
13328         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13329         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13330         esac
13331         case "$getpwnam_r_proto" in
13332         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13333         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13334         esac
13335         case "$getpwnam_r_proto" in
13336         ''|0)   d_getpwnam_r=undef
13337                 getpwnam_r_proto=0
13338                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13339         * )     case "$getpwnam_r_proto" in
13340                 REENTRANT_PROTO*) ;;
13341                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13342                 esac
13343                 echo "Prototype: $try" ;;
13344         esac
13345         ;;
13346         *)      case "$usethreads" in
13347                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13348                 esac
13349                 d_getpwnam_r=undef
13350                 getpwnam_r_proto=0
13351                 ;;
13352         esac
13353         ;;
13354 *)      getpwnam_r_proto=0
13355         ;;
13356 esac
13357
13358 : see if getpwuid_r exists
13359 set getpwuid_r d_getpwuid_r
13360 eval $inlibc
13361 case "$d_getpwuid_r" in
13362 "$define")
13363         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13364         case "$d_getpwuid_r_proto:$usethreads" in
13365         ":define")      d_getpwuid_r_proto=define
13366                 set d_getpwuid_r_proto getpwuid_r $hdrs
13367                 eval $hasproto ;;
13368         *)      ;;
13369         esac
13370         case "$d_getpwuid_r_proto" in
13371         define)
13372         case "$getpwuid_r_proto" in
13373         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13374         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13375         esac
13376         case "$getpwuid_r_proto" in
13377         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13378         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13379         esac
13380         case "$getpwuid_r_proto" in
13381         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13382         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13383         esac
13384         case "$getpwuid_r_proto" in
13385         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13386         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13387         esac
13388         case "$getpwuid_r_proto" in
13389         ''|0)   d_getpwuid_r=undef
13390                 getpwuid_r_proto=0
13391                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13392         * )     case "$getpwuid_r_proto" in
13393                 REENTRANT_PROTO*) ;;
13394                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13395                 esac
13396                 echo "Prototype: $try" ;;
13397         esac
13398         ;;
13399         *)      case "$usethreads" in
13400                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13401                 esac
13402                 d_getpwuid_r=undef
13403                 getpwuid_r_proto=0
13404                 ;;
13405         esac
13406         ;;
13407 *)      getpwuid_r_proto=0
13408         ;;
13409 esac
13410
13411
13412 : see if getservbyname exists
13413 set getservbyname d_getsbyname
13414 eval $inlibc
13415
13416 : see if getservbyport exists
13417 set getservbyport d_getsbyport
13418 eval $inlibc
13419
13420 : see if getservent exists
13421 set getservent d_getsent
13422 eval $inlibc
13423
13424 : see if getservbyname_r exists
13425 set getservbyname_r d_getservbyname_r
13426 eval $inlibc
13427 case "$d_getservbyname_r" in
13428 "$define")
13429         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13430         case "$d_getservbyname_r_proto:$usethreads" in
13431         ":define")      d_getservbyname_r_proto=define
13432                 set d_getservbyname_r_proto getservbyname_r $hdrs
13433                 eval $hasproto ;;
13434         *)      ;;
13435         esac
13436         case "$d_getservbyname_r_proto" in
13437         define)
13438         case "$getservbyname_r_proto" in
13439         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13440         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13441         esac
13442         case "$getservbyname_r_proto" in
13443         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13444         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13445         esac
13446         case "$getservbyname_r_proto" in
13447         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13448         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13449         esac
13450         case "$getservbyname_r_proto" in
13451         ''|0)   d_getservbyname_r=undef
13452                 getservbyname_r_proto=0
13453                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13454         * )     case "$getservbyname_r_proto" in
13455                 REENTRANT_PROTO*) ;;
13456                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13457                 esac
13458                 echo "Prototype: $try" ;;
13459         esac
13460         ;;
13461         *)      case "$usethreads" in
13462                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13463                 esac
13464                 d_getservbyname_r=undef
13465                 getservbyname_r_proto=0
13466                 ;;
13467         esac
13468         ;;
13469 *)      getservbyname_r_proto=0
13470         ;;
13471 esac
13472
13473 : see if getservbyport_r exists
13474 set getservbyport_r d_getservbyport_r
13475 eval $inlibc
13476 case "$d_getservbyport_r" in
13477 "$define")
13478         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13479         case "$d_getservbyport_r_proto:$usethreads" in
13480         ":define")      d_getservbyport_r_proto=define
13481                 set d_getservbyport_r_proto getservbyport_r $hdrs
13482                 eval $hasproto ;;
13483         *)      ;;
13484         esac
13485         case "$d_getservbyport_r_proto" in
13486         define)
13487         case "$getservbyport_r_proto" in
13488         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13489         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13490         esac
13491         case "$getservbyport_r_proto" in
13492         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13493         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13494         esac
13495         case "$getservbyport_r_proto" in
13496         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13497         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13498         esac
13499         case "$getservbyport_r_proto" in
13500         ''|0)   d_getservbyport_r=undef
13501                 getservbyport_r_proto=0
13502                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13503         * )     case "$getservbyport_r_proto" in
13504                 REENTRANT_PROTO*) ;;
13505                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13506                 esac
13507                 echo "Prototype: $try" ;;
13508         esac
13509         ;;
13510         *)      case "$usethreads" in
13511                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13512                 esac
13513                 d_getservbyport_r=undef
13514                 getservbyport_r_proto=0
13515                 ;;
13516         esac
13517         ;;
13518 *)      getservbyport_r_proto=0
13519         ;;
13520 esac
13521
13522 : see if getservent_r exists
13523 set getservent_r d_getservent_r
13524 eval $inlibc
13525 case "$d_getservent_r" in
13526 "$define")
13527         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13528         case "$d_getservent_r_proto:$usethreads" in
13529         ":define")      d_getservent_r_proto=define
13530                 set d_getservent_r_proto getservent_r $hdrs
13531                 eval $hasproto ;;
13532         *)      ;;
13533         esac
13534         case "$d_getservent_r_proto" in
13535         define)
13536         case "$getservent_r_proto" in
13537         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13538         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13539         esac
13540         case "$getservent_r_proto" in
13541         ''|0) try='int getservent_r(struct servent*, char*, int);'
13542         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13543         esac
13544         case "$getservent_r_proto" in
13545         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13546         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13547         esac
13548         case "$getservent_r_proto" in
13549         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13550         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13551         esac
13552         case "$getservent_r_proto" in
13553         ''|0)   d_getservent_r=undef
13554                 getservent_r_proto=0
13555                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13556         * )     case "$getservent_r_proto" in
13557                 REENTRANT_PROTO*) ;;
13558                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13559                 esac
13560                 echo "Prototype: $try" ;;
13561         esac
13562         ;;
13563         *)      case "$usethreads" in
13564                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13565                 esac
13566                 d_getservent_r=undef
13567                 getservent_r_proto=0
13568                 ;;
13569         esac
13570         ;;
13571 *)      getservent_r_proto=0
13572         ;;
13573 esac
13574
13575 : see if prototypes for various getservxxx netdb.h functions are available
13576 echo " "
13577 set d_getservprotos getservent $i_netdb netdb.h
13578 eval $hasproto
13579
13580 : see if getspnam exists
13581 set getspnam d_getspnam
13582 eval $inlibc
13583
13584 : see if this is a shadow.h system
13585 set shadow.h i_shadow
13586 eval $inhdr
13587
13588 : see if getspnam_r exists
13589 set getspnam_r d_getspnam_r
13590 eval $inlibc
13591 case "$d_getspnam_r" in
13592 "$define")
13593         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13594         case "$d_getspnam_r_proto:$usethreads" in
13595         ":define")      d_getspnam_r_proto=define
13596                 set d_getspnam_r_proto getspnam_r $hdrs
13597                 eval $hasproto ;;
13598         *)      ;;
13599         esac
13600         case "$d_getspnam_r_proto" in
13601         define)
13602         case "$getspnam_r_proto" in
13603         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13604         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13605         esac
13606         case "$getspnam_r_proto" in
13607         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13608         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13609         esac
13610         case "$getspnam_r_proto" in
13611         ''|0)   d_getspnam_r=undef
13612                 getspnam_r_proto=0
13613                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13614         * )     case "$getspnam_r_proto" in
13615                 REENTRANT_PROTO*) ;;
13616                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13617                 esac
13618                 echo "Prototype: $try" ;;
13619         esac
13620         ;;
13621         *)      case "$usethreads" in
13622                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13623                 esac
13624                 d_getspnam_r=undef
13625                 getspnam_r_proto=0
13626                 ;;
13627         esac
13628         ;;
13629 *)      getspnam_r_proto=0
13630         ;;
13631 esac
13632
13633 : see if gettimeofday or ftime exists
13634 set gettimeofday d_gettimeod
13635 eval $inlibc
13636 case "$d_gettimeod" in
13637 "$undef")
13638         set ftime d_ftime 
13639         eval $inlibc
13640         ;;
13641 *)
13642         val="$undef"; set d_ftime; eval $setvar
13643         ;;
13644 esac
13645 case "$d_gettimeod$d_ftime" in
13646 "$undef$undef")
13647         echo " "
13648         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13649         ;;
13650 esac
13651
13652 : see if gmtime_r exists
13653 set gmtime_r d_gmtime_r
13654 eval $inlibc
13655 case "$d_gmtime_r" in
13656 "$define")
13657         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13658         case "$d_gmtime_r_proto:$usethreads" in
13659         ":define")      d_gmtime_r_proto=define
13660                 set d_gmtime_r_proto gmtime_r $hdrs
13661                 eval $hasproto ;;
13662         *)      ;;
13663         esac
13664         case "$d_gmtime_r_proto" in
13665         define)
13666         case "$gmtime_r_proto" in
13667         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13668         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13669         esac
13670         case "$gmtime_r_proto" in
13671         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13672         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13673         esac
13674         case "$gmtime_r_proto" in
13675         ''|0)   d_gmtime_r=undef
13676                 gmtime_r_proto=0
13677                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13678         * )     case "$gmtime_r_proto" in
13679                 REENTRANT_PROTO*) ;;
13680                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13681                 esac
13682                 echo "Prototype: $try" ;;
13683         esac
13684         ;;
13685         *)      case "$usethreads" in
13686                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13687                 esac
13688                 d_gmtime_r=undef
13689                 gmtime_r_proto=0
13690                 ;;
13691         esac
13692         ;;
13693 *)      gmtime_r_proto=0
13694         ;;
13695 esac
13696
13697 : see if hasmntopt exists
13698 set hasmntopt d_hasmntopt
13699 eval $inlibc
13700
13701 : see if this is a netinet/in.h or sys/in.h system
13702 set netinet/in.h i_niin sys/in.h i_sysin
13703 eval $inhdr
13704
13705 : see if arpa/inet.h has to be included
13706 set arpa/inet.h i_arpainet
13707 eval $inhdr
13708
13709 : see if htonl --and friends-- exists
13710 val=''
13711 set htonl val
13712 eval $inlibc
13713
13714 : Maybe they are macros.
13715 case "$val" in
13716 $undef)
13717         $cat >htonl.c <<EOM
13718 #include <stdio.h>
13719 #include <sys/types.h>
13720 #$i_niin I_NETINET_IN
13721 #$i_sysin I_SYS_IN
13722 #$i_arpainet I_ARPA_INET
13723 #ifdef I_NETINET_IN
13724 #include <netinet/in.h>
13725 #endif
13726 #ifdef I_SYS_IN
13727 #include <sys/in.h>
13728 #endif
13729 #ifdef I_ARPA_INET
13730 #include <arpa/inet.h>
13731 #endif
13732 #ifdef htonl
13733 printf("Defined as a macro.");
13734 #endif
13735 EOM
13736         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13737         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13738                 val="$define"
13739                 echo "But it seems to be defined as a macro." >&4
13740         fi
13741         $rm -f htonl.?
13742         ;;
13743 esac
13744 set d_htonl
13745 eval $setvar
13746
13747 : see if ilogbl exists
13748 set ilogbl d_ilogbl
13749 eval $inlibc
13750
13751 : index or strchr
13752 echo " "
13753 if set index val -f; eval $csym; $val; then
13754         if set strchr val -f d_strchr; eval $csym; $val; then
13755                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13756                         val="$define"
13757                         vali="$undef"
13758                         echo "strchr() found." >&4
13759                 else
13760                         val="$undef"
13761                         vali="$define"
13762                         echo "index() found." >&4
13763                 fi
13764         else
13765                 val="$undef"
13766                 vali="$define"
13767                 echo "index() found." >&4
13768         fi
13769 else
13770         if set strchr val -f d_strchr; eval $csym; $val; then
13771                 val="$define"
13772                 vali="$undef"
13773                 echo "strchr() found." >&4
13774         else
13775                 echo "No index() or strchr() found!" >&4
13776                 val="$undef"
13777                 vali="$undef"
13778         fi
13779 fi
13780 set d_strchr; eval $setvar
13781 val="$vali"
13782 set d_index; eval $setvar
13783
13784 : check whether inet_aton exists
13785 set inet_aton d_inetaton
13786 eval $inlibc
13787
13788 : Look for isascii
13789 echo " "
13790 $cat >isascii.c <<EOCP
13791 #include <stdio.h>
13792 #include <ctype.h>
13793 #$i_stdlib I_STDLIB
13794 #ifdef I_STDLIB
13795 #include <stdlib.h>
13796 #endif
13797 int main() {
13798         int c = 'A';
13799         if (isascii(c))
13800                 exit(0);
13801         else
13802                 exit(1);
13803 }
13804 EOCP
13805 set isascii
13806 if eval $compile; then
13807         echo "isascii() found." >&4
13808         val="$define"
13809 else
13810         echo "isascii() NOT found." >&4
13811         val="$undef"
13812 fi
13813 set d_isascii
13814 eval $setvar
13815 $rm -f isascii*
13816
13817 : see if isfinite exists
13818 set isfinite d_isfinite
13819 eval $inlibc
13820
13821 : see if isinf exists
13822 set isinf d_isinf
13823 eval $inlibc
13824
13825 : see if isnan exists
13826 set isnan d_isnan
13827 eval $inlibc
13828
13829 : see if isnanl exists
13830 set isnanl d_isnanl
13831 eval $inlibc
13832
13833 : see if killpg exists
13834 set killpg d_killpg
13835 eval $inlibc
13836
13837 : see if lchown exists
13838 echo " "
13839 $cat > try.c <<'EOCP'
13840 /* System header to define __stub macros and hopefully few prototypes,
13841     which can conflict with char lchown(); below.  */
13842 #include <assert.h>
13843 /* Override any gcc2 internal prototype to avoid an error.  */
13844 /* We use char because int might match the return type of a gcc2
13845    builtin and then its argument prototype would still apply.  */
13846 char lchown();
13847 int main() {
13848     /*  The GNU C library defines this for functions which it implements
13849         to always fail with ENOSYS.  Some functions are actually named
13850         something starting with __ and the normal name is an alias.  */
13851 #if defined (__stub_lchown) || defined (__stub___lchown)
13852 choke me
13853 #else
13854 lchown();
13855 #endif
13856 ; return 0; }
13857 EOCP
13858 set try
13859 if eval $compile; then
13860     $echo "lchown() found." >&4
13861     val="$define"
13862 else
13863     $echo "lchown() NOT found." >&4
13864     val="$undef"
13865 fi
13866 set d_lchown
13867 eval $setvar
13868
13869 : See if number of significant digits in a double precision number is known
13870 echo " "
13871 $cat >ldbl_dig.c <<EOM
13872 #$i_limits I_LIMITS
13873 #$i_float I_FLOAT
13874 #ifdef I_LIMITS
13875 #include <limits.h>
13876 #endif
13877 #ifdef I_FLOAT
13878 #include <float.h>
13879 #endif
13880 #ifdef LDBL_DIG
13881 printf("Contains LDBL_DIG");
13882 #endif
13883 EOM
13884 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13885 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13886         echo "LDBL_DIG found." >&4
13887         val="$define"
13888 else
13889         echo "LDBL_DIG NOT found." >&4
13890         val="$undef"
13891 fi
13892 $rm -f ldbl_dig.?
13893 set d_ldbl_dig
13894 eval $setvar
13895
13896 : see if link exists
13897 set link d_link
13898 eval $inlibc
13899
13900 : see if localtime_r exists
13901 set localtime_r d_localtime_r
13902 eval $inlibc
13903 case "$d_localtime_r" in
13904 "$define")
13905         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13906         case "$d_localtime_r_proto:$usethreads" in
13907         ":define")      d_localtime_r_proto=define
13908                 set d_localtime_r_proto localtime_r $hdrs
13909                 eval $hasproto ;;
13910         *)      ;;
13911         esac
13912         case "$d_localtime_r_proto" in
13913         define)
13914         case "$localtime_r_proto" in
13915         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13916         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13917         esac
13918         case "$localtime_r_proto" in
13919         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13920         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13921         esac
13922         case "$localtime_r_proto" in
13923         ''|0)   d_localtime_r=undef
13924                 localtime_r_proto=0
13925                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13926         * )     case "$localtime_r_proto" in
13927                 REENTRANT_PROTO*) ;;
13928                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13929                 esac
13930                 echo "Prototype: $try" ;;
13931         esac
13932         ;;
13933         *)      case "$usethreads" in
13934                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13935                 esac
13936                 d_localtime_r=undef
13937                 localtime_r_proto=0
13938                 ;;
13939         esac
13940         ;;
13941 *)      localtime_r_proto=0
13942         ;;
13943 esac
13944
13945 : see if localeconv exists
13946 set localeconv d_locconv
13947 eval $inlibc
13948
13949 : see if lockf exists
13950 set lockf d_lockf
13951 eval $inlibc
13952
13953 : see if prototype for lseek is available
13954 echo " "
13955 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13956 eval $hasproto
13957
13958 : see if lstat exists
13959 set lstat d_lstat
13960 eval $inlibc
13961
13962 : see if madvise exists
13963 set madvise d_madvise
13964 eval $inlibc
13965
13966 : see if mblen exists
13967 set mblen d_mblen
13968 eval $inlibc
13969
13970 : see if mbstowcs exists
13971 set mbstowcs d_mbstowcs
13972 eval $inlibc
13973
13974 : see if mbtowc exists
13975 set mbtowc d_mbtowc
13976 eval $inlibc
13977
13978 : see if memchr exists
13979 set memchr d_memchr
13980 eval $inlibc
13981
13982 : see if memcmp exists
13983 set memcmp d_memcmp
13984 eval $inlibc
13985
13986 : see if memcpy exists
13987 set memcpy d_memcpy
13988 eval $inlibc
13989
13990 : see if memmove exists
13991 set memmove d_memmove
13992 eval $inlibc
13993
13994 : see if memset exists
13995 set memset d_memset
13996 eval $inlibc
13997
13998 : see if mkdir exists
13999 set mkdir d_mkdir
14000 eval $inlibc
14001
14002 : see if mkdtemp exists
14003 set mkdtemp d_mkdtemp
14004 eval $inlibc
14005
14006 : see if mkfifo exists
14007 set mkfifo d_mkfifo
14008 eval $inlibc
14009
14010 : see if mkstemp exists
14011 set mkstemp d_mkstemp
14012 eval $inlibc
14013
14014 : see if mkstemps exists
14015 set mkstemps d_mkstemps
14016 eval $inlibc
14017
14018 : see if mktime exists
14019 set mktime d_mktime
14020 eval $inlibc
14021
14022 : see if this is a sys/mman.h system
14023 set sys/mman.h i_sysmman
14024 eval $inhdr
14025
14026 : see if mmap exists
14027 set mmap d_mmap
14028 eval $inlibc
14029 : see what shmat returns
14030 : default to something harmless
14031 mmaptype='void *'
14032 case "$i_sysmman$d_mmap" in
14033 "$define$define")
14034         $cat >mmap.c <<'END'
14035 #include <sys/mman.h>
14036 void *mmap();
14037 END
14038         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14039                 mmaptype='void *'
14040         else
14041                 mmaptype='caddr_t'
14042         fi
14043         echo "and it returns ($mmaptype)." >&4
14044         ;;
14045 esac
14046
14047
14048
14049 : see if sqrtl exists
14050 set sqrtl d_sqrtl
14051 eval $inlibc
14052
14053 : see if scalbnl exists
14054 set scalbnl d_scalbnl
14055 eval $inlibc
14056
14057 : see if modfl exists
14058 set modfl d_modfl
14059 eval $inlibc
14060
14061 : see if prototype for modfl is available
14062 echo " "
14063 set d_modflproto modfl math.h
14064 eval $hasproto
14065
14066 d_modfl_pow32_bug="$undef"
14067
14068 case "$d_longdbl$d_modfl" in
14069 $define$define)
14070         $cat <<EOM
14071 Checking to see whether your modfl() is okay for large values...
14072 EOM
14073 $cat >try.c <<EOCP
14074 #include <math.h> 
14075 #include <stdio.h>
14076 EOCP
14077 if $test "X$d_modflproto" != "X$define"; then
14078         $cat >>try.c <<EOCP
14079 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14080 long double modfl (long double, long double *);
14081 EOCP
14082 fi
14083 $cat >>try.c <<EOCP
14084 int main() {
14085     long double nv = 4294967303.15;
14086     long double v, w;
14087     v = modfl(nv, &w);         
14088 #ifdef __GLIBC__
14089     printf("glibc");
14090 #endif
14091     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14092     return 0;
14093 }
14094 EOCP
14095         case "$osname:$gccversion" in
14096         aix:)   saveccflags="$ccflags"
14097                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14098         esac
14099         set try
14100         if eval $compile; then
14101                 foo=`$run ./try`
14102                 case "$foo" in
14103                 *" 4294967303.150000 1.150000 4294967302.000000")
14104                         echo >&4 "Your modfl() is broken for large values."
14105                         d_modfl_pow32_bug="$define"
14106                         case "$foo" in
14107                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14108                         ;;
14109                         esac
14110                         ;;
14111                 *" 4294967303.150000 0.150000 4294967303.000000")
14112                         echo >&4 "Your modfl() seems okay for large values."
14113                         ;;
14114                 *)      echo >&4 "I don't understand your modfl() at all."
14115                         d_modfl="$undef"
14116                         ;;
14117                 esac
14118                 $rm -f try.* try core core.try.*
14119         else
14120                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14121                 d_modfl="$undef"
14122         fi
14123         case "$osname:$gccversion" in
14124         aix:)   ccflags="$saveccflags" ;; # restore
14125         esac
14126         ;;
14127 esac
14128
14129 if $test "$uselongdouble" = "$define"; then
14130     message=""
14131     if $test "$d_sqrtl" != "$define"; then
14132         message="$message sqrtl"
14133     fi
14134     if $test "$d_modfl" != "$define"; then
14135         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14136             echo "You have both aintl and copysignl, so I can emulate modfl."
14137         else
14138             message="$message modfl"
14139         fi
14140     fi
14141     if $test "$d_frexpl" != "$define"; then
14142         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14143             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14144         else
14145             message="$message frexpl"
14146         fi
14147     fi
14148
14149     if $test "$message" != ""; then
14150         $cat <<EOM >&4
14151
14152 *** You requested the use of long doubles but you do not seem to have
14153 *** the following mathematical functions needed for long double support:
14154 ***    $message
14155 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14156 *** Cannot continue, aborting.
14157
14158 EOM
14159
14160         exit 1
14161     fi
14162 fi
14163
14164 : see if mprotect exists
14165 set mprotect d_mprotect
14166 eval $inlibc
14167
14168 : see if msgctl exists
14169 set msgctl d_msgctl
14170 eval $inlibc
14171
14172 : see if msgget exists
14173 set msgget d_msgget
14174 eval $inlibc
14175
14176 : see if msgsnd exists
14177 set msgsnd d_msgsnd
14178 eval $inlibc
14179
14180 : see if msgrcv exists
14181 set msgrcv d_msgrcv
14182 eval $inlibc
14183
14184 : see how much of the 'msg*(2)' library is present.
14185 h_msg=true
14186 echo " "
14187 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14188 *"$undef"*) h_msg=false;;
14189 esac
14190 case "$osname" in
14191 freebsd)
14192     case "`ipcs 2>&1`" in
14193     "SVID messages"*"not configured"*)
14194         echo "Your $osname does not have the msg*(2) configured." >&4
14195         h_msg=false
14196         val="$undef"
14197         set msgctl d_msgctl
14198         eval $setvar
14199         set msgget d_msgget
14200         eval $setvar
14201         set msgsnd d_msgsnd
14202         eval $setvar
14203         set msgrcv d_msgrcv
14204         eval $setvar
14205         ;;
14206     esac
14207     ;;
14208 esac
14209 : we could also check for sys/ipc.h ...
14210 if $h_msg && $test `./findhdr sys/msg.h`; then
14211         echo "You have the full msg*(2) library." >&4
14212         val="$define"
14213 else
14214         echo "You don't have the full msg*(2) library." >&4
14215         val="$undef"
14216 fi
14217 set d_msg
14218 eval $setvar
14219
14220
14221 echo " "
14222 echo "Checking to see if your system supports struct msghdr..." >&4
14223 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14224 eval $hasstruct
14225 case "$d_msghdr_s" in
14226 "$define")      echo "Yes, it does."   ;;
14227 *)              echo "No, it doesn't." ;;
14228 esac
14229
14230
14231 : see if msync exists
14232 set msync d_msync
14233 eval $inlibc
14234
14235 : see if munmap exists
14236 set munmap d_munmap
14237 eval $inlibc
14238
14239 : see if nice exists
14240 set nice d_nice
14241 eval $inlibc
14242
14243 : see if this is a langinfo.h system
14244 set langinfo.h i_langinfo
14245 eval $inhdr
14246
14247 : see if nl_langinfo exists
14248 set nl_langinfo d_nl_langinfo
14249 eval $inlibc
14250
14251 : check for length of character
14252 echo " "
14253 case "$charsize" in
14254 '')
14255         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14256         $cat >try.c <<EOCP
14257 #include <stdio.h>
14258 #$i_stdlib I_STDLIB
14259 #ifdef I_STDLIB
14260 #include <stdlib.h>
14261 #endif
14262 int main()
14263 {
14264     printf("%d\n", (int)sizeof(char));
14265     exit(0);
14266 }
14267 EOCP
14268         set try
14269         if eval $compile_ok; then
14270                 dflt=`$run ./try`
14271         else
14272                 dflt='1'
14273                 echo "(I can't seem to compile the test program.  Guessing...)"
14274         fi
14275         ;;
14276 *)
14277         dflt="$charsize"
14278         ;;
14279 esac
14280 rp="What is the size of a character (in bytes)?"
14281 . ./myread
14282 charsize="$ans"
14283 $rm -f try.c try
14284
14285 : check for volatile keyword
14286 echo " "
14287 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14288 $cat >try.c <<'EOCP'
14289 int main()
14290 {
14291         typedef struct _goo_struct goo_struct;
14292         goo_struct * volatile goo = ((goo_struct *)0);
14293         struct _goo_struct {
14294                 long long_int;
14295                 int reg_int;
14296                 char char_var;
14297         };
14298         typedef unsigned short foo_t;
14299         char *volatile foo;
14300         volatile int bar;
14301         volatile foo_t blech;
14302         foo = foo;
14303 }
14304 EOCP
14305 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14306         val="$define"
14307         echo "Yup, it does."
14308 else
14309         val="$undef"
14310         echo "Nope, it doesn't."
14311 fi
14312 set d_volatile
14313 eval $setvar
14314 $rm -f try.*
14315
14316
14317 echo " "
14318 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14319
14320 case "$use64bitint:$d_quad:$quadtype" in
14321 define:define:?*)
14322         ivtype="$quadtype"
14323         uvtype="$uquadtype"
14324         ivsize=8
14325         uvsize=8
14326         ;;
14327 *)      ivtype="long"
14328         uvtype="unsigned long"
14329         ivsize=$longsize
14330         uvsize=$longsize
14331         ;;
14332 esac
14333
14334 case "$uselongdouble:$d_longdbl" in
14335 define:define)
14336         nvtype="long double"
14337         nvsize=$longdblsize
14338         ;;
14339 *)      nvtype=double
14340         nvsize=$doublesize
14341         ;;
14342 esac
14343
14344 $echo "(IV will be "$ivtype", $ivsize bytes)"
14345 $echo "(UV will be "$uvtype", $uvsize bytes)"
14346 $echo "(NV will be "$nvtype", $nvsize bytes)"
14347
14348 $cat >try.c <<EOCP
14349 #$i_inttypes I_INTTYPES
14350 #ifdef I_INTTYPES
14351 #include <inttypes.h>
14352 #endif
14353 #include <stdio.h>
14354 int main() {
14355 #ifdef INT8
14356    int8_t i =  INT8_MAX;
14357   uint8_t u = UINT8_MAX;
14358   printf("int8_t\n");
14359 #endif
14360 #ifdef INT16
14361    int16_t i =  INT16_MAX;
14362   uint16_t i = UINT16_MAX;
14363   printf("int16_t\n");
14364 #endif
14365 #ifdef INT32
14366    int32_t i =  INT32_MAX;
14367   uint32_t u = UINT32_MAX;
14368   printf("int32_t\n");
14369 #endif
14370 }
14371 EOCP
14372
14373 case "$i8type" in
14374 '')     case "$charsize" in
14375         1)      i8type=char
14376                 u8type="unsigned char"
14377                 i8size=$charsize
14378                 u8size=$charsize
14379                 ;;
14380         esac
14381         ;;
14382 esac
14383 case "$i8type" in
14384 '')     set try -DINT8
14385         if eval $compile; then
14386                 case "`$run ./try`" in
14387                 int8_t) i8type=int8_t
14388                         u8type=uint8_t
14389                         i8size=1
14390                         u8size=1
14391                         ;;
14392                 esac
14393         fi
14394         ;;
14395 esac
14396 case "$i8type" in
14397 '')     if $test $charsize -ge 1; then
14398                 i8type=char
14399                 u8type="unsigned char"
14400                 i8size=$charsize
14401                 u8size=$charsize
14402         fi
14403         ;;
14404 esac
14405
14406 case "$i16type" in
14407 '')     case "$shortsize" in
14408         2)      i16type=short
14409                 u16type="unsigned short"
14410                 i16size=$shortsize
14411                 u16size=$shortsize
14412                 ;;
14413         esac
14414         ;;
14415 esac
14416 case "$i16type" in
14417 '')     set try -DINT16
14418         if eval $compile; then
14419                 case "`$run ./try`" in
14420                 int16_t)
14421                         i16type=int16_t
14422                         u16type=uint16_t
14423                         i16size=2
14424                         u16size=2
14425                         ;;
14426                 esac
14427         fi
14428         ;;
14429 esac
14430 case "$i16type" in
14431 '')     if $test $shortsize -ge 2; then
14432                 i16type=short
14433                 u16type="unsigned short"
14434                 i16size=$shortsize
14435                 u16size=$shortsize
14436         fi
14437         ;;
14438 esac
14439
14440 case "$i32type" in
14441 '')     case "$longsize" in
14442         4)      i32type=long
14443                 u32type="unsigned long"
14444                 i32size=$longsize
14445                 u32size=$longsize
14446                 ;;
14447         *)      case "$intsize" in
14448                 4)      i32type=int
14449                         u32type="unsigned int"
14450                         i32size=$intsize
14451                         u32size=$intsize
14452                         ;;
14453                 esac
14454                 ;;
14455         esac
14456         ;;
14457 esac
14458 case "$i32type" in
14459 '')     set try -DINT32
14460         if eval $compile; then
14461                 case "`$run ./try`" in
14462                 int32_t)
14463                         i32type=int32_t
14464                         u32type=uint32_t
14465                         i32size=4
14466                         u32size=4
14467                         ;;
14468                 esac
14469         fi
14470         ;;
14471 esac
14472 case "$i32type" in
14473 '')     if $test $intsize -ge 4; then
14474                 i32type=int
14475                 u32type="unsigned int"
14476                 i32size=$intsize
14477                 u32size=$intsize
14478         fi
14479         ;;
14480 esac
14481
14482 case "$i64type" in
14483 '')     case "$d_quad:$quadtype" in
14484         define:?*)
14485                 i64type="$quadtype"
14486                 u64type="$uquadtype"
14487                 i64size=8
14488                 u64size=8
14489                 ;;
14490         esac
14491         ;;
14492 esac
14493
14494 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14495 : volatile so that the compiler has to store it out to memory.
14496 if test X"$d_volatile" = X"$define"; then
14497         volatile=volatile
14498 fi
14499 $cat <<EOP >try.c
14500 #include <stdio.h>
14501 #$i_stdlib I_STDLIB
14502 #ifdef I_STDLIB
14503 #include <stdlib.h>
14504 #endif
14505 #include <sys/types.h>
14506 #include <signal.h>
14507 #ifdef SIGFPE
14508 $volatile int bletched = 0;
14509 $signal_t blech(s) int s; { bletched = 1; }
14510 #endif
14511 int main() {
14512     $uvtype u = 0;
14513     $nvtype d;
14514     int     n = 8 * $uvsize;
14515     int     i;
14516 #ifdef SIGFPE
14517     signal(SIGFPE, blech);
14518 #endif
14519
14520     for (i = 0; i < n; i++) {
14521       u = u << 1 | ($uvtype)1;
14522       d = ($nvtype)u;
14523       if (($uvtype)d != u)
14524         break;
14525       if (d <= 0)
14526         break;
14527       d = ($nvtype)(u - 1);
14528       if (($uvtype)d != (u - 1))
14529         break;
14530 #ifdef SIGFPE
14531       if (bletched) {
14532         break;
14533 #endif
14534       } 
14535     }
14536     printf("%d\n", ((i == n) ? -n : i));
14537     exit(0);
14538 }
14539 EOP
14540 set try
14541
14542 d_nv_preserves_uv="$undef"
14543 if eval $compile; then
14544         nv_preserves_uv_bits="`$run ./try`"
14545 fi
14546 case "$nv_preserves_uv_bits" in
14547 \-[1-9]*)       
14548         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14549         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14550         d_nv_preserves_uv="$define"
14551         ;;
14552 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14553         d_nv_preserves_uv="$undef" ;;
14554 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14555         nv_preserves_uv_bits="$undef" ;;
14556 esac
14557
14558 $rm -f try.* try
14559
14560
14561 : check for off64_t
14562 echo " "
14563 echo "Checking to see if you have off64_t..." >&4
14564 $cat >try.c <<EOCP
14565 #include <sys/types.h>
14566 #include <unistd.h>
14567 int main() { off64_t x = 7; }
14568 EOCP
14569 set try
14570 if eval $compile; then
14571         val="$define"
14572         echo "You have off64_t."
14573 else
14574         val="$undef"
14575         echo "You do not have off64_t."
14576         case "$lseeksize" in
14577         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14578         esac
14579 fi
14580 $rm -f try.* try
14581 set d_off64_t
14582 eval $setvar
14583
14584 : how to create joinable pthreads
14585 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14586         echo " "
14587         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14588         $cat >try.c <<'EOCP'
14589 #include <pthread.h>
14590 int main() {
14591     int detachstate = JOINABLE;
14592 }
14593 EOCP
14594         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14595         if eval $compile; then
14596                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14597                 val="$undef" # Yes, undef.
14598                 set d_old_pthread_create_joinable
14599                 eval $setvar
14600                 val=""
14601                 set old_pthread_create_joinable
14602                 eval $setvar
14603         else
14604                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14605                 if eval $compile; then
14606                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14607                         val="$define"
14608                         set d_old_pthread_create_joinable
14609                         eval $setvar
14610                         val=PTHREAD_CREATE_UNDETACHED
14611                         set old_pthread_create_joinable
14612                         eval $setvar
14613                 else            
14614                         set try -DJOINABLE=__UNDETACHED
14615                         if eval $compile; then
14616                                 echo "You seem to use __UNDETACHED." >&4
14617                                 val="$define"
14618                                 set d_old_pthread_create_joinable
14619                                 eval $setvar
14620                                 val=__UNDETACHED
14621                                 set old_pthread_create_joinable
14622                                 eval $setvar
14623                         else
14624                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14625                                 val="$define"
14626                                 set d_old_pthread_create_joinable
14627                                 eval $setvar
14628                                 val=0
14629                                 set old_pthread_create_joinable
14630                                 eval $setvar
14631                         fi
14632                 fi
14633         fi
14634         $rm -f try try.*
14635 else
14636     d_old_pthread_create_joinable="$undef"
14637     old_pthread_create_joinable=""
14638 fi
14639
14640 : see if pause exists
14641 set pause d_pause
14642 eval $inlibc
14643
14644 : see if pipe exists
14645 set pipe d_pipe
14646 eval $inlibc
14647
14648 : see if poll exists
14649 set poll d_poll
14650 eval $inlibc
14651
14652 : see if readlink exists
14653 set readlink d_readlink
14654 eval $inlibc
14655
14656 echo " "
14657 procselfexe=''
14658 val="$undef"
14659 case "$d_readlink" in
14660 "$define")
14661         if $issymlink /proc/self/exe ; then
14662                 $ls -l /proc/self/exe > reflect
14663                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14664                         echo "You have Linux-like /proc/self/exe."
14665                         procselfexe='"/proc/self/exe"'
14666                         val="$define"
14667                 fi
14668         fi
14669         if $issymlink /proc/curproc/file ; then
14670                 $ls -l /proc/curproc/file > reflect
14671                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14672                         echo "You have BSD-like /proc/curproc/file."
14673                         procselfexe='"/proc/curproc/file"'
14674                         val="$define"
14675                 fi
14676         fi
14677         ;;
14678 esac
14679 $rm -f reflect
14680 set d_procselfexe
14681 eval $setvar
14682
14683 : see whether the pthread_atfork exists
14684 $cat >try.c <<EOP
14685 #include <pthread.h>
14686 #include <stdio.h>
14687 int main() {
14688 #ifdef  PTHREAD_ATFORK
14689         pthread_atfork(NULL,NULL,NULL);
14690 #endif
14691 }
14692 EOP
14693
14694 : see if pthread_atfork exists
14695 set try -DPTHREAD_ATFORK
14696 if eval $compile; then
14697     val="$define"
14698 else
14699     val="$undef"
14700 fi
14701 case "$usethreads" in
14702 $define)
14703         case "$val" in
14704         $define) echo 'pthread_atfork found.' >&4        ;;
14705         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14706         esac
14707 esac
14708 set d_pthread_atfork
14709 eval $setvar
14710
14711 : see if pthread_attr_setscope exists
14712 set pthread_attr_setscope d_pthread_attr_setscope
14713 eval $inlibc
14714
14715
14716 : see whether the various POSIXish _yields exist
14717 $cat >try.c <<EOP
14718 #include <pthread.h>
14719 #include <stdio.h>
14720 int main() {
14721 #ifdef SCHED_YIELD
14722         sched_yield();
14723 #else
14724 #ifdef PTHREAD_YIELD
14725         pthread_yield();
14726 #else
14727 #ifdef PTHREAD_YIELD_NULL
14728         pthread_yield(NULL);
14729 #endif
14730 #endif
14731 #endif
14732 }
14733 EOP
14734 : see if sched_yield exists
14735 set try -DSCHED_YIELD
14736 if eval $compile; then
14737     val="$define"
14738     sched_yield='sched_yield()'
14739 else
14740     val="$undef"
14741 fi
14742 case "$usethreads" in
14743 $define)
14744         case "$val" in
14745         $define) echo 'sched_yield() found.' >&4        ;;
14746         *)       echo 'sched_yield() NOT found.' >&4    ;;
14747         esac
14748 esac
14749 set d_sched_yield
14750 eval $setvar
14751
14752 : see if pthread_yield exists
14753 set try -DPTHREAD_YIELD
14754 if eval $compile; then
14755     val="$define"
14756     case "$sched_yield" in
14757     '') sched_yield='pthread_yield()' ;;
14758     esac
14759 else
14760     set try -DPTHREAD_YIELD_NULL
14761     if eval $compile; then
14762         val="$define"
14763         case "$sched_yield" in
14764         '') sched_yield='pthread_yield(NULL)' ;;
14765         esac
14766     else
14767         val="$undef"
14768     fi
14769 fi
14770 case "$usethreads" in
14771 $define)
14772         case "$val" in
14773         $define) echo 'pthread_yield() found.' >&4      ;;
14774         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14775         esac
14776         ;;
14777 esac
14778 set d_pthread_yield
14779 eval $setvar
14780
14781 case "$sched_yield" in
14782 '') sched_yield=undef ;;
14783 esac
14784
14785 $rm -f try try.*
14786
14787 : see if random_r exists
14788 set random_r d_random_r
14789 eval $inlibc
14790 case "$d_random_r" in
14791 "$define")
14792         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14793         case "$d_random_r_proto:$usethreads" in
14794         ":define")      d_random_r_proto=define
14795                 set d_random_r_proto random_r $hdrs
14796                 eval $hasproto ;;
14797         *)      ;;
14798         esac
14799         case "$d_random_r_proto" in
14800         define)
14801         case "$random_r_proto" in
14802         ''|0) try='int random_r(int*, struct random_data*);'
14803         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14804         esac
14805         case "$random_r_proto" in
14806         ''|0) try='int random_r(long*, struct random_data*);'
14807         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14808         esac
14809         case "$random_r_proto" in
14810         ''|0) try='int random_r(struct random_data*, int32_t*);'
14811         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14812         esac
14813         case "$random_r_proto" in
14814         ''|0)   d_random_r=undef
14815                 random_r_proto=0
14816                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14817         * )     case "$random_r_proto" in
14818                 REENTRANT_PROTO*) ;;
14819                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14820                 esac
14821                 echo "Prototype: $try" ;;
14822         esac
14823         ;;
14824         *)      case "$usethreads" in
14825                 define) echo "random_r has no prototype, not using it." >&4 ;;
14826                 esac
14827                 d_random_r=undef
14828                 random_r_proto=0
14829                 ;;
14830         esac
14831         ;;
14832 *)      random_r_proto=0
14833         ;;
14834 esac
14835
14836 : see if readdir and friends exist
14837 set readdir d_readdir
14838 eval $inlibc
14839 set seekdir d_seekdir
14840 eval $inlibc
14841 set telldir d_telldir
14842 eval $inlibc
14843 set rewinddir d_rewinddir
14844 eval $inlibc
14845
14846 : see if readdir64_r exists
14847 set readdir64_r d_readdir64_r
14848 eval $inlibc
14849 case "$d_readdir64_r" in
14850 "$define")
14851         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14852         case "$d_readdir64_r_proto:$usethreads" in
14853         ":define")      d_readdir64_r_proto=define
14854                 set d_readdir64_r_proto readdir64_r $hdrs
14855                 eval $hasproto ;;
14856         *)      ;;
14857         esac
14858         case "$d_readdir64_r_proto" in
14859         define)
14860         case "$readdir64_r_proto" in
14861         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14862         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14863         esac
14864         case "$readdir64_r_proto" in
14865         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14866         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14867         esac
14868         case "$readdir64_r_proto" in
14869         ''|0)   d_readdir64_r=undef
14870                 readdir64_r_proto=0
14871                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14872         * )     case "$readdir64_r_proto" in
14873                 REENTRANT_PROTO*) ;;
14874                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14875                 esac
14876                 echo "Prototype: $try" ;;
14877         esac
14878         ;;
14879         *)      case "$usethreads" in
14880                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14881                 esac
14882                 d_readdir64_r=undef
14883                 readdir64_r_proto=0
14884                 ;;
14885         esac
14886         ;;
14887 *)      readdir64_r_proto=0
14888         ;;
14889 esac
14890
14891 : see if readdir_r exists
14892 set readdir_r d_readdir_r
14893 eval $inlibc
14894 case "$d_readdir_r" in
14895 "$define")
14896         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14897         case "$d_readdir_r_proto:$usethreads" in
14898         ":define")      d_readdir_r_proto=define
14899                 set d_readdir_r_proto readdir_r $hdrs
14900                 eval $hasproto ;;
14901         *)      ;;
14902         esac
14903         case "$d_readdir_r_proto" in
14904         define)
14905         case "$readdir_r_proto" in
14906         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14907         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14908         esac
14909         case "$readdir_r_proto" in
14910         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14911         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14912         esac
14913         case "$readdir_r_proto" in
14914         ''|0)   d_readdir_r=undef
14915                 readdir_r_proto=0
14916                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14917         * )     case "$readdir_r_proto" in
14918                 REENTRANT_PROTO*) ;;
14919                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14920                 esac
14921                 echo "Prototype: $try" ;;
14922         esac
14923         ;;
14924         *)      case "$usethreads" in
14925                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14926                 esac
14927                 d_readdir_r=undef
14928                 readdir_r_proto=0
14929                 ;;
14930         esac
14931         ;;
14932 *)      readdir_r_proto=0
14933         ;;
14934 esac
14935
14936 : see if readv exists
14937 set readv d_readv
14938 eval $inlibc
14939
14940 : see if recvmsg exists
14941 set recvmsg d_recvmsg
14942 eval $inlibc
14943
14944 : see if rename exists
14945 set rename d_rename
14946 eval $inlibc
14947
14948 : see if rmdir exists
14949 set rmdir d_rmdir
14950 eval $inlibc
14951
14952 : see if memory.h is available.
14953 val=''
14954 set memory.h val
14955 eval $inhdr
14956
14957 : See if it conflicts with string.h
14958 case "$val" in
14959 $define)
14960         case "$strings" in
14961         '') ;;
14962         *)
14963                 $cppstdin $cppflags $cppminus < $strings > mem.h
14964                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14965                         echo " "
14966                         echo "We won't be including <memory.h>."
14967                         val="$undef"
14968                 fi
14969                 $rm -f mem.h
14970                 ;;
14971         esac
14972 esac
14973 set i_memory
14974 eval $setvar
14975
14976 : can bcopy handle overlapping blocks?
14977 echo " "
14978 val="$undef"
14979 case "$d_memmove" in
14980 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14981 *)      case "$d_bcopy" in
14982         "$define")
14983                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14984                 $cat >try.c <<EOCP
14985 #$i_memory I_MEMORY
14986 #$i_stdlib I_STDLIB
14987 #$i_string I_STRING
14988 #$i_unistd I_UNISTD
14989 EOCP
14990         $cat >>try.c <<'EOCP'
14991 #include <stdio.h>
14992 #ifdef I_MEMORY
14993 #  include <memory.h>
14994 #endif
14995 #ifdef I_STDLIB
14996 #  include <stdlib.h>
14997 #endif
14998 #ifdef I_STRING
14999 #  include <string.h>
15000 #else
15001 #  include <strings.h>
15002 #endif
15003 #ifdef I_UNISTD
15004 #  include <unistd.h>  /* Needed for NetBSD */
15005 #endif
15006 int main()
15007 {
15008 char buf[128], abc[128];
15009 char *b;
15010 int len;
15011 int off;
15012 int align;
15013
15014 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15015    try to store the string in read-only memory. */
15016 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15017
15018 for (align = 7; align >= 0; align--) {
15019         for (len = 36; len; len--) {
15020                 b = buf+align;
15021                 bcopy(abc, b, len);
15022                 for (off = 1; off <= len; off++) {
15023                         bcopy(b, b+off, len);
15024                         bcopy(b+off, b, len);
15025                         if (bcmp(b, abc, len))
15026                                 exit(1);
15027                 }
15028         }
15029 }
15030 exit(0);
15031 }
15032 EOCP
15033                 set try
15034                 if eval $compile_ok; then
15035                         if ./try 2>/dev/null; then
15036                                 echo "Yes, it can."
15037                                 val="$define"
15038                         else
15039                                 echo "It can't, sorry."
15040                         fi
15041                 else
15042                         echo "(I can't compile the test program, so we'll assume not...)"
15043                 fi
15044                 ;;
15045         esac
15046         $rm -f try.* try core
15047         ;;
15048 esac
15049 set d_safebcpy
15050 eval $setvar
15051
15052 : can memcpy handle overlapping blocks?
15053 echo " "
15054 val="$undef"
15055 case "$d_memmove" in
15056 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15057 *)      case "$d_memcpy" in
15058         "$define")
15059                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15060                 $cat >try.c <<EOCP
15061 #$i_memory I_MEMORY
15062 #$i_stdlib I_STDLIB
15063 #$i_string I_STRING
15064 #$i_unistd I_UNISTD
15065 EOCP
15066         $cat >>try.c <<'EOCP'
15067 #include <stdio.h>
15068 #ifdef I_MEMORY
15069 #  include <memory.h>
15070 #endif
15071 #ifdef I_STDLIB
15072 #  include <stdlib.h>
15073 #endif
15074 #ifdef I_STRING
15075 #  include <string.h>
15076 #else
15077 #  include <strings.h>
15078 #endif
15079 #ifdef I_UNISTD
15080 #  include <unistd.h>  /* Needed for NetBSD */
15081 #endif
15082 int main()
15083 {
15084 char buf[128], abc[128];
15085 char *b;
15086 int len;
15087 int off;
15088 int align;
15089
15090 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15091    try to store the string in read-only memory. */
15092 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15093
15094 for (align = 7; align >= 0; align--) {
15095         for (len = 36; len; len--) {
15096                 b = buf+align;
15097                 memcpy(b, abc, len);
15098                 for (off = 1; off <= len; off++) {
15099                         memcpy(b+off, b, len);
15100                         memcpy(b, b+off, len);
15101                         if (memcmp(b, abc, len))
15102                                 exit(1);
15103                 }
15104         }
15105 }
15106 exit(0);
15107 }
15108 EOCP
15109                 set try
15110                 if eval $compile_ok; then
15111                         if ./try 2>/dev/null; then
15112                                 echo "Yes, it can."
15113                                 val="$define"
15114                         else
15115                                 echo "It can't, sorry."
15116                         fi
15117                 else
15118                         echo "(I can't compile the test program, so we'll assume not...)"
15119                 fi
15120                 ;;
15121         esac
15122         $rm -f try.* try core
15123         ;;
15124 esac
15125 set d_safemcpy
15126 eval $setvar
15127
15128 : can memcmp be trusted to compare relative magnitude?
15129 val="$undef"
15130 case "$d_memcmp" in
15131 "$define")
15132         echo " "
15133         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15134         $cat >try.c <<EOCP
15135 #$i_memory I_MEMORY
15136 #$i_stdlib I_STDLIB
15137 #$i_string I_STRING
15138 #$i_unistd I_UNISTD
15139 EOCP
15140         $cat >>try.c <<'EOCP'
15141 #include <stdio.h>
15142 #ifdef I_MEMORY
15143 #  include <memory.h>
15144 #endif
15145 #ifdef I_STDLIB
15146 #  include <stdlib.h>
15147 #endif
15148 #ifdef I_STRING
15149 #  include <string.h>
15150 #else
15151 #  include <strings.h>
15152 #endif
15153 #ifdef I_UNISTD
15154 #  include <unistd.h>  /* Needed for NetBSD */
15155 #endif
15156 int main()
15157 {
15158 char a = -1;
15159 char b = 0;
15160 if ((a < b) && memcmp(&a, &b, 1) < 0)
15161         exit(1);
15162 exit(0);
15163 }
15164 EOCP
15165         set try
15166         if eval $compile_ok; then
15167                 if $run ./try 2>/dev/null; then
15168                         echo "Yes, it can."
15169                         val="$define"
15170                 else
15171                         echo "No, it can't (it uses signed chars)."
15172                 fi
15173         else
15174                 echo "(I can't compile the test program, so we'll assume not...)"
15175         fi
15176         ;;
15177 esac
15178 $rm -f try.* try core
15179 set d_sanemcmp
15180 eval $setvar
15181
15182 : see if prototype for sbrk is available
15183 echo " "
15184 set d_sbrkproto sbrk $i_unistd unistd.h
15185 eval $hasproto
15186
15187 : see if select exists
15188 set select d_select
15189 eval $inlibc
15190
15191 : see if semctl exists
15192 set semctl d_semctl
15193 eval $inlibc
15194
15195 : see if semget exists
15196 set semget d_semget
15197 eval $inlibc
15198
15199 : see if semop exists
15200 set semop d_semop
15201 eval $inlibc
15202
15203 : see how much of the 'sem*(2)' library is present.
15204 h_sem=true
15205 echo " "
15206 case "$d_semctl$d_semget$d_semop" in
15207 *"$undef"*) h_sem=false;;
15208 esac
15209 case "$osname" in
15210 freebsd)
15211     case "`ipcs 2>&1`" in
15212     "SVID messages"*"not configured"*)
15213         echo "Your $osname does not have the sem*(2) configured." >&4
15214         h_sem=false
15215         val="$undef"
15216         set semctl d_semctl
15217         eval $setvar
15218         set semget d_semget
15219         eval $setvar
15220         set semop d_semop
15221         eval $setvar
15222         ;;
15223     esac
15224     ;;
15225 esac
15226 : we could also check for sys/ipc.h ...
15227 if $h_sem && $test `./findhdr sys/sem.h`; then
15228         echo "You have the full sem*(2) library." >&4
15229         val="$define"
15230 else
15231         echo "You don't have the full sem*(2) library." >&4
15232         val="$undef"
15233 fi
15234 set d_sem
15235 eval $setvar
15236
15237 : see whether sys/sem.h defines union semun
15238 echo " "
15239 $cat > try.c <<'END'
15240 #include <sys/types.h>
15241 #include <sys/ipc.h>
15242 #include <sys/sem.h>
15243 int main () { union semun semun; semun.buf = 0; }
15244 END
15245 set try
15246 if eval $compile; then
15247     echo "You have union semun in <sys/sem.h>." >&4
15248     val="$define"
15249 else
15250     echo "You do not have union semun in <sys/sem.h>." >&4
15251     val="$undef"
15252 fi
15253 $rm -f try try.c
15254 set d_union_semun
15255 eval $setvar
15256
15257 : see how to do semctl IPC_STAT
15258 case "$d_sem" in
15259 $define)
15260     echo " "
15261     $cat > try.h <<END
15262 #ifndef S_IRUSR
15263 #   ifdef S_IREAD
15264 #       define S_IRUSR S_IREAD
15265 #       define S_IWUSR S_IWRITE
15266 #       define S_IXUSR S_IEXEC
15267 #   else
15268 #       define S_IRUSR 0400
15269 #       define S_IWUSR 0200
15270 #       define S_IXUSR 0100
15271 #   endif
15272 #   define S_IRGRP (S_IRUSR>>3)
15273 #   define S_IWGRP (S_IWUSR>>3)
15274 #   define S_IXGRP (S_IXUSR>>3)
15275 #   define S_IROTH (S_IRUSR>>6)
15276 #   define S_IWOTH (S_IWUSR>>6)
15277 #   define S_IXOTH (S_IXUSR>>6)
15278 #endif
15279 #ifndef S_IRWXU
15280 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15281 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15282 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15283 #endif
15284 END
15285     : see whether semctl IPC_STAT can use union semun
15286     val="$undef"
15287     case "$d_semctl_semun" in
15288     '')
15289       $cat > try.c <<END
15290 #include <sys/types.h>
15291 #include <sys/ipc.h>
15292 #include <sys/sem.h>
15293 #include <sys/stat.h>
15294 #include <stdio.h>
15295 #include <errno.h>
15296 #include "try.h"
15297 #ifndef errno
15298 extern int errno;
15299 #endif
15300 #$d_union_semun HAS_UNION_SEMUN
15301 int main() {
15302     union semun
15303 #ifndef HAS_UNION_SEMUN
15304     {
15305         int val;
15306         struct semid_ds *buf;
15307         unsigned short *array;
15308     }
15309 #endif
15310     arg;
15311     int sem, st;
15312
15313 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15314     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15315     if (sem > -1) {
15316         struct semid_ds argbuf;
15317         arg.buf = &argbuf;
15318 #       ifdef IPC_STAT
15319         st = semctl(sem, 0, IPC_STAT, arg);
15320         if (st == 0)
15321             printf("semun\n");
15322         else
15323 #       endif /* IPC_STAT */
15324             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15325 #       ifdef IPC_RMID
15326         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15327 #       endif /* IPC_RMID */
15328             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15329     } else
15330 #endif /* IPC_PRIVATE && ... */
15331         printf("semget failed: errno = %d\n", errno);
15332   return 0;
15333 }
15334 END
15335       set try
15336       if eval $compile; then
15337           xxx=`$run ./try`
15338           case "$xxx" in
15339           semun) val="$define" ;;
15340           esac
15341       fi
15342       $rm -f try try.c
15343       ;;
15344     esac
15345     set d_semctl_semun
15346     eval $setvar
15347     case "$d_semctl_semun" in
15348     $define)
15349         echo "You can use union semun for semctl IPC_STAT." >&4
15350         also='also'
15351         ;;
15352     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15353         also=''
15354         ;;
15355     esac
15356
15357     : see whether semctl IPC_STAT can use struct semid_ds pointer
15358     val="$undef"
15359     case "$d_semctl_semid_ds" in
15360     '')
15361       $cat > try.c <<'END'
15362 #include <sys/types.h>
15363 #include <sys/ipc.h>
15364 #include <sys/sem.h>
15365 #include <sys/stat.h>
15366 #include "try.h"
15367 #include <stdio.h>
15368 #include <errno.h>
15369 #ifndef errno
15370 extern int errno;
15371 #endif
15372 int main() {
15373     struct semid_ds arg;
15374     int sem, st;
15375
15376 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15377     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15378     if (sem > -1) {
15379 #       ifdef IPC_STAT
15380         st = semctl(sem, 0, IPC_STAT, &arg);
15381         if (st == 0)
15382             printf("semid_ds\n");
15383         else
15384 #       endif /* IPC_STAT */
15385             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15386 #       ifdef IPC_RMID
15387         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15388 #       endif /* IPC_RMID */
15389             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15390     } else
15391 #endif /* IPC_PRIVATE && ... */
15392         printf("semget failed: errno = %d\n", errno);
15393
15394     return 0;
15395 }
15396 END
15397       set try
15398       if eval $compile; then
15399           xxx=`$run ./try`
15400           case "$xxx" in
15401           semid_ds) val="$define" ;;
15402           esac
15403       fi
15404       $rm -f try try.c
15405       ;;
15406     esac
15407     set d_semctl_semid_ds
15408     eval $setvar
15409     case "$d_semctl_semid_ds" in
15410     $define)
15411         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15412         ;;
15413     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15414         ;;
15415     esac
15416     $rm -f try.h
15417     ;;
15418 *)  val="$undef"
15419
15420     # We do not have the full sem*(2) library, so assume we can not
15421     # use either.
15422
15423     set d_semctl_semun
15424     eval $setvar
15425
15426     set d_semctl_semid_ds
15427     eval $setvar
15428     ;;
15429 esac
15430
15431 : see if sendmsg exists
15432 set sendmsg d_sendmsg
15433 eval $inlibc
15434
15435 : see if setegid exists
15436 set setegid d_setegid
15437 eval $inlibc
15438
15439 : see if seteuid exists
15440 set seteuid d_seteuid
15441 eval $inlibc
15442
15443 : see if setgrent exists
15444 set setgrent d_setgrent
15445 eval $inlibc
15446
15447 : see if setgrent_r exists
15448 set setgrent_r d_setgrent_r
15449 eval $inlibc
15450 case "$d_setgrent_r" in
15451 "$define")
15452         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15453         case "$d_setgrent_r_proto:$usethreads" in
15454         ":define")      d_setgrent_r_proto=define
15455                 set d_setgrent_r_proto setgrent_r $hdrs
15456                 eval $hasproto ;;
15457         *)      ;;
15458         esac
15459         case "$d_setgrent_r_proto" in
15460         define)
15461         case "$setgrent_r_proto" in
15462         ''|0) try='int setgrent_r(FILE**);'
15463         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15464         esac
15465         case "$setgrent_r_proto" in
15466         ''|0) try='void setgrent_r(FILE**);'
15467         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15468         esac
15469         case "$setgrent_r_proto" in
15470         ''|0)   d_setgrent_r=undef
15471                 setgrent_r_proto=0
15472                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15473         * )     case "$setgrent_r_proto" in
15474                 REENTRANT_PROTO*) ;;
15475                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15476                 esac
15477                 echo "Prototype: $try" ;;
15478         esac
15479         ;;
15480         *)      case "$usethreads" in
15481                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15482                 esac
15483                 d_setgrent_r=undef
15484                 setgrent_r_proto=0
15485                 ;;
15486         esac
15487         ;;
15488 *)      setgrent_r_proto=0
15489         ;;
15490 esac
15491
15492 : see if sethostent exists
15493 set sethostent d_sethent
15494 eval $inlibc
15495
15496 : see if sethostent_r exists
15497 set sethostent_r d_sethostent_r
15498 eval $inlibc
15499 case "$d_sethostent_r" in
15500 "$define")
15501         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15502         case "$d_sethostent_r_proto:$usethreads" in
15503         ":define")      d_sethostent_r_proto=define
15504                 set d_sethostent_r_proto sethostent_r $hdrs
15505                 eval $hasproto ;;
15506         *)      ;;
15507         esac
15508         case "$d_sethostent_r_proto" in
15509         define)
15510         case "$sethostent_r_proto" in
15511         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15512         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15513         esac
15514         case "$sethostent_r_proto" in
15515         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15516         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15517         esac
15518         case "$sethostent_r_proto" in
15519         ''|0)   d_sethostent_r=undef
15520                 sethostent_r_proto=0
15521                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15522         * )     case "$sethostent_r_proto" in
15523                 REENTRANT_PROTO*) ;;
15524                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15525                 esac
15526                 echo "Prototype: $try" ;;
15527         esac
15528         ;;
15529         *)      case "$usethreads" in
15530                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15531                 esac
15532                 d_sethostent_r=undef
15533                 sethostent_r_proto=0
15534                 ;;
15535         esac
15536         ;;
15537 *)      sethostent_r_proto=0
15538         ;;
15539 esac
15540
15541 : see if setitimer exists
15542 set setitimer d_setitimer
15543 eval $inlibc
15544
15545 : see if setlinebuf exists
15546 set setlinebuf d_setlinebuf
15547 eval $inlibc
15548
15549 : see if setlocale exists
15550 set setlocale d_setlocale
15551 eval $inlibc
15552
15553 : see if locale.h is available
15554 set locale.h i_locale
15555 eval $inhdr
15556
15557 : see if setlocale_r exists
15558 set setlocale_r d_setlocale_r
15559 eval $inlibc
15560 case "$d_setlocale_r" in
15561 "$define")
15562         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15563         case "$d_setlocale_r_proto:$usethreads" in
15564         ":define")      d_setlocale_r_proto=define
15565                 set d_setlocale_r_proto setlocale_r $hdrs
15566                 eval $hasproto ;;
15567         *)      ;;
15568         esac
15569         case "$d_setlocale_r_proto" in
15570         define)
15571         case "$setlocale_r_proto" in
15572         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15573         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15574         esac
15575         case "$setlocale_r_proto" in
15576         ''|0)   d_setlocale_r=undef
15577                 setlocale_r_proto=0
15578                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15579         * )     case "$setlocale_r_proto" in
15580                 REENTRANT_PROTO*) ;;
15581                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15582                 esac
15583                 echo "Prototype: $try" ;;
15584         esac
15585         ;;
15586         *)      case "$usethreads" in
15587                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15588                 esac
15589                 d_setlocale_r=undef
15590                 setlocale_r_proto=0
15591                 ;;
15592         esac
15593         ;;
15594 *)      setlocale_r_proto=0
15595         ;;
15596 esac
15597
15598 : see if setnetent exists
15599 set setnetent d_setnent
15600 eval $inlibc
15601
15602 : see if setnetent_r exists
15603 set setnetent_r d_setnetent_r
15604 eval $inlibc
15605 case "$d_setnetent_r" in
15606 "$define")
15607         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15608         case "$d_setnetent_r_proto:$usethreads" in
15609         ":define")      d_setnetent_r_proto=define
15610                 set d_setnetent_r_proto setnetent_r $hdrs
15611                 eval $hasproto ;;
15612         *)      ;;
15613         esac
15614         case "$d_setnetent_r_proto" in
15615         define)
15616         case "$setnetent_r_proto" in
15617         ''|0) try='int setnetent_r(int, struct netent_data*);'
15618         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15619         esac
15620         case "$setnetent_r_proto" in
15621         ''|0) try='void setnetent_r(int, struct netent_data*);'
15622         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15623         esac
15624         case "$setnetent_r_proto" in
15625         ''|0)   d_setnetent_r=undef
15626                 setnetent_r_proto=0
15627                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15628         * )     case "$setnetent_r_proto" in
15629                 REENTRANT_PROTO*) ;;
15630                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15631                 esac
15632                 echo "Prototype: $try" ;;
15633         esac
15634         ;;
15635         *)      case "$usethreads" in
15636                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15637                 esac
15638                 d_setnetent_r=undef
15639                 setnetent_r_proto=0
15640                 ;;
15641         esac
15642         ;;
15643 *)      setnetent_r_proto=0
15644         ;;
15645 esac
15646
15647 : see if setprotoent exists
15648 set setprotoent d_setpent
15649 eval $inlibc
15650
15651 : see if setpgid exists
15652 set setpgid d_setpgid
15653 eval $inlibc
15654
15655 : see if setpgrp2 exists
15656 set setpgrp2 d_setpgrp2
15657 eval $inlibc
15658
15659 : see if setpriority exists
15660 set setpriority d_setprior
15661 eval $inlibc
15662
15663 : see if setproctitle exists
15664 set setproctitle d_setproctitle
15665 eval $inlibc
15666
15667 : see if setprotoent_r exists
15668 set setprotoent_r d_setprotoent_r
15669 eval $inlibc
15670 case "$d_setprotoent_r" in
15671 "$define")
15672         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15673         case "$d_setprotoent_r_proto:$usethreads" in
15674         ":define")      d_setprotoent_r_proto=define
15675                 set d_setprotoent_r_proto setprotoent_r $hdrs
15676                 eval $hasproto ;;
15677         *)      ;;
15678         esac
15679         case "$d_setprotoent_r_proto" in
15680         define)
15681         case "$setprotoent_r_proto" in
15682         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15683         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15684         esac
15685         case "$setprotoent_r_proto" in
15686         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15687         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15688         esac
15689         case "$setprotoent_r_proto" in
15690         ''|0)   d_setprotoent_r=undef
15691                 setprotoent_r_proto=0
15692                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15693         * )     case "$setprotoent_r_proto" in
15694                 REENTRANT_PROTO*) ;;
15695                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15696                 esac
15697                 echo "Prototype: $try" ;;
15698         esac
15699         ;;
15700         *)      case "$usethreads" in
15701                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15702                 esac
15703                 d_setprotoent_r=undef
15704                 setprotoent_r_proto=0
15705                 ;;
15706         esac
15707         ;;
15708 *)      setprotoent_r_proto=0
15709         ;;
15710 esac
15711
15712 : see if setpwent exists
15713 set setpwent d_setpwent
15714 eval $inlibc
15715
15716 : see if setpwent_r exists
15717 set setpwent_r d_setpwent_r
15718 eval $inlibc
15719 case "$d_setpwent_r" in
15720 "$define")
15721         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15722         case "$d_setpwent_r_proto:$usethreads" in
15723         ":define")      d_setpwent_r_proto=define
15724                 set d_setpwent_r_proto setpwent_r $hdrs
15725                 eval $hasproto ;;
15726         *)      ;;
15727         esac
15728         case "$d_setpwent_r_proto" in
15729         define)
15730         case "$setpwent_r_proto" in
15731         ''|0) try='int setpwent_r(FILE**);'
15732         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15733         esac
15734         case "$setpwent_r_proto" in
15735         ''|0) try='void setpwent_r(FILE**);'
15736         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15737         esac
15738         case "$setpwent_r_proto" in
15739         ''|0)   d_setpwent_r=undef
15740                 setpwent_r_proto=0
15741                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15742         * )     case "$setpwent_r_proto" in
15743                 REENTRANT_PROTO*) ;;
15744                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15745                 esac
15746                 echo "Prototype: $try" ;;
15747         esac
15748         ;;
15749         *)      case "$usethreads" in
15750                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15751                 esac
15752                 d_setpwent_r=undef
15753                 setpwent_r_proto=0
15754                 ;;
15755         esac
15756         ;;
15757 *)      setpwent_r_proto=0
15758         ;;
15759 esac
15760
15761 : see if setregid exists
15762 set setregid d_setregid
15763 eval $inlibc
15764 set setresgid d_setresgid
15765 eval $inlibc
15766
15767 : see if setreuid exists
15768 set setreuid d_setreuid
15769 eval $inlibc
15770 set setresuid d_setresuid
15771 eval $inlibc
15772
15773 : see if setrgid exists
15774 set setrgid d_setrgid
15775 eval $inlibc
15776
15777 : see if setruid exists
15778 set setruid d_setruid
15779 eval $inlibc
15780
15781 : see if setservent exists
15782 set setservent d_setsent
15783 eval $inlibc
15784
15785 : see if setservent_r exists
15786 set setservent_r d_setservent_r
15787 eval $inlibc
15788 case "$d_setservent_r" in
15789 "$define")
15790         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15791         case "$d_setservent_r_proto:$usethreads" in
15792         ":define")      d_setservent_r_proto=define
15793                 set d_setservent_r_proto setservent_r $hdrs
15794                 eval $hasproto ;;
15795         *)      ;;
15796         esac
15797         case "$d_setservent_r_proto" in
15798         define)
15799         case "$setservent_r_proto" in
15800         ''|0) try='int setservent_r(int, struct servent_data*);'
15801         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15802         esac
15803         case "$setservent_r_proto" in
15804         ''|0) try='void setservent_r(int, struct servent_data*);'
15805         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15806         esac
15807         case "$setservent_r_proto" in
15808         ''|0)   d_setservent_r=undef
15809                 setservent_r_proto=0
15810                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15811         * )     case "$setservent_r_proto" in
15812                 REENTRANT_PROTO*) ;;
15813                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15814                 esac
15815                 echo "Prototype: $try" ;;
15816         esac
15817         ;;
15818         *)      case "$usethreads" in
15819                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15820                 esac
15821                 d_setservent_r=undef
15822                 setservent_r_proto=0
15823                 ;;
15824         esac
15825         ;;
15826 *)      setservent_r_proto=0
15827         ;;
15828 esac
15829
15830 : see if setsid exists
15831 set setsid d_setsid
15832 eval $inlibc
15833
15834 : see if setvbuf exists
15835 set setvbuf d_setvbuf
15836 eval $inlibc
15837
15838 : see if sfio.h is available
15839 set sfio.h i_sfio
15840 eval $inhdr
15841
15842
15843 : see if sfio library is available
15844 case "$i_sfio" in
15845 $define)
15846         val=''
15847         set sfreserve val
15848         eval $inlibc
15849         ;;
15850 *)
15851         val="$undef"
15852         ;;
15853 esac
15854 : Ok, but do we want to use it.
15855 case "$val" in
15856 $define)
15857         case "$usesfio" in
15858         true|$define|[yY]*) dflt='y';;
15859         *) dflt='n';;
15860         esac
15861         echo "$package can use the sfio library, but it is experimental."
15862         case "$useperlio" in
15863         "$undef")
15864             echo "For sfio also the PerlIO abstraction layer is needed."
15865             echo "Earlier you said you wouldn't want that."
15866             ;;
15867         esac
15868         rp="You seem to have sfio available, do you want to try using it?"
15869         . ./myread
15870         case "$ans" in
15871         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15872                 useperlio="$define"
15873                 val="$define"
15874                 ;;
15875         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15876                 val="$undef"
15877                 ;;
15878         esac
15879         ;;
15880 *)      case "$usesfio" in
15881         true|$define|[yY]*)
15882                 echo "Sorry, cannot find sfio on this machine." >&4
15883                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15884                 val="$undef"
15885                 ;;
15886         esac
15887         ;;
15888 esac
15889 set d_sfio
15890 eval $setvar
15891 case "$d_sfio" in
15892 $define) usesfio='true';;
15893 *) usesfio='false';;
15894 esac
15895 case "$d_sfio" in
15896 $define) ;;
15897 *)      : Remove sfio from list of libraries to use
15898         case "$libs" in
15899         *-lsfio*)
15900                 echo "Removing unneeded -lsfio from library list" >&4
15901                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15902                 shift
15903                 libs="$*"
15904                 echo "libs = $libs" >&4
15905                 ;;
15906         esac
15907 ;;
15908 esac
15909
15910
15911 : see if shmctl exists
15912 set shmctl d_shmctl
15913 eval $inlibc
15914
15915 : see if shmget exists
15916 set shmget d_shmget
15917 eval $inlibc
15918
15919 : see if shmat exists
15920 set shmat d_shmat
15921 eval $inlibc
15922 : see what shmat returns
15923 case "$d_shmat" in
15924 "$define")
15925         $cat >shmat.c <<'END'
15926 #include <sys/shm.h>
15927 void *shmat();
15928 END
15929         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15930                 shmattype='void *'
15931         else
15932                 shmattype='char *'
15933         fi
15934         echo "and it returns ($shmattype)." >&4
15935         : see if a prototype for shmat is available
15936         xxx=`./findhdr sys/shm.h`
15937         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15938         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15939                 val="$define"
15940         else
15941                 val="$undef"
15942         fi
15943         $rm -f shmat.[co]
15944         ;;
15945 *)
15946         val="$undef"
15947         ;;
15948 esac
15949 set d_shmatprototype
15950 eval $setvar
15951
15952 : see if shmdt exists
15953 set shmdt d_shmdt
15954 eval $inlibc
15955
15956 : see how much of the 'shm*(2)' library is present.
15957 h_shm=true
15958 echo " "
15959 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15960 *"$undef"*) h_shm=false;;
15961 esac
15962 case "$osname" in
15963 freebsd)
15964     case "`ipcs 2>&1`" in
15965     "SVID shared memory"*"not configured"*)
15966         echo "Your $osname does not have the shm*(2) configured." >&4
15967         h_shm=false
15968         val="$undef"
15969         set shmctl d_shmctl
15970         evat $setvar
15971         set shmget d_shmget
15972         evat $setvar
15973         set shmat d_shmat
15974         evat $setvar
15975         set shmdt d_shmdt
15976         evat $setvar
15977         ;;
15978     esac
15979     ;;
15980 esac
15981 : we could also check for sys/ipc.h ...
15982 if $h_shm && $test `./findhdr sys/shm.h`; then
15983         echo "You have the full shm*(2) library." >&4
15984         val="$define"
15985 else
15986         echo "You don't have the full shm*(2) library." >&4
15987         val="$undef"
15988 fi
15989 set d_shm
15990 eval $setvar
15991
15992 echo " "
15993 : see if we have sigaction
15994 if set sigaction val -f d_sigaction; eval $csym; $val; then
15995         echo 'sigaction() found.' >&4
15996         $cat > try.c <<EOP
15997 #include <stdio.h>
15998 #include <sys/types.h>
15999 #include <signal.h>
16000 #$i_stdlib I_STDLIB
16001 #ifdef I_STDLIB
16002 #include <stdlib.h>
16003 #endif
16004 int main()
16005 {
16006     struct sigaction act, oact;
16007     act.sa_flags = 0;
16008     oact.sa_handler = 0;
16009     /* so that act and oact are used */
16010     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16011 }
16012 EOP
16013         set try
16014         if eval $compile_ok; then
16015                 val="$define"
16016         else
16017                 echo "But you don't seem to have a useable struct sigaction." >&4
16018                 val="$undef"
16019         fi
16020 else
16021         echo 'sigaction NOT found.' >&4
16022         val="$undef"
16023 fi
16024 set d_sigaction; eval $setvar
16025 $rm -f try try$_o try.c
16026
16027 : see if sigprocmask exists
16028 set sigprocmask d_sigprocmask
16029 eval $inlibc
16030
16031 : see if sigsetjmp exists
16032 echo " "
16033 case "$d_sigsetjmp" in
16034 '')
16035         $cat >try.c <<EOP
16036 #include <setjmp.h>
16037 #$i_stdlib I_STDLIB
16038 #ifdef I_STDLIB
16039 #include <stdlib.h>
16040 #endif
16041 sigjmp_buf env;
16042 int set = 1;
16043 int main()
16044 {
16045         if (sigsetjmp(env,1))
16046                 exit(set);
16047         set = 0;
16048         siglongjmp(env, 1);
16049         exit(1);
16050 }
16051 EOP
16052         set try
16053         if eval $compile; then
16054                 if $run ./try >/dev/null 2>&1; then
16055                         echo "POSIX sigsetjmp found." >&4
16056                         val="$define"
16057                 else
16058                         $cat >&4 <<EOM
16059 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16060 I'll ignore them.
16061 EOM
16062                         val="$undef"
16063                 fi
16064         else
16065                 echo "sigsetjmp not found." >&4
16066                 val="$undef"
16067         fi
16068         ;;
16069 *) val="$d_sigsetjmp"
16070         case "$d_sigsetjmp" in
16071         $define) echo "POSIX sigsetjmp found." >&4;;
16072         $undef) echo "sigsetjmp not found." >&4;;
16073         esac
16074         ;;
16075 esac
16076 set d_sigsetjmp
16077 eval $setvar
16078 $rm -f try.c try
16079
16080 : see if sockatmark exists
16081 set sockatmark d_sockatmark
16082 eval $inlibc
16083
16084 : see if prototype for sockatmark is available
16085 echo " "
16086 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16087 eval $hasproto
16088
16089 : see if socks5_init exists
16090 set socks5_init d_socks5_init
16091 eval $inlibc
16092
16093 : see if srand48_r exists
16094 set srand48_r d_srand48_r
16095 eval $inlibc
16096 case "$d_srand48_r" in
16097 "$define")
16098         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16099         case "$d_srand48_r_proto:$usethreads" in
16100         ":define")      d_srand48_r_proto=define
16101                 set d_srand48_r_proto srand48_r $hdrs
16102                 eval $hasproto ;;
16103         *)      ;;
16104         esac
16105         case "$d_srand48_r_proto" in
16106         define)
16107         case "$srand48_r_proto" in
16108         ''|0) try='int srand48_r(long, struct drand48_data*);'
16109         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16110         esac
16111         case "$srand48_r_proto" in
16112         ''|0)   d_srand48_r=undef
16113                 srand48_r_proto=0
16114                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16115         * )     case "$srand48_r_proto" in
16116                 REENTRANT_PROTO*) ;;
16117                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16118                 esac
16119                 echo "Prototype: $try" ;;
16120         esac
16121         ;;
16122         *)      case "$usethreads" in
16123                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16124                 esac
16125                 d_srand48_r=undef
16126                 srand48_r_proto=0
16127                 ;;
16128         esac
16129         ;;
16130 *)      srand48_r_proto=0
16131         ;;
16132 esac
16133
16134 : see if srandom_r exists
16135 set srandom_r d_srandom_r
16136 eval $inlibc
16137 case "$d_srandom_r" in
16138 "$define")
16139         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16140         case "$d_srandom_r_proto:$usethreads" in
16141         ":define")      d_srandom_r_proto=define
16142                 set d_srandom_r_proto srandom_r $hdrs
16143                 eval $hasproto ;;
16144         *)      ;;
16145         esac
16146         case "$d_srandom_r_proto" in
16147         define)
16148         case "$srandom_r_proto" in
16149         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16150         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16151         esac
16152         case "$srandom_r_proto" in
16153         ''|0)   d_srandom_r=undef
16154                 srandom_r_proto=0
16155                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16156         * )     case "$srandom_r_proto" in
16157                 REENTRANT_PROTO*) ;;
16158                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16159                 esac
16160                 echo "Prototype: $try" ;;
16161         esac
16162         ;;
16163         *)      case "$usethreads" in
16164                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16165                 esac
16166                 d_srandom_r=undef
16167                 srandom_r_proto=0
16168                 ;;
16169         esac
16170         ;;
16171 *)      srandom_r_proto=0
16172         ;;
16173 esac
16174
16175 : see if prototype for setresgid is available
16176 echo " "
16177 set d_sresgproto setresgid $i_unistd unistd.h
16178 eval $hasproto
16179
16180 : see if prototype for setresuid is available
16181 echo " "
16182 set d_sresuproto setresuid $i_unistd unistd.h
16183 eval $hasproto
16184
16185 : see if sys/stat.h is available
16186 set sys/stat.h i_sysstat
16187 eval $inhdr
16188
16189
16190 : see if stat knows about block sizes
16191 echo " "
16192 echo "Checking to see if your struct stat has st_blocks field..." >&4
16193 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16194 eval $hasfield
16195
16196
16197 : see if this is a sys/vfs.h system
16198 set sys/vfs.h i_sysvfs
16199 eval $inhdr
16200
16201
16202 : see if this is a sys/statfs.h system
16203 set sys/statfs.h i_sysstatfs
16204 eval $inhdr
16205
16206
16207 echo " "
16208 echo "Checking to see if your system supports struct statfs..." >&4
16209 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
16210 eval $hasstruct
16211 case "$d_statfs_s" in
16212 "$define")      echo "Yes, it does."   ;;
16213 *)              echo "No, it doesn't." ;;
16214 esac
16215
16216
16217
16218 : see if struct statfs knows about f_flags
16219 case "$d_statfs_s" in
16220 define) 
16221         echo " "
16222         echo "Checking to see if your struct statfs has f_flags field..." >&4
16223         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
16224         eval $hasfield
16225         ;;
16226 *)      val="$undef"
16227         set d_statfs_f_flags
16228         eval $setvar
16229         ;;
16230 esac
16231 case "$d_statfs_f_flags" in
16232 "$define")      echo "Yes, it does."   ;;
16233 *)              echo "No, it doesn't." ;;
16234 esac
16235
16236 $cat >&4 <<EOM
16237 Checking how to access stdio streams by file descriptor number...
16238 EOM
16239 case "$stdio_stream_array" in
16240 '')     $cat >try.c <<EOCP
16241 #include <stdio.h>
16242 int main() {
16243   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16244     printf("yes\n");
16245 }
16246 EOCP
16247         for s in _iob __iob __sF
16248         do
16249                 set try -DSTDIO_STREAM_ARRAY=$s
16250                 if eval $compile; then
16251                         case "`$run ./try`" in
16252                         yes)    stdio_stream_array=$s; break ;;
16253                         esac
16254                 fi
16255         done
16256         $rm -f try.* try$exe_ext
16257 esac
16258 case "$stdio_stream_array" in
16259 '')     $cat >&4 <<EOM
16260 I can't figure out how to access stdio streams by file descriptor number.
16261 EOM
16262         d_stdio_stream_array="$undef"
16263         ;;
16264 *)      $cat >&4 <<EOM
16265 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16266 EOM
16267         d_stdio_stream_array="$define"
16268         ;;
16269 esac
16270
16271 : see if strcoll exists
16272 set strcoll d_strcoll
16273 eval $inlibc
16274
16275 : check for structure copying
16276 echo " "
16277 echo "Checking to see if your C compiler can copy structs..." >&4
16278 $cat >try.c <<'EOCP'
16279 int main()
16280 {
16281         struct blurfl {
16282                 int dyick;
16283         } foo, bar;
16284
16285         foo = bar;
16286 }
16287 EOCP
16288 if $cc -c try.c >/dev/null 2>&1 ; then
16289         val="$define"
16290         echo "Yup, it can."
16291 else
16292         val="$undef"
16293         echo "Nope, it can't."
16294 fi
16295 set d_strctcpy
16296 eval $setvar
16297 $rm -f try.*
16298
16299 : see if strerror and/or sys_errlist[] exist
16300 echo " "
16301 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16302     if set strerror val -f d_strerror; eval $csym; $val; then
16303                 echo 'strerror() found.' >&4
16304                 d_strerror="$define"
16305                 d_strerrm='strerror(e)'
16306                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16307                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16308                         d_syserrlst="$define"
16309                 else
16310                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16311                         d_syserrlst="$undef"
16312                 fi
16313     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16314                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16315                 echo 'strerror() found in string header.' >&4
16316                 d_strerror="$define"
16317                 d_strerrm='strerror(e)'
16318                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16319                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16320                                 d_syserrlst="$define"
16321                 else
16322                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16323                         d_syserrlst="$undef"
16324                 fi
16325     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16326                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16327                 d_strerror="$undef"
16328                 d_syserrlst="$define"
16329                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16330     else
16331                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16332                 d_strerror="$undef"
16333                 d_syserrlst="$undef"
16334                 d_strerrm='"unknown"'
16335     fi
16336 fi
16337
16338 : see if strerror_r exists
16339 set strerror_r d_strerror_r
16340 eval $inlibc
16341 case "$d_strerror_r" in
16342 "$define")
16343         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16344         case "$d_strerror_r_proto:$usethreads" in
16345         ":define")      d_strerror_r_proto=define
16346                 set d_strerror_r_proto strerror_r $hdrs
16347                 eval $hasproto ;;
16348         *)      ;;
16349         esac
16350         case "$d_strerror_r_proto" in
16351         define)
16352         case "$strerror_r_proto" in
16353         ''|0) try='int strerror_r(int, char*, size_t);'
16354         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16355         esac
16356         case "$strerror_r_proto" in
16357         ''|0) try='int strerror_r(int, char*, int);'
16358         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16359         esac
16360         case "$strerror_r_proto" in
16361         ''|0) try='char* strerror_r(int, char*, size_t);'
16362         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16363         esac
16364         case "$strerror_r_proto" in
16365         ''|0)   d_strerror_r=undef
16366                 strerror_r_proto=0
16367                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16368         * )     case "$strerror_r_proto" in
16369                 REENTRANT_PROTO*) ;;
16370                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16371                 esac
16372                 echo "Prototype: $try" ;;
16373         esac
16374         ;;
16375         *)      case "$usethreads" in
16376                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16377                 esac
16378                 d_strerror_r=undef
16379                 strerror_r_proto=0
16380                 ;;
16381         esac
16382         ;;
16383 *)      strerror_r_proto=0
16384         ;;
16385 esac
16386
16387 : see if strftime exists
16388 set strftime d_strftime
16389 eval $inlibc
16390
16391 : see if strtod exists
16392 set strtod d_strtod
16393 eval $inlibc
16394
16395 : see if strtol exists
16396 set strtol d_strtol
16397 eval $inlibc
16398
16399 : see if strtold exists
16400 set strtold d_strtold
16401 eval $inlibc
16402
16403 : see if strtoll exists
16404 set strtoll d_strtoll
16405 eval $inlibc
16406
16407 case "$d_longlong-$d_strtoll" in
16408 "$define-$define")
16409         $cat <<EOM
16410 Checking whether your strtoll() works okay...
16411 EOM
16412         $cat >try.c <<'EOCP'
16413 #include <errno.h>
16414 #ifdef __hpux
16415 #define strtoll __strtoll
16416 #endif
16417 #ifdef __EMX__
16418 #define strtoll _strtoll
16419 #endif
16420 #include <stdio.h>
16421 extern long long int strtoll(char *s, char **, int); 
16422 static int bad = 0;
16423 int check(char *s, long long ell, int een) {
16424         long long gll;
16425         errno = 0;
16426         gll = strtoll(s, 0, 10);
16427         if (!((gll == ell) && (errno == een)))
16428                 bad++;
16429 }
16430 int main() {
16431         check(" 1",                                      1LL, 0);
16432         check(" 0",                                      0LL, 0);
16433         check("-1",                                     -1LL, 0);
16434         check("-9223372036854775808", -9223372036854775808LL, 0);
16435         check("-9223372036854775808", -9223372036854775808LL, 0);
16436         check(" 9223372036854775807",  9223372036854775807LL, 0);
16437         check("-9223372036854775808", -9223372036854775808LL, 0);
16438         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16439         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16440         if (!bad)
16441                 printf("ok\n");
16442 }
16443 EOCP
16444         set try
16445         if eval $compile; then
16446                 yyy=`$run ./try`
16447                 case "$yyy" in
16448                 ok) echo "Your strtoll() seems to be working okay." ;;
16449                 *) cat <<EOM >&4
16450 Your strtoll() doesn't seem to be working okay.
16451 EOM
16452                    d_strtoll="$undef"
16453                    ;;
16454                 esac
16455         else
16456                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16457                 d_strtoll="$undef"
16458         fi
16459         ;;
16460 esac
16461
16462 : see if strtoq exists
16463 set strtoq d_strtoq
16464 eval $inlibc
16465
16466 : see if strtoul exists
16467 set strtoul d_strtoul
16468 eval $inlibc
16469
16470 case "$d_strtoul" in
16471 "$define")
16472         $cat <<EOM
16473 Checking whether your strtoul() works okay...
16474 EOM
16475         $cat >try.c <<'EOCP'
16476 #include <errno.h>
16477 #include <stdio.h>
16478 extern unsigned long int strtoul(char *s, char **, int); 
16479 static int bad = 0;
16480 void check(char *s, unsigned long eul, int een) {
16481         unsigned long gul;
16482         errno = 0;
16483         gul = strtoul(s, 0, 10);
16484         if (!((gul == eul) && (errno == een)))
16485                 bad++;
16486 }
16487 int main() {
16488         check(" 1", 1L, 0);
16489         check(" 0", 0L, 0);
16490 EOCP
16491         case "$longsize" in
16492         8)
16493             $cat >>try.c <<'EOCP'
16494         check("18446744073709551615", 18446744073709551615UL, 0);
16495         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16496 #if 0 /* strtoul() for /^-/ strings is undefined. */
16497         check("-1", 18446744073709551615UL, 0);
16498         check("-18446744073709551614", 2, 0);
16499         check("-18446744073709551615", 1, 0);
16500         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16501         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16502 #endif
16503 EOCP
16504                 ;;
16505         4)
16506                     $cat >>try.c <<'EOCP'
16507         check("4294967295", 4294967295UL, 0);
16508         check("4294967296", 4294967295UL, ERANGE);
16509 #if 0 /* strtoul() for /^-/ strings is undefined. */
16510         check("-1", 4294967295UL, 0);
16511         check("-4294967294", 2, 0);
16512         check("-4294967295", 1, 0);
16513         check("-4294967296", 4294967295UL, ERANGE);
16514         check("-4294967297", 4294967295UL, ERANGE);
16515 #endif
16516 EOCP
16517                 ;;
16518         *)
16519 : Should we write these tests to be more portable by sprintf-ing
16520 : ~0 and then manipulating that char string as input for strtol?
16521                 ;;
16522         esac
16523         $cat >>try.c <<'EOCP'
16524         if (!bad)
16525                 printf("ok\n");
16526         return 0;
16527 }
16528 EOCP
16529         set try
16530         if eval $compile; then
16531                 case "`$run ./try`" in
16532                 ok) echo "Your strtoul() seems to be working okay." ;;
16533                 *) cat <<EOM >&4
16534 Your strtoul() doesn't seem to be working okay.
16535 EOM
16536                    d_strtoul="$undef"
16537                    ;;
16538                 esac
16539         fi
16540         ;;
16541 esac
16542
16543 : see if strtoull exists
16544 set strtoull d_strtoull
16545 eval $inlibc
16546
16547 case "$d_longlong-$d_strtoull" in
16548 "$define-$define")
16549         $cat <<EOM
16550 Checking whether your strtoull() works okay...
16551 EOM
16552         $cat >try.c <<'EOCP'
16553 #include <errno.h>
16554 #ifdef __hpux
16555 #define strtoull __strtoull
16556 #endif
16557 #include <stdio.h>
16558 extern unsigned long long int strtoull(char *s, char **, int); 
16559 static int bad = 0;
16560 int check(char *s, long long eull, int een) {
16561         long long gull;
16562         errno = 0;
16563         gull = strtoull(s, 0, 10);
16564         if (!((gull == eull) && (errno == een)))
16565                 bad++;
16566 }
16567 int main() {
16568         check(" 1",                                        1LL, 0);
16569         check(" 0",                                        0LL, 0);
16570         check("18446744073709551615",  18446744073709551615ULL, 0);
16571         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16572 #if 0 /* strtoull() for /^-/ strings is undefined. */
16573         check("-1",                    18446744073709551615ULL, 0);
16574         check("-18446744073709551614",                     2LL, 0);
16575         check("-18446744073709551615",                     1LL, 0);
16576         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16577         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16578 #endif
16579         if (!bad)
16580                 printf("ok\n");
16581 }
16582 EOCP
16583         set try
16584         if eval $compile; then
16585                 case "`$run ./try`" in
16586                 ok) echo "Your strtoull() seems to be working okay." ;;
16587                 *) cat <<EOM >&4
16588 Your strtoull() doesn't seem to be working okay.
16589 EOM
16590                    d_strtoull="$undef"
16591                    ;;
16592                 esac
16593         fi
16594         ;;
16595 esac
16596
16597 : see if strtouq exists
16598 set strtouq d_strtouq
16599 eval $inlibc
16600
16601 case "$d_strtouq" in
16602 "$define")
16603         $cat <<EOM
16604 Checking whether your strtouq() works okay...
16605 EOM
16606         $cat >try.c <<'EOCP'
16607 #include <errno.h>
16608 #include <stdio.h>
16609 extern unsigned long long int strtouq(char *s, char **, int); 
16610 static int bad = 0;
16611 void check(char *s, unsigned long long eull, int een) {
16612         unsigned long long gull;
16613         errno = 0;
16614         gull = strtouq(s, 0, 10);
16615         if (!((gull == eull) && (errno == een)))
16616                 bad++;
16617 }
16618 int main() {
16619         check(" 1",                                        1LL, 0);
16620         check(" 0",                                        0LL, 0);
16621         check("18446744073709551615",  18446744073709551615ULL, 0);
16622         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16623 #if 0 /* strtouq() for /^-/ strings is undefined. */
16624         check("-1",                    18446744073709551615ULL, 0);
16625         check("-18446744073709551614",                     2LL, 0);
16626         check("-18446744073709551615",                     1LL, 0);
16627         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16628         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16629 #endif
16630         if (!bad)
16631                 printf("ok\n");
16632         return 0;
16633 }
16634 EOCP
16635         set try
16636         if eval $compile; then
16637                 case "`$run ./try`" in
16638                 ok) echo "Your strtouq() seems to be working okay." ;;
16639                 *) cat <<EOM >&4
16640 Your strtouq() doesn't seem to be working okay.
16641 EOM
16642                    d_strtouq="$undef"
16643                    ;;
16644                 esac
16645         fi
16646         ;;
16647 esac
16648
16649 : see if strxfrm exists
16650 set strxfrm d_strxfrm
16651 eval $inlibc
16652
16653 : see if symlink exists
16654 set symlink d_symlink
16655 eval $inlibc
16656
16657 : see if syscall exists
16658 set syscall d_syscall
16659 eval $inlibc
16660
16661 : see if prototype for syscall is available
16662 echo " "
16663 set d_syscallproto syscall $i_unistd unistd.h
16664 eval $hasproto
16665
16666 : see if sysconf exists
16667 set sysconf d_sysconf
16668 eval $inlibc
16669
16670 : see if system exists
16671 set system d_system
16672 eval $inlibc
16673
16674 : see if tcgetpgrp exists
16675 set tcgetpgrp d_tcgetpgrp
16676 eval $inlibc
16677
16678 : see if tcsetpgrp exists
16679 set tcsetpgrp d_tcsetpgrp
16680 eval $inlibc
16681
16682 : see if prototype for telldir is available
16683 echo " "
16684 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16685 eval $hasproto
16686
16687 : see if time exists
16688 echo " "
16689 if test "X$d_time" = X -o X"$timetype" = X; then
16690     if set time val -f d_time; eval $csym; $val; then
16691                 echo 'time() found.' >&4
16692                 val="$define"
16693                 rp="What is the type returned by time() on this system?"
16694                 set time_t timetype long stdio.h sys/types.h
16695                 eval $typedef_ask
16696     else
16697                 echo 'time() not found, hope that will do.' >&4
16698                 val="$undef"
16699                 timetype='int';
16700     fi
16701     set d_time
16702     eval $setvar
16703 fi
16704
16705 : see if this is a sys/times.h system
16706 set sys/times.h i_systimes
16707 eval $inhdr
16708
16709 : see if times exists
16710 echo " "
16711 if set times val -f d_times; eval $csym; $val; then
16712         echo 'times() found.' >&4
16713         d_times="$define"
16714         inc=''
16715         case "$i_systimes" in
16716         "$define") inc='sys/times.h';;
16717         esac
16718         rp="What is the type returned by times() on this system?"
16719         set clock_t clocktype long stdio.h sys/types.h $inc
16720         eval $typedef_ask
16721 else
16722         echo 'times() NOT found, hope that will do.' >&4
16723         d_times="$undef"
16724         clocktype='int'
16725 fi
16726
16727 : see if tmpnam_r exists
16728 set tmpnam_r d_tmpnam_r
16729 eval $inlibc
16730 case "$d_tmpnam_r" in
16731 "$define")
16732         hdrs="$i_systypes sys/types.h define stdio.h "
16733         case "$d_tmpnam_r_proto:$usethreads" in
16734         ":define")      d_tmpnam_r_proto=define
16735                 set d_tmpnam_r_proto tmpnam_r $hdrs
16736                 eval $hasproto ;;
16737         *)      ;;
16738         esac
16739         case "$d_tmpnam_r_proto" in
16740         define)
16741         case "$tmpnam_r_proto" in
16742         ''|0) try='char* tmpnam_r(char*);'
16743         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16744         esac
16745         case "$tmpnam_r_proto" in
16746         ''|0)   d_tmpnam_r=undef
16747                 tmpnam_r_proto=0
16748                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16749         * )     case "$tmpnam_r_proto" in
16750                 REENTRANT_PROTO*) ;;
16751                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16752                 esac
16753                 echo "Prototype: $try" ;;
16754         esac
16755         ;;
16756         *)      case "$usethreads" in
16757                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16758                 esac
16759                 d_tmpnam_r=undef
16760                 tmpnam_r_proto=0
16761                 ;;
16762         esac
16763         ;;
16764 *)      tmpnam_r_proto=0
16765         ;;
16766 esac
16767
16768 : see if truncate exists
16769 set truncate d_truncate
16770 eval $inlibc
16771
16772 : see if ttyname_r exists
16773 set ttyname_r d_ttyname_r
16774 eval $inlibc
16775 case "$d_ttyname_r" in
16776 "$define")
16777         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16778         case "$d_ttyname_r_proto:$usethreads" in
16779         ":define")      d_ttyname_r_proto=define
16780                 set d_ttyname_r_proto ttyname_r $hdrs
16781                 eval $hasproto ;;
16782         *)      ;;
16783         esac
16784         case "$d_ttyname_r_proto" in
16785         define)
16786         case "$ttyname_r_proto" in
16787         ''|0) try='int ttyname_r(int, char*, size_t);'
16788         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16789         esac
16790         case "$ttyname_r_proto" in
16791         ''|0) try='int ttyname_r(int, char*, int);'
16792         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16793         esac
16794         case "$ttyname_r_proto" in
16795         ''|0) try='char* ttyname_r(int, char*, int);'
16796         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16797         esac
16798         case "$ttyname_r_proto" in
16799         ''|0)   d_ttyname_r=undef
16800                 ttyname_r_proto=0
16801                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16802         * )     case "$ttyname_r_proto" in
16803                 REENTRANT_PROTO*) ;;
16804                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16805                 esac
16806                 echo "Prototype: $try" ;;
16807         esac
16808         ;;
16809         *)      case "$usethreads" in
16810                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16811                 esac
16812                 d_ttyname_r=undef
16813                 ttyname_r_proto=0
16814                 ;;
16815         esac
16816         ;;
16817 *)      ttyname_r_proto=0
16818         ;;
16819 esac
16820
16821 : see if tzname[] exists
16822 echo " "
16823 if set tzname val -a d_tzname; eval $csym; $val; then
16824         val="$define"
16825         echo 'tzname[] found.' >&4
16826 else
16827         val="$undef"
16828         echo 'tzname[] NOT found.' >&4
16829 fi
16830 set d_tzname
16831 eval $setvar
16832
16833 case "$osname" in
16834 next|rhapsody|darwin) multiarch="$define" ;;
16835 esac
16836 case "$multiarch" in
16837 ''|[nN]*) multiarch="$undef" ;;
16838 esac
16839
16840 : check for ordering of bytes in a UV
16841 echo " "
16842 case "$usecrosscompile$multiarch" in
16843 *$define*)
16844         $cat <<EOM
16845 You seem to be either cross-compiling or doing a multiarchitecture build,
16846 skipping the byteorder check.
16847
16848 EOM
16849         byteorder='ffff'
16850         ;;
16851 *)
16852         case "$byteorder" in
16853         '')
16854                 $cat <<'EOM'
16855 In the following, larger digits indicate more significance.  A big-endian
16856 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16857 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16858 machines may have weird orders like 3412.  A Cray will report 87654321,
16859 an Alpha will report 12345678. If the test program works the default is
16860 probably right.
16861 I'm now running the test program...
16862 EOM
16863                 $cat >try.c <<EOCP
16864 #include <stdio.h>
16865 #$i_stdlib I_STDLIB
16866 #ifdef I_STDLIB
16867 #include <stdlib.h>
16868 #endif
16869 #include <sys/types.h>
16870 typedef $uvtype UV;
16871 int main()
16872 {
16873         int i;
16874         union {
16875                 UV l;
16876                 char c[$uvsize];
16877         } u;
16878
16879         if ($uvsize > 4)
16880                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16881         else
16882                 u.l = (UV)0x04030201;
16883         for (i = 0; i < $uvsize; i++)
16884                 printf("%c", u.c[i]+'0');
16885         printf("\n");
16886         exit(0);
16887 }
16888 EOCP
16889                 xxx_prompt=y
16890                 set try
16891                 if eval $compile && ./try > /dev/null; then
16892                         dflt=`$run ./try`
16893                         case "$dflt" in
16894                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16895                                 echo "(The test program ran ok.)"
16896                                 echo "byteorder=$dflt"
16897                                 xxx_prompt=n
16898                         ;;
16899                         ????|????????) echo "(The test program ran ok.)" ;;
16900                         *) echo "(The test program didn't run right for some reason.)" ;;
16901                         esac
16902                 else
16903                         dflt='4321'
16904                         cat <<'EOM'
16905 (I can't seem to compile the test program.  Guessing big-endian...)
16906 EOM
16907                 fi
16908                 case "$xxx_prompt" in
16909                 y)
16910                         rp="What is the order of bytes in $uvtype?"
16911                         . ./myread
16912                         byteorder="$ans"
16913                         ;;
16914                 *)      byteorder=$dflt
16915                         ;;
16916                 esac
16917                 ;;
16918         esac
16919         $rm -f try.c try
16920         ;;
16921 esac
16922
16923
16924 $cat <<EOM
16925
16926 Checking to see whether you can access character data unalignedly...
16927 EOM
16928 case "$d_u32align" in
16929 '')   $cat >try.c <<EOCP
16930 #include <stdio.h>
16931 #$i_stdlib I_STDLIB
16932 #ifdef I_STDLIB
16933 #include <stdlib.h>
16934 #endif
16935 #define U32 $u32type
16936 #define BYTEORDER 0x$byteorder
16937 #define U8 $u8type
16938 #include <signal.h>
16939 #ifdef SIGBUS
16940 $signal_t bletch(s) int s; { exit(4); }
16941 #endif
16942 int main() {
16943 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16944     U8 buf[8];
16945     U32 *up;
16946     int i;
16947
16948     if (sizeof(U32) != 4) {
16949         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16950         exit(1);
16951     }
16952
16953     fflush(stdout);
16954
16955 #ifdef SIGBUS
16956     signal(SIGBUS, bletch);
16957 #endif
16958
16959     buf[0] = 0;
16960     buf[1] = 0;
16961     buf[2] = 0;
16962     buf[3] = 1;
16963     buf[4] = 0;
16964     buf[5] = 0;
16965     buf[6] = 0;
16966     buf[7] = 1;
16967
16968     for (i = 0; i < 4; i++) {
16969         up = (U32*)(buf + i);
16970         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16971                (*up == 1 << (8*(3-i)))  /* little-endian */
16972               )
16973            )
16974         {
16975             printf("read failed (%x)\n", *up);
16976             exit(2);
16977         }
16978     }
16979
16980     /* write test */
16981     for (i = 0; i < 4; i++) {
16982         up = (U32*)(buf + i);
16983         *up = 0xBeef;
16984         if (*up != 0xBeef) {
16985             printf("write failed (%x)\n", *up);
16986             exit(3);
16987         }
16988     }
16989
16990     exit(0);
16991 #else
16992     printf("1\n");
16993     exit(1);
16994 #endif
16995     return 0;
16996 }
16997 EOCP
16998 set try
16999 if eval $compile_ok; then
17000         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
17001         $run ./try 2>&1 >/dev/null
17002         case "$?" in
17003         0)      cat >&4 <<EOM
17004 You can access character data pretty unalignedly.
17005 EOM
17006                 d_u32align="$undef"
17007                 ;;
17008         *)      cat >&4 <<EOM
17009 It seems that you must access character data in an aligned manner.
17010 EOM
17011                 d_u32align="$define"
17012                 ;;
17013         esac
17014 else
17015         rp='Can you access character data at unaligned addresses?'
17016         dflt='n'
17017         . ./myread
17018         case "$ans" in
17019         [yY]*)  d_u32align="$undef"  ;;
17020         *)      d_u32align="$define" ;;
17021         esac
17022 fi
17023 $rm -f core core.try.* try.core
17024 ;;
17025 esac
17026
17027 : see if ualarm exists
17028 set ualarm d_ualarm
17029 eval $inlibc
17030
17031 : see if umask exists
17032 set umask d_umask
17033 eval $inlibc
17034
17035 : see if unordered exists
17036 set unordered d_unordered
17037 eval $inlibc
17038
17039 : see if usleep exists
17040 set usleep d_usleep
17041 eval $inlibc
17042
17043 : see if prototype for usleep is available
17044 echo " "
17045 set d_usleepproto usleep $i_unistd unistd.h
17046 eval $hasproto
17047
17048 : see if ustat exists
17049 set ustat d_ustat
17050 eval $inlibc
17051
17052 : backward compatibility for d_hvfork
17053 if test X$d_hvfork != X; then
17054         d_vfork="$d_hvfork"
17055         d_hvfork=''
17056 fi
17057 : see if there is a vfork
17058 val=''
17059 set vfork val
17060 eval $inlibc
17061
17062 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17063 : perl on Solaris 2.x, and probably elsewhere.
17064 case "$val" in
17065 $define)
17066         echo " "
17067         case "$usevfork" in
17068         false) dflt='n';;
17069         *) dflt='y';;
17070         esac
17071         cat <<'EOM'
17072  
17073 Perl can only use a vfork() that doesn't suffer from strict
17074 restrictions on calling functions or modifying global data in
17075 the child.  For example, glibc-2.1 contains such a vfork()
17076 that is unsuitable.  If your system provides a proper fork()
17077 call, chances are that you do NOT want perl to use vfork().
17078
17079 EOM
17080         rp="Do you still want to use vfork()?"
17081         . ./myread
17082         case "$ans" in
17083         y|Y) ;;
17084         *)
17085                 echo "Ok, we won't use vfork()."
17086                 val="$undef"
17087                 ;;
17088         esac
17089         ;;
17090 esac
17091 set d_vfork
17092 eval $setvar
17093 case "$d_vfork" in
17094 $define) usevfork='true';;
17095 *) usevfork='false';;
17096 esac
17097
17098 : see if closedir exists
17099 set closedir d_closedir
17100 eval $inlibc
17101
17102 case "$d_closedir" in
17103 "$define")
17104         echo " "
17105         echo "Checking whether closedir() returns a status..." >&4
17106         cat > try.c <<EOM
17107 #$i_dirent I_DIRENT             /**/
17108 #$i_sysdir I_SYS_DIR            /**/
17109 #$i_sysndir I_SYS_NDIR          /**/
17110 #$i_systypes I_SYS_TYPES        /**/
17111
17112 #if defined(I_SYS_TYPES)
17113 #include <sys/types.h>
17114 #endif
17115 #if defined(I_DIRENT)
17116 #include <dirent.h>
17117 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17118 #include <sys/dir.h>
17119 #endif
17120 #else
17121 #ifdef I_SYS_NDIR
17122 #include <sys/ndir.h>
17123 #else
17124 #ifdef I_SYS_DIR
17125 #ifdef hp9000s500
17126 #include <ndir.h>       /* may be wrong in the future */
17127 #else
17128 #include <sys/dir.h>
17129 #endif
17130 #endif
17131 #endif
17132 #endif 
17133 int main() { return closedir(opendir(".")); }
17134 EOM
17135         set try
17136         if eval $compile_ok; then
17137                 if $run ./try > /dev/null 2>&1 ; then
17138                         echo "Yes, it does."
17139                         val="$undef"
17140                 else
17141                         echo "No, it doesn't."
17142                         val="$define"
17143                 fi
17144         else
17145                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17146                 val="$define"
17147         fi
17148         ;;
17149 *)
17150         val="$undef";
17151         ;;
17152 esac
17153 set d_void_closedir
17154 eval $setvar
17155 $rm -f try try.*
17156 : see if there is a wait4
17157 set wait4 d_wait4
17158 eval $inlibc
17159
17160 : see if waitpid exists
17161 set waitpid d_waitpid
17162 eval $inlibc
17163
17164 : see if wcstombs exists
17165 set wcstombs d_wcstombs
17166 eval $inlibc
17167
17168 : see if wctomb exists
17169 set wctomb d_wctomb
17170 eval $inlibc
17171
17172 : see if writev exists
17173 set writev d_writev
17174 eval $inlibc
17175
17176 : preserve RCS keywords in files with variable substitution, grrr
17177 Date='$Date'
17178 Id='$Id'
17179 Log='$Log'
17180 RCSfile='$RCSfile'
17181 Revision='$Revision'
17182
17183 : check for alignment requirements
17184 echo " "
17185 case "$usecrosscompile$multiarch" in
17186 *$define*)
17187         $cat <<EOM
17188 You seem to be either cross-compiling or doing a multiarchitecture build,
17189 skipping the memory alignment check.
17190
17191 EOM
17192         case "$alignbytes" in
17193         '') alignbytes=8 ;;
17194         esac
17195         ;;
17196 *)
17197         case "$alignbytes" in
17198         '') echo "Checking alignment constraints..." >&4
17199                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17200                         $cat >try.c <<'EOCP'
17201 typedef long double NV;
17202 EOCP
17203                 else
17204                         $cat >try.c <<'EOCP'
17205 typedef double NV;
17206 EOCP
17207                 fi
17208                 $cat >>try.c <<'EOCP'
17209 #include <stdio.h>
17210 struct foobar {
17211         char foo;
17212         NV bar;
17213 } try_algn;
17214 int main()
17215 {
17216     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17217     return(0);
17218 }
17219 EOCP
17220                 set try
17221                 if eval $compile_ok; then
17222                         dflt=`$run ./try`
17223                 else
17224                         dflt='8'
17225                         echo "(I can't seem to compile the test program...)"
17226                 fi
17227                 ;;
17228         *) dflt="$alignbytes"
17229                 ;;
17230         esac
17231         rp="Doubles must be aligned on a how-many-byte boundary?"
17232         . ./myread
17233         alignbytes="$ans"
17234         $rm -f try.c try
17235         ;;
17236 esac
17237
17238
17239 : set the base revision
17240 baserev=5.0
17241
17242 : how do we concatenate cpp tokens here?
17243 echo " "
17244 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17245 $cat >cpp_stuff.c <<'EOCP'
17246 #define RCAT(a,b)a/**/b
17247 #define ACAT(a,b)a ## b
17248 RCAT(Rei,ser)
17249 ACAT(Cir,cus)
17250 EOCP
17251 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17252 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17253         echo "Oh!  Smells like ANSI's been here." >&4
17254         echo "We can catify or stringify, separately or together!"
17255         cpp_stuff=42
17256 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17257         echo "Ah, yes!  The good old days!" >&4
17258         echo "However, in the good old days we don't know how to stringify and"
17259         echo "catify at the same time."
17260         cpp_stuff=1
17261 else
17262         $cat >&4 <<EOM
17263 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17264 You're going to have to edit the values of CAT[2-5] in config.h...
17265 EOM
17266         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17267 fi
17268 $rm -f cpp_stuff.*
17269
17270 : see if this is a db.h system
17271 set db.h i_db
17272 eval $inhdr
17273
17274 case "$i_db" in
17275 $define)
17276         : Check db version.
17277         echo " "
17278         echo "Checking Berkeley DB version ..." >&4
17279         $cat >try.c <<EOCP
17280 #$d_const HASCONST
17281 #ifndef HASCONST
17282 #define const
17283 #endif
17284 #include <sys/types.h>
17285 #include <stdio.h>
17286 #$i_stdlib I_STDLIB
17287 #ifdef I_STDLIB
17288 #include <stdlib.h>
17289 #endif
17290 #include <db.h>
17291 int main(int argc, char *argv[])
17292 {
17293 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17294     int Major, Minor, Patch ;
17295     unsigned long Version ;
17296     (void)db_version(&Major, &Minor, &Patch) ;
17297     if (argc == 2) {
17298         printf("%d %d %d %d %d %d\n",
17299                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17300                Major, Minor, Patch);
17301         exit(0);
17302     }
17303     printf("You have Berkeley DB Version 2 or greater.\n");
17304
17305     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17306                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17307     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17308                 Major, Minor, Patch) ;
17309
17310     /* check that db.h & libdb are compatible */
17311     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17312         printf("db.h and libdb are incompatible.\n") ;
17313         exit(3);        
17314     }
17315
17316     printf("db.h and libdb are compatible.\n") ;
17317
17318     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17319                 + DB_VERSION_PATCH ;
17320
17321     /* needs to be >= 2.3.4 */
17322     if (Version < 2003004) {
17323     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17324         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17325         exit(2);        
17326     }
17327
17328     exit(0);
17329 #else
17330 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17331     if (argc == 2) {
17332         printf("1 0 0\n");
17333         exit(0);
17334     }
17335     printf("You have Berkeley DB Version 1.\n");
17336     exit(0);    /* DB version < 2: the coast is clear. */
17337 #else
17338     exit(1);    /* <db.h> not Berkeley DB? */
17339 #endif
17340 #endif
17341 }
17342 EOCP
17343         set try
17344         if eval $compile_ok && $run ./try; then
17345                 echo 'Looks OK.' >&4
17346                 set `$run ./try 1`
17347                 db_version_major=$1
17348                 db_version_minor=$2
17349                 db_version_patch=$3
17350         else
17351                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17352                 i_db=$undef
17353                 case " $libs " in
17354                 *"-ldb "*)
17355                         : Remove db from list of libraries to use
17356                         echo "Removing unusable -ldb from library list" >&4
17357                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17358                         shift
17359                         libs="$*"
17360                         echo "libs = $libs" >&4
17361                         ;;
17362                 esac
17363         fi
17364         $rm -f try.*
17365         ;;
17366 esac
17367
17368 case "$i_db" in
17369 define)
17370         : Check the return type needed for hash 
17371         echo " "
17372         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17373         $cat >try.c <<EOCP
17374 #$d_const HASCONST
17375 #ifndef HASCONST
17376 #define const
17377 #endif
17378 #include <sys/types.h>
17379 #include <db.h>
17380
17381 #ifndef DB_VERSION_MAJOR
17382 u_int32_t hash_cb (ptr, size)
17383 const void *ptr;
17384 size_t size;
17385 {
17386 }
17387 HASHINFO info;
17388 int main()
17389 {
17390         info.hash = hash_cb;
17391 }
17392 #endif
17393 EOCP
17394         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17395                 if $contains warning try.out >>/dev/null 2>&1 ; then
17396                         db_hashtype='int'
17397                 else
17398                         db_hashtype='u_int32_t'
17399                 fi
17400         else
17401                 : XXX Maybe we should just give up here.
17402                 db_hashtype=u_int32_t
17403                 $cat try.out >&4
17404                 echo "Help:  I can't seem to compile the db test program." >&4
17405                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17406         fi
17407         $rm -f try.*
17408         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17409         ;;
17410 *)      db_hashtype=u_int32_t
17411         ;;
17412 esac
17413 case "$i_db" in
17414 define)
17415         : Check the return type needed for prefix 
17416         echo " "
17417         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17418         cat >try.c <<EOCP
17419 #$d_const HASCONST
17420 #ifndef HASCONST
17421 #define const
17422 #endif
17423 #include <sys/types.h>
17424 #include <db.h>
17425
17426 #ifndef DB_VERSION_MAJOR
17427 size_t prefix_cb (key1, key2)
17428 const DBT *key1;
17429 const DBT *key2;
17430 {
17431 }
17432 BTREEINFO info;
17433 int main()
17434 {
17435         info.prefix = prefix_cb;
17436 }
17437 #endif
17438 EOCP
17439         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17440                 if $contains warning try.out >>/dev/null 2>&1 ; then
17441                         db_prefixtype='int'
17442                 else
17443                         db_prefixtype='size_t'
17444                 fi
17445         else
17446                 db_prefixtype='size_t'
17447                 : XXX Maybe we should just give up here.
17448                 $cat try.out >&4
17449                 echo "Help:  I can't seem to compile the db test program." >&4
17450                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17451         fi
17452         $rm -f try.*
17453         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17454         ;;
17455 *)      db_prefixtype='size_t'
17456         ;;
17457 esac
17458
17459
17460 : How can we generate normalized random numbers ?
17461 echo " "
17462 echo "Looking for a random number function..." >&4
17463 case "$randfunc" in
17464 '')
17465         if set drand48 val -f; eval $csym; $val; then
17466                 dflt="drand48"
17467                 echo "Good, found drand48()." >&4
17468         elif set random val -f; eval $csym; $val; then
17469                 dflt="random"
17470                 echo "OK, found random()." >&4
17471         else
17472                 dflt="rand"
17473                 echo "Yick, looks like I have to use rand()." >&4
17474         fi
17475         echo " "
17476         ;;
17477 *)
17478         dflt="$randfunc"
17479         ;;
17480 esac
17481 cont=true
17482
17483 case "$ccflags" in
17484 *-Dmy_rand=*|*-Dmy_srand=*)
17485         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17486         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17487         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17488         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17489         ;;
17490 esac
17491
17492 while $test "$cont"; do
17493         rp="Use which function to generate random numbers?"
17494         . ./myread
17495         if $test "$ans" = "$dflt"; then
17496                 : null
17497         else
17498                 randbits=''
17499         fi
17500         randfunc="$ans"
17501         if set $ans val -f; eval $csym; $val; then
17502                 cont=''
17503         else
17504                 dflt=y
17505                 rp="I cannot find function $ans. Use that name anyway?"
17506                 . ./myread
17507                 dflt=rand
17508                 case "$ans" in
17509                         [yY]*) cont='';;
17510                 esac
17511         fi
17512         case "$cont" in
17513         '')
17514                 case "$randfunc" in
17515                 drand48)
17516                         drand01="drand48()"
17517                         seedfunc="srand48"
17518                         randbits=48
17519                         randseedtype=long
17520                         ;;
17521                 rand|random)
17522                         case "$randbits" in
17523                         '')
17524 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17525                                 $cat >try.c <<EOCP
17526 #$i_unistd I_UNISTD
17527 #$i_stdlib I_STDLIB
17528 #include <stdio.h>
17529 #ifdef I_UNISTD
17530 #  include <unistd.h>
17531 #endif
17532 #ifdef I_STDLIB
17533 #  include <stdlib.h>
17534 #endif
17535 int main()
17536 {
17537         register int i;
17538         register unsigned long tmp;
17539         register unsigned long max = 0L;
17540
17541         for (i = 1000; i; i--) {
17542                 tmp = (unsigned long) $randfunc();
17543                 if (tmp > max) max = tmp;
17544         }
17545         for (i = 0; max; i++)
17546                 max /= 2;
17547         printf("%d\n",i);
17548 }
17549 EOCP
17550                                 set try
17551                                 if eval $compile_ok; then
17552                                         dflt=`try`
17553                                 else
17554                                         dflt='?'
17555                                         echo "(I can't seem to compile the test program...)"
17556                                 fi
17557                                 ;;
17558                         *)
17559                                 dflt="$randbits"
17560                                 ;;
17561                         esac
17562                         rp="How many bits does your $randfunc() function produce?"
17563                         . ./myread
17564                         randbits="$ans"
17565                         $rm -f try.c try
17566                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17567                         seedfunc="s$randfunc"
17568                         randseedtype=unsigned
17569                         ;;
17570                 *)
17571                         dflt="31"
17572                         rp="How many bits does your $randfunc() function produce?"
17573                         . ./myread
17574                         randbits="$ans"
17575                         seedfunc="s$randfunc"
17576                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17577                         if set $seedfunc val -f; eval $csym; $val; then
17578                                 echo "(Using $seedfunc() to seed random generator)"
17579                         else
17580                                 echo "(Warning: no $seedfunc() to seed random generator)"
17581                                 seedfunc=rand
17582                         fi
17583                         randseedtype=unsigned
17584                         ;;
17585                 esac
17586                 ;;
17587         esac
17588 done
17589
17590 echo " "
17591 echo "Determining whether or not we are on an EBCDIC system..." >&4
17592 $cat >try.c <<'EOM'
17593 int main()
17594 {
17595   if ('M'==0xd4) return 0;
17596   return 1;
17597 }
17598 EOM
17599
17600 val=$undef
17601 set try
17602 if eval $compile_ok; then
17603         if $run ./try; then
17604                 echo "You seem to speak EBCDIC." >&4
17605                 val="$define"
17606         else
17607                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17608         fi
17609 else
17610         echo "I'm unable to compile the test program." >&4
17611         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17612 fi
17613 $rm -f try try.*
17614 set ebcdic
17615 eval $setvar
17616
17617 echo " "
17618 $cat >&4 <<EOM
17619 Checking how to flush all pending stdio output...
17620 EOM
17621 # I only know how to find the first 32 possibly open files on SunOS.
17622 # See also hints/sunos_4_1.sh and util.c  --AD
17623 case "$osname" in
17624 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17625 esac
17626 $cat >>try.c <<EOCP
17627 #include <stdio.h>
17628 #$i_stdlib I_STDLIB
17629 #ifdef I_STDLIB
17630 #include <stdlib.h>
17631 #endif
17632 #$i_unistd I_UNISTD
17633 #ifdef I_UNISTD
17634 # include <unistd.h>
17635 #endif
17636 #$d_sysconf HAS_SYSCONF
17637 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17638 #ifdef HAS_STDIO_STREAM_ARRAY
17639 # define STDIO_STREAM_ARRAY $stdio_stream_array
17640 #endif
17641 int main() {
17642   FILE* p;
17643   unlink("try.out");
17644   p = fopen("try.out", "w");
17645 #ifdef TRY_FPUTC
17646   fputc('x', p);
17647 #else
17648 # ifdef TRY_FPRINTF
17649   fprintf(p, "x");
17650 # endif
17651 #endif
17652 #ifdef TRY_FFLUSH_NULL
17653   fflush(NULL);
17654 #endif
17655 #ifdef TRY_FFLUSH_ALL
17656   {
17657     long open_max = -1;
17658 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17659     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17660 # else
17661 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17662     open_max = sysconf(_SC_OPEN_MAX);
17663 #  else
17664 #   ifdef FOPEN_MAX
17665     open_max = FOPEN_MAX;
17666 #   else
17667 #    ifdef OPEN_MAX
17668     open_max = OPEN_MAX;
17669 #    else
17670 #     ifdef _NFILE
17671     open_max = _NFILE;
17672 #     endif
17673 #    endif
17674 #   endif
17675 #  endif
17676 # endif 
17677 # ifdef HAS_STDIO_STREAM_ARRAY
17678     if (open_max > 0) {
17679       long i;
17680       for (i = 0; i < open_max; i++)
17681             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17682                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17683                 STDIO_STREAM_ARRAY[i]._flag)
17684                 fflush(&STDIO_STREAM_ARRAY[i]);
17685     }   
17686   }
17687 # endif
17688 #endif
17689   _exit(42);
17690 }
17691 EOCP
17692 : first we have to find out how _not_ to flush
17693 $to try.c
17694 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17695     output=''
17696     set try -DTRY_FPUTC
17697     if eval $compile; then
17698             $run ./try 2>/dev/null
17699             code="$?"
17700             $from try.out
17701             if $test ! -s try.out -a "X$code" = X42; then
17702                 output=-DTRY_FPUTC
17703             fi
17704     fi
17705     case "$output" in
17706     '')
17707             set try -DTRY_FPRINTF
17708             if eval $compile; then
17709                     $run ./try 2>/dev/null
17710                     code="$?"
17711                     $from try.out
17712                     if $test ! -s try.out -a "X$code" = X42; then
17713                         output=-DTRY_FPRINTF
17714                     fi
17715             fi
17716         ;;
17717     esac
17718 fi
17719 : check for fflush NULL behaviour
17720 case "$fflushNULL" in
17721 '')     set try -DTRY_FFLUSH_NULL $output
17722         if eval $compile; then
17723                 $run ./try 2>/dev/null
17724                 code="$?"
17725                 $from try.out
17726                 if $test -s try.out -a "X$code" = X42; then
17727                         fflushNULL="`$cat try.out`"
17728                 else
17729                         if $test "X$code" != X42; then
17730                                 $cat >&4 <<EOM
17731 (If this test failed, don't worry, we'll try another method shortly.)
17732 EOM
17733                         fi
17734                 fi
17735         fi
17736         $rm -f core try.core core.try.*
17737         case "$fflushNULL" in
17738         x)      $cat >&4 <<EOM
17739 Your fflush(NULL) works okay for output streams.
17740 Let's see if it clobbers input pipes...
17741 EOM
17742 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17743 # bug that improperly flushes the input end of pipes.  So we avoid the
17744 # autoflush on fork/system/exec support for now. :-(
17745 $cat >tryp.c <<EOCP
17746 #include <stdio.h>
17747 int
17748 main(int argc, char **argv)
17749 {
17750     char buf[1024];
17751     int i;
17752     char *bp = buf;
17753     while (1) {
17754         while ((i = getc(stdin)) != -1
17755                && (*bp++ = i) != '\n'
17756                && bp < &buf[1024])
17757         /* DO NOTHING */ ;
17758         *bp = '\0';
17759         fprintf(stdout, "%s", buf);
17760         fflush(NULL);
17761         if (i == -1)
17762             return 0;
17763         bp = buf;
17764     }
17765 }
17766 EOCP
17767                 fflushNULL="$define"
17768                 set tryp
17769                 if eval $compile; then
17770                     $rm -f tryp.out
17771                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17772                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17773                        $cat >&4 <<EOM
17774 fflush(NULL) seems to behave okay with input streams.
17775 EOM
17776                         fflushNULL="$define"
17777                     else
17778                         $cat >&4 <<EOM
17779 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17780 EOM
17781                         fflushNULL="$undef"
17782                     fi
17783                 fi
17784                 $rm -f core tryp.c tryp.core core.tryp.*
17785                 ;;
17786         '')     $cat >&4 <<EOM
17787 Your fflush(NULL) isn't working (contrary to ANSI C).
17788 EOM
17789                 fflushNULL="$undef"
17790                 ;;
17791         *)      $cat >&4 <<EOM
17792 Cannot figure out whether your fflush(NULL) works or not.
17793 I'm assuming it doesn't (contrary to ANSI C).
17794 EOM
17795                 fflushNULL="$undef"
17796                 ;;
17797         esac
17798         ;;
17799 $define|true|[yY]*)
17800         fflushNULL="$define"
17801         ;;
17802 *)
17803         fflushNULL="$undef"
17804         ;;
17805 esac
17806 : check explicit looping only if NULL did not work, and if the pipe
17807 : bug does not show up on an explicit flush too
17808 case "$fflushNULL" in
17809 "$undef")
17810         $cat >tryp.c <<EOCP
17811 #include <stdio.h>
17812 int
17813 main(int argc, char **argv)
17814 {
17815     char buf[1024];
17816     int i;
17817     char *bp = buf;
17818     while (1) {
17819         while ((i = getc(stdin)) != -1
17820                && (*bp++ = i) != '\n'
17821                && bp < &buf[1024])
17822         /* DO NOTHING */ ;
17823         *bp = '\0';
17824         fprintf(stdout, "%s", buf);
17825         fflush(stdin);
17826         if (i == -1)
17827             return 0;
17828         bp = buf;
17829     }
17830 }
17831 EOCP
17832         set tryp
17833         if eval $compile; then
17834             $rm -f tryp.out
17835             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17836             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17837                $cat >&4 <<EOM
17838 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17839 EOM
17840                 : now check for fflushall behaviour
17841                 case "$fflushall" in
17842                 '')     set try -DTRY_FFLUSH_ALL $output
17843                         if eval $compile; then
17844                                 $cat >&4 <<EOM
17845 (Now testing the other method--but note that this also may fail.)
17846 EOM
17847                                 $run ./try 2>/dev/null
17848                                 code=$?
17849                                 $from try.out
17850                                 if $test -s try.out -a "X$code" = X42; then
17851                                         fflushall="`$cat try.out`"
17852                                 fi
17853                         fi
17854                         $rm -f core try.core core.try.*
17855                         case "$fflushall" in
17856                         x)      $cat >&4 <<EOM
17857 Whew. Flushing explicitly all the stdio streams works.
17858 EOM
17859                                 fflushall="$define"
17860                                 ;;
17861                         '')     $cat >&4 <<EOM
17862 Sigh. Flushing explicitly all the stdio streams doesn't work.
17863 EOM
17864                                 fflushall="$undef"
17865                                 ;;
17866                         *)      $cat >&4 <<EOM
17867 Cannot figure out whether flushing stdio streams explicitly works or not.
17868 I'm assuming it doesn't.
17869 EOM
17870                                 fflushall="$undef"
17871                                 ;;
17872                         esac
17873                         ;;
17874                 "$define"|true|[yY]*)
17875                         fflushall="$define"
17876                         ;;
17877                 *)
17878                         fflushall="$undef"
17879                         ;;
17880                 esac
17881             else
17882                 $cat >&4 <<EOM
17883 All is futile.  Even fflush(stdin) clobbers input pipes!
17884 EOM
17885                 fflushall="$undef"
17886             fi
17887         else
17888             fflushall="$undef"
17889         fi
17890         $rm -f core tryp.c tryp.core core.tryp.*
17891         ;;
17892 *)      fflushall="$undef"
17893         ;;
17894 esac
17895
17896 case "$fflushNULL$fflushall" in
17897 undefundef)
17898         $cat <<EOM
17899 OK, I give up.  I cannot figure out how to flush pending stdio output.
17900 We won't be flushing handles at all before fork/exec/popen.
17901 EOM
17902         ;;
17903 esac
17904 $rm -f try.* try$exe_ext
17905
17906 : Store the full pathname to the ar program for use in the C program
17907 : Respect a hint or command line value for full_ar.
17908 case "$full_ar" in
17909 '') full_ar=$ar ;;
17910 esac
17911
17912 : Store the full pathname to the sed program for use in the C program
17913 full_sed=$sed
17914
17915 : see what type gids are declared as in the kernel
17916 echo " "
17917 echo "Looking for the type for group ids returned by getgid()."
17918 set gid_t gidtype xxx stdio.h sys/types.h
17919 eval $typedef
17920 case "$gidtype" in
17921 xxx)
17922         xxx=`./findhdr sys/user.h`
17923         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17924         case $1 in
17925         unsigned) dflt="$1 $2" ;;
17926         *) dflt="$1" ;;
17927         esac
17928         ;;
17929 *) dflt="$gidtype";;
17930 esac
17931 case "$gidtype" in
17932 gid_t) echo "gid_t found." ;;
17933 *)      rp="What is the type for group ids returned by getgid()?"
17934         . ./myread
17935         gidtype="$ans"
17936         ;;
17937 esac
17938
17939 echo " "
17940 case "$gidtype" in
17941 *_t) zzz="$gidtype"     ;;
17942 *)   zzz="gid"          ;;
17943 esac
17944 echo "Checking the size of $zzz..." >&4 
17945 cat > try.c <<EOCP
17946 #include <sys/types.h>
17947 #include <stdio.h>
17948 #$i_stdlib I_STDLIB
17949 #ifdef I_STDLIB
17950 #include <stdlib.h>
17951 #endif
17952 int main() {
17953     printf("%d\n", (int)sizeof($gidtype));
17954     exit(0);
17955 }
17956 EOCP
17957 set try
17958 if eval $compile_ok; then
17959         yyy=`$run ./try`
17960         case "$yyy" in
17961         '')     gidsize=4
17962                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17963                 ;;
17964         *)      gidsize=$yyy
17965                 echo "Your $zzz is $gidsize bytes long."
17966                 ;;
17967         esac
17968 else
17969         gidsize=4
17970         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17971 fi
17972
17973
17974 echo " "
17975 case "$gidtype" in
17976 *_t) zzz="$gidtype"     ;;
17977 *)   zzz="gid"          ;;
17978 esac
17979 echo "Checking the sign of $zzz..." >&4 
17980 cat > try.c <<EOCP
17981 #include <sys/types.h>
17982 #include <stdio.h>
17983 int main() {
17984         $gidtype foo = -1;
17985         if (foo < 0)
17986                 printf("-1\n");
17987         else
17988                 printf("1\n");
17989 }
17990 EOCP
17991 set try
17992 if eval $compile; then
17993         yyy=`$run ./try`
17994         case "$yyy" in
17995         '')     gidsign=1
17996                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17997                 ;;
17998         *)      gidsign=$yyy
17999                 case "$gidsign" in
18000                  1) echo "Your $zzz is unsigned." ;;
18001                 -1) echo "Your $zzz is signed."   ;;
18002                 esac
18003                 ;;
18004         esac
18005 else
18006         gidsign=1
18007         echo "(I can't compile the test program--guessing unsigned.)" >&4
18008 fi
18009
18010
18011 echo " "
18012
18013 if $test X"$quadtype" != X; then
18014
18015 echo "Checking how to print 64-bit integers..." >&4
18016
18017 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18018         $cat >try.c <<'EOCP'
18019 #include <sys/types.h>
18020 #include <stdio.h>
18021 int main() {
18022   int q = 12345678901;
18023   printf("%ld\n", q);
18024 }
18025 EOCP
18026         set try
18027         if eval $compile; then
18028                 yyy=`$run ./try`
18029                 case "$yyy" in
18030                 12345678901)
18031                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18032                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18033                         echo "We will use %d."
18034                         ;;
18035                 esac
18036         fi
18037 fi
18038
18039 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18040         $cat >try.c <<'EOCP'
18041 #include <sys/types.h>
18042 #include <stdio.h>
18043 int main() {
18044   long q = 12345678901;
18045   printf("%ld\n", q);
18046 }
18047 EOCP
18048         set try
18049         if eval $compile; then
18050                 yyy=`$run ./try`
18051                 case "$yyy" in
18052                 12345678901)
18053                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18054                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18055                         echo "We will use %ld."
18056                         ;;
18057                 esac
18058         fi
18059 fi
18060
18061 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18062         $cat >try.c <<'EOCP'
18063 #include <sys/types.h>
18064 #include <inttypes.h>
18065 #include <stdio.h>
18066 int main() {
18067   int64_t q = 12345678901;
18068   printf("%" PRId64 "\n", q);
18069 }
18070 EOCP
18071         set try
18072         if eval $compile; then
18073                 yyy=`$run ./try`
18074                 case "$yyy" in
18075                 12345678901)
18076                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18077                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18078                         echo "We will use the C9X style."
18079                         ;;
18080                 esac
18081         fi
18082 fi
18083
18084 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18085         $cat >try.c <<EOCP
18086 #include <sys/types.h>
18087 #include <stdio.h>
18088 int main() {
18089   $quadtype q = 12345678901;
18090   printf("%Ld\n", q);
18091 }
18092 EOCP
18093         set try
18094         if eval $compile; then
18095                 yyy=`$run ./try`
18096                 case "$yyy" in
18097                 12345678901)
18098                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18099                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18100                         echo "We will use %Ld."
18101                         ;;
18102                 esac
18103         fi
18104 fi
18105
18106 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18107         $cat >try.c <<'EOCP'
18108 #include <sys/types.h>
18109 #include <stdio.h>
18110 int main() {
18111   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18112   printf("%lld\n", q);
18113 }
18114 EOCP
18115         set try
18116         if eval $compile; then
18117                 yyy=`$run ./try`
18118                 case "$yyy" in
18119                 12345678901)
18120                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18121                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18122                         echo "We will use the %lld style."
18123                         ;;
18124                 esac
18125         fi
18126 fi
18127
18128 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18129         $cat >try.c <<EOCP
18130 #include <sys/types.h>
18131 #include <stdio.h>
18132 int main() {
18133   $quadtype q = 12345678901;
18134   printf("%qd\n", q);
18135 }
18136 EOCP
18137         set try
18138         if eval $compile; then
18139                 yyy=`$run ./try`
18140                 case "$yyy" in
18141                 12345678901)
18142                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18143                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18144                         echo "We will use %qd."
18145                         ;;
18146                 esac
18147         fi
18148 fi
18149
18150 if $test X"$sPRId64" = X; then
18151         echo "Cannot figure out how to print 64-bit integers." >&4
18152 fi
18153
18154 $rm -f try try.*
18155
18156 fi
18157
18158 case "$sPRId64" in
18159 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18160         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18161         ;;
18162 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18163         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18164         ;;
18165 esac
18166
18167
18168 echo " "
18169 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18170
18171 if $test X"$ivsize" = X8; then
18172         ivdformat="$sPRId64"
18173         uvuformat="$sPRIu64"
18174         uvoformat="$sPRIo64"
18175         uvxformat="$sPRIx64"
18176         uvXUformat="$sPRIXU64"
18177 else
18178         if $test X"$ivsize" = X"$longsize"; then
18179                 ivdformat='"ld"'
18180                 uvuformat='"lu"'
18181                 uvoformat='"lo"'
18182                 uvxformat='"lx"'
18183                 uvXUformat='"lX"'
18184         else
18185                 if $test X"$ivsize" = X"$intsize"; then
18186                         ivdformat='"d"'
18187                         uvuformat='"u"'
18188                         uvoformat='"o"'
18189                         uvxformat='"x"'
18190                         uvXUformat='"X"'
18191                 else
18192                         : far out
18193                         if $test X"$ivsize" = X"$shortsize"; then
18194                                 ivdformat='"hd"'
18195                                 uvuformat='"hu"'
18196                                 uvoformat='"ho"'
18197                                 uvxformat='"hx"'
18198                                 uvXUformat='"hX"'
18199                         fi
18200                 fi
18201         fi
18202 fi
18203
18204 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18205         nveformat="$sPRIeldbl"
18206         nvfformat="$sPRIfldbl"
18207         nvgformat="$sPRIgldbl"
18208         nvEUformat="$sPRIEUldbl"
18209         nvFUformat="$sPRIFUldbl"
18210         nvGUformat="$sPRIGUldbl"
18211 else
18212         nveformat='"e"'
18213         nvfformat='"f"'
18214         nvgformat='"g"'
18215         nvEUformat='"E"'
18216         nvFUformat='"F"'
18217         nvGUformat='"G"'
18218 fi
18219
18220 case "$ivdformat" in
18221 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18222     exit 1
18223     ;;
18224 esac
18225
18226
18227 echo " "
18228 $echo "Checking the format string to be used for gids..." >&4
18229
18230 case "$gidsign" in
18231 -1)     if $test X"$gidsize" = X"$ivsize"; then
18232                 gidformat="$ivdformat"
18233         else
18234                 if $test X"$gidsize" = X"$longsize"; then
18235                         gidformat='"ld"'
18236                 else
18237                         if $test X"$gidsize" = X"$intsize"; then
18238                                 gidformat='"d"'
18239                         else
18240                                 if $test X"$gidsize" = X"$shortsize"; then
18241                                         gidformat='"hd"'
18242                                 fi
18243                         fi
18244                 fi
18245         fi
18246         ;;
18247 *)      if $test X"$gidsize" = X"$uvsize"; then
18248                 gidformat="$uvuformat"
18249         else
18250                 if $test X"$gidsize" = X"$longsize"; then
18251                         gidformat='"lu"'
18252                 else
18253                         if $test X"$gidsize" = X"$intsize"; then
18254                                 gidformat='"u"'
18255                         else
18256                                 if $test X"$gidsize" = X"$shortsize"; then
18257                                         gidformat='"hu"'
18258                                 fi
18259                         fi
18260                 fi
18261         fi
18262         ;;
18263 esac
18264
18265 : see if getgroups exists
18266 set getgroups d_getgrps
18267 eval $inlibc
18268
18269 : see if setgroups exists
18270 set setgroups d_setgrps
18271 eval $inlibc
18272
18273
18274 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18275 echo " "
18276 case "$d_getgrps$d_setgrps" in
18277 *define*)
18278         case "$groupstype" in
18279         '') dflt="$gidtype" ;;
18280         *)  dflt="$groupstype" ;;
18281         esac
18282         $cat <<EOM
18283 What type of pointer is the second argument to getgroups() and setgroups()?
18284 Usually this is the same as group ids, $gidtype, but not always.
18285
18286 EOM
18287         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18288         . ./myread
18289         groupstype="$ans"
18290         ;;
18291 *)  groupstype="$gidtype";;
18292 esac
18293
18294 echo " "
18295 echo "Checking if your $make program sets \$(MAKE)..." >&4
18296 case "$make_set_make" in
18297 '')
18298         $sed 's/^X //' > testmake.mak << 'EOF'
18299 Xall:
18300 X       @echo 'maketemp="$(MAKE)"'
18301 EOF
18302         case "`$make -f testmake.mak 2>/dev/null`" in
18303         *maketemp=*) make_set_make='#' ;;
18304         *)      make_set_make="MAKE=$make" ;;
18305         esac
18306         $rm -f testmake.mak
18307         ;;
18308 esac
18309 case "$make_set_make" in
18310 '#') echo "Yup, it does.";;
18311 *) echo "Nope, it doesn't.";;
18312 esac
18313
18314 : see what type is used for mode_t
18315 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18316 set mode_t modetype int stdio.h sys/types.h
18317 eval $typedef_ask
18318
18319 : see if stdarg is available
18320 echo " "
18321 if $test `./findhdr stdarg.h`; then
18322         echo "<stdarg.h> found." >&4
18323         valstd="$define"
18324 else
18325         echo "<stdarg.h> NOT found." >&4
18326         valstd="$undef"
18327 fi
18328
18329 : see if varags is available
18330 echo " "
18331 if $test `./findhdr varargs.h`; then
18332         echo "<varargs.h> found." >&4
18333 else
18334         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18335 fi
18336
18337 : set up the varargs testing programs
18338 $cat > varargs.c <<EOP
18339 #ifdef I_STDARG
18340 #include <stdarg.h>
18341 #endif
18342 #ifdef I_VARARGS
18343 #include <varargs.h>
18344 #endif
18345
18346 #ifdef I_STDARG
18347 int f(char *p, ...)
18348 #else
18349 int f(va_alist)
18350 va_dcl
18351 #endif
18352 {
18353         va_list ap;
18354 #ifndef I_STDARG
18355         char *p;
18356 #endif
18357 #ifdef I_STDARG
18358         va_start(ap,p);
18359 #else
18360         va_start(ap);
18361         p = va_arg(ap, char *);
18362 #endif
18363         va_end(ap);
18364 }
18365 EOP
18366 $cat > varargs <<EOP
18367 $startsh
18368 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18369         echo "true"
18370 else
18371         echo "false"
18372 fi
18373 $rm -f varargs$_o
18374 EOP
18375 chmod +x varargs
18376
18377 : now check which varargs header should be included
18378 echo " "
18379 i_varhdr=''
18380 case "$valstd" in
18381 "$define")
18382         if `./varargs I_STDARG`; then
18383                 val='stdarg.h'
18384         elif `./varargs I_VARARGS`; then
18385                 val='varargs.h'
18386         fi
18387         ;;
18388 *)
18389         if `./varargs I_VARARGS`; then
18390                 val='varargs.h'
18391         fi
18392         ;;
18393 esac
18394 case "$val" in
18395 '')
18396 echo "I could not find the definition for va_dcl... You have problems..." >&4
18397         val="$undef"; set i_stdarg; eval $setvar
18398         val="$undef"; set i_varargs; eval $setvar
18399         ;;
18400 *) 
18401         set i_varhdr
18402         eval $setvar
18403         case "$i_varhdr" in
18404         stdarg.h)
18405                 val="$define"; set i_stdarg; eval $setvar
18406                 val="$undef"; set i_varargs; eval $setvar
18407                 ;;
18408         varargs.h)
18409                 val="$undef"; set i_stdarg; eval $setvar
18410                 val="$define"; set i_varargs; eval $setvar
18411                 ;;
18412         esac
18413         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18414 esac
18415 $rm -f varargs*
18416
18417 : see if we need va_copy
18418 echo " "
18419 case "$i_stdarg" in
18420 "$define")
18421         $cat >try.c <<EOCP
18422 #include <stdarg.h>
18423 #include <stdio.h>
18424 #$i_stdlib I_STDLIB
18425 #ifdef I_STDLIB
18426 #include <stdlib.h>
18427 #endif
18428 #include <signal.h>
18429
18430 int
18431 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18432 {
18433   return vfprintf(f, fmt, *valp);
18434 }
18435  
18436 int    
18437 myvfprintf(FILE *f, const  char *fmt, va_list val)
18438 {
18439   return ivfprintf(f, fmt, &val);
18440 }
18441       
18442 int
18443 myprintf(char *fmt, ...) 
18444 {
18445   va_list val;
18446   va_start(val, fmt);
18447   return myvfprintf(stdout, fmt, val); 
18448 }         
18449
18450 int
18451 main(int ac, char **av)
18452 {
18453   signal(SIGSEGV, exit);
18454
18455   myprintf("%s%cs all right, then\n", "that", '\'');                            
18456   exit(0);      
18457 }
18458 EOCP
18459         set try
18460         if eval $compile && $run ./try 2>&1 >/dev/null; then
18461                 case "`$run ./try`" in
18462                 "that's all right, then")
18463                         okay=yes
18464                         ;;
18465                 esac
18466         fi
18467         case "$okay" in
18468         yes)    echo "It seems that you don't need va_copy()." >&4
18469                 need_va_copy="$undef"
18470                 ;;
18471         *)      echo "It seems that va_copy() or similar will be needed." >&4
18472                 need_va_copy="$define"
18473                 ;;
18474         esac
18475         $rm -f try.* core core.* *.core *.core.*
18476         ;;
18477 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18478         ;;
18479 esac
18480
18481 : see what type is used for size_t
18482 rp="What is the type used for the length parameter for string functions?"
18483 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18484 eval $typedef_ask
18485
18486 : check for type of arguments to gethostbyaddr. 
18487 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18488         case "$d_gethbyaddr" in
18489         $define)
18490                 $cat <<EOM
18491
18492 Checking to see what type of arguments are accepted by gethostbyaddr().
18493 EOM
18494                 hdrs="$define sys/types.h
18495                         $d_socket sys/socket.h 
18496                         $i_niin netinet/in.h 
18497                         $i_netdb netdb.h
18498                         $i_unistd unistd.h"
18499                 : The first arg can 'char *' or 'void *'
18500                 : The second arg is some of integral type
18501                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18502                         for yyy in size_t long int; do
18503                                 case "$netdb_host_type" in
18504                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18505                                         if ./protochk "$try" $hdrs; then
18506                                                 echo "Your system accepts $xxx for the first arg."
18507                                                 echo "...and $yyy for the second arg."
18508                                                 netdb_host_type="$xxx"
18509                                                 netdb_hlen_type="$yyy"
18510                                         fi
18511                                         ;;
18512                                 esac
18513                         done
18514                 done
18515                 : In case none of those worked, prompt the user.
18516                 case "$netdb_host_type" in
18517                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18518                         dflt='char *'
18519                         . ./myread
18520                         netdb_host_type=$ans
18521                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18522                         dflt="$sizetype"
18523                         . ./myread
18524                         netdb_hlen_type=$ans
18525                         ;;
18526                 esac
18527                 ;;
18528         *)      : no gethostbyaddr, so pick harmless defaults
18529                 netdb_host_type='char *'
18530                 netdb_hlen_type="$sizetype"
18531                 ;;
18532         esac
18533         # Remove the "const" if needed. -- but then we'll have a 
18534         # prototype clash!
18535         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18536 fi
18537
18538 : check for type of argument to gethostbyname. 
18539 if test "X$netdb_name_type" = X ; then
18540         case "$d_gethbyname" in
18541         $define)
18542                 $cat <<EOM
18543
18544 Checking to see what type of argument is accepted by gethostbyname().
18545 EOM
18546                 hdrs="$define sys/types.h
18547                         $d_socket sys/socket.h 
18548                         $i_niin netinet/in.h 
18549                         $i_netdb netdb.h
18550                         $i_unistd unistd.h"
18551                 for xxx in "const char *" "char *"; do
18552                         case "$netdb_name_type" in
18553                         '')     try="extern struct hostent *gethostbyname($xxx);"
18554                                 if ./protochk "$try" $hdrs; then
18555                                         echo "Your system accepts $xxx."
18556                                         netdb_name_type="$xxx"
18557                                 fi
18558                                 ;;
18559                         esac
18560                 done
18561                 : In case none of those worked, prompt the user.
18562                 case "$netdb_name_type" in
18563                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18564                         dflt='char *'
18565                         . ./myread
18566                         netdb_name_type=$ans
18567                         ;;
18568                 esac
18569                 ;;
18570         *)      : no gethostbyname, so pick harmless default
18571                 netdb_name_type='char *'
18572                 ;;
18573         esac
18574 fi
18575
18576 : check for type of 1st argument to getnetbyaddr. 
18577 if test "X$netdb_net_type" = X ; then
18578         case "$d_getnbyaddr" in
18579         $define)
18580                 $cat <<EOM
18581
18582 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18583 EOM
18584                 hdrs="$define sys/types.h
18585                         $d_socket sys/socket.h 
18586                         $i_niin netinet/in.h 
18587                         $i_netdb netdb.h
18588                         $i_unistd unistd.h"
18589                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18590                         case "$netdb_net_type" in
18591                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18592                                 if ./protochk "$try" $hdrs; then
18593                                         echo "Your system accepts $xxx."
18594                                         netdb_net_type="$xxx"
18595                                 fi
18596                                 ;;
18597                         esac
18598                 done
18599                 : In case none of those worked, prompt the user.
18600                 case "$netdb_net_type" in
18601                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18602                         dflt='long'
18603                         . ./myread
18604                         netdb_net_type=$ans
18605                         ;;
18606                 esac
18607                 ;;
18608         *)      : no getnetbyaddr, so pick harmless default
18609                 netdb_net_type='long'
18610                 ;;
18611         esac
18612 fi
18613 : locate the preferred pager for this system
18614 fn=f/
18615 case "$pager" in
18616 '')
18617         dflt=''
18618         case "$pg" in
18619         /*) dflt=$pg;;
18620         [a-zA-Z]:/*) dflt=$pg;;
18621         esac
18622         case "$more" in
18623         /*) dflt=$more;;
18624         [a-zA-Z]:/*) dflt=$more;;
18625         esac
18626         case "$less" in
18627         /*) dflt=$less;;
18628         [a-zA-Z]:/*) dflt=$less;;
18629         esac
18630         case "$dflt" in
18631         '') dflt=/usr/ucb/more;;
18632         esac
18633         ;;
18634 *)      dflt="$pager"
18635         : Instruct ./getfile to trust the hinted or previous pager value,
18636         : even if it does not begin with a slash.  For example, on os2,
18637         : pager might be cmd /c more.  See comments in UU/getfile.
18638         fn="f/($pager)"
18639         ;;
18640 esac
18641 echo " "
18642 rp='What pager is used on your system?'
18643 . ./getfile
18644 pager="$ans"
18645
18646 : see what type pids are declared as in the kernel
18647 rp="What is the type of process ids on this system?"
18648 set pid_t pidtype int stdio.h sys/types.h
18649 eval $typedef_ask
18650
18651 : Find earliest binary compatible site_perl subdirectory perl can use.
18652 xs_apiversion=$version # The current site_perl version.
18653 : Find earliest pure perl site_perl subdirectory perl can use.
18654 : The versioned directories started at 5.005.
18655 pm_apiversion='5.005'
18656
18657 : see if ar generates random libraries by itself
18658 echo " "
18659 echo "Checking how to generate random libraries on your machine..." >&4
18660 echo 'int bar1() { return bar2(); }' > bar1.c
18661 echo 'int bar2() { return 2; }' > bar2.c
18662 $cat > foo.c <<EOP
18663 #$i_stdlib I_STDLIB
18664 #ifdef I_STDLIB
18665 #include <stdlib.h>
18666 #endif
18667 int main() { printf("%d\n", bar1()); exit(0); }
18668 EOP
18669 $cc $ccflags -c bar1.c >/dev/null 2>&1
18670 $cc $ccflags -c bar2.c >/dev/null 2>&1
18671 $cc $ccflags -c foo.c >/dev/null 2>&1
18672 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18673 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18674         $run ./foobar >/dev/null 2>&1; then
18675         echo "$ar appears to generate random libraries itself."
18676         orderlib=false
18677         ranlib=":"
18678 elif $ar ts bar$_a >/dev/null 2>&1 &&
18679         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18680         $run ./foobar >/dev/null 2>&1; then
18681                 echo "a table of contents needs to be added with '$ar ts'."
18682                 orderlib=false
18683                 ranlib="$ar ts"
18684 else
18685         case "$ranlib" in
18686         :) ranlib='';;
18687         '')
18688                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18689                 $test -f $ranlib || ranlib=''
18690                 ;;
18691         esac
18692         if $test -n "$ranlib"; then
18693                 echo "your system has '$ranlib'; we'll use that."
18694                 orderlib=false
18695         else
18696                 echo "your system doesn't seem to support random libraries"
18697                 echo "so we'll use lorder and tsort to order the libraries."
18698                 orderlib=true
18699                 ranlib=":"
18700         fi
18701 fi
18702 $rm -f foo* bar* 
18703
18704 : check for type of arguments to select. 
18705 case "$selecttype" in
18706 '') case "$d_select" in
18707         $define)
18708                 echo " "
18709                 $cat <<EOM
18710 Checking to see what type of arguments are accepted by select().
18711 EOM
18712                 hdrs="$define sys/types.h
18713                         $i_systime sys/time.h 
18714                         $i_sysselct sys/select.h
18715                         $d_socket sys/socket.h"
18716                 : The first arg can be int, unsigned, or size_t
18717                 : The last arg may or may not be 'const'
18718                 val=''
18719                 : void pointer has been seen but using that
18720                 : breaks the selectminbits test
18721                 for xxx in 'fd_set *' 'int *'; do
18722                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18723                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18724                                         case "$val" in
18725                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18726                                                 if ./protochk "$try" $hdrs; then
18727                                                         echo "Your system accepts $xxx."
18728                                                         val="$xxx"
18729                                                 fi
18730                                                 ;;
18731                                         esac
18732                                 done
18733                         done
18734                 done
18735                 case "$val" in
18736                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18737                         case "$d_fd_set" in
18738                                 $define) dflt="fd_set *" ;;
18739                                 *)              dflt="int *" ;;
18740                         esac
18741                         . ./myread
18742                         val=$ans
18743                         ;;
18744                 esac
18745                 selecttype="$val"
18746                 ;;
18747         *)      : no select, so pick a harmless default
18748                 selecttype='int *'
18749                 ;;
18750         esac
18751         ;;
18752 esac
18753
18754 : check for the select 'width'
18755 case "$selectminbits" in
18756 '') safebits=`expr $ptrsize \* 8`
18757     case "$d_select" in
18758         $define)
18759                 $cat <<EOM
18760
18761 Checking to see on how many bits at a time your select() operates...
18762 EOM
18763                 $cat >try.c <<EOCP
18764 #include <sys/types.h>
18765 #$i_time I_TIME
18766 #$i_systime I_SYS_TIME
18767 #$i_systimek I_SYS_TIME_KERNEL
18768 #ifdef I_TIME
18769 #   include <time.h>
18770 #endif
18771 #ifdef I_SYS_TIME
18772 #   ifdef I_SYS_TIME_KERNEL
18773 #       define KERNEL
18774 #   endif
18775 #   include <sys/time.h>
18776 #   ifdef I_SYS_TIME_KERNEL
18777 #       undef KERNEL
18778 #   endif
18779 #endif
18780 #$i_sysselct I_SYS_SELECT
18781 #ifdef I_SYS_SELECT
18782 #include <sys/select.h>
18783 #endif
18784 #$d_socket HAS_SOCKET
18785 #ifdef HAS_SOCKET
18786 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18787 #endif
18788 #include <stdio.h>
18789 #$i_stdlib I_STDLIB
18790 #ifdef I_STDLIB
18791 #include <stdlib.h>
18792 #endif
18793 $selecttype b;
18794 #define S sizeof(*(b))
18795 #define MINBITS 64
18796 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18797 #define NBITS  (NBYTES * 8)
18798 int main() {
18799     char *s = malloc(NBYTES);
18800     struct timeval t;
18801     int i;
18802     FILE* fp;
18803     int fd;
18804
18805     if (!s)
18806         exit(1);
18807     fclose(stdin);
18808     fp = fopen("try.c", "r");
18809     if (fp == 0)
18810       exit(2);
18811     fd = fileno(fp);
18812     if (fd < 0)
18813       exit(3);
18814     b = ($selecttype)s;
18815     for (i = 0; i < NBITS; i++)
18816         FD_SET(i, b);
18817     t.tv_sec  = 0;
18818     t.tv_usec = 0;
18819     select(fd + 1, b, 0, 0, &t);
18820     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18821     free(s);
18822     printf("%d\n", i + 1);
18823     return 0;
18824 }
18825 EOCP
18826                 set try
18827                 if eval $compile_ok; then
18828                         selectminbits=`$run ./try`
18829                         case "$selectminbits" in
18830                         '')     cat >&4 <<EOM
18831 Cannot figure out on how many bits at a time your select() operates.
18832 I'll play safe and guess it is $safebits bits.
18833 EOM
18834                                 selectminbits=$safebits
18835                                 bits="$safebits bits"
18836                                 ;;
18837                         1)      bits="1 bit" ;;
18838                         *)      bits="$selectminbits bits" ;;
18839                         esac
18840                         echo "Your select() operates on $bits at a time." >&4
18841                 else
18842                         rp='What is the minimum number of bits your select() operates on?'
18843                         case "$byteorder" in
18844                         12345678)       dflt=64 ;;
18845                         1234)           dflt=32 ;;
18846                         *)              dflt=1  ;;
18847                         esac
18848                         . ./myread
18849                         val=$ans
18850                         selectminbits="$val"
18851                 fi
18852                 $rm -f try.* try
18853                 ;;
18854         *)      : no select, so pick a harmless default
18855                 selectminbits=$safebits
18856                 ;;
18857         esac
18858         ;;
18859 esac
18860
18861 : Trace out the files included by signal.h, then look for SIGxxx names.
18862 : Remove SIGARRAYSIZE used by HPUX.
18863 : Remove SIGSTKSIZE used by Linux.
18864 : Remove SIGSTKSZ used by Posix.
18865 : Remove SIGTYP void lines used by OS2.
18866 : Some cpps, like os390, dont give the file name anywhere
18867 if [ "X$fieldn" = X ]; then
18868         : Just make some guesses.  We check them later.
18869         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18870 else
18871         xxx=`echo '#include <signal.h>' |
18872         $cppstdin $cppminus $cppflags 2>/dev/null |
18873         $grep '^[       ]*#.*include' | 
18874         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18875 fi
18876 : Check this list of files to be sure we have parsed the cpp output ok.
18877 : This will also avoid potentially non-existent files, such 
18878 : as ../foo/bar.h
18879 xxxfiles=''
18880 for xx in $xxx /dev/null ; do
18881         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18882 done
18883 : If we have found no files, at least try signal.h
18884 case "$xxxfiles" in
18885 '')     xxxfiles=`./findhdr signal.h` ;;
18886 esac
18887 xxx=`awk '
18888 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18889         print substr($2, 4, 20)
18890 }
18891 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18892         print substr($3, 4, 20)
18893 }' $xxxfiles`
18894 : Append some common names just in case the awk scan failed.
18895 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18896 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18897 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18898 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18899 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18900
18901 : generate a few handy files for later
18902 $cat > signal.c <<EOCP
18903 #include <sys/types.h>
18904 #include <signal.h>
18905 #$i_stdlib I_STDLIB
18906 #ifdef I_STDLIB
18907 #include <stdlib.h>
18908 #endif
18909 #include <stdio.h>
18910 int main() {
18911
18912 /* Strange style to avoid deeply-nested #if/#else/#endif */
18913 #ifndef NSIG
18914 #  ifdef _NSIG
18915 #    define NSIG (_NSIG)
18916 #  endif
18917 #endif
18918
18919 #ifndef NSIG
18920 #  ifdef SIGMAX
18921 #    define NSIG (SIGMAX+1)
18922 #  endif
18923 #endif
18924
18925 #ifndef NSIG
18926 #  ifdef SIG_MAX
18927 #    define NSIG (SIG_MAX+1)
18928 #  endif
18929 #endif
18930
18931 #ifndef NSIG
18932 #  ifdef MAXSIG
18933 #    define NSIG (MAXSIG+1)
18934 #  endif
18935 #endif
18936
18937 #ifndef NSIG
18938 #  ifdef MAX_SIG
18939 #    define NSIG (MAX_SIG+1)
18940 #  endif
18941 #endif
18942
18943 #ifndef NSIG
18944 #  ifdef SIGARRAYSIZE
18945 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18946 #  endif
18947 #endif
18948
18949 #ifndef NSIG
18950 #  ifdef _sys_nsig
18951 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18952 #  endif
18953 #endif
18954
18955 /* Default to some arbitrary number that's big enough to get most
18956    of the common signals.
18957 */
18958 #ifndef NSIG
18959 #    define NSIG 50
18960 #endif
18961
18962 printf("NSIG %d\n", NSIG);
18963
18964 #ifndef JUST_NSIG
18965
18966 EOCP
18967
18968 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18969 {
18970         printf "#ifdef SIG"; printf $1; printf "\n"
18971         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18972         printf $1; printf ");\n"
18973         printf "#endif\n"
18974 }
18975 END {
18976         printf "#endif /* JUST_NSIG */\n";
18977         printf "exit(0);\n}\n";
18978 }
18979 ' >>signal.c
18980 $cat >signal.awk <<'EOP'
18981 BEGIN { ndups = 0 }
18982 $1 ~ /^NSIG$/ { nsig = $2 }
18983 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18984     if ($2 > maxsig) { maxsig = $2 }
18985     if (sig_name[$2]) {
18986         dup_name[ndups] = $1
18987         dup_num[ndups] = $2
18988         ndups++ 
18989     }
18990     else {
18991         sig_name[$2] = $1
18992         sig_num[$2] = $2
18993     }
18994 }
18995 END { 
18996     if (nsig == 0) {
18997         nsig = maxsig + 1
18998     }
18999     printf("NSIG %d\n", nsig);
19000     for (n = 1; n < nsig; n++) {
19001         if (sig_name[n]) {
19002             printf("%s %d\n", sig_name[n], sig_num[n])
19003         }
19004         else {
19005             printf("NUM%d %d\n", n, n) 
19006         }
19007     }
19008     for (n = 0; n < ndups; n++) {
19009         printf("%s %d\n", dup_name[n], dup_num[n])
19010     }
19011 }
19012 EOP
19013 $cat >signal_cmd <<EOS
19014 $startsh
19015 if $test -s signal.lst; then
19016     echo "Using your existing signal.lst file"
19017         exit 0
19018 fi
19019 xxx="$xxx"
19020 EOS
19021 $cat >>signal_cmd <<'EOS'
19022
19023 set signal
19024 if eval $compile_ok; then
19025         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19026 else
19027         echo "(I can't seem be able to compile the whole test program)" >&4
19028         echo "(I'll try it in little pieces.)" >&4
19029         set signal -DJUST_NSIG
19030         if eval $compile_ok; then
19031                 $run ./signal$_exe > signal.nsg
19032                 $cat signal.nsg
19033         else
19034                 echo "I can't seem to figure out how many signals you have." >&4
19035                 echo "Guessing 50." >&4
19036                 echo 'NSIG 50' > signal.nsg
19037         fi
19038         : Now look at all the signal names, one at a time.
19039         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19040                 $cat > signal.c <<EOCP
19041 #include <sys/types.h>
19042 #include <signal.h>
19043 #include <stdio.h>
19044 int main() {
19045 printf("$xx %d\n", SIG${xx});
19046 return 0;
19047 }
19048 EOCP
19049                 set signal
19050                 if eval $compile; then
19051                         echo "SIG${xx} found."
19052                         $run ./signal$_exe  >> signal.ls1
19053                 else
19054                         echo "SIG${xx} NOT found."
19055                 fi
19056         done
19057         if $test -s signal.ls1; then
19058                 $cat signal.nsg signal.ls1 |
19059                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19060         fi
19061
19062 fi
19063 if $test -s signal.lst; then
19064         :
19065 else
19066         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19067         echo 'kill -l' >signal
19068         set X `csh -f <signal`
19069         $rm -f signal
19070         shift
19071         case $# in
19072         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19073         esac
19074         echo $@ | $tr ' ' $trnl | \
19075             $awk '{ printf "%s %d\n", $1, ++s; }
19076                   END { printf "NSIG %d\n", ++s }' >signal.lst
19077 fi
19078 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19079 EOS
19080 chmod a+x signal_cmd
19081 $eunicefix signal_cmd
19082
19083 : generate list of signal names
19084 echo " "
19085 case "$sig_name_init" in
19086 '') doinit=yes ;;
19087 *)  case "$sig_num_init" in
19088     ''|*,*) doinit=yes ;;
19089     esac ;;
19090 esac
19091 case "$doinit" in
19092 yes)
19093         echo "Generating a list of signal names and numbers..." >&4
19094         . ./signal_cmd
19095         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19096         sig_name=`$awk 'BEGIN { printf "ZERO " }
19097                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19098         sig_num=`$awk  'BEGIN { printf "0 " }
19099                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19100         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19101                              !/^NSIG/   { printf "\"%s\", ", $1 }
19102                              END        { printf "0\n" }' signal.lst`
19103         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19104                              !/^NSIG/   { printf "%d, ", $2}
19105                              END        { printf "0\n"}' signal.lst`
19106         ;;
19107 esac
19108 echo "The following $sig_count signals are available:"
19109 echo " "
19110 echo $sig_name | $awk \
19111 'BEGIN { linelen = 0 }
19112 {
19113         for (i = 1; i <= NF; i++) {
19114                 name = "SIG" $i " "
19115                 linelen = linelen + length(name)
19116                 if (linelen > 70) {
19117                         printf "\n"
19118                         linelen = length(name)
19119                 }
19120                 printf "%s", name
19121         }
19122         printf "\n"
19123 }'
19124 sig_size=`echo $sig_name | awk '{print NF}'`
19125 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19126
19127 echo " "
19128 case "$sizetype" in
19129 *_t) zzz="$sizetype"    ;;
19130 *)   zzz="filesize"     ;;
19131 esac
19132 echo "Checking the size of $zzz..." >&4 
19133 cat > try.c <<EOCP
19134 #include <sys/types.h>
19135 #include <stdio.h>
19136 #$i_stdlib I_STDLIB
19137 #ifdef I_STDLIB
19138 #include <stdlib.h>
19139 #endif
19140 int main() {
19141     printf("%d\n", (int)sizeof($sizetype));
19142     exit(0);
19143 }
19144 EOCP
19145 set try
19146 if eval $compile_ok; then
19147         yyy=`$run ./try`
19148         case "$yyy" in
19149         '')     sizesize=4
19150                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19151                 ;;
19152         *)      sizesize=$yyy
19153                 echo "Your $zzz size is $sizesize bytes."
19154                 ;;
19155         esac
19156 else
19157         sizesize=4
19158         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19159 fi
19160
19161
19162 : check for socklen_t
19163 echo " "
19164 echo "Checking to see if you have socklen_t..." >&4
19165 $cat >try.c <<EOCP
19166 #include <sys/types.h>
19167 #$d_socket HAS_SOCKET
19168 #ifdef HAS_SOCKET
19169 #include <sys/socket.h>
19170 #endif
19171 int main() { socklen_t x = 16; }
19172 EOCP
19173 set try
19174 if eval $compile; then
19175         val="$define"
19176         echo "You have socklen_t."
19177 else
19178         val="$undef"
19179         echo "You do not have socklen_t."
19180         case "$sizetype" in
19181         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19182         esac
19183 fi
19184 $rm -f try try.*
19185 set d_socklen_t
19186 eval $setvar
19187
19188 : see if this is a socks.h system
19189 set socks.h i_socks
19190 eval $inhdr
19191
19192 : check for type of the size argument to socket calls
19193 case "$d_socket" in
19194 "$define")
19195         $cat <<EOM
19196
19197 Checking to see what type is the last argument of accept().
19198 EOM
19199         yyy=''
19200         case "$d_socklen_t" in
19201         "$define") yyy="$yyy socklen_t"
19202         esac
19203         yyy="$yyy $sizetype int long unsigned"
19204         for xxx in $yyy; do
19205                 case "$socksizetype" in
19206                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19207                         case "$usesocks" in
19208                         "$define")
19209                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19210                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19211                                         socksizetype="$xxx"
19212                                 fi
19213                                 ;;
19214                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19215                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19216                                         socksizetype="$xxx"
19217                                 fi
19218                                 ;;
19219                         esac
19220                         ;;
19221                 esac
19222         done
19223 : In case none of those worked, prompt the user.
19224         case "$socksizetype" in
19225         '')     rp='What is the type for socket address structure sizes?'
19226                 dflt='int'
19227                 . ./myread
19228                 socksizetype=$ans
19229                 ;;
19230         esac
19231         ;;
19232 *)      : no sockets, so pick relatively harmless default
19233         socksizetype='int'
19234         ;;
19235 esac
19236
19237 : see what type is used for signed size_t
19238 set ssize_t ssizetype int stdio.h sys/types.h
19239 eval $typedef
19240 dflt="$ssizetype"
19241 $cat > try.c <<EOM
19242 #include <stdio.h>
19243 #$i_stdlib I_STDLIB
19244 #ifdef I_STDLIB
19245 #include <stdlib.h>
19246 #endif
19247 #include <sys/types.h>
19248 #define Size_t $sizetype
19249 #define SSize_t $dflt
19250 int main()
19251 {
19252         if (sizeof(Size_t) == sizeof(SSize_t))
19253                 printf("$dflt\n");
19254         else if (sizeof(Size_t) == sizeof(int))
19255                 printf("int\n");
19256         else 
19257                 printf("long\n");
19258         exit(0);
19259 }
19260 EOM
19261 echo " "
19262 set try
19263 if eval $compile_ok && $run ./try > /dev/null; then
19264         ssizetype=`$run ./try`
19265         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19266 else
19267         $cat >&4 <<EOM
19268 Help! I can't compile and run the ssize_t test program: please enlighten me!
19269 (This is probably a misconfiguration in your system or libraries, and
19270 you really ought to fix it.  Still, I'll try anyway.)
19271
19272 I need a type that is the same size as $sizetype, but is guaranteed to
19273 be signed.  Common values are ssize_t, int and long.
19274
19275 EOM
19276         rp="What signed type is the same size as $sizetype?"
19277         . ./myread
19278         ssizetype="$ans"
19279 fi
19280 $rm -f try try.*
19281
19282 : see what type of char stdio uses.
19283 echo " "
19284 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19285 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19286         echo "Your stdio uses unsigned chars." >&4
19287         stdchar="unsigned char"
19288 else
19289         echo "Your stdio uses signed chars." >&4
19290         stdchar="char"
19291 fi
19292 $rm -f stdioh
19293
19294
19295
19296 : see what type uids are declared as in the kernel
19297 echo " "
19298 echo "Looking for the type for user ids returned by getuid()."
19299 set uid_t uidtype xxx stdio.h sys/types.h
19300 eval $typedef
19301 case "$uidtype" in
19302 xxx)
19303         xxx=`./findhdr sys/user.h`
19304         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19305         case $1 in
19306         unsigned) dflt="$1 $2" ;;
19307         *) dflt="$1" ;;
19308         esac
19309         ;;
19310 *) dflt="$uidtype";;
19311 esac
19312 case "$uidtype" in
19313 uid_t)  echo "uid_t found." ;;
19314 *)      rp="What is the type for user ids returned by getuid()?"
19315         . ./myread
19316         uidtype="$ans"
19317         ;;
19318 esac
19319
19320 echo " "
19321 case "$uidtype" in
19322 *_t) zzz="$uidtype"     ;;
19323 *)   zzz="uid"          ;;
19324 esac
19325 echo "Checking the size of $zzz..." >&4 
19326 cat > try.c <<EOCP
19327 #include <sys/types.h>
19328 #include <stdio.h>
19329 #$i_stdlib I_STDLIB
19330 #ifdef I_STDLIB
19331 #include <stdlib.h>
19332 #endif
19333 int main() {
19334     printf("%d\n", (int)sizeof($uidtype));
19335     exit(0);
19336 }
19337 EOCP
19338 set try
19339 if eval $compile_ok; then
19340         yyy=`$run ./try`
19341         case "$yyy" in
19342         '')     uidsize=4
19343                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19344                 ;;
19345         *)      uidsize=$yyy
19346                 echo "Your $zzz is $uidsize bytes long."
19347                 ;;
19348         esac
19349 else
19350         uidsize=4
19351         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19352 fi
19353
19354 echo " "
19355 case "$uidtype" in
19356 *_t) zzz="$uidtype"     ;;
19357 *)   zzz="uid"          ;;
19358 esac
19359 echo "Checking the sign of $zzz..." >&4
19360 cat > try.c <<EOCP
19361 #include <sys/types.h>
19362 #include <stdio.h>
19363 int main() {
19364         $uidtype foo = -1;
19365         if (foo < 0)
19366                 printf("-1\n");
19367         else
19368                 printf("1\n");
19369 }
19370 EOCP
19371 set try
19372 if eval $compile; then
19373         yyy=`$run ./try`
19374         case "$yyy" in
19375         '')     uidsign=1
19376                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19377                 ;;
19378         *)      uidsign=$yyy
19379                 case "$uidsign" in
19380                  1) echo "Your $zzz is unsigned." ;;
19381                 -1) echo "Your $zzz is signed."   ;;
19382                 esac
19383                 ;;
19384         esac
19385 else
19386         uidsign=1
19387         echo "(I can't compile the test program--guessing unsigned.)" >&4
19388 fi
19389
19390
19391
19392 echo " "
19393 $echo "Checking the format string to be used for uids..." >&4
19394
19395 case "$uidsign" in
19396 -1)     if $test X"$uidsize" = X"$ivsize"; then
19397                 uidformat="$ivdformat"
19398         else
19399                 if $test X"$uidsize" = X"$longsize"; then
19400                         uidformat='"ld"'
19401                 else
19402                         if $test X"$uidsize" = X"$intsize"; then
19403                                 uidformat='"d"'
19404                         else
19405                                 if $test X"$uidsize" = X"$shortsize"; then
19406                                         uidformat='"hd"'
19407                                 fi
19408                         fi
19409                 fi
19410         fi
19411         ;;
19412 *)      if $test X"$uidsize" = X"$uvsize"; then
19413                 uidformat="$uvuformat"
19414         else
19415                 if $test X"$uidsize" = X"$longsize"; then
19416                         uidformat='"lu"'
19417                 else
19418                         if $test X"$uidsize" = X"$intsize"; then
19419                                 uidformat='"u"'
19420                         else
19421                                 if $test X"$uidsize" = X"$shortsize"; then
19422                                         uidformat='"hu"'
19423                                 fi
19424                         fi
19425                 fi
19426         fi
19427         ;;
19428 esac
19429
19430 : determine compiler compiler
19431 case "$yacc" in
19432 '')
19433         dflt=yacc;;
19434 *)
19435         dflt="$yacc";;
19436 esac
19437 echo " "
19438 comp='yacc'
19439 if $test -f "$byacc$_exe"; then
19440         dflt="$byacc"
19441         comp="byacc or $comp"
19442 fi
19443 if $test -f "$bison$_exe"; then
19444         comp="$comp or bison -y"
19445 fi
19446 rp="Which compiler compiler ($comp) shall I use?"
19447 . ./myread
19448 yacc="$ans"
19449 case "$yacc" in
19450 *bis*)
19451         case "$yacc" in
19452         *-y*) ;;
19453         *)
19454                 yacc="$yacc -y"
19455                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19456                 ;;
19457         esac
19458         ;;
19459 esac
19460
19461 : see if this is a fp.h system
19462 set fp.h i_fp
19463 eval $inhdr
19464
19465 : see if this is a fp_class.h system
19466 set fp_class.h i_fp_class
19467 eval $inhdr
19468
19469 : see if this is a ieeefp.h system
19470 case "$i_ieeefp" in
19471 '' ) set ieeefp.h i_ieeefp
19472      eval $inhdr
19473      ;;
19474 esac
19475
19476 : see if this is a libutil.h system
19477 set libutil.h i_libutil
19478 eval $inhdr
19479
19480 : see if mach cthreads are available
19481 if test "X$usethreads" = "X$define"; then
19482         set mach/cthreads.h i_machcthr
19483         eval $inhdr
19484 else
19485         i_machcthr="$undef"
19486 fi
19487
19488
19489
19490 : see if this is a math.h system
19491 set math.h i_math
19492 eval $inhdr
19493
19494 : see if this is a mntent.h system
19495 set mntent.h i_mntent
19496 eval $inhdr
19497
19498 : see if ndbm.h is available
19499 set ndbm.h t_ndbm
19500 eval $inhdr
19501
19502 case "$t_ndbm" in
19503 $undef)
19504     # Some Linux distributions such as RedHat 7.1 put the
19505     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19506     if $test -f /usr/include/gdbm/ndbm.h; then
19507         echo '<gdbm/ndbm.h> found.'
19508         ccflags="$ccflags -I/usr/include/gdbm"
19509         cppflags="$cppflags -I/usr/include/gdbm"
19510         t_ndbm=$define
19511     fi
19512     ;;
19513 esac
19514
19515 case "$t_ndbm" in
19516 $define)
19517         : see if dbm_open exists
19518         set dbm_open d_dbm_open
19519         eval $inlibc
19520         case "$d_dbm_open" in
19521         $undef)
19522                 t_ndbm="$undef"
19523                 echo "We won't be including <ndbm.h>"
19524                 ;;
19525         esac
19526         ;;
19527 esac
19528 val="$t_ndbm"
19529 set i_ndbm
19530 eval $setvar
19531
19532 : see if net/errno.h is available
19533 val=''
19534 set net/errno.h val
19535 eval $inhdr
19536
19537 : Unfortunately, it causes problems on some systems.  Arrgh.
19538 case "$val" in
19539 $define)
19540         cat > try.c <<'EOM'
19541 #include <stdio.h>
19542 #include <errno.h>
19543 #include <net/errno.h>
19544 int func()
19545 {
19546         return ENOTSOCK;
19547 }
19548 EOM
19549         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19550                 echo "We'll be including <net/errno.h>." >&4
19551         else
19552                 echo "We won't be including <net/errno.h>." >&4
19553                 val="$undef"
19554         fi
19555         $rm -f try.* try
19556         ;;
19557 esac
19558 set i_neterrno
19559 eval $setvar
19560
19561 : see if netinet/tcp.h is available
19562 set netinet/tcp.h i_netinettcp
19563 eval $inhdr
19564
19565 : see if this is a poll.h system
19566 set poll.h i_poll
19567 eval $inhdr
19568
19569 : see if this is a prot.h system
19570 set prot.h i_prot
19571 eval $inhdr
19572
19573 echo " "
19574 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19575 $cat <<'EOSH' > Cppsym.know
19576 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19577 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19578 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19579 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19580 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19581 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19582 bull c cadmus clipper CMU COFF COMPILER_VERSION
19583 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19584 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19585 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19586 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19587 GLIBC GLIBC_MINOR
19588 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19589 H3050R H3050RX hbullx20 hcx host_mips
19590 hp200 hp300 hp700 HP700 hp800 hp9000
19591 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19592 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19593 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19594 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19595 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19596 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19597 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19598 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19599 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19600 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19601 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19602 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19603 MATH_HAS_NO_SIDE_EFFECTS
19604 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19605 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19606 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19607 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19608 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19609 NetBSD news1500 news1700 news1800 news1900 news3700
19610 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19611 ns32016 ns32332 ns32k nsc32000
19612 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19613 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19614 pc532 pdp11 PGC PIC plexus PORTAR posix
19615 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19616 POSIX_C_SOURCE POSIX_SOURCE POWER
19617 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19618 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19619 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19620 sony sony_news sonyrisc sparc sparclite spectrum
19621 stardent stdc STDC_EXT stratos sun sun3 sun386
19622 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19623 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19624 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19625 sysV68 sysV88 Tek4132 Tek4300 titan
19626 TM3200 TM5400 TM5600
19627 tower tower32 tower32_200 tower32_600 tower32_700
19628 tower32_800 tower32_850 tss
19629 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19630 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19631 unix UNIX95 UNIX99 unixpc unos
19632 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19633 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19634 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19635 USGr4 USGr4_2
19636 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19637 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19638 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19639 z8000
19640 EOSH
19641 # Maybe put other stuff here too.
19642 cat <<EOSH >>Cppsym.know
19643 $osname
19644 EOSH
19645 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19646 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19647 $cat Cppsym.know > Cppsym.c
19648 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19649 $rm -f Cppsym.a Cppsym.b Cppsym.c
19650 cat <<EOSH > Cppsym
19651 $startsh
19652 if $test \$# -gt 0; then
19653     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19654     if $test -s Cppsym.got; then
19655         $rm -f Cppsym.got
19656         exit 0
19657     fi
19658     $rm -f Cppsym.got
19659     exit 1
19660 else
19661     $tr " " "$trnl" | ./Cppsym.try
19662     exit 0
19663 fi
19664 EOSH
19665 chmod +x Cppsym
19666 $eunicefix Cppsym
19667 cat <<EOSH > Cppsym.try
19668 $startsh
19669 cat <<'EOCP' > try.c
19670 #include <stdio.h>
19671 int main() {
19672 EOCP
19673 $awk \\
19674 EOSH
19675 cat <<'EOSH' >> Cppsym.try
19676 'length($1) > 0 {
19677     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
19678     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
19679     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
19680     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
19681 }'       >> try.c
19682 echo 'return 0;}' >> try.c
19683 EOSH
19684 cat <<EOSH >> Cppsym.try
19685 ccflags="$ccflags"
19686 case "$osname-$gccversion" in
19687 irix-) ccflags="\$ccflags -woff 1178" ;;
19688 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19689 esac
19690 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19691 EOSH
19692 chmod +x Cppsym.try
19693 $eunicefix Cppsym.try
19694 ./Cppsym < Cppsym.know > Cppsym.true
19695 : now check the C compiler for additional symbols
19696 postprocess_cc_v=''
19697 case "$osname" in
19698 aix) postprocess_cc_v="|$tr , ' '" ;;
19699 esac
19700 $cat >ccsym <<EOS
19701 $startsh
19702 $cat >tmp.c <<EOF
19703 extern int foo;
19704 EOF
19705 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19706 do
19707         case "\$i" in
19708         -D*) echo "\$i" | $sed 's/^-D//';;
19709         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19710         esac
19711 done
19712 $rm -f try.c
19713 EOS
19714 postprocess_cc_v=''
19715 chmod +x ccsym
19716 $eunicefix ccsym
19717 ./ccsym > ccsym1.raw
19718 if $test -s ccsym1.raw; then
19719        $sort ccsym1.raw | $uniq >ccsym.raw
19720 else
19721        mv ccsym1.raw ccsym.raw
19722 fi
19723
19724 $awk '/\=/ { print $0; next }
19725         { print $0"=1" }' ccsym.raw >ccsym.list
19726 $awk '/\=/ { print $0; next }
19727         { print $0"=1" }' Cppsym.true >ccsym.true
19728 $comm -13 ccsym.true ccsym.list >ccsym.own
19729 $comm -12 ccsym.true ccsym.list >ccsym.com
19730 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19731 also=''
19732 if $test -z ccsym.raw; then
19733         echo "Your C compiler doesn't seem to define any symbols!" >&4
19734         echo " "
19735         echo "However, your C preprocessor defines the following symbols:"
19736         $cat Cppsym.true
19737         ccsymbols=''
19738         cppsymbols=`$cat Cppsym.true`
19739         cppsymbols=`echo $cppsymbols`
19740         cppccsymbols="$cppsymbols"
19741 else
19742         if $test -s ccsym.com; then
19743                 echo "Your C compiler and pre-processor define these symbols:"
19744                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19745                 also='also '
19746                 symbols='ones'
19747                 cppccsymbols=`$cat ccsym.com`
19748                 cppccsymbols=`echo $cppccsymbols`
19749                 $test "$silent" || sleep 1
19750         fi
19751         if $test -s ccsym.cpp; then
19752                 $test "$also" && echo " "
19753                 echo "Your C pre-processor ${also}defines the following symbols:"
19754                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19755                 also='further '
19756                 cppsymbols=`$cat ccsym.cpp`
19757                 cppsymbols=`echo $cppsymbols`
19758                 $test "$silent" || sleep 1
19759         fi
19760         if $test -s ccsym.own; then
19761                 $test "$also" && echo " "
19762                 echo "Your C compiler ${also}defines the following cpp symbols:"
19763                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19764                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19765                 ccsymbols=`$cat ccsym.own`
19766                 ccsymbols=`echo $ccsymbols`
19767                 $test "$silent" || sleep 1
19768         fi
19769 fi
19770
19771 : see if this is a termio system
19772 val="$undef"
19773 val2="$undef"
19774 val3="$undef"
19775 if $test `./findhdr termios.h`; then
19776         set tcsetattr i_termios
19777         eval $inlibc
19778         val3="$i_termios"
19779 fi
19780 echo " "
19781 case "$val3" in
19782 "$define") echo "You have POSIX termios.h... good!" >&4;;
19783 *) if ./Cppsym pyr; then
19784                 case "`/bin/universe`" in
19785                 ucb) if $test `./findhdr sgtty.h`; then
19786                                 val2="$define"
19787                                 echo "<sgtty.h> found." >&4
19788                         else
19789                                 echo "System is pyramid with BSD universe."
19790                                 echo "<sgtty.h> not found--you could have problems." >&4
19791                         fi;;
19792                 *) if $test `./findhdr termio.h`; then
19793                                 val="$define"
19794                                 echo "<termio.h> found." >&4
19795                         else
19796                                 echo "System is pyramid with USG universe."
19797                                 echo "<termio.h> not found--you could have problems." >&4
19798                         fi;;
19799                 esac
19800         elif ./usg; then
19801                 if $test `./findhdr termio.h`; then
19802                         echo "<termio.h> found." >&4
19803                         val="$define"
19804                 elif $test `./findhdr sgtty.h`; then
19805                         echo "<sgtty.h> found." >&4
19806                         val2="$define"
19807                 else
19808 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19809                 fi
19810         else
19811                 if $test `./findhdr sgtty.h`; then
19812                         echo "<sgtty.h> found." >&4
19813                         val2="$define"
19814                 elif $test `./findhdr termio.h`; then
19815                         echo "<termio.h> found." >&4
19816                         val="$define"
19817                 else
19818 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19819                 fi
19820         fi;;
19821 esac
19822 set i_termio; eval $setvar
19823 val=$val2; set i_sgtty; eval $setvar
19824 val=$val3; set i_termios; eval $setvar
19825
19826 : see if stddef is available
19827 set stddef.h i_stddef
19828 eval $inhdr
19829
19830 : see if this is a sunmath.h system
19831 set sunmath.h i_sunmath
19832 eval $inhdr
19833
19834 : see if sys/access.h is available
19835 set sys/access.h i_sysaccess
19836 eval $inhdr
19837
19838 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19839 set sys/filio.h i_sysfilio
19840 eval $inhdr
19841 echo " "
19842 if $test `./findhdr sys/ioctl.h`; then
19843         val="$define"
19844         echo '<sys/ioctl.h> found.' >&4
19845 else
19846         val="$undef"
19847         if $test $i_sysfilio = "$define"; then
19848             echo '<sys/ioctl.h> NOT found.' >&4
19849         else
19850                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19851                 $test $i_termio = "$define" && xxx="termio.h"
19852                 $test $i_termios = "$define" && xxx="termios.h"
19853 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19854         fi
19855 fi
19856 set i_sysioctl
19857 eval $setvar
19858
19859 : see if socket ioctl defs are in sys/sockio.h
19860 echo " "
19861 xxx=`./findhdr sys/sockio.h`
19862 if $test "$xxx"; then
19863         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19864                 val="$define"
19865                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19866         else
19867                 val="$undef"
19868                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19869         fi
19870 else
19871         val="$undef"
19872         $cat <<EOM
19873 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19874 EOM
19875 fi
19876 set i_syssockio
19877 eval $setvar
19878
19879
19880 : see if this is a syslog.h system
19881 set syslog.h i_syslog
19882 eval $inhdr
19883
19884
19885 : see if this is a sys/mode.h system
19886 set sys/mode.h i_sysmode
19887 eval $inhdr
19888
19889 : see if sys/resource.h has to be included
19890 set sys/resource.h i_sysresrc
19891 eval $inhdr
19892
19893 : see if sys/security.h is available
19894 set sys/security.h i_syssecrt
19895 eval $inhdr
19896
19897 : see if this is a sys/statvfs.h system
19898 set sys/statvfs.h i_sysstatvfs
19899 eval $inhdr
19900
19901 : see if this is a sys/un.h system
19902 set sys/un.h i_sysun
19903 eval $inhdr
19904
19905
19906 : see if this is a sys/utsname.h system
19907 set sys/utsname.h i_sysutsname
19908 eval $inhdr
19909
19910 : see if this is a syswait system
19911 set sys/wait.h i_syswait
19912 eval $inhdr
19913
19914 : see if this is a ustat.h system
19915 set ustat.h i_ustat
19916 eval $inhdr
19917
19918 : see if this is an utime system
19919 set utime.h i_utime
19920 eval $inhdr
19921
19922 : see if this is a values.h system
19923 set values.h i_values
19924 eval $inhdr
19925
19926 : see if this is a vfork system
19927 case "$d_vfork" in
19928 "$define")
19929         set vfork.h i_vfork
19930         eval $inhdr
19931         ;;
19932 *)
19933         i_vfork="$undef"
19934         ;;
19935 esac
19936
19937 : see if gdbm.h is available
19938 set gdbm.h t_gdbm
19939 eval $inhdr
19940 case "$t_gdbm" in
19941 $define)
19942         : see if gdbm_open exists
19943         set gdbm_open d_gdbm_open
19944         eval $inlibc
19945         case "$d_gdbm_open" in
19946         $undef)
19947                 t_gdbm="$undef"
19948                 echo "We won't be including <gdbm.h>"
19949                 ;;
19950         esac
19951         ;;
19952 esac
19953 val="$t_gdbm"
19954 set i_gdbm
19955 eval $setvar
19956
19957 echo " "
19958 echo "Looking for extensions..." >&4
19959 : If we are using the old config.sh, known_extensions may contain
19960 : old or inaccurate or duplicate values.
19961 known_extensions=''
19962 nonxs_extensions=''
19963 : We do not use find because it might not be available.
19964 : We do not just use MANIFEST because the user may have dropped
19965 : some additional extensions into the source tree and expect them
19966 : to be built.
19967
19968 : Function to recursively find available extensions, ignoring DynaLoader
19969 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19970 find_extensions='
19971     for xxx in *; do
19972        case "$xxx" in
19973            DynaLoader|dynaload) ;;
19974            *)
19975            if $test -f $xxx/$xxx.xs; then
19976                known_extensions="$known_extensions $1$xxx";
19977            elif $test -f $xxx/Makefile.PL; then
19978                nonxs_extensions="$nonxs_extensions $1$xxx";
19979            else
19980                if $test -d $xxx -a $# -lt 10; then
19981                    set $1$xxx/ $*;
19982                    cd "$xxx";
19983                    eval $find_extensions;
19984                    cd ..;
19985                    shift;
19986                fi;
19987            fi
19988            ;;
19989        esac;
19990     done'
19991 tdir=`pwd`
19992 cd "$rsrc/ext"
19993 set X
19994 shift
19995 eval $find_extensions
19996 # Special case:  Add in threads/shared since it is not picked up by the
19997 # recursive find above (and adding in general recursive finding breaks
19998 # SDBM_File/sdbm).  A.D.  10/25/2001.
19999 known_extensions="$known_extensions threads/shared"
20000 set X $nonxs_extensions
20001 shift
20002 nonxs_extensions="$*"
20003 set X $known_extensions
20004 shift
20005 known_extensions="$*"
20006 cd "$tdir"
20007
20008 : Now see which are supported on this system.
20009 avail_ext=''
20010 for xxx in $known_extensions ; do
20011         case "$xxx" in
20012         DB_File|db_file)
20013                 case "$i_db" in
20014                 $define) avail_ext="$avail_ext $xxx" ;;
20015                 esac
20016                 ;;
20017         GDBM_File|gdbm_fil)
20018                 case "$i_gdbm" in 
20019                 $define) avail_ext="$avail_ext $xxx" ;;
20020                 esac
20021                 ;;
20022         I18N/Langinfo|i18n_lan)
20023                 case "$i_langinfo$d_nl_langinfo" in 
20024                 $define$define) avail_ext="$avail_ext $xxx" ;;
20025                 esac
20026                 ;;
20027         NDBM_File|ndbm_fil)
20028                 case "$i_ndbm" in
20029                 $define)
20030                     case "$osname-$use64bitint" in
20031                     hpux-define)
20032                         case "$libs" in
20033                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20034                         esac
20035                         ;;
20036                     *) avail_ext="$avail_ext $xxx" ;;
20037                     esac
20038                     ;;
20039                 esac
20040                 ;;
20041         ODBM_File|odbm_fil) 
20042                 case "${i_dbm}${i_rpcsvcdbm}" in
20043                 *"${define}"*)
20044                     case "$osname-$use64bitint" in
20045                     hpux-define)
20046                         case "$libs" in
20047                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20048                         esac
20049                         ;;
20050                     *) avail_ext="$avail_ext $xxx" ;;
20051                     esac
20052                     ;;
20053                 esac
20054                 ;;
20055         POSIX|posix)
20056                 case "$useposix" in
20057                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20058                 esac
20059                 ;;
20060         Opcode|opcode)
20061                 case "$useopcode" in
20062                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20063                 esac
20064                 ;;
20065         Socket|socket)
20066                 case "$d_socket" in 
20067                 true|$define|y)
20068                     case "$osname" in
20069                     beos) ;; # not unless BONE
20070                     *) avail_ext="$avail_ext $xxx" ;;
20071                     esac
20072                     ;;
20073                 esac
20074                 ;;
20075         Sys/Syslog|sys/syslog)
20076                 : XXX syslog requires socket
20077                 case "$d_socket" in 
20078                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20079                 esac
20080                 ;;
20081         Thread|thread)
20082                 case "$usethreads" in
20083                 true|$define|y)
20084                         case "$useithreads" in
20085                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20086                         esac
20087                 esac
20088                 ;;
20089         XS/APItest|xs/apitest)
20090                 # This is just for testing.  Skip it unless we have dynamic loading.
20091
20092                 case "$usedl" in
20093                 $define) avail_ext="$avail_ext $xxx" ;;
20094                 esac
20095                 ;;
20096         XS/Typemap|xs/typemap)
20097                 # This is just for testing.  Skip it unless we have dynamic loading.
20098                 case "$usedl" in
20099                 $define) avail_ext="$avail_ext $xxx" ;;
20100                 esac
20101                 ;;
20102         threads|threads/shared)
20103                 # threads and threads::shared are special cases.
20104                 # To stop people from asking "Perl 5.8.0 was supposed
20105                 # to have this new fancy threads implementation but my
20106                 # perl doesn't have it" and from people trying to
20107                 # (re)install the threads module using CPAN.pm and
20108                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20109                 # the threads.pm and threads/shared.pm will always be
20110                 # there, croaking informatively ("you need to rebuild
20111                 # all of Perl with threads, sorry") when threads haven't
20112                 # been compiled in.
20113                 # --jhi
20114                 avail_ext="$avail_ext $xxx"
20115                 ;;
20116         IPC/SysV|ipc/sysv)
20117                 : XXX Do we need a useipcsysv variable here
20118                 case "${d_msg}${d_sem}${d_shm}" in 
20119                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20120                 esac
20121                 ;;
20122         *)      avail_ext="$avail_ext $xxx"
20123                 ;;
20124         esac
20125 done
20126
20127 set X $avail_ext
20128 shift
20129 avail_ext="$*"
20130
20131 case "$onlyextensions" in
20132 '') ;;
20133 *)  keepextensions=''
20134     echo "You have requested that only certains extensions be included..." >&4
20135     for i in $onlyextensions; do
20136         case " $avail_ext " in
20137         *" $i "*)
20138             echo "Keeping extension $i."
20139             keepextensions="$keepextensions $i"
20140             ;;
20141         *) echo "Ignoring extension $i." ;;
20142         esac
20143     done
20144     avail_ext="$keepextensions"
20145     ;;
20146 esac
20147
20148 case "$noextensions" in
20149 '') ;;
20150 *)  keepextensions=''
20151     echo "You have requested that certain extensions be ignored..." >&4
20152     for i in $avail_ext; do
20153         case " $noextensions " in
20154         *" $i "*) echo "Ignoring extension $i." ;;
20155         *) echo "Keeping extension $i.";
20156            keepextensions="$keepextensions $i"
20157            ;;
20158         esac
20159     done
20160     avail_ext="$keepextensions"
20161     ;;
20162 esac
20163
20164 : Now see which nonxs extensions are supported on this system.
20165 : For now assume all are.
20166 nonxs_ext=''
20167 for xxx in $nonxs_extensions ; do
20168         case "$xxx" in
20169         *)      nonxs_ext="$nonxs_ext $xxx"
20170                 ;;
20171         esac
20172 done
20173
20174 set X $nonxs_ext
20175 shift
20176 nonxs_ext="$*"
20177
20178 case $usedl in
20179 $define)
20180         $cat <<EOM
20181 A number of extensions are supplied with $package.  You may choose to
20182 compile these extensions for dynamic loading (the default), compile
20183 them into the $package executable (static loading), or not include
20184 them at all.  Answer "none" to include no extensions.
20185 Note that DynaLoader is always built and need not be mentioned here.
20186
20187 EOM
20188         case "$dynamic_ext" in
20189         '')
20190                 : Exclude those listed in static_ext
20191                 dflt=''
20192                 for xxx in $avail_ext; do
20193                         case " $static_ext " in
20194                         *" $xxx "*) ;;
20195                         *) dflt="$dflt $xxx" ;;
20196                         esac
20197                 done
20198                 set X $dflt
20199                 shift
20200                 dflt="$*"
20201                 ;;
20202         *)      dflt="$dynamic_ext"
20203                 # Perhaps we are reusing an old out-of-date config.sh.
20204                 case "$hint" in
20205                 previous)
20206                         if test X"$dynamic_ext" != X"$avail_ext"; then
20207                                 $cat <<EOM
20208 NOTICE:  Your previous config.sh list may be incorrect. 
20209 The extensions now available to you are 
20210         ${avail_ext}
20211 but the default list from your previous config.sh is
20212         ${dynamic_ext} 
20213
20214 EOM
20215                         fi
20216                         ;;
20217                 esac
20218                 ;;
20219         esac
20220         case "$dflt" in
20221         '')     dflt=none;;
20222         esac
20223         rp="What extensions do you wish to load dynamically?"
20224         . ./myread
20225         case "$ans" in
20226         none) dynamic_ext=' ' ;;
20227         *) dynamic_ext="$ans" ;;
20228         esac
20229
20230         case "$static_ext" in
20231         '')
20232                 : Exclude those already listed in dynamic linking
20233                 dflt=''
20234                 for xxx in $avail_ext; do
20235                         case " $dynamic_ext " in
20236                         *" $xxx "*) ;;
20237                         *) dflt="$dflt $xxx" ;;
20238                         esac
20239                 done
20240                 set X $dflt
20241                 shift
20242                 dflt="$*"
20243                 ;;
20244         *)  dflt="$static_ext" 
20245                 ;;
20246         esac
20247
20248         case "$dflt" in
20249         '')     dflt=none;;
20250         esac
20251         rp="What extensions do you wish to load statically?"
20252         . ./myread
20253         case "$ans" in
20254         none) static_ext=' ' ;;
20255         *) static_ext="$ans" ;;
20256         esac
20257         ;;
20258 *)
20259         $cat <<EOM
20260 A number of extensions are supplied with $package.  Answer "none" 
20261 to include no extensions. 
20262 Note that DynaLoader is always built and need not be mentioned here.
20263
20264 EOM
20265         case "$static_ext" in
20266         '') dflt="$avail_ext" ;;
20267         *)      dflt="$static_ext"
20268                 # Perhaps we are reusing an old out-of-date config.sh.
20269                 case "$hint" in
20270                 previous)
20271                         if test X"$static_ext" != X"$avail_ext"; then
20272                                 $cat <<EOM
20273 NOTICE:  Your previous config.sh list may be incorrect. 
20274 The extensions now available to you are 
20275         ${avail_ext}
20276 but the default list from your previous config.sh is
20277         ${static_ext} 
20278
20279 EOM
20280                         fi
20281                         ;;
20282                 esac
20283                 ;;
20284         esac
20285         : Exclude those that are not xs extensions
20286         case "$dflt" in
20287         '')     dflt=none;;
20288         esac
20289         rp="What extensions do you wish to include?"
20290         . ./myread
20291         case "$ans" in
20292         none) static_ext=' ' ;;
20293         *) static_ext="$ans" ;;
20294         esac
20295         ;;
20296 esac
20297 #        
20298 # Encode is a special case.  If we are building Encode as a static
20299 # extension, we need to explicitly list its subextensions as well.
20300 # For other nested extensions, this is handled automatically by
20301 # the appropriate Makefile.PL.
20302 case " $static_ext " in
20303         *" Encode "*) # Add the subextensions of Encode
20304         cd "$rsrc/ext"
20305         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20306                 static_ext="$static_ext Encode/$xxx"
20307         done
20308         cd "$tdir"
20309         ;;
20310 esac
20311
20312 set X $dynamic_ext $static_ext $nonxs_ext
20313 shift
20314 extensions="$*"
20315
20316 # Sanity check:  We require an extension suitable for use with
20317 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20318 # should show up as failures in the test suite, but it's helpful to
20319 # catch them now.) The 'extensions' list is normally sorted
20320 # alphabetically, so we need to accept either
20321 #    DB_File ... Fcntl ... IO  ....
20322 # or something like
20323 #    Fcntl ... NDBM_File ... IO  ....
20324 case " $extensions"  in
20325 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20326 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20327 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20328 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20329    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20330    ;;
20331 esac
20332
20333 : Remove libraries needed only for extensions
20334 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20335 : The exception is SunOS 4.x, which needs them.
20336 case "${osname}X${osvers}" in
20337 sunos*X4*)
20338     perllibs="$libs"
20339     ;;
20340 *) case "$usedl" in
20341     $define|true|[yY]*)
20342             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20343             shift
20344             perllibs="$*"
20345             ;;
20346     *)  perllibs="$libs"
20347             ;;
20348     esac
20349     ;;
20350 esac
20351
20352 : Remove build directory name from cppstdin so it can be used from
20353 : either the present location or the final installed location.
20354 echo " "
20355 : Get out of the UU directory to get correct path name.
20356 cd ..
20357 case "$cppstdin" in
20358 `pwd`/cppstdin)
20359         echo "Stripping down cppstdin path name"
20360         cppstdin=cppstdin
20361         ;;
20362 esac
20363 cd UU
20364
20365 : end of configuration questions
20366 echo " "
20367 echo "End of configuration questions."
20368 echo " "
20369
20370 : back to where it started
20371 if test -d ../UU; then
20372         cd ..
20373 fi
20374
20375 : configuration may be patched via a 'config.arch' file
20376 if $test -f config.arch; then
20377         echo "I see a config.arch file, loading it."
20378         . ./config.arch
20379 fi
20380
20381 : configuration may be patched via a 'config.over' file
20382 if $test -f config.over; then
20383         echo " "
20384         dflt=y
20385         rp='I see a config.over file.  Do you wish to load it?'
20386         . UU/myread
20387         case "$ans" in
20388         n*) echo "OK, I'll ignore it.";;
20389         *)      . ./config.over
20390                 echo "Configuration override changes have been loaded."
20391                 ;;
20392         esac
20393 fi
20394
20395 : in case they want portability, strip down executable paths
20396 case "$d_portable" in
20397 "$define")
20398         echo " "
20399         echo "Stripping down executable paths..." >&4
20400         for file in $loclist $trylist; do
20401                 eval temp=\$$file
20402                 eval $file=`basename $temp`
20403         done
20404         ;;
20405 esac
20406
20407 : create config.sh file
20408 echo " "
20409 echo "Creating config.sh..." >&4
20410 $spitshell <<EOT >config.sh
20411 $startsh
20412 #
20413 # This file was produced by running the Configure script. It holds all the
20414 # definitions figured out by Configure. Should you modify one of these values,
20415 # do not forget to propagate your changes by running "Configure -der". You may
20416 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20417 #
20418
20419 # Package name      : $package
20420 # Source directory  : $src
20421 # Configuration time: $cf_time
20422 # Configured by     : $cf_by
20423 # Target system     : $myuname
20424
20425 Author='$Author'
20426 Date='$Date'
20427 Header='$Header'
20428 Id='$Id'
20429 Locker='$Locker'
20430 Log='$Log'
20431 Mcc='$Mcc'
20432 RCSfile='$RCSfile'
20433 Revision='$Revision'
20434 Source='$Source'
20435 State='$State'
20436 _a='$_a'
20437 _exe='$_exe'
20438 _o='$_o'
20439 afs='$afs'
20440 afsroot='$afsroot'
20441 alignbytes='$alignbytes'
20442 ansi2knr='$ansi2knr'
20443 aphostname='$aphostname'
20444 api_revision='$api_revision'
20445 api_subversion='$api_subversion'
20446 api_version='$api_version'
20447 api_versionstring='$api_versionstring'
20448 ar='$ar'
20449 archlib='$archlib'
20450 archlibexp='$archlibexp'
20451 archname64='$archname64'
20452 archname='$archname'
20453 archobjs='$archobjs'
20454 asctime_r_proto='$asctime_r_proto'
20455 awk='$awk'
20456 baserev='$baserev'
20457 bash='$bash'
20458 bin='$bin'
20459 binexp='$binexp'
20460 bison='$bison'
20461 byacc='$byacc'
20462 byteorder='$byteorder'
20463 c='$c'
20464 castflags='$castflags'
20465 cat='$cat'
20466 cc='$cc'
20467 cccdlflags='$cccdlflags'
20468 ccdlflags='$ccdlflags'
20469 ccflags='$ccflags'
20470 ccflags_uselargefiles='$ccflags_uselargefiles'
20471 ccname='$ccname'
20472 ccsymbols='$ccsymbols'
20473 ccversion='$ccversion'
20474 cf_by='$cf_by'
20475 cf_email='$cf_email'
20476 cf_time='$cf_time'
20477 charsize='$charsize'
20478 chgrp='$chgrp'
20479 chmod='$chmod'
20480 chown='$chown'
20481 clocktype='$clocktype'
20482 comm='$comm'
20483 compress='$compress'
20484 contains='$contains'
20485 cp='$cp'
20486 cpio='$cpio'
20487 cpp='$cpp'
20488 cpp_stuff='$cpp_stuff'
20489 cppccsymbols='$cppccsymbols'
20490 cppflags='$cppflags'
20491 cpplast='$cpplast'
20492 cppminus='$cppminus'
20493 cpprun='$cpprun'
20494 cppstdin='$cppstdin'
20495 cppsymbols='$cppsymbols'
20496 crypt_r_proto='$crypt_r_proto'
20497 cryptlib='$cryptlib'
20498 csh='$csh'
20499 ctermid_r_proto='$ctermid_r_proto'
20500 ctime_r_proto='$ctime_r_proto'
20501 d_Gconvert='$d_Gconvert'
20502 d_PRIEUldbl='$d_PRIEUldbl'
20503 d_PRIFUldbl='$d_PRIFUldbl'
20504 d_PRIGUldbl='$d_PRIGUldbl'
20505 d_PRIXU64='$d_PRIXU64'
20506 d_PRId64='$d_PRId64'
20507 d_PRIeldbl='$d_PRIeldbl'
20508 d_PRIfldbl='$d_PRIfldbl'
20509 d_PRIgldbl='$d_PRIgldbl'
20510 d_PRIi64='$d_PRIi64'
20511 d_PRIo64='$d_PRIo64'
20512 d_PRIu64='$d_PRIu64'
20513 d_PRIx64='$d_PRIx64'
20514 d_SCNfldbl='$d_SCNfldbl'
20515 d__fwalk='$d__fwalk'
20516 d_access='$d_access'
20517 d_accessx='$d_accessx'
20518 d_aintl='$d_aintl'
20519 d_alarm='$d_alarm'
20520 d_archlib='$d_archlib'
20521 d_asctime_r='$d_asctime_r'
20522 d_atolf='$d_atolf'
20523 d_atoll='$d_atoll'
20524 d_attribut='$d_attribut'
20525 d_bcmp='$d_bcmp'
20526 d_bcopy='$d_bcopy'
20527 d_bsd='$d_bsd'
20528 d_bsdgetpgrp='$d_bsdgetpgrp'
20529 d_bsdsetpgrp='$d_bsdsetpgrp'
20530 d_bzero='$d_bzero'
20531 d_casti32='$d_casti32'
20532 d_castneg='$d_castneg'
20533 d_charvspr='$d_charvspr'
20534 d_chown='$d_chown'
20535 d_chroot='$d_chroot'
20536 d_chsize='$d_chsize'
20537 d_class='$d_class'
20538 d_closedir='$d_closedir'
20539 d_cmsghdr_s='$d_cmsghdr_s'
20540 d_const='$d_const'
20541 d_copysignl='$d_copysignl'
20542 d_crypt='$d_crypt'
20543 d_crypt_r='$d_crypt_r'
20544 d_csh='$d_csh'
20545 d_ctermid_r='$d_ctermid_r'
20546 d_ctime_r='$d_ctime_r'
20547 d_cuserid='$d_cuserid'
20548 d_dbl_dig='$d_dbl_dig'
20549 d_dbminitproto='$d_dbminitproto'
20550 d_difftime='$d_difftime'
20551 d_dirfd='$d_dirfd'
20552 d_dirnamlen='$d_dirnamlen'
20553 d_dlerror='$d_dlerror'
20554 d_dlopen='$d_dlopen'
20555 d_dlsymun='$d_dlsymun'
20556 d_dosuid='$d_dosuid'
20557 d_drand48_r='$d_drand48_r'
20558 d_drand48proto='$d_drand48proto'
20559 d_dup2='$d_dup2'
20560 d_eaccess='$d_eaccess'
20561 d_endgrent='$d_endgrent'
20562 d_endgrent_r='$d_endgrent_r'
20563 d_endhent='$d_endhent'
20564 d_endhostent_r='$d_endhostent_r'
20565 d_endnent='$d_endnent'
20566 d_endnetent_r='$d_endnetent_r'
20567 d_endpent='$d_endpent'
20568 d_endprotoent_r='$d_endprotoent_r'
20569 d_endpwent='$d_endpwent'
20570 d_endpwent_r='$d_endpwent_r'
20571 d_endsent='$d_endsent'
20572 d_endservent_r='$d_endservent_r'
20573 d_eofnblk='$d_eofnblk'
20574 d_eunice='$d_eunice'
20575 d_faststdio='$d_faststdio'
20576 d_fchdir='$d_fchdir'
20577 d_fchmod='$d_fchmod'
20578 d_fchown='$d_fchown'
20579 d_fcntl='$d_fcntl'
20580 d_fcntl_can_lock='$d_fcntl_can_lock'
20581 d_fd_macros='$d_fd_macros'
20582 d_fd_set='$d_fd_set'
20583 d_fds_bits='$d_fds_bits'
20584 d_fgetpos='$d_fgetpos'
20585 d_finite='$d_finite'
20586 d_finitel='$d_finitel'
20587 d_flexfnam='$d_flexfnam'
20588 d_flock='$d_flock'
20589 d_flockproto='$d_flockproto'
20590 d_fork='$d_fork'
20591 d_fp_class='$d_fp_class'
20592 d_fpathconf='$d_fpathconf'
20593 d_fpclass='$d_fpclass'
20594 d_fpclassify='$d_fpclassify'
20595 d_fpclassl='$d_fpclassl'
20596 d_fpos64_t='$d_fpos64_t'
20597 d_frexpl='$d_frexpl'
20598 d_fs_data_s='$d_fs_data_s'
20599 d_fseeko='$d_fseeko'
20600 d_fsetpos='$d_fsetpos'
20601 d_fstatfs='$d_fstatfs'
20602 d_fstatvfs='$d_fstatvfs'
20603 d_fsync='$d_fsync'
20604 d_ftello='$d_ftello'
20605 d_ftime='$d_ftime'
20606 d_getcwd='$d_getcwd'
20607 d_getespwnam='$d_getespwnam'
20608 d_getfsstat='$d_getfsstat'
20609 d_getgrent='$d_getgrent'
20610 d_getgrent_r='$d_getgrent_r'
20611 d_getgrgid_r='$d_getgrgid_r'
20612 d_getgrnam_r='$d_getgrnam_r'
20613 d_getgrps='$d_getgrps'
20614 d_gethbyaddr='$d_gethbyaddr'
20615 d_gethbyname='$d_gethbyname'
20616 d_gethent='$d_gethent'
20617 d_gethname='$d_gethname'
20618 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20619 d_gethostbyname_r='$d_gethostbyname_r'
20620 d_gethostent_r='$d_gethostent_r'
20621 d_gethostprotos='$d_gethostprotos'
20622 d_getitimer='$d_getitimer'
20623 d_getlogin='$d_getlogin'
20624 d_getlogin_r='$d_getlogin_r'
20625 d_getmnt='$d_getmnt'
20626 d_getmntent='$d_getmntent'
20627 d_getnbyaddr='$d_getnbyaddr'
20628 d_getnbyname='$d_getnbyname'
20629 d_getnent='$d_getnent'
20630 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20631 d_getnetbyname_r='$d_getnetbyname_r'
20632 d_getnetent_r='$d_getnetent_r'
20633 d_getnetprotos='$d_getnetprotos'
20634 d_getpagsz='$d_getpagsz'
20635 d_getpbyname='$d_getpbyname'
20636 d_getpbynumber='$d_getpbynumber'
20637 d_getpent='$d_getpent'
20638 d_getpgid='$d_getpgid'
20639 d_getpgrp2='$d_getpgrp2'
20640 d_getpgrp='$d_getpgrp'
20641 d_getppid='$d_getppid'
20642 d_getprior='$d_getprior'
20643 d_getprotobyname_r='$d_getprotobyname_r'
20644 d_getprotobynumber_r='$d_getprotobynumber_r'
20645 d_getprotoent_r='$d_getprotoent_r'
20646 d_getprotoprotos='$d_getprotoprotos'
20647 d_getprpwnam='$d_getprpwnam'
20648 d_getpwent='$d_getpwent'
20649 d_getpwent_r='$d_getpwent_r'
20650 d_getpwnam_r='$d_getpwnam_r'
20651 d_getpwuid_r='$d_getpwuid_r'
20652 d_getsbyname='$d_getsbyname'
20653 d_getsbyport='$d_getsbyport'
20654 d_getsent='$d_getsent'
20655 d_getservbyname_r='$d_getservbyname_r'
20656 d_getservbyport_r='$d_getservbyport_r'
20657 d_getservent_r='$d_getservent_r'
20658 d_getservprotos='$d_getservprotos'
20659 d_getspnam='$d_getspnam'
20660 d_getspnam_r='$d_getspnam_r'
20661 d_gettimeod='$d_gettimeod'
20662 d_gmtime_r='$d_gmtime_r'
20663 d_gnulibc='$d_gnulibc'
20664 d_grpasswd='$d_grpasswd'
20665 d_hasmntopt='$d_hasmntopt'
20666 d_htonl='$d_htonl'
20667 d_ilogbl='$d_ilogbl'
20668 d_index='$d_index'
20669 d_inetaton='$d_inetaton'
20670 d_int64_t='$d_int64_t'
20671 d_isascii='$d_isascii'
20672 d_isfinite='$d_isfinite'
20673 d_isinf='$d_isinf'
20674 d_isnan='$d_isnan'
20675 d_isnanl='$d_isnanl'
20676 d_killpg='$d_killpg'
20677 d_lchown='$d_lchown'
20678 d_ldbl_dig='$d_ldbl_dig'
20679 d_link='$d_link'
20680 d_localtime_r='$d_localtime_r'
20681 d_locconv='$d_locconv'
20682 d_lockf='$d_lockf'
20683 d_longdbl='$d_longdbl'
20684 d_longlong='$d_longlong'
20685 d_lseekproto='$d_lseekproto'
20686 d_lstat='$d_lstat'
20687 d_madvise='$d_madvise'
20688 d_mblen='$d_mblen'
20689 d_mbstowcs='$d_mbstowcs'
20690 d_mbtowc='$d_mbtowc'
20691 d_memchr='$d_memchr'
20692 d_memcmp='$d_memcmp'
20693 d_memcpy='$d_memcpy'
20694 d_memmove='$d_memmove'
20695 d_memset='$d_memset'
20696 d_mkdir='$d_mkdir'
20697 d_mkdtemp='$d_mkdtemp'
20698 d_mkfifo='$d_mkfifo'
20699 d_mkstemp='$d_mkstemp'
20700 d_mkstemps='$d_mkstemps'
20701 d_mktime='$d_mktime'
20702 d_mmap='$d_mmap'
20703 d_modfl='$d_modfl'
20704 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20705 d_modflproto='$d_modflproto'
20706 d_mprotect='$d_mprotect'
20707 d_msg='$d_msg'
20708 d_msg_ctrunc='$d_msg_ctrunc'
20709 d_msg_dontroute='$d_msg_dontroute'
20710 d_msg_oob='$d_msg_oob'
20711 d_msg_peek='$d_msg_peek'
20712 d_msg_proxy='$d_msg_proxy'
20713 d_msgctl='$d_msgctl'
20714 d_msgget='$d_msgget'
20715 d_msghdr_s='$d_msghdr_s'
20716 d_msgrcv='$d_msgrcv'
20717 d_msgsnd='$d_msgsnd'
20718 d_msync='$d_msync'
20719 d_munmap='$d_munmap'
20720 d_mymalloc='$d_mymalloc'
20721 d_nice='$d_nice'
20722 d_nl_langinfo='$d_nl_langinfo'
20723 d_nv_preserves_uv='$d_nv_preserves_uv'
20724 d_off64_t='$d_off64_t'
20725 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20726 d_oldpthreads='$d_oldpthreads'
20727 d_oldsock='$d_oldsock'
20728 d_open3='$d_open3'
20729 d_pathconf='$d_pathconf'
20730 d_pause='$d_pause'
20731 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20732 d_phostname='$d_phostname'
20733 d_pipe='$d_pipe'
20734 d_poll='$d_poll'
20735 d_portable='$d_portable'
20736 d_procselfexe='$d_procselfexe'
20737 d_pthread_atfork='$d_pthread_atfork'
20738 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20739 d_pthread_yield='$d_pthread_yield'
20740 d_pwage='$d_pwage'
20741 d_pwchange='$d_pwchange'
20742 d_pwclass='$d_pwclass'
20743 d_pwcomment='$d_pwcomment'
20744 d_pwexpire='$d_pwexpire'
20745 d_pwgecos='$d_pwgecos'
20746 d_pwpasswd='$d_pwpasswd'
20747 d_pwquota='$d_pwquota'
20748 d_qgcvt='$d_qgcvt'
20749 d_quad='$d_quad'
20750 d_random_r='$d_random_r'
20751 d_readdir64_r='$d_readdir64_r'
20752 d_readdir='$d_readdir'
20753 d_readdir_r='$d_readdir_r'
20754 d_readlink='$d_readlink'
20755 d_readv='$d_readv'
20756 d_recvmsg='$d_recvmsg'
20757 d_rename='$d_rename'
20758 d_rewinddir='$d_rewinddir'
20759 d_rmdir='$d_rmdir'
20760 d_safebcpy='$d_safebcpy'
20761 d_safemcpy='$d_safemcpy'
20762 d_sanemcmp='$d_sanemcmp'
20763 d_sbrkproto='$d_sbrkproto'
20764 d_scalbnl='$d_scalbnl'
20765 d_sched_yield='$d_sched_yield'
20766 d_scm_rights='$d_scm_rights'
20767 d_seekdir='$d_seekdir'
20768 d_select='$d_select'
20769 d_sem='$d_sem'
20770 d_semctl='$d_semctl'
20771 d_semctl_semid_ds='$d_semctl_semid_ds'
20772 d_semctl_semun='$d_semctl_semun'
20773 d_semget='$d_semget'
20774 d_semop='$d_semop'
20775 d_sendmsg='$d_sendmsg'
20776 d_setegid='$d_setegid'
20777 d_seteuid='$d_seteuid'
20778 d_setgrent='$d_setgrent'
20779 d_setgrent_r='$d_setgrent_r'
20780 d_setgrps='$d_setgrps'
20781 d_sethent='$d_sethent'
20782 d_sethostent_r='$d_sethostent_r'
20783 d_setitimer='$d_setitimer'
20784 d_setlinebuf='$d_setlinebuf'
20785 d_setlocale='$d_setlocale'
20786 d_setlocale_r='$d_setlocale_r'
20787 d_setnent='$d_setnent'
20788 d_setnetent_r='$d_setnetent_r'
20789 d_setpent='$d_setpent'
20790 d_setpgid='$d_setpgid'
20791 d_setpgrp2='$d_setpgrp2'
20792 d_setpgrp='$d_setpgrp'
20793 d_setprior='$d_setprior'
20794 d_setproctitle='$d_setproctitle'
20795 d_setprotoent_r='$d_setprotoent_r'
20796 d_setpwent='$d_setpwent'
20797 d_setpwent_r='$d_setpwent_r'
20798 d_setregid='$d_setregid'
20799 d_setresgid='$d_setresgid'
20800 d_setresuid='$d_setresuid'
20801 d_setreuid='$d_setreuid'
20802 d_setrgid='$d_setrgid'
20803 d_setruid='$d_setruid'
20804 d_setsent='$d_setsent'
20805 d_setservent_r='$d_setservent_r'
20806 d_setsid='$d_setsid'
20807 d_setvbuf='$d_setvbuf'
20808 d_sfio='$d_sfio'
20809 d_shm='$d_shm'
20810 d_shmat='$d_shmat'
20811 d_shmatprototype='$d_shmatprototype'
20812 d_shmctl='$d_shmctl'
20813 d_shmdt='$d_shmdt'
20814 d_shmget='$d_shmget'
20815 d_sigaction='$d_sigaction'
20816 d_sigprocmask='$d_sigprocmask'
20817 d_sigsetjmp='$d_sigsetjmp'
20818 d_sockatmark='$d_sockatmark'
20819 d_sockatmarkproto='$d_sockatmarkproto'
20820 d_socket='$d_socket'
20821 d_socklen_t='$d_socklen_t'
20822 d_sockpair='$d_sockpair'
20823 d_socks5_init='$d_socks5_init'
20824 d_sqrtl='$d_sqrtl'
20825 d_srand48_r='$d_srand48_r'
20826 d_srandom_r='$d_srandom_r'
20827 d_sresgproto='$d_sresgproto'
20828 d_sresuproto='$d_sresuproto'
20829 d_statblks='$d_statblks'
20830 d_statfs_f_flags='$d_statfs_f_flags'
20831 d_statfs_s='$d_statfs_s'
20832 d_statvfs='$d_statvfs'
20833 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20834 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20835 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20836 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20837 d_stdio_stream_array='$d_stdio_stream_array'
20838 d_stdiobase='$d_stdiobase'
20839 d_stdstdio='$d_stdstdio'
20840 d_strchr='$d_strchr'
20841 d_strcoll='$d_strcoll'
20842 d_strctcpy='$d_strctcpy'
20843 d_strerrm='$d_strerrm'
20844 d_strerror='$d_strerror'
20845 d_strerror_r='$d_strerror_r'
20846 d_strftime='$d_strftime'
20847 d_strtod='$d_strtod'
20848 d_strtol='$d_strtol'
20849 d_strtold='$d_strtold'
20850 d_strtoll='$d_strtoll'
20851 d_strtoq='$d_strtoq'
20852 d_strtoul='$d_strtoul'
20853 d_strtoull='$d_strtoull'
20854 d_strtouq='$d_strtouq'
20855 d_strxfrm='$d_strxfrm'
20856 d_suidsafe='$d_suidsafe'
20857 d_symlink='$d_symlink'
20858 d_syscall='$d_syscall'
20859 d_syscallproto='$d_syscallproto'
20860 d_sysconf='$d_sysconf'
20861 d_sysernlst='$d_sysernlst'
20862 d_syserrlst='$d_syserrlst'
20863 d_system='$d_system'
20864 d_tcgetpgrp='$d_tcgetpgrp'
20865 d_tcsetpgrp='$d_tcsetpgrp'
20866 d_telldir='$d_telldir'
20867 d_telldirproto='$d_telldirproto'
20868 d_time='$d_time'
20869 d_times='$d_times'
20870 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20871 d_tm_tm_zone='$d_tm_tm_zone'
20872 d_tmpnam_r='$d_tmpnam_r'
20873 d_truncate='$d_truncate'
20874 d_ttyname_r='$d_ttyname_r'
20875 d_tzname='$d_tzname'
20876 d_u32align='$d_u32align'
20877 d_ualarm='$d_ualarm'
20878 d_umask='$d_umask'
20879 d_uname='$d_uname'
20880 d_union_semun='$d_union_semun'
20881 d_unordered='$d_unordered'
20882 d_usleep='$d_usleep'
20883 d_usleepproto='$d_usleepproto'
20884 d_ustat='$d_ustat'
20885 d_vendorarch='$d_vendorarch'
20886 d_vendorbin='$d_vendorbin'
20887 d_vendorlib='$d_vendorlib'
20888 d_vendorscript='$d_vendorscript'
20889 d_vfork='$d_vfork'
20890 d_void_closedir='$d_void_closedir'
20891 d_voidsig='$d_voidsig'
20892 d_voidtty='$d_voidtty'
20893 d_volatile='$d_volatile'
20894 d_vprintf='$d_vprintf'
20895 d_wait4='$d_wait4'
20896 d_waitpid='$d_waitpid'
20897 d_wcstombs='$d_wcstombs'
20898 d_wctomb='$d_wctomb'
20899 d_writev='$d_writev'
20900 d_xenix='$d_xenix'
20901 date='$date'
20902 db_hashtype='$db_hashtype'
20903 db_prefixtype='$db_prefixtype'
20904 db_version_major='$db_version_major'
20905 db_version_minor='$db_version_minor'
20906 db_version_patch='$db_version_patch'
20907 defvoidused='$defvoidused'
20908 direntrytype='$direntrytype'
20909 dlext='$dlext'
20910 dlsrc='$dlsrc'
20911 doublesize='$doublesize'
20912 drand01='$drand01'
20913 drand48_r_proto='$drand48_r_proto'
20914 dynamic_ext='$dynamic_ext'
20915 eagain='$eagain'
20916 ebcdic='$ebcdic'
20917 echo='$echo'
20918 egrep='$egrep'
20919 emacs='$emacs'
20920 endgrent_r_proto='$endgrent_r_proto'
20921 endhostent_r_proto='$endhostent_r_proto'
20922 endnetent_r_proto='$endnetent_r_proto'
20923 endprotoent_r_proto='$endprotoent_r_proto'
20924 endpwent_r_proto='$endpwent_r_proto'
20925 endservent_r_proto='$endservent_r_proto'
20926 eunicefix='$eunicefix'
20927 exe_ext='$exe_ext'
20928 expr='$expr'
20929 extensions='$extensions'
20930 extras='$extras'
20931 fflushNULL='$fflushNULL'
20932 fflushall='$fflushall'
20933 find='$find'
20934 firstmakefile='$firstmakefile'
20935 flex='$flex'
20936 fpossize='$fpossize'
20937 fpostype='$fpostype'
20938 freetype='$freetype'
20939 from='$from'
20940 full_ar='$full_ar'
20941 full_csh='$full_csh'
20942 full_sed='$full_sed'
20943 gccansipedantic='$gccansipedantic'
20944 gccosandvers='$gccosandvers'
20945 gccversion='$gccversion'
20946 getgrent_r_proto='$getgrent_r_proto'
20947 getgrgid_r_proto='$getgrgid_r_proto'
20948 getgrnam_r_proto='$getgrnam_r_proto'
20949 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20950 gethostbyname_r_proto='$gethostbyname_r_proto'
20951 gethostent_r_proto='$gethostent_r_proto'
20952 getlogin_r_proto='$getlogin_r_proto'
20953 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20954 getnetbyname_r_proto='$getnetbyname_r_proto'
20955 getnetent_r_proto='$getnetent_r_proto'
20956 getprotobyname_r_proto='$getprotobyname_r_proto'
20957 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20958 getprotoent_r_proto='$getprotoent_r_proto'
20959 getpwent_r_proto='$getpwent_r_proto'
20960 getpwnam_r_proto='$getpwnam_r_proto'
20961 getpwuid_r_proto='$getpwuid_r_proto'
20962 getservbyname_r_proto='$getservbyname_r_proto'
20963 getservbyport_r_proto='$getservbyport_r_proto'
20964 getservent_r_proto='$getservent_r_proto'
20965 getspnam_r_proto='$getspnam_r_proto'
20966 gidformat='$gidformat'
20967 gidsign='$gidsign'
20968 gidsize='$gidsize'
20969 gidtype='$gidtype'
20970 glibpth='$glibpth'
20971 gmake='$gmake'
20972 gmtime_r_proto='$gmtime_r_proto'
20973 gnulibc_version='$gnulibc_version'
20974 grep='$grep'
20975 groupcat='$groupcat'
20976 groupstype='$groupstype'
20977 gzip='$gzip'
20978 h_fcntl='$h_fcntl'
20979 h_sysfile='$h_sysfile'
20980 hint='$hint'
20981 hostcat='$hostcat'
20982 html1dir='$html1dir'
20983 html1direxp='$html1direxp'
20984 html3dir='$html3dir'
20985 html3direxp='$html3direxp'
20986 i16size='$i16size'
20987 i16type='$i16type'
20988 i32size='$i32size'
20989 i32type='$i32type'
20990 i64size='$i64size'
20991 i64type='$i64type'
20992 i8size='$i8size'
20993 i8type='$i8type'
20994 i_arpainet='$i_arpainet'
20995 i_bsdioctl='$i_bsdioctl'
20996 i_crypt='$i_crypt'
20997 i_db='$i_db'
20998 i_dbm='$i_dbm'
20999 i_dirent='$i_dirent'
21000 i_dld='$i_dld'
21001 i_dlfcn='$i_dlfcn'
21002 i_fcntl='$i_fcntl'
21003 i_float='$i_float'
21004 i_fp='$i_fp'
21005 i_fp_class='$i_fp_class'
21006 i_gdbm='$i_gdbm'
21007 i_grp='$i_grp'
21008 i_ieeefp='$i_ieeefp'
21009 i_inttypes='$i_inttypes'
21010 i_langinfo='$i_langinfo'
21011 i_libutil='$i_libutil'
21012 i_limits='$i_limits'
21013 i_locale='$i_locale'
21014 i_machcthr='$i_machcthr'
21015 i_malloc='$i_malloc'
21016 i_math='$i_math'
21017 i_memory='$i_memory'
21018 i_mntent='$i_mntent'
21019 i_ndbm='$i_ndbm'
21020 i_netdb='$i_netdb'
21021 i_neterrno='$i_neterrno'
21022 i_netinettcp='$i_netinettcp'
21023 i_niin='$i_niin'
21024 i_poll='$i_poll'
21025 i_prot='$i_prot'
21026 i_pthread='$i_pthread'
21027 i_pwd='$i_pwd'
21028 i_rpcsvcdbm='$i_rpcsvcdbm'
21029 i_sfio='$i_sfio'
21030 i_sgtty='$i_sgtty'
21031 i_shadow='$i_shadow'
21032 i_socks='$i_socks'
21033 i_stdarg='$i_stdarg'
21034 i_stddef='$i_stddef'
21035 i_stdlib='$i_stdlib'
21036 i_string='$i_string'
21037 i_sunmath='$i_sunmath'
21038 i_sysaccess='$i_sysaccess'
21039 i_sysdir='$i_sysdir'
21040 i_sysfile='$i_sysfile'
21041 i_sysfilio='$i_sysfilio'
21042 i_sysin='$i_sysin'
21043 i_sysioctl='$i_sysioctl'
21044 i_syslog='$i_syslog'
21045 i_sysmman='$i_sysmman'
21046 i_sysmode='$i_sysmode'
21047 i_sysmount='$i_sysmount'
21048 i_sysndir='$i_sysndir'
21049 i_sysparam='$i_sysparam'
21050 i_sysresrc='$i_sysresrc'
21051 i_syssecrt='$i_syssecrt'
21052 i_sysselct='$i_sysselct'
21053 i_syssockio='$i_syssockio'
21054 i_sysstat='$i_sysstat'
21055 i_sysstatfs='$i_sysstatfs'
21056 i_sysstatvfs='$i_sysstatvfs'
21057 i_systime='$i_systime'
21058 i_systimek='$i_systimek'
21059 i_systimes='$i_systimes'
21060 i_systypes='$i_systypes'
21061 i_sysuio='$i_sysuio'
21062 i_sysun='$i_sysun'
21063 i_sysutsname='$i_sysutsname'
21064 i_sysvfs='$i_sysvfs'
21065 i_syswait='$i_syswait'
21066 i_termio='$i_termio'
21067 i_termios='$i_termios'
21068 i_time='$i_time'
21069 i_unistd='$i_unistd'
21070 i_ustat='$i_ustat'
21071 i_utime='$i_utime'
21072 i_values='$i_values'
21073 i_varargs='$i_varargs'
21074 i_varhdr='$i_varhdr'
21075 i_vfork='$i_vfork'
21076 ignore_versioned_solibs='$ignore_versioned_solibs'
21077 inc_version_list='$inc_version_list'
21078 inc_version_list_init='$inc_version_list_init'
21079 incpath='$incpath'
21080 inews='$inews'
21081 installarchlib='$installarchlib'
21082 installbin='$installbin'
21083 installhtml1dir='$installhtml1dir'
21084 installhtml3dir='$installhtml3dir'
21085 installman1dir='$installman1dir'
21086 installman3dir='$installman3dir'
21087 installprefix='$installprefix'
21088 installprefixexp='$installprefixexp'
21089 installprivlib='$installprivlib'
21090 installscript='$installscript'
21091 installsitearch='$installsitearch'
21092 installsitebin='$installsitebin'
21093 installsitehtml1dir='$installsitehtml1dir'
21094 installsitehtml3dir='$installsitehtml3dir'
21095 installsitelib='$installsitelib'
21096 installsiteman1dir='$installsiteman1dir'
21097 installsiteman3dir='$installsiteman3dir'
21098 installsitescript='$installsitescript'
21099 installstyle='$installstyle'
21100 installusrbinperl='$installusrbinperl'
21101 installvendorarch='$installvendorarch'
21102 installvendorbin='$installvendorbin'
21103 installvendorhtml1dir='$installvendorhtml1dir'
21104 installvendorhtml3dir='$installvendorhtml3dir'
21105 installvendorlib='$installvendorlib'
21106 installvendorman1dir='$installvendorman1dir'
21107 installvendorman3dir='$installvendorman3dir'
21108 installvendorscript='$installvendorscript'
21109 intsize='$intsize'
21110 issymlink='$issymlink'
21111 ivdformat='$ivdformat'
21112 ivsize='$ivsize'
21113 ivtype='$ivtype'
21114 known_extensions='$known_extensions'
21115 ksh='$ksh'
21116 ld='$ld'
21117 lddlflags='$lddlflags'
21118 ldflags='$ldflags'
21119 ldflags_uselargefiles='$ldflags_uselargefiles'
21120 ldlibpthname='$ldlibpthname'
21121 less='$less'
21122 lib_ext='$lib_ext'
21123 libc='$libc'
21124 libperl='$libperl'
21125 libpth='$libpth'
21126 libs='$libs'
21127 libsdirs='$libsdirs'
21128 libsfiles='$libsfiles'
21129 libsfound='$libsfound'
21130 libspath='$libspath'
21131 libswanted='$libswanted'
21132 libswanted_uselargefiles='$libswanted_uselargefiles'
21133 line='$line'
21134 lint='$lint'
21135 lkflags='$lkflags'
21136 ln='$ln'
21137 lns='$lns'
21138 localtime_r_proto='$localtime_r_proto'
21139 locincpth='$locincpth'
21140 loclibpth='$loclibpth'
21141 longdblsize='$longdblsize'
21142 longlongsize='$longlongsize'
21143 longsize='$longsize'
21144 lp='$lp'
21145 lpr='$lpr'
21146 ls='$ls'
21147 lseeksize='$lseeksize'
21148 lseektype='$lseektype'
21149 mail='$mail'
21150 mailx='$mailx'
21151 make='$make'
21152 make_set_make='$make_set_make'
21153 mallocobj='$mallocobj'
21154 mallocsrc='$mallocsrc'
21155 malloctype='$malloctype'
21156 man1dir='$man1dir'
21157 man1direxp='$man1direxp'
21158 man1ext='$man1ext'
21159 man3dir='$man3dir'
21160 man3direxp='$man3direxp'
21161 man3ext='$man3ext'
21162 mips_type='$mips_type'
21163 mistrustnm='$mistrustnm'
21164 mkdir='$mkdir'
21165 mmaptype='$mmaptype'
21166 modetype='$modetype'
21167 more='$more'
21168 multiarch='$multiarch'
21169 mv='$mv'
21170 myarchname='$myarchname'
21171 mydomain='$mydomain'
21172 myhostname='$myhostname'
21173 myuname='$myuname'
21174 n='$n'
21175 need_va_copy='$need_va_copy'
21176 netdb_hlen_type='$netdb_hlen_type'
21177 netdb_host_type='$netdb_host_type'
21178 netdb_name_type='$netdb_name_type'
21179 netdb_net_type='$netdb_net_type'
21180 nm='$nm'
21181 nm_opt='$nm_opt'
21182 nm_so_opt='$nm_so_opt'
21183 nonxs_ext='$nonxs_ext'
21184 nroff='$nroff'
21185 nvEUformat='$nvEUformat'
21186 nvFUformat='$nvFUformat'
21187 nvGUformat='$nvGUformat'
21188 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21189 nveformat='$nveformat'
21190 nvfformat='$nvfformat'
21191 nvgformat='$nvgformat'
21192 nvsize='$nvsize'
21193 nvtype='$nvtype'
21194 o_nonblock='$o_nonblock'
21195 obj_ext='$obj_ext'
21196 old_pthread_create_joinable='$old_pthread_create_joinable'
21197 optimize='$optimize'
21198 orderlib='$orderlib'
21199 osname='$osname'
21200 osvers='$osvers'
21201 otherlibdirs='$otherlibdirs'
21202 package='$package'
21203 pager='$pager'
21204 passcat='$passcat'
21205 patchlevel='$patchlevel'
21206 path_sep='$path_sep'
21207 perl5='$perl5'
21208 perl='$perl'
21209 perl_patchlevel='$perl_patchlevel'
21210 perladmin='$perladmin'
21211 perllibs='$perllibs'
21212 perlpath='$perlpath'
21213 pg='$pg'
21214 phostname='$phostname'
21215 pidtype='$pidtype'
21216 plibpth='$plibpth'
21217 pm_apiversion='$pm_apiversion'
21218 pmake='$pmake'
21219 pr='$pr'
21220 prefix='$prefix'
21221 prefixexp='$prefixexp'
21222 privlib='$privlib'
21223 privlibexp='$privlibexp'
21224 procselfexe='$procselfexe'
21225 prototype='$prototype'
21226 ptrsize='$ptrsize'
21227 quadkind='$quadkind'
21228 quadtype='$quadtype'
21229 randbits='$randbits'
21230 randfunc='$randfunc'
21231 random_r_proto='$random_r_proto'
21232 randseedtype='$randseedtype'
21233 ranlib='$ranlib'
21234 rd_nodata='$rd_nodata'
21235 readdir64_r_proto='$readdir64_r_proto'
21236 readdir_r_proto='$readdir_r_proto'
21237 revision='$revision'
21238 rm='$rm'
21239 rmail='$rmail'
21240 run='$run'
21241 runnm='$runnm'
21242 sPRIEUldbl='$sPRIEUldbl'
21243 sPRIFUldbl='$sPRIFUldbl'
21244 sPRIGUldbl='$sPRIGUldbl'
21245 sPRIXU64='$sPRIXU64'
21246 sPRId64='$sPRId64'
21247 sPRIeldbl='$sPRIeldbl'
21248 sPRIfldbl='$sPRIfldbl'
21249 sPRIgldbl='$sPRIgldbl'
21250 sPRIi64='$sPRIi64'
21251 sPRIo64='$sPRIo64'
21252 sPRIu64='$sPRIu64'
21253 sPRIx64='$sPRIx64'
21254 sSCNfldbl='$sSCNfldbl'
21255 sched_yield='$sched_yield'
21256 scriptdir='$scriptdir'
21257 scriptdirexp='$scriptdirexp'
21258 sed='$sed'
21259 seedfunc='$seedfunc'
21260 selectminbits='$selectminbits'
21261 selecttype='$selecttype'
21262 sendmail='$sendmail'
21263 setgrent_r_proto='$setgrent_r_proto'
21264 sethostent_r_proto='$sethostent_r_proto'
21265 setlocale_r_proto='$setlocale_r_proto'
21266 setnetent_r_proto='$setnetent_r_proto'
21267 setprotoent_r_proto='$setprotoent_r_proto'
21268 setpwent_r_proto='$setpwent_r_proto'
21269 setservent_r_proto='$setservent_r_proto'
21270 sh='$sh'
21271 shar='$shar'
21272 sharpbang='$sharpbang'
21273 shmattype='$shmattype'
21274 shortsize='$shortsize'
21275 shrpenv='$shrpenv'
21276 shsharp='$shsharp'
21277 sig_count='$sig_count'
21278 sig_name='$sig_name'
21279 sig_name_init='$sig_name_init'
21280 sig_num='$sig_num'
21281 sig_num_init='$sig_num_init'
21282 sig_size='$sig_size'
21283 signal_t='$signal_t'
21284 sitearch='$sitearch'
21285 sitearchexp='$sitearchexp'
21286 sitebin='$sitebin'
21287 sitebinexp='$sitebinexp'
21288 sitehtml1dir='$sitehtml1dir'
21289 sitehtml1direxp='$sitehtml1direxp'
21290 sitehtml3dir='$sitehtml3dir'
21291 sitehtml3direxp='$sitehtml3direxp'
21292 sitelib='$sitelib'
21293 sitelib_stem='$sitelib_stem'
21294 sitelibexp='$sitelibexp'
21295 siteman1dir='$siteman1dir'
21296 siteman1direxp='$siteman1direxp'
21297 siteman3dir='$siteman3dir'
21298 siteman3direxp='$siteman3direxp'
21299 siteprefix='$siteprefix'
21300 siteprefixexp='$siteprefixexp'
21301 sitescript='$sitescript'
21302 sitescriptexp='$sitescriptexp'
21303 sizesize='$sizesize'
21304 sizetype='$sizetype'
21305 sleep='$sleep'
21306 smail='$smail'
21307 so='$so'
21308 sockethdr='$sockethdr'
21309 socketlib='$socketlib'
21310 socksizetype='$socksizetype'
21311 sort='$sort'
21312 spackage='$spackage'
21313 spitshell='$spitshell'
21314 srand48_r_proto='$srand48_r_proto'
21315 srandom_r_proto='$srandom_r_proto'
21316 src='$src'
21317 ssizetype='$ssizetype'
21318 startperl='$startperl'
21319 startsh='$startsh'
21320 static_ext='$static_ext'
21321 stdchar='$stdchar'
21322 stdio_base='$stdio_base'
21323 stdio_bufsiz='$stdio_bufsiz'
21324 stdio_cnt='$stdio_cnt'
21325 stdio_filbuf='$stdio_filbuf'
21326 stdio_ptr='$stdio_ptr'
21327 stdio_stream_array='$stdio_stream_array'
21328 strerror_r_proto='$strerror_r_proto'
21329 strings='$strings'
21330 submit='$submit'
21331 subversion='$subversion'
21332 sysman='$sysman'
21333 tail='$tail'
21334 tar='$tar'
21335 targetarch='$targetarch'
21336 tbl='$tbl'
21337 tee='$tee'
21338 test='$test'
21339 timeincl='$timeincl'
21340 timetype='$timetype'
21341 tmpnam_r_proto='$tmpnam_r_proto'
21342 to='$to'
21343 touch='$touch'
21344 tr='$tr'
21345 trnl='$trnl'
21346 troff='$troff'
21347 ttyname_r_proto='$ttyname_r_proto'
21348 u16size='$u16size'
21349 u16type='$u16type'
21350 u32size='$u32size'
21351 u32type='$u32type'
21352 u64size='$u64size'
21353 u64type='$u64type'
21354 u8size='$u8size'
21355 u8type='$u8type'
21356 uidformat='$uidformat'
21357 uidsign='$uidsign'
21358 uidsize='$uidsize'
21359 uidtype='$uidtype'
21360 uname='$uname'
21361 uniq='$uniq'
21362 uquadtype='$uquadtype'
21363 use5005threads='$use5005threads'
21364 use64bitall='$use64bitall'
21365 use64bitint='$use64bitint'
21366 usecrosscompile='$usecrosscompile'
21367 usedl='$usedl'
21368 usefaststdio='$usefaststdio'
21369 useithreads='$useithreads'
21370 uselargefiles='$uselargefiles'
21371 uselongdouble='$uselongdouble'
21372 usemorebits='$usemorebits'
21373 usemultiplicity='$usemultiplicity'
21374 usemymalloc='$usemymalloc'
21375 usenm='$usenm'
21376 useopcode='$useopcode'
21377 useperlio='$useperlio'
21378 useposix='$useposix'
21379 usereentrant='$usereentrant'
21380 usesfio='$usesfio'
21381 useshrplib='$useshrplib'
21382 usesocks='$usesocks'
21383 usethreads='$usethreads'
21384 usevendorprefix='$usevendorprefix'
21385 usevfork='$usevfork'
21386 usrinc='$usrinc'
21387 uuname='$uuname'
21388 uvXUformat='$uvXUformat'
21389 uvoformat='$uvoformat'
21390 uvsize='$uvsize'
21391 uvtype='$uvtype'
21392 uvuformat='$uvuformat'
21393 uvxformat='$uvxformat'
21394 vendorarch='$vendorarch'
21395 vendorarchexp='$vendorarchexp'
21396 vendorbin='$vendorbin'
21397 vendorbinexp='$vendorbinexp'
21398 vendorhtml1dir='$vendorhtml1dir'
21399 vendorhtml1direxp='$vendorhtml1direxp'
21400 vendorhtml3dir='$vendorhtml3dir'
21401 vendorhtml3direxp='$vendorhtml3direxp'
21402 vendorlib='$vendorlib'
21403 vendorlib_stem='$vendorlib_stem'
21404 vendorlibexp='$vendorlibexp'
21405 vendorman1dir='$vendorman1dir'
21406 vendorman1direxp='$vendorman1direxp'
21407 vendorman3dir='$vendorman3dir'
21408 vendorman3direxp='$vendorman3direxp'
21409 vendorprefix='$vendorprefix'
21410 vendorprefixexp='$vendorprefixexp'
21411 vendorscript='$vendorscript'
21412 vendorscriptexp='$vendorscriptexp'
21413 version='$version'
21414 version_patchlevel_string='$version_patchlevel_string'
21415 versiononly='$versiononly'
21416 vi='$vi'
21417 voidflags='$voidflags'
21418 xlibpth='$xlibpth'
21419 xs_apiversion='$xs_apiversion'
21420 yacc='$yacc'
21421 yaccflags='$yaccflags'
21422 zcat='$zcat'
21423 zip='$zip'
21424 EOT
21425
21426 : Add in command line options if available
21427 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21428
21429 : add special variables
21430 $test -f $src/patchlevel.h && \
21431 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21432 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21433 echo "PERL_CONFIG_SH=true" >>config.sh
21434
21435 : propagate old symbols
21436 if $test -f UU/config.sh; then
21437         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21438         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21439         $sort | $uniq -u >UU/oldsyms
21440         set X `cat UU/oldsyms`
21441         shift
21442         case $# in
21443         0) ;;
21444         *)
21445                 cat <<EOM
21446 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21447 EOM
21448                 echo "# Variables propagated from previous config.sh file." >>config.sh
21449                 for sym in `cat UU/oldsyms`; do
21450                         echo "    Propagating $hint variable "'$'"$sym..."
21451                         eval 'tmp="$'"${sym}"'"'
21452                         echo "$tmp" | \
21453                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21454                 done
21455                 ;;
21456         esac
21457 fi
21458
21459 : Finish up by extracting the .SH files
21460 case "$alldone" in
21461 exit)
21462         $rm -rf UU
21463         echo "Extraction done."
21464         exit 0
21465         ;;
21466 cont)
21467         ;;
21468 '')
21469         dflt=''
21470         nostick=true
21471         $cat <<EOM
21472
21473 If you'd like to make any changes to the config.sh file before I begin
21474 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21475
21476 EOM
21477         rp="Press return or use a shell escape to edit config.sh:"
21478         . UU/myread
21479         nostick=''
21480         case "$ans" in
21481         '') ;;
21482         *) : in case they cannot read
21483                 sh 1>&4 -c "$ans";;
21484         esac
21485         ;;
21486 esac
21487
21488 : if this fails, just run all the .SH files by hand
21489 . ./config.sh
21490
21491 echo " "
21492 exec 1>&4
21493 pwd=`pwd`
21494 . ./UU/extract
21495 cd "$pwd"
21496
21497 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21498         dflt=y
21499         case "$silent" in
21500         true) ;;
21501         *)
21502                 $cat <<EOM
21503
21504 Now you need to generate make dependencies by running "$make depend".
21505 You might prefer to run it in background: "$make depend > makedepend.out &"
21506 It can take a while, so you might not want to run it right now.
21507
21508 EOM
21509                 ;;
21510         esac
21511         rp="Run $make depend now?"
21512         . UU/myread
21513         case "$ans" in
21514         y*)
21515                 $make depend && echo "Now you must run '$make'."
21516                 ;;
21517         *)
21518                 echo "You must run '$make depend' then '$make'."
21519                 ;;
21520         esac
21521 elif test -f [Mm]akefile; then
21522         echo " "
21523         echo "Now you must run a $make."
21524 else
21525         echo "Configure done."
21526 fi
21527
21528 if $test -f Policy.sh; then
21529     $cat <<EOM
21530
21531 If you compile $package on a different machine or from a different object
21532 directory, copy the Policy.sh file from this object directory to the
21533 new one before you run Configure -- this will help you with most of
21534 the policy defaults.
21535
21536 EOM
21537 fi
21538 if $test -f config.msg; then
21539     echo "Hmm.  I also noted the following information while running:"
21540     echo " "
21541     $cat config.msg >&4
21542     $rm -f config.msg
21543 fi
21544 $rm -f kit*isdone ark*isdone
21545 $rm -rf UU
21546
21547 : End of Configure
21548