This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Minor typo
[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 Wed Oct  3 16:47:48 EET DST 2001 [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 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 case "X${MACHTYPE:-nonesuchmach}" in
69                 *cygwin) ;;
70                 *) p_=\; ;;
71                 esac
72         fi
73 fi
74
75 : Proper PATH setting
76 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
77 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
78 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
79 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
80 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
81 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
82 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
83 paths="$paths /sbin /usr/sbin /usr/libexec"
84
85 for p in $paths
86 do
87         case "$p_$PATH$p_" in
88         *$p_$p$p_*) ;;
89         *) test -d $p && PATH=$PATH$p_$p ;;
90         esac
91 done
92
93 PATH=.$p_$PATH
94 export PATH
95
96 : shall we be using ksh?
97 inksh=''
98 needksh=''
99 avoidksh=''
100 newsh=/bin/ksh
101 changesh=''
102 if (PATH=.; alias -x) >/dev/null 2>&1; then
103                 inksh=true
104 fi
105 if test -f /hp-ux -a -f /bin/ksh; then
106         needksh='to avoid sh bug in "here document" expansion'
107 fi
108 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
109         if test X`/usr/bin/uname -v` = X4; then
110                 avoidksh="to avoid AIX 4's /bin/sh"
111                 newsh=/usr/bin/bsh
112         fi
113 fi
114 if test -f /osf_boot -a -f /usr/sbin/setld; then
115         if test X`/usr/bin/uname -s` = XOSF1; then
116                 avoidksh="to avoid Digital UNIX' ksh"
117                 newsh=/bin/sh
118                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
119         fi
120 fi
121 case "$inksh/$needksh" in
122 /[a-z]*)
123                 ENV=''
124                 changesh=true
125                 reason="$needksh"
126         ;;
127 esac
128 case "$inksh/$avoidksh" in
129 true/[a-z]*)
130         changesh=true
131         reason="$avoidksh"
132         ;;
133 esac
134 case "$inksh/$needksh-$avoidksh-" in
135 true/--)
136                 cat <<EOM
137 (I see you are using the Korn shell.  Some ksh's blow up on $me,
138 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
139 EOM
140         ;;
141 esac
142 case "$changesh" in
143 true)
144         echo "(Feeding myself to $newsh $reason.)"
145         case "$0" in
146         Configure|*/Configure) exec $newsh $0 "$@";;
147         *) exec $newsh Configure "$@";;
148         esac
149         ;;
150 esac
151
152 : if needed set CDPATH to a harmless value that is not chatty
153 : avoid bash 2.02 problems with empty CDPATH.
154 case "$CDPATH" in
155 '')     ;;
156 *)      case "$SHELL" in
157         *bash*) CDPATH='.' ;;
158         *)              CDPATH='' ;;
159         esac
160         ;;
161 esac
162 : Configure runs within the UU subdirectory
163 test -d UU || mkdir UU
164 cd UU && rm -f ./*
165
166 ccname=''
167 ccversion=''
168 ccsymbols=''
169 cppccsymbols=''
170 cppsymbols=''
171 from=''
172 run=''
173 targetarch=''
174 to=''
175 usecrosscompile=''
176 perllibs=''
177 dynamic_ext=''
178 extensions=''
179 known_extensions=''
180 nonxs_ext=''
181 static_ext=''
182 useopcode=''
183 useposix=''
184 extras=''
185 d_bsd=''
186 d_eunice=''
187 d_xenix=''
188 eunicefix=''
189 Mcc=''
190 ar=''
191 awk=''
192 bash=''
193 bison=''
194 byacc=''
195 cat=''
196 chgrp=''
197 chmod=''
198 chown=''
199 comm=''
200 compress=''
201 cp=''
202 cpio=''
203 cpp=''
204 csh=''
205 date=''
206 echo=''
207 egrep=''
208 emacs=''
209 expr=''
210 find=''
211 flex=''
212 grep=''
213 gzip=''
214 inews=''
215 ksh=''
216 less=''
217 line=''
218 lint=''
219 ln=''
220 lp=''
221 lpr=''
222 ls=''
223 mail=''
224 mailx=''
225 make=''
226 mkdir=''
227 more=''
228 mv=''
229 nm=''
230 nroff=''
231 perl=''
232 pg=''
233 pmake=''
234 pr=''
235 rm=''
236 rmail=''
237 sed=''
238 sendmail=''
239 shar=''
240 sleep=''
241 smail=''
242 sort=''
243 submit=''
244 tail=''
245 tar=''
246 tbl=''
247 tee=''
248 test=''
249 touch=''
250 tr=''
251 troff=''
252 uname=''
253 uniq=''
254 uuname=''
255 vi=''
256 zcat=''
257 zip=''
258 full_ar=''
259 full_sed=''
260 libswanted=''
261 hint=''
262 myuname=''
263 osname=''
264 osvers=''
265 Author=''
266 Date=''
267 Header=''
268 Id=''
269 Locker=''
270 Log=''
271 RCSfile=''
272 Revision=''
273 Source=''
274 State=''
275 _a=''
276 _exe=''
277 _o=''
278 archobjs=''
279 exe_ext=''
280 firstmakefile=''
281 lib_ext=''
282 obj_ext=''
283 path_sep=''
284 afs=''
285 afsroot=''
286 alignbytes=''
287 ansi2knr=''
288 archlib=''
289 archlibexp=''
290 d_archlib=''
291 installarchlib=''
292 archname=''
293 myarchname=''
294 d_atolf=''
295 d_atoll=''
296 baserev=''
297 bin=''
298 binexp=''
299 installbin=''
300 bincompat5005=''
301 d_bincompat5005=''
302 byteorder=''
303 cc=''
304 ccflags=''
305 cppflags=''
306 ldflags=''
307 lkflags=''
308 locincpth=''
309 optimize=''
310 cf_email=''
311 cf_by=''
312 cf_time=''
313 charsize=''
314 contains=''
315 cpp_stuff=''
316 cpplast=''
317 cppminus=''
318 cpprun=''
319 cppstdin=''
320 d__fwalk=''
321 d_access=''
322 d_accessx=''
323 d_alarm=''
324 d_attribut=''
325 d_bcmp=''
326 d_bcopy=''
327 d_bzero=''
328 d_casti32=''
329 castflags=''
330 d_castneg=''
331 d_chown=''
332 d_chroot=''
333 d_chsize=''
334 d_class=''
335 d_closedir=''
336 d_void_closedir=''
337 d_cmsghdr_s=''
338 d_const=''
339 cryptlib=''
340 d_crypt=''
341 d_csh=''
342 full_csh=''
343 d_cuserid=''
344 d_dbl_dig=''
345 d_dbminitproto=''
346 d_difftime=''
347 d_dlerror=''
348 d_dlopen=''
349 d_dlsymun=''
350 d_dosuid=''
351 d_suidsafe=''
352 d_drand48proto=''
353 d_dup2=''
354 d_eaccess=''
355 d_endgrent=''
356 d_endhent=''
357 d_endnent=''
358 d_endpent=''
359 d_endpwent=''
360 d_endsent=''
361 d_fchdir=''
362 d_fchmod=''
363 d_fchown=''
364 d_fcntl=''
365 d_fcntl_can_lock=''
366 d_fd_macros=''
367 d_fd_set=''
368 d_fds_bits=''
369 d_fgetpos=''
370 d_finite=''
371 d_finitel=''
372 d_flexfnam=''
373 d_flock=''
374 d_flockproto=''
375 d_fork=''
376 d_fp_class=''
377 d_fpclass=''
378 d_fpclassify=''
379 d_fpclassl=''
380 d_fpos64_t=''
381 d_frexpl=''
382 d_fs_data_s=''
383 d_fseeko=''
384 d_fsetpos=''
385 d_fstatfs=''
386 d_fsync=''
387 d_ftello=''
388 d_ftime=''
389 d_gettimeod=''
390 d_Gconvert=''
391 d_getcwd=''
392 d_getespwnam=''
393 d_getfsstat=''
394 d_getgrent=''
395 d_getgrps=''
396 d_gethbyaddr=''
397 d_gethbyname=''
398 d_gethent=''
399 aphostname=''
400 d_gethname=''
401 d_phostname=''
402 d_uname=''
403 d_gethostprotos=''
404 d_getitimer=''
405 d_getlogin=''
406 d_getmnt=''
407 d_getmntent=''
408 d_getnbyaddr=''
409 d_getnbyname=''
410 d_getnent=''
411 d_getnetprotos=''
412 d_getpagsz=''
413 d_getpent=''
414 d_getpgid=''
415 d_getpgrp2=''
416 d_bsdgetpgrp=''
417 d_getpgrp=''
418 d_getppid=''
419 d_getprior=''
420 d_getpbyname=''
421 d_getpbynumber=''
422 d_getprotoprotos=''
423 d_getprpwnam=''
424 d_getpwent=''
425 d_getsent=''
426 d_getservprotos=''
427 d_getspnam=''
428 d_getsbyname=''
429 d_getsbyport=''
430 d_gnulibc=''
431 d_hasmntopt=''
432 d_htonl=''
433 d_inetaton=''
434 d_int64_t=''
435 d_isascii=''
436 d_isfinite=''
437 d_isinf=''
438 d_isnan=''
439 d_isnanl=''
440 d_killpg=''
441 d_lchown=''
442 d_ldbl_dig=''
443 d_link=''
444 d_locconv=''
445 d_lockf=''
446 d_longdbl=''
447 longdblsize=''
448 d_longlong=''
449 longlongsize=''
450 d_lseekproto=''
451 d_lstat=''
452 d_madvise=''
453 d_mblen=''
454 d_mbstowcs=''
455 d_mbtowc=''
456 d_memchr=''
457 d_memcmp=''
458 d_memcpy=''
459 d_memmove=''
460 d_memset=''
461 d_mkdir=''
462 d_mkdtemp=''
463 d_mkfifo=''
464 d_mkstemp=''
465 d_mkstemps=''
466 d_mktime=''
467 d_mmap=''
468 mmaptype=''
469 d_modfl=''
470 d_modfl_pow32_bug=''
471 d_mprotect=''
472 d_msg=''
473 d_msgctl=''
474 d_msgget=''
475 d_msghdr_s=''
476 d_msgrcv=''
477 d_msgsnd=''
478 d_msync=''
479 d_munmap=''
480 d_nice=''
481 d_nl_langinfo=''
482 d_off64_t=''
483 d_open3=''
484 d_fpathconf=''
485 d_pathconf=''
486 d_pause=''
487 d_pipe=''
488 d_poll=''
489 d_portable=''
490 d_old_pthread_create_joinable=''
491 old_pthread_create_joinable=''
492 d_pthread_atfork=''
493 d_pthread_yield=''
494 d_sched_yield=''
495 sched_yield=''
496 d_qgcvt=''
497 d_readdir=''
498 d_rewinddir=''
499 d_seekdir=''
500 d_telldir=''
501 d_readlink=''
502 d_readv=''
503 d_recvmsg=''
504 d_rename=''
505 d_rmdir=''
506 d_safebcpy=''
507 d_safemcpy=''
508 d_sanemcmp=''
509 d_sbrkproto=''
510 d_select=''
511 d_sem=''
512 d_semctl=''
513 d_semget=''
514 d_semop=''
515 d_sendmsg=''
516 d_setegid=''
517 d_seteuid=''
518 d_setgrent=''
519 d_setgrps=''
520 d_sethent=''
521 d_setitimer=''
522 d_setlinebuf=''
523 d_setlocale=''
524 d_setnent=''
525 d_setpent=''
526 d_setpgid=''
527 d_setpgrp2=''
528 d_bsdsetpgrp=''
529 d_setpgrp=''
530 d_setprior=''
531 d_setproctitle=''
532 d_setpwent=''
533 d_setregid=''
534 d_setresgid=''
535 d_setresuid=''
536 d_setreuid=''
537 d_setrgid=''
538 d_setruid=''
539 d_setsent=''
540 d_setsid=''
541 d_setvbuf=''
542 d_sfio=''
543 usesfio=''
544 d_shm=''
545 d_shmat=''
546 d_shmatprototype=''
547 shmattype=''
548 d_shmctl=''
549 d_shmdt=''
550 d_shmget=''
551 d_sigaction=''
552 d_sigprocmask=''
553 d_sigsetjmp=''
554 d_sockatmark=''
555 d_sockatmarkproto=''
556 d_msg_ctrunc=''
557 d_msg_dontroute=''
558 d_msg_oob=''
559 d_msg_peek=''
560 d_msg_proxy=''
561 d_oldsock=''
562 d_scm_rights=''
563 d_socket=''
564 d_sockpair=''
565 sockethdr=''
566 socketlib=''
567 d_socklen_t=''
568 d_socks5_init=''
569 d_sqrtl=''
570 d_sresgproto=''
571 d_sresuproto=''
572 d_statblks=''
573 d_statfs_f_flags=''
574 d_statfs_s=''
575 d_fstatvfs=''
576 d_statvfs=''
577 d_stdio_cnt_lval=''
578 d_stdio_ptr_lval=''
579 d_stdio_ptr_lval_nochange_cnt=''
580 d_stdio_ptr_lval_sets_cnt=''
581 d_stdiobase=''
582 d_stdstdio=''
583 stdio_base=''
584 stdio_bufsiz=''
585 stdio_cnt=''
586 stdio_filbuf=''
587 stdio_ptr=''
588 d_index=''
589 d_strchr=''
590 d_strcoll=''
591 d_strctcpy=''
592 d_strerrm=''
593 d_strerror=''
594 d_sysernlst=''
595 d_syserrlst=''
596 d_strftime=''
597 d_strtod=''
598 d_strtol=''
599 d_strtold=''
600 d_strtoll=''
601 d_strtoq=''
602 d_strtoul=''
603 d_strtoull=''
604 d_strtouq=''
605 d_strxfrm=''
606 d_symlink=''
607 d_syscall=''
608 d_syscallproto=''
609 d_sysconf=''
610 d_system=''
611 d_tcgetpgrp=''
612 d_tcsetpgrp=''
613 d_telldirproto=''
614 d_time=''
615 timetype=''
616 clocktype=''
617 d_times=''
618 d_truncate=''
619 d_tzname=''
620 d_u32align=''
621 d_ualarm=''
622 d_umask=''
623 d_semctl_semid_ds=''
624 d_semctl_semun=''
625 d_union_semun=''
626 d_unordered=''
627 d_usleep=''
628 d_usleepproto=''
629 d_ustat=''
630 d_vfork=''
631 usevfork=''
632 d_voidsig=''
633 signal_t=''
634 d_volatile=''
635 d_charvspr=''
636 d_vprintf=''
637 d_wait4=''
638 d_waitpid=''
639 d_wcstombs=''
640 d_wctomb=''
641 d_writev=''
642 dlext=''
643 cccdlflags=''
644 ccdlflags=''
645 dlsrc=''
646 ld=''
647 lddlflags=''
648 usedl=''
649 doublesize=''
650 ebcdic=''
651 fflushNULL=''
652 fflushall=''
653 fpossize=''
654 fpostype=''
655 gccosandvers=''
656 gccversion=''
657 gidformat=''
658 gidsign=''
659 gidsize=''
660 gidtype=''
661 groupstype=''
662 h_fcntl=''
663 h_sysfile=''
664 i_arpainet=''
665 db_hashtype=''
666 db_prefixtype=''
667 db_version_major=''
668 db_version_minor=''
669 db_version_patch=''
670 i_db=''
671 i_dbm=''
672 i_rpcsvcdbm=''
673 d_dirnamlen=''
674 direntrytype=''
675 i_dirent=''
676 i_dld=''
677 i_dlfcn=''
678 i_fcntl=''
679 i_float=''
680 i_fp=''
681 i_fp_class=''
682 i_gdbm=''
683 d_grpasswd=''
684 i_grp=''
685 i_ieeefp=''
686 i_inttypes=''
687 i_langinfo=''
688 i_libutil=''
689 i_limits=''
690 i_locale=''
691 i_machcthr=''
692 i_malloc=''
693 i_math=''
694 i_memory=''
695 i_mntent=''
696 i_ndbm=''
697 i_netdb=''
698 i_neterrno=''
699 i_netinettcp=''
700 i_niin=''
701 i_sysin=''
702 i_poll=''
703 i_prot=''
704 i_pthread=''
705 d_pwage=''
706 d_pwchange=''
707 d_pwclass=''
708 d_pwcomment=''
709 d_pwexpire=''
710 d_pwgecos=''
711 d_pwpasswd=''
712 d_pwquota=''
713 i_pwd=''
714 i_sfio=''
715 i_shadow=''
716 i_socks=''
717 i_stddef=''
718 i_stdlib=''
719 i_string=''
720 strings=''
721 i_sunmath=''
722 i_sysaccess=''
723 i_sysdir=''
724 i_sysfile=''
725 d_voidtty=''
726 i_bsdioctl=''
727 i_sysfilio=''
728 i_sysioctl=''
729 i_syssockio=''
730 i_syslog=''
731 i_sysmman=''
732 i_sysmode=''
733 i_sysmount=''
734 i_sysndir=''
735 i_sysparam=''
736 i_sysresrc=''
737 i_syssecrt=''
738 i_sysselct=''
739 i_sysstat=''
740 i_sysstatfs=''
741 i_sysstatvfs=''
742 i_systimes=''
743 i_systypes=''
744 i_sysuio=''
745 i_sysun=''
746 i_sysutsname=''
747 i_sysvfs=''
748 i_syswait=''
749 i_sgtty=''
750 i_termio=''
751 i_termios=''
752 i_systime=''
753 i_systimek=''
754 i_time=''
755 timeincl=''
756 i_unistd=''
757 i_ustat=''
758 i_utime=''
759 i_values=''
760 i_stdarg=''
761 i_varargs=''
762 i_varhdr=''
763 i_vfork=''
764 inc_version_list=''
765 inc_version_list_init=''
766 installprefix=''
767 installprefixexp=''
768 installstyle=''
769 installusrbinperl=''
770 intsize=''
771 longsize=''
772 shortsize=''
773 issymlink=''
774 libc=''
775 ldlibpthname=''
776 libperl=''
777 shrpenv=''
778 useshrplib=''
779 glibpth=''
780 libpth=''
781 loclibpth=''
782 plibpth=''
783 xlibpth=''
784 ignore_versioned_solibs=''
785 libs=''
786 libsdirs=''
787 libsfiles=''
788 libsfound=''
789 libspath=''
790 lns=''
791 d_PRIEUldbl=''
792 d_PRIFUldbl=''
793 d_PRIGUldbl=''
794 d_PRIeldbl=''
795 d_PRIfldbl=''
796 d_PRIgldbl=''
797 d_SCNfldbl=''
798 sPRIEUldbl=''
799 sPRIFUldbl=''
800 sPRIGUldbl=''
801 sPRIeldbl=''
802 sPRIfldbl=''
803 sPRIgldbl=''
804 sSCNfldbl=''
805 lseeksize=''
806 lseektype=''
807 make_set_make=''
808 d_mymalloc=''
809 freetype=''
810 mallocobj=''
811 mallocsrc=''
812 malloctype=''
813 usemymalloc=''
814 installman1dir=''
815 man1dir=''
816 man1direxp=''
817 man1ext=''
818 installman3dir=''
819 man3dir=''
820 man3direxp=''
821 man3ext=''
822 modetype=''
823 multiarch=''
824 mydomain=''
825 myhostname=''
826 phostname=''
827 c=''
828 n=''
829 d_eofnblk=''
830 eagain=''
831 o_nonblock=''
832 rd_nodata=''
833 need_va_copy=''
834 netdb_hlen_type=''
835 netdb_host_type=''
836 netdb_name_type=''
837 netdb_net_type=''
838 groupcat=''
839 hostcat=''
840 passcat=''
841 orderlib=''
842 ranlib=''
843 d_perl_otherlibdirs=''
844 otherlibdirs=''
845 package=''
846 spackage=''
847 pager=''
848 api_revision=''
849 api_subversion=''
850 api_version=''
851 api_versionstring=''
852 patchlevel=''
853 perl_patchlevel=''
854 revision=''
855 subversion=''
856 version=''
857 version_patchlevel_string=''
858 perl5=''
859 perladmin=''
860 perlpath=''
861 d_nv_preserves_uv=''
862 d_nv_preserves_uv_bits=''
863 i16size=''
864 i16type=''
865 i32size=''
866 i32type=''
867 i64size=''
868 i64type=''
869 i8size=''
870 i8type=''
871 ivsize=''
872 ivtype=''
873 nvsize=''
874 nvtype=''
875 u16size=''
876 u16type=''
877 u32size=''
878 u32type=''
879 u64size=''
880 u64type=''
881 u8size=''
882 u8type=''
883 uvsize=''
884 uvtype=''
885 ivdformat=''
886 nvEUformat=''
887 nvFUformat=''
888 nvGUformat=''
889 nveformat=''
890 nvfformat=''
891 nvgformat=''
892 uvXUformat=''
893 uvoformat=''
894 uvuformat=''
895 uvxformat=''
896 pidtype=''
897 prefix=''
898 prefixexp=''
899 installprivlib=''
900 privlib=''
901 privlibexp=''
902 prototype=''
903 ptrsize=''
904 d_PRIXU64=''
905 d_PRId64=''
906 d_PRIi64=''
907 d_PRIo64=''
908 d_PRIu64=''
909 d_PRIx64=''
910 sPRIXU64=''
911 sPRId64=''
912 sPRIi64=''
913 sPRIo64=''
914 sPRIu64=''
915 sPRIx64=''
916 d_quad=''
917 quadkind=''
918 quadtype=''
919 uquadtype=''
920 drand01=''
921 randbits=''
922 randfunc=''
923 randseedtype=''
924 seedfunc=''
925 installscript=''
926 scriptdir=''
927 scriptdirexp=''
928 selectminbits=''
929 selecttype=''
930 sh=''
931 sig_count=''
932 sig_name=''
933 sig_name_init=''
934 sig_num=''
935 sig_num_init=''
936 sig_size=''
937 installsitearch=''
938 sitearch=''
939 sitearchexp=''
940 installsitebin=''
941 sitebin=''
942 sitebinexp=''
943 installsitelib=''
944 sitelib=''
945 sitelib_stem=''
946 sitelibexp=''
947 siteprefix=''
948 siteprefixexp=''
949 sizesize=''
950 sizetype=''
951 so=''
952 socksizetype=''
953 sharpbang=''
954 shsharp=''
955 spitshell=''
956 src=''
957 ssizetype=''
958 startperl=''
959 startsh=''
960 stdchar=''
961 d_stdio_stream_array=''
962 stdio_stream_array=''
963 sysman=''
964 trnl=''
965 uidformat=''
966 uidsign=''
967 uidsize=''
968 uidtype=''
969 archname64=''
970 use64bitall=''
971 use64bitint=''
972 ccflags_uselargefiles=''
973 ldflags_uselargefiles=''
974 libswanted_uselargefiles=''
975 uselargefiles=''
976 uselongdouble=''
977 usemorebits=''
978 usemultiplicity=''
979 nm_opt=''
980 nm_so_opt=''
981 runnm=''
982 usenm=''
983 useperlio=''
984 usesocks=''
985 d_oldpthreads=''
986 use5005threads=''
987 useithreads=''
988 usereentrant=''
989 usethreads=''
990 incpath=''
991 mips_type=''
992 usrinc=''
993 d_vendorarch=''
994 installvendorarch=''
995 vendorarch=''
996 vendorarchexp=''
997 d_vendorbin=''
998 installvendorbin=''
999 vendorbin=''
1000 vendorbinexp=''
1001 d_vendorlib=''
1002 installvendorlib=''
1003 vendorlib=''
1004 vendorlib_stem=''
1005 vendorlibexp=''
1006 usevendorprefix=''
1007 vendorprefix=''
1008 vendorprefixexp=''
1009 versiononly=''
1010 defvoidused=''
1011 voidflags=''
1012 pm_apiversion=''
1013 xs_apiversion=''
1014 yacc=''
1015 yaccflags=''
1016 CONFIG=''
1017
1018 define='define'
1019 undef='undef'
1020 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1021 rmlist=''
1022
1023 : We must find out about Eunice early
1024 eunicefix=':'
1025 if test -f /etc/unixtovms; then
1026         eunicefix=/etc/unixtovms
1027 fi
1028 if test -f /etc/unixtovms.exe; then
1029         eunicefix=/etc/unixtovms.exe
1030 fi
1031
1032 i_whoami=''
1033 ccname=''
1034 ccversion=''
1035 perllibs=''
1036 : set useposix=false in your hint file to disable the POSIX extension.
1037 useposix=true
1038 : set useopcode=false in your hint file to disable the Opcode extension.
1039 useopcode=true
1040 : Trailing extension.  Override this in a hint file, if needed.
1041 _exe=''
1042 : Extra object files, if any, needed on this platform.
1043 archobjs=''
1044 archname=''
1045 : Possible local include directories to search.
1046 : Set locincpth to "" in a hint file to defeat local include searches.
1047 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1048 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1049 :
1050 : no include file wanted by default
1051 inclwanted=''
1052
1053 groupstype=''
1054 libnames=''
1055 : change the next line if compiling for Xenix/286 on Xenix/386
1056 xlibpth='/usr/lib/386 /lib/386'
1057 : Possible local library directories to search.
1058 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1059 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1060
1061 : general looking path for locating libraries
1062 glibpth="/lib /usr/lib $xlibpth"
1063 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1064 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1065 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1066
1067 : Private path used by Configure to find libraries.  Its value
1068 : is prepended to libpth. This variable takes care of special
1069 : machines, like the mips.  Usually, it should be empty.
1070 plibpth=''
1071
1072 : default library list
1073 libswanted=''
1074 : some systems want to use only the non-versioned libso:s
1075 ignore_versioned_solibs=''
1076 archname64=''
1077 ccflags_uselargefiles=''
1078 ldflags_uselargefiles=''
1079 libswanted_uselargefiles=''
1080 : set usemultiplicity on the Configure command line to enable multiplicity.
1081 : set usesocks on the Configure command line to enable socks.
1082 : set usethreads on the Configure command line to enable threads.
1083 usereentrant='undef'
1084 : full support for void wanted by default
1085 defvoidused=15
1086
1087 : List of libraries we want.
1088 : If anyone needs -lnet, put it in a hint file.
1089 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1090 libswanted="$libswanted dld ld sun m c cposix posix"
1091 libswanted="$libswanted ndir dir crypt sec"
1092 libswanted="$libswanted ucb bsd BSD PW x util"
1093 : We probably want to search /usr/shlib before most other libraries.
1094 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1095 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1096 glibpth="/usr/shlib $glibpth"
1097 : Do not use vfork unless overridden by a hint file.
1098 usevfork=false
1099
1100 : Find the basic shell for Bourne shell scripts
1101 case "$sh" in
1102 '')
1103         case "$SYSTYPE" in
1104         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1105         *) xxx='/bin/sh';;
1106         esac
1107         if test -f "$xxx"; then
1108                 sh="$xxx"
1109         else
1110                 : Build up a list and do a single loop so we can 'break' out.
1111                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1112                 for xxx in sh bash ksh pdksh ash; do
1113                         for p in $pth; do
1114                                 try="$try ${p}/${xxx}"
1115                         done
1116                 done
1117                 for xxx in $try; do
1118                         if test -f "$xxx"; then
1119                                 sh="$xxx";
1120                                 break
1121                         elif test -f "$xxx.exe"; then
1122                                 sh="$xxx";
1123                                 break
1124                         fi
1125                 done
1126         fi
1127         ;;
1128 esac
1129
1130 case "$sh" in
1131 '')     cat >&2 <<EOM
1132 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1133
1134 Usually it's in /bin/sh.  How did you even get this far?
1135 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1136 we'll try to straighten this all out.
1137 EOM
1138         exit 1
1139         ;;
1140 esac
1141
1142 : see if sh knows # comments
1143 if `$sh -c '#' >/dev/null 2>&1`; then
1144         shsharp=true
1145         spitshell=cat
1146         xcat=/bin/cat
1147         test -f $xcat || xcat=/usr/bin/cat
1148         echo "#!$xcat" >sharp
1149         $eunicefix sharp
1150         chmod +x sharp
1151         ./sharp > today
1152         if test -s today; then
1153                 sharpbang='#!'
1154         else
1155                 echo "#! $xcat" > sharp
1156                 $eunicefix sharp
1157                 chmod +x sharp
1158                 ./sharp > today
1159                 if test -s today; then
1160                         sharpbang='#! '
1161                 else
1162                         sharpbang=': use '
1163                 fi
1164         fi
1165 else
1166         echo " "
1167         echo "Your $sh doesn't grok # comments--I will strip them later on."
1168         shsharp=false
1169         cd ..
1170         echo "exec grep -v '^[  ]*#'" >spitshell
1171         chmod +x spitshell
1172         $eunicefix spitshell
1173         spitshell=`pwd`/spitshell
1174         cd UU
1175         echo "I presume that if # doesn't work, #! won't work either!"
1176         sharpbang=': use '
1177 fi
1178 rm -f sharp today
1179
1180 : figure out how to guarantee sh startup
1181 case "$startsh" in
1182 '') startsh=${sharpbang}${sh} ;;
1183 *)
1184 esac
1185 cat >sharp <<EOSS
1186 $startsh
1187 set abc
1188 test "$?abc" != 1
1189 EOSS
1190
1191 chmod +x sharp
1192 $eunicefix sharp
1193 if ./sharp; then
1194         : echo "Yup, it does."
1195 else
1196         echo "Hmm... '$startsh' does not guarantee sh startup..."
1197         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1198 fi
1199 rm -f sharp
1200
1201
1202 : Save command line options in file UU/cmdline.opt for later use in
1203 : generating config.sh.
1204 cat > cmdline.opt <<EOSH
1205 # Configure command line arguments.
1206 config_arg0='$0'
1207 config_args='$*'
1208 config_argc=$#
1209 EOSH
1210 argn=1
1211 args_exp=''
1212 args_sep=''
1213 for arg in "$@"; do
1214         cat >>cmdline.opt <<EOSH
1215 config_arg$argn='$arg'
1216 EOSH
1217         # Extreme backslashitis: replace each ' by '"'"'
1218         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1219 $arg
1220 EOC
1221         arg_exp=`cat cmdl.opt`
1222         args_exp="$args_exp$args_sep'$arg_exp'"
1223         argn=`expr $argn + 1`
1224         args_sep=' '
1225 done
1226 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1227 # used by ./hints/os2.sh
1228 rm -f cmdl.opt
1229
1230 : produce awk script to parse command line options
1231 cat >options.awk <<'EOF'
1232 BEGIN {
1233         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1234
1235         len = length(optstr);
1236         for (i = 1; i <= len; i++) {
1237                 c = substr(optstr, i, 1);
1238                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1239                 if (a == ":") {
1240                         arg[c] = 1;
1241                         i++;
1242                 }
1243                 opt[c] = 1;
1244         }
1245 }
1246 {
1247         expect = 0;
1248         str = $0;
1249         if (substr(str, 1, 1) != "-") {
1250                 printf("'%s'\n", str);
1251                 next;
1252         }
1253         len = length($0);
1254         for (i = 2; i <= len; i++) {
1255                 c = substr(str, i, 1);
1256                 if (!opt[c]) {
1257                         printf("-%s\n", substr(str, i));
1258                         next;
1259                 }
1260                 printf("-%s\n", c);
1261                 if (arg[c]) {
1262                         if (i < len)
1263                                 printf("'%s'\n", substr(str, i + 1));
1264                         else
1265                                 expect = 1;
1266                         next;
1267                 }
1268         }
1269 }
1270 END {
1271         if (expect)
1272                 print "?";
1273 }
1274 EOF
1275
1276 : process the command line options
1277 set X `for arg in "$@"; do echo "X$arg"; done |
1278         sed -e s/X// | awk -f options.awk`
1279 eval "set $*"
1280 shift
1281 rm -f options.awk
1282
1283 : set up default values
1284 fastread=''
1285 reuseval=false
1286 config_sh=''
1287 alldone=''
1288 error=''
1289 silent=''
1290 extractsh=''
1291 override=''
1292 knowitall=''
1293 rm -f optdef.sh posthint.sh
1294 cat >optdef.sh <<EOS
1295 $startsh
1296 EOS
1297
1298
1299 : option parsing
1300 while test $# -gt 0; do
1301         case "$1" in
1302         -d) shift; fastread=yes;;
1303         -e) shift; alldone=cont;;
1304         -f)
1305                 shift
1306                 cd ..
1307                 if test -r "$1"; then
1308                         config_sh="$1"
1309                 else
1310                         echo "$me: cannot read config file $1." >&2
1311                         error=true
1312                 fi
1313                 cd UU
1314                 shift;;
1315         -h) shift; error=true;;
1316         -r) shift; reuseval=true;;
1317         -s) shift; silent=true; realsilent=true;;
1318         -E) shift; alldone=exit;;
1319         -K) shift; knowitall=true;;
1320         -O) shift; override=true;;
1321         -S) shift; silent=true; extractsh=true;;
1322         -D)
1323                 shift
1324                 case "$1" in
1325                 *=)
1326                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1327                         echo "$me: ignoring -D $1" >&2
1328                         ;;
1329                 *=*) echo "$1" | \
1330                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1331                 *) echo "$1='define'" >> optdef.sh;;
1332                 esac
1333                 shift
1334                 ;;
1335         -U)
1336                 shift
1337                 case "$1" in
1338                 *=) echo "$1" >> optdef.sh;;
1339                 *=*)
1340                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1341                         echo "$me: ignoring -U $1" >&2
1342                         ;;
1343                 *) echo "$1='undef'" >> optdef.sh;;
1344                 esac
1345                 shift
1346                 ;;
1347         -A)
1348             shift
1349             xxx=''
1350             yyy="$1"
1351             zzz=''
1352             uuu=undef
1353             case "$yyy" in
1354             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1355                  case "$zzz" in
1356                  *:*) zzz='' ;;
1357                  *)   xxx=append
1358                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1359                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1360                  esac
1361                  ;;
1362             esac
1363             case "$xxx" in
1364             '')  case "$yyy" in
1365                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1366                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1367                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1368                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1369                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1370                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1371                  esac
1372                  ;;       
1373             esac
1374             case "$xxx" in
1375             append)
1376                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1377             clear)
1378                 echo "$yyy=''"                  >> posthint.sh ;;
1379             define)
1380                 case "$zzz" in
1381                 '') zzz=define ;;
1382                 esac
1383                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1384             eval)
1385                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1386             prepend)
1387                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1388             undef)
1389                 case "$zzz" in
1390                 '') zzz="$uuu" ;;
1391                 esac
1392                 echo "$yyy=$zzz"                >> posthint.sh ;;
1393             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1394             esac
1395             shift
1396             ;;
1397         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1398             exit 0;;
1399         --) break;;
1400         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1401         *) break;;
1402         esac
1403 done
1404
1405 case "$error" in
1406 true)
1407         cat >&2 <<EOM
1408 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1409                  [-U symbol] [-U symbol=] [-A command:symbol...]
1410   -d : use defaults for all answers.
1411   -e : go on without questioning past the production of config.sh.
1412   -f : specify an alternate default configuration file.
1413   -h : print this help message and exit (with an error status).
1414   -r : reuse C symbols value if possible (skips costly nm extraction).
1415   -s : silent mode, only echoes questions and essential information.
1416   -D : define symbol to have some value:
1417          -D symbol         symbol gets the value 'define'
1418          -D symbol=value   symbol gets the value 'value'
1419   -E : stop at the end of questions, after having produced config.sh.
1420   -K : do not use unless you know what you are doing.
1421   -O : let -D and -U override definitions from loaded configuration file.
1422   -S : perform variable substitutions on all .SH files (can mix with -f)
1423   -U : undefine symbol:
1424          -U symbol    symbol gets the value 'undef'
1425          -U symbol=   symbol gets completely empty
1426   -A : manipulate symbol after the platform specific hints have been applied:
1427          -A symbol=value                append " "value to symbol
1428          -A append:symbol=value         append value to symbol
1429          -A define:symbol=value         define symbol to have value
1430          -A clear:symbol                define symbol to be ''
1431          -A define:symbol               define symbol to be 'define'
1432          -A eval:symbol=value           define symbol to be eval of value
1433          -A prepend:symbol=value        prepend value to symbol
1434          -A undef:symbol                define symbol to be 'undef'
1435          -A undef:symbol=               define symbol to be ''
1436   -V : print version number and exit (with a zero status).
1437 EOM
1438         exit 1
1439         ;;
1440 esac
1441
1442 : Sanity checks
1443 case "$fastread$alldone" in
1444 yescont|yesexit) ;;
1445 *)
1446         case "$extractsh" in
1447         true) ;;
1448         *)
1449                 if test ! -t 0; then
1450                         echo "Say 'sh Configure', not 'sh <Configure'"
1451                         exit 1
1452                 fi
1453                 ;;
1454         esac
1455         ;;
1456 esac
1457
1458 exec 4>&1
1459 case "$silent" in
1460 true) exec 1>/dev/null;;
1461 esac
1462
1463 : run the defines and the undefines, if any, but leave the file out there...
1464 touch optdef.sh
1465 . ./optdef.sh
1466 : create the posthint manipulation script and leave the file out there...
1467 touch posthint.sh
1468
1469 : set package name
1470 package=perl5
1471 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1472 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1473 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1474 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1475 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1476 esac
1477
1478 : Some greps do not return status, grrr.
1479 echo "grimblepritz" >grimble
1480 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1481         contains=contains
1482 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1483         contains=grep
1484 else
1485         contains=contains
1486 fi
1487 rm -f grimble
1488 : the following should work in any shell
1489 case "$contains" in
1490 contains*)
1491         echo " "
1492         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1493         cat >contains <<'EOSS'
1494 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1495 EOSS
1496 chmod +x contains
1497 esac
1498
1499 : Find the path to the source tree
1500 case "$src" in
1501 '') case "$0" in
1502     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1503          case "$src" in
1504          /*)    ;;
1505          .)     ;;
1506          *)     src=`cd ../$src && pwd` ;;
1507          esac
1508          ;;
1509     *)   src='.';;
1510     esac;;
1511 esac
1512 case "$src" in
1513 '')     src=/
1514         rsrc=/
1515         ;;
1516 /*) rsrc="$src";;
1517 *) rsrc="../$src";;
1518 esac
1519 if test -f $rsrc/Configure && \
1520         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1521 then
1522    : found it, so we are ok.
1523 else
1524         rsrc=''
1525         for src in . .. ../.. ../../.. ../../../..; do
1526                 if test -f ../$src/Configure && \
1527                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1528                 then
1529                         rsrc=../$src
1530                         break
1531                 fi
1532         done
1533 fi
1534 case "$rsrc" in
1535 '')
1536         cat <<EOM >&4
1537
1538 Sorry, I can't seem to locate the source dir for $package.  Please start
1539 Configure with an explicit path -- i.e. /some/path/Configure.
1540
1541 EOM
1542         exit 1
1543         ;;
1544 ../.)   rsrc='..';;
1545 *)
1546         echo " "
1547         echo "Sources for $package found in \"$src\"." >&4
1548         ;;
1549 esac
1550
1551 : script used to extract .SH files with variable substitutions
1552 cat >extract <<'EOS'
1553 PERL_CONFIG_SH=true
1554 echo "Doing variable substitutions on .SH files..."
1555 if test -f MANIFEST; then
1556         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1557 else
1558         echo "(Looking for .SH files under the source directory.)"
1559         set x `(cd $src; find . -name "*.SH" -print)`
1560 fi
1561 shift
1562 case $# in
1563 0) set x `(cd $src; echo *.SH)`; shift;;
1564 esac
1565 if test ! -f $src/$1; then
1566         shift
1567 fi
1568 mkdir_p='
1569 name=$1;
1570 create="";
1571 while test $name; do
1572         if test ! -d "$name"; then
1573                 create="$name $create";
1574                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1575                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1576         else
1577                 name="";
1578         fi;
1579 done;
1580 for file in $create; do
1581         mkdir $file;
1582 done
1583 '
1584 for file in $*; do
1585         case "$src" in
1586         ".")
1587                 case "$file" in
1588                 */*)
1589                         dir=`expr X$file : 'X\(.*\)/'`
1590                         file=`expr X$file : 'X.*/\(.*\)'`
1591                         (cd $dir && . ./$file)
1592                         ;;
1593                 *)
1594                         . ./$file
1595                         ;;
1596                 esac
1597                 ;;
1598         *)
1599                 case "$file" in
1600                 */*)
1601                         dir=`expr X$file : 'X\(.*\)/'`
1602                         file=`expr X$file : 'X.*/\(.*\)'`
1603                         (set x $dir; shift; eval $mkdir_p)
1604                         sh <$src/$dir/$file
1605                         ;;
1606                 *)
1607                         sh <$src/$file
1608                         ;;
1609                 esac
1610                 ;;
1611         esac
1612 done
1613 if test -f $src/config_h.SH; then
1614         if test ! -f config.h; then
1615         : oops, they left it out of MANIFEST, probably, so do it anyway.
1616         . $src/config_h.SH
1617         fi
1618 fi
1619 EOS
1620
1621 : extract files and exit if asked to do so
1622 case "$extractsh" in
1623 true)
1624         case "$realsilent" in
1625         true) ;;
1626         *) exec 1>&4;;
1627         esac
1628         case "$config_sh" in
1629         '') config_sh='config.sh';;
1630         esac
1631         echo " "
1632         echo "Fetching answers from $config_sh..."
1633         cd ..
1634         . $config_sh
1635         test "$override" && . ./optdef.sh
1636         echo " "
1637         . UU/extract
1638         rm -rf UU
1639         echo "Extraction done."
1640         exit 0
1641         ;;
1642 esac
1643
1644 : Eunice requires " " instead of "", can you believe it
1645 echo " "
1646 : Here we go...
1647 echo "Beginning of configuration questions for $package."
1648
1649 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1650
1651 : first determine how to suppress newline on echo command
1652 echo " "
1653 echo "Checking echo to see how to suppress newlines..."
1654 (echo "hi there\c" ; echo " ") >.echotmp
1655 if $contains c .echotmp >/dev/null 2>&1 ; then
1656         echo "...using -n."
1657         n='-n'
1658         c=''
1659 else
1660         cat <<'EOM'
1661 ...using \c
1662 EOM
1663         n=''
1664         c='\c'
1665 fi
1666 echo $n "The star should be here-->$c"
1667 echo '*'
1668 rm -f .echotmp
1669
1670 : Now test for existence of everything in MANIFEST
1671 echo " "
1672 if test -f $rsrc/MANIFEST; then
1673         echo "First let's make sure your kit is complete.  Checking..." >&4
1674         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1675         rm -f missing
1676         tmppwd=`pwd`
1677         for filelist in x??; do
1678                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1679         done
1680         if test -s missing; then
1681                 cat missing >&4
1682                 cat >&4 <<'EOM'
1683
1684 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1685
1686 You have the option of continuing the configuration process, despite the
1687 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1688 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1689 and contact the author (perlbug@perl.org).
1690
1691 EOM
1692                 echo $n "Continue? [n] $c" >&4
1693                 read ans
1694                 case "$ans" in
1695                 y*)
1696                         echo "Continuing..." >&4
1697                         rm -f missing
1698                         ;;
1699                 *)
1700                         echo "ABORTING..." >&4
1701                         kill $$
1702                         ;;
1703                 esac
1704         else
1705                 echo "Looks good..."
1706         fi
1707 else
1708         echo "There is no MANIFEST file.  I hope your kit is complete !"
1709 fi
1710 rm -f missing x??
1711
1712 echo " "
1713 : Find the appropriate value for a newline for tr
1714 if test -n "$DJGPP"; then
1715        trnl='\012'
1716 fi
1717 if test X"$trnl" = X; then
1718         case "`echo foo|tr '\n' x 2>/dev/null`" in
1719         foox) trnl='\n' ;;
1720         esac
1721 fi
1722 if test X"$trnl" = X; then
1723         case "`echo foo|tr '\012' x 2>/dev/null`" in
1724         foox) trnl='\012' ;;
1725         esac
1726 fi
1727 if test X"$trnl" = X; then
1728         cat <<EOM >&2
1729
1730 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1731
1732 EOM
1733         exit 1
1734 fi
1735
1736 : compute the number of columns on the terminal for proper question formatting
1737 case "$COLUMNS" in
1738 '') COLUMNS='80';;
1739 esac
1740
1741 : set up the echo used in my read
1742 myecho="case \"\$xxxm\" in
1743 '') echo $n \"\$rp $c\" >&4;;
1744 *) case \"\$rp\" in
1745         '') echo $n \"[\$xxxm] $c\";;
1746         *)
1747                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1748                         echo \"\$rp\" >&4
1749                         echo $n \"[\$xxxm] $c\" >&4
1750                 else
1751                         echo $n \"\$rp [\$xxxm] $c\" >&4
1752                 fi
1753                 ;;
1754         esac;;
1755 esac"
1756
1757 : now set up to do reads with possible shell escape and default assignment
1758 cat <<EOSC >myread
1759 $startsh
1760 xxxm=\$dflt
1761 $myecho
1762 ans='!'
1763 case "\$fastread" in
1764 yes) case "\$dflt" in
1765         '') ;;
1766         *) ans='';
1767                 case "\$silent-\$rp" in
1768                 true-) ;;
1769                 *) echo " " >&4;;
1770                 esac;;
1771         esac;;
1772 *) case "\$silent" in
1773         true) case "\$rp" in
1774                 '') ans='';;
1775                 esac;;
1776         esac;;
1777 esac
1778 while expr "X\$ans" : "X!" >/dev/null; do
1779         read answ
1780         set x \$xxxm
1781         shift
1782         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1783         case  "\$answ" in
1784         "!")
1785                 sh 1>&4
1786                 echo " "
1787                 $myecho
1788                 ;;
1789         !*)
1790                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1791                 shift
1792                 sh 1>&4 -c "\$*"
1793                 echo " "
1794                 $myecho
1795                 ;;
1796         "\$ans")
1797                 case "\$ans" in
1798                 \\&*)
1799                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1800                         shift
1801                         case "\$1" in
1802                         -d)
1803                                 fastread=yes
1804                                 echo "(OK, I'll run with -d after this question.)" >&4
1805                                 ;;
1806                         -*)
1807                                 echo "*** Sorry, \$1 not supported yet." >&4
1808                                 ;;
1809                         esac
1810                         $myecho
1811                         ans=!
1812                         ;;
1813                 esac;;
1814         *)
1815                 case "\$aok" in
1816                 y)
1817                         echo "*** Substitution done -- please confirm."
1818                         xxxm="\$ans"
1819                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1820                         xxxm="\$ans"
1821                         ans=!
1822                         ;;
1823                 *)
1824                         echo "*** Error -- try again."
1825                         ans=!
1826                         ;;
1827                 esac
1828                 $myecho
1829                 ;;
1830         esac
1831         case "\$ans\$xxxm\$nostick" in
1832         '')
1833                 ans=!
1834                 $myecho
1835                 ;;
1836         esac
1837 done
1838 case "\$ans" in
1839 '') ans="\$xxxm";;
1840 esac
1841 EOSC
1842
1843 : create .config dir to save info across Configure sessions
1844 test -d ../.config || mkdir ../.config
1845 cat >../.config/README <<EOF
1846 This directory created by Configure to save information that should
1847 persist across sessions for $package.
1848
1849 You may safely delete it if you wish.
1850 EOF
1851
1852 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1853 case "$usedevel" in
1854 $define|true|[yY]*) ;;
1855 *) case "$xversion" in
1856    *[13579])
1857         cat >&4 <<EOH
1858 *** WHOA THERE!!! ***
1859
1860     This is an UNSTABLE DEVELOPMENT release.
1861     The version of this $package distribution is $xversion, that is, odd,
1862     (as opposed to even) and that signifies a development release.
1863     If you want a maintenance release, you want an even-numbered version.
1864
1865     Do ***NOT*** install this into production use.
1866     Data corruption and crashes are possible.
1867
1868     It is most seriously suggested that you do not continue any further
1869     unless you want to help in developing and debugging Perl.
1870
1871     If you *still* want to build perl, you can answer 'y' now,
1872     or pass -Dusedevel to Configure.
1873
1874 EOH
1875         rp='Do you really want to continue?'
1876         dflt='n'
1877         . ./myread
1878         case "$ans" in
1879         [yY]) echo >&4 "Okay, continuing."
1880               usedevel="$define" ;;
1881         *) echo >&4 "Okay, bye."
1882            exit 1
1883            ;;
1884         esac
1885         ;;
1886     esac
1887     ;;
1888 esac
1889 case "$usedevel" in
1890 $define|true|[yY]*)
1891         case "$versiononly" in
1892         '') versiononly="$define" ;;
1893         esac
1894         case "$installusrbinperl" in
1895         '') installusrbinperl="$undef" ;;
1896         esac
1897         ;;
1898 esac
1899
1900 : general instructions
1901 needman=true
1902 firsttime=true
1903 user=`(logname) 2>/dev/null`
1904 case "$user" in
1905 '') user=`whoami 2>&1`;;
1906 esac
1907 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1908         firsttime=false
1909         echo " "
1910         rp='Would you like to see the instructions?'
1911         dflt=n
1912         . ./myread
1913         case "$ans" in
1914         [yY]*) ;;
1915         *) needman=false;;
1916         esac
1917 fi
1918 if $needman; then
1919         cat <<EOH
1920
1921 This installation shell script will examine your system and ask you questions
1922 to determine how the perl5 package should be installed. If you get
1923 stuck on a question, you may use a ! shell escape to start a subshell or
1924 execute a command.  Many of the questions will have default answers in square
1925 brackets; typing carriage return will give you the default.
1926
1927 On some of the questions which ask for file or directory names you are allowed
1928 to use the ~name construct to specify the login directory belonging to "name",
1929 even if you don't have a shell which knows about that.  Questions where this is
1930 allowed will be marked "(~name ok)".
1931
1932 EOH
1933         rp=''
1934         dflt='Type carriage return to continue'
1935         . ./myread
1936         cat <<'EOH'
1937
1938 The prompter used in this script allows you to use shell variables and
1939 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1940 in the default answer, as if the default line was a set of arguments given to a
1941 script shell.  This means you may also use $* to repeat the whole default line,
1942 so you do not have to re-type everything to add something to the default.
1943
1944 Everytime there is a substitution, you will have to confirm.  If there is an
1945 error (e.g. an unmatched backtick), the default answer will remain unchanged
1946 and you will be prompted again.
1947
1948 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1949 the questions and use the computed defaults (or the previous answers if there
1950 was already a config.sh file). Type 'Configure -h' for a list of options.
1951 You may also start interactively and then answer '& -d' at any prompt to turn
1952 on the non-interactive behaviour for the remainder of the execution.
1953
1954 EOH
1955         . ./myread
1956         cat <<EOH
1957
1958 Much effort has been expended to ensure that this shell script will run on any
1959 Unix system.  If despite that it blows up on yours, your best bet is to edit
1960 Configure and run it again.  If you can't run Configure for some reason,
1961 you'll have to generate a config.sh file by hand.  Whatever problems you
1962 have, let me (perlbug@perl.org) know how I blew it.
1963
1964 This installation script affects things in two ways:
1965
1966 1) it may do direct variable substitutions on some of the files included
1967    in this kit.
1968 2) it builds a config.h file for inclusion in C programs.  You may edit
1969    any of these files as the need arises after running this script.
1970
1971 If you make a mistake on a question, there is no easy way to back up to it
1972 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1973 files.  Configure will offer to let you do this before it runs the SH files.
1974
1975 EOH
1976         dflt='Type carriage return to continue'
1977         . ./myread
1978         case "$firsttime" in
1979         true) echo $user >>../.config/instruct;;
1980         esac
1981 fi
1982
1983 : find out where common programs are
1984 echo " "
1985 echo "Locating common programs..." >&4
1986 cat <<EOSC >loc
1987 $startsh
1988 case \$# in
1989 0) exit 1;;
1990 esac
1991 thing=\$1
1992 shift
1993 dflt=\$1
1994 shift
1995 for dir in \$*; do
1996         case "\$thing" in
1997         .)
1998         if test -d \$dir/\$thing; then
1999                 echo \$dir
2000                 exit 0
2001         fi
2002         ;;
2003         *)
2004         for thisthing in \$dir/\$thing; do
2005                 : just loop through to pick last item
2006         done
2007         if test -f \$thisthing; then
2008                 echo \$thisthing
2009                 exit 0
2010         elif test -f \$dir/\$thing.exe; then
2011                 if test -n "$DJGPP"; then
2012                         echo \$dir/\$thing.exe
2013                 else
2014                         : on Eunice apparently
2015                         echo \$dir/\$thing
2016                 fi
2017                 exit 0
2018         fi
2019         ;;
2020         esac
2021 done
2022 echo \$dflt
2023 exit 1
2024 EOSC
2025 chmod +x loc
2026 $eunicefix loc
2027 loclist="
2028 awk
2029 cat
2030 chmod
2031 comm
2032 cp
2033 echo
2034 expr
2035 grep
2036 ls
2037 make
2038 mkdir
2039 rm
2040 sed
2041 sort
2042 touch
2043 tr
2044 uniq
2045 "
2046 trylist="
2047 Mcc
2048 ar
2049 bison
2050 byacc
2051 cpp
2052 csh
2053 date
2054 egrep
2055 gzip
2056 less
2057 ln
2058 more
2059 nm
2060 nroff
2061 pg
2062 test
2063 uname
2064 zip
2065 "
2066 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2067 pth="$pth /lib /usr/lib"
2068 for file in $loclist; do
2069         eval xxx=\$$file
2070         case "$xxx" in
2071         /*|?:[\\/]*)
2072                 if test -f "$xxx"; then
2073                         : ok
2074                 else
2075                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2076                         xxx=`./loc $file $file $pth`
2077                 fi
2078                 ;;
2079         '') xxx=`./loc $file $file $pth`;;
2080         *) xxx=`./loc $xxx $xxx $pth`;;
2081         esac
2082         eval $file=$xxx
2083         eval _$file=$xxx
2084         case "$xxx" in
2085         /*)
2086                 echo $file is in $xxx.
2087                 ;;
2088         ?:[\\/]*)
2089                 echo $file is in $xxx.
2090                 ;;
2091         *)
2092                 echo "I don't know where '$file' is, and my life depends on it." >&4
2093                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2094                 exit 1
2095                 ;;
2096         esac
2097 done
2098 echo " "
2099 echo "Don't worry if any of the following aren't found..."
2100 say=offhand
2101 for file in $trylist; do
2102         eval xxx=\$$file
2103         case "$xxx" in
2104         /*|?:[\\/]*)
2105                 if test -f "$xxx"; then
2106                         : ok
2107                 else
2108                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2109                         xxx=`./loc $file $file $pth`
2110                 fi
2111                 ;;
2112         '') xxx=`./loc $file $file $pth`;;
2113         *) xxx=`./loc $xxx $xxx $pth`;;
2114         esac
2115         eval $file=$xxx
2116         eval _$file=$xxx
2117         case "$xxx" in
2118         /*)
2119                 echo $file is in $xxx.
2120                 ;;
2121         ?:[\\/]*)
2122                 echo $file is in $xxx.
2123                 ;;
2124         *)
2125                 echo "I don't see $file out there, $say."
2126                 say=either
2127                 ;;
2128         esac
2129 done
2130 case "$egrep" in
2131 egrep)
2132         echo "Substituting grep for egrep."
2133         egrep=$grep
2134         ;;
2135 esac
2136 case "$ln" in
2137 ln)
2138         echo "Substituting cp for ln."
2139         ln=$cp
2140         ;;
2141 esac
2142 case "$test" in
2143 test)
2144         echo "Hopefully test is built into your sh."
2145         ;;
2146 *)
2147         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2148                 echo "Using the test built into your sh."
2149                 test=test
2150                 _test=test
2151         fi
2152         ;;
2153 esac
2154 case "$echo" in
2155 echo)
2156         echo "Hopefully echo is built into your sh."
2157         ;;
2158 '') ;;
2159 *)
2160         echo " "
2161 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2162         $echo $n "hi there$c" >foo1
2163         echo $n "hi there$c" >foo2
2164         if cmp foo1 foo2 >/dev/null 2>&1; then
2165                 echo "They are compatible.  In fact, they may be identical."
2166         else
2167                 case "$n" in
2168                 '-n') n='' c='\c';;
2169                 *) n='-n' c='';;
2170                 esac
2171                 cat <<FOO
2172 They are not compatible!  You are probably running ksh on a non-USG system.
2173 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2174 have echo built in and we may have to run some Bourne shell scripts.  That
2175 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2176
2177 FOO
2178                 $echo $n "The star should be here-->$c"
2179                 $echo "*"
2180         fi
2181         $rm -f foo1 foo2
2182         ;;
2183 esac
2184
2185 cat <<EOS >checkcc
2186 $startsh
2187 EOS
2188 cat <<'EOSC' >>checkcc
2189 case "$cc" in
2190 '') ;;
2191 *)  $rm -f try try.*
2192     $cat >try.c <<EOM
2193 int main(int argc, char *argv[]) {
2194   return 0;
2195 }
2196 EOM
2197     if $cc -o try $ccflags $ldflags try.c; then
2198        :
2199     else
2200         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2201         despair=yes
2202         trygcc=yes
2203         case "$cc" in
2204         *gcc*) trygcc=no ;;
2205         esac
2206         case "`$cc -v -c try.c 2>&1`" in
2207         *gcc*) trygcc=no ;;
2208         esac
2209         if $test X"$trygcc" = Xyes; then
2210             if gcc -o try -c try.c; then
2211                 echo " "
2212                 echo "You seem to have a working gcc, though." >&4
2213                 rp="Would you like to use it?"
2214                 dflt=y
2215                 if $test -f myread; then
2216                     . ./myread
2217                 else
2218                     if $test -f UU/myread; then
2219                         . ./UU/myread
2220                     else
2221                         echo "Cannot find myread, sorry.  Aborting." >&2
2222                         exit 1
2223                     fi
2224                 fi  
2225                 case "$ans" in
2226                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2227                 esac
2228             fi
2229         fi
2230         if $test X"$despair" = Xyes; then
2231             $cat >&4 <<EOM
2232 You need to find a working C compiler.
2233 Either (purchase and) install the C compiler supplied by your OS vendor,
2234 or for a free C compiler try http://gcc.gnu.org/
2235 I cannot continue any further, aborting.
2236 EOM
2237             exit 1
2238         fi
2239     fi
2240     $rm -f try try.*
2241     ;;
2242 esac
2243 EOSC
2244
2245 : determine whether symbolic links are supported
2246 echo " "
2247 $touch blurfl
2248 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2249         echo "Symbolic links are supported." >&4
2250         lns="$ln -s"
2251 else
2252         echo "Symbolic links are NOT supported." >&4
2253         lns="$ln"
2254 fi
2255 $rm -f blurfl sym
2256
2257 : determine whether symbolic links are supported
2258 echo " "
2259 case "$lns" in
2260 *"ln -s")
2261         echo "Checking how to test for symbolic links..." >&4
2262         $lns blurfl sym
2263         if $test "X$issymlink" = X; then
2264                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2265                 if test $? = 0; then
2266                         issymlink="test -h"
2267                 fi              
2268         fi
2269         if $test "X$issymlink" = X; then
2270                 if  $test -h >/dev/null 2>&1; then
2271                         issymlink="$test -h"
2272                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2273                 fi              
2274         fi
2275         if $test "X$issymlink" = X; then
2276                 if $test -L sym 2>/dev/null; then
2277                         issymlink="$test -L"
2278                 fi
2279         fi
2280         if $test "X$issymlink" != X; then
2281                 echo "You can test for symbolic links with '$issymlink'." >&4
2282         else
2283                 echo "I do not know how you can test for symbolic links." >&4
2284         fi
2285         $rm -f blurfl sym
2286         ;;
2287 *)      echo "No symbolic links, so not testing for their testing..." >&4
2288         ;;
2289 esac
2290 echo " "
2291
2292
2293 case "$mksymlinks" in
2294 $define|true|[yY]*)
2295         case "$src" in
2296         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2297                 exit 1
2298                 ;;
2299         *)      case "$lns:$issymlink" in
2300                 *"ln -s:"*"test -"?)
2301                         echo "Creating the symbolic links..." >&4
2302                         echo "(First creating the subdirectories...)" >&4
2303                         cd ..
2304                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2305                                 read directory
2306                                 test -z "$directory" && break
2307                                 mkdir -p $directory
2308                         done
2309                         # Sanity check 1.
2310                         if test ! -d t/base; then
2311                                 echo "Failed to create the subdirectories.  Aborting." >&4
2312                                 exit 1
2313                         fi
2314                         echo "(Then creating the symlinks...)" >&4
2315                         awk '{print $1}' $src/MANIFEST | while true; do
2316                                 read filename
2317                                 test -z "$filename" && break
2318                                 if test -f $filename; then
2319                                         if $issymlink $filename; then
2320                                                 rm -f $filename
2321                                         fi
2322                                 fi
2323                                 if test -f $filename; then
2324                                         echo "$filename already exists, not symlinking."
2325                                 else
2326                                         ln -s $src/$filename $filename
2327                                 fi
2328                         done
2329                         # Sanity check 2.
2330                         if test ! -f t/base/lex.t; then
2331                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2332                                 exit 1
2333                         fi
2334                         cd UU
2335                         ;;
2336                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2337                         ;;
2338                 esac
2339                 ;;
2340         esac
2341         ;;
2342 esac
2343
2344
2345 case "$usecrosscompile" in
2346 $define|true|[yY]*)
2347         $echo "Cross-compiling..."
2348         croak=''
2349         case "$cc" in
2350         *-*-gcc) # A cross-compiling gcc, probably.
2351             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2352             ar=$targetarch-ar
2353             # leave out ld, choosing it is more complex
2354             nm=$targetarch-nm
2355             ranlib=$targetarch-ranlib
2356             $echo 'extern int foo;' > try.c
2357             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2358             shift
2359             if $test $# -gt 0; then
2360                 incpth="$incpth $*"
2361                 incpth="`$echo $incpth|$sed 's/^ //'`"
2362                 echo "Guessing incpth '$incpth'." >&4
2363                 for i in $*; do
2364                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2365                     if $test -d $j; then
2366                         libpth="$libpth $j"
2367                     fi
2368                 done   
2369                 libpth="`$echo $libpth|$sed 's/^ //'`"
2370                 echo "Guessing libpth '$libpth'." >&4
2371             fi
2372             $rm -f try.c
2373             ;;
2374         esac
2375         case "$targetarch" in
2376         '') echo "Targetarch not defined." >&4; croak=y ;;
2377         *)  echo "Using targetarch $targetarch." >&4 ;;
2378         esac
2379         case "$incpth" in
2380         '') echo "Incpth not defined." >&4; croak=y ;;
2381         *)  echo "Using incpth '$incpth'." >&4 ;;
2382         esac
2383         case "$libpth" in
2384         '') echo "Libpth not defined." >&4; croak=y ;;
2385         *)  echo "Using libpth '$libpth'." >&4 ;;
2386         esac
2387         case "$usrinc" in
2388         '') for i in $incpth; do
2389                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2390                     usrinc=$i
2391                     echo "Guessing usrinc $usrinc." >&4
2392                     break
2393                 fi
2394             done
2395             case "$usrinc" in
2396             '') echo "Usrinc not defined." >&4; croak=y ;;
2397             esac
2398             ;;
2399         *)  echo "Using usrinc $usrinc." >&4 ;;
2400         esac
2401         case "$targethost" in
2402         '') echo "Targethost not defined." >&4; croak=y ;;
2403         *)  echo "Using targethost $targethost." >&4
2404         esac
2405         locincpth=' '
2406         loclibpth=' '
2407         case "$croak" in
2408         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2409         esac
2410         case "$src" in
2411         /*) run=$src/Cross/run
2412             targetmkdir=$src/Cross/mkdir
2413             to=$src/Cross/to
2414             from=$src/Cross/from
2415             ;;
2416         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2417             run=$pwd/Cross/run
2418             targetmkdir=$pwd/Cross/mkdir
2419             to=$pwd/Cross/to
2420             from=$pwd/Cross/from
2421             ;;
2422         esac
2423         case "$targetrun" in
2424         '') targetrun=ssh ;;
2425         esac
2426         case "$targetto" in
2427         '') targetto=scp ;;
2428         esac
2429         case "$targetfrom" in
2430         '') targetfrom=scp ;;
2431         esac
2432         run=$run-$targetrun
2433         to=$to-$targetto
2434         from=$from-$targetfrom
2435         case "$targetdir" in
2436         '')  targetdir=/tmp
2437              echo "Guessing targetdir $targetdir." >&4
2438              ;;
2439         esac
2440         case "$targetuser" in
2441         '')  targetuser=root
2442              echo "Guessing targetuser $targetuser." >&4
2443              ;;
2444         esac
2445         case "$targetfrom" in
2446         scp)    q=-q ;;
2447         *)      q='' ;;
2448         esac
2449         case "$targetrun" in
2450         ssh|rsh)
2451             cat >$run <<EOF
2452 #!/bin/sh
2453 case "\$1" in
2454 -cwd)
2455   shift
2456   cwd=\$1
2457   shift
2458   ;;
2459 esac
2460 case "\$cwd" in
2461 '') cwd=$targetdir ;;
2462 esac
2463 exe=\$1
2464 shift
2465 if $test ! -f \$exe.xok; then
2466   $to \$exe
2467   $touch \$exe.xok
2468 fi
2469 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2470 EOF
2471             ;;
2472         *)  echo "Unknown targetrun '$targetrun'" >&4
2473             exit 1
2474             ;;
2475         esac
2476         case "$targetmkdir" in
2477         */Cross/mkdir)
2478             cat >$targetmkdir <<EOF
2479 #!/bin/sh
2480 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2481 EOF
2482             $chmod a+rx $targetmkdir
2483             ;;
2484         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2485             exit 1
2486             ;;
2487         esac
2488         case "$targetto" in
2489         scp|rcp)
2490             cat >$to <<EOF
2491 #!/bin/sh
2492 for f in \$@
2493 do
2494   case "\$f" in
2495   /*)
2496     $targetmkdir \`dirname \$f\`
2497     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2498     ;;
2499   *)
2500     $targetmkdir $targetdir/\`dirname \$f\`
2501     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2502     ;;
2503   esac
2504 done
2505 exit 0
2506 EOF
2507             ;;
2508         cp) cat >$to <<EOF
2509 #!/bin/sh
2510 for f in \$@
2511 do
2512   case "\$f" in
2513   /*)
2514     $mkdir -p $targetdir/\`dirname \$f\`
2515     $cp \$f $targetdir/\$f || exit 1
2516     ;;
2517   *)
2518     $targetmkdir $targetdir/\`dirname \$f\`
2519     $cp \$f $targetdir/\$f || exit 1
2520     ;;
2521   esac
2522 done
2523 exit 0
2524 EOF
2525             ;;
2526         *)  echo "Unknown targetto '$targetto'" >&4
2527             exit 1
2528             ;;
2529         esac
2530         case "$targetfrom" in
2531         scp|rcp)
2532           cat >$from <<EOF
2533 #!/bin/sh
2534 for f in \$@
2535 do
2536   $rm -f \$f
2537   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2538 done
2539 exit 0
2540 EOF
2541             ;;
2542         cp) cat >$from <<EOF
2543 #!/bin/sh
2544 for f in \$@
2545 do
2546   $rm -f \$f
2547   cp $targetdir/\$f . || exit 1
2548 done
2549 exit 0
2550 EOF
2551             ;;
2552         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2553             exit 1
2554             ;;
2555         esac
2556         if $test ! -f $run; then
2557             echo "Target 'run' script '$run' not found." >&4
2558         else
2559             $chmod a+rx $run
2560         fi
2561         if $test ! -f $to; then
2562             echo "Target 'to' script '$to' not found." >&4
2563         else
2564             $chmod a+rx $to
2565         fi
2566         if $test ! -f $from; then
2567             echo "Target 'from' script '$from' not found." >&4
2568         else
2569             $chmod a+rx $from
2570         fi
2571         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2572             exit 1
2573         fi
2574         cat >&4 <<EOF
2575 Using '$run' for remote execution,
2576 and '$from' and '$to'
2577 for remote file transfer.
2578 EOF
2579         ;;
2580 *)      run=''
2581         to=:
2582         from=:
2583         usecrosscompile='undef'
2584         targetarch=''
2585         ;;
2586 esac
2587
2588 : see whether [:lower:] and [:upper:] are supported character classes
2589 echo " "
2590 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2591 ABYZ)
2592         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2593         up='[:upper:]'
2594         low='[:lower:]'
2595         ;;
2596 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2597         # (0xc9 and 0xd1), therefore that is a nice testing point.
2598         if test "X$up" = X -o "X$low" = X; then
2599             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2600             ij) up='[A-Z]'
2601                 low='[a-z]'
2602                 ;;
2603             esac
2604         fi
2605         if test "X$up" = X -o "X$low" = X; then
2606             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2607             ij) up='A-Z'
2608                 low='a-z'
2609                 ;;
2610             esac
2611         fi
2612         if test "X$up" = X -o "X$low" = X; then
2613             case "`echo IJ | od -x 2>/dev/null`" in
2614             *C9D1*|*c9d1*)
2615                 echo "Hey, this might be EBCDIC." >&4
2616                 if test "X$up" = X -o "X$low" = X; then
2617                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2618                     ij) up='[A-IJ-RS-Z]'
2619                         low='[a-ij-rs-z]'
2620                         ;;
2621                     esac
2622                 fi
2623                 if test "X$up" = X -o "X$low" = X; then
2624                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2625                     ij) up='A-IJ-RS-Z'
2626                         low='a-ij-rs-z'
2627                         ;;
2628                     esac
2629                 fi
2630                 ;;
2631             esac
2632         fi
2633 esac
2634 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2635 ij)
2636     echo "Using $up and $low to convert case." >&4
2637     ;;
2638 *)
2639     echo "I don't know how to translate letters from upper to lower case." >&4
2640     echo "Your tr is not acting any way I know of." >&4
2641     exit 1
2642     ;;
2643 esac
2644 : set up the translation script tr, must be called with ./tr of course
2645 cat >tr <<EOSC
2646 $startsh
2647 case "\$1\$2" in
2648 '[A-Z][a-z]') exec $tr '$up' '$low';;
2649 '[a-z][A-Z]') exec $tr '$low' '$up';;
2650 esac
2651 exec $tr "\$@"
2652 EOSC
2653 chmod +x tr
2654 $eunicefix tr
2655
2656 : Try to determine whether config.sh was made on this system
2657 case "$config_sh" in
2658 '')
2659 myuname=`$uname -a 2>/dev/null`
2660 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2661 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2662 # because the A-Z/a-z are not consecutive.
2663 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2664         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2665 newmyuname="$myuname"
2666 dflt=n
2667 case "$knowitall" in
2668 '')
2669         if test -f ../config.sh; then
2670                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2671                         eval "`grep myuname= ../config.sh`"
2672                 fi
2673                 if test "X$myuname" = "X$newmyuname"; then
2674                         dflt=y
2675                 fi
2676         fi
2677         ;;
2678 *) dflt=y;;
2679 esac
2680
2681 : Get old answers from old config file if Configure was run on the
2682 : same system, otherwise use the hints.
2683 hint=default
2684 cd ..
2685 if test -f config.sh; then
2686         echo " "
2687         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2688         . UU/myread
2689         case "$ans" in
2690         n*|N*) echo "OK, I'll ignore it."
2691                 mv config.sh config.sh.old
2692                 myuname="$newmyuname"
2693                 ;;
2694         *)  echo "Fetching default answers from your old config.sh file..." >&4
2695                 tmp_n="$n"
2696                 tmp_c="$c"
2697                 tmp_sh="$sh"
2698                 . ./config.sh
2699                 cp config.sh UU
2700                 n="$tmp_n"
2701                 c="$tmp_c"
2702                 : Older versions did not always set $sh.  Catch re-use of such
2703                 : an old config.sh.
2704                 case "$sh" in
2705                 '') sh="$tmp_sh" ;;
2706                 esac
2707                 hint=previous
2708                 ;;
2709         esac
2710 fi
2711 . ./UU/checkcc
2712 if test ! -f config.sh; then
2713         $cat <<EOM
2714
2715 First time through, eh?  I have some defaults handy for some systems
2716 that need some extra help getting the Configure answers right:
2717
2718 EOM
2719         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2720         dflt=''
2721         : Half the following guesses are probably wrong... If you have better
2722         : tests or hints, please send them to perlbug@perl.org
2723         : The metaconfig authors would also appreciate a copy...
2724         $test -f /irix && osname=irix
2725         $test -f /xenix && osname=sco_xenix
2726         $test -f /dynix && osname=dynix
2727         $test -f /dnix && osname=dnix
2728         $test -f /lynx.os && osname=lynxos
2729         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2730         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2731         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2732         $test -f /bin/mips && /bin/mips && osname=mips
2733         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2734                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2735         $test -d /usr/apollo/bin && osname=apollo
2736         $test -f /etc/saf/_sactab && osname=svr4
2737         $test -d /usr/include/minix && osname=minix
2738         if $test -d /MachTen -o -d /MachTen_Folder; then
2739                 osname=machten
2740                 if $test -x /sbin/version; then
2741                         osvers=`/sbin/version | $awk '{print $2}' |
2742                         $sed -e 's/[A-Za-z]$//'`
2743                 elif $test -x /usr/etc/version; then
2744                         osvers=`/usr/etc/version | $awk '{print $2}' |
2745                         $sed -e 's/[A-Za-z]$//'`
2746                 else
2747                         osvers="$2.$3"
2748                 fi
2749         fi
2750
2751         $test -f /sys/posix.dll &&
2752                 $test -f /usr/bin/what &&
2753                 set X `/usr/bin/what /sys/posix.dll` &&
2754                 $test "$3" = UWIN &&
2755                 osname=uwin &&
2756                 osvers="$5"
2757
2758         if $test -f $uname; then
2759                 set X $myuname
2760                 shift
2761
2762                 case "$5" in
2763                 fps*) osname=fps ;;
2764                 mips*)
2765                         case "$4" in
2766                         umips) osname=umips ;;
2767                         *) osname=mips ;;
2768                         esac;;
2769                 [23]100) osname=mips ;;
2770                 next*) osname=next ;;
2771                 i386*)
2772                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2773                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2774                                 osname='sco'
2775                                 osvers=$tmp
2776                         elif $test -f /etc/kconfig; then
2777                                 osname=isc
2778                                 if test "$lns" = "$ln -s"; then
2779                                         osvers=4
2780                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2781                                         osvers=3
2782                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2783                                         osvers=2
2784                                 fi
2785                         fi
2786                         tmp=''
2787                         ;;
2788                 pc*)
2789                         if test -n "$DJGPP"; then
2790                                 osname=dos
2791                                 osvers=djgpp
2792                         fi
2793                         ;;
2794                 esac
2795
2796                 case "$1" in
2797                 aix) osname=aix
2798                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2799                         case "$tmp" in
2800                         'not found') osvers="$4"."$3" ;;
2801                         '<3240'|'<>3240') osvers=3.2.0 ;;
2802                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2803                         '=3250'|'>3250') osvers=3.2.5 ;;
2804                         *) osvers=$tmp;;
2805                         esac
2806                         ;;
2807                 bsd386) osname=bsd386
2808                         osvers=`$uname -r`
2809                         ;;
2810                 cygwin*) osname=cygwin
2811                         osvers="$3"
2812                         ;;
2813                 *dc.osx) osname=dcosx
2814                         osvers="$3"
2815                         ;;
2816                 dnix) osname=dnix
2817                         osvers="$3"
2818                         ;;
2819                 domainos) osname=apollo
2820                         osvers="$3"
2821                         ;;
2822                 dgux) osname=dgux 
2823                         osvers="$3"
2824                         ;;
2825                 dynixptx*) osname=dynixptx
2826                         osvers=`echo "$4"|sed 's/^v//'`
2827                         ;;
2828                 freebsd) osname=freebsd 
2829                         osvers="$3" ;;
2830                 genix) osname=genix ;;
2831                 hp*) osname=hpux 
2832                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2833                         ;;
2834                 irix*) osname=irix
2835                         case "$3" in
2836                         4*) osvers=4 ;;
2837                         5*) osvers=5 ;;
2838                         *)      osvers="$3" ;;
2839                         esac
2840                         ;;
2841                 linux) osname=linux
2842                         case "$3" in
2843                         *)      osvers="$3" ;;
2844                         esac
2845                         ;;
2846                 MiNT) osname=mint
2847                         ;;
2848                 netbsd*) osname=netbsd
2849                         osvers="$3"
2850                         ;;
2851                 news-os) osvers="$3"
2852                         case "$3" in
2853                         4*) osname=newsos4 ;;
2854                         *) osname=newsos ;;
2855                         esac
2856                         ;;
2857                 next*) osname=next ;;
2858                 nonstop-ux) osname=nonstopux ;;
2859                 POSIX-BC | posix-bc ) osname=posix-bc
2860                         osvers="$3"
2861                         ;;
2862                 powerux | power_ux | powermax_os | powermaxos | \
2863                 powerunix | power_unix) osname=powerux
2864                         osvers="$3"
2865                         ;;
2866                 qnx) osname=qnx
2867                         osvers="$4"
2868                         ;;
2869                 solaris) osname=solaris
2870                         case "$3" in
2871                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2872                         *)      osvers="$3" ;;
2873                         esac
2874                         ;;
2875                 sunos) osname=sunos
2876                         case "$3" in
2877                         5*) osname=solaris
2878                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2879                         *)      osvers="$3" ;;
2880                         esac
2881                         ;;
2882                 titanos) osname=titanos
2883                         case "$3" in
2884                         1*) osvers=1 ;;
2885                         2*) osvers=2 ;;
2886                         3*) osvers=3 ;;
2887                         4*) osvers=4 ;;
2888                         *)      osvers="$3" ;;
2889                         esac
2890                         ;;
2891                 ultrix) osname=ultrix
2892                         osvers="$3"
2893                         ;;
2894                 osf1|mls+)      case "$5" in
2895                                 alpha)
2896                                         osname=dec_osf
2897                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2898                                         case "$osvers" in
2899                                         [1-9].[0-9]*) ;;
2900                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2901                                         esac
2902                                         ;;
2903                         hp*)    osname=hp_osf1  ;;
2904                         mips)   osname=mips_osf1 ;;
2905                         esac
2906                         ;;
2907                 unixware) osname=svr5
2908                         osvers="$4"
2909                         ;;
2910                 uts) osname=uts
2911                         osvers="$3"
2912                         ;;
2913                 $2) case "$osname" in
2914                         *isc*) ;;
2915                         *freebsd*) ;;
2916                         svr*)
2917                                 : svr4.x or possibly later
2918                                 case "svr$3" in 
2919                                 ${osname}*)
2920                                         osname=svr$3
2921                                         osvers=$4
2922                                         ;;
2923                                 esac
2924                                 case "$osname" in
2925                                 svr4.0)
2926                                         : Check for ESIX
2927                                         if test -f /stand/boot ; then
2928                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2929                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2930                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2931                                                         if test -n "$isesix"; then
2932                                                                 osname=esix4
2933                                                         fi
2934                                                 fi
2935                                         fi
2936                                         ;;
2937                                 esac
2938                                 ;;
2939                         *)      if test -f /etc/systemid; then
2940                                         osname=sco
2941                                         set `echo $3 | $sed 's/\./ /g'` $4
2942                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2943                                                 osvers=$1.$2.$3
2944                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2945                                                 osvers=$1.$2
2946                                         elif $test -f $src/hints/sco_$1.sh; then
2947                                                 osvers=$1
2948                                         fi
2949                                 else
2950                                         case "$osname" in
2951                                         '') : Still unknown.  Probably a generic Sys V.
2952                                                 osname="sysv"
2953                                                 osvers="$3"
2954                                                 ;;
2955                                         esac
2956                                 fi
2957                                 ;;
2958                         esac
2959                         ;;
2960                 *)      case "$osname" in
2961                         '') : Still unknown.  Probably a generic BSD.
2962                                 osname="$1"
2963                                 osvers="$3"
2964                                 ;;
2965                         esac
2966                         ;;
2967                 esac
2968         else
2969                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2970                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2971                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2972                                 osname=news_os
2973                         fi
2974                         $rm -f UU/kernel.what
2975                 elif test -d c:/.; then
2976                         set X $myuname
2977                         osname=os2
2978                         osvers="$5"
2979                 fi
2980         fi
2981         
2982         case "$targetarch" in
2983         '') ;;
2984         *)  hostarch=$osname
2985             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2986             osvers=''
2987             ;;
2988         esac
2989
2990         : Now look for a hint file osname_osvers, unless one has been
2991         : specified already.
2992         case "$hintfile" in
2993         ''|' ')
2994                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2995                 : Also try without trailing minor version numbers.
2996                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2997                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2998                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2999                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3000                 case "$file" in
3001                 '') dflt=none ;;
3002                 *)  case "$osvers" in
3003                         '') dflt=$file
3004                                 ;;
3005                         *)  if $test -f $src/hints/$file.sh ; then
3006                                         dflt=$file
3007                                 elif $test -f $src/hints/$xfile.sh ; then
3008                                         dflt=$xfile
3009                                 elif $test -f $src/hints/$xxfile.sh ; then
3010                                         dflt=$xxfile
3011                                 elif $test -f $src/hints/$xxxfile.sh ; then
3012                                         dflt=$xxxfile
3013                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3014                                         dflt=$xxxxfile
3015                                 elif $test -f "$src/hints/${osname}.sh" ; then
3016                                         dflt="${osname}"
3017                                 else
3018                                         dflt=none
3019                                 fi
3020                                 ;;
3021                         esac
3022                         ;;
3023                 esac
3024                 if $test -f Policy.sh ; then
3025                         case "$dflt" in
3026                         *Policy*) ;;
3027                         none) dflt="Policy" ;;
3028                         *) dflt="Policy $dflt" ;;
3029                         esac
3030                 fi
3031                 ;;
3032         *)
3033                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3034                 ;;
3035         esac
3036
3037         if $test -f Policy.sh ; then
3038                 $cat <<EOM
3039
3040 There's also a Policy hint file available, which should make the
3041 site-specific (policy) questions easier to answer.
3042 EOM
3043
3044         fi
3045
3046         $cat <<EOM
3047
3048 You may give one or more space-separated answers, or "none" if appropriate.
3049 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3050 is a good thing.  DO NOT give a wrong version or a wrong OS.
3051
3052 EOM
3053
3054         rp="Which of these apply, if any?"
3055         . UU/myread
3056         tans=$ans
3057         for file in $tans; do
3058                 if $test X$file = XPolicy -a -f Policy.sh; then
3059                         . Policy.sh
3060                         $cat Policy.sh >> UU/config.sh
3061                 elif $test -f $src/hints/$file.sh; then
3062                         . $src/hints/$file.sh
3063                         $cat $src/hints/$file.sh >> UU/config.sh
3064                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3065                         : nothing
3066                 else
3067                         : Give one chance to correct a possible typo.
3068                         echo "$file.sh does not exist"
3069                         dflt=$file
3070                         rp="hint to use instead?"
3071                         . UU/myread
3072                         for file in $ans; do
3073                                 if $test -f "$src/hints/$file.sh"; then
3074                                         . $src/hints/$file.sh
3075                                         $cat $src/hints/$file.sh >> UU/config.sh
3076                                 elif $test X$ans = X -o X$ans = Xnone ; then
3077                                         : nothing
3078                                 else
3079                                         echo "$file.sh does not exist -- ignored."
3080                                 fi
3081                         done
3082                 fi
3083         done
3084
3085         hint=recommended
3086         : Remember our hint file for later.
3087         if $test -f "$src/hints/$file.sh" ; then
3088                 hintfile="$file"
3089         else
3090                 hintfile=''
3091         fi
3092 fi
3093 cd UU
3094 ;;
3095 *)
3096         echo " "
3097         echo "Fetching default answers from $config_sh..." >&4
3098         tmp_n="$n"
3099         tmp_c="$c"
3100         cd ..
3101         cp $config_sh config.sh 2>/dev/null
3102         chmod +w config.sh
3103         . ./config.sh
3104         cd UU
3105         cp ../config.sh .
3106         n="$tmp_n"
3107         c="$tmp_c"
3108         hint=previous
3109         ;;
3110 esac
3111 test "$override" && . ./optdef.sh
3112
3113 : Restore computed paths
3114 for file in $loclist $trylist; do
3115         eval $file="\$_$file"
3116 done
3117
3118 cat << EOM
3119
3120 Configure uses the operating system name and version to set some defaults.
3121 The default value is probably right if the name rings a bell. Otherwise,
3122 since spelling matters for me, either accept the default or answer "none"
3123 to leave it blank.
3124
3125 EOM
3126 case "$osname" in
3127         ''|' ')
3128                 case "$hintfile" in
3129                 ''|' '|none) dflt=none ;;
3130                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3131                 esac
3132                 ;;
3133         *) dflt="$osname" ;;
3134 esac
3135 rp="Operating system name?"
3136 . ./myread
3137 case "$ans" in
3138 none)  osname='' ;;
3139 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3140 esac
3141 echo " "
3142 case "$osvers" in
3143         ''|' ')
3144                 case "$hintfile" in
3145                 ''|' '|none) dflt=none ;;
3146                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3147                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3148                         case "$dflt" in
3149                         ''|' ') dflt=none ;;
3150                         esac
3151                         ;;
3152                 esac
3153                 ;;
3154         *) dflt="$osvers" ;;
3155 esac
3156 rp="Operating system version?"
3157 . ./myread
3158 case "$ans" in
3159 none)  osvers='' ;;
3160 *) osvers="$ans" ;;
3161 esac
3162
3163
3164 . ./posthint.sh
3165
3166 : who configured the system
3167 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3168 cf_by=`(logname) 2>/dev/null`
3169 case "$cf_by" in
3170 "")
3171         cf_by=`(whoami) 2>/dev/null`
3172         case "$cf_by" in
3173         "") cf_by=unknown ;;
3174         esac ;;
3175 esac
3176
3177 : set up the script used to warn in case of inconsistency
3178 cat <<EOS >whoa
3179 $startsh
3180 EOS
3181 cat <<'EOSC' >>whoa
3182 dflt=y
3183 echo " "
3184 echo "*** WHOA THERE!!! ***" >&4
3185 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3186 rp="    Keep the $hint value?"
3187 . ./myread
3188 case "$ans" in
3189 y) td=$was; tu=$was;;
3190 esac
3191 EOSC
3192
3193 : function used to set $1 to $val
3194 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3195 case "$val$was" in
3196 $define$undef) . ./whoa; eval "$var=\$td";;
3197 $undef$define) . ./whoa; eval "$var=\$tu";;
3198 *) eval "$var=$val";;
3199 esac'
3200
3201 case "$usethreads" in
3202 $define|true|[yY]*)     dflt='y';;
3203 *) dflt='n';;
3204 esac
3205 cat <<EOM
3206
3207 Perl can be built to take advantage of threads on some systems.
3208 To do so, Configure can be run with -Dusethreads.
3209
3210 Note that threading is a highly experimental feature, and
3211 some known race conditions still remain.  If you choose to try
3212 it, be very sure to not actually deploy it for production
3213 purposes.  README.threads has more details, and is required
3214 reading if you enable threads.
3215
3216 If this doesn't make any sense to you, just accept the default '$dflt'.
3217 EOM
3218 rp='Build a threading Perl?'
3219 . ./myread
3220 case "$ans" in
3221 y|Y)    val="$define" ;;
3222 *)      val="$undef" ;;
3223 esac
3224 set usethreads
3225 eval $setvar
3226
3227 case "$usethreads" in
3228 $define)
3229         $cat <<EOM
3230
3231 As of 5.5.640, Perl has two different internal threading implementations,
3232 the 5.005 version (5005threads) and an interpreter-based version
3233 (ithreads) that has one interpreter per thread.  Both are very 
3234 experimental.  This arrangement exists to help developers work out
3235 which one is better.
3236
3237 If you're a casual user, you probably don't want interpreter-threads
3238 at this time.  There doesn't yet exist a way to create threads from
3239 within Perl in this model, i.e., "use Thread;" will NOT work.
3240 EOM
3241         : Default to ithreads unless overridden on command line or with
3242         : old config.sh
3243         dflt='y'
3244         case "$use5005threads" in
3245                 $define|true|[yY]*) dflt='n';;
3246         esac
3247         case "$useithreads" in
3248                 $undef|false|[nN]*) dflt='n';;
3249         esac
3250         rp='Use interpreter-based ithreads?'
3251         . ./myread
3252         case "$ans" in
3253         y|Y)    val="$define" ;;
3254         *)      val="$undef" ;;
3255         esac
3256         set useithreads
3257         eval $setvar
3258         : Now set use5005threads to the opposite value.
3259         case "$useithreads" in
3260         $define) val="$undef" ;;
3261         *) val="$define" ;;
3262         esac
3263         set use5005threads
3264         eval $setvar
3265         ;;
3266 *)
3267         useithreads="$undef"
3268         use5005threads="$undef"
3269         ;;
3270 esac
3271
3272 case "$useithreads$use5005threads" in
3273 "$define$define")
3274         $cat >&4 <<EOM
3275
3276 You cannot have both the ithreads and the 5.005 threads enabled
3277 at the same time.  Disabling the 5.005 threads since they are
3278 much less stable than the ithreads.
3279
3280 EOM
3281         use5005threads="$undef"
3282         ;;
3283 esac
3284
3285 case "$d_oldpthreads" in
3286 '')     : Configure tests would be welcome here.  For now, assume undef.
3287         val="$undef" ;;
3288 *)      val="$d_oldpthreads" ;;
3289 esac
3290 set d_oldpthreads
3291 eval $setvar
3292
3293
3294 case "$usethreads" in
3295 "$define"|true|[yY]*)
3296 : Look for a hint-file generated 'call-back-unit'.  If the
3297 : user has specified that a threading perl is to be built,
3298 : we may need to set or change some other defaults.
3299         if $test -f usethreads.cbu; then
3300                 echo "Your platform has some specific hints for threaded builds, using them..."
3301                 . ./usethreads.cbu
3302         else
3303                 $cat <<EOM
3304 (Your platform doesn't have any specific hints for threaded builds.
3305  Assuming POSIX threads, then.)
3306 EOM
3307         fi
3308         ;;
3309 esac
3310
3311 cat <<EOM
3312
3313 Perl can be built so that multiple Perl interpreters can coexist
3314 within the same Perl executable.
3315 EOM
3316
3317 case "$useithreads" in
3318 $define)
3319         cat <<EOM
3320 This multiple interpreter support is required for interpreter-based threads.
3321 EOM
3322         val="$define"
3323         ;;
3324 *)      case "$usemultiplicity" in
3325         $define|true|[yY]*)     dflt='y';;
3326         *) dflt='n';;
3327         esac
3328         echo " "
3329         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3330         rp='Build Perl for multiplicity?'
3331         . ./myread
3332         case "$ans" in
3333         y|Y)    val="$define" ;;
3334         *)      val="$undef" ;;
3335         esac
3336         ;;
3337 esac
3338 set usemultiplicity
3339 eval $setvar
3340
3341
3342 case "$usemorebits" in
3343 "$define"|true|[yY]*)
3344         use64bitint="$define"
3345         uselongdouble="$define"
3346         usemorebits="$define"
3347         ;;
3348 *)      usemorebits="$undef"
3349         ;;
3350 esac
3351
3352 : make some quick guesses about what we are up against
3353 echo " "
3354 $echo $n "Hmm...  $c"
3355 echo exit 1 >bsd
3356 echo exit 1 >usg
3357 echo exit 1 >v7
3358 echo exit 1 >osf1
3359 echo exit 1 >eunice
3360 echo exit 1 >xenix
3361 echo exit 1 >venix
3362 echo exit 1 >os2
3363 d_bsd="$undef"
3364 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3365 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3366 then
3367         echo "Looks kind of like an OSF/1 system, but we'll see..."
3368         echo exit 0 >osf1
3369 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3370         xxx=`./loc addbib blurfl $pth`
3371         if $test -f $xxx; then
3372         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3373                 echo exit 0 >bsd
3374                 echo exit 0 >usg
3375         else
3376                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3377                         echo "Looks kind of like an extended USG system, but we'll see..."
3378                 else
3379                         echo "Looks kind of like a USG system, but we'll see..."
3380                 fi
3381                 echo exit 0 >usg
3382         fi
3383 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3384         echo "Looks kind of like a BSD system, but we'll see..."
3385         d_bsd="$define"
3386         echo exit 0 >bsd
3387 else
3388         echo "Looks kind of like a Version 7 system, but we'll see..."
3389         echo exit 0 >v7
3390 fi
3391 case "$eunicefix" in
3392 *unixtovms*)
3393         $cat <<'EOI'
3394 There is, however, a strange, musty smell in the air that reminds me of
3395 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3396 EOI
3397         echo exit 0 >eunice
3398         d_eunice="$define"
3399 : it so happens the Eunice I know will not run shell scripts in Unix format
3400         ;;
3401 *)
3402         echo " "
3403         echo "Congratulations.  You aren't running Eunice."
3404         d_eunice="$undef"
3405         ;;
3406 esac
3407 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3408 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3409 : semicolon as a patch separator
3410 case "$p_" in
3411 :) ;;
3412 *)
3413         $cat <<'EOI'
3414 I have the feeling something is not exactly right, however...don't tell me...
3415 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3416 (Or you may be running DOS with DJGPP.)
3417 EOI
3418         echo exit 0 >os2
3419         ;;
3420 esac
3421 if test -f /xenix; then
3422         echo "Actually, this looks more like a XENIX system..."
3423         echo exit 0 >xenix
3424         d_xenix="$define"
3425 else
3426         echo " "
3427         echo "It's not Xenix..."
3428         d_xenix="$undef"
3429 fi
3430 chmod +x xenix
3431 $eunicefix xenix
3432 if test -f /venix; then
3433         echo "Actually, this looks more like a VENIX system..."
3434         echo exit 0 >venix
3435 else
3436         echo " "
3437         if ./xenix; then
3438                 : null
3439         else
3440                 echo "Nor is it Venix..."
3441         fi
3442 fi
3443 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3444 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3445 $rm -f foo
3446
3447 case "$cc" in
3448 '') dflt=cc;;
3449 *) dflt="$cc";;
3450 esac
3451 rp="Use which C compiler?"
3452 . ./myread
3453 cc="$ans"
3454 : Look for a hint-file generated 'call-back-unit'.  Now that the
3455 : user has specified the compiler, we may need to set or change some
3456 : other defaults.
3457 if $test -f cc.cbu; then
3458     . ./cc.cbu
3459 fi
3460 . ./checkcc
3461
3462 echo " "
3463 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3464 $cat >try.c <<EOM
3465 #include <stdio.h>
3466 int main() {
3467 #ifdef __GNUC__
3468 #ifdef __VERSION__
3469         printf("%s\n", __VERSION__);
3470 #else
3471         printf("%s\n", "1");
3472 #endif
3473 #endif
3474         exit(0);
3475 }
3476 EOM
3477 if $cc -o try $ccflags $ldflags try.c; then
3478         gccversion=`$run ./try`
3479         case "$gccversion" in
3480         '') echo "You are not using GNU cc." ;;
3481         *)  echo "You are using GNU cc $gccversion."
3482             ccname=gcc  
3483             ;;
3484         esac
3485 else
3486         echo " "
3487         echo "*** WHOA THERE!!! ***" >&4
3488         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3489         case "$knowitall" in
3490         '')
3491         echo "    You'd better start hunting for one and let me know about it." >&4
3492                 exit 1
3493                 ;;
3494         esac
3495 fi
3496 $rm -f try try.*
3497 case "$gccversion" in
3498 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3499 esac
3500 case "$gccversion" in
3501 '') gccosandvers='' ;;
3502 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3503    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3504    gccshortvers=''
3505    case "$gccosandvers" in
3506    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3507    $osname$osvers) ;; # looking good
3508    $osname*) cat <<EOM >&4
3509
3510 *** WHOA THERE!!! ***
3511
3512     Your gcc has not been compiled for the exact release of
3513     your operating system ($gccosandvers versus $osname$osvers).
3514
3515     In general it is a good idea to keep gcc synchronized with
3516     the operating system because otherwise serious problems
3517     may ensue when trying to compile software, like Perl.
3518
3519     I'm trying to be optimistic here, though, and will continue.
3520     If later during the configuration and build icky compilation
3521     problems appear (headerfile conflicts being the most common
3522     manifestation), I suggest reinstalling the gcc to match
3523     your operating system release.
3524
3525 EOM
3526       ;;
3527    *) gccosandvers='' ;; # failed to parse, better be silent
3528    esac
3529    ;;
3530 esac
3531 case "$ccname" in
3532 '') ccname="$cc" ;;
3533 esac
3534
3535
3536 : decide how portable to be.  Allow command line overrides.
3537 case "$d_portable" in
3538 "$undef") ;;
3539 *)      d_portable="$define" ;;
3540 esac
3541
3542 : set up shell script to do ~ expansion
3543 cat >filexp <<EOSS
3544 $startsh
3545 : expand filename
3546 case "\$1" in
3547  ~/*|~)
3548         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3549         ;;
3550  ~*)
3551         if $test -f /bin/csh; then
3552                 /bin/csh -f -c "glob \$1"
3553                 failed=\$?
3554                 echo ""
3555                 exit \$failed
3556         else
3557                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3558                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3559                 if $test ! -d "\$dir"; then
3560                         me=\`basename \$0\`
3561                         echo "\$me: can't locate home directory for: \$name" >&2
3562                         exit 1
3563                 fi
3564                 case "\$1" in
3565                 */*)
3566                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3567                         ;;
3568                 *)
3569                         echo \$dir
3570                         ;;
3571                 esac
3572         fi
3573         ;;
3574 *)
3575         echo \$1
3576         ;;
3577 esac
3578 EOSS
3579 chmod +x filexp
3580 $eunicefix filexp
3581
3582 : now set up to get a file name
3583 cat <<EOS >getfile
3584 $startsh
3585 EOS
3586 cat <<'EOSC' >>getfile
3587 tilde=''
3588 fullpath=''
3589 already=''
3590 skip=''
3591 none_ok=''
3592 exp_file=''
3593 nopath_ok=''
3594 orig_rp="$rp"
3595 orig_dflt="$dflt"
3596 case "$gfpth" in
3597 '') gfpth='.' ;;
3598 esac
3599
3600 case "$fn" in
3601 *\(*)
3602         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3603         fn=`echo $fn | sed 's/(.*)//'`
3604         ;;
3605 esac
3606
3607 case "$fn" in
3608 *:*)
3609         loc_file=`expr $fn : '.*:\(.*\)'`
3610         fn=`expr $fn : '\(.*\):.*'`
3611         ;;
3612 esac
3613
3614 case "$fn" in
3615 *~*) tilde=true;;
3616 esac
3617 case "$fn" in
3618 */*) fullpath=true;;
3619 esac
3620 case "$fn" in
3621 *+*) skip=true;;
3622 esac
3623 case "$fn" in
3624 *n*) none_ok=true;;
3625 esac
3626 case "$fn" in
3627 *e*) exp_file=true;;
3628 esac
3629 case "$fn" in
3630 *p*) nopath_ok=true;;
3631 esac
3632
3633 case "$fn" in
3634 *f*) type='File';;
3635 *d*) type='Directory';;
3636 *l*) type='Locate';;
3637 esac
3638
3639 what="$type"
3640 case "$what" in
3641 Locate) what='File';;
3642 esac
3643
3644 case "$exp_file" in
3645 '')
3646         case "$d_portable" in
3647         "$define") ;;
3648         *) exp_file=true;;
3649         esac
3650         ;;
3651 esac
3652
3653 cd ..
3654 while test "$type"; do
3655         redo=''
3656         rp="$orig_rp"
3657         dflt="$orig_dflt"
3658         case "$tilde" in
3659         true) rp="$rp (~name ok)";;
3660         esac
3661         . UU/myread
3662         if test -f UU/getfile.ok && \
3663                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3664         then
3665                 value="$ans"
3666                 ansexp="$ans"
3667                 break
3668         fi
3669         case "$ans" in
3670         none)
3671                 value=''
3672                 ansexp=''
3673                 case "$none_ok" in
3674                 true) type='';;
3675                 esac
3676                 ;;
3677         *)
3678                 case "$tilde" in
3679                 '') value="$ans"
3680                         ansexp="$ans";;
3681                 *)
3682                         value=`UU/filexp $ans`
3683                         case $? in
3684                         0)
3685                                 if test "$ans" != "$value"; then
3686                                         echo "(That expands to $value on this system.)"
3687                                 fi
3688                                 ;;
3689                         *) value="$ans";;
3690                         esac
3691                         ansexp="$value"
3692                         case "$exp_file" in
3693                         '') value="$ans";;
3694                         esac
3695                         ;;
3696                 esac
3697                 case "$fullpath" in
3698                 true)
3699                         case "$ansexp" in
3700                         /*) value="$ansexp" ;;
3701                         [a-zA-Z]:/*) value="$ansexp" ;;
3702                         *)
3703                                 redo=true
3704                                 case "$already" in
3705                                 true)
3706                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3707                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3708                                         ;;
3709                                 *)
3710                                 echo "Please give a full path name, starting with slash." >&4
3711                                         case "$tilde" in
3712                                         true)
3713                                 echo "Note that using ~name is ok provided it expands well." >&4
3714                                                 already=true
3715                                                 ;;
3716                                         esac
3717                                 esac
3718                                 ;;
3719                         esac
3720                         ;;
3721                 esac
3722                 case "$redo" in
3723                 '')
3724                         case "$type" in
3725                         File)
3726                                 for fp in $gfpth; do
3727                                         if test "X$fp" = X.; then
3728                                             pf="$ansexp"
3729                                         else    
3730                                             pf="$fp/$ansexp"
3731                                         fi
3732                                         if test -f "$pf"; then
3733                                                 type=''
3734                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3735                                         then
3736                                                 echo "($value is not a plain file, but that's ok.)"
3737                                                 type=''
3738                                         fi
3739                                         if test X"$type" = X; then
3740                                             value="$pf"
3741                                             break
3742                                         fi
3743                                 done
3744                                 ;;
3745                         Directory)
3746                                 for fp in $gfpth; do
3747                                         if test "X$fp" = X.; then
3748                                             dir="$ans"
3749                                             direxp="$ansexp"
3750                                         else    
3751                                             dir="$fp/$ansexp"
3752                                             direxp="$fp/$ansexp"
3753                                         fi
3754                                         if test -d "$direxp"; then
3755                                                 type=''
3756                                                 value="$dir"
3757                                                 break
3758                                         fi
3759                                 done
3760                                 ;;
3761                         Locate)
3762                                 if test -d "$ansexp"; then
3763                                         echo "(Looking for $loc_file in directory $value.)"
3764                                         value="$value/$loc_file"
3765                                         ansexp="$ansexp/$loc_file"
3766                                 fi
3767                                 if test -f "$ansexp"; then
3768                                         type=''
3769                                 fi
3770                                 case "$nopath_ok" in
3771                                 true)   case "$value" in
3772                                         */*) ;;
3773                                         *)      echo "Assuming $value will be in people's path."
3774                                                 type=''
3775                                                 ;;
3776                                         esac
3777                                         ;;
3778                                 esac
3779                                 ;;
3780                         esac
3781
3782                         case "$skip" in
3783                         true) type='';
3784                         esac
3785
3786                         case "$type" in
3787                         '') ;;
3788                         *)
3789                                 if test "$fastread" = yes; then
3790                                         dflt=y
3791                                 else
3792                                         dflt=n
3793                                 fi
3794                                 rp="$what $value doesn't exist.  Use that name anyway?"
3795                                 . UU/myread
3796                                 dflt=''
3797                                 case "$ans" in
3798                                 y*) type='';;
3799                                 *) echo " ";;
3800                                 esac
3801                                 ;;
3802                         esac
3803                         ;;
3804                 esac
3805                 ;;
3806         esac
3807 done
3808 cd UU
3809 ans="$value"
3810 rp="$orig_rp"
3811 dflt="$orig_dflt"
3812 rm -f getfile.ok
3813 test "X$gfpthkeep" != Xy && gfpth=""
3814 EOSC
3815
3816 : What should the include directory be ?
3817 echo " "
3818 $echo $n "Hmm...  $c"
3819 dflt='/usr/include'
3820 incpath=''
3821 mips_type=''
3822 if $test -f /bin/mips && /bin/mips; then
3823         echo "Looks like a MIPS system..."
3824         $cat >usr.c <<'EOCP'
3825 #ifdef SYSTYPE_BSD43
3826 /bsd43
3827 #endif
3828 EOCP
3829         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3830                 dflt='/bsd43/usr/include'
3831                 incpath='/bsd43'
3832                 mips_type='BSD 4.3'
3833         else
3834                 mips_type='System V'
3835         fi
3836         $rm -f usr.c usr.out
3837         echo "and you're compiling with the $mips_type compiler and libraries."
3838         xxx_prompt=y
3839         echo "exit 0" >mips
3840 else
3841         echo "Doesn't look like a MIPS system."
3842         xxx_prompt=n
3843         echo "exit 1" >mips
3844 fi
3845 chmod +x mips
3846 $eunicefix mips
3847 case "$usrinc" in
3848 '') ;;
3849 *) dflt="$usrinc";;
3850 esac
3851 case "$xxx_prompt" in
3852 y)      fn=d/
3853         echo " "
3854         rp='Where are the include files you want to use?'
3855         . ./getfile
3856         usrinc="$ans"
3857         ;;
3858 *)      usrinc="$dflt"
3859         ;;
3860 esac
3861
3862 : see how we invoke the C preprocessor
3863 echo " "
3864 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3865 cat <<'EOT' >testcpp.c
3866 #define ABC abc
3867 #define XYZ xyz
3868 ABC.XYZ
3869 EOT
3870 cd ..
3871 if test ! -f cppstdin; then
3872         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3873                 # AIX cc -E doesn't show the absolute headerfile
3874                 # locations but we'll cheat by using the -M flag.
3875                 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
3876         else
3877                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3878         fi
3879 else
3880         echo "Keeping your $hint cppstdin wrapper."
3881 fi
3882 chmod 755 cppstdin
3883 wrapper=`pwd`/cppstdin
3884 ok='false'
3885 cd UU
3886
3887 if $test "X$cppstdin" != "X" && \
3888         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3889         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3890 then
3891         echo "You used to use $cppstdin $cppminus so we'll use that again."
3892         case "$cpprun" in
3893         '') echo "But let's see if we can live without a wrapper..." ;;
3894         *)
3895                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3896                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3897                 then
3898                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3899                         ok='true'
3900                 else
3901                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3902                 fi
3903                 ;;
3904         esac
3905 else
3906         case "$cppstdin" in
3907         '') ;;
3908         *)
3909                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3910                 ;;
3911         esac
3912 fi
3913
3914 if $ok; then
3915         : nothing
3916 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3917         $cc -E <testcpp.c >testcpp.out 2>&1; \
3918         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3919         echo "Yup, it does."
3920         x_cpp="$cc -E"
3921         x_minus='';
3922 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3923         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3924         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3925         echo "Yup, it does."
3926         x_cpp="$cc -E"
3927         x_minus='-';
3928 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3929         $cc -P <testcpp.c >testcpp.out 2>&1; \
3930         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3931         echo "Yipee, that works!"
3932         x_cpp="$cc -P"
3933         x_minus='';
3934 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3935         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3936         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3937         echo "At long last!"
3938         x_cpp="$cc -P"
3939         x_minus='-';
3940 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3941         $cpp <testcpp.c >testcpp.out 2>&1; \
3942         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3943         echo "It works!"
3944         x_cpp="$cpp"
3945         x_minus='';
3946 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3947         $cpp - <testcpp.c >testcpp.out 2>&1; \
3948         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3949         echo "Hooray, it works!  I was beginning to wonder."
3950         x_cpp="$cpp"
3951         x_minus='-';
3952 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3953         $wrapper <testcpp.c >testcpp.out 2>&1; \
3954         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3955         x_cpp="$wrapper"
3956         x_minus=''
3957         echo "Eureka!"
3958 else
3959         dflt=''
3960         rp="No dice.  I can't find a C preprocessor.  Name one:"
3961         . ./myread
3962         x_cpp="$ans"
3963         x_minus=''
3964         $x_cpp <testcpp.c >testcpp.out 2>&1
3965         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3966                 echo "OK, that will do." >&4
3967         else
3968 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3969                 exit 1
3970         fi
3971 fi
3972
3973 case "$ok" in
3974 false)
3975         cppstdin="$x_cpp"
3976         cppminus="$x_minus"
3977         cpprun="$x_cpp"
3978         cpplast="$x_minus"
3979         set X $x_cpp
3980         shift
3981         case "$1" in
3982         "$cpp")
3983                 echo "Perhaps can we force $cc -E using a wrapper..."
3984                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3985                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3986                 then
3987                         echo "Yup, we can."
3988                         cppstdin="$wrapper"
3989                         cppminus='';
3990                 else
3991                         echo "Nope, we'll have to live without it..."
3992                 fi
3993                 ;;
3994         esac
3995         case "$cpprun" in
3996         "$wrapper")
3997                 cpprun=''
3998                 cpplast=''
3999                 ;;
4000         esac
4001         ;;
4002 esac
4003
4004 case "$cppstdin" in
4005 "$wrapper"|'cppstdin') ;;
4006 *) $rm -f $wrapper;;
4007 esac
4008 $rm -f testcpp.c testcpp.out
4009
4010 : Set private lib path
4011 case "$plibpth" in
4012 '') if ./mips; then
4013                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4014         fi;;
4015 esac
4016 case "$libpth" in
4017 ' ') dlist='';;
4018 '') dlist="$loclibpth $plibpth $glibpth";;
4019 *) dlist="$libpth";;
4020 esac
4021
4022 : Now check and see which directories actually exist, avoiding duplicates
4023 libpth=''
4024 for xxx in $dlist
4025 do
4026     if $test -d $xxx; then
4027                 case " $libpth " in
4028                 *" $xxx "*) ;;
4029                 *) libpth="$libpth $xxx";;
4030                 esac
4031     fi
4032 done
4033 $cat <<'EOM'
4034
4035 Some systems have incompatible or broken versions of libraries.  Among
4036 the directories listed in the question below, please remove any you
4037 know not to be holding relevant libraries, and add any that are needed.
4038 Say "none" for none.
4039
4040 EOM
4041 case "$libpth" in
4042 '') dflt='none';;
4043 *)
4044         set X $libpth
4045         shift
4046         dflt=${1+"$@"}
4047         ;;
4048 esac
4049 rp="Directories to use for library searches?"
4050 . ./myread
4051 case "$ans" in
4052 none) libpth=' ';;
4053 *) libpth="$ans";;
4054 esac
4055
4056 : compute shared library extension
4057 case "$so" in
4058 '')
4059         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4060                 dflt='sl'
4061         else
4062                 dflt='so'
4063         fi
4064         ;;
4065 *) dflt="$so";;
4066 esac
4067 $cat <<EOM
4068
4069 On some systems, shared libraries may be available.  Answer 'none' if
4070 you want to suppress searching of shared libraries for the remainder
4071 of this configuration.
4072
4073 EOM
4074 rp='What is the file extension used for shared libraries?'
4075 . ./myread
4076 so="$ans"
4077
4078 : Define several unixisms.
4079 : Hints files or command line option can be used to override them.
4080 : The convoluted testing is in case hints files set either the old
4081 : or the new name.
4082 case "$_exe" in
4083 '')     case "$exe_ext" in
4084     '') ;;
4085         *)      _exe="$exe_ext" ;;
4086         esac
4087         ;;
4088 esac
4089 case "$_a" in
4090 '')     case "$lib_ext" in
4091     '') _a='.a';;
4092         *)      _a="$lib_ext" ;;
4093         esac
4094         ;;
4095 esac
4096 case "$_o" in
4097 '') case "$obj_ext" in
4098         '')     _o='.o';;
4099         *)      _o="$obj_ext";;
4100         esac
4101         ;;
4102 esac
4103 case "$p_" in
4104 '') case "$path_sep" in
4105         '')     p_=':';;
4106         *)      p_="$path_sep";;
4107         esac
4108         ;;
4109 esac
4110 exe_ext=$_exe
4111 lib_ext=$_a
4112 obj_ext=$_o
4113 path_sep=$p_
4114
4115 : Which makefile gets called first.  This is used by make depend.
4116 case "$firstmakefile" in
4117 '') firstmakefile='makefile';;
4118 esac
4119
4120 case "$usesocks" in
4121 $define|true|[yY]*)     dflt='y';;
4122 *) dflt='n';;
4123 esac
4124 cat <<EOM
4125
4126 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4127 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4128 to use the PerlIO abstraction layer, this will be implicitly selected.
4129
4130 If this doesn't make any sense to you, just accept the default '$dflt'.
4131 EOM
4132 rp='Build Perl for SOCKS?'
4133 . ./myread
4134 case "$ans" in
4135 y|Y)    val="$define" ;;     
4136 *)      val="$undef" ;;
4137 esac
4138 set usesocks
4139 eval $setvar
4140
4141 case "$usesocks" in
4142 $define|true|[yY]*) useperlio="$define";;
4143 esac
4144
4145 : Looking for optional libraries
4146 echo " "
4147 echo "Checking for optional libraries..." >&4
4148 case "$libs" in
4149 ' '|'') dflt='';;
4150 *) dflt="$libs";;
4151 esac
4152 case "$libswanted" in
4153 '') libswanted='c_s';;
4154 esac
4155 case "$usesocks" in
4156 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4157 esac
4158 libsfound=''
4159 libsfiles=''
4160 libsdirs=''
4161 libspath=''
4162 for thisdir in $libpth $xlibpth; do
4163   test -d $thisdir && libspath="$libspath $thisdir"
4164 done
4165 for thislib in $libswanted; do
4166         for thisdir in $libspath; do
4167             xxx=''
4168             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4169                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4170                 $test -f "$xxx" && eval $libscheck
4171                 $test -f "$xxx" && libstyle=shared
4172             fi
4173             if test ! -f "$xxx"; then
4174                 xxx=$thisdir/lib$thislib.$so
4175                 $test -f "$xxx" && eval $libscheck
4176                 $test -f "$xxx" && libstyle=shared
4177             fi  
4178             if test ! -f "$xxx"; then
4179                 xxx=$thisdir/lib$thislib$_a
4180                 $test -f "$xxx" && eval $libscheck
4181                 $test -f "$xxx" && libstyle=static
4182             fi
4183             if test ! -f "$xxx"; then
4184                 xxx=$thisdir/$thislib$_a
4185                 $test -f "$xxx" && eval $libscheck
4186                 $test -f "$xxx" && libstyle=static
4187             fi
4188             if test ! -f "$xxx"; then
4189                 xxx=$thisdir/lib${thislib}_s$_a
4190                 $test -f "$xxx" && eval $libscheck
4191                 $test -f "$xxx" && libstyle=static
4192                 $test -f "$xxx" && thislib=${thislib}_s
4193             fi
4194             if test ! -f "$xxx"; then
4195                 xxx=$thisdir/Slib$thislib$_a
4196                 $test -f "$xxx" && eval $libscheck
4197                 $test -f "$xxx" && libstyle=static
4198             fi
4199             if $test -f "$xxx"; then
4200                 case "$libstyle" in
4201                 shared) echo "Found -l$thislib (shared)." ;;
4202                 static) echo "Found -l$thislib." ;;
4203                 *)      echo "Found -l$thislib ($libstyle)." ;;
4204                 esac
4205                 case " $dflt " in
4206                 *"-l$thislib "*);;
4207                 *) dflt="$dflt -l$thislib"
4208                    libsfound="$libsfound $xxx"
4209                    yyy=`basename $xxx`
4210                    libsfiles="$libsfiles $yyy"
4211                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4212                    case " $libsdirs " in
4213                    *" $yyy "*) ;;
4214                    *) libsdirs="$libsdirs $yyy" ;;
4215                    esac
4216                    ;;
4217                 esac
4218                 break
4219             fi  
4220         done
4221         if $test ! -f "$xxx"; then
4222             echo "No -l$thislib."
4223         fi
4224 done
4225 set X $dflt
4226 shift
4227 dflt="$*"
4228 case "$libs" in
4229 '') dflt="$dflt";;
4230 *) dflt="$libs";;
4231 esac
4232 case "$dflt" in
4233 ' '|'') dflt='none';;
4234 esac
4235
4236 $cat <<EOM
4237
4238 In order to compile $package on your machine, a number of libraries
4239 are usually needed.  Include any other special libraries here as well.
4240 Say "none" for none.  The default list is almost always right.
4241 EOM
4242
4243 echo " "
4244 rp="What libraries to use?"
4245 . ./myread
4246 case "$ans" in
4247 none) libs=' ';;
4248 *) libs="$ans";;
4249 esac
4250
4251 : determine optimization, if desired, or use for debug flag also
4252 case "$optimize" in
4253 ' '|$undef) dflt='none';;
4254 '') dflt='-O';;
4255 *) dflt="$optimize";;
4256 esac
4257 $cat <<EOH
4258
4259 By default, $package compiles with the -O flag to use the optimizer.
4260 Alternately, you might want to use the symbolic debugger, which uses
4261 the -g flag (on traditional Unix systems).  Either flag can be
4262 specified here.  To use neither flag, specify the word "none".
4263
4264 EOH
4265 rp="What optimizer/debugger flag should be used?"
4266 . ./myread
4267 optimize="$ans"
4268 case "$optimize" in
4269 'none') optimize=" ";;
4270 esac
4271
4272 dflt=''
4273 : We will not override a previous value, but we might want to
4274 : augment a hint file
4275 case "$hint" in
4276 default|recommended)
4277         case "$gccversion" in
4278         1*) dflt='-fpcc-struct-return' ;;
4279         esac
4280         case "$optimize" in
4281         *-g*) dflt="$dflt -DDEBUGGING";;
4282         esac
4283         case "$gccversion" in
4284         2*) if test -d /etc/conf/kconfig.d &&
4285                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4286                 then
4287                         dflt="$dflt -posix"
4288                 fi
4289                 ;;
4290         esac
4291         case "$gccversion" in
4292         1*) ;;
4293         2.[0-8]*) ;;
4294         ?*)     echo " "
4295                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4296                 echo 'int main(void) { return 0; }' > gcctest.c
4297                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4298                         echo "Yes, it does." 2>&1
4299                         case "$ccflags" in
4300                         *strict-aliasing*) 
4301                                 echo "Leaving current flags $ccflags alone." 2>&1
4302                                 ;;
4303                         *) dflt="$dflt -fno-strict-aliasing" ;;
4304                         esac
4305                 else
4306                         echo "Nope, it doesn't, but that's ok." 2>&1
4307                 fi
4308                 ;;
4309         esac
4310         ;;
4311 esac
4312
4313 case "$mips_type" in
4314 *BSD*|'') inclwanted="$locincpth $usrinc";;
4315 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4316 esac
4317 for thisincl in $inclwanted; do
4318         if $test -d $thisincl; then
4319                 if $test x$thisincl != x$usrinc; then
4320                         case "$dflt" in
4321                         *" -I$thisincl "*);;
4322                         *) dflt="$dflt -I$thisincl ";;
4323                         esac
4324                 fi
4325         fi
4326 done
4327
4328 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4329         xxx=true;
4330 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4331         xxx=true;
4332 else
4333         xxx=false;
4334 fi;
4335 if $xxx; then
4336         case "$dflt" in
4337         *$2*);;
4338         *) dflt="$dflt -D$2";;
4339         esac;
4340 fi'
4341
4342 set signal.h LANGUAGE_C; eval $inctest
4343
4344 case "$usesocks" in
4345 $define)
4346         ccflags="$ccflags -DSOCKS"
4347         ;;
4348 esac
4349
4350 case "$hint" in
4351 default|recommended) dflt="$ccflags $dflt" ;;
4352 *) dflt="$ccflags";;
4353 esac
4354
4355 case "$dflt" in
4356 ''|' ') dflt=none;;
4357 esac
4358
4359 $cat <<EOH
4360
4361 Your C compiler may want other flags.  For this question you should include
4362 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4363 but you should NOT include libraries or ld flags like -lwhatever.  If you
4364 want $package to honor its debug switch, you should include -DDEBUGGING here.
4365 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4366
4367 To use no flags, specify the word "none".
4368
4369 EOH
4370 set X $dflt
4371 shift
4372 dflt=${1+"$@"}
4373 rp="Any additional cc flags?"
4374 . ./myread
4375 case "$ans" in
4376 none) ccflags='';;
4377 *) ccflags="$ans";;
4378 esac
4379
4380 : the following weeds options from ccflags that are of no interest to cpp
4381 case "$cppflags" in
4382 '') cppflags="$ccflags" ;;
4383 *)  cppflags="$cppflags $ccflags" ;;
4384 esac
4385 case "$gccversion" in
4386 1*) cppflags="$cppflags -D__GNUC__"
4387 esac
4388 case "$mips_type" in
4389 '');;
4390 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4391 esac
4392 case "$cppflags" in
4393 '');;
4394 *)
4395         echo " "
4396         echo "Let me guess what the preprocessor flags are..." >&4
4397         set X $cppflags
4398         shift
4399         cppflags=''
4400         $cat >cpp.c <<'EOM'
4401 #define BLURFL foo
4402
4403 BLURFL xx LFRULB
4404 EOM
4405         previous=''
4406         for flag in $*
4407         do
4408                 case "$flag" in
4409                 -*) ftry="$flag";;
4410                 *) ftry="$previous $flag";;
4411                 esac
4412                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4413                         >cpp1.out 2>/dev/null && \
4414                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4415                         >cpp2.out 2>/dev/null && \
4416                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4417                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4418                 then
4419                         cppflags="$cppflags $ftry"
4420                         previous=''
4421                 else
4422                         previous="$flag"
4423                 fi
4424         done
4425         set X $cppflags
4426         shift
4427         cppflags=${1+"$@"}
4428         case "$cppflags" in
4429         *-*)  echo "They appear to be: $cppflags";;
4430         esac
4431         $rm -f cpp.c cpp?.out
4432         ;;
4433 esac
4434
4435 : flags used in final linking phase
4436 case "$ldflags" in
4437 '') if ./venix; then
4438                 dflt='-i -z'
4439         else
4440                 dflt=''
4441         fi
4442         case "$ccflags" in
4443         *-posix*) dflt="$dflt -posix" ;;
4444         esac
4445         ;;
4446 *) dflt="$ldflags";;
4447 esac
4448
4449 : Try to guess additional flags to pick up local libraries.
4450 for thislibdir in $libpth; do
4451         case " $loclibpth " in
4452         *" $thislibdir "*)
4453                 case "$dflt " in 
4454                 *"-L$thislibdir "*) ;;
4455                 *)  dflt="$dflt -L$thislibdir" ;;
4456                 esac
4457                 ;;
4458         esac
4459 done
4460
4461 case "$dflt" in
4462 '') dflt='none' ;;
4463 esac
4464
4465 $cat <<EOH
4466
4467 Your C linker may need flags.  For this question you should
4468 include -L/whatever and any other flags used by the C linker, but you
4469 should NOT include libraries like -lwhatever.
4470
4471 Make sure you include the appropriate -L/path flags if your C linker
4472 does not normally search all of the directories you specified above,
4473 namely
4474         $libpth
4475 To use no flags, specify the word "none".
4476
4477 EOH
4478
4479 rp="Any additional ld flags (NOT including libraries)?"
4480 . ./myread
4481 case "$ans" in
4482 none) ldflags='';;
4483 *) ldflags="$ans";;
4484 esac
4485 rmlist="$rmlist pdp11"
4486
4487 : coherency check
4488 echo " "
4489 echo "Checking your choice of C compiler and flags for coherency..." >&4
4490 $cat > try.c <<'EOF'
4491 #include <stdio.h>
4492 int main() { printf("Ok\n"); exit(0); }
4493 EOF
4494 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4495 shift
4496 $cat >try.msg <<'EOM'
4497 I've tried to compile and run the following simple program:
4498
4499 EOM
4500 $cat try.c >> try.msg
4501
4502 $cat >> try.msg <<EOM
4503
4504 I used the command:
4505
4506         $*
4507         $run ./try
4508
4509 and I got the following output:
4510
4511 EOM
4512 dflt=y
4513 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4514         if $sh -c "$run ./try" >>try.msg 2>&1; then
4515                 xxx=`$run ./try`
4516                 case "$xxx" in
4517                 "Ok") dflt=n ;;
4518                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4519                         case " $libs " in
4520                         *" -lsfio "*)
4521                                 cat >> try.msg <<'EOQS'
4522 If $libs contains -lsfio, and sfio is mis-configured, then it
4523 sometimes (apparently) runs and exits with a 0 status, but with no
4524 output!  It may have to do with sfio's use of _exit vs. exit.
4525
4526 EOQS
4527                                 rp="You have a big problem.  Shall I abort Configure"
4528                                 dflt=y
4529                                 ;;
4530                         esac
4531                         ;;
4532                 esac
4533         else
4534                 echo "The program compiled OK, but exited with status $?." >>try.msg
4535                 rp="You have a problem.  Shall I abort Configure"
4536                 dflt=y
4537         fi
4538 else
4539         echo "I can't compile the test program." >>try.msg
4540         rp="You have a BIG problem.  Shall I abort Configure"
4541         dflt=y
4542 fi
4543 case "$dflt" in
4544 y)
4545         $cat try.msg >&4
4546         case "$knowitall" in
4547         '')
4548                 echo "(The supplied flags or libraries might be incorrect.)"
4549                 ;;
4550         *) dflt=n;;
4551         esac
4552         echo " "
4553         . ./myread
4554         case "$ans" in
4555         n*|N*) ;;
4556         *)      echo "Ok.  Stopping Configure." >&4
4557                 exit 1
4558                 ;;
4559         esac
4560         ;;
4561 n) echo "OK, that should do.";;
4562 esac
4563 $rm -f try try.* core
4564
4565 : define a shorthand compile call
4566 compile='
4567 mc_file=$1;
4568 shift;
4569 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4570 : define a shorthand compile call for compilations that should be ok.
4571 compile_ok='
4572 mc_file=$1;
4573 shift;
4574 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4575
4576 : check for lengths of integral types
4577 echo " "
4578 case "$intsize" in
4579 '')
4580         echo "Checking to see how big your integers are..." >&4
4581         $cat >try.c <<'EOCP'
4582 #include <stdio.h>
4583 int main()
4584 {
4585         printf("intsize=%d;\n", (int)sizeof(int));
4586         printf("longsize=%d;\n", (int)sizeof(long));
4587         printf("shortsize=%d;\n", (int)sizeof(short));
4588         exit(0);
4589 }
4590 EOCP
4591         set try
4592         if eval $compile_ok && $run ./try > /dev/null; then
4593                 eval `$run ./try`
4594                 echo "Your integers are $intsize bytes long."
4595                 echo "Your long integers are $longsize bytes long."
4596                 echo "Your short integers are $shortsize bytes long."
4597         else
4598                 $cat >&4 <<EOM
4599 !
4600 Help! I can't compile and run the intsize test program: please enlighten me!
4601 (This is probably a misconfiguration in your system or libraries, and
4602 you really ought to fix it.  Still, I'll try anyway.)
4603 !
4604 EOM
4605                 dflt=4
4606                 rp="What is the size of an integer (in bytes)?"
4607                 . ./myread
4608                 intsize="$ans"
4609                 dflt=$intsize
4610                 rp="What is the size of a long integer (in bytes)?"
4611                 . ./myread
4612                 longsize="$ans"
4613                 dflt=2
4614                 rp="What is the size of a short integer (in bytes)?"
4615                 . ./myread
4616                 shortsize="$ans"
4617         fi
4618         ;;
4619 esac
4620 $rm -f try try.*
4621
4622 : check for void type
4623 echo " "
4624 echo "Checking to see how well your C compiler groks the void type..." >&4
4625 case "$voidflags" in
4626 '')
4627         $cat >try.c <<'EOCP'
4628 #if TRY & 1
4629 void sub() {
4630 #else
4631 sub() {
4632 #endif
4633         extern void moo();      /* function returning void */
4634         void (*goo)();          /* ptr to func returning void */
4635 #if TRY & 8
4636         void *hue;              /* generic ptr */
4637 #endif
4638 #if TRY & 2
4639         void (*foo[10])();
4640 #endif
4641
4642 #if TRY & 4
4643         if(goo == moo) {
4644                 exit(0);
4645         }
4646 #endif
4647         exit(0);
4648 }
4649 int main() { sub(); }
4650 EOCP
4651         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4652                 voidflags=$defvoidused
4653         echo "Good.  It appears to support void to the level $package wants.">&4
4654                 if $contains warning .out >/dev/null 2>&1; then
4655                         echo "However, you might get some warnings that look like this:"
4656                         $cat .out
4657                 fi
4658         else
4659 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4660                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4661                         echo "It supports 1..."
4662                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4663                                 echo "It also supports 2..."
4664                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4665                                         voidflags=7
4666                                         echo "And it supports 4 but not 8 definitely."
4667                                 else
4668                                         echo "It doesn't support 4..."
4669                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4670                                                 voidflags=11
4671                                                 echo "But it supports 8."
4672                                         else
4673                                                 voidflags=3
4674                                                 echo "Neither does it support 8."
4675                                         fi
4676                                 fi
4677                         else
4678                                 echo "It does not support 2..."
4679                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4680                                         voidflags=13
4681                                         echo "But it supports 4 and 8."
4682                                 else
4683                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4684                                                 voidflags=5
4685                                                 echo "And it supports 4 but has not heard about 8."
4686                                         else
4687                                                 echo "However it supports 8 but not 4."
4688                                         fi
4689                                 fi
4690                         fi
4691                 else
4692                         echo "There is no support at all for void."
4693                         voidflags=0
4694                 fi
4695         fi
4696 esac
4697 case "$voidflags" in
4698 "$defvoidused") ;;
4699 *)      $cat >&4 <<'EOM'
4700   Support flag bits are:
4701     1: basic void declarations.
4702     2: arrays of pointers to functions returning void.
4703     4: operations between pointers to and addresses of void functions.
4704     8: generic void pointers.
4705 EOM
4706         dflt="$voidflags";
4707         rp="Your void support flags add up to what?"
4708         . ./myread
4709         voidflags="$ans"
4710         ;;
4711 esac
4712 $rm -f try.* .out
4713
4714 : check for length of pointer
4715 echo " "
4716 case "$ptrsize" in
4717 '')
4718         echo "Checking to see how big your pointers are..." >&4
4719         if test "$voidflags" -gt 7; then
4720                 echo '#define VOID_PTR char *' > try.c
4721         else
4722                 echo '#define VOID_PTR void *' > try.c
4723         fi
4724         $cat >>try.c <<'EOCP'
4725 #include <stdio.h>
4726 int main()
4727 {
4728     printf("%d\n", (int)sizeof(VOID_PTR));
4729     exit(0);
4730 }
4731 EOCP
4732         set try
4733         if eval $compile_ok; then
4734                 ptrsize=`$run ./try`
4735                 echo "Your pointers are $ptrsize bytes long."
4736         else
4737                 dflt='4'
4738                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4739                 rp="What is the size of a pointer (in bytes)?"
4740                 . ./myread
4741                 ptrsize="$ans"
4742         fi
4743         ;;
4744 esac
4745 $rm -f try.c try
4746
4747 : check for long long
4748 echo " "
4749 echo "Checking to see if you have long long..." >&4
4750 echo 'int main() { long long x = 7; return 0; }' > try.c
4751 set try
4752 if eval $compile; then
4753         val="$define"
4754         echo "You have long long."
4755 else
4756         val="$undef"
4757         echo "You do not have long long."
4758 fi
4759 $rm try.*
4760 set d_longlong
4761 eval $setvar
4762
4763 : check for length of long long
4764 case "${d_longlong}${longlongsize}" in
4765 $define)
4766         echo " "
4767         echo "Checking to see how big your long longs are..." >&4
4768         $cat >try.c <<'EOCP'
4769 #include <stdio.h>
4770 int main()
4771 {
4772     printf("%d\n", (int)sizeof(long long));
4773     return(0);
4774 }
4775 EOCP
4776         set try
4777         if eval $compile_ok; then
4778                 longlongsize=`$run ./try`
4779                 echo "Your long longs are $longlongsize bytes long."
4780         else
4781                 dflt='8'
4782                 echo " "
4783                 echo "(I can't seem to compile the test program.  Guessing...)"
4784                 rp="What is the size of a long long (in bytes)?"
4785                 . ./myread
4786                 longlongsize="$ans"
4787         fi
4788         if $test "X$longsize" = "X$longlongsize"; then
4789                 echo "(That isn't any different from an ordinary long.)"
4790         fi      
4791         ;;
4792 esac
4793 $rm -f try.* try
4794
4795 : determine filename position in cpp output
4796 echo " "
4797 echo "Computing filename position in cpp output for #include directives..." >&4
4798 echo '#include <stdio.h>' > foo.c
4799 $cat >fieldn <<EOF
4800 $startsh
4801 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4802 $grep '^[       ]*#.*stdio\.h' | \
4803 while read cline; do
4804         pos=1
4805         set \$cline
4806         while $test \$# -gt 0; do
4807                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4808                         echo "\$pos"
4809                         exit 0
4810                 fi
4811                 shift
4812                 pos=\`expr \$pos + 1\`
4813         done
4814 done
4815 EOF
4816 chmod +x fieldn
4817 fieldn=`./fieldn`
4818 $rm -f foo.c fieldn
4819 case $fieldn in
4820 '') pos='???';;
4821 1) pos=first;;
4822 2) pos=second;;
4823 3) pos=third;;
4824 *) pos="${fieldn}th";;
4825 esac
4826 echo "Your cpp writes the filename in the $pos field of the line."
4827
4828 : locate header file
4829 $cat >findhdr <<EOF
4830 $startsh
4831 wanted=\$1
4832 name=''
4833 for usrincdir in $usrinc
4834 do
4835         if test -f \$usrincdir/\$wanted; then
4836                 echo "\$usrincdir/\$wanted"
4837                 exit 0
4838         fi
4839 done
4840 awkprg='{ print \$$fieldn }'
4841 echo "#include <\$wanted>" > foo\$\$.c
4842 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4843 $grep "^[       ]*#.*\$wanted" | \
4844 while read cline; do
4845         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4846         case "\$name" in
4847         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4848         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4849         *) exit 2;;
4850         esac;
4851 done;
4852 #
4853 # status = 0: grep returned 0 lines, case statement not executed
4854 # status = 1: headerfile found
4855 # status = 2: while loop executed, no headerfile found
4856 #
4857 status=\$?
4858 $rm -f foo\$\$.c;
4859 if test \$status -eq 1; then
4860         exit 0;
4861 fi
4862 exit 1
4863 EOF
4864 chmod +x findhdr
4865
4866 : define an alternate in-header-list? function
4867 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4868 cont=true; xxf="echo \"<\$1> found.\" >&4";
4869 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4870 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4871 esac;
4872 case $# in 4) instead=instead;; *) instead="at last";; esac;
4873 while $test "$cont"; do
4874         xxx=`./findhdr $1`
4875         var=$2; eval "was=\$$2";
4876         if $test "$xxx" && $test -r "$xxx";
4877         then eval $xxf;
4878         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4879                 cont="";
4880         else eval $xxnf;
4881         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4882         set $yyy; shift; shift; yyy=$@;
4883         case $# in 0) cont="";;
4884         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4885                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4886         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4887                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4888         esac;
4889 done;
4890 while $test "$yyy";
4891 do set $yyy; var=$2; eval "was=\$$2";
4892         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4893         set $yyy; shift; shift; yyy=$@;
4894 done'
4895
4896 : see if inttypes.h is available
4897 : we want a real compile instead of Inhdr because some systems
4898 : have an inttypes.h which includes non-existent headers
4899 echo " "
4900 $cat >try.c <<EOCP
4901 #include <inttypes.h>
4902 int main() {
4903         static int32_t foo32 = 0x12345678;
4904 }
4905 EOCP
4906 set try
4907 if eval $compile; then
4908         echo "<inttypes.h> found." >&4
4909         val="$define"
4910 else
4911         echo "<inttypes.h> NOT found." >&4
4912         val="$undef"
4913 fi
4914 $rm -f try.c try
4915 set i_inttypes
4916 eval $setvar
4917
4918 : check for int64_t
4919 echo " "
4920 echo "Checking to see if you have int64_t..." >&4
4921 $cat >try.c <<EOCP
4922 #include <sys/types.h>
4923 #$i_inttypes I_INTTYPES
4924 #ifdef I_INTTYPES
4925 #include <inttypes.h>
4926 #endif
4927 int main() { int64_t x = 7; }
4928 EOCP
4929 set try
4930 if eval $compile; then
4931         val="$define"
4932         echo "You have int64_t."
4933 else
4934         val="$undef"
4935         echo "You do not have int64_t."
4936 fi
4937 $rm -f try try.*
4938 set d_int64_t
4939 eval $setvar
4940
4941
4942 echo " "
4943 echo "Checking which 64-bit integer type we could use..." >&4
4944
4945 case "$intsize" in
4946 8) val=int
4947    set quadtype
4948    eval $setvar
4949    val='"unsigned int"'
4950    set uquadtype
4951    eval $setvar
4952    quadkind=1
4953    ;;
4954 *) case "$longsize" in
4955    8) val=long
4956       set quadtype
4957       eval $setvar
4958       val='"unsigned long"'
4959       set uquadtype
4960       eval $setvar
4961       quadkind=2
4962       ;;
4963    *) case "$d_longlong:$longlongsize" in
4964       define:8)
4965         val='"long long"'
4966         set quadtype
4967         eval $setvar
4968         val='"unsigned long long"'
4969         set uquadtype
4970         eval $setvar
4971         quadkind=3
4972         ;;
4973       *) case "$d_int64_t" in
4974          define)
4975            val=int64_t
4976            set quadtype
4977            eval $setvar
4978            val=uint64_t
4979            set uquadtype
4980            eval $setvar
4981            quadkind=4
4982            ;;
4983          esac
4984          ;;
4985       esac
4986       ;;
4987    esac
4988    ;;
4989 esac
4990
4991 case "$quadtype" in
4992 '')     echo "Alas, no 64-bit integer types in sight." >&4
4993         d_quad="$undef"
4994         ;;
4995 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
4996         d_quad="$define"
4997         ;;
4998 esac
4999
5000
5001 case "$uselonglong" in
5002 "$define"|true|[yY]*)
5003         cat <<EOM >&4
5004
5005 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5006 EOM
5007         use64bitint="$define"
5008         ;;
5009 esac                          
5010 case "$use64bits" in
5011 "$define"|true|[yY]*)
5012         cat <<EOM >&4
5013
5014 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5015 EOM
5016         use64bitint="$define"
5017         ;;
5018 esac                          
5019 case "$use64bitints" in
5020 "$define"|true|[yY]*)
5021         cat <<EOM >&4
5022
5023 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5024 EOM
5025         use64bitint="$define"
5026         ;;
5027 esac                          
5028 case "$use64bitsint" in
5029 "$define"|true|[yY]*)
5030         cat <<EOM >&4
5031
5032 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5033 EOM
5034         use64bitint="$define"
5035         ;;
5036 esac                          
5037 case "$uselonglongs" in
5038 "$define"|true|[yY]*)
5039         cat <<EOM >&4
5040
5041 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5042 EOM
5043         use64bitint="$define"
5044         ;;
5045 esac                          
5046 case "$use64bitsall" in
5047 "$define"|true|[yY]*)
5048         cat <<EOM >&4
5049
5050 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5051 EOM
5052         use64bitall="$define"
5053         ;;
5054 esac                          
5055
5056 case "$ccflags" in
5057 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5058 esac
5059 case "$use64bitall" in
5060 "$define"|true|[yY]*) use64bitint="$define" ;;
5061 esac
5062
5063 case "$longsize" in
5064 8) cat <<EOM
5065
5066 You have natively 64-bit long integers.
5067 EOM
5068    val="$define"
5069    ;;
5070 *) case "$use64bitint" in
5071    "$define"|true|[yY]*) dflt='y';;
5072    *) dflt='n';;
5073    esac
5074    case "$d_quad" in
5075    "$define") ;;
5076    *) dflt='n' ;;
5077    esac
5078    cat <<EOM
5079
5080 Perl can be built to take advantage of 64-bit integer types
5081 on some systems.  To do so, Configure can be run with -Duse64bitint.
5082 Choosing this option will most probably introduce binary incompatibilities.
5083
5084 If this doesn't make any sense to you, just accept the default '$dflt'.
5085 (The default has been chosen based on your configuration.)
5086 EOM
5087    rp='Try to use 64-bit integers, if available?'
5088    . ./myread
5089    case "$ans" in
5090    [yY]*) val="$define" ;;
5091    *)     val="$undef"  ;;
5092    esac
5093    ;;
5094 esac
5095 set use64bitint
5096 eval $setvar
5097
5098 case "$use64bitall" in
5099 "$define"|true|[yY]*) dflt='y' ;;
5100 *) case "$longsize" in
5101    8) dflt='y' ;;
5102    *) dflt='n' ;;
5103    esac
5104    ;;
5105 esac    
5106 cat <<EOM
5107
5108 You may also choose to try maximal 64-bitness.  It means using as much
5109 64-bitness as possible on the platform.  This in turn means even more
5110 binary incompatibilities.  On the other hand, your platform may not
5111 have any more 64-bitness available than what you already have chosen.
5112
5113 If this doesn't make any sense to you, just accept the default '$dflt'.
5114 (The default has been chosen based on your configuration.)
5115 EOM
5116 rp='Try to use maximal 64-bit support, if available?'
5117 . ./myread
5118 case "$ans" in
5119 [yY]*) val="$define" ;;
5120 *)     val="$undef"  ;;
5121 esac
5122 set use64bitall
5123 eval $setvar
5124 case "$use64bitall" in
5125 "$define")
5126         case "$use64bitint" in
5127         "$undef")
5128                 cat <<EOM
5129
5130 Since you have chosen a maximally 64-bit build, I'm also turning on
5131 the use of 64-bit integers.
5132 EOM
5133                 use64bitint="$define" ;;
5134         esac
5135         ;;
5136 esac
5137
5138 case "$use64bitall" in
5139 "$define"|true|[yY]*)
5140         case "$ptrsize" in
5141         4)      cat <<EOM >&4
5142
5143 *** You have chosen a maximally 64-bit build, but your pointers
5144 *** are only 4 bytes wide, disabling maximal 64-bitness.
5145
5146 EOM
5147                 use64bitall="$undef"
5148                 case "$use64bitint" in
5149                 "$define"|true|[yY]*) ;;
5150                 *)      cat <<EOM >&4
5151
5152 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5153
5154 EOM
5155                         use64bitint="$define"
5156                         ;;
5157                 esac
5158                 ;;
5159         esac
5160         ;;
5161 esac
5162
5163 case "$use64bitint" in
5164 "$define"|true|[yY]*)
5165 : Look for a hint-file generated 'call-back-unit'.  If the
5166 : user has specified that a 64-bit perl is to be built,
5167 : we may need to set or change some other defaults.
5168         if $test -f use64bitint.cbu; then
5169                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5170                 . ./use64bitint.cbu
5171         fi
5172         case "$longsize" in
5173         4) case "$archname64" in
5174            '') archname64=64int ;;
5175            esac
5176            ;;
5177         esac
5178         ;;
5179 esac
5180
5181 case "$use64bitall" in
5182 "$define"|true|[yY]*)
5183 : Look for a hint-file generated 'call-back-unit'.  If the
5184 : user has specified that a maximally 64-bit perl is to be built,
5185 : we may need to set or change some other defaults.
5186         if $test -f use64bitall.cbu; then
5187                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5188                 . ./use64bitall.cbu
5189         fi
5190         case "$longsize" in
5191         4) case "$archname64" in
5192            ''|64int) archname64=64all ;;
5193            esac
5194            ;;
5195         esac
5196         ;;
5197 esac
5198
5199 echo " "
5200 echo "Checking for GNU C Library..." >&4
5201 cat >try.c <<EOM
5202 #include <stdio.h>
5203 int main()
5204 {
5205 #ifdef __GLIBC__
5206     exit(0);
5207 #else
5208     exit(1);
5209 #endif
5210 }
5211 EOM
5212 set try
5213 if eval $compile_ok && $run ./try; then
5214         val="$define"
5215         echo "You are using the GNU C Library"
5216 else
5217         val="$undef"
5218         echo "You are not using the GNU C Library"
5219 fi
5220 $rm -f try try.*
5221 set d_gnulibc
5222 eval $setvar
5223
5224 : see if nm is to be used to determine whether a symbol is defined or not
5225 case "$usenm" in
5226 '')
5227         dflt=''
5228         case "$d_gnulibc" in
5229         "$define")
5230                 echo " "
5231                 echo "nm probably won't work on the GNU C Library." >&4
5232                 dflt=n
5233                 ;;
5234         esac
5235         case "$dflt" in
5236         '') 
5237                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5238                         echo " "
5239                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5240                         echo "'nm' won't be sufficient on this sytem." >&4
5241                         dflt=n
5242                 fi
5243                 ;;
5244         esac
5245         case "$dflt" in
5246         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5247                 if $test $dflt -gt 20; then
5248                         dflt=y
5249                 else
5250                         dflt=n
5251                 fi
5252                 ;;
5253         esac
5254         ;;
5255 *)
5256         case "$usenm" in
5257         true|$define) dflt=y;;
5258         *) dflt=n;;
5259         esac
5260         ;;
5261 esac
5262 $cat <<EOM
5263
5264 I can use $nm to extract the symbols from your C libraries. This
5265 is a time consuming task which may generate huge output on the disk (up
5266 to 3 megabytes) but that should make the symbols extraction faster. The
5267 alternative is to skip the 'nm' extraction part and to compile a small
5268 test program instead to determine whether each symbol is present. If
5269 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5270 this may be the best solution.
5271
5272 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5273
5274 EOM
5275 rp="Shall I use $nm to extract C symbols from the libraries?"
5276 . ./myread
5277 case "$ans" in
5278 [Nn]*) usenm=false;;
5279 *) usenm=true;;
5280 esac
5281
5282 runnm=$usenm
5283 case "$reuseval" in
5284 true) runnm=false;;
5285 esac
5286
5287 : nm options which may be necessary
5288 case "$nm_opt" in
5289 '') if $test -f /mach_boot; then
5290                 nm_opt=''       # Mach
5291         elif $test -d /usr/ccs/lib; then
5292                 nm_opt='-p'     # Solaris (and SunOS?)
5293         elif $test -f /dgux; then
5294                 nm_opt='-p'     # DG-UX
5295         elif $test -f /lib64/rld; then
5296                 nm_opt='-p'     # 64-bit Irix
5297         else
5298                 nm_opt=''
5299         fi;;
5300 esac
5301
5302 : nm options which may be necessary for shared libraries but illegal
5303 : for archive libraries.  Thank you, Linux.
5304 case "$nm_so_opt" in
5305 '')     case "$myuname" in
5306         *linux*)
5307                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5308                         nm_so_opt='--dynamic'
5309                 fi
5310                 ;;
5311         esac
5312         ;;
5313 esac
5314
5315 case "$runnm" in
5316 true)
5317 : get list of predefined functions in a handy place
5318 echo " "
5319 case "$libc" in
5320 '') libc=unknown
5321         case "$libs" in
5322         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5323         esac
5324         ;;
5325 esac
5326 case "$libs" in
5327 '') ;;
5328 *)  for thislib in $libs; do
5329         case "$thislib" in
5330         -lc|-lc_s)
5331                 : Handle C library specially below.
5332                 ;;
5333         -l*)
5334                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5335                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5336                         :
5337                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5338                         :
5339                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5340                         :
5341                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5342                         :
5343                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5344                         :
5345                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5346                         :
5347                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5348                         :
5349                 else
5350                         try=''
5351                 fi
5352                 libnames="$libnames $try"
5353                 ;;
5354         *) libnames="$libnames $thislib" ;;
5355         esac
5356         done
5357         ;;
5358 esac
5359 xxx=normal
5360 case "$libc" in
5361 unknown)
5362         set /lib/libc.$so
5363         for xxx in $libpth; do
5364                 $test -r $1 || set $xxx/libc.$so
5365                 : The messy sed command sorts on library version numbers.
5366                 $test -r $1 || \
5367                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5368                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5369                                 h
5370                                 s/[0-9][0-9]*/0000&/g
5371                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5372                                 G
5373                                 s/\n/ /' | \
5374                          $sort | $sed -e 's/^.* //'`
5375                 eval set \$$#
5376         done
5377         $test -r $1 || set /usr/ccs/lib/libc.$so
5378         $test -r $1 || set /lib/libsys_s$_a
5379         ;;
5380 *)
5381         set blurfl
5382         ;;
5383 esac
5384 if $test -r "$1"; then
5385         echo "Your (shared) C library seems to be in $1."
5386         libc="$1"
5387 elif $test -r /lib/libc && $test -r /lib/clib; then
5388         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5389         xxx=apollo
5390         libc='/lib/clib /lib/libc'
5391         if $test -r /lib/syslib; then
5392                 echo "(Your math library is in /lib/syslib.)"
5393                 libc="$libc /lib/syslib"
5394         fi
5395 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5396         echo "Your C library seems to be in $libc, as you said before."
5397 elif $test -r $incpath/usr/lib/libc$_a; then
5398         libc=$incpath/usr/lib/libc$_a;
5399         echo "Your C library seems to be in $libc.  That's fine."
5400 elif $test -r /lib/libc$_a; then
5401         libc=/lib/libc$_a;
5402         echo "Your C library seems to be in $libc.  You're normal."
5403 else
5404         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5405                 :
5406         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5407                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5408         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5409                 :
5410         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5411                 :
5412         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5413                 :
5414         else
5415                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5416         fi
5417         if $test -r "$tans"; then
5418                 echo "Your C library seems to be in $tans, of all places."
5419                 libc=$tans
5420         else
5421                 libc='blurfl'
5422         fi
5423 fi
5424 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5425         dflt="$libc"
5426         cat <<EOM
5427
5428 If the guess above is wrong (which it might be if you're using a strange
5429 compiler, or your machine supports multiple models), you can override it here.
5430
5431 EOM
5432 else
5433         dflt=''
5434         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5435         cat >&4 <<EOM
5436 I can't seem to find your C library.  I've looked in the following places:
5437
5438 EOM
5439         $sed 's/^/      /' libpath
5440         cat <<EOM
5441
5442 None of these seems to contain your C library. I need to get its name...
5443
5444 EOM
5445 fi
5446 fn=f
5447 rp='Where is your C library?'
5448 . ./getfile
5449 libc="$ans"
5450
5451 echo " "
5452 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5453 set X `cat libnames`
5454 shift
5455 xxx=files
5456 case $# in 1) xxx=file; esac
5457 echo "Extracting names from the following $xxx for later perusal:" >&4
5458 echo " "
5459 $sed 's/^/      /' libnames >&4
5460 echo " "
5461 $echo $n "This may take a while...$c" >&4
5462
5463 for file in $*; do
5464         case $file in
5465         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5466         *) $nm $nm_opt $file 2>/dev/null;;
5467         esac
5468 done >libc.tmp
5469
5470 $echo $n ".$c"
5471 $grep fprintf libc.tmp > libc.ptf
5472 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5473 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5474 xxx='[ADTSIW]'
5475 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5476         eval $xscan;\
5477         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5478                 eval $xrun
5479 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5480         eval $xscan;\
5481         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5482                 eval $xrun
5483 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5484         eval $xscan;\
5485         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5486                 eval $xrun
5487 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5488         eval $xscan;\
5489         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5490                 eval $xrun
5491 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5492         eval $xscan;\
5493         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5494                 eval $xrun
5495 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5496         eval $xscan;\
5497         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5498                 eval $xrun
5499 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5500                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5501         eval $xscan;\
5502         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5503                 eval $xrun
5504 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5505         eval $xscan;\
5506         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5507                 eval $xrun
5508 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5509         eval $xscan;\
5510         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5511                 eval $xrun
5512 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5513         eval $xscan;\
5514         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5515                 eval $xrun
5516 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5517         eval $xscan;\
5518         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5519                 eval $xrun
5520 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5521         eval $xscan;\
5522         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5523                 eval $xrun
5524 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5525         eval $xscan;\
5526         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5527                 eval $xrun
5528 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5529         eval $xscan;\
5530         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5531                 eval $xrun
5532 else
5533         $nm -p $* 2>/dev/null >libc.tmp
5534         $grep fprintf libc.tmp > libc.ptf
5535         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5536                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5537         then
5538                 nm_opt='-p'
5539                 eval $xrun
5540         else
5541                 echo " "
5542                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5543                 com=''
5544                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5545                         for thisname in $libnames $libc; do
5546                                 $ar t $thisname >>libc.tmp
5547                         done
5548                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5549                         echo "Ok." >&4
5550                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5551                         # Repeat libc to extract forwarders to DLL entries too
5552                         for thisname in $libnames $libc; do
5553                                 $ar tv $thisname >>libc.tmp
5554                                 # Revision 50 of EMX has bug in $ar.
5555                                 # it will not extract forwarders to DLL entries
5556                                 # Use emximp which will extract exactly them.
5557                                 emximp -o tmp.imp $thisname \
5558                                     2>/dev/null && \
5559                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5560                                     < tmp.imp >>libc.tmp
5561                                 $rm tmp.imp
5562                         done
5563                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5564                         echo "Ok." >&4
5565                 else
5566                         echo "$ar didn't seem to work right." >&4
5567                         echo "Maybe this is a Cray...trying bld instead..." >&4
5568                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5569                         then
5570                                 for thisname in $libnames; do
5571                                         bld t $libnames | \
5572                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5573                                         $ar t $thisname >>libc.tmp
5574                                 done
5575                                 echo "Ok." >&4
5576                         else
5577                                 echo "That didn't work either.  Giving up." >&4
5578                                 exit 1
5579                         fi
5580                 fi
5581         fi
5582 fi
5583 nm_extract="$com"
5584 if $test -f /lib/syscalls.exp; then
5585         echo " "
5586         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5587         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5588 fi
5589 ;;
5590 esac
5591 $rm -f libnames libpath
5592
5593 : is a C symbol defined?
5594 csym='tlook=$1;
5595 case "$3" in
5596 -v) tf=libc.tmp; tc=""; tdc="";;
5597 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5598 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5599 esac;
5600 tx=yes;
5601 case "$reuseval-$4" in
5602 true-) ;;
5603 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5604 esac;
5605 case "$tx" in
5606 yes)
5607         case "$runnm" in
5608         true)
5609                 if $contains $tlook $tf >/dev/null 2>&1;
5610                 then tval=true;
5611                 else tval=false;
5612                 fi;;
5613         *)
5614                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5615                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5616                 then tval=true;
5617                 else tval=false;
5618                 fi;
5619                 $rm -f t t.c;;
5620         esac;;
5621 *)
5622         case "$tval" in
5623         $define) tval=true;;
5624         *) tval=false;;
5625         esac;;
5626 esac;
5627 eval "$2=$tval"'
5628
5629 : define an is-in-libc? function
5630 inlibc='echo " "; td=$define; tu=$undef;
5631 sym=$1; var=$2; eval "was=\$$2";
5632 tx=yes;
5633 case "$reuseval$was" in
5634 true) ;;
5635 true*) tx=no;;
5636 esac;
5637 case "$tx" in
5638 yes)
5639         set $sym tres -f;
5640         eval $csym;
5641         case "$tres" in
5642         true)
5643                 echo "$sym() found." >&4;
5644                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5645         *)
5646                 echo "$sym() NOT found." >&4;
5647                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5648         esac;;
5649 *)
5650         case "$was" in
5651         $define) echo "$sym() found." >&4;;
5652         *) echo "$sym() NOT found." >&4;;
5653         esac;;
5654 esac'
5655
5656 : see if sqrtl exists
5657 set sqrtl d_sqrtl
5658 eval $inlibc
5659
5660 case "$ccflags" in
5661 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5662 esac
5663
5664 case "$uselongdouble" in
5665 $define|true|[yY]*)     dflt='y';;
5666 *) dflt='n';;
5667 esac
5668 cat <<EOM
5669
5670 Perl can be built to take advantage of long doubles which
5671 (if available) may give more accuracy and range for floating point numbers.
5672
5673 If this doesn't make any sense to you, just accept the default '$dflt'.
5674 EOM
5675 rp='Try to use long doubles if available?'
5676 . ./myread
5677 case "$ans" in
5678 y|Y)    val="$define"   ;;
5679 *)      val="$undef"    ;;
5680 esac
5681 set uselongdouble
5682 eval $setvar
5683
5684 case "$uselongdouble" in
5685 true|[yY]*) uselongdouble="$define" ;;
5686 esac
5687
5688 case "$uselongdouble" in
5689 $define)
5690 : Look for a hint-file generated 'call-back-unit'.  If the
5691 : user has specified that long doubles should be used,
5692 : we may need to set or change some other defaults.
5693         if $test -f uselongdouble.cbu; then
5694                 echo "Your platform has some specific hints for long doubles, using them..."
5695                 . ./uselongdouble.cbu
5696         else
5697                 $cat <<EOM
5698 (Your platform doesn't have any specific hints for long doubles.)
5699 EOM
5700         fi
5701         ;;
5702 esac
5703
5704 case "$uselongdouble:$d_sqrtl" in
5705 $define:$undef)
5706                 $cat <<EOM >&4
5707
5708 *** You requested the use of long doubles but you do not seem to have
5709 *** the mathematic functions for long doubles.  I'm disabling the use
5710 *** of long doubles.
5711
5712 EOM
5713         uselongdouble=$undef
5714         ;;
5715 esac
5716
5717 : check for length of double
5718 echo " "
5719 case "$doublesize" in
5720 '')
5721         echo "Checking to see how big your double precision numbers are..." >&4
5722         $cat >try.c <<'EOCP'
5723 #include <stdio.h>
5724 int main()
5725 {
5726     printf("%d\n", (int)sizeof(double));
5727     exit(0);
5728 }
5729 EOCP
5730         set try
5731         if eval $compile_ok; then
5732                 doublesize=`$run ./try`
5733                 echo "Your double is $doublesize bytes long."
5734         else
5735                 dflt='8'
5736                 echo "(I can't seem to compile the test program.  Guessing...)"
5737                 rp="What is the size of a double precision number (in bytes)?"
5738                 . ./myread
5739                 doublesize="$ans"
5740         fi
5741         ;;
5742 esac
5743 $rm -f try.c try
5744
5745 : check for long doubles
5746 echo " "
5747 echo "Checking to see if you have long double..." >&4
5748 echo 'int main() { long double x = 7.0; }' > try.c
5749 set try
5750 if eval $compile; then
5751         val="$define"
5752         echo "You have long double."
5753 else
5754         val="$undef"
5755         echo "You do not have long double."
5756 fi
5757 $rm try.*
5758 set d_longdbl
5759 eval $setvar
5760
5761 : check for length of long double
5762 case "${d_longdbl}${longdblsize}" in
5763 $define)
5764         echo " "
5765         echo "Checking to see how big your long doubles are..." >&4
5766         $cat >try.c <<'EOCP'
5767 #include <stdio.h>
5768 int main()
5769 {
5770         printf("%d\n", sizeof(long double));
5771 }
5772 EOCP
5773         set try
5774         set try
5775         if eval $compile; then
5776                 longdblsize=`$run ./try`
5777                 echo "Your long doubles are $longdblsize bytes long."
5778         else
5779                 dflt='8'
5780                 echo " "
5781                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5782                 rp="What is the size of a long double (in bytes)?"
5783                 . ./myread
5784                 longdblsize="$ans"
5785         fi
5786         if $test "X$doublesize" = "X$longdblsize"; then
5787                 echo "(That isn't any different from an ordinary double.)"
5788         fi      
5789         ;;
5790 esac
5791 $rm -f try.* try
5792
5793 case "$useperlio" in
5794 $define|true|[yY]*|'')  dflt='y';;
5795 *) dflt='n';;
5796 esac
5797 cat <<EOM
5798
5799 Previous version of $package used the standard IO mechanisms as
5800 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5801 alternate IO mechanisms via the PerlIO abstraction layer, but the
5802 stdio mechanism is still available if needed.  The abstraction layer
5803 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5804 Using PerlIO with sfio may cause problems with some extension modules.
5805
5806 If this doesn't make any sense to you, just accept the default '$dflt'.
5807 EOM
5808 rp='Use the PerlIO abstraction layer?'
5809 . ./myread
5810 case "$ans" in
5811 y|Y) 
5812         val="$define"
5813         ;;
5814 *)      
5815         echo "Ok, doing things the stdio way."
5816         val="$undef"
5817         ;;
5818 esac
5819 set useperlio
5820 eval $setvar 
5821
5822 case "$usesocks" in
5823 $define|true|[yY]*)
5824         case "$useperlio" in
5825         $define|true|[yY]*) ;;
5826         *)      cat >&4 <<EOM
5827
5828 You are using the SOCKS proxy protocol library which means that you
5829 should also use the PerlIO layer.  You may be headed for trouble.
5830
5831 EOM
5832                 ;;
5833         esac
5834         ;;
5835 esac
5836
5837         
5838 : determine the architecture name
5839 echo " "
5840 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5841         tarch=`arch`"-$osname"
5842 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5843         if uname -m > tmparch 2>&1 ; then
5844                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5845                         -e 's/$/'"-$osname/" tmparch`
5846         else
5847                 tarch="$osname"
5848         fi
5849         $rm -f tmparch
5850 else
5851         tarch="$osname"
5852 fi
5853 case "$myarchname" in
5854 ''|"$tarch") ;;
5855 *)
5856         echo "(Your architecture name used to be $myarchname.)"
5857         archname=''
5858         ;;
5859 esac
5860 case "$targetarch" in
5861 '') ;;
5862 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5863 esac
5864 myarchname="$tarch"
5865 case "$archname" in
5866 '') dflt="$tarch";;
5867 *) dflt="$archname";;
5868 esac
5869 rp='What is your architecture name'
5870 . ./myread
5871 archname="$ans"
5872 case "$usethreads" in
5873 $define)
5874         echo "Threads selected." >&4
5875         case "$archname" in
5876         *-thread*) echo "...and architecture name already has -thread." >&4
5877                 ;;
5878         *)      archname="$archname-thread"
5879                 echo "...setting architecture name to $archname." >&4
5880                 ;;
5881         esac
5882         ;;
5883 esac
5884 case "$usemultiplicity" in
5885 $define)
5886         echo "Multiplicity selected." >&4
5887         case "$archname" in
5888         *-multi*) echo "...and architecture name already has -multi." >&4
5889                 ;;
5890         *)      archname="$archname-multi"
5891                 echo "...setting architecture name to $archname." >&4
5892                 ;;
5893         esac
5894         ;;
5895 esac
5896 case "$use64bitint$use64bitall" in
5897 *"$define"*)
5898         case "$archname64" in
5899         '')
5900                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5901                 ;;
5902         *)
5903                 case "$use64bitint" in
5904                 "$define") echo "64 bit integers selected." >&4 ;;
5905                 esac
5906                 case "$use64bitall" in
5907                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5908                 esac
5909                 case "$archname" in
5910                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5911                         ;;
5912                 *)      archname="$archname-$archname64"
5913                         echo "...setting architecture name to $archname." >&4
5914                         ;;
5915                 esac
5916                 ;;
5917         esac
5918 esac
5919 case "$uselongdouble" in
5920 $define)
5921         echo "Long doubles selected." >&4
5922         case "$longdblsize" in
5923         $doublesize)
5924                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5925                 ;;
5926         *)
5927                 case "$archname" in
5928                 *-ld*) echo "...and architecture name already has -ld." >&4
5929                         ;;
5930                 *)      archname="$archname-ld"
5931                         echo "...setting architecture name to $archname." >&4
5932                         ;;
5933                 esac
5934                 ;;
5935         esac
5936         ;;
5937 esac
5938 case "$useperlio" in
5939 $define)
5940         echo "Perlio selected." >&4
5941         ;;
5942 *)
5943         echo "Perlio not selected, using stdio." >&4
5944         case "$archname" in
5945         *-stdio*) echo "...and architecture name already has -stdio." >&4
5946                 ;;
5947         *)      archname="$archname-stdio"
5948                 echo "...setting architecture name to $archname." >&4
5949                 ;;
5950         esac
5951         ;;
5952 esac
5953
5954 : determine root of directory hierarchy where package will be installed.
5955 case "$prefix" in
5956 '')
5957         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5958         ;;
5959 *)
5960         dflt="$prefix"
5961         ;;
5962 esac
5963 $cat <<EOM
5964
5965 By default, $package will be installed in $dflt/bin, manual pages
5966 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5967 installation directories. Typically this is something like /usr/local.
5968 If you wish to have binaries under /usr/bin but other parts of the
5969 installation under /usr/local, that's ok: you will be prompted
5970 separately for each of the installation directories, the prefix being
5971 only used to set the defaults.
5972
5973 EOM
5974 fn=d~
5975 rp='Installation prefix to use?'
5976 . ./getfile
5977 oldprefix=''
5978 case "$prefix" in
5979 '') ;;
5980 *)
5981         case "$ans" in
5982         "$prefix") ;;
5983         *) oldprefix="$prefix";;
5984         esac
5985         ;;
5986 esac
5987 prefix="$ans"
5988 prefixexp="$ansexp"
5989
5990 case "$afsroot" in
5991 '')     afsroot=/afs ;;
5992 *)      afsroot=$afsroot ;;
5993 esac
5994
5995 : is AFS running?
5996 echo " "
5997 case "$afs" in
5998 $define|true)   afs=true ;;
5999 $undef|false)   afs=false ;;
6000 *)      if test -d $afsroot; then
6001                 afs=true
6002         else
6003                 afs=false
6004         fi
6005         ;;
6006 esac
6007 if $afs; then
6008         echo "AFS may be running... I'll be extra cautious then..." >&4
6009 else
6010         echo "AFS does not seem to be running..." >&4
6011 fi
6012
6013 : determine installation prefix for where package is to be installed.
6014 if $afs; then 
6015 $cat <<EOM
6016
6017 Since you are running AFS, I need to distinguish the directory in which
6018 files will reside from the directory in which they are installed (and from
6019 which they are presumably copied to the former directory by occult means).
6020
6021 EOM
6022         case "$installprefix" in
6023         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6024         *) dflt="$installprefix";;
6025         esac
6026 else
6027 $cat <<EOM
6028
6029 In some special cases, particularly when building $package for distribution,
6030 it is convenient to distinguish between the directory in which files should 
6031 be installed from the directory ($prefix) in which they 
6032 will eventually reside.  For most users, these two directories are the same.
6033
6034 EOM
6035         case "$installprefix" in
6036         '') dflt=$prefix ;;
6037         *) dflt=$installprefix;;
6038         esac
6039 fi
6040 fn=d~
6041 rp='What installation prefix should I use for installing files?'
6042 . ./getfile
6043 installprefix="$ans"
6044 installprefixexp="$ansexp"
6045
6046 : set the prefixit variable, to compute a suitable default value
6047 prefixit='case "$3" in
6048 ""|none)
6049         case "$oldprefix" in
6050         "") eval "$1=\"\$$2\"";;
6051         *)
6052                 case "$3" in
6053                 "") eval "$1=";;
6054                 none)
6055                         eval "tp=\"\$$2\"";
6056                         case "$tp" in
6057                         ""|" ") eval "$1=\"\$$2\"";;
6058                         *) eval "$1=";;
6059                         esac;;
6060                 esac;;
6061         esac;;
6062 *)
6063         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6064         case "$tp" in
6065         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6066         /*-$oldprefix/*|\~*-$oldprefix/*)
6067                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6068         *) eval "$1=\"\$$2\"";;
6069         esac;;
6070 esac'
6071
6072 : get the patchlevel
6073 echo " "
6074 echo "Getting the current patchlevel..." >&4
6075 if $test -r $rsrc/patchlevel.h;then
6076         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6077         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6078         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6079         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6080         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6081         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6082        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6083 else
6084         revision=0
6085         patchlevel=0
6086         subversion=0
6087         api_revision=0
6088         api_version=0
6089         api_subversion=0
6090         perl_patchlevel=0
6091         $echo "(You do not have patchlevel.h.  Eek.)"
6092 fi
6093 if $test -r $rsrc/.patch ; then  
6094         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6095                 perl_patchlevel=`cat $rsrc/.patch`
6096         fi
6097 fi
6098 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6099 version_patchlevel_string="version $patchlevel subversion $subversion"
6100 case "$perl_patchlevel" in
6101 0|'') ;;
6102 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6103 esac
6104
6105 $echo "(You have $package $version_patchlevel_string.)"
6106
6107 case "$osname" in
6108 dos|vms)
6109         : XXX Should be a Configure test for double-dots in filenames.
6110         version=`echo $revision $patchlevel $subversion | \
6111                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6112         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6113                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6114         ;;
6115 *)
6116         version=`echo $revision $patchlevel $subversion | \
6117                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6118         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6119                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6120         ;;
6121 esac
6122 : Special case the 5.005_xx maintenance series, which used 5.005
6123 : without any subversion label as a subdirectory in $sitelib
6124 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6125         api_versionstring='5.005'
6126 fi
6127
6128 : determine installation style
6129 : For now, try to deduce it from prefix unless it is already set.
6130 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6131 case "$installstyle" in
6132 '')     case "$prefix" in
6133                 *perl*) dflt='lib';;
6134                 *) dflt='lib/perl5' ;;
6135         esac
6136         ;;
6137 *)      dflt="$installstyle" ;;
6138 esac
6139 : Probably not worth prompting for this since we prompt for all
6140 : the directories individually, and the prompt would be too long and
6141 : confusing anyway.
6142 installstyle=$dflt
6143
6144 : determine where private library files go
6145 : Usual default is /usr/local/lib/perl5/$version.
6146 : Also allow things like /opt/perl/lib/$version, since 
6147 : /opt/perl/lib/perl5... would be redundant.
6148 : The default "style" setting is made in installstyle.U
6149 case "$installstyle" in
6150 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6151 *)       set dflt privlib lib/$version ;;
6152 esac
6153 eval $prefixit
6154 $cat <<EOM
6155
6156 There are some auxiliary files for $package that need to be put into a
6157 private library directory that is accessible by everyone.
6158
6159 EOM
6160 fn=d~+
6161 rp='Pathname where the private library files will reside?'
6162 . ./getfile
6163 privlib="$ans"
6164 privlibexp="$ansexp"
6165 : Change installation prefix, if necessary.
6166 if $test X"$prefix" != X"$installprefix"; then
6167         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6168 else
6169         installprivlib="$privlibexp"
6170 fi
6171
6172 : set the prefixup variable, to restore leading tilda escape
6173 prefixup='case "$prefixexp" in
6174 "$prefix") ;;
6175 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6176 esac'
6177
6178 : determine where public architecture dependent libraries go
6179 set archlib archlib
6180 eval $prefixit
6181 : privlib default is /usr/local/lib/$package/$version
6182 : archlib default is /usr/local/lib/$package/$version/$archname
6183 : privlib may have an optional trailing /share.
6184 tdflt=`echo $privlib | $sed 's,/share$,,'`
6185 tdflt=$tdflt/$archname
6186 case "$archlib" in
6187 '')     dflt=$tdflt
6188         ;;
6189 *)      dflt="$archlib"
6190     ;;
6191 esac
6192 $cat <<EOM
6193
6194 $spackage contains architecture-dependent library files.  If you are
6195 sharing libraries in a heterogeneous environment, you might store
6196 these files in a separate location.  Otherwise, you can just include
6197 them with the rest of the public library files.
6198
6199 EOM
6200 fn=d+~
6201 rp='Where do you want to put the public architecture-dependent libraries?'
6202 . ./getfile
6203 archlib="$ans"
6204 archlibexp="$ansexp"
6205 if $test X"$archlib" = X"$privlib"; then
6206         d_archlib="$undef"
6207 else
6208         d_archlib="$define"
6209 fi
6210 : Change installation prefix, if necessary.
6211 if $test X"$prefix" != X"$installprefix"; then
6212         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6213 else
6214         installarchlib="$archlibexp"
6215 fi
6216
6217
6218 : Binary compatibility with 5.005 is not possible for builds
6219 : with advanced features
6220 case "$usethreads$usemultiplicity" in
6221 *define*)
6222         bincompat5005="$undef"
6223         d_bincompat5005="$undef"
6224         ;;
6225 *)      $cat <<EOM
6226
6227 This version of Perl can be compiled for binary compatibility with 5.005.
6228 If you decide to do so, you will be able to continue using most of the
6229 extensions that were compiled for Perl 5.005.
6230
6231 EOM
6232         case "$bincompat5005$d_bincompat5005" in
6233         *"$undef"*) dflt=n ;;
6234         *) dflt=y ;;
6235         esac
6236         rp='Binary compatibility with Perl 5.005?'
6237         . ./myread
6238         case "$ans" in
6239         y*) val="$define" ;;
6240         *)  val="$undef" ;;
6241         esac
6242         set d_bincompat5005
6243         eval $setvar
6244         case "$d_bincompat5005" in
6245         "$define")
6246                 bincompat5005="$define"
6247                 ;;
6248         *)      bincompat5005="$undef"
6249                 d_bincompat5005="$undef"
6250                 ;;
6251         esac
6252         ;;
6253 esac
6254
6255
6256 : see if setuid scripts can be secure
6257 $cat <<EOM
6258
6259 Some kernels have a bug that prevents setuid #! scripts from being
6260 secure.  Some sites have disabled setuid #! scripts because of this.
6261
6262 First let's decide if your kernel supports secure setuid #! scripts.
6263 (If setuid #! scripts would be secure but have been disabled anyway,
6264 don't say that they are secure if asked.)
6265
6266 EOM
6267
6268 val="$undef"
6269 if $test -d /dev/fd; then
6270         echo "#!$ls" >reflect
6271         chmod +x,u+s reflect
6272         ./reflect >flect 2>&1
6273         if $contains "/dev/fd" flect >/dev/null; then
6274                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6275                 val="$define"
6276         else
6277                 $cat <<EOM
6278 If you are not sure if they are secure, I can check but I'll need a
6279 username and password different from the one you are using right now.
6280 If you don't have such a username or don't want me to test, simply
6281 enter 'none'.
6282
6283 EOM
6284                 rp='Other username to test security of setuid scripts with?'
6285                 dflt='none'
6286                 . ./myread
6287                 case "$ans" in
6288                 n|none)
6289                         case "$d_suidsafe" in
6290                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6291                                 dflt=n;;
6292                         "$undef")
6293                                 echo "Well, the $hint value is *not* secure." >&4
6294                                 dflt=n;;
6295                         *)      echo "Well, the $hint value *is* secure." >&4
6296                                 dflt=y;;
6297                         esac
6298                         ;;
6299                 *)
6300                         $rm -f reflect flect
6301                         echo "#!$ls" >reflect
6302                         chmod +x,u+s reflect
6303                         echo >flect
6304                         chmod a+w flect
6305                         echo '"su" will (probably) prompt you for '"$ans's password."
6306                         su $ans -c './reflect >flect'
6307                         if $contains "/dev/fd" flect >/dev/null; then
6308                                 echo "Okay, it looks like setuid scripts are secure." >&4
6309                                 dflt=y
6310                         else
6311                                 echo "I don't think setuid scripts are secure." >&4
6312                                 dflt=n
6313                         fi
6314                         ;;
6315                 esac
6316                 rp='Does your kernel have *secure* setuid scripts?'
6317                 . ./myread
6318                 case "$ans" in
6319                 [yY]*)  val="$define";;
6320                 *)      val="$undef";;
6321                 esac
6322         fi
6323 else
6324         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6325         echo "(That's for file descriptors, not floppy disks.)"
6326         val="$undef"
6327 fi
6328 set d_suidsafe
6329 eval $setvar
6330
6331 $rm -f reflect flect
6332
6333 : now see if they want to do setuid emulation
6334 echo " "
6335 val="$undef"
6336 case "$d_suidsafe" in
6337 "$define")
6338         val="$undef"
6339         echo "No need to emulate SUID scripts since they are secure here." >& 4
6340         ;;
6341 *)
6342         $cat <<EOM
6343 Some systems have disabled setuid scripts, especially systems where
6344 setuid scripts cannot be secure.  On systems where setuid scripts have
6345 been disabled, the setuid/setgid bits on scripts are currently
6346 useless.  It is possible for $package to detect those bits and emulate
6347 setuid/setgid in a secure fashion.  This emulation will only work if
6348 setuid scripts have been disabled in your kernel.
6349
6350 EOM
6351         case "$d_dosuid" in
6352         "$define") dflt=y ;;
6353         *) dflt=n ;;
6354         esac
6355         rp="Do you want to do setuid/setgid emulation?"
6356         . ./myread
6357         case "$ans" in
6358         [yY]*)  val="$define";;
6359         *)      val="$undef";;
6360         esac
6361         ;;
6362 esac
6363 set d_dosuid
6364 eval $setvar
6365
6366 : see if this is a malloc.h system
6367 set malloc.h i_malloc
6368 eval $inhdr
6369
6370 : see if stdlib is available
6371 set stdlib.h i_stdlib
6372 eval $inhdr
6373
6374 : determine which malloc to compile in
6375 echo " "
6376 case "$usemymalloc" in
6377 [yY]*|true|$define)     dflt='y' ;;
6378 [nN]*|false|$undef)     dflt='n' ;;
6379 *)      case "$ptrsize" in
6380         4) dflt='y' ;;
6381         *) dflt='n' ;;
6382         esac
6383         ;;
6384 esac
6385 rp="Do you wish to attempt to use the malloc that comes with $package?"
6386 . ./myread
6387 usemymalloc="$ans"
6388 case "$ans" in
6389 y*|true)
6390         usemymalloc='y'
6391         mallocsrc='malloc.c'
6392         mallocobj="malloc$_o"
6393         d_mymalloc="$define"
6394         case "$libs" in
6395         *-lmalloc*)
6396                 : Remove malloc from list of libraries to use
6397                 echo "Removing unneeded -lmalloc from library list" >&4
6398                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6399                 shift
6400                 libs="$*"
6401                 echo "libs = $libs" >&4
6402                 ;;
6403         esac
6404         ;;
6405 *)
6406         usemymalloc='n'
6407         mallocsrc=''
6408         mallocobj=''
6409         d_mymalloc="$undef"
6410         ;;
6411 esac
6412
6413 : compute the return types of malloc and free
6414 echo " "
6415 $cat >malloc.c <<END
6416 #$i_malloc I_MALLOC
6417 #$i_stdlib I_STDLIB
6418 #include <stdio.h>
6419 #include <sys/types.h>
6420 #ifdef I_MALLOC
6421 #include <malloc.h>
6422 #endif
6423 #ifdef I_STDLIB
6424 #include <stdlib.h>
6425 #endif
6426 #ifdef TRY_MALLOC
6427 void *malloc();
6428 #endif
6429 #ifdef TRY_FREE
6430 void free();
6431 #endif
6432 END
6433 case "$malloctype" in
6434 '')
6435         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6436                 malloctype='void *'
6437         else
6438                 malloctype='char *'
6439         fi
6440         ;;
6441 esac
6442 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6443
6444 case "$freetype" in
6445 '')
6446         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6447                 freetype='void'
6448         else
6449                 freetype='int'
6450         fi
6451         ;;
6452 esac
6453 echo "Your system uses $freetype free(), it would seem." >&4
6454 $rm -f malloc.[co]
6455 $cat <<EOM
6456
6457 After $package is installed, you may wish to install various
6458 add-on modules and utilities.  Typically, these add-ons will
6459 be installed under $prefix with the rest
6460 of this package.  However, you may wish to install such add-ons
6461 elsewhere under a different prefix.
6462
6463 If you do not wish to put everything under a single prefix, that's
6464 ok.  You will be prompted for the individual locations; this siteprefix
6465 is only used to suggest the defaults.
6466
6467 The default should be fine for most people.
6468
6469 EOM
6470 fn=d~+
6471 rp='Installation prefix to use for add-on modules and utilities?'
6472 : XXX Here might be another good place for an installstyle setting.
6473 case "$siteprefix" in
6474 '') dflt=$prefix ;;
6475 *)  dflt=$siteprefix ;;
6476 esac
6477 . ./getfile
6478 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6479 oldsiteprefix=''
6480 case "$siteprefix" in
6481 '') ;;
6482 *)      case "$ans" in
6483         "$prefix") ;;
6484         *) oldsiteprefix="$prefix";;
6485         esac
6486         ;;
6487 esac
6488 siteprefix="$ans"
6489 siteprefixexp="$ansexp"
6490
6491 : determine where site specific libraries go.
6492 : Usual default is /usr/local/lib/perl5/site_perl/$version
6493 : The default "style" setting is made in installstyle.U
6494 : XXX No longer works with Prefixit stuff.
6495 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6496 case "$sitelib" in
6497 '') case "$installstyle" in
6498         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6499         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6500         esac
6501         ;;
6502 *)      dflt="$sitelib"
6503         ;;
6504 esac
6505 $cat <<EOM
6506
6507 The installation process will create a directory for
6508 site-specific extensions and modules.  Most users find it convenient
6509 to place all site-specific files in this directory rather than in the
6510 main distribution directory.
6511
6512 EOM
6513 fn=d~+
6514 rp='Pathname for the site-specific library files?'
6515 . ./getfile
6516 sitelib="$ans"
6517 sitelibexp="$ansexp"
6518 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6519 : Change installation prefix, if necessary.
6520 if $test X"$prefix" != X"$installprefix"; then
6521         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6522 else
6523         installsitelib="$sitelibexp"
6524 fi
6525
6526 : determine where site specific architecture-dependent libraries go.
6527 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6528 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6529 : sitelib may have an optional trailing /share.
6530 case "$sitearch" in
6531 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6532         dflt="$dflt/$archname"
6533         ;;
6534 *)      dflt="$sitearch"
6535         ;;
6536 esac
6537 set sitearch sitearch none
6538 eval $prefixit
6539 $cat <<EOM
6540
6541 The installation process will also create a directory for
6542 architecture-dependent site-specific extensions and modules.
6543
6544 EOM
6545 fn=d~+
6546 rp='Pathname for the site-specific architecture-dependent library files?'
6547 . ./getfile
6548 sitearch="$ans"
6549 sitearchexp="$ansexp"
6550 : Change installation prefix, if necessary.
6551 if $test X"$prefix" != X"$installprefix"; then
6552         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6553 else
6554         installsitearch="$sitearchexp"
6555 fi
6556
6557 $cat <<EOM
6558
6559 The installation process will also create a directory for
6560 vendor-supplied add-ons.  Vendors who supply perl with their system
6561 may find it convenient to place all vendor-supplied files in this
6562 directory rather than in the main distribution directory.  This will
6563 ease upgrades between binary-compatible maintenance versions of perl.
6564
6565 Of course you may also use these directories in whatever way you see
6566 fit.  For example, you might use them to access modules shared over a
6567 company-wide network.
6568
6569 The default answer should be fine for most people.
6570 This causes further questions about vendor add-ons to be skipped
6571 and no vendor-specific directories will be configured for perl.
6572
6573 EOM
6574 rp='Do you want to configure vendor-specific add-on directories?'
6575 case "$usevendorprefix" in
6576 define|true|[yY]*) dflt=y ;;
6577 *)      : User may have set vendorprefix directly on Configure command line.
6578         case "$vendorprefix" in
6579         ''|' ') dflt=n ;;
6580         *)      dflt=y ;;
6581         esac
6582         ;;
6583 esac
6584 . ./myread
6585 case "$ans" in
6586 [yY]*)  fn=d~+
6587         rp='Installation prefix to use for vendor-supplied add-ons?'
6588         case "$vendorprefix" in
6589         '') dflt='' ;;
6590         *)  dflt=$vendorprefix ;;
6591         esac
6592         . ./getfile
6593         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6594         oldvendorprefix=''
6595         case "$vendorprefix" in
6596         '') ;;
6597         *)      case "$ans" in
6598                 "$prefix") ;;
6599                 *) oldvendorprefix="$prefix";;
6600                 esac
6601                 ;;
6602         esac
6603         usevendorprefix="$define"
6604         vendorprefix="$ans"
6605         vendorprefixexp="$ansexp"
6606         ;;
6607 *)      usevendorprefix="$undef"
6608         vendorprefix=''
6609         vendorprefixexp=''
6610         ;;
6611 esac
6612
6613 case "$vendorprefix" in
6614 '')     d_vendorlib="$undef"
6615         vendorlib=''
6616         vendorlibexp=''
6617         ;;
6618 *)      d_vendorlib="$define"
6619         : determine where vendor-supplied modules go.
6620         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6621         case "$vendorlib" in
6622         '')
6623                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6624                 case "$installstyle" in
6625                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6626                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6627                 esac
6628                 ;;
6629         *)      dflt="$vendorlib"
6630                 ;;
6631         esac
6632         fn=d~+
6633         rp='Pathname for the vendor-supplied library files?'
6634         . ./getfile
6635         vendorlib="$ans"
6636         vendorlibexp="$ansexp"
6637         ;;
6638 esac
6639 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6640 : Change installation prefix, if necessary.
6641 if $test X"$prefix" != X"$installprefix"; then
6642         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6643 else
6644         installvendorlib="$vendorlibexp"
6645 fi
6646
6647 case "$vendorprefix" in
6648 '')     d_vendorarch="$undef"
6649         vendorarch=''
6650         vendorarchexp=''
6651         ;;
6652 *)      d_vendorarch="$define"
6653         : determine where vendor-supplied architecture-dependent libraries go.
6654         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6655         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6656         : vendorlib may have an optional trailing /share.
6657         case "$vendorarch" in
6658         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6659                 dflt="$dflt/$archname"
6660                 ;;
6661         *)      dflt="$vendorarch" ;;
6662         esac
6663         fn=d~+
6664         rp='Pathname for vendor-supplied architecture-dependent files?'
6665         . ./getfile
6666         vendorarch="$ans"
6667         vendorarchexp="$ansexp"
6668         ;;
6669 esac
6670 : Change installation prefix, if necessary.
6671 if $test X"$prefix" != X"$installprefix"; then
6672         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6673 else
6674         installvendorarch="$vendorarchexp"
6675 fi
6676
6677 : Final catch-all directories to search
6678 $cat <<EOM
6679
6680 Lastly, you can have perl look in other directories for extensions and
6681 modules in addition to those already specified.
6682 These directories will be searched after 
6683         $sitearch 
6684         $sitelib 
6685 EOM
6686 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6687 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6688 echo ' '
6689 case "$otherlibdirs" in
6690 ''|' ') dflt='none' ;;
6691 *)      dflt="$otherlibdirs" ;;
6692 esac
6693 $cat <<EOM
6694 Enter a colon-separated set of extra paths to include in perl's @INC
6695 search path, or enter 'none' for no extra paths.
6696
6697 EOM
6698
6699 rp='Colon-separated list of additional directories for perl to search?'
6700 . ./myread
6701 case "$ans" in
6702 ' '|''|none)    otherlibdirs=' ' ;;     
6703 *)      otherlibdirs="$ans" ;;
6704 esac
6705 case "$otherlibdirs" in
6706 ' ') val=$undef ;;
6707 *)      val=$define ;;
6708 esac
6709 set d_perl_otherlibdirs
6710 eval $setvar
6711
6712 : Cruising for prototypes
6713 echo " "
6714 echo "Checking out function prototypes..." >&4
6715 $cat >prototype.c <<'EOCP'
6716 int main(int argc, char *argv[]) {
6717         exit(0);}
6718 EOCP
6719 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6720         echo "Your C compiler appears to support function prototypes."
6721         val="$define"
6722 else
6723         echo "Your C compiler doesn't seem to understand function prototypes."
6724         val="$undef"
6725 fi
6726 set prototype
6727 eval $setvar
6728 $rm -f prototype*
6729
6730 case "$prototype" in
6731 "$define") ;;
6732 *)      ansi2knr='ansi2knr'
6733         echo " "
6734         cat <<EOM >&4
6735
6736 $me:  FATAL ERROR:
6737 This version of $package can only be compiled by a compiler that 
6738 understands function prototypes.  Unfortunately, your C compiler 
6739         $cc $ccflags
6740 doesn't seem to understand them.  Sorry about that.
6741
6742 If GNU cc is available for your system, perhaps you could try that instead.  
6743
6744 Eventually, we hope to support building Perl with pre-ANSI compilers.
6745 If you would like to help in that effort, please contact <perlbug@perl.org>.
6746
6747 Aborting Configure now.
6748 EOM
6749         exit 2
6750         ;;
6751 esac
6752
6753 : determine where public executables go
6754 echo " "
6755 set dflt bin bin
6756 eval $prefixit
6757 fn=d~
6758 rp='Pathname where the public executables will reside?'
6759 . ./getfile
6760 if $test "X$ansexp" != "X$binexp"; then
6761         installbin=''
6762 fi
6763 bin="$ans"
6764 binexp="$ansexp"
6765 : Change installation prefix, if necessary.
6766 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6767 if $test X"$prefix" != X"$installprefix"; then
6768         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6769 else
6770         installbin="$binexp"
6771 fi
6772
6773 echo " "
6774 case "$extras" in
6775 '') dflt='n';;
6776 *) dflt='y';;
6777 esac
6778 cat <<EOM
6779 Perl can be built with extra modules or bundles of modules which
6780 will be fetched from the CPAN and installed alongside Perl.
6781
6782 Notice that you will need access to the CPAN; either via the Internet,
6783 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6784 be asked later to configure the CPAN.pm module which will in turn do
6785 the installation of the rest of the extra modules or bundles.)
6786
6787 Notice also that if the modules require any external software such as
6788 libraries and headers (the libz library and the zlib.h header for the
6789 Compress::Zlib module, for example) you MUST have any such software
6790 already installed, this configuration process will NOT install such
6791 things for you.
6792
6793 If this doesn't make any sense to you, just accept the default '$dflt'.
6794 EOM
6795 rp='Install any extra modules (y or n)?'
6796 . ./myread
6797 case "$ans" in
6798 y|Y)
6799         cat <<EOM
6800
6801 Please list any extra modules or bundles to be installed from CPAN,
6802 with spaces between the names.  The names can be in any format the
6803 'install' command of CPAN.pm will understand.  (Answer 'none',
6804 without the quotes, to install no extra modules or bundles.)
6805 EOM
6806         rp='Extras?'
6807         dflt="$extras"
6808         . ./myread
6809         extras="$ans"
6810 esac
6811 case "$extras" in
6812 ''|'none')
6813         val=''
6814         $rm -f ../extras.lst
6815         ;;
6816 *)      echo "(Saving the list of extras for later...)"
6817         echo "$extras" > ../extras.lst
6818         val="'$extras'"
6819         ;;
6820 esac
6821 set extras
6822 eval $setvar
6823 echo " "
6824
6825 : Find perl5.005 or later.
6826 echo "Looking for a previously installed perl5.005 or later... "
6827 case "$perl5" in
6828 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6829                 : Check if this perl is recent and can load a simple module
6830                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6831                         perl5=$tdir/perl
6832                         break;
6833                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6834                         perl5=$tdir/perl5
6835                         break;
6836                 fi
6837         done
6838         ;;
6839 *)      perl5="$perl5"
6840         ;;
6841 esac
6842 case "$perl5" in
6843 '')     echo "None found.  That's ok.";;
6844 *)      echo "Using $perl5." ;;
6845 esac
6846
6847 : Determine list of previous versions to include in @INC
6848 $cat > getverlist <<EOPL
6849 #!$perl5 -w
6850 use File::Basename;
6851 \$api_versionstring = "$api_versionstring";
6852 \$version = "$version";
6853 \$stem = "$sitelib_stem";
6854 \$archname = "$archname";
6855 EOPL
6856         $cat >> getverlist <<'EOPL'
6857 # Can't have leading @ because metaconfig interprets it as a command!
6858 ;@inc_version_list=();
6859 # XXX Redo to do opendir/readdir? 
6860 if (-d $stem) {
6861     chdir($stem);
6862     ;@candidates = glob("5.*");
6863 }
6864 else {
6865     ;@candidates = ();
6866 }
6867
6868 # XXX ToDo:  These comparisons must be reworked when two-digit
6869 # subversions come along, so that 5.7.10 compares as greater than
6870 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6871 # widespread that we can use the built-in version vectors rather
6872 # than reinventing them here.  For 5.6.0, however, we must
6873 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6874 foreach $d (@candidates) {
6875     if ($d lt $version) {
6876         if ($d ge $api_versionstring) {
6877             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6878         }
6879         elsif ($d ge "5.005") {
6880             unshift(@inc_version_list, grep { -d } $d);
6881         }
6882     }
6883     else {
6884         # Skip newer version.  I.e. don't look in
6885         # 5.7.0 if we're installing 5.6.1.
6886     }
6887 }
6888
6889 if (@inc_version_list) {
6890     print join(' ', @inc_version_list);
6891 }
6892 else {
6893     # Blank space to preserve value for next Configure run.
6894     print " ";
6895 }
6896 EOPL
6897 chmod +x getverlist
6898 case "$inc_version_list" in
6899 '')     if test -x "$perl5$exe_ext"; then
6900                 dflt=`$perl5 getverlist`
6901         else
6902                 dflt='none'
6903         fi
6904         ;;
6905 $undef) dflt='none' ;;
6906 *)  eval dflt=\"$inc_version_list\" ;;
6907 esac
6908 case "$dflt" in
6909 ''|' ') dflt=none ;;
6910 esac
6911 case "$dflt" in
6912 5.005) case "$bincompat5005" in
6913        $define|true|[yY]*) ;;
6914        *) dflt=none ;;
6915        esac
6916        ;;
6917 esac
6918 $cat <<'EOM'
6919
6920 In order to ease the process of upgrading, this version of perl 
6921 can be configured to use modules built and installed with earlier 
6922 versions of perl that were installed under $prefix.  Specify here
6923 the list of earlier versions that this version of perl should check.
6924 If Configure detected no earlier versions of perl installed under
6925 $prefix, then the list will be empty.  Answer 'none' to tell perl
6926 to not search earlier versions.
6927
6928 The default should almost always be sensible, so if you're not sure,
6929 just accept the default.
6930 EOM
6931
6932 rp='List of earlier versions to include in @INC?'
6933 . ./myread
6934 case "$ans" in
6935 [Nn]one|''|' ') inc_version_list=' ' ;;
6936 *) inc_version_list="$ans" ;;
6937 esac
6938 case "$inc_version_list" in
6939 ''|' ') 
6940         inc_version_list_init='0';;
6941 *)      inc_version_list_init=`echo $inc_version_list |
6942                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6943         ;;
6944 esac
6945 $rm -f getverlist
6946
6947 : determine whether to install perl also as /usr/bin/perl
6948
6949 echo " "
6950 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6951         $cat <<EOM
6952 Many scripts expect perl to be installed as /usr/bin/perl.
6953 I can install the perl you are about to compile also as /usr/bin/perl
6954 (in addition to $installbin/perl).
6955 EOM
6956         case "$installusrbinperl" in
6957         "$undef"|[nN]*) dflt='n';;
6958         *)              dflt='y';;
6959         esac
6960         rp="Do you want to install perl as /usr/bin/perl?"
6961         . ./myread
6962         case "$ans" in
6963         [yY]*)  val="$define";;
6964         *)      val="$undef" ;;
6965         esac
6966 else
6967         val="$undef"
6968 fi
6969 set installusrbinperl
6970 eval $setvar
6971
6972 : see if dld is available
6973 set dld.h i_dld
6974 eval $inhdr
6975
6976 : see if dlopen exists
6977 xxx_runnm="$runnm"
6978 runnm=false
6979 set dlopen d_dlopen
6980 eval $inlibc
6981 runnm="$xxx_runnm"
6982
6983 : determine which dynamic loading, if any, to compile in
6984 echo " "
6985 dldir="ext/DynaLoader"
6986 case "$usedl" in
6987 $define|y|true)
6988         dflt='y'
6989         usedl="$define"
6990         ;;
6991 $undef|n|false)
6992         dflt='n'
6993         usedl="$undef"
6994         ;;
6995 *) 
6996         dflt='n'
6997         case "$d_dlopen" in
6998             $define) dflt='y' ;;
6999         esac
7000         case "$i_dld" in
7001             $define) dflt='y' ;;
7002         esac
7003         : Does a dl_xxx.xs file exist for this operating system
7004         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7005         ;;
7006 esac
7007 rp="Do you wish to use dynamic loading?"
7008 . ./myread
7009 usedl="$ans"
7010 case "$ans" in
7011 y*) usedl="$define"
7012         case "$dlsrc" in
7013         '')
7014                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7015                         dflt="$dldir/dl_${osname}.xs"
7016                 elif $test "$d_dlopen" = "$define" ; then
7017                         dflt="$dldir/dl_dlopen.xs"
7018                 elif $test "$i_dld" = "$define" ; then
7019                         dflt="$dldir/dl_dld.xs"
7020                 else
7021                         dflt=''
7022                 fi
7023                 ;;
7024         *)      dflt="$dldir/$dlsrc"
7025                 ;;
7026         esac
7027     echo "The following dynamic loading files are available:"
7028         : Can not go over to $dldir because getfile has path hard-coded in.
7029         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7030         rp="Source file to use for dynamic loading"
7031         fn="fne"
7032         gfpth="$src"
7033         . ./getfile
7034         usedl="$define"
7035         : emulate basename
7036         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7037
7038         $cat << EOM
7039
7040 Some systems may require passing special flags to $cc -c to
7041 compile modules that will be used to create a shared library.
7042 To use no flags, say "none".
7043
7044 EOM
7045     case "$cccdlflags" in
7046     '') case "$gccversion" in
7047                 '') case "$osname" in
7048                         hpux)   dflt='+z' ;;
7049                         next)   dflt='none' ;;
7050                         irix*)  dflt='-KPIC' ;;
7051                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7052                         sunos)  dflt='-pic' ;;
7053                         *)      dflt='none' ;;
7054                     esac
7055                         ;;
7056                 *)  case "$osname" in
7057                         darwin) dflt='none' ;;
7058                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7059                         *)      dflt='-fpic' ;;
7060                     esac ;;
7061             esac ;;
7062         ' ') dflt='none' ;;
7063     *)  dflt="$cccdlflags" ;;
7064     esac
7065     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7066     . ./myread
7067     case "$ans" in
7068     none) cccdlflags=' ' ;;
7069     *) cccdlflags="$ans" ;;
7070     esac
7071
7072     cat << EOM
7073
7074 Some systems use ld to create libraries that can be dynamically loaded,
7075 while other systems (such as those using ELF) use $cc.
7076
7077 EOM
7078         case "$ld" in
7079         '')     $cat >try.c <<'EOM'
7080 /* Test for whether ELF binaries are produced */
7081 #include <fcntl.h>
7082 #include <stdlib.h>
7083 int main() {
7084         char b[4];
7085         int i = open("a.out",O_RDONLY);
7086         if(i == -1) 
7087                 exit(1); /* fail */
7088         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7089                 exit(0); /* succeed (yes, it's ELF) */
7090         else
7091                 exit(1); /* fail */
7092 }
7093 EOM
7094                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7095                         cat <<EOM
7096 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7097 EOM
7098                         dflt="$cc"
7099                 else
7100                         echo "I'll use ld to build dynamic libraries."
7101                         dflt='ld'
7102                 fi
7103                 rm -f try.c a.out
7104                 ;;
7105         *)      dflt="$ld"
7106                 ;;
7107         esac
7108
7109     rp="What command should be used to create dynamic libraries?"
7110     . ./myread
7111         ld="$ans"
7112
7113     cat << EOM
7114
7115 Some systems may require passing special flags to $ld to create a
7116 library that can be dynamically loaded.  If your ld flags include
7117 -L/other/path options to locate libraries outside your loader's normal
7118 search path, you may need to specify those -L options here as well.  To
7119 use no flags, say "none".
7120
7121 EOM
7122     case "$lddlflags" in
7123     '') case "$osname" in
7124                         beos) dflt='-nostart' ;;
7125                         hpux) dflt='-b';
7126                               case "$gccversion" in
7127                               '') dflt="$dflt +vnocompatwarnings" ;;
7128                               esac
7129                               ;;        
7130                         linux|irix*)    dflt='-shared' ;;
7131                         next)  dflt='none' ;;
7132                         solaris) dflt='-G' ;;
7133                         sunos) dflt='-assert nodefinitions' ;;
7134                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7135                 *)     dflt='none' ;;
7136                         esac
7137                         ;;
7138     *) dflt="$lddlflags" ;;
7139     esac
7140
7141         : Try to guess additional flags to pick up local libraries.
7142         : Be careful not to append to a plain 'none'
7143         case "$dflt" in
7144         none) dflt='' ;;
7145         esac
7146         for thisflag in $ldflags; do
7147                 case "$thisflag" in
7148                 -L*|-R*)
7149                         case " $dflt " in
7150                         *" $thisflag "*) ;;
7151                         *) dflt="$dflt $thisflag" ;;
7152                         esac
7153                         ;;
7154                 esac
7155         done
7156
7157         case "$dflt" in
7158         ''|' ') dflt='none' ;;
7159         esac
7160
7161     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7162     . ./myread
7163     case "$ans" in
7164     none) lddlflags=' ' ;;
7165     *) lddlflags="$ans" ;;
7166     esac
7167
7168         cat <<EOM
7169
7170 Some systems may require passing special flags to $cc to indicate that
7171 the resulting executable will use dynamic linking.  To use no flags,
7172 say "none".
7173
7174 EOM
7175     case "$ccdlflags" in
7176     '') case "$osname" in
7177                 hpux)   dflt='-Wl,-E' ;;
7178                 linux)  dflt='-rdynamic' ;;
7179                 next)   dflt='none' ;;
7180                 sunos)  dflt='none' ;;
7181                 *)      dflt='none' ;;
7182             esac ;;
7183     ' ')  dflt='none' ;;
7184     *)  dflt="$ccdlflags" ;;
7185     esac
7186     rp="Any special flags to pass to $cc to use dynamic linking?"
7187     . ./myread
7188     case "$ans" in
7189     none) ccdlflags=' ' ;;
7190     *) ccdlflags="$ans" ;;
7191     esac
7192     ;;
7193 *)  usedl="$undef"
7194         ld='ld'
7195     dlsrc='dl_none.xs'
7196     lddlflags=''
7197     ccdlflags=''
7198     ;;
7199 esac
7200
7201 also=''
7202 case "$usedl" in
7203 $undef)
7204         # No dynamic loading being used, so don't bother even to prompt.
7205         useshrplib='false'
7206         ;;
7207 *)      case "$useshrplib" in
7208         '')     case "$osname" in
7209                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7210                         dflt=y
7211                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7212                         ;;
7213                 next*)
7214                         case "$osvers" in
7215                         4*)     dflt=y
7216                                 also='Building a shared libperl is needed for MAB support.'
7217                                 ;;
7218                         *)      dflt=n
7219                                 ;;
7220                         esac
7221                         ;;
7222                 *)      dflt=n
7223                         ;;
7224                 esac
7225                 ;;
7226         $define|true|[Yy]*)
7227                 dflt=y
7228                 ;;
7229         *)      dflt=n
7230                 ;;
7231         esac
7232         $cat << EOM
7233
7234 The perl executable is normally obtained by linking perlmain.c with
7235 libperl${_a}, any static extensions (usually just DynaLoader), and
7236 any other libraries needed on this system (such as -lm, etc.).  Since
7237 your system supports dynamic loading, it is probably possible to build
7238 a shared libperl.$so.  If you will have more than one executable linked
7239 to libperl.$so, this will significantly reduce the size of each
7240 executable, but it may have a noticeable affect on performance.  The
7241 default is probably sensible for your system.
7242 $also
7243
7244 EOM
7245         rp="Build a shared libperl.$so (y/n)"
7246         . ./myread
7247         case "$ans" in
7248         true|$define|[Yy]*)
7249                 useshrplib='true'  ;;
7250         *)      useshrplib='false' ;;
7251         esac
7252         ;;
7253 esac
7254
7255 case "$useshrplib" in
7256 true)
7257         case "$libperl" in
7258         '')
7259                 # Figure out a good name for libperl.so.  Since it gets stored in
7260                 # a version-specific architecture-dependent library, the version
7261                 # number isn't really that important, except for making cc/ld happy.
7262                 #
7263                 # A name such as libperl.so.3.1
7264                 majmin="libperl.$so.$patchlevel.$subversion"
7265                 # A name such as libperl.so.301
7266                 majonly=`echo $patchlevel $subversion |
7267                         $awk '{printf "%d%02d", $1, $2}'`
7268                 majonly=libperl.$so.$majonly
7269                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7270                 # rely on figuring it out from the naming of libc.
7271                 case "${osname}${osvers}" in
7272                 next4*)
7273                         dflt=libperl.5.$so
7274                         # XXX How handle the --version stuff for MAB?
7275                         ;;
7276                 linux*)  # ld won't link with a bare -lperl otherwise.
7277                         dflt=libperl.$so
7278                         ;;
7279                 cygwin*) # include version
7280                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7281                         ;;
7282                 *)      # Try to guess based on whether libc has major.minor.
7283                         case "$libc" in
7284                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7285                         *libc.$so.[0-9]*) dflt=$majonly ;;
7286                         *)      dflt=libperl.$so ;;
7287                         esac
7288                         ;;
7289                 esac
7290                 ;;
7291         *)      dflt=$libperl
7292                 ;;
7293         esac
7294         cat << EOM
7295
7296 I need to select a good name for the shared libperl.  If your system uses
7297 library names with major and minor numbers, then you might want something
7298 like $majmin.  Alternatively, if your system uses a single version
7299 number for shared libraries, then you might want to use $majonly.
7300 Or, your system might be quite happy with a simple libperl.$so.
7301
7302 Since the shared libperl will get installed into a version-specific
7303 architecture-dependent directory, the version number of the shared perl
7304 library probably isn't important, so the default should be o.k.
7305
7306 EOM
7307         rp='What name do you want to give to the shared libperl?'
7308         . ./myread
7309         libperl=$ans
7310         echo "Ok, I'll use $libperl"
7311         ;;
7312 *)
7313         libperl="libperl${_a}"
7314         ;;
7315 esac
7316
7317 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7318 case "$shrpdir" in
7319 '') ;;
7320 *)      $cat >&4 <<EOM
7321 WARNING:  Use of the shrpdir variable for the installation location of
7322 the shared $libperl is not supported.  It was never documented and
7323 will not work in this version.  Let me (perlbug@perl.org)
7324 know of any problems this may cause.
7325
7326 EOM
7327         case "$shrpdir" in
7328         "$archlibexp/CORE")
7329                 $cat >&4 <<EOM
7330 But your current setting of $shrpdir is
7331 the default anyway, so it's harmless.
7332 EOM
7333                 ;;
7334         *)
7335                 $cat >&4 <<EOM
7336 Further, your current attempted setting of $shrpdir
7337 conflicts with the value of $archlibexp/CORE
7338 that installperl will use.
7339 EOM
7340                 ;;
7341         esac
7342         ;;
7343 esac
7344
7345 # How will the perl executable find the installed shared $libperl?
7346 # Add $xxx to ccdlflags.
7347 # If we can't figure out a command-line option, use $shrpenv to
7348 # set env LD_RUN_PATH.  The main perl makefile uses this.
7349 shrpdir=$archlibexp/CORE
7350 xxx=''
7351 tmp_shrpenv=''
7352 if "$useshrplib"; then
7353     case "$osname" in 
7354         aix)
7355                 # We'll set it in Makefile.SH...
7356                 ;;
7357         solaris|netbsd)
7358                 xxx="-R $shrpdir"
7359                 ;;
7360         freebsd)
7361                 xxx="-Wl,-R$shrpdir"
7362                 ;;
7363         linux|irix*|dec_osf)
7364                 xxx="-Wl,-rpath,$shrpdir"
7365                 ;;
7366         next)
7367                 # next doesn't like the default...
7368                 ;;
7369         beos)
7370                 # beos doesn't like the default, either.
7371                 ;;
7372         hpux*)
7373                 # hpux doesn't like the default, either.
7374                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7375                 ;;
7376         *)
7377                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7378                 ;;
7379         esac
7380         case "$xxx" in
7381         '') ;;
7382         *)      
7383                 # Only add $xxx if it isn't already in ccdlflags.
7384                 case " $ccdlflags " in
7385                 *" $xxx "*)     ;;
7386                 *)      ccdlflags="$ccdlflags $xxx"
7387                         cat <<EOM >&4
7388
7389 Adding $xxx to the flags
7390 passed to $ld so that the perl executable will find the 
7391 installed shared $libperl.
7392
7393 EOM
7394                         ;;
7395                 esac
7396                 ;;
7397         esac
7398 fi
7399 # Fix ccdlflags in AIX for building external extensions.
7400 # (For building Perl itself bare -bE:perl.exp is needed,
7401 #  Makefile.SH takes care of this.)
7402 case "$osname" in
7403 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7404 esac
7405 # Respect a hint or command-line value.
7406 case "$shrpenv" in
7407 '') shrpenv="$tmp_shrpenv" ;;
7408 esac
7409 case "$ldlibpthname" in
7410 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7411 none)   ldlibpthname='' ;;
7412 esac
7413
7414 : determine where manual pages are on this system
7415 echo " "
7416 case "$sysman" in
7417 '') 
7418         syspath='/usr/share/man/man1 /usr/man/man1'
7419         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7420         syspath="$syspath /usr/man/u_man/man1"
7421         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7422         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7423         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7424         sysman=`./loc . /usr/man/man1 $syspath`
7425         ;;
7426 esac
7427 if $test -d "$sysman"; then
7428         echo "System manual is in $sysman." >&4
7429 else
7430         echo "Could not find manual pages in source form." >&4
7431 fi
7432
7433 : determine where manual pages go
7434 set man1dir man1dir none
7435 eval $prefixit
7436 $cat <<EOM
7437
7438 $spackage has manual pages available in source form.
7439 EOM
7440 case "$nroff" in
7441 nroff)
7442         echo "However, you don't have nroff, so they're probably useless to you."
7443         case "$man1dir" in
7444         '') man1dir="none";;
7445         esac;;
7446 esac
7447 echo "If you don't want the manual sources installed, answer 'none'."
7448 case "$man1dir" in
7449 ' ') dflt=none
7450         ;;
7451 '')
7452         lookpath="$prefixexp/share/man/man1"
7453         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7454         lookpath="$lookpath $prefixexp/man/p_man/man1"
7455         lookpath="$lookpath $prefixexp/man/u_man/man1"
7456         lookpath="$lookpath $prefixexp/man/man.1"
7457         case "$sysman" in
7458         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7459         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7460         esac
7461         set dflt
7462         eval $prefixup
7463         ;;
7464 *)  dflt="$man1dir"
7465         ;;
7466 esac
7467 echo " "
7468 fn=dn+~
7469 rp="Where do the main $spackage manual pages (source) go?"
7470 . ./getfile
7471 if $test "X$man1direxp" != "X$ansexp"; then
7472         installman1dir=''
7473 fi
7474 man1dir="$ans"
7475 man1direxp="$ansexp"
7476 case "$man1dir" in
7477 '')     man1dir=' '
7478         installman1dir='';;
7479 esac
7480
7481 : Change installation prefix, if necessary.
7482 if $test X"$prefix" != X"$installprefix"; then
7483         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7484 else
7485         installman1dir="$man1direxp"
7486 fi
7487
7488 : What suffix to use on installed man pages
7489
7490 case "$man1dir" in
7491 ' ')
7492         man1ext='0'
7493         ;;
7494 *)
7495         rp="What suffix should be used for the main $spackage man pages?"
7496         case "$man1ext" in
7497         '')     case "$man1dir" in
7498                 *1)  dflt=1 ;;
7499                 *1p) dflt=1p ;;
7500                 *1pm) dflt=1pm ;;
7501                 *l) dflt=l;;
7502                 *n) dflt=n;;
7503                 *o) dflt=o;;
7504                 *p) dflt=p;;
7505                 *C) dflt=C;;
7506                 *L) dflt=L;;
7507                 *L1) dflt=L1;;
7508                 *) dflt=1;;
7509                 esac
7510                 ;;
7511         *)      dflt="$man1ext";;
7512         esac
7513         . ./myread
7514         man1ext="$ans"
7515         ;;
7516 esac
7517
7518 : see if we can have long filenames
7519 echo " "
7520 first=123456789abcdef
7521 $rm -f $first
7522 if (echo hi >$first) 2>/dev/null; then
7523         if $test -f 123456789abcde; then
7524                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7525                 val="$undef"
7526         else
7527                 echo 'You can have filenames longer than 14 characters.'>&4
7528                 val="$define"
7529         fi
7530 else
7531         $cat <<'EOM'
7532 You can't have filenames longer than 14 chars.
7533 You can't even think about them!
7534 EOM
7535         val="$undef"
7536 fi 
7537 set d_flexfnam
7538 eval $setvar
7539 $rm -rf 123456789abcde*
7540
7541 : determine where library module manual pages go
7542 set man3dir man3dir none
7543 eval $prefixit
7544 $cat <<EOM
7545
7546 $spackage has manual pages for many of the library modules.
7547 EOM
7548
7549 case "$nroff" in
7550 nroff)
7551         $cat <<'EOM'
7552 However, you don't have nroff, so they're probably useless to you.
7553 EOM
7554         case "$man3dir" in
7555         '') man3dir="none";;
7556         esac;;
7557 esac
7558
7559 case "$d_flexfnam" in
7560 undef)
7561         $cat <<'EOM'
7562 However, your system can't handle the long file names like File::Basename.3. 
7563 EOM
7564         case "$man3dir" in
7565         '') man3dir="none";;
7566         esac;;
7567 esac
7568
7569 echo "If you don't want the manual sources installed, answer 'none'."
7570 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7571 case "$man3dir" in
7572 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7573         if $test -d "$privlib/man/man3"; then
7574                 cat <<EOM >&4
7575
7576 WARNING:  Previous versions of perl installed man3 pages into
7577 $privlib/man/man3.  This version will suggest a 
7578 new default of $dflt.  
7579 EOM
7580                 tdflt=$dflt
7581                 dflt='n'
7582                 rp='Do you wish to preserve the old behavior?(y/n)'
7583                 . ./myread
7584                 case "$ans" in
7585                 y*) dflt="$privlib/man/man3" ;;
7586                 *)  dflt=$tdflt ;;
7587                 esac
7588     fi
7589         ;;
7590 *)      dflt="$man3dir" ;;
7591 esac
7592 case "$dflt" in
7593 ' ') dflt=none ;;
7594 esac
7595 echo " "
7596 fn=dn+~
7597 rp="Where do the $package library man pages (source) go?"
7598 . ./getfile
7599 man3dir="$ans"
7600 man3direxp="$ansexp"
7601 case "$man3dir" in
7602 '')     man3dir=' '
7603         installman3dir='';;
7604 esac
7605
7606 : Change installation prefix, if necessary.
7607 if $test X"$prefix" != X"$installprefix"; then
7608         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7609 else
7610         installman3dir="$man3direxp"
7611 fi
7612
7613 : What suffix to use on installed man pages
7614 case "$man3dir" in
7615 ' ')
7616         man3ext='0'
7617         ;;
7618 *)
7619         rp="What suffix should be used for the $package library man pages?"
7620         case "$man3ext" in
7621         '')     case "$man3dir" in
7622                 *3)  dflt=3 ;;
7623                 *3p) dflt=3p ;;
7624                 *3pm) dflt=3pm ;;
7625                 *l) dflt=l;;
7626                 *n) dflt=n;;
7627                 *o) dflt=o;;
7628                 *p) dflt=p;;
7629                 *C) dflt=C;;
7630                 *L) dflt=L;;
7631                 *L3) dflt=L3;;
7632                 *) dflt=3;;
7633                 esac
7634                 ;;
7635         *)      dflt="$man3ext";;
7636         esac
7637         . ./myread
7638         man3ext="$ans"
7639         ;;
7640 esac
7641
7642 : see if we have to deal with yellow pages, now NIS.
7643 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7644         if $test -f /usr/etc/nibindd; then
7645                 echo " "
7646                 echo "I'm fairly confident you're on a NeXT."
7647                 echo " "
7648                 rp='Do you get the hosts file via NetInfo?'
7649                 dflt=y
7650                 case "$hostcat" in
7651                 nidump*) ;;
7652                 '') ;;
7653                 *) dflt=n;;
7654                 esac
7655                 . ./myread
7656                 case "$ans" in
7657                 y*) hostcat='nidump hosts .';;
7658                 *)      case "$hostcat" in
7659                         nidump*) hostcat='';;
7660                         esac
7661                         ;;
7662                 esac
7663         fi
7664         case "$hostcat" in
7665         nidump*) ;;
7666         *)
7667                 case "$hostcat" in
7668                 *ypcat*) dflt=y;;
7669                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7670                                 dflt=y
7671                         else
7672                                 dflt=n
7673                         fi;;
7674                 *) dflt=n;;
7675                 esac
7676                 echo " "
7677                 rp='Are you getting the hosts file via yellow pages?'
7678                 . ./myread
7679                 case "$ans" in
7680                 y*) hostcat='ypcat hosts';;
7681                 *) hostcat='cat /etc/hosts';;
7682                 esac
7683                 ;;
7684         esac
7685 fi
7686 case "$hostcat" in
7687 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7688 esac
7689 case "$groupcat" in
7690 '') test -f /etc/group && groupcat='cat /etc/group';;
7691 esac
7692 case "$passcat" in
7693 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7694 esac
7695
7696 : now get the host name
7697 echo " "
7698 echo "Figuring out host name..." >&4
7699 case "$myhostname" in
7700 '') cont=true
7701         echo 'Maybe "hostname" will work...'
7702         if tans=`sh -c hostname 2>&1` ; then
7703                 myhostname=$tans
7704                 phostname=hostname
7705                 cont=''
7706         fi
7707         ;;
7708 *) cont='';;
7709 esac
7710 if $test "$cont"; then
7711         if ./xenix; then
7712                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7713                 if tans=`cat /etc/systemid 2>&1` ; then
7714                         myhostname=$tans
7715                         phostname='cat /etc/systemid'
7716                         echo "Whadyaknow.  Xenix always was a bit strange..."
7717                         cont=''
7718                 fi
7719         elif $test -r /etc/systemid; then
7720                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7721         fi
7722 fi
7723 if $test "$cont"; then
7724         echo 'No, maybe "uuname -l" will work...'
7725         if tans=`sh -c 'uuname -l' 2>&1` ; then
7726                 myhostname=$tans
7727                 phostname='uuname -l'
7728         else
7729                 echo 'Strange.  Maybe "uname -n" will work...'
7730                 if tans=`sh -c 'uname -n' 2>&1` ; then
7731                         myhostname=$tans
7732                         phostname='uname -n'
7733                 else
7734                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7735                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7736                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7737                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7738                         else
7739                                 case "$myhostname" in
7740                                 '') echo "Does this machine have an identity crisis or something?"
7741                                         phostname='';;
7742                                 *)
7743                                         echo "Well, you said $myhostname before..."
7744                                         phostname='echo $myhostname';;
7745                                 esac
7746                         fi
7747                 fi
7748         fi
7749 fi
7750 : you do not want to know about this
7751 set $myhostname
7752 myhostname=$1
7753
7754 : verify guess
7755 if $test "$myhostname" ; then
7756         dflt=y
7757         rp='Your host name appears to be "'$myhostname'".'" Right?"
7758         . ./myread
7759         case "$ans" in
7760         y*) ;;
7761         *) myhostname='';;
7762         esac
7763 fi
7764
7765 : bad guess or no guess
7766 while $test "X$myhostname" = X ; do
7767         dflt=''
7768         rp="Please type the (one word) name of your host:"
7769         . ./myread
7770         myhostname="$ans"
7771 done
7772
7773 : translate upper to lower if necessary
7774 case "$myhostname" in
7775 *[A-Z]*)
7776         echo "(Normalizing case in your host name)"
7777         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7778         ;;
7779 esac
7780
7781 case "$myhostname" in
7782 *.*)
7783         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7784         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7785         echo "(Trimming domain name from host name--host name is now $myhostname)"
7786         ;;
7787 *) case "$mydomain" in
7788         '')
7789                 {
7790                         test "X$hostcat" = "Xypcat hosts" &&
7791                         ypmatch "$myhostname" hosts 2>/dev/null |\
7792                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7793                         $test -s hosts
7794                 } || {
7795                         test "X$hostcat" != "X" &&
7796                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7797                                         /[       ]$myhostname[  . ]/p" > hosts
7798                 }
7799                 tmp_re="[       . ]"
7800                 if $test -f hosts; then
7801                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7802                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7803                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7804                                 hosts | $sort | $uniq | \
7805                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7806                         case `$echo X$dflt` in
7807                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7808                                 dflt=.
7809                                 ;;
7810                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7811                                 ;;
7812                         esac
7813                 else
7814                         echo "(I cannot locate a hosts database anywhere)"
7815                         dflt=.
7816                 fi
7817                 case "$dflt" in
7818                 .)
7819                         tans=`./loc resolv.conf X /etc /usr/etc`
7820                         if $test -f "$tans"; then
7821                                 echo "(Attempting domain name extraction from $tans)"
7822                                 dflt=.`$sed -n -e 's/   / /g' \
7823                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7824                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7825                                 case "$dflt" in
7826                                 .) dflt=.`$sed -n -e 's/        / /g' \
7827                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7828                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7829                                         ;;
7830                                 esac
7831                         fi
7832                         ;;
7833                 esac
7834                 case "$dflt" in
7835                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7836                         dflt=.`sh -c domainname 2>/dev/null`
7837                         case "$dflt" in
7838                         '') dflt='.';;
7839                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7840                         esac
7841                         ;;
7842                 esac
7843                 case "$dflt$osname" in
7844                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7845                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7846                         ;;
7847                 esac
7848                 case "$dflt" in
7849                 .) echo "(Lost all hope -- silly guess then)"
7850                         dflt='.uucp'
7851                         ;;
7852                 esac
7853                 $rm -f hosts
7854                 ;;
7855         *) dflt="$mydomain";;
7856         esac;;
7857 esac
7858 echo " "
7859 rp="What is your domain name?"
7860 . ./myread
7861 tans="$ans"
7862 case "$ans" in
7863 '') ;;
7864 .*) ;;
7865 *) tans=".$tans";;
7866 esac
7867 mydomain="$tans"
7868
7869 : translate upper to lower if necessary
7870 case "$mydomain" in
7871 *[A-Z]*)
7872         echo "(Normalizing case in your domain name)"
7873         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7874         ;;
7875 esac
7876
7877 : a little sanity check here
7878 case "$phostname" in
7879 '') ;;
7880 *)
7881         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7882         $myhostname$mydomain|$myhostname) ;;
7883         *)
7884                 case "$phostname" in
7885                 sed*)
7886                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7887                         ;;
7888                 *)
7889                         echo "(That doesn't agree with your $phostname command, by the way.)"
7890                         ;;
7891                 esac
7892         ;;
7893         esac
7894         ;;
7895 esac
7896
7897 $cat <<EOM
7898
7899 I need to get your e-mail address in Internet format if possible, i.e.
7900 something like user@host.domain. Please answer accurately since I have
7901 no easy means to double check it. The default value provided below
7902 is most probably close to reality but may not be valid from outside
7903 your organization...
7904
7905 EOM
7906 cont=x
7907 while test "$cont"; do
7908         case "$cf_email" in
7909         '') dflt="$cf_by@$myhostname$mydomain";;
7910         *) dflt="$cf_email";;
7911         esac
7912         rp='What is your e-mail address?'
7913         . ./myread
7914         cf_email="$ans"
7915         case "$cf_email" in
7916         *@*.*) cont='' ;;
7917         *)
7918                 rp='Address does not look like an Internet one.  Use it anyway?'
7919                 case "$fastread" in
7920                 yes) dflt=y ;;
7921                 *) dflt=n ;;
7922                 esac
7923                 . ./myread
7924                 case "$ans" in
7925                 y*) cont='' ;;
7926                 *) echo " " ;;
7927                 esac
7928                 ;;
7929         esac
7930 done
7931
7932 $cat <<EOM
7933
7934 If you or somebody else will be maintaining perl at your site, please
7935 fill in the correct e-mail address here so that they may be contacted
7936 if necessary. Currently, the "perlbug" program included with perl
7937 will send mail to this address in addition to perlbug@perl.org. You may
7938 enter "none" for no administrator.
7939
7940 EOM
7941 case "$perladmin" in
7942 '') dflt="$cf_email";;
7943 *) dflt="$perladmin";;
7944 esac
7945 rp='Perl administrator e-mail address'
7946 . ./myread
7947 perladmin="$ans"
7948
7949 : determine whether to only install version-specific parts.
7950 echo " "
7951 $cat <<EOM
7952 Do you want to install only the version-specific parts of the perl
7953 distribution?  Usually you do *not* want to do this.
7954 EOM
7955 case "$versiononly" in
7956 "$define"|[Yy]*|true) dflt='y' ;;
7957 *) dflt='n';
7958 esac
7959 rp="Do you want to install only the version-specific parts of perl?"
7960 . ./myread
7961 case "$ans" in
7962 [yY]*)  val="$define";;
7963 *)      val="$undef" ;;
7964 esac
7965 set versiononly
7966 eval $setvar
7967
7968 : figure out how to guarantee perl startup
7969 case "$startperl" in
7970 '')
7971         case "$sharpbang" in
7972         *!)
7973                 $cat <<EOH
7974
7975 I can use the #! construct to start perl on your system. This will
7976 make startup of perl scripts faster, but may cause problems if you
7977 want to share those scripts and perl is not in a standard place
7978 ($binexp/perl) on all your platforms. The alternative is to force
7979 a shell by starting the script with a single ':' character.
7980
7981 EOH
7982                 case "$versiononly" in
7983                 "$define")      dflt="$binexp/perl$version";;  
7984                 *)              dflt="$binexp/perl";;
7985                 esac
7986                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7987                 . ./myread
7988                 case "$ans" in
7989                 none)   startperl=": # use perl";;
7990                 *)      startperl="#!$ans"
7991                         if $test 30 -lt `echo "$ans" | wc -c`; then
7992                                 $cat >&4 <<EOM
7993
7994 WARNING:  Some systems limit the #! command to 32 characters.
7995 If you experience difficulty running Perl scripts with #!, try
7996 installing Perl in a directory with a shorter pathname.
7997
7998 EOM
7999                         fi ;;
8000                 esac
8001                 ;;
8002         *) startperl=": # use perl"
8003                 ;;
8004         esac
8005         ;;
8006 esac
8007 echo "I'll use $startperl to start perl scripts."
8008
8009 : figure best path for perl in scripts
8010 case "$perlpath" in
8011 '')
8012         perlpath="$binexp/perl"
8013         case "$startperl" in
8014         *!*) ;;
8015         *)
8016                 $cat <<EOH
8017
8018 I will use the "eval 'exec'" idiom to start Perl on your system.
8019 I can use the full path of your Perl binary for this purpose, but
8020 doing so may cause problems if you want to share those scripts and
8021 Perl is not always in a standard place ($binexp/perl).
8022
8023 EOH
8024                 dflt="$binexp/perl"
8025                 rp="What path shall I use in \"eval 'exec'\"?"
8026                 . ./myread
8027                 perlpath="$ans"
8028                 ;;
8029         esac
8030         ;;
8031 esac
8032 case "$startperl" in
8033 *!*)    ;;
8034 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8035 esac
8036
8037 : determine where public executable scripts go
8038 set scriptdir scriptdir
8039 eval $prefixit
8040 case "$scriptdir" in
8041 '')
8042         dflt="$bin"
8043         : guess some guesses
8044         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8045         $test -d /usr/share/bin     && dflt=/usr/share/bin
8046         $test -d /usr/local/script  && dflt=/usr/local/script
8047         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8048         $test -d $prefixexp/script  && dflt=$prefixexp/script
8049         set dflt
8050         eval $prefixup
8051         ;;
8052 *)  dflt="$scriptdir"
8053         ;;
8054 esac
8055 $cat <<EOM
8056  
8057 Some installations have a separate directory just for executable scripts so
8058 that they can mount it across multiple architectures but keep the scripts in
8059 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8060 Or you might just lump your scripts in with all your other executables.
8061  
8062 EOM
8063 fn=d~
8064 rp='Where do you keep publicly executable scripts?'
8065 . ./getfile
8066 if $test "X$ansexp" != "X$scriptdirexp"; then
8067         installscript=''
8068 fi
8069 scriptdir="$ans"
8070 scriptdirexp="$ansexp"
8071 : Change installation prefix, if necessary.
8072 if $test X"$prefix" != X"$installprefix"; then
8073         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8074 else
8075         installscript="$scriptdirexp"
8076 fi
8077
8078 : determine where add-on public executables go
8079 case "$sitebin" in
8080 '')     dflt=$siteprefix/bin ;;
8081 *)      dflt=$sitebin ;;
8082 esac
8083 fn=d~
8084 rp='Pathname where the add-on public executables should be installed?'
8085 . ./getfile
8086 sitebin="$ans"
8087 sitebinexp="$ansexp"
8088 : Change installation prefix, if necessary.
8089 if $test X"$prefix" != X"$installprefix"; then
8090         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8091 else
8092         installsitebin="$sitebinexp"
8093 fi
8094
8095 : define an is-a-typedef? function
8096 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8097 case "$inclist" in
8098 "") inclist="sys/types.h";;
8099 esac;
8100 eval "varval=\$$var";
8101 case "$varval" in
8102 "")
8103         $rm -f temp.c;
8104         for inc in $inclist; do
8105                 echo "#include <$inc>" >>temp.c;
8106         done;
8107         echo "#ifdef $type" >> temp.c;
8108         echo "printf(\"We have $type\");" >> temp.c;
8109         echo "#endif" >> temp.c;
8110         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8111         if $contains $type temp.E >/dev/null 2>&1; then
8112                 eval "$var=\$type";
8113         else
8114                 eval "$var=\$def";
8115         fi;
8116         $rm -f temp.?;;
8117 *) eval "$var=\$varval";;
8118 esac'
8119
8120 : define an is-a-typedef? function that prompts if the type is not available.
8121 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8122 case "$inclist" in
8123 "") inclist="sys/types.h";;
8124 esac;
8125 eval "varval=\$$var";
8126 case "$varval" in
8127 "")
8128         $rm -f temp.c;
8129         for inc in $inclist; do
8130                 echo "#include <$inc>" >>temp.c;
8131         done;
8132         echo "#ifdef $type" >> temp.c;
8133         echo "printf(\"We have $type\");" >> temp.c;
8134         echo "#endif" >> temp.c;
8135         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8136         echo " " ;
8137         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8138         if $contains $type temp.E >/dev/null 2>&1; then
8139                 echo "$type found." >&4;
8140                 eval "$var=\$type";
8141         else
8142                 echo "$type NOT found." >&4;
8143                 dflt="$def";
8144                 . ./myread ;
8145                 eval "$var=\$ans";
8146         fi;
8147         $rm -f temp.?;;
8148 *) eval "$var=\$varval";;
8149 esac'
8150
8151 : see what type lseek is declared as in the kernel
8152 rp="What is the type used for lseek's offset on this system?"
8153 set off_t lseektype long stdio.h sys/types.h
8154 eval $typedef_ask
8155
8156 echo " "
8157 echo "Checking to see how big your file offsets are..." >&4
8158 $cat >try.c <<EOCP
8159 #include <sys/types.h>
8160 #include <stdio.h>
8161 int main()
8162 {
8163     printf("%d\n", (int)sizeof($lseektype));
8164     return(0); 
8165 }
8166 EOCP
8167 set try
8168 if eval $compile_ok; then
8169         lseeksize=`$run ./try`
8170         echo "Your file offsets are $lseeksize bytes long."
8171 else
8172         dflt=$longsize
8173         echo " "
8174         echo "(I can't seem to compile the test program.  Guessing...)"
8175         rp="What is the size of your file offsets (in bytes)?"
8176         . ./myread
8177         lseeksize="$ans"
8178 fi
8179 $rm -f try.c try
8180
8181 : see what type file positions are declared as in the library
8182 rp="What is the type for file position used by fsetpos()?"
8183 set fpos_t fpostype long stdio.h sys/types.h
8184 eval $typedef_ask
8185
8186 echo " "
8187 case "$fpostype" in
8188 *_t) zzz="$fpostype"    ;;
8189 *)   zzz="fpos_t"       ;;
8190 esac
8191 echo "Checking the size of $zzz..." >&4 
8192 cat > try.c <<EOCP
8193 #include <sys/types.h>
8194 #include <stdio.h>
8195 int main() {
8196     printf("%d\n", (int)sizeof($fpostype));
8197     exit(0);
8198 }
8199 EOCP
8200 set try
8201 if eval $compile_ok; then
8202         yyy=`$run ./try`
8203         case "$yyy" in
8204         '')     fpossize=4
8205                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8206                 ;;
8207         *)      fpossize=$yyy
8208                 echo "Your $zzz is $fpossize bytes long."
8209                 ;;
8210         esac
8211 else
8212         dflt="$longsize"
8213         echo " " >&4
8214         echo "(I can't compile the test program.  Guessing...)" >&4
8215         rp="What is the size of your file positions (in bytes)?"
8216         . ./myread
8217         fpossize="$ans"
8218 fi
8219
8220
8221
8222 # Backward compatibility (uselfs is deprecated).
8223 case "$uselfs" in
8224 "$define"|true|[yY]*)
8225         cat <<EOM >&4
8226
8227 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8228 EOM
8229         uselargefiles="$define"
8230         ;;
8231 esac                          
8232
8233 case "$lseeksize:$fpossize" in
8234 8:8) cat <<EOM
8235
8236 You can have files larger than 2 gigabytes.
8237 EOM
8238    val="$define" ;;
8239 *)    case "$uselargefiles" in
8240    "$undef"|false|[nN]*) dflt='n' ;;
8241    *)   dflt='y' ;;
8242    esac
8243    cat <<EOM
8244
8245 Perl can be built to understand large files (files larger than 2 gigabytes)
8246 on some systems.  To do so, Configure can be run with -Duselargefiles.
8247
8248 If this doesn't make any sense to you, just accept the default '$dflt'.
8249 EOM
8250    rp='Try to understand large files, if available?'
8251    . ./myread
8252    case "$ans" in
8253    y|Y)         val="$define" ;;
8254    *)           val="$undef"  ;;
8255    esac
8256    ;;
8257 esac
8258 set uselargefiles
8259 eval $setvar
8260 case "$uselargefiles" in
8261 "$define")
8262 : Look for a hint-file generated 'call-back-unit'.  If the
8263 : user has specified that a large files perl is to be built,
8264 : we may need to set or change some other defaults.
8265         if $test -f uselargefiles.cbu; then
8266                 echo "Your platform has some specific hints for large file builds, using them..."
8267                 . ./uselargefiles.cbu
8268                 echo " "
8269                 echo "Rechecking to see how big your file offsets are..." >&4
8270                 $cat >try.c <<EOCP
8271 #include <sys/types.h>
8272 #include <stdio.h>
8273 int main()
8274 {
8275     printf("%d\n", (int)sizeof($lseektype));
8276     return(0); 
8277 }
8278 EOCP
8279                 set try
8280                 if eval $compile_ok; then
8281                         lseeksize=`$run ./try`
8282                         $echo "Your file offsets are now $lseeksize bytes long."
8283                 else
8284                         dflt="$lseeksize"
8285                         echo " "
8286                         echo "(I can't seem to compile the test program.  Guessing...)"
8287                         rp="What is the size of your file offsets (in bytes)?"
8288                         . ./myread
8289                         lseeksize="$ans"
8290                 fi
8291                 case "$fpostype" in
8292                 *_t) zzz="$fpostype"    ;;
8293                 *)   zzz="fpos_t"       ;;
8294                 esac
8295                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8296                 $cat > try.c <<EOCP
8297 #include <sys/types.h>
8298 #include <stdio.h>
8299 int main() {
8300     printf("%d\n", (int)sizeof($fpostype));
8301     exit(0);
8302 }
8303 EOCP
8304                 set try
8305                 if eval $compile_ok; then
8306                         yyy=`$run ./try`
8307                         dflt="$lseeksize"
8308                         case "$yyy" in
8309                         '')     echo " "
8310                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8311                                 ;;
8312                         *)      fpossize=$yyy
8313                                 echo " $fpossize bytes." >&4
8314                                 ;;
8315                         esac
8316                 else
8317                         dflt="$fpossize"
8318                         echo " "
8319                         echo "(I can't compile the test program.  Guessing...)" >&4
8320                         rp="What is the size of your file positions (in bytes)?"
8321                         . ./myread
8322                         fpossize="$ans"
8323                 fi
8324                 $rm -f try.c try
8325         fi
8326         ;;
8327 esac
8328
8329 case "$vendorprefix" in
8330 '')     d_vendorbin="$undef"
8331         vendorbin=''
8332         vendorbinexp=''
8333         ;;
8334 *)      d_vendorbin="$define"
8335         : determine where vendor-supplied executables go.
8336         case "$vendorbin" in
8337         '') dflt=$vendorprefix/bin ;;
8338         *)      dflt="$vendorbin" ;;
8339         esac
8340         fn=d~+
8341         rp='Pathname for the vendor-supplied executables directory?'
8342         . ./getfile
8343         vendorbin="$ans"
8344         vendorbinexp="$ansexp"
8345         ;;
8346 esac
8347 : Change installation prefix, if necessary.
8348 if $test X"$prefix" != X"$installprefix"; then
8349         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8350 else
8351         installvendorbin="$vendorbinexp"
8352 fi
8353
8354 : see if qgcvt exists
8355 set qgcvt d_qgcvt
8356 eval $inlibc
8357
8358 echo " "
8359
8360 if $test X"$d_longdbl" = X"$define"; then
8361
8362 echo "Checking how to print long doubles..." >&4
8363
8364 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8365         $cat >try.c <<'EOCP'
8366 #include <sys/types.h>
8367 #include <stdio.h>
8368 int main() {
8369   double d = 123.456;
8370   printf("%.3f\n", d);
8371 }
8372 EOCP
8373         set try
8374         if eval $compile; then
8375                 yyy=`$run ./try`
8376                 case "$yyy" in
8377                 123.456)
8378                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8379                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8380                         echo "We will use %f."
8381                         ;;
8382                 esac
8383         fi
8384 fi
8385
8386 if $test X"$sPRIfldbl" = X; then
8387         $cat >try.c <<'EOCP'
8388 #include <sys/types.h>
8389 #include <stdio.h>
8390 int main() {
8391   long double d = 123.456;
8392   printf("%.3Lf\n", d);
8393 }
8394 EOCP
8395         set try
8396         if eval $compile; then
8397                 yyy=`$run ./try`
8398                 case "$yyy" in
8399                 123.456)
8400                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8401                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8402                         echo "We will use %Lf."
8403                         ;;
8404                 esac
8405         fi
8406 fi
8407
8408 if $test X"$sPRIfldbl" = X; then
8409         $cat >try.c <<'EOCP'
8410 #include <sys/types.h>
8411 #include <stdio.h>
8412 int main() {
8413   long double d = 123.456;
8414   printf("%.3llf\n", d);
8415 }
8416 EOCP
8417         set try
8418         if eval $compile; then
8419                 yyy=`$run ./try`
8420                 case "$yyy" in
8421                 123.456)
8422                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8423                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8424                         echo "We will use %llf."
8425                         ;;
8426                 esac
8427         fi
8428 fi
8429
8430 if $test X"$sPRIfldbl" = X; then
8431         $cat >try.c <<'EOCP'
8432 #include <sys/types.h>
8433 #include <stdio.h>
8434 int main() {
8435   long double d = 123.456;
8436   printf("%.3lf\n", d);
8437 }
8438 EOCP
8439         set try
8440         if eval $compile; then
8441                 yyy=`$run ./try`
8442                 case "$yyy" in
8443                 123.456)
8444                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8445                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8446                         echo "We will use %lf."
8447                         ;;
8448                 esac
8449         fi
8450 fi
8451
8452 if $test X"$sPRIfldbl" = X; then
8453         echo "Cannot figure out how to print long doubles." >&4
8454 else
8455         sSCNfldbl=$sPRIfldbl    # expect consistency
8456 fi
8457
8458 $rm -f try try.*
8459
8460 fi # d_longdbl
8461
8462 case "$sPRIfldbl" in
8463 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8464         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8465         d_SCNfldbl="$undef";
8466         ;;
8467 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8468         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8469         d_SCNfldbl="$define";
8470         ;;
8471 esac
8472
8473 : Check how to convert floats to strings.
8474 echo " "
8475 echo "Checking for an efficient way to convert floats to strings."
8476 echo " " > try.c
8477 case "$uselongdouble" in
8478 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8479 esac
8480 case "$d_longdbl" in
8481 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8482 esac
8483 case "$d_PRIgldbl" in
8484 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8485 esac
8486 $cat >>try.c <<EOP
8487 #ifdef TRY_gconvert
8488 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8489 char *myname = "gconvert";
8490 #endif
8491 #ifdef TRY_gcvt
8492 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8493 char *myname = "gcvt";
8494 #endif
8495 #ifdef TRY_qgcvt
8496 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8497 char *myname = "qgcvt";
8498 #define DOUBLETYPE long double
8499 #endif
8500 #ifdef TRY_sprintf
8501 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8502 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8503 #else
8504 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8505 #endif
8506 char *myname = "sprintf";
8507 #endif
8508
8509 #ifndef DOUBLETYPE
8510 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8511 #define DOUBLETYPE long double
8512 #else
8513 #define DOUBLETYPE double
8514 #endif
8515 #endif
8516
8517 #include <stdio.h>
8518
8519 #define I_STDLIB $i_stdlib
8520 #ifdef I_STDLIB
8521 #include <stdlib.h>
8522 #endif
8523
8524 int
8525 checkit(expect, got)
8526 char *expect;
8527 char *got;
8528 {
8529     if (strcmp(expect, got)) {
8530                 printf("%s oddity:  Expected %s, got %s\n",
8531                         myname, expect, got);
8532                 exit(1);
8533         }
8534 }
8535
8536 int main()
8537
8538         char buf[64]; 
8539         buf[63] = '\0';
8540
8541         /* This must be 1st test on (which?) platform */
8542         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8543         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8544         checkit("0.1", buf);
8545
8546         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8547         checkit("1", buf);
8548
8549         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8550         checkit("1.1", buf);
8551
8552         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8553         checkit("1.01", buf);
8554
8555         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8556         checkit("1.001", buf);
8557
8558         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8559         checkit("1.0001", buf);
8560
8561         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8562         checkit("1.00001", buf);
8563
8564         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8565         checkit("1.000001", buf);
8566
8567         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8568         checkit("0", buf);
8569
8570         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8571         checkit("-1", buf);
8572
8573         /* Some Linux gcvt's give 1.e+5 here. */
8574         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8575         checkit("100000", buf);
8576         
8577         /* Some Linux gcvt's give -1.e+5 here. */
8578         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8579         checkit("-100000", buf);
8580
8581         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8582         checkit("123.456", buf);
8583
8584         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8585         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8586         if (strlen(buf) > 5)
8587             checkit("1e+030", buf); /* for Microsoft */
8588         else
8589             checkit("1e+30", buf);
8590
8591         exit(0);
8592 }
8593 EOP
8594 case "$d_Gconvert" in
8595 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8596 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8597 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8598 *) xxx_list='gconvert gcvt sprintf' ;;
8599 esac
8600
8601 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8602 "$define$define$define")
8603     # for long doubles prefer first qgcvt, then sprintf
8604     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8605     xxx_list="sprintf $xxx_list"
8606     case "$d_qgcvt" in
8607     "$define") xxx_list="qgcvt $xxx_list" ;;
8608     esac
8609     ;;
8610 esac
8611
8612 for xxx_convert in $xxx_list; do
8613         echo "Trying $xxx_convert..."
8614         $rm -f try try$_o
8615         set try -DTRY_$xxx_convert
8616         if eval $compile; then
8617                 echo "$xxx_convert() found." >&4
8618                 if $run ./try; then
8619                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8620                         break;
8621                 else
8622                         echo "...But $xxx_convert didn't work as I expected."
8623                 fi
8624         else
8625                 echo "$xxx_convert NOT found." >&4
8626         fi
8627 done
8628         
8629 case "$xxx_convert" in
8630 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8631 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8632 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8633 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8634    "$define$define$define")
8635       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8636    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8637    esac
8638    ;;  
8639 esac
8640
8641 : see if _fwalk exists
8642 set fwalk d__fwalk
8643 eval $inlibc
8644
8645 : Initialize h_fcntl
8646 h_fcntl=false
8647
8648 : Initialize h_sysfile
8649 h_sysfile=false
8650
8651 : access call always available on UNIX
8652 set access d_access
8653 eval $inlibc
8654
8655 : locate the flags for 'access()'
8656 case "$d_access" in
8657 "$define")
8658         echo " "
8659         $cat >access.c <<'EOCP'
8660 #include <sys/types.h>
8661 #ifdef I_FCNTL
8662 #include <fcntl.h>
8663 #endif
8664 #ifdef I_SYS_FILE
8665 #include <sys/file.h>
8666 #endif
8667 #ifdef I_UNISTD
8668 #include <unistd.h>
8669 #endif
8670 int main() {
8671         exit(R_OK);
8672 }
8673 EOCP
8674         : check sys/file.h first, no particular reason here
8675         if $test `./findhdr sys/file.h` && \
8676                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8677                 h_sysfile=true;
8678                 echo "<sys/file.h> defines the *_OK access constants." >&4
8679         elif $test `./findhdr fcntl.h` && \
8680                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8681                 h_fcntl=true;
8682                 echo "<fcntl.h> defines the *_OK access constants." >&4
8683         elif $test `./findhdr unistd.h` && \
8684                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8685                 echo "<unistd.h> defines the *_OK access constants." >&4
8686         else
8687                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8688         fi
8689         ;;
8690 esac
8691 $rm -f access*
8692
8693 : see if accessx exists
8694 set accessx d_accessx
8695 eval $inlibc
8696
8697 : see if alarm exists
8698 set alarm d_alarm
8699 eval $inlibc
8700
8701 : see if atolf exists
8702 set atolf d_atolf
8703 eval $inlibc
8704
8705 : see if atoll exists
8706 set atoll d_atoll
8707 eval $inlibc
8708
8709 : Look for GNU-cc style attribute checking
8710 echo " "
8711 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8712 $cat >attrib.c <<'EOCP'
8713 #include <stdio.h>
8714 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8715 EOCP
8716 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8717         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8718                 echo "Your C compiler doesn't fully support __attribute__."
8719                 val="$undef"
8720         else
8721                 echo "Your C compiler supports __attribute__."
8722                 val="$define"
8723         fi
8724 else
8725         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8726         val="$undef"
8727 fi
8728 set d_attribut
8729 eval $setvar
8730 $rm -f attrib*
8731
8732 : see if bcmp exists
8733 set bcmp d_bcmp
8734 eval $inlibc
8735
8736 : see if bcopy exists
8737 set bcopy d_bcopy
8738 eval $inlibc
8739
8740 : see if this is a unistd.h system
8741 set unistd.h i_unistd
8742 eval $inhdr
8743
8744 : see if getpgrp exists
8745 set getpgrp d_getpgrp
8746 eval $inlibc
8747
8748 case "$d_getpgrp" in
8749 "$define")
8750         echo " "
8751         echo "Checking to see which flavor of getpgrp is in use..."
8752         $cat >try.c <<EOP
8753 #$i_unistd I_UNISTD
8754 #include <sys/types.h>
8755 #ifdef I_UNISTD
8756 #  include <unistd.h>
8757 #endif
8758 int main()
8759 {
8760         if (getuid() == 0) {
8761                 printf("(I see you are running Configure as super-user...)\n");
8762                 setuid(1);
8763         }
8764 #ifdef TRY_BSD_PGRP
8765         if (getpgrp(1) == 0)
8766                 exit(0);
8767 #else
8768         if (getpgrp() > 0)
8769                 exit(0);
8770 #endif
8771         exit(1);
8772 }
8773 EOP
8774         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8775                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8776                 val="$define"
8777         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8778                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8779                 val="$undef"
8780         else
8781                 echo "I can't seem to compile and run the test program."
8782                 if ./usg; then
8783                         xxx="a USG one, i.e. you use getpgrp()."
8784                 else
8785                         # SVR4 systems can appear rather BSD-ish.
8786                         case "$i_unistd" in
8787                         $undef)
8788                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8789                                 val="$define"
8790                                 ;;
8791                         $define)
8792                                 xxx="probably a USG one, i.e. you use getpgrp()."
8793                                 val="$undef"
8794                                 ;;
8795                         esac
8796                 fi
8797                 echo "Assuming your getpgrp is $xxx" >&4
8798         fi
8799         ;;
8800 *) val="$undef";;
8801 esac
8802 set d_bsdgetpgrp
8803 eval $setvar
8804 $rm -f try try.*
8805
8806 : see if setpgrp exists
8807 set setpgrp d_setpgrp
8808 eval $inlibc
8809
8810 case "$d_setpgrp" in
8811 "$define")
8812         echo " "
8813         echo "Checking to see which flavor of setpgrp is in use..."
8814         $cat >try.c <<EOP
8815 #$i_unistd I_UNISTD
8816 #include <sys/types.h>
8817 #ifdef I_UNISTD
8818 #  include <unistd.h>
8819 #endif
8820 int main()
8821 {
8822         if (getuid() == 0) {
8823                 printf("(I see you are running Configure as super-user...)\n");
8824                 setuid(1);
8825         }
8826 #ifdef TRY_BSD_PGRP
8827         if (-1 == setpgrp(1, 1))
8828                 exit(0);
8829 #else
8830         if (setpgrp() != -1)
8831                 exit(0);
8832 #endif
8833         exit(1);
8834 }
8835 EOP
8836         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8837                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8838                 val="$define"
8839         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8840                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8841                 val="$undef"
8842         else
8843                 echo "(I can't seem to compile and run the test program.)"
8844                 if ./usg; then
8845                         xxx="a USG one, i.e. you use setpgrp()."
8846                 else
8847                         # SVR4 systems can appear rather BSD-ish.
8848                         case "$i_unistd" in
8849                         $undef)
8850                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8851                                 val="$define"
8852                                 ;;
8853                         $define)
8854                                 xxx="probably a USG one, i.e. you use setpgrp()."
8855                                 val="$undef"
8856                                 ;;
8857                         esac
8858                 fi
8859                 echo "Assuming your setpgrp is $xxx" >&4
8860         fi
8861         ;;
8862 *) val="$undef";;
8863 esac
8864 set d_bsdsetpgrp
8865 eval $setvar
8866 $rm -f try try.*
8867 : see if bzero exists
8868 set bzero d_bzero
8869 eval $inlibc
8870
8871 : see if signal is declared as pointer to function returning int or void
8872 echo " "
8873 xxx=`./findhdr signal.h`
8874 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8875 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8876         echo "You have int (*signal())() instead of void." >&4
8877         val="$undef"
8878 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8879         echo "You have void (*signal())()." >&4
8880         val="$define"
8881 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8882         echo "You have int (*signal())() instead of void." >&4
8883         val="$undef"
8884 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8885         echo "You have void (*signal())()." >&4
8886         val="$define"
8887 else
8888         case "$d_voidsig" in
8889         '')
8890         echo "I can't determine whether signal handler returns void or int..." >&4
8891                 dflt=void
8892                 rp="What type does your signal handler return?"
8893                 . ./myread
8894                 case "$ans" in
8895                 v*) val="$define";;
8896                 *) val="$undef";;
8897                 esac;;
8898         "$define")
8899                 echo "As you already told me, signal handler returns void." >&4
8900                 val="$define"
8901                 ;;
8902         *)      echo "As you already told me, signal handler returns int." >&4
8903                 val="$undef"
8904                 ;;
8905         esac
8906 fi
8907 set d_voidsig
8908 eval $setvar
8909 case "$d_voidsig" in
8910 "$define") signal_t="void";;
8911 *) signal_t="int";;
8912 esac
8913 $rm -f $$.tmp
8914
8915 : check for ability to cast large floats to 32-bit ints.
8916 echo " "
8917 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8918 if $test "$intsize" -ge 4; then
8919         xxx=int
8920 else
8921         xxx=long
8922 fi
8923 $cat >try.c <<EOCP
8924 #include <stdio.h>
8925 #include <sys/types.h>
8926 #include <signal.h>
8927 $signal_t blech(s) int s; { exit(3); }
8928 int main()
8929 {
8930         $xxx i32;
8931         double f, g;
8932         int result = 0;
8933         char str[16];
8934         signal(SIGFPE, blech);
8935
8936         /* Don't let compiler optimize the test away.  Store the number 
8937            in a writable string for gcc to pass to sscanf under HP/UX.
8938         */
8939         sprintf(str, "2147483647");
8940         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8941         g = 10 * f;
8942         i32  = ($xxx) g;
8943
8944         /* x86 processors will probably give 0x8000 0000, which is a
8945        sign change.  We don't want that.  We want to mimic SPARC
8946            behavior here, which is to preserve the sign and give
8947            back 0x7fff ffff.
8948         */
8949         if (i32 != ($xxx) f)
8950                 result |= 1;
8951         exit(result);
8952 }
8953 EOCP
8954 set try
8955 if eval $compile_ok; then
8956         $run ./try
8957         yyy=$?
8958 else
8959         echo "(I can't seem to compile the test program--assuming it can't)"
8960         yyy=1
8961 fi
8962 case "$yyy" in
8963 0)      val="$define"
8964         echo "Yup, it can."
8965         ;;
8966 *)      val="$undef"
8967         echo "Nope, it can't."
8968         ;;
8969 esac
8970 set d_casti32
8971 eval $setvar
8972 $rm -f try try.*
8973
8974 : check for ability to cast negative floats to unsigned
8975 echo " "
8976 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8977 $cat >try.c <<EOCP
8978 #include <stdio.h>
8979 #include <sys/types.h>
8980 #include <signal.h>
8981 $signal_t blech(s) int s; { exit(7); }
8982 $signal_t blech_in_list(s) int s; { exit(4); }
8983 unsigned long dummy_long(p) unsigned long p; { return p; }
8984 unsigned int dummy_int(p) unsigned int p; { return p; }
8985 unsigned short dummy_short(p) unsigned short p; { return p; }
8986 int main()
8987 {
8988         double f;
8989         unsigned long along;
8990         unsigned int aint;
8991         unsigned short ashort;
8992         int result = 0;
8993         char str[16];
8994         
8995         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8996            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8997            optimized the whole file away
8998         */
8999         /* Store the number in a writable string for gcc to pass to 
9000            sscanf under HP/UX.
9001         */
9002         sprintf(str, "-123");
9003         sscanf(str, "%lf", &f);  /* f = -123.; */
9004
9005         signal(SIGFPE, blech);
9006         along = (unsigned long)f;
9007         aint = (unsigned int)f;
9008         ashort = (unsigned short)f;
9009         if (along != (unsigned long)-123)
9010                 result |= 1;
9011         if (aint != (unsigned int)-123)
9012                 result |= 1;
9013         if (ashort != (unsigned short)-123)
9014                 result |= 1;
9015         sprintf(str, "1073741824.");
9016         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9017         f = f + f;
9018         along = 0;
9019         along = (unsigned long)f;
9020         if (along != 0x80000000)
9021                 result |= 2;
9022         f -= 1.;
9023         along = 0;
9024         along = (unsigned long)f;
9025         if (along != 0x7fffffff)
9026                 result |= 1;
9027         f += 2.;
9028         along = 0;
9029         along = (unsigned long)f;
9030         if (along != 0x80000001)
9031                 result |= 2;
9032         if (result)
9033                 exit(result);
9034         signal(SIGFPE, blech_in_list);
9035         sprintf(str, "123.");
9036         sscanf(str, "%lf", &f);  /* f = 123.; */
9037         along = dummy_long((unsigned long)f);
9038         aint = dummy_int((unsigned int)f);
9039         ashort = dummy_short((unsigned short)f);
9040         if (along != (unsigned long)123)
9041                 result |= 4;
9042         if (aint != (unsigned int)123)
9043                 result |= 4;
9044         if (ashort != (unsigned short)123)
9045                 result |= 4;
9046         exit(result);
9047
9048 }
9049 EOCP
9050 set try
9051 if eval $compile_ok; then
9052         $run ./try
9053         castflags=$?
9054 else
9055         echo "(I can't seem to compile the test program--assuming it can't)"
9056         castflags=7
9057 fi
9058 case "$castflags" in
9059 0)      val="$define"
9060         echo "Yup, it can."
9061         ;;
9062 *)      val="$undef"
9063         echo "Nope, it can't."
9064         ;;
9065 esac
9066 set d_castneg
9067 eval $setvar
9068 $rm -f try.*
9069
9070 : see if vprintf exists
9071 echo " "
9072 if set vprintf val -f d_vprintf; eval $csym; $val; then
9073         echo 'vprintf() found.' >&4
9074         val="$define"
9075         $cat >try.c <<'EOF'
9076 #include <varargs.h>
9077
9078 int main() { xxx("foo"); }
9079
9080 xxx(va_alist)
9081 va_dcl
9082 {
9083         va_list args;
9084         char buf[10];
9085
9086         va_start(args);
9087         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9088 }
9089 EOF
9090         set try
9091         if eval $compile && $run ./try; then
9092                 echo "Your vsprintf() returns (int)." >&4
9093                 val2="$undef"
9094         else
9095                 echo "Your vsprintf() returns (char*)." >&4
9096                 val2="$define"
9097         fi
9098 else
9099         echo 'vprintf() NOT found.' >&4
9100                 val="$undef"
9101                 val2="$undef"
9102 fi
9103 $rm -f try try.*
9104 set d_vprintf
9105 eval $setvar
9106 val=$val2
9107 set d_charvspr
9108 eval $setvar
9109
9110 : see if chown exists
9111 set chown d_chown
9112 eval $inlibc
9113
9114 : see if chroot exists
9115 set chroot d_chroot
9116 eval $inlibc
9117
9118 : see if chsize exists
9119 set chsize d_chsize
9120 eval $inlibc
9121
9122 : see if class exists
9123 set class d_class
9124 eval $inlibc
9125
9126 hasstruct='varname=$1; struct=$2; shift; shift;
9127 while $test $# -ge 2; do
9128         case "$1" in
9129         $define) echo "#include <$2>";;
9130         esac ;
9131     shift 2;
9132 done > try.c;
9133 echo "int main () { struct $struct foo; }" >> try.c;
9134 set try;
9135 if eval $compile; then
9136         val="$define";
9137 else
9138         val="$undef";
9139 fi;
9140 set $varname;
9141 eval $setvar;
9142 $rm -f try.c try.o'
9143
9144 : see if sys/types.h has to be included
9145 set sys/types.h i_systypes
9146 eval $inhdr
9147
9148 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9149 while $test $# -ge 2; do
9150         case "$1" in
9151         $define) echo "#include <$2>";;
9152         esac ;
9153     shift 2;
9154 done > try.c;
9155 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9156 set try;
9157 if eval $compile; then
9158         val="$define";
9159 else
9160         val="$undef";
9161 fi;
9162 set $varname;
9163 eval $setvar;
9164 $rm -f try.c try.o'
9165
9166 socketlib=''
9167 sockethdr=''
9168 : see whether socket exists
9169 echo " "
9170 $echo $n "Hmm... $c" >&4
9171 if set socket val -f d_socket; eval $csym; $val; then
9172         echo "Looks like you have Berkeley networking support." >&4
9173         d_socket="$define"
9174         if set setsockopt val -f; eval $csym; $val; then
9175                 d_oldsock="$undef"
9176         else
9177                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9178                 d_oldsock="$define"
9179         fi
9180 else
9181         if $contains socklib libc.list >/dev/null 2>&1; then
9182                 echo "Looks like you have Berkeley networking support." >&4
9183                 d_socket="$define"
9184                 : we will have to assume that it supports the 4.2 BSD interface
9185                 d_oldsock="$undef"
9186         else
9187                 echo "You don't have Berkeley networking in libc$_a..." >&4
9188                 if test "X$d_socket" = "X$define"; then
9189                    echo "...but you seem to believe that you have sockets." >&4
9190                 else
9191                         for net in net socket
9192                         do
9193                                 if test -f /usr/lib/lib$net$_a; then
9194                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9195                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9196                                         if $contains socket libc.list >/dev/null 2>&1; then
9197                                                 d_socket="$define"
9198                                                 socketlib="-l$net"
9199                                                 case "$net" in
9200                                                 net)
9201                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9202                                                         sockethdr="-I/usr/netinclude"
9203                                                         ;;
9204                                                 esac
9205                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9206                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9207                                                         d_oldsock="$undef"
9208                                                 else
9209                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9210                                                         d_oldsock="$define"
9211                                                 fi
9212                                                 break
9213                                         fi
9214                                 fi
9215                         done
9216                         if test "X$d_socket" != "X$define"; then
9217                            echo "or anywhere else I see." >&4
9218                            d_socket="$undef"
9219                            d_oldsock="$undef"
9220                         fi
9221                 fi
9222         fi
9223 fi
9224
9225 : see if socketpair exists
9226 set socketpair d_sockpair
9227 eval $inlibc
9228
9229
9230 echo " "
9231 echo "Checking the availability of certain socket constants..." >& 4
9232 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9233         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9234         $cat >try.c <<EOF
9235 #include <sys/types.h>
9236 #include <sys/socket.h>
9237 int main() {
9238     int i = $ENUM;
9239 }
9240 EOF
9241         val="$undef"
9242         set try; if eval $compile; then
9243                 val="$define"
9244         fi
9245         set d_${enum}; eval $setvar
9246         $rm -f try.c try
9247 done
9248
9249 : see if this is a sys/uio.h system
9250 set sys/uio.h i_sysuio
9251 eval $inhdr
9252
9253
9254 echo " "
9255 echo "Checking to see if your system supports struct cmsghdr..." >&4
9256 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9257 eval $hasstruct
9258 case "$d_cmsghdr_s" in
9259 "$define")      echo "Yes, it does."   ;;
9260 *)              echo "No, it doesn't." ;;
9261 esac
9262
9263
9264 : check for const keyword
9265 echo " "
9266 echo 'Checking to see if your C compiler knows about "const"...' >&4
9267 $cat >const.c <<'EOCP'
9268 typedef struct spug { int drokk; } spug;
9269 int main()
9270 {
9271         const char *foo;
9272         const spug y;
9273 }
9274 EOCP
9275 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9276         val="$define"
9277         echo "Yup, it does."
9278 else
9279         val="$undef"
9280         echo "Nope, it doesn't."
9281 fi
9282 set d_const
9283 eval $setvar
9284
9285 : see if crypt exists
9286 echo " "
9287 if set crypt val -f d_crypt; eval $csym; $val; then
9288         echo 'crypt() found.' >&4
9289         val="$define"
9290         cryptlib=''
9291 else
9292         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9293         if $test -z "$cryptlib"; then
9294                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9295         else
9296                 cryptlib=-lcrypt
9297         fi
9298         if $test -z "$cryptlib"; then
9299                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9300         else
9301                 cryptlib=-lcrypt
9302         fi
9303         if $test -z "$cryptlib"; then
9304                 cryptlib=`./loc libcrypt$_a "" $libpth`
9305         else
9306                 cryptlib=-lcrypt
9307         fi
9308         if $test -z "$cryptlib"; then
9309                 echo 'crypt() NOT found.' >&4
9310                 val="$undef"
9311         else
9312                 val="$define"
9313         fi
9314 fi
9315 set d_crypt
9316 eval $setvar
9317
9318 : get csh whereabouts
9319 case "$csh" in
9320 'csh') val="$undef" ;;
9321 *) val="$define" ;;
9322 esac
9323 set d_csh
9324 eval $setvar
9325 : Respect a hint or command line value for full_csh.
9326 case "$full_csh" in
9327 '') full_csh=$csh ;;
9328 esac
9329
9330 : see if cuserid exists
9331 set cuserid d_cuserid
9332 eval $inlibc
9333
9334 : see if this is a limits.h system
9335 set limits.h i_limits
9336 eval $inhdr
9337
9338 : see if this is a float.h system
9339 set float.h i_float
9340 eval $inhdr
9341
9342 : See if number of significant digits in a double precision number is known
9343 echo " "
9344 $cat >dbl_dig.c <<EOM
9345 #$i_limits I_LIMITS
9346 #$i_float I_FLOAT
9347 #ifdef I_LIMITS
9348 #include <limits.h>
9349 #endif
9350 #ifdef I_FLOAT
9351 #include <float.h>
9352 #endif
9353 #ifdef DBL_DIG
9354 printf("Contains DBL_DIG");
9355 #endif
9356 EOM
9357 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9358 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9359         echo "DBL_DIG found." >&4
9360         val="$define"
9361 else
9362         echo "DBL_DIG NOT found." >&4
9363         val="$undef"
9364 fi
9365 $rm -f dbl_dig.?
9366 set d_dbl_dig
9367 eval $setvar
9368
9369 hasproto='varname=$1; func=$2; shift; shift;
9370 while $test $# -ge 2; do
9371         case "$1" in
9372         $define) echo "#include <$2>";;
9373         esac ;
9374     shift 2;
9375 done > try.c;
9376 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9377 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9378         echo "$func() prototype found.";
9379         val="$define";
9380 else
9381         echo "$func() prototype NOT found.";
9382         val="$undef";
9383 fi;
9384 set $varname;
9385 eval $setvar;
9386 $rm -f try.c tryout.c'
9387
9388 : see if dbm.h is available
9389 : see if dbmclose exists
9390 set dbmclose d_dbmclose
9391 eval $inlibc
9392
9393 case "$d_dbmclose" in
9394 $define)
9395         set dbm.h i_dbm
9396         eval $inhdr
9397         case "$i_dbm" in
9398         $define)
9399                 val="$undef"
9400                 set i_rpcsvcdbm
9401                 eval $setvar
9402                 ;;
9403         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9404                 eval $inhdr
9405                 ;;
9406         esac
9407         ;;
9408 *)      echo "We won't be including <dbm.h>"
9409         val="$undef"
9410         set i_dbm
9411         eval $setvar
9412         val="$undef"
9413         set i_rpcsvcdbm
9414         eval $setvar
9415         ;;
9416 esac
9417
9418 : see if prototype for dbminit is available
9419 echo " "
9420 set d_dbminitproto dbminit $i_dbm dbm.h
9421 eval $hasproto
9422
9423 : see if difftime exists
9424 set difftime d_difftime
9425 eval $inlibc
9426
9427 : see if this is a dirent system
9428 echo " "
9429 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9430         val="$define"
9431         echo "<dirent.h> found." >&4
9432 else
9433         val="$undef"
9434         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9435                 echo "<sys/dir.h> found." >&4
9436                 echo " "
9437         else
9438                 xinc=`./findhdr sys/ndir.h`
9439         fi
9440         echo "<dirent.h> NOT found." >&4
9441 fi
9442 set i_dirent
9443 eval $setvar
9444
9445 : Look for type of directory structure.
9446 echo " "
9447 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9448
9449 case "$direntrytype" in
9450 ''|' ')
9451         case "$i_dirent" in
9452         $define) guess1='struct dirent' ;;
9453         *) guess1='struct direct'  ;;
9454         esac
9455         ;;
9456 *)      guess1="$direntrytype"
9457         ;;
9458 esac
9459
9460 case "$guess1" in
9461 'struct dirent') guess2='struct direct' ;;
9462 *) guess2='struct dirent' ;;
9463 esac
9464                 
9465 if $contains "$guess1" try.c >/dev/null 2>&1; then
9466         direntrytype="$guess1"
9467         echo "Your directory entries are $direntrytype." >&4
9468 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9469         direntrytype="$guess2"
9470         echo "Your directory entries seem to be $direntrytype." >&4
9471 else
9472         echo "I don't recognize your system's directory entries." >&4
9473         rp="What type is used for directory entries on this system?"
9474         dflt="$guess1"
9475         . ./myread
9476         direntrytype="$ans"
9477 fi
9478 $rm -f try.c
9479
9480
9481 : see if the directory entry stores field length
9482 echo " "
9483 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9484 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9485         echo "Good, your directory entry keeps length information in d_namlen." >&4
9486         val="$define"
9487 else
9488         echo "Your directory entry does not know about the d_namlen field." >&4
9489         val="$undef"
9490 fi
9491 set d_dirnamlen
9492 eval $setvar
9493 $rm -f try.c
9494
9495 : see if dlerror exists
9496 xxx_runnm="$runnm"
9497 runnm=false
9498 set dlerror d_dlerror
9499 eval $inlibc
9500 runnm="$xxx_runnm"
9501
9502 : see if dlfcn is available
9503 set dlfcn.h i_dlfcn
9504 eval $inhdr
9505
9506 case "$usedl" in
9507 $define|y|true)
9508         $cat << EOM
9509
9510 On a few systems, the dynamically loaded modules that perl generates and uses
9511 will need a different extension than shared libs. The default will probably
9512 be appropriate.
9513
9514 EOM
9515         case "$dlext" in
9516         '')     dflt="$so" ;;
9517         *)      dflt="$dlext" ;;
9518         esac
9519         rp='What is the extension of dynamically loaded modules'
9520         . ./myread
9521         dlext="$ans"
9522         ;;
9523 *)
9524         dlext="none"
9525         ;;
9526 esac
9527
9528 : Check if dlsym need a leading underscore
9529 echo " "
9530 val="$undef"
9531
9532 case "$dlsrc" in
9533 dl_dlopen.xs)
9534         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9535         $cat >dyna.c <<'EOM'
9536 fred () { }
9537 EOM
9538
9539 $cat >fred.c<<EOM
9540
9541 #include <stdio.h>
9542 #$i_dlfcn I_DLFCN
9543 #ifdef I_DLFCN
9544 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9545 #else
9546 #include <sys/types.h>
9547 #include <nlist.h>
9548 #include <link.h>
9549 #endif
9550
9551 extern int fred() ;
9552
9553 int main()
9554 {
9555     void * handle ;
9556     void * symbol ;
9557 #ifndef RTLD_LAZY
9558     int mode = 1 ;
9559 #else
9560     int mode = RTLD_LAZY ;
9561 #endif
9562     handle = dlopen("./dyna.$dlext", mode) ;
9563     if (handle == NULL) {
9564         printf ("1\n") ;
9565         fflush (stdout) ;
9566         exit(0);
9567     }
9568     symbol = dlsym(handle, "fred") ;
9569     if (symbol == NULL) {
9570         /* try putting a leading underscore */
9571         symbol = dlsym(handle, "_fred") ;
9572         if (symbol == NULL) {
9573             printf ("2\n") ;
9574             fflush (stdout) ;
9575             exit(0);
9576         }
9577         printf ("3\n") ;
9578     }
9579     else
9580         printf ("4\n") ;
9581     fflush (stdout) ;
9582     exit(0);
9583 }
9584 EOM
9585         : Call the object file tmp-dyna.o in case dlext=o.
9586         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9587                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9588                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9589                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9590                 xxx=`$run ./fred`
9591                 case $xxx in
9592                 1)      echo "Test program failed using dlopen." >&4
9593                         echo "Perhaps you should not use dynamic loading." >&4;;
9594                 2)      echo "Test program failed using dlsym." >&4
9595                         echo "Perhaps you should not use dynamic loading." >&4;;
9596                 3)      echo "dlsym needs a leading underscore" >&4
9597                         val="$define" ;;
9598                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9599                 esac
9600         else
9601                 echo "I can't compile and run the test program." >&4
9602                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9603         fi
9604         ;;
9605 esac
9606                 
9607 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9608
9609 set d_dlsymun
9610 eval $setvar
9611
9612 : see if prototype for drand48 is available
9613 echo " "
9614 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9615 eval $hasproto
9616
9617 : see if dup2 exists
9618 set dup2 d_dup2
9619 eval $inlibc
9620
9621 : see if eaccess exists
9622 set eaccess d_eaccess
9623 eval $inlibc
9624
9625 : see if endgrent exists
9626 set endgrent d_endgrent
9627 eval $inlibc
9628
9629 : see if endhostent exists
9630 set endhostent d_endhent
9631 eval $inlibc
9632
9633 : see if endnetent exists
9634 set endnetent d_endnent
9635 eval $inlibc
9636
9637 : see if endprotoent exists
9638 set endprotoent d_endpent
9639 eval $inlibc
9640
9641 : see if endpwent exists
9642 set endpwent d_endpwent
9643 eval $inlibc
9644
9645 : see if endservent exists
9646 set endservent d_endsent
9647 eval $inlibc
9648
9649 : Locate the flags for 'open()'
9650 echo " "
9651 $cat >try.c <<'EOCP'
9652 #include <sys/types.h>
9653 #ifdef I_FCNTL
9654 #include <fcntl.h>
9655 #endif
9656 #ifdef I_SYS_FILE
9657 #include <sys/file.h>
9658 #endif
9659 int main() {
9660         if(O_RDONLY);
9661 #ifdef O_TRUNC
9662         exit(0);
9663 #else
9664         exit(1);
9665 #endif
9666 }
9667 EOCP
9668 : check sys/file.h first to get FREAD on Sun
9669 if $test `./findhdr sys/file.h` && \
9670                 set try -DI_SYS_FILE && eval $compile; then
9671         h_sysfile=true;
9672         echo "<sys/file.h> defines the O_* constants..." >&4
9673         if $run ./try; then
9674                 echo "and you have the 3 argument form of open()." >&4
9675                 val="$define"
9676         else
9677                 echo "but not the 3 argument form of open().  Oh, well." >&4
9678                 val="$undef"
9679         fi
9680 elif $test `./findhdr fcntl.h` && \
9681                 set try -DI_FCNTL && eval $compile; then
9682         h_fcntl=true;
9683         echo "<fcntl.h> defines the O_* constants..." >&4
9684         if $run ./try; then
9685                 echo "and you have the 3 argument form of open()." >&4
9686                 val="$define"
9687         else
9688                 echo "but not the 3 argument form of open().  Oh, well." >&4
9689                 val="$undef"
9690         fi
9691 else
9692         val="$undef"
9693         echo "I can't find the O_* constant definitions!  You got problems." >&4
9694 fi
9695 set d_open3
9696 eval $setvar
9697 $rm -f try try.*
9698
9699 : see which of string.h or strings.h is needed
9700 echo " "
9701 strings=`./findhdr string.h`
9702 if $test "$strings" && $test -r "$strings"; then
9703         echo "Using <string.h> instead of <strings.h>." >&4
9704         val="$define"
9705 else
9706         val="$undef"
9707         strings=`./findhdr strings.h`
9708         if $test "$strings" && $test -r "$strings"; then
9709                 echo "Using <strings.h> instead of <string.h>." >&4
9710         else
9711                 echo "No string header found -- You'll surely have problems." >&4
9712         fi
9713 fi
9714 set i_string
9715 eval $setvar
9716 case "$i_string" in
9717 "$undef") strings=`./findhdr strings.h`;;
9718 *)        strings=`./findhdr string.h`;;
9719 esac
9720
9721 : check for non-blocking I/O stuff
9722 case "$h_sysfile" in
9723 true) echo "#include <sys/file.h>" > head.c;;
9724 *)
9725        case "$h_fcntl" in
9726        true) echo "#include <fcntl.h>" > head.c;;
9727        *) echo "#include <sys/fcntl.h>" > head.c;;
9728        esac
9729        ;;
9730 esac
9731 echo " "
9732 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9733 case "$o_nonblock" in
9734 '')
9735         $cat head.c > try.c
9736         $cat >>try.c <<'EOCP'
9737 #include <stdio.h>
9738 #include <stdlib.h>
9739 int main() {
9740 #ifdef O_NONBLOCK
9741         printf("O_NONBLOCK\n");
9742         exit(0);
9743 #endif
9744 #ifdef O_NDELAY
9745         printf("O_NDELAY\n");
9746         exit(0);
9747 #endif
9748 #ifdef FNDELAY
9749         printf("FNDELAY\n");
9750         exit(0);
9751 #endif
9752         exit(0);
9753 }
9754 EOCP
9755         set try
9756         if eval $compile_ok; then
9757                 o_nonblock=`$run ./try`
9758                 case "$o_nonblock" in
9759                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9760                 *) echo "Seems like we can use $o_nonblock.";;
9761                 esac
9762         else
9763                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9764         fi
9765         ;;
9766 *) echo "Using $hint value $o_nonblock.";;
9767 esac
9768 $rm -f try try.* .out core
9769
9770 echo " "
9771 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9772 case "$eagain" in
9773 '')
9774         $cat head.c > try.c
9775         $cat >>try.c <<EOCP
9776 #include <errno.h>
9777 #include <sys/types.h>
9778 #include <signal.h>
9779 #include <stdio.h> 
9780 #include <stdlib.h> 
9781 #define MY_O_NONBLOCK $o_nonblock
9782 #ifndef errno  /* XXX need better Configure test */
9783 extern int errno;
9784 #endif
9785 #$i_unistd I_UNISTD
9786 #ifdef I_UNISTD
9787 #include <unistd.h>
9788 #endif
9789 #$i_string I_STRING
9790 #ifdef I_STRING
9791 #include <string.h>
9792 #else
9793 #include <strings.h>
9794 #endif
9795 $signal_t blech(x) int x; { exit(3); }
9796 EOCP
9797         $cat >> try.c <<'EOCP'
9798 int main()
9799 {
9800         int pd[2];
9801         int pu[2];
9802         char buf[1];
9803         char string[100];
9804
9805         pipe(pd);       /* Down: child -> parent */
9806         pipe(pu);       /* Up: parent -> child */
9807         if (0 != fork()) {
9808                 int ret;
9809                 close(pd[1]);   /* Parent reads from pd[0] */
9810                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9811 #ifdef F_SETFL
9812                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9813                         exit(1);
9814 #else
9815                 exit(4);
9816 #endif
9817                 signal(SIGALRM, blech);
9818                 alarm(5);
9819                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9820                         exit(2);
9821                 sprintf(string, "%d\n", ret);
9822                 write(2, string, strlen(string));
9823                 alarm(0);
9824 #ifdef EAGAIN
9825                 if (errno == EAGAIN) {
9826                         printf("EAGAIN\n");
9827                         goto ok;
9828                 }
9829 #endif
9830 #ifdef EWOULDBLOCK
9831                 if (errno == EWOULDBLOCK)
9832                         printf("EWOULDBLOCK\n");
9833 #endif
9834         ok:
9835                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9836                 sleep(2);                               /* Give it time to close our pipe */
9837                 alarm(5);
9838                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9839                 alarm(0);
9840                 sprintf(string, "%d\n", ret);
9841                 write(3, string, strlen(string));
9842                 exit(0);
9843         }
9844
9845         close(pd[0]);                   /* We write to pd[1] */
9846         close(pu[1]);                   /* We read from pu[0] */
9847         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9848         close(pd[1]);                   /* Pipe pd is now fully closed! */
9849         exit(0);                                /* Bye bye, thank you for playing! */
9850 }
9851 EOCP
9852         set try
9853         if eval $compile_ok; then
9854                 echo "$startsh" >mtry
9855                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9856                 chmod +x mtry
9857                 ./mtry >/dev/null 2>&1
9858                 case $? in
9859                 0) eagain=`$cat try.out`;;
9860                 1) echo "Could not perform non-blocking setting!";;
9861                 2) echo "I did a successful read() for something that was not there!";;
9862                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9863                 4) echo "Could not find F_SETFL!";;
9864                 *) echo "Something terribly wrong happened during testing.";;
9865                 esac
9866                 rd_nodata=`$cat try.ret`
9867                 echo "A read() system call with no data present returns $rd_nodata."
9868                 case "$rd_nodata" in
9869                 0|-1) ;;
9870                 *)
9871                         echo "(That's peculiar, fixing that to be -1.)"
9872                         rd_nodata=-1
9873                         ;;
9874                 esac
9875                 case "$eagain" in
9876                 '')
9877                         echo "Forcing errno EAGAIN on read() with no data available."
9878                         eagain=EAGAIN
9879                         ;;
9880                 *)
9881                         echo "Your read() sets errno to $eagain when no data is available."
9882                         ;;
9883                 esac
9884                 status=`$cat try.err`
9885                 case "$status" in
9886                 0) echo "And it correctly returns 0 to signal EOF.";;
9887                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9888                 *) echo "However, your read() returns '$status' on EOF??";;
9889                 esac
9890                 val="$define"
9891                 if test "$status" = "$rd_nodata"; then
9892                         echo "WARNING: you can't distinguish between EOF and no data!"
9893                         val="$undef"
9894                 fi
9895         else
9896                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9897                 eagain=EAGAIN
9898         fi
9899         set d_eofnblk
9900         eval $setvar
9901         ;;
9902 *)
9903         echo "Using $hint value $eagain."
9904         echo "Your read() returns $rd_nodata when no data is present."
9905         case "$d_eofnblk" in
9906         "$define") echo "And you can see EOF because read() returns 0.";;
9907         "$undef") echo "But you can't see EOF status from read() returned value.";;
9908         *)
9909                 echo "(Assuming you can't see EOF status from read anyway.)"
9910                 d_eofnblk=$undef
9911                 ;;
9912         esac
9913         ;;
9914 esac
9915 $rm -f try try.* .out core head.c mtry
9916
9917 : see if fchdir exists
9918 set fchdir d_fchdir
9919 eval $inlibc
9920
9921 : see if fchmod exists
9922 set fchmod d_fchmod
9923 eval $inlibc
9924
9925 : see if fchown exists
9926 set fchown d_fchown
9927 eval $inlibc
9928
9929 : see if this is an fcntl system
9930 set fcntl d_fcntl
9931 eval $inlibc
9932
9933 echo " "
9934 : See if fcntl-based locking works.
9935 $cat >try.c <<EOCP
9936 #include <stdlib.h>
9937 #include <unistd.h>
9938 #include <fcntl.h>
9939 #include <signal.h>
9940 $signal_t blech(x) int x; { exit(3); }
9941 int main() {
9942 #if defined(F_SETLK) && defined(F_SETLKW)
9943      struct flock flock;
9944      int retval, fd;
9945      fd = open("try.c", O_RDONLY);
9946      flock.l_type = F_RDLCK;
9947      flock.l_whence = SEEK_SET;
9948      flock.l_start = flock.l_len = 0;
9949      signal(SIGALRM, blech);
9950      alarm(10);
9951      retval = fcntl(fd, F_SETLK, &flock);
9952      close(fd);
9953      (retval < 0 ? exit(2) : exit(0));
9954 #else
9955      exit(2);
9956 #endif
9957 }
9958 EOCP
9959 echo "Checking if fcntl-based file locking works... "
9960 case "$d_fcntl" in
9961 "$define")
9962         set try
9963         if eval $compile_ok; then
9964                 if $run ./try; then
9965                         echo "Yes, it seems to work."
9966                         val="$define"
9967                 else
9968                         echo "Nope, it didn't work."
9969                         val="$undef"
9970                         case "$?" in
9971                         3) $cat >&4 <<EOM
9972 ***
9973 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9974 *** This is (almost) impossible.
9975 *** If your NFS lock daemons are not feeling well, something like
9976 *** this may happen, please investigate.  Cannot continue, aborting.
9977 ***
9978 EOM
9979                                 exit 1
9980                                 ;;
9981                         esac
9982                 fi
9983         else
9984                 echo "I'm unable to compile the test program, so I'll assume not."
9985                 val="$undef"
9986         fi
9987         ;;
9988 *) val="$undef";
9989         echo "Nope, since you don't even have fcntl()."
9990         ;;
9991 esac
9992 set d_fcntl_can_lock
9993 eval $setvar
9994 $rm -f try*
9995
9996
9997 : see if sys/select.h has to be included
9998 set sys/select.h i_sysselct
9999 eval $inhdr
10000
10001 : see if we should include time.h, sys/time.h, or both
10002 echo " "
10003 if test "X$timeincl" = X; then
10004         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10005         $echo $n "I'm now running the test program...$c"
10006         $cat >try.c <<'EOCP'
10007 #include <sys/types.h>
10008 #ifdef I_TIME
10009 #include <time.h>
10010 #endif
10011 #ifdef I_SYSTIME
10012 #ifdef SYSTIMEKERNEL
10013 #define KERNEL
10014 #endif
10015 #include <sys/time.h>
10016 #endif
10017 #ifdef I_SYSSELECT
10018 #include <sys/select.h>
10019 #endif
10020 int main()
10021 {
10022         struct tm foo;
10023 #ifdef S_TIMEVAL
10024         struct timeval bar;
10025 #endif
10026 #ifdef S_TIMEZONE
10027         struct timezone tzp;
10028 #endif
10029         if (foo.tm_sec == foo.tm_sec)
10030                 exit(0);
10031 #ifdef S_TIMEVAL
10032         if (bar.tv_sec == bar.tv_sec)
10033                 exit(0);
10034 #endif
10035         exit(1);
10036 }
10037 EOCP
10038         flags=''
10039         for s_timezone in '-DS_TIMEZONE' ''; do
10040         sysselect=''
10041         for s_timeval in '-DS_TIMEVAL' ''; do
10042         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10043         for i_time in '' '-DI_TIME'; do
10044         for i_systime in '-DI_SYSTIME' ''; do
10045                 case "$flags" in
10046                 '') $echo $n ".$c"
10047                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10048                         if eval $compile; then
10049                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10050                                 shift
10051                                 flags="$*"
10052                                 echo " "
10053                                 $echo $n "Succeeded with $flags$c"
10054                         fi
10055                         ;;
10056                 esac
10057         done
10058         done
10059         done
10060         done
10061         done
10062         timeincl=''
10063         echo " "
10064         case "$flags" in
10065         *SYSTIMEKERNEL*) i_systimek="$define"
10066                 timeincl=`./findhdr sys/time.h`
10067                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10068         *) i_systimek="$undef";;
10069         esac
10070         case "$flags" in
10071         *I_TIME*) i_time="$define"
10072                 timeincl=`./findhdr time.h`" $timeincl"
10073                 echo "We'll include <time.h>." >&4;;
10074         *) i_time="$undef";;
10075         esac
10076         case "$flags" in
10077         *I_SYSTIME*) i_systime="$define"
10078                 timeincl=`./findhdr sys/time.h`" $timeincl"
10079                 echo "We'll include <sys/time.h>." >&4;;
10080         *) i_systime="$undef";;
10081         esac
10082         $rm -f try.c try
10083 fi
10084
10085 : check for fd_set items
10086 $cat <<EOM
10087
10088 Checking to see how well your C compiler handles fd_set and friends ...
10089 EOM
10090 $cat >try.c <<EOCP
10091 #$i_systime I_SYS_TIME
10092 #$i_sysselct I_SYS_SELECT
10093 #$d_socket HAS_SOCKET
10094 #include <sys/types.h>
10095 #ifdef HAS_SOCKET
10096 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10097 #endif
10098 #ifdef I_SYS_TIME
10099 #include <sys/time.h>
10100 #endif
10101 #ifdef I_SYS_SELECT
10102 #include <sys/select.h>
10103 #endif
10104 int main() {
10105         fd_set fds;
10106
10107 #ifdef TRYBITS
10108         if(fds.fds_bits);
10109 #endif
10110
10111 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10112         exit(0);
10113 #else
10114         exit(1);
10115 #endif
10116 }
10117 EOCP
10118 set try -DTRYBITS
10119 if eval $compile; then
10120         d_fds_bits="$define"
10121         d_fd_set="$define"
10122         echo "Well, your system knows about the normal fd_set typedef..." >&4
10123         if $run ./try; then
10124                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10125                 d_fd_macros="$define"
10126         else
10127                 $cat >&4 <<'EOM'
10128 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10129 EOM
10130                 d_fd_macros="$undef"
10131         fi
10132 else
10133         $cat <<'EOM'
10134 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10135 EOM
10136         set try
10137         if eval $compile; then
10138                 d_fds_bits="$undef"
10139                 d_fd_set="$define"
10140                 echo "Well, your system has some sort of fd_set available..." >&4
10141                 if $run ./try; then
10142                         echo "and you have the normal fd_set macros." >&4
10143                         d_fd_macros="$define"
10144                 else
10145                         $cat <<'EOM'
10146 but not the normal fd_set macros!  Gross!  More work for me...
10147 EOM
10148                         d_fd_macros="$undef"
10149                 fi
10150         else
10151         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10152                 d_fd_set="$undef"
10153                 d_fds_bits="$undef"
10154                 d_fd_macros="$undef"
10155         fi
10156 fi
10157 $rm -f try try.*
10158
10159 : see if fgetpos exists
10160 set fgetpos d_fgetpos
10161 eval $inlibc
10162
10163 : see if finite exists
10164 set finite d_finite
10165 eval $inlibc
10166
10167 : see if finitel exists
10168 set finitel d_finitel
10169 eval $inlibc
10170
10171 : see if flock exists
10172 set flock d_flock
10173 eval $inlibc
10174
10175 : see if this is a sys/file.h system
10176 val=''
10177 set sys/file.h val
10178 eval $inhdr
10179
10180 : do we need to include sys/file.h ?
10181 case "$val" in
10182 "$define")
10183         echo " "
10184         if $h_sysfile; then
10185                 val="$define"
10186                 echo "We'll be including <sys/file.h>." >&4
10187         else
10188                 val="$undef"
10189                 echo "We won't be including <sys/file.h>." >&4
10190         fi
10191         ;;
10192 *)
10193         h_sysfile=false
10194         ;;
10195 esac
10196 set i_sysfile
10197 eval $setvar
10198
10199 : see if prototype for flock is available
10200 echo " "
10201 set d_flockproto flock $i_sysfile sys/file.h
10202 eval $hasproto
10203
10204 : see if fork exists
10205 set fork d_fork
10206 eval $inlibc
10207
10208 : see if fp_class exists
10209 set fp_class d_fp_class
10210 eval $inlibc
10211
10212 : see if pathconf exists
10213 set pathconf d_pathconf
10214 eval $inlibc
10215
10216 : see if fpathconf exists
10217 set fpathconf d_fpathconf
10218 eval $inlibc
10219
10220 : see if fpclass exists
10221 set fpclass d_fpclass
10222 eval $inlibc
10223
10224 : see if fpclassify exists
10225 set fpclassify d_fpclassify
10226 eval $inlibc
10227
10228 : see if fpclassl exists
10229 set fpclassl d_fpclassl
10230 eval $inlibc
10231
10232
10233 : check for fpos64_t
10234 echo " "
10235 echo "Checking to see if you have fpos64_t..." >&4
10236 $cat >try.c <<EOCP
10237 #include <stdio.h>
10238 int main() { fpos64_t x = 7; }
10239 EOCP
10240 set try
10241 if eval $compile; then
10242         val="$define"
10243         echo "You have fpos64_t."
10244 else
10245         val="$undef"
10246         echo "You do not have fpos64_t."
10247         case "$fpossize" in
10248         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10249         esac
10250 fi
10251 $rm -f try.* try
10252 set d_fpos64_t
10253 eval $setvar
10254
10255 : see if frexpl exists
10256 set frexpl d_frexpl
10257 eval $inlibc
10258
10259 : see if this is a sys/param system
10260 set sys/param.h i_sysparam
10261 eval $inhdr
10262
10263 : see if this is a sys/mount.h system
10264 set sys/mount.h i_sysmount
10265 eval $inhdr
10266
10267
10268 echo " "
10269 echo "Checking to see if your system supports struct fs_data..." >&4
10270 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10271 eval $hasstruct
10272 case "$d_fs_data_s" in
10273 "$define")      echo "Yes, it does."   ;;
10274 *)              echo "No, it doesn't." ;;
10275 esac
10276
10277 : see if fseeko exists
10278 set fseeko d_fseeko
10279 eval $inlibc
10280 case "$longsize" in
10281 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10282 esac
10283
10284 : see if fsetpos exists
10285 set fsetpos d_fsetpos
10286 eval $inlibc
10287
10288
10289 : see if fstatfs exists
10290 set fstatfs d_fstatfs
10291 eval $inlibc
10292
10293
10294 : see if statvfs exists
10295 set statvfs d_statvfs
10296 eval $inlibc
10297
10298 : see if fstatvfs exists
10299 set fstatvfs d_fstatvfs
10300 eval $inlibc
10301
10302
10303 : see if fsync exists
10304 set fsync d_fsync
10305 eval $inlibc
10306
10307 : see if ftello exists
10308 set ftello d_ftello
10309 eval $inlibc
10310 case "$longsize" in
10311 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10312 esac
10313
10314 : see if getcwd exists
10315 set getcwd d_getcwd
10316 eval $inlibc
10317
10318 : see if getespwnam exists
10319 set getespwnam d_getespwnam
10320 eval $inlibc
10321
10322
10323 : see if getfsstat exists
10324 set getfsstat d_getfsstat
10325 eval $inlibc
10326
10327 : see if getgrent exists
10328 set getgrent d_getgrent
10329 eval $inlibc
10330
10331 : see if gethostbyaddr exists
10332 set gethostbyaddr d_gethbyaddr
10333 eval $inlibc
10334
10335 : see if gethostbyname exists
10336 set gethostbyname d_gethbyname
10337 eval $inlibc
10338
10339 : see if gethostent exists
10340 set gethostent d_gethent
10341 eval $inlibc
10342
10343 : see how we will look up host name
10344 echo " "
10345 call=''
10346 if set gethostname val -f d_gethname; eval $csym; $val; then
10347         echo 'gethostname() found.' >&4
10348         d_gethname="$define"
10349         call=gethostname
10350 fi
10351 if set uname val -f d_uname; eval $csym; $val; then
10352         if ./xenix; then
10353                 $cat <<'EOM'
10354 uname() was found, but you're running xenix, and older versions of xenix
10355 have a broken uname(). If you don't really know whether your xenix is old
10356 enough to have a broken system call, use the default answer.
10357
10358 EOM
10359                 dflt=y
10360                 case "$d_uname" in
10361                 "$define") dflt=n;;
10362                 esac
10363                 rp='Is your uname() broken?'
10364                 . ./myread
10365                 case "$ans" in
10366                 n*) d_uname="$define"; call=uname;;
10367                 esac
10368         else
10369                 echo 'uname() found.' >&4
10370                 d_uname="$define"
10371                 case "$call" in
10372                 '') call=uname ;;
10373                 esac
10374         fi
10375 fi
10376 case "$d_gethname" in
10377 '') d_gethname="$undef";;
10378 esac
10379 case "$d_uname" in
10380 '') d_uname="$undef";;
10381 esac
10382 case "$d_uname$d_gethname" in
10383 *define*)
10384         dflt=n
10385         cat <<EOM
10386  
10387 Every now and then someone has a $call() that lies about the hostname
10388 but can't be fixed for political or economic reasons.  If you wish, I can
10389 pretend $call() isn't there and maybe compute hostname at run-time
10390 thanks to the '$phostname' command.
10391
10392 EOM
10393         rp="Shall I ignore $call() from now on?"
10394         . ./myread
10395         case "$ans" in
10396         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10397         esac;;
10398 esac
10399 case "$phostname" in
10400 '') aphostname='';;
10401 *) case "$aphostname" in
10402         /*) ;;
10403         *) set X $phostname
10404                 shift
10405                 file=$1
10406                 shift
10407                 file=`./loc $file $file $pth`
10408                 aphostname=`echo $file $*`
10409                 ;;
10410         esac
10411         ;;
10412 esac
10413 case "$d_uname$d_gethname" in
10414 *define*) ;;
10415 *)
10416         case "$phostname" in
10417         '')
10418                 echo "There will be no way for $package to get your hostname." >&4;;
10419         *)
10420         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10421                 ;;
10422         esac;;
10423 esac
10424 case "$d_phostname" in
10425 '') d_phostname="$undef";;
10426 esac
10427
10428 : see if this is a netdb.h system
10429 set netdb.h i_netdb
10430 eval $inhdr
10431
10432 : see if prototypes for various gethostxxx netdb.h functions are available
10433 echo " "
10434 set d_gethostprotos gethostent $i_netdb netdb.h
10435 eval $hasproto
10436
10437 : see if getitimer exists
10438 set getitimer d_getitimer
10439 eval $inlibc
10440
10441 : see if getlogin exists
10442 set getlogin d_getlogin
10443 eval $inlibc
10444
10445 : see if getmnt exists
10446 set getmnt d_getmnt
10447 eval $inlibc
10448
10449 : see if getmntent exists
10450 set getmntent d_getmntent
10451 eval $inlibc
10452
10453 : see if getnetbyaddr exists
10454 set getnetbyaddr d_getnbyaddr
10455 eval $inlibc
10456
10457 : see if getnetbyname exists
10458 set getnetbyname d_getnbyname
10459 eval $inlibc
10460
10461 : see if getnetent exists
10462 set getnetent d_getnent
10463 eval $inlibc
10464
10465 : see if prototypes for various getnetxxx netdb.h functions are available
10466 echo " "
10467 set d_getnetprotos getnetent $i_netdb netdb.h
10468 eval $hasproto
10469
10470 : see if getpagesize exists
10471 set getpagesize d_getpagsz
10472 eval $inlibc
10473
10474
10475 : see if getprotobyname exists
10476 set getprotobyname d_getpbyname
10477 eval $inlibc
10478
10479 : see if getprotobynumber exists
10480 set getprotobynumber d_getpbynumber
10481 eval $inlibc
10482
10483 : see if getprotoent exists
10484 set getprotoent d_getpent
10485 eval $inlibc
10486
10487 : see if getpgid exists
10488 set getpgid d_getpgid
10489 eval $inlibc
10490
10491 : see if getpgrp2 exists
10492 set getpgrp2 d_getpgrp2
10493 eval $inlibc
10494
10495 : see if getppid exists
10496 set getppid d_getppid
10497 eval $inlibc
10498
10499 : see if getpriority exists
10500 set getpriority d_getprior
10501 eval $inlibc
10502
10503 : see if prototypes for various getprotoxxx netdb.h functions are available
10504 echo " "
10505 set d_getprotoprotos getprotoent $i_netdb netdb.h
10506 eval $hasproto
10507
10508 : see if getprpwnam exists
10509 set getprpwnam d_getprpwnam
10510 eval $inlibc
10511
10512 : see if getpwent exists
10513 set getpwent d_getpwent
10514 eval $inlibc
10515
10516
10517 : see if getservbyname exists
10518 set getservbyname d_getsbyname
10519 eval $inlibc
10520
10521 : see if getservbyport exists
10522 set getservbyport d_getsbyport
10523 eval $inlibc
10524
10525 : see if getservent exists
10526 set getservent d_getsent
10527 eval $inlibc
10528
10529 : see if prototypes for various getservxxx netdb.h functions are available
10530 echo " "
10531 set d_getservprotos getservent $i_netdb netdb.h
10532 eval $hasproto
10533
10534 : see if getspnam exists
10535 set getspnam d_getspnam
10536 eval $inlibc
10537
10538 : see if gettimeofday or ftime exists
10539 set gettimeofday d_gettimeod
10540 eval $inlibc
10541 case "$d_gettimeod" in
10542 "$undef")
10543         set ftime d_ftime 
10544         eval $inlibc
10545         ;;
10546 *)
10547         val="$undef"; set d_ftime; eval $setvar
10548         ;;
10549 esac
10550 case "$d_gettimeod$d_ftime" in
10551 "$undef$undef")
10552         echo " "
10553         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10554         ;;
10555 esac
10556
10557 : see if this is an grp system
10558 set grp.h i_grp
10559 eval $inhdr
10560
10561 case "$i_grp" in
10562 $define)
10563         xxx=`./findhdr grp.h`
10564         $cppstdin $cppflags $cppminus < $xxx >$$.h
10565
10566         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10567                 val="$define"
10568         else
10569                 val="$undef"
10570         fi
10571         set d_grpasswd
10572         eval $setvar
10573
10574         $rm -f $$.h
10575         ;;
10576 *)
10577         val="$undef";
10578         set d_grpasswd; eval $setvar
10579         ;;
10580 esac
10581
10582 : see if hasmntopt exists
10583 set hasmntopt d_hasmntopt
10584 eval $inlibc
10585
10586 : see if this is a netinet/in.h or sys/in.h system
10587 set netinet/in.h i_niin sys/in.h i_sysin
10588 eval $inhdr
10589
10590 : see if arpa/inet.h has to be included
10591 set arpa/inet.h i_arpainet
10592 eval $inhdr
10593
10594 : see if htonl --and friends-- exists
10595 val=''
10596 set htonl val
10597 eval $inlibc
10598
10599 : Maybe they are macros.
10600 case "$val" in
10601 $undef)
10602         $cat >htonl.c <<EOM
10603 #include <stdio.h>
10604 #include <sys/types.h>
10605 #$i_niin I_NETINET_IN
10606 #$i_sysin I_SYS_IN
10607 #$i_arpainet I_ARPA_INET
10608 #ifdef I_NETINET_IN
10609 #include <netinet/in.h>
10610 #endif
10611 #ifdef I_SYS_IN
10612 #include <sys/in.h>
10613 #endif
10614 #ifdef I_ARPA_INET
10615 #include <arpa/inet.h>
10616 #endif
10617 #ifdef htonl
10618 printf("Defined as a macro.");
10619 #endif
10620 EOM
10621         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10622         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10623                 val="$define"
10624                 echo "But it seems to be defined as a macro." >&4
10625         fi
10626         $rm -f htonl.?
10627         ;;
10628 esac
10629 set d_htonl
10630 eval $setvar
10631
10632 : index or strchr
10633 echo " "
10634 if set index val -f; eval $csym; $val; then
10635         if set strchr val -f d_strchr; eval $csym; $val; then
10636                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10637                         val="$define"
10638                         vali="$undef"
10639                         echo "strchr() found." >&4
10640                 else
10641                         val="$undef"
10642                         vali="$define"
10643                         echo "index() found." >&4
10644                 fi
10645         else
10646                 val="$undef"
10647                 vali="$define"
10648                 echo "index() found." >&4
10649         fi
10650 else
10651         if set strchr val -f d_strchr; eval $csym; $val; then
10652                 val="$define"
10653                 vali="$undef"
10654                 echo "strchr() found." >&4
10655         else
10656                 echo "No index() or strchr() found!" >&4
10657                 val="$undef"
10658                 vali="$undef"
10659         fi
10660 fi
10661 set d_strchr; eval $setvar
10662 val="$vali"
10663 set d_index; eval $setvar
10664
10665 : check whether inet_aton exists
10666 set inet_aton d_inetaton
10667 eval $inlibc
10668
10669 : Look for isascii
10670 echo " "
10671 $cat >isascii.c <<'EOCP'
10672 #include <stdio.h>
10673 #include <ctype.h>
10674 int main() {
10675         int c = 'A';
10676         if (isascii(c))
10677                 exit(0);
10678         else
10679                 exit(1);
10680 }
10681 EOCP
10682 set isascii
10683 if eval $compile; then
10684         echo "isascii() found." >&4
10685         val="$define"
10686 else
10687         echo "isascii() NOT found." >&4
10688         val="$undef"
10689 fi
10690 set d_isascii
10691 eval $setvar
10692 $rm -f isascii*
10693
10694 : see if isfinite exists
10695 set isfinite d_isfinite
10696 eval $inlibc
10697
10698 : see if isinf exists
10699 set isinf d_isinf
10700 eval $inlibc
10701
10702 : see if isnan exists
10703 set isnan d_isnan
10704 eval $inlibc
10705
10706 : see if isnanl exists
10707 set isnanl d_isnanl
10708 eval $inlibc
10709
10710 : see if killpg exists
10711 set killpg d_killpg
10712 eval $inlibc
10713
10714 : see if lchown exists
10715 echo " "
10716 $cat > try.c <<'EOCP'
10717 /* System header to define __stub macros and hopefully few prototypes,
10718     which can conflict with char lchown(); below.  */
10719 #include <assert.h>
10720 /* Override any gcc2 internal prototype to avoid an error.  */
10721 /* We use char because int might match the return type of a gcc2
10722    builtin and then its argument prototype would still apply.  */
10723 char lchown();
10724 int main() {
10725     /*  The GNU C library defines this for functions which it implements
10726         to always fail with ENOSYS.  Some functions are actually named
10727         something starting with __ and the normal name is an alias.  */
10728 #if defined (__stub_lchown) || defined (__stub___lchown)
10729 choke me
10730 #else
10731 lchown();
10732 #endif
10733 ; return 0; }
10734 EOCP
10735 set try
10736 if eval $compile; then
10737     $echo "lchown() found." >&4
10738     val="$define"
10739 else
10740     $echo "lchown() NOT found." >&4
10741     val="$undef"
10742 fi
10743 set d_lchown
10744 eval $setvar
10745
10746 : See if number of significant digits in a double precision number is known
10747 echo " "
10748 $cat >ldbl_dig.c <<EOM
10749 #$i_limits I_LIMITS
10750 #$i_float I_FLOAT
10751 #ifdef I_LIMITS
10752 #include <limits.h>
10753 #endif
10754 #ifdef I_FLOAT
10755 #include <float.h>
10756 #endif
10757 #ifdef LDBL_DIG
10758 printf("Contains LDBL_DIG");
10759 #endif
10760 EOM
10761 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10762 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10763         echo "LDBL_DIG found." >&4
10764         val="$define"
10765 else
10766         echo "LDBL_DIG NOT found." >&4
10767         val="$undef"
10768 fi
10769 $rm -f ldbl_dig.?
10770 set d_ldbl_dig
10771 eval $setvar
10772
10773 : see if link exists
10774 set link d_link
10775 eval $inlibc
10776
10777 : see if localeconv exists
10778 set localeconv d_locconv
10779 eval $inlibc
10780
10781 : see if lockf exists
10782 set lockf d_lockf
10783 eval $inlibc
10784
10785 : see if prototype for lseek is available
10786 echo " "
10787 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10788 eval $hasproto
10789
10790 : see if lstat exists
10791 set lstat d_lstat
10792 eval $inlibc
10793
10794 : see if madvise exists
10795 set madvise d_madvise
10796 eval $inlibc
10797
10798 : see if mblen exists
10799 set mblen d_mblen
10800 eval $inlibc
10801
10802 : see if mbstowcs exists
10803 set mbstowcs d_mbstowcs
10804 eval $inlibc
10805
10806 : see if mbtowc exists
10807 set mbtowc d_mbtowc
10808 eval $inlibc
10809
10810 : see if memchr exists
10811 set memchr d_memchr
10812 eval $inlibc
10813
10814 : see if memcmp exists
10815 set memcmp d_memcmp
10816 eval $inlibc
10817
10818 : see if memcpy exists
10819 set memcpy d_memcpy
10820 eval $inlibc
10821
10822 : see if memmove exists
10823 set memmove d_memmove
10824 eval $inlibc
10825
10826 : see if memset exists
10827 set memset d_memset
10828 eval $inlibc
10829
10830 : see if mkdir exists
10831 set mkdir d_mkdir
10832 eval $inlibc
10833
10834 : see if mkdtemp exists
10835 set mkdtemp d_mkdtemp
10836 eval $inlibc
10837
10838 : see if mkfifo exists
10839 set mkfifo d_mkfifo
10840 eval $inlibc
10841
10842 : see if mkstemp exists
10843 set mkstemp d_mkstemp
10844 eval $inlibc
10845
10846 : see if mkstemps exists
10847 set mkstemps d_mkstemps
10848 eval $inlibc
10849
10850 : see if mktime exists
10851 set mktime d_mktime
10852 eval $inlibc
10853
10854 : see if this is a sys/mman.h system
10855 set sys/mman.h i_sysmman
10856 eval $inhdr
10857
10858 : see if mmap exists
10859 set mmap d_mmap
10860 eval $inlibc
10861 : see what shmat returns
10862 : default to something harmless
10863 mmaptype='void *'
10864 case "$i_sysmman$d_mmap" in
10865 "$define$define")
10866         $cat >mmap.c <<'END'
10867 #include <sys/mman.h>
10868 void *mmap();
10869 END
10870         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10871                 mmaptype='void *'
10872         else
10873                 mmaptype='caddr_t'
10874         fi
10875         echo "and it returns ($mmaptype)." >&4
10876         ;;
10877 esac
10878
10879
10880
10881 : see if modfl exists
10882 set modfl d_modfl
10883 eval $inlibc
10884
10885 d_modfl_pow32_bug="$undef"
10886
10887 case "$d_longdbl$d_modfl" in
10888 $define$define)
10889         $cat <<EOM
10890 Checking to see whether your modfl() is okay for large values...
10891 EOM
10892 $cat >try.c <<EOCP
10893 #include <math.h> 
10894 #include <stdio.h>
10895 int main() {
10896     long double nv = 4294967303.15;
10897     long double v, w;
10898     v = modfl(nv, &w);         
10899 #ifdef __GLIBC__
10900     printf("glibc");
10901 #endif
10902     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10903     return 0;
10904 }
10905 EOCP
10906         case "$osname:$gccversion" in
10907         aix:)   saveccflags="$ccflags"
10908                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10909         esac
10910         set try
10911         if eval $compile; then
10912                 foo=`$run ./try`
10913                 case "$foo" in
10914                 *" 4294967303.150000 1.150000 4294967302.000000")
10915                         echo >&4 "Your modfl() is broken for large values."
10916                         d_modfl_pow32_bug="$define"
10917                         case "$foo" in
10918                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10919                         ;;
10920                         esac
10921                         ;;
10922                 *" 4294967303.150000 0.150000 4294967303.000000")
10923                         echo >&4 "Your modfl() seems okay for large values."
10924                         ;;
10925                 *)      echo >&4 "I don't understand your modfl() at all."
10926                         d_modfl="$undef"
10927                         ;;
10928                 esac
10929                 $rm -f try.* try core core.try.*
10930         else
10931                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10932                 d_modfl="$undef"
10933         fi
10934         case "$osname:$gccversion" in
10935         aix:)   ccflags="$saveccflags" ;; # restore
10936         esac
10937         ;;
10938 esac
10939
10940 : see if mprotect exists
10941 set mprotect d_mprotect
10942 eval $inlibc
10943
10944 : see if msgctl exists
10945 set msgctl d_msgctl
10946 eval $inlibc
10947
10948 : see if msgget exists
10949 set msgget d_msgget
10950 eval $inlibc
10951
10952 : see if msgsnd exists
10953 set msgsnd d_msgsnd
10954 eval $inlibc
10955
10956 : see if msgrcv exists
10957 set msgrcv d_msgrcv
10958 eval $inlibc
10959
10960 : see how much of the 'msg*(2)' library is present.
10961 h_msg=true
10962 echo " "
10963 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10964 *"$undef"*) h_msg=false;;
10965 esac
10966 case "$osname" in
10967 freebsd)
10968     case "`ipcs 2>&1`" in
10969     "SVID messages"*"not configured"*)
10970         echo "Your $osname does not have the msg*(2) configured." >&4
10971         h_msg=false
10972         val="$undef"
10973         set msgctl d_msgctl
10974         eval $setvar
10975         set msgget d_msgget
10976         eval $setvar
10977         set msgsnd d_msgsnd
10978         eval $setvar
10979         set msgrcv d_msgrcv
10980         eval $setvar
10981         ;;
10982     esac
10983     ;;
10984 esac
10985 : we could also check for sys/ipc.h ...
10986 if $h_msg && $test `./findhdr sys/msg.h`; then
10987         echo "You have the full msg*(2) library." >&4
10988         val="$define"
10989 else
10990         echo "You don't have the full msg*(2) library." >&4
10991         val="$undef"
10992 fi
10993 set d_msg
10994 eval $setvar
10995
10996
10997 echo " "
10998 echo "Checking to see if your system supports struct msghdr..." >&4
10999 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11000 eval $hasstruct
11001 case "$d_msghdr_s" in
11002 "$define")      echo "Yes, it does."   ;;
11003 *)              echo "No, it doesn't." ;;
11004 esac
11005
11006
11007 : see if msync exists
11008 set msync d_msync
11009 eval $inlibc
11010
11011 : see if munmap exists
11012 set munmap d_munmap
11013 eval $inlibc
11014
11015 : see if nice exists
11016 set nice d_nice
11017 eval $inlibc
11018
11019 : see if this is a langinfo.h system
11020 set langinfo.h i_langinfo
11021 eval $inhdr
11022
11023 : see if nl_langinfo exists
11024 set nl_langinfo d_nl_langinfo
11025 eval $inlibc
11026
11027 : check for length of character
11028 echo " "
11029 case "$charsize" in
11030 '')
11031         echo "Checking to see how big your characters are (hey, you never know)..." >&4
11032         $cat >try.c <<'EOCP'
11033 #include <stdio.h>
11034 int main()
11035 {
11036     printf("%d\n", (int)sizeof(char));
11037     exit(0);
11038 }
11039 EOCP
11040         set try
11041         if eval $compile_ok; then
11042                 dflt=`$run ./try`
11043         else
11044                 dflt='1'
11045                 echo "(I can't seem to compile the test program.  Guessing...)"
11046         fi
11047         ;;
11048 *)
11049         dflt="$charsize"
11050         ;;
11051 esac
11052 rp="What is the size of a character (in bytes)?"
11053 . ./myread
11054 charsize="$ans"
11055 $rm -f try.c try
11056
11057 : check for volatile keyword
11058 echo " "
11059 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11060 $cat >try.c <<'EOCP'
11061 int main()
11062 {
11063         typedef struct _goo_struct goo_struct;
11064         goo_struct * volatile goo = ((goo_struct *)0);
11065         struct _goo_struct {
11066                 long long_int;
11067                 int reg_int;
11068                 char char_var;
11069         };
11070         typedef unsigned short foo_t;
11071         char *volatile foo;
11072         volatile int bar;
11073         volatile foo_t blech;
11074         foo = foo;
11075 }
11076 EOCP
11077 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11078         val="$define"
11079         echo "Yup, it does."
11080 else
11081         val="$undef"
11082         echo "Nope, it doesn't."
11083 fi
11084 set d_volatile
11085 eval $setvar
11086 $rm -f try.*
11087
11088
11089 echo " "
11090 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11091
11092 case "$use64bitint:$d_quad:$quadtype" in
11093 define:define:?*)
11094         ivtype="$quadtype"
11095         uvtype="$uquadtype"
11096         ivsize=8
11097         uvsize=8
11098         ;;
11099 *)      ivtype="long"
11100         uvtype="unsigned long"
11101         ivsize=$longsize
11102         uvsize=$longsize
11103         ;;
11104 esac
11105
11106 case "$uselongdouble:$d_longdbl" in
11107 define:define)
11108         nvtype="long double"
11109         nvsize=$longdblsize
11110         ;;
11111 *)      nvtype=double
11112         nvsize=$doublesize
11113         ;;
11114 esac
11115
11116 $echo "(IV will be "$ivtype", $ivsize bytes)"
11117 $echo "(UV will be "$uvtype", $uvsize bytes)"
11118 $echo "(NV will be "$nvtype", $nvsize bytes)"
11119
11120 $cat >try.c <<EOCP
11121 #$i_inttypes I_INTTYPES
11122 #ifdef I_INTTYPES
11123 #include <inttypes.h>
11124 #endif
11125 #include <stdio.h>
11126 int main() {
11127 #ifdef INT8
11128    int8_t i =  INT8_MAX;
11129   uint8_t u = UINT8_MAX;
11130   printf("int8_t\n");
11131 #endif
11132 #ifdef INT16
11133    int16_t i =  INT16_MAX;
11134   uint16_t i = UINT16_MAX;
11135   printf("int16_t\n");
11136 #endif
11137 #ifdef INT32
11138    int32_t i =  INT32_MAX;
11139   uint32_t u = UINT32_MAX;
11140   printf("int32_t\n");
11141 #endif
11142 }
11143 EOCP
11144
11145 case "$i8type" in
11146 '')     case "$charsize" in
11147         1)      i8type=char
11148                 u8type="unsigned char"
11149                 i8size=$charsize
11150                 u8size=$charsize
11151                 ;;
11152         esac
11153         ;;
11154 esac
11155 case "$i8type" in
11156 '')     set try -DINT8
11157         if eval $compile; then
11158                 case "`$run ./try`" in
11159                 int8_t) i8type=int8_t
11160                         u8type=uint8_t
11161                         i8size=1
11162                         u8size=1
11163                         ;;
11164                 esac
11165         fi
11166         ;;
11167 esac
11168 case "$i8type" in
11169 '')     if $test $charsize -ge 1; then
11170                 i8type=char
11171                 u8type="unsigned char"
11172                 i8size=$charsize
11173                 u8size=$charsize
11174         fi
11175         ;;
11176 esac
11177
11178 case "$i16type" in
11179 '')     case "$shortsize" in
11180         2)      i16type=short
11181                 u16type="unsigned short"
11182                 i16size=$shortsize
11183                 u16size=$shortsize
11184                 ;;
11185         esac
11186         ;;
11187 esac
11188 case "$i16type" in
11189 '')     set try -DINT16
11190         if eval $compile; then
11191                 case "`$run ./try`" in
11192                 int16_t)
11193                         i16type=int16_t
11194                         u16type=uint16_t
11195                         i16size=2
11196                         u16size=2
11197                         ;;
11198                 esac
11199         fi
11200         ;;
11201 esac
11202 case "$i16type" in
11203 '')     if $test $shortsize -ge 2; then
11204                 i16type=short
11205                 u16type="unsigned short"
11206                 i16size=$shortsize
11207                 u16size=$shortsize
11208         fi
11209         ;;
11210 esac
11211
11212 case "$i32type" in
11213 '')     case "$longsize" in
11214         4)      i32type=long
11215                 u32type="unsigned long"
11216                 i32size=$longsize
11217                 u32size=$longsize
11218                 ;;
11219         *)      case "$intsize" in
11220                 4)      i32type=int
11221                         u32type="unsigned int"
11222                         i32size=$intsize
11223                         u32size=$intsize
11224                         ;;
11225                 esac
11226                 ;;
11227         esac
11228         ;;
11229 esac
11230 case "$i32type" in
11231 '')     set try -DINT32
11232         if eval $compile; then
11233                 case "`$run ./try`" in
11234                 int32_t)
11235                         i32type=int32_t
11236                         u32type=uint32_t
11237                         i32size=4
11238                         u32size=4
11239                         ;;
11240                 esac
11241         fi
11242         ;;
11243 esac
11244 case "$i32type" in
11245 '')     if $test $intsize -ge 4; then
11246                 i32type=int
11247                 u32type="unsigned int"
11248                 i32size=$intsize
11249                 u32size=$intsize
11250         fi
11251         ;;
11252 esac
11253
11254 case "$i64type" in
11255 '')     case "$d_quad:$quadtype" in
11256         define:?*)
11257                 i64type="$quadtype"
11258                 u64type="$uquadtype"
11259                 i64size=8
11260                 u64size=8
11261                 ;;
11262         esac
11263         ;;
11264 esac
11265
11266 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11267 : volatile so that the compiler has to store it out to memory.
11268 if test X"$d_volatile" = X"$define"; then
11269         volatile=volatile
11270 fi
11271 $cat <<EOP >try.c
11272 #include <stdio.h>
11273 #include <sys/types.h>
11274 #include <signal.h>
11275 #ifdef SIGFPE
11276 $volatile int bletched = 0;
11277 $signal_t blech(s) int s; { bletched = 1; }
11278 #endif
11279 int main() {
11280     $uvtype u = 0;
11281     $nvtype d;
11282     int     n = 8 * $uvsize;
11283     int     i;
11284 #ifdef SIGFPE
11285     signal(SIGFPE, blech);
11286 #endif
11287
11288     for (i = 0; i < n; i++) {
11289       u = u << 1 | ($uvtype)1;
11290       d = ($nvtype)u;
11291       if (($uvtype)d != u)
11292         break;
11293       if (d <= 0)
11294         break;
11295       d = ($nvtype)(u - 1);
11296       if (($uvtype)d != (u - 1))
11297         break;
11298 #ifdef SIGFPE
11299       if (bletched) {
11300         break;
11301 #endif
11302       } 
11303     }
11304     printf("%d\n", ((i == n) ? -n : i));
11305     exit(0);
11306 }
11307 EOP
11308 set try
11309
11310 d_nv_preserves_uv="$undef"
11311 if eval $compile; then
11312         d_nv_preserves_uv_bits="`$run ./try`"
11313 fi
11314 case "$d_nv_preserves_uv_bits" in
11315 \-[1-9]*)       
11316         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11317         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11318         d_nv_preserves_uv="$define"
11319         ;;
11320 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11321         d_nv_preserves_uv="$undef" ;;
11322 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11323         d_nv_preserves_uv_bits="$undef" ;;
11324 esac
11325
11326 $rm -f try.* try
11327
11328
11329 : check for off64_t
11330 echo " "
11331 echo "Checking to see if you have off64_t..." >&4
11332 $cat >try.c <<EOCP
11333 #include <sys/types.h>
11334 #include <unistd.h>
11335 int main() { off64_t x = 7; }
11336 EOCP
11337 set try
11338 if eval $compile; then
11339         val="$define"
11340         echo "You have off64_t."
11341 else
11342         val="$undef"
11343         echo "You do not have off64_t."
11344         case "$lseeksize" in
11345         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11346         esac
11347 fi
11348 $rm -f try.* try
11349 set d_off64_t
11350 eval $setvar
11351
11352 : see if POSIX threads are available
11353 set pthread.h i_pthread
11354 eval $inhdr
11355
11356
11357
11358
11359 : how to create joinable pthreads
11360 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11361         echo " "
11362         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11363         $cat >try.c <<'EOCP'
11364 #include <pthread.h>
11365 int main() {
11366     int detachstate = JOINABLE;
11367 }
11368 EOCP
11369         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11370         if eval $compile; then
11371                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11372                 val="$undef" # Yes, undef.
11373                 set d_old_pthread_create_joinable
11374                 eval $setvar
11375                 val=""
11376                 set old_pthread_create_joinable
11377                 eval $setvar
11378         else
11379                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11380                 if eval $compile; then
11381                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11382                         val="$define"
11383                         set d_old_pthread_create_joinable
11384                         eval $setvar
11385                         val=PTHREAD_CREATE_UNDETACHED
11386                         set old_pthread_create_joinable
11387                         eval $setvar
11388                 else            
11389                         set try -DJOINABLE=__UNDETACHED
11390                         if eval $compile; then
11391                                 echo "You seem to use __UNDETACHED." >&4
11392                                 val="$define"
11393                                 set d_old_pthread_create_joinable
11394                                 eval $setvar
11395                                 val=__UNDETACHED
11396                                 set old_pthread_create_joinable
11397                                 eval $setvar
11398                         else
11399                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11400                                 val="$define"
11401                                 set d_old_pthread_create_joinable
11402                                 eval $setvar
11403                                 val=0
11404                                 set old_pthread_create_joinable
11405                                 eval $setvar
11406                         fi
11407                 fi
11408         fi
11409         $rm -f try try.*
11410 else
11411     d_old_pthread_create_joinable="$undef"
11412     old_pthread_create_joinable=""
11413 fi
11414
11415 : see if pause exists
11416 set pause d_pause
11417 eval $inlibc
11418
11419 : see if pipe exists
11420 set pipe d_pipe
11421 eval $inlibc
11422
11423 : see if poll exists
11424 set poll d_poll
11425 eval $inlibc
11426
11427 : see if pthread_atfork exists
11428 set pthread_atfork d_pthread_atfork
11429 eval $inlibc
11430
11431
11432 : see whether the various POSIXish _yields exist
11433 $cat >try.c <<EOP
11434 #include <pthread.h>
11435 #include <stdio.h>
11436 int main() {
11437 #ifdef SCHED_YIELD
11438         sched_yield();
11439 #else
11440 #ifdef PTHREAD_YIELD
11441         pthread_yield();
11442 #else
11443 #ifdef PTHREAD_YIELD_NULL
11444         pthread_yield(NULL);
11445 #endif
11446 #endif
11447 #endif
11448 }
11449 EOP
11450 : see if sched_yield exists
11451 set try -DSCHED_YIELD
11452 if eval $compile; then
11453     val="$define"
11454     sched_yield='sched_yield()'
11455 else
11456     val="$undef"
11457 fi
11458 case "$usethreads" in
11459 $define)
11460         case "$val" in
11461         $define) echo 'sched_yield() found.' >&4        ;;
11462         *)       echo 'sched_yield() NOT found.' >&4    ;;
11463         esac
11464 esac
11465 set d_sched_yield
11466 eval $setvar
11467
11468 : see if pthread_yield exists
11469 set try -DPTHREAD_YIELD
11470 if eval $compile; then
11471     val="$define"
11472     case "$sched_yield" in
11473     '') sched_yield='pthread_yield()' ;;
11474     esac
11475 else
11476     set try -DPTHREAD_YIELD_NULL
11477     if eval $compile; then
11478         val="$define"
11479         case "$sched_yield" in
11480         '') sched_yield='pthread_yield(NULL)' ;;
11481         esac
11482     else
11483         val="$undef"
11484     fi
11485 fi
11486 case "$usethreads" in
11487 $define)
11488         case "$val" in
11489         $define) echo 'pthread_yield() found.' >&4      ;;
11490         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11491         esac
11492         ;;
11493 esac
11494 set d_pthread_yield
11495 eval $setvar
11496
11497 case "$sched_yield" in
11498 '') sched_yield=undef ;;
11499 esac
11500
11501 $rm -f try try.*
11502
11503 : see if this is a pwd.h system
11504 set pwd.h i_pwd
11505 eval $inhdr
11506
11507 case "$i_pwd" in
11508 $define)
11509         xxx=`./findhdr pwd.h`
11510         $cppstdin $cppflags $cppminus < $xxx >$$.h
11511
11512         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11513                 val="$define"
11514         else
11515                 val="$undef"
11516         fi
11517         set d_pwquota
11518         eval $setvar
11519
11520         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11521                 val="$define"
11522         else
11523                 val="$undef"
11524         fi
11525         set d_pwage
11526         eval $setvar
11527
11528         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11529                 val="$define"
11530         else
11531                 val="$undef"
11532         fi
11533         set d_pwchange
11534         eval $setvar
11535
11536         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11537                 val="$define"
11538         else
11539                 val="$undef"
11540         fi
11541         set d_pwclass
11542         eval $setvar
11543
11544         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11545                 val="$define"
11546         else
11547                 val="$undef"
11548         fi
11549         set d_pwexpire
11550         eval $setvar
11551
11552         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11553                 val="$define"
11554         else
11555                 val="$undef"
11556         fi
11557         set d_pwcomment
11558         eval $setvar
11559
11560         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11561                 val="$define"
11562         else
11563                 val="$undef"
11564         fi
11565         set d_pwgecos
11566         eval $setvar
11567
11568         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11569                 val="$define"
11570         else
11571                 val="$undef"
11572         fi
11573         set d_pwpasswd
11574         eval $setvar
11575
11576         $rm -f $$.h
11577         ;;
11578 *)
11579         val="$undef"; 
11580         set d_pwquota; eval $setvar
11581         set d_pwage; eval $setvar
11582         set d_pwchange; eval $setvar
11583         set d_pwclass; eval $setvar
11584         set d_pwexpire; eval $setvar
11585         set d_pwcomment; eval $setvar
11586         set d_pwgecos; eval $setvar
11587         set d_pwpasswd; eval $setvar
11588         ;;
11589 esac
11590
11591 : see if readdir and friends exist
11592 set readdir d_readdir
11593 eval $inlibc
11594 set seekdir d_seekdir
11595 eval $inlibc
11596 set telldir d_telldir
11597 eval $inlibc
11598 set rewinddir d_rewinddir
11599 eval $inlibc
11600
11601 : see if readlink exists
11602 set readlink d_readlink
11603 eval $inlibc
11604
11605 : see if readv exists
11606 set readv d_readv
11607 eval $inlibc
11608
11609 : see if recvmsg exists
11610 set recvmsg d_recvmsg
11611 eval $inlibc
11612
11613 : see if rename exists
11614 set rename d_rename
11615 eval $inlibc
11616
11617 : see if rmdir exists
11618 set rmdir d_rmdir
11619 eval $inlibc
11620
11621 : see if memory.h is available.
11622 val=''
11623 set memory.h val
11624 eval $inhdr
11625
11626 : See if it conflicts with string.h
11627 case "$val" in
11628 $define)
11629         case "$strings" in
11630         '') ;;
11631         *)
11632                 $cppstdin $cppflags $cppminus < $strings > mem.h
11633                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11634                         echo " "
11635                         echo "We won't be including <memory.h>."
11636                         val="$undef"
11637                 fi
11638                 $rm -f mem.h
11639                 ;;
11640         esac
11641 esac
11642 set i_memory
11643 eval $setvar
11644
11645 : can bcopy handle overlapping blocks?
11646 echo " "
11647 val="$undef"
11648 case "$d_memmove" in
11649 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11650 *)      case "$d_bcopy" in
11651         "$define")
11652                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11653                 $cat >try.c <<EOCP
11654 #$i_memory I_MEMORY
11655 #$i_stdlib I_STDLIB
11656 #$i_string I_STRING
11657 #$i_unistd I_UNISTD
11658 EOCP
11659         $cat >>try.c <<'EOCP'
11660 #include <stdio.h>
11661 #ifdef I_MEMORY
11662 #  include <memory.h>
11663 #endif
11664 #ifdef I_STDLIB
11665 #  include <stdlib.h>
11666 #endif
11667 #ifdef I_STRING
11668 #  include <string.h>
11669 #else
11670 #  include <strings.h>
11671 #endif
11672 #ifdef I_UNISTD
11673 #  include <unistd.h>  /* Needed for NetBSD */
11674 #endif
11675 int main()
11676 {
11677 char buf[128], abc[128];
11678 char *b;
11679 int len;
11680 int off;
11681 int align;
11682
11683 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11684    try to store the string in read-only memory. */
11685 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11686
11687 for (align = 7; align >= 0; align--) {
11688         for (len = 36; len; len--) {
11689                 b = buf+align;
11690                 bcopy(abc, b, len);
11691                 for (off = 1; off <= len; off++) {
11692                         bcopy(b, b+off, len);
11693                         bcopy(b+off, b, len);
11694                         if (bcmp(b, abc, len))
11695                                 exit(1);
11696                 }
11697         }
11698 }
11699 exit(0);
11700 }
11701 EOCP
11702                 set try
11703                 if eval $compile_ok; then
11704                         if ./try 2>/dev/null; then
11705                                 echo "Yes, it can."
11706                                 val="$define"
11707                         else
11708                                 echo "It can't, sorry."
11709                         fi
11710                 else
11711                         echo "(I can't compile the test program, so we'll assume not...)"
11712                 fi
11713                 ;;
11714         esac
11715         $rm -f try.* try core
11716         ;;
11717 esac
11718 set d_safebcpy
11719 eval $setvar
11720
11721 : can memcpy handle overlapping blocks?
11722 echo " "
11723 val="$undef"
11724 case "$d_memmove" in
11725 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11726 *)      case "$d_memcpy" in
11727         "$define")
11728                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11729                 $cat >try.c <<EOCP
11730 #$i_memory I_MEMORY
11731 #$i_stdlib I_STDLIB
11732 #$i_string I_STRING
11733 #$i_unistd I_UNISTD
11734 EOCP
11735         $cat >>try.c <<'EOCP'
11736 #include <stdio.h>
11737 #ifdef I_MEMORY
11738 #  include <memory.h>
11739 #endif
11740 #ifdef I_STDLIB
11741 #  include <stdlib.h>
11742 #endif
11743 #ifdef I_STRING
11744 #  include <string.h>
11745 #else
11746 #  include <strings.h>
11747 #endif
11748 #ifdef I_UNISTD
11749 #  include <unistd.h>  /* Needed for NetBSD */
11750 #endif
11751 int main()
11752 {
11753 char buf[128], abc[128];
11754 char *b;
11755 int len;
11756 int off;
11757 int align;
11758
11759 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11760    try to store the string in read-only memory. */
11761 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11762
11763 for (align = 7; align >= 0; align--) {
11764         for (len = 36; len; len--) {
11765                 b = buf+align;
11766                 memcpy(b, abc, len);
11767                 for (off = 1; off <= len; off++) {
11768                         memcpy(b+off, b, len);
11769                         memcpy(b, b+off, len);
11770                         if (memcmp(b, abc, len))
11771                                 exit(1);
11772                 }
11773         }
11774 }
11775 exit(0);
11776 }
11777 EOCP
11778                 set try
11779                 if eval $compile_ok; then
11780                         if ./try 2>/dev/null; then
11781                                 echo "Yes, it can."
11782                                 val="$define"
11783                         else
11784                                 echo "It can't, sorry."
11785                         fi
11786                 else
11787                         echo "(I can't compile the test program, so we'll assume not...)"
11788                 fi
11789                 ;;
11790         esac
11791         $rm -f try.* try core
11792         ;;
11793 esac
11794 set d_safemcpy
11795 eval $setvar
11796
11797 : can memcmp be trusted to compare relative magnitude?
11798 val="$undef"
11799 case "$d_memcmp" in
11800 "$define")
11801         echo " "
11802         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11803         $cat >try.c <<EOCP
11804 #$i_memory I_MEMORY
11805 #$i_stdlib I_STDLIB
11806 #$i_string I_STRING
11807 #$i_unistd I_UNISTD
11808 EOCP
11809         $cat >>try.c <<'EOCP'
11810 #include <stdio.h>
11811 #ifdef I_MEMORY
11812 #  include <memory.h>
11813 #endif
11814 #ifdef I_STDLIB
11815 #  include <stdlib.h>
11816 #endif
11817 #ifdef I_STRING
11818 #  include <string.h>
11819 #else
11820 #  include <strings.h>
11821 #endif
11822 #ifdef I_UNISTD
11823 #  include <unistd.h>  /* Needed for NetBSD */
11824 #endif
11825 int main()
11826 {
11827 char a = -1;
11828 char b = 0;
11829 if ((a < b) && memcmp(&a, &b, 1) < 0)
11830         exit(1);
11831 exit(0);
11832 }
11833 EOCP
11834         set try
11835         if eval $compile_ok; then
11836                 if $run ./try 2>/dev/null; then
11837                         echo "Yes, it can."
11838                         val="$define"
11839                 else
11840                         echo "No, it can't (it uses signed chars)."
11841                 fi
11842         else
11843                 echo "(I can't compile the test program, so we'll assume not...)"
11844         fi
11845         ;;
11846 esac
11847 $rm -f try.* try core
11848 set d_sanemcmp
11849 eval $setvar
11850
11851 : see if prototype for sbrk is available
11852 echo " "
11853 set d_sbrkproto sbrk $i_unistd unistd.h
11854 eval $hasproto
11855
11856 : see if select exists
11857 set select d_select
11858 eval $inlibc
11859
11860 : see if semctl exists
11861 set semctl d_semctl
11862 eval $inlibc
11863
11864 : see if semget exists
11865 set semget d_semget
11866 eval $inlibc
11867
11868 : see if semop exists
11869 set semop d_semop
11870 eval $inlibc
11871
11872 : see how much of the 'sem*(2)' library is present.
11873 h_sem=true
11874 echo " "
11875 case "$d_semctl$d_semget$d_semop" in
11876 *"$undef"*) h_sem=false;;
11877 esac
11878 case "$osname" in
11879 freebsd)
11880     case "`ipcs 2>&1`" in
11881     "SVID messages"*"not configured"*)
11882         echo "Your $osname does not have the sem*(2) configured." >&4
11883         h_sem=false
11884         val="$undef"
11885         set semctl d_semctl
11886         eval $setvar
11887         set semget d_semget
11888         eval $setvar
11889         set semop d_semop
11890         eval $setvar
11891         ;;
11892     esac
11893     ;;
11894 esac
11895 : we could also check for sys/ipc.h ...
11896 if $h_sem && $test `./findhdr sys/sem.h`; then
11897         echo "You have the full sem*(2) library." >&4
11898         val="$define"
11899 else
11900         echo "You don't have the full sem*(2) library." >&4
11901         val="$undef"
11902 fi
11903 set d_sem
11904 eval $setvar
11905
11906 : see whether sys/sem.h defines union semun
11907 echo " "
11908 $cat > try.c <<'END'
11909 #include <sys/types.h>
11910 #include <sys/ipc.h>
11911 #include <sys/sem.h>
11912 int main () { union semun semun; semun.buf = 0; }
11913 END
11914 set try
11915 if eval $compile; then
11916     echo "You have union semun in <sys/sem.h>." >&4
11917     val="$define"
11918 else
11919     echo "You do not have union semun in <sys/sem.h>." >&4
11920     val="$undef"
11921 fi
11922 $rm -f try try.c try.h
11923 set d_union_semun
11924 eval $setvar
11925
11926 : see how to do semctl IPC_STAT
11927 case "$d_sem" in
11928 $define)
11929     : see whether semctl IPC_STAT can use union semun
11930     echo " "
11931     $cat > try.h <<END
11932 #ifndef S_IRUSR
11933 #   ifdef S_IREAD
11934 #       define S_IRUSR S_IREAD
11935 #       define S_IWUSR S_IWRITE
11936 #       define S_IXUSR S_IEXEC
11937 #   else
11938 #       define S_IRUSR 0400
11939 #       define S_IWUSR 0200
11940 #       define S_IXUSR 0100
11941 #   endif
11942 #   define S_IRGRP (S_IRUSR>>3)
11943 #   define S_IWGRP (S_IWUSR>>3)
11944 #   define S_IXGRP (S_IXUSR>>3)
11945 #   define S_IROTH (S_IRUSR>>6)
11946 #   define S_IWOTH (S_IWUSR>>6)
11947 #   define S_IXOTH (S_IXUSR>>6)
11948 #endif
11949 #ifndef S_IRWXU
11950 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11951 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11952 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11953 #endif
11954 END
11955
11956     $cat > try.c <<END
11957 #include <sys/types.h>
11958 #include <sys/ipc.h>
11959 #include <sys/sem.h>
11960 #include <sys/stat.h>
11961 #include <stdio.h>
11962 #include <errno.h>
11963 #include "try.h"
11964 #ifndef errno
11965 extern int errno;
11966 #endif
11967 #$d_union_semun HAS_UNION_SEMUN
11968 int main() {
11969     union semun
11970 #ifndef HAS_UNION_SEMUN
11971     {
11972         int val;
11973         struct semid_ds *buf;
11974         unsigned short *array;
11975     }
11976 #endif
11977     arg;
11978     int sem, st;
11979
11980 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11981     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11982     if (sem > -1) {
11983         struct semid_ds argbuf;
11984         arg.buf = &argbuf;
11985 #       ifdef IPC_STAT
11986         st = semctl(sem, 0, IPC_STAT, arg);
11987         if (st == 0)
11988             printf("semun\n");
11989         else
11990 #       endif /* IPC_STAT */
11991             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11992 #       ifdef IPC_RMID
11993         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11994 #       endif /* IPC_RMID */
11995             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11996     } else
11997 #endif /* IPC_PRIVATE && ... */
11998         printf("semget failed: errno = %d\n", errno);
11999   return 0;
12000 }
12001 END
12002     val="$undef"
12003     set try
12004     if eval $compile; then
12005         xxx=`$run ./try`
12006         case "$xxx" in
12007         semun) val="$define" ;;
12008         esac
12009     fi
12010     $rm -f try try.c
12011     set d_semctl_semun
12012     eval $setvar
12013     case "$d_semctl_semun" in
12014     $define)
12015         echo "You can use union semun for semctl IPC_STAT." >&4
12016         also='also'
12017         ;;
12018     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
12019         also=''
12020         ;;
12021     esac
12022
12023     : see whether semctl IPC_STAT can use struct semid_ds pointer
12024     $cat > try.c <<'END'
12025 #include <sys/types.h>
12026 #include <sys/ipc.h>
12027 #include <sys/sem.h>
12028 #include <sys/stat.h>
12029 #include "try.h"
12030 #include <stdio.h>
12031 #include <errno.h>
12032 #ifndef errno
12033 extern int errno;
12034 #endif
12035 int main() {
12036     struct semid_ds arg;
12037     int sem, st;
12038
12039 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
12040     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12041     if (sem > -1) {
12042 #       ifdef IPC_STAT
12043         st = semctl(sem, 0, IPC_STAT, &arg);
12044         if (st == 0)
12045             printf("semid_ds\n");
12046         else
12047 #       endif /* IPC_STAT */
12048             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12049 #       ifdef IPC_RMID
12050         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12051 #       endif /* IPC_RMID */
12052             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12053     } else
12054 #endif /* IPC_PRIVATE && ... */
12055         printf("semget failed: errno = %d\n", errno);
12056
12057     return 0;
12058 }
12059 END
12060     val="$undef"
12061     set try
12062     if eval $compile; then
12063         xxx=`$run ./try`
12064         case "$xxx" in
12065         semid_ds) val="$define" ;;
12066         esac
12067     fi
12068     $rm -f try try.c
12069     set d_semctl_semid_ds
12070     eval $setvar
12071     case "$d_semctl_semid_ds" in
12072     $define)
12073         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12074         ;;
12075     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12076         ;;
12077     esac
12078     $rm -f try.h
12079     ;;
12080 *)  val="$undef"
12081
12082     # We do not have the full sem*(2) library, so assume we can not
12083     # use either.
12084
12085     set d_semctl_semun
12086     eval $setvar
12087
12088     set d_semctl_semid_ds
12089     eval $setvar
12090     ;;
12091 esac
12092
12093 : see if sendmsg exists
12094 set sendmsg d_sendmsg
12095 eval $inlibc
12096
12097 : see if setegid exists
12098 set setegid d_setegid
12099 eval $inlibc
12100
12101 : see if seteuid exists
12102 set seteuid d_seteuid
12103 eval $inlibc
12104
12105 : see if setgrent exists
12106 set setgrent d_setgrent
12107 eval $inlibc
12108
12109 : see if sethostent exists
12110 set sethostent d_sethent
12111 eval $inlibc
12112
12113 : see if setitimer exists
12114 set setitimer d_setitimer
12115 eval $inlibc
12116
12117 : see if setlinebuf exists
12118 set setlinebuf d_setlinebuf
12119 eval $inlibc
12120
12121 : see if setlocale exists
12122 set setlocale d_setlocale
12123 eval $inlibc
12124
12125 : see if setnetent exists
12126 set setnetent d_setnent
12127 eval $inlibc
12128
12129 : see if setprotoent exists
12130 set setprotoent d_setpent
12131 eval $inlibc
12132
12133 : see if setpgid exists
12134 set setpgid d_setpgid
12135 eval $inlibc
12136
12137 : see if setpgrp2 exists
12138 set setpgrp2 d_setpgrp2
12139 eval $inlibc
12140
12141 : see if setpriority exists
12142 set setpriority d_setprior
12143 eval $inlibc
12144
12145 : see if setproctitle exists
12146 set setproctitle d_setproctitle
12147 eval $inlibc
12148
12149 : see if setpwent exists
12150 set setpwent d_setpwent
12151 eval $inlibc
12152
12153 : see if setregid exists
12154 set setregid d_setregid
12155 eval $inlibc
12156 set setresgid d_setresgid
12157 eval $inlibc
12158
12159 : see if setreuid exists
12160 set setreuid d_setreuid
12161 eval $inlibc
12162 set setresuid d_setresuid
12163 eval $inlibc
12164
12165 : see if setrgid exists
12166 set setrgid d_setrgid
12167 eval $inlibc
12168
12169 : see if setruid exists
12170 set setruid d_setruid
12171 eval $inlibc
12172
12173 : see if setservent exists
12174 set setservent d_setsent
12175 eval $inlibc
12176
12177 : see if setsid exists
12178 set setsid d_setsid
12179 eval $inlibc
12180
12181 : see if setvbuf exists
12182 set setvbuf d_setvbuf
12183 eval $inlibc
12184
12185 : see if sfio.h is available
12186 set sfio.h i_sfio
12187 eval $inhdr
12188
12189
12190 : see if sfio library is available
12191 case "$i_sfio" in
12192 $define)
12193         val=''
12194         set sfreserve val
12195         eval $inlibc
12196         ;;
12197 *)
12198         val="$undef"
12199         ;;
12200 esac
12201 : Ok, but do we want to use it.
12202 case "$val" in
12203 $define)
12204         case "$usesfio" in
12205         true|$define|[yY]*) dflt='y';;
12206         *) dflt='n';;
12207         esac
12208         echo "$package can use the sfio library, but it is experimental."
12209         case "$useperlio" in
12210         "$undef")
12211             echo "For sfio also the PerlIO abstraction layer is needed."
12212             echo "Earlier you said you wouldn't want that."
12213             ;;
12214         esac
12215         rp="You seem to have sfio available, do you want to try using it?"
12216         . ./myread
12217         case "$ans" in
12218         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12219                 useperlio="$define"
12220                 val="$define"
12221                 ;;
12222         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12223                 val="$undef"
12224                 ;;
12225         esac
12226         ;;
12227 *)      case "$usesfio" in
12228         true|$define|[yY]*)
12229                 echo "Sorry, cannot find sfio on this machine." >&4
12230                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12231                 val="$undef"
12232                 ;;
12233         esac
12234         ;;
12235 esac
12236 set d_sfio
12237 eval $setvar
12238 case "$d_sfio" in
12239 $define) usesfio='true';;
12240 *) usesfio='false';;
12241 esac
12242 case "$d_sfio" in
12243 $define) ;;
12244 *)      : Remove sfio from list of libraries to use
12245         case "$libs" in
12246         *-lsfio*)
12247                 echo "Removing unneeded -lsfio from library list" >&4
12248                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12249                 shift
12250                 libs="$*"
12251                 echo "libs = $libs" >&4
12252                 ;;
12253         esac
12254 ;;
12255 esac
12256
12257
12258 : see if shmctl exists
12259 set shmctl d_shmctl
12260 eval $inlibc
12261
12262 : see if shmget exists
12263 set shmget d_shmget
12264 eval $inlibc
12265
12266 : see if shmat exists
12267 set shmat d_shmat
12268 eval $inlibc
12269 : see what shmat returns
12270 case "$d_shmat" in
12271 "$define")
12272         $cat >shmat.c <<'END'
12273 #include <sys/shm.h>
12274 void *shmat();
12275 END
12276         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12277                 shmattype='void *'
12278         else
12279                 shmattype='char *'
12280         fi
12281         echo "and it returns ($shmattype)." >&4
12282         : see if a prototype for shmat is available
12283         xxx=`./findhdr sys/shm.h`
12284         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12285         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12286                 val="$define"
12287         else
12288                 val="$undef"
12289         fi
12290         $rm -f shmat.[co]
12291         ;;
12292 *)
12293         val="$undef"
12294         ;;
12295 esac
12296 set d_shmatprototype
12297 eval $setvar
12298
12299 : see if shmdt exists
12300 set shmdt d_shmdt
12301 eval $inlibc
12302
12303 : see how much of the 'shm*(2)' library is present.
12304 h_shm=true
12305 echo " "
12306 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12307 *"$undef"*) h_shm=false;;
12308 esac
12309 case "$osname" in
12310 freebsd)
12311     case "`ipcs 2>&1`" in
12312     "SVID shared memory"*"not configured"*)
12313         echo "Your $osname does not have the shm*(2) configured." >&4
12314         h_shm=false
12315         val="$undef"
12316         set shmctl d_shmctl
12317         evat $setvar
12318         set shmget d_shmget
12319         evat $setvar
12320         set shmat d_shmat
12321         evat $setvar
12322         set shmdt d_shmdt
12323         evat $setvar
12324         ;;
12325     esac
12326     ;;
12327 esac
12328 : we could also check for sys/ipc.h ...
12329 if $h_shm && $test `./findhdr sys/shm.h`; then
12330         echo "You have the full shm*(2) library." >&4
12331         val="$define"
12332 else
12333         echo "You don't have the full shm*(2) library." >&4
12334         val="$undef"
12335 fi
12336 set d_shm
12337 eval $setvar
12338
12339 echo " "
12340 : see if we have sigaction
12341 if set sigaction val -f d_sigaction; eval $csym; $val; then
12342         echo 'sigaction() found.' >&4
12343         $cat > try.c <<'EOP'
12344 #include <stdio.h>
12345 #include <sys/types.h>
12346 #include <signal.h>
12347 int main()
12348 {
12349     struct sigaction act, oact;
12350     act.sa_flags = 0;
12351     oact.sa_handler = 0;
12352     /* so that act and oact are used */
12353     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12354 }
12355 EOP
12356         set try
12357         if eval $compile_ok; then
12358                 val="$define"
12359         else
12360                 echo "But you don't seem to have a useable struct sigaction." >&4
12361                 val="$undef"
12362         fi
12363 else
12364         echo 'sigaction NOT found.' >&4
12365         val="$undef"
12366 fi
12367 set d_sigaction; eval $setvar
12368 $rm -f try try$_o try.c
12369
12370 : see if sigprocmask exists
12371 set sigprocmask d_sigprocmask
12372 eval $inlibc
12373
12374 : see if sigsetjmp exists
12375 echo " "
12376 case "$d_sigsetjmp" in
12377 '')
12378         $cat >try.c <<'EOP'
12379 #include <setjmp.h>
12380 sigjmp_buf env;
12381 int set = 1;
12382 int main()
12383 {
12384         if (sigsetjmp(env,1))
12385                 exit(set);
12386         set = 0;
12387         siglongjmp(env, 1);
12388         exit(1);
12389 }
12390 EOP
12391         set try
12392         if eval $compile; then
12393                 if $run ./try >/dev/null 2>&1; then
12394                         echo "POSIX sigsetjmp found." >&4
12395                         val="$define"
12396                 else
12397                         $cat >&4 <<EOM
12398 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12399 I'll ignore them.
12400 EOM
12401                         val="$undef"
12402                 fi
12403         else
12404                 echo "sigsetjmp not found." >&4
12405                 val="$undef"
12406         fi
12407         ;;
12408 *) val="$d_sigsetjmp"
12409         case "$d_sigsetjmp" in
12410         $define) echo "POSIX sigsetjmp found." >&4;;
12411         $undef) echo "sigsetjmp not found." >&4;;
12412         esac
12413         ;;
12414 esac
12415 set d_sigsetjmp
12416 eval $setvar
12417 $rm -f try.c try
12418
12419 : see if sockatmark exists
12420 set sockatmark d_sockatmark
12421 eval $inlibc
12422
12423 : see if prototype for sockatmark is available
12424 echo " "
12425 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12426 eval $hasproto
12427
12428 : see if socks5_init exists
12429 set socks5_init d_socks5_init
12430 eval $inlibc
12431
12432 : see if prototype for setresgid is available
12433 echo " "
12434 set d_sresgproto setresgid $i_unistd unistd.h
12435 eval $hasproto
12436
12437 : see if prototype for setresuid is available
12438 echo " "
12439 set d_sresuproto setresuid $i_unistd unistd.h
12440 eval $hasproto
12441
12442 : see if sys/stat.h is available
12443 set sys/stat.h i_sysstat
12444 eval $inhdr
12445
12446
12447 : see if stat knows about block sizes
12448 echo " "
12449 echo "Checking to see if your struct stat has st_blocks field..." >&4
12450 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12451 eval $hasfield
12452
12453
12454 : see if this is a sys/vfs.h system
12455 set sys/vfs.h i_sysvfs
12456 eval $inhdr
12457
12458
12459 : see if this is a sys/statfs.h system
12460 set sys/statfs.h i_sysstatfs
12461 eval $inhdr
12462
12463
12464 echo " "
12465 echo "Checking to see if your system supports struct statfs..." >&4
12466 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
12467 eval $hasstruct
12468 case "$d_statfs_s" in
12469 "$define")      echo "Yes, it does."   ;;
12470 *)              echo "No, it doesn't." ;;
12471 esac
12472
12473
12474
12475 : see if struct statfs knows about f_flags
12476 case "$d_statfs_s" in
12477 define) 
12478         echo " "
12479         echo "Checking to see if your struct statfs has f_flags field..." >&4
12480         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
12481         eval $hasfield
12482         ;;
12483 *)      val="$undef"
12484         set d_statfs_f_flags
12485         eval $setvar
12486         ;;
12487 esac
12488 case "$d_statfs_f_flags" in
12489 "$define")      echo "Yes, it does."   ;;
12490 *)              echo "No, it doesn't." ;;
12491 esac
12492
12493 : see if _ptr and _cnt from stdio act std
12494 echo " "
12495
12496 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12497         echo "(Looks like you have stdio.h from BSD.)"
12498         case "$stdio_ptr" in
12499         '') stdio_ptr='((fp)->_p)'
12500                 ptr_lval=$define
12501                 ;;
12502         *)      ptr_lval=$d_stdio_ptr_lval;;
12503         esac
12504         case "$stdio_cnt" in
12505         '') stdio_cnt='((fp)->_r)'
12506                 cnt_lval=$define
12507                 ;;
12508         *)      cnt_lval=$d_stdio_cnt_lval;;
12509         esac
12510         case "$stdio_base" in
12511         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12512         esac
12513         case "$stdio_bufsiz" in
12514         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12515         esac
12516 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12517         echo "(Looks like you have stdio.h from Linux.)"
12518         case "$stdio_ptr" in
12519         '') stdio_ptr='((fp)->_IO_read_ptr)'
12520                 ptr_lval=$define
12521                 ;;
12522         *)      ptr_lval=$d_stdio_ptr_lval;;
12523         esac
12524         case "$stdio_cnt" in
12525         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12526                 cnt_lval=$undef
12527                 ;;
12528         *)      cnt_lval=$d_stdio_cnt_lval;;
12529         esac
12530         case "$stdio_base" in
12531         '') stdio_base='((fp)->_IO_read_base)';;
12532         esac
12533         case "$stdio_bufsiz" in
12534         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12535         esac
12536 else
12537         case "$stdio_ptr" in
12538         '') stdio_ptr='((fp)->_ptr)'
12539                 ptr_lval=$define
12540                 ;;
12541         *)      ptr_lval=$d_stdio_ptr_lval;;
12542         esac
12543         case "$stdio_cnt" in
12544         '') stdio_cnt='((fp)->_cnt)'
12545                 cnt_lval=$define
12546                 ;;
12547         *)      cnt_lval=$d_stdio_cnt_lval;;
12548         esac
12549         case "$stdio_base" in
12550         '') stdio_base='((fp)->_base)';;
12551         esac
12552         case "$stdio_bufsiz" in
12553         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12554         esac
12555 fi
12556
12557 : test whether _ptr and _cnt really work
12558 echo "Checking how std your stdio is..." >&4
12559 $cat >try.c <<EOP
12560 #include <stdio.h>
12561 #define FILE_ptr(fp)    $stdio_ptr
12562 #define FILE_cnt(fp)    $stdio_cnt
12563 int main() {
12564         FILE *fp = fopen("try.c", "r");
12565         char c = getc(fp);
12566         if (
12567                 18 <= FILE_cnt(fp) &&
12568                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12569         )
12570                 exit(0);
12571         exit(1);
12572 }
12573 EOP
12574 val="$undef"
12575 set try
12576 if eval $compile && $to try.c; then
12577         if $run ./try; then
12578                 echo "Your stdio acts pretty std."
12579                 val="$define"
12580         else
12581                 echo "Your stdio isn't very std."
12582         fi
12583 else
12584         echo "Your stdio doesn't appear very std."
12585 fi
12586 $rm -f try.c try
12587 set d_stdstdio
12588 eval $setvar
12589
12590 : Can _ptr be used as an lvalue?
12591 case "$d_stdstdio$ptr_lval" in
12592 $define$define) val=$define ;;
12593 *) val=$undef ;;
12594 esac
12595 set d_stdio_ptr_lval
12596 eval $setvar
12597
12598 : Can _cnt be used as an lvalue?
12599 case "$d_stdstdio$cnt_lval" in
12600 $define$define) val=$define ;;
12601 *) val=$undef ;;
12602 esac
12603 set d_stdio_cnt_lval
12604 eval $setvar
12605
12606
12607 : test whether setting _ptr sets _cnt as a side effect
12608 d_stdio_ptr_lval_sets_cnt="$undef"
12609 d_stdio_ptr_lval_nochange_cnt="$undef"
12610 case "$d_stdio_ptr_lval$d_stdstdio" in
12611 $define$define)
12612         echo "Checking to see what happens if we set the stdio ptr..." >&4
12613 $cat >try.c <<EOP
12614 #include <stdio.h>
12615 /* Can we scream? */
12616 /* Eat dust sed :-) */
12617 /* In the buffer space, no one can hear you scream. */
12618 #define FILE_ptr(fp)    $stdio_ptr
12619 #define FILE_cnt(fp)    $stdio_cnt
12620 #include <sys/types.h>
12621 int main() {
12622         FILE *fp = fopen("try.c", "r");
12623         int c;
12624         char *ptr;
12625         size_t cnt;
12626         if (!fp) {
12627             puts("Fail even to read");
12628             exit(1);
12629         }
12630         c = getc(fp); /* Read away the first # */
12631         if (c == EOF) {
12632             puts("Fail even to read");
12633             exit(1);
12634         }
12635         if (!(
12636                 18 <= FILE_cnt(fp) &&
12637                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12638         )) {
12639                 puts("Fail even to read");
12640                 exit (1);
12641         }
12642         ptr = (char*) FILE_ptr(fp);
12643         cnt = (size_t)FILE_cnt(fp);
12644
12645         FILE_ptr(fp) += 42;
12646
12647         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12648                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12649                 exit (1);
12650         }
12651         if (FILE_cnt(fp) <= 20) {
12652                 printf ("Fail (<20 chars to test)");
12653                 exit (1);
12654         }
12655         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12656                 puts("Fail compare");
12657                 exit (1);
12658         }
12659         if (cnt == FILE_cnt(fp)) {
12660                 puts("Pass_unchanged");
12661                 exit (0);
12662         }       
12663         if (FILE_cnt(fp) == (cnt - 42)) {
12664                 puts("Pass_changed");
12665                 exit (0);
12666         }
12667         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12668         return 1;
12669
12670 }
12671 EOP
12672         set try
12673         if eval $compile && $to try.c; then
12674                 case `$run ./try` in
12675                 Pass_changed)
12676                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12677                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12678                 Pass_unchanged)
12679                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12680                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12681                 Fail*)
12682                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12683                 *)
12684                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12685         esac
12686         else
12687                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12688         fi
12689         $rm -f try.c try
12690         ;;
12691 esac
12692
12693 : see if _base is also standard
12694 val="$undef"
12695 case "$d_stdstdio" in
12696 $define)
12697         $cat >try.c <<EOP
12698 #include <stdio.h>
12699 #define FILE_base(fp)   $stdio_base
12700 #define FILE_bufsiz(fp) $stdio_bufsiz
12701 int main() {
12702         FILE *fp = fopen("try.c", "r");
12703         char c = getc(fp);
12704         if (
12705                 19 <= FILE_bufsiz(fp) &&
12706                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12707         )
12708                 exit(0);
12709         exit(1);
12710 }
12711 EOP
12712         set try
12713         if eval $compile && $to try.c; then
12714                 if $run ./try; then
12715                         echo "And its _base field acts std."
12716                         val="$define"
12717                 else
12718                         echo "But its _base field isn't std."
12719                 fi
12720         else
12721                 echo "However, it seems to be lacking the _base field."
12722         fi
12723         $rm -f try.c try
12724         ;;
12725 esac
12726 set d_stdiobase
12727 eval $setvar
12728
12729 $cat >&4 <<EOM
12730 Checking how to access stdio streams by file descriptor number...
12731 EOM
12732 case "$stdio_stream_array" in
12733 '')     $cat >try.c <<EOCP
12734 #include <stdio.h>
12735 int main() {
12736   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12737     printf("yes\n");
12738 }
12739 EOCP
12740         for s in _iob __iob __sF
12741         do
12742                 set try -DSTDIO_STREAM_ARRAY=$s
12743                 if eval $compile; then
12744                         case "`$run ./try`" in
12745                         yes)    stdio_stream_array=$s; break ;;
12746                         esac
12747                 fi
12748         done
12749         $rm -f try.* try$exe_ext
12750 esac
12751 case "$stdio_stream_array" in
12752 '')     $cat >&4 <<EOM
12753 I can't figure out how to access stdio streams by file descriptor number.
12754 EOM
12755         d_stdio_stream_array="$undef"
12756         ;;
12757 *)      $cat >&4 <<EOM
12758 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12759 EOM
12760         d_stdio_stream_array="$define"
12761         ;;
12762 esac
12763
12764 : see if strcoll exists
12765 set strcoll d_strcoll
12766 eval $inlibc
12767
12768 : check for structure copying
12769 echo " "
12770 echo "Checking to see if your C compiler can copy structs..." >&4
12771 $cat >try.c <<'EOCP'
12772 int main()
12773 {
12774         struct blurfl {
12775                 int dyick;
12776         } foo, bar;
12777
12778         foo = bar;
12779 }
12780 EOCP
12781 if $cc -c try.c >/dev/null 2>&1 ; then
12782         val="$define"
12783         echo "Yup, it can."
12784 else
12785         val="$undef"
12786         echo "Nope, it can't."
12787 fi
12788 set d_strctcpy
12789 eval $setvar
12790 $rm -f try.*
12791
12792 : see if strerror and/or sys_errlist[] exist
12793 echo " "
12794 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12795     if set strerror val -f d_strerror; eval $csym; $val; then
12796                 echo 'strerror() found.' >&4
12797                 d_strerror="$define"
12798                 d_strerrm='strerror(e)'
12799                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12800                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12801                         d_syserrlst="$define"
12802                 else
12803                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12804                         d_syserrlst="$undef"
12805                 fi
12806     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12807                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12808                 echo 'strerror() found in string header.' >&4
12809                 d_strerror="$define"
12810                 d_strerrm='strerror(e)'
12811                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12812                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12813                                 d_syserrlst="$define"
12814                 else
12815                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12816                         d_syserrlst="$undef"
12817                 fi
12818     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12819                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12820                 d_strerror="$undef"
12821                 d_syserrlst="$define"
12822                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12823     else
12824                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12825                 d_strerror="$undef"
12826                 d_syserrlst="$undef"
12827                 d_strerrm='"unknown"'
12828     fi
12829 fi
12830
12831 : see if strftime exists
12832 set strftime d_strftime
12833 eval $inlibc
12834
12835 : see if strtod exists
12836 set strtod d_strtod
12837 eval $inlibc
12838
12839 : see if strtol exists
12840 set strtol d_strtol
12841 eval $inlibc
12842
12843 : see if strtold exists
12844 set strtold d_strtold
12845 eval $inlibc
12846
12847 : see if strtoll exists
12848 set strtoll d_strtoll
12849 eval $inlibc
12850
12851 case "$d_longlong-$d_strtoll" in
12852 "$define-$define")
12853         $cat <<EOM
12854 Checking whether your strtoll() works okay...
12855 EOM
12856         $cat >try.c <<'EOCP'
12857 #include <errno.h>
12858 #ifdef __hpux
12859 #define strtoll __strtoll
12860 #endif
12861 #ifdef __EMX__
12862 #define strtoll _strtoll
12863 #endif
12864 #include <stdio.h>
12865 extern long long int strtoll(char *s, char **, int); 
12866 static int bad = 0;
12867 int check(char *s, long long ell, int een) {
12868         long long gll;
12869         errno = 0;
12870         gll = strtoll(s, 0, 10);
12871         if (!((gll == ell) && (errno == een)))
12872                 bad++;
12873 }
12874 int main() {
12875         check(" 1",                                      1LL, 0);
12876         check(" 0",                                      0LL, 0);
12877         check("-1",                                     -1LL, 0);
12878         check("-9223372036854775808", -9223372036854775808LL, 0);
12879         check("-9223372036854775808", -9223372036854775808LL, 0);
12880         check(" 9223372036854775807",  9223372036854775807LL, 0);
12881         check("-9223372036854775808", -9223372036854775808LL, 0);
12882         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12883         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12884         if (!bad)
12885                 printf("ok\n");
12886 }
12887 EOCP
12888         set try
12889         if eval $compile; then
12890                 yyy=`$run ./try`
12891                 case "$yyy" in
12892                 ok) echo "Your strtoll() seems to be working okay." ;;
12893                 *) cat <<EOM >&4
12894 Your strtoll() doesn't seem to be working okay.
12895 EOM
12896                    d_strtoll="$undef"
12897                    ;;
12898                 esac
12899         else
12900                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12901                 d_strtoll="$undef"
12902         fi
12903         ;;
12904 esac
12905
12906 : see if strtoq exists
12907 set strtoq d_strtoq
12908 eval $inlibc
12909
12910 : see if strtoul exists
12911 set strtoul d_strtoul
12912 eval $inlibc
12913
12914 case "$d_strtoul" in
12915 "$define")
12916         $cat <<EOM
12917 Checking whether your strtoul() works okay...
12918 EOM
12919         $cat >try.c <<'EOCP'
12920 #include <errno.h>
12921 #include <stdio.h>
12922 extern unsigned long int strtoul(char *s, char **, int); 
12923 static int bad = 0;
12924 void check(char *s, unsigned long eul, int een) {
12925         unsigned long gul;
12926         errno = 0;
12927         gul = strtoul(s, 0, 10);
12928         if (!((gul == eul) && (errno == een)))
12929                 bad++;
12930 }
12931 int main() {
12932         check(" 1", 1L, 0);
12933         check(" 0", 0L, 0);
12934 EOCP
12935         case "$longsize" in
12936         8)
12937             $cat >>try.c <<'EOCP'
12938         check("18446744073709551615", 18446744073709551615UL, 0);
12939         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12940 #if 0 /* strtoul() for /^-/ strings is undefined. */
12941         check("-1", 18446744073709551615UL, 0);
12942         check("-18446744073709551614", 2, 0);
12943         check("-18446744073709551615", 1, 0);
12944         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12945         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12946 #endif
12947 EOCP
12948                 ;;
12949         4)
12950                     $cat >>try.c <<'EOCP'
12951         check("4294967295", 4294967295UL, 0);
12952         check("4294967296", 4294967295UL, ERANGE);
12953 #if 0 /* strtoul() for /^-/ strings is undefined. */
12954         check("-1", 4294967295UL, 0);
12955         check("-4294967294", 2, 0);
12956         check("-4294967295", 1, 0);
12957         check("-4294967296", 4294967295UL, ERANGE);
12958         check("-4294967297", 4294967295UL, ERANGE);
12959 #endif
12960 EOCP
12961                 ;;
12962         *)
12963 : Should we write these tests to be more portable by sprintf-ing
12964 : ~0 and then manipulating that char string as input for strtol?
12965                 ;;
12966         esac
12967         $cat >>try.c <<'EOCP'
12968         if (!bad)
12969                 printf("ok\n");
12970         return 0;
12971 }
12972 EOCP
12973         set try
12974         if eval $compile; then
12975                 case "`$run ./try`" in
12976                 ok) echo "Your strtoul() seems to be working okay." ;;
12977                 *) cat <<EOM >&4
12978 Your strtoul() doesn't seem to be working okay.
12979 EOM
12980                    d_strtoul="$undef"
12981                    ;;
12982                 esac
12983         fi
12984         ;;
12985 esac
12986
12987 : see if strtoull exists
12988 set strtoull d_strtoull
12989 eval $inlibc
12990
12991 case "$d_longlong-$d_strtoull" in
12992 "$define-$define")
12993         $cat <<EOM
12994 Checking whether your strtoull() works okay...
12995 EOM
12996         $cat >try.c <<'EOCP'
12997 #include <errno.h>
12998 #ifdef __hpux
12999 #define strtoull __strtoull
13000 #endif
13001 #include <stdio.h>
13002 extern unsigned long long int strtoull(char *s, char **, int); 
13003 static int bad = 0;
13004 int check(char *s, long long eull, int een) {
13005         long long gull;
13006         errno = 0;
13007         gull = strtoull(s, 0, 10);
13008         if (!((gull == eull) && (errno == een)))
13009                 bad++;
13010 }
13011 int main() {
13012         check(" 1",                                        1LL, 0);
13013         check(" 0",                                        0LL, 0);
13014         check("18446744073709551615",  18446744073709551615ULL, 0);
13015         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13016 #if 0 /* strtoull() for /^-/ strings is undefined. */
13017         check("-1",                    18446744073709551615ULL, 0);
13018         check("-18446744073709551614",                     2LL, 0);
13019         check("-18446744073709551615",                     1LL, 0);
13020         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13021         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13022 #endif
13023         if (!bad)
13024                 printf("ok\n");
13025 }
13026 EOCP
13027         set try
13028         if eval $compile; then
13029                 case "`$run ./try`" in
13030                 ok) echo "Your strtoull() seems to be working okay." ;;
13031                 *) cat <<EOM >&4
13032 Your strtoull() doesn't seem to be working okay.
13033 EOM
13034                    d_strtoull="$undef"
13035                    ;;
13036                 esac
13037         fi
13038         ;;
13039 esac
13040
13041 : see if strtouq exists
13042 set strtouq d_strtouq
13043 eval $inlibc
13044
13045 case "$d_strtouq" in
13046 "$define")
13047         $cat <<EOM
13048 Checking whether your strtouq() works okay...
13049 EOM
13050         $cat >try.c <<'EOCP'
13051 #include <errno.h>
13052 #include <stdio.h>
13053 extern unsigned long long int strtouq(char *s, char **, int); 
13054 static int bad = 0;
13055 void check(char *s, unsigned long long eull, int een) {
13056         unsigned long long gull;
13057         errno = 0;
13058         gull = strtouq(s, 0, 10);
13059         if (!((gull == eull) && (errno == een)))
13060                 bad++;
13061 }
13062 int main() {
13063         check(" 1",                                        1LL, 0);
13064         check(" 0",                                        0LL, 0);
13065         check("18446744073709551615",  18446744073709551615ULL, 0);
13066         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13067 #if 0 /* strtouq() for /^-/ strings is undefined. */
13068         check("-1",                    18446744073709551615ULL, 0);
13069         check("-18446744073709551614",                     2LL, 0);
13070         check("-18446744073709551615",                     1LL, 0);
13071         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13072         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13073 #endif
13074         if (!bad)
13075                 printf("ok\n");
13076         return 0;
13077 }
13078 EOCP
13079         set try
13080         if eval $compile; then
13081                 case "`$run ./try`" in
13082                 ok) echo "Your strtouq() seems to be working okay." ;;
13083                 *) cat <<EOM >&4
13084 Your strtouq() doesn't seem to be working okay.
13085 EOM
13086                    d_strtouq="$undef"
13087                    ;;
13088                 esac
13089         fi
13090         ;;
13091 esac
13092
13093 : see if strxfrm exists
13094 set strxfrm d_strxfrm
13095 eval $inlibc
13096
13097 : see if symlink exists
13098 set symlink d_symlink
13099 eval $inlibc
13100
13101 : see if syscall exists
13102 set syscall d_syscall
13103 eval $inlibc
13104
13105 : see if prototype for syscall is available
13106 echo " "
13107 set d_syscallproto syscall $i_unistd unistd.h
13108 eval $hasproto
13109
13110 : see if sysconf exists
13111 set sysconf d_sysconf
13112 eval $inlibc
13113
13114 : see if system exists
13115 set system d_system
13116 eval $inlibc
13117
13118 : see if tcgetpgrp exists
13119 set tcgetpgrp d_tcgetpgrp
13120 eval $inlibc
13121
13122 : see if tcsetpgrp exists
13123 set tcsetpgrp d_tcsetpgrp
13124 eval $inlibc
13125
13126 : see if prototype for telldir is available
13127 echo " "
13128 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13129 eval $hasproto
13130
13131 : see if this is a sys/times.h system
13132 set sys/times.h i_systimes
13133 eval $inhdr
13134
13135 : see if times exists
13136 echo " "
13137 if set times val -f d_times; eval $csym; $val; then
13138         echo 'times() found.' >&4
13139         d_times="$define"
13140         inc=''
13141         case "$i_systimes" in
13142         "$define") inc='sys/times.h';;
13143         esac
13144         rp="What is the type returned by times() on this system?"
13145         set clock_t clocktype long stdio.h sys/types.h $inc
13146         eval $typedef_ask
13147 else
13148         echo 'times() NOT found, hope that will do.' >&4
13149         d_times="$undef"
13150         clocktype='int'
13151 fi
13152
13153 : see if truncate exists
13154 set truncate d_truncate
13155 eval $inlibc
13156
13157 : see if tzname[] exists
13158 echo " "
13159 if set tzname val -a d_tzname; eval $csym; $val; then
13160         val="$define"
13161         echo 'tzname[] found.' >&4
13162 else
13163         val="$undef"
13164         echo 'tzname[] NOT found.' >&4
13165 fi
13166 set d_tzname
13167 eval $setvar
13168
13169 case "$osname" in
13170 next|rhapsody|darwin) multiarch="$define" ;;
13171 esac
13172 case "$multiarch" in
13173 ''|[nN]*) multiarch="$undef" ;;
13174 esac
13175
13176 : check for ordering of bytes in a long
13177 echo " "
13178 case "$usecrosscompile$multiarch" in
13179 *$define*)
13180         $cat <<EOM
13181 You seem to be either cross-compiling or doing a multiarchitecture build,
13182 skipping the byteorder check.
13183
13184 EOM
13185         byteorder='ffff'
13186         ;;
13187 *)
13188         case "$byteorder" in
13189         '')
13190                 $cat <<'EOM'
13191 In the following, larger digits indicate more significance.  A big-endian
13192 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13193 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13194 machines may have weird orders like 3412.  A Cray will report 87654321,
13195 an Alpha will report 12345678. If the test program works the default is
13196 probably right.
13197 I'm now running the test program...
13198 EOM
13199                 $cat >try.c <<'EOCP'
13200 #include <stdio.h>
13201 int main()
13202 {
13203         int i;
13204         union {
13205                 unsigned long l;
13206                 char c[sizeof(long)];
13207         } u;
13208
13209         if (sizeof(long) > 4)
13210                 u.l = (0x08070605L << 32) | 0x04030201L;
13211         else
13212                 u.l = 0x04030201L;
13213         for (i = 0; i < sizeof(long); i++)
13214                 printf("%c", u.c[i]+'0');
13215         printf("\n");
13216         exit(0);
13217 }
13218 EOCP
13219                 xxx_prompt=y
13220                 set try
13221                 if eval $compile && ./try > /dev/null; then
13222                         dflt=`$run ./try`
13223                         case "$dflt" in
13224                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13225                                 echo "(The test program ran ok.)"
13226                                 echo "byteorder=$dflt"
13227                                 xxx_prompt=n
13228                         ;;
13229                         ????|????????) echo "(The test program ran ok.)" ;;
13230                         *) echo "(The test program didn't run right for some reason.)" ;;
13231                         esac
13232                 else
13233                         dflt='4321'
13234                         cat <<'EOM'
13235 (I can't seem to compile the test program.  Guessing big-endian...)
13236 EOM
13237                 fi
13238                 case "$xxx_prompt" in
13239                 y)
13240                         rp="What is the order of bytes in a long?"
13241                         . ./myread
13242                         byteorder="$ans"
13243                         ;;
13244                 *)      byteorder=$dflt
13245                         ;;
13246                 esac
13247                 ;;
13248         esac
13249         $rm -f try.c try
13250         ;;
13251 esac
13252
13253
13254 $cat <<EOM
13255
13256 Checking to see whether you can access character data unalignedly...
13257 EOM
13258 $cat >try.c <<EOCP
13259 #include <stdio.h>
13260 #define U32 $u32type
13261 #define BYTEORDER $byteorder
13262 int main() {
13263 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13264     U8 buf[] = "\0\0\0\1\0\0\0\0";
13265     U32 *up;
13266     int i;
13267
13268     if (sizeof(U32) != 4) {
13269         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13270         exit(1);
13271     }
13272
13273     fflush(stdout);
13274
13275     for (i = 0; i < 4; i++) {
13276         up = (U32*)(buf + i);
13277         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13278                (*up == 1 << (8*(3-i)))  /* little-endian */
13279               )
13280            )
13281         {
13282             printf("read failed (%x)\n", *up);
13283             exit(2);
13284         }
13285     }
13286
13287     /* write test */
13288     for (i = 0; i < 4; i++) {
13289         up = (U32*)(buf + i);
13290         *up = 0xBeef;
13291         if (*up != 0xBeef) {
13292             printf("write failed (%x)\n", *up);
13293             exit(3);
13294         }
13295     }
13296
13297     exit(0);
13298 #else
13299     printf("1\n");
13300     exit(1);
13301 #endif
13302     return 0;
13303 }
13304 EOCP
13305 set try
13306 if eval $compile_ok; then
13307         echo "(Testing for character data alignment may dump core.)" >&4
13308         $run ./try 2>&1 >/dev/null
13309         case "$?" in
13310         0)      cat >&4 <<EOM
13311 You can access character data pretty unalignedly.
13312 EOM
13313                 d_u32align="$undef"
13314                 ;;
13315         *)      cat >&4 <<EOM
13316 It seems that you must access character data in an aligned manner.
13317 EOM
13318                 d_u32align="$define"
13319                 ;;
13320         esac
13321         $rm -f core core.try.* try.core
13322 else
13323         rp='Can you access character data at unaligned addresses?'
13324         dflt='n'
13325         . ./myread
13326         case "$ans" in
13327         [yY]*)  d_u32align="$undef"  ;;
13328         *)      d_u32align="$define" ;;
13329         esac
13330 fi
13331
13332 : see if ualarm exists
13333 set ualarm d_ualarm
13334 eval $inlibc
13335
13336 : see if umask exists
13337 set umask d_umask
13338 eval $inlibc
13339
13340 : see if unordered exists
13341 set unordered d_unordered
13342 eval $inlibc
13343
13344 : see if usleep exists
13345 set usleep d_usleep
13346 eval $inlibc
13347
13348 : see if prototype for usleep is available
13349 echo " "
13350 set d_usleepproto usleep $i_unistd unistd.h
13351 eval $hasproto
13352
13353 : see if ustat exists
13354 set ustat d_ustat
13355 eval $inlibc
13356
13357 : backward compatibility for d_hvfork
13358 if test X$d_hvfork != X; then
13359         d_vfork="$d_hvfork"
13360         d_hvfork=''
13361 fi
13362 : see if there is a vfork
13363 val=''
13364 set vfork val
13365 eval $inlibc
13366
13367 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13368 : perl on Solaris 2.x, and probably elsewhere.
13369 case "$val" in
13370 $define)
13371         echo " "
13372         case "$usevfork" in
13373         false) dflt='n';;
13374         *) dflt='y';;
13375         esac
13376         cat <<'EOM'
13377  
13378 Perl can only use a vfork() that doesn't suffer from strict
13379 restrictions on calling functions or modifying global data in
13380 the child.  For example, glibc-2.1 contains such a vfork()
13381 that is unsuitable.  If your system provides a proper fork()
13382 call, chances are that you do NOT want perl to use vfork().
13383
13384 EOM
13385         rp="Do you still want to use vfork()?"
13386         . ./myread
13387         case "$ans" in
13388         y|Y) ;;
13389         *)
13390                 echo "Ok, we won't use vfork()."
13391                 val="$undef"
13392                 ;;
13393         esac
13394         ;;
13395 esac
13396 set d_vfork
13397 eval $setvar
13398 case "$d_vfork" in
13399 $define) usevfork='true';;
13400 *) usevfork='false';;
13401 esac
13402
13403 : see if this is an sysdir system
13404 set sys/dir.h i_sysdir
13405 eval $inhdr
13406
13407 : see if this is an sysndir system
13408 set sys/ndir.h i_sysndir
13409 eval $inhdr
13410
13411 : see if closedir exists
13412 set closedir d_closedir
13413 eval $inlibc
13414
13415 case "$d_closedir" in
13416 "$define")
13417         echo " "
13418         echo "Checking whether closedir() returns a status..." >&4
13419         cat > try.c <<EOM
13420 #$i_dirent I_DIRENT             /**/
13421 #$i_sysdir I_SYS_DIR            /**/
13422 #$i_sysndir I_SYS_NDIR          /**/
13423 #$i_systypes I_SYS_TYPES        /**/
13424
13425 #if defined(I_SYS_TYPES)
13426 #include <sys/types.h>
13427 #endif
13428 #if defined(I_DIRENT)
13429 #include <dirent.h>
13430 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13431 #include <sys/dir.h>
13432 #endif
13433 #else
13434 #ifdef I_SYS_NDIR
13435 #include <sys/ndir.h>
13436 #else
13437 #ifdef I_SYS_DIR
13438 #ifdef hp9000s500
13439 #include <ndir.h>       /* may be wrong in the future */
13440 #else
13441 #include <sys/dir.h>
13442 #endif
13443 #endif
13444 #endif
13445 #endif 
13446 int main() { return closedir(opendir(".")); }
13447 EOM
13448         set try
13449         if eval $compile_ok; then
13450                 if $run ./try > /dev/null 2>&1 ; then
13451                         echo "Yes, it does."
13452                         val="$undef"
13453                 else
13454                         echo "No, it doesn't."
13455                         val="$define"
13456                 fi
13457         else
13458                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13459                 val="$define"
13460         fi
13461         ;;
13462 *)
13463         val="$undef";
13464         ;;
13465 esac
13466 set d_void_closedir
13467 eval $setvar
13468 $rm -f try try.*
13469 : see if there is a wait4
13470 set wait4 d_wait4
13471 eval $inlibc
13472
13473 : see if waitpid exists
13474 set waitpid d_waitpid
13475 eval $inlibc
13476
13477 : see if wcstombs exists
13478 set wcstombs d_wcstombs
13479 eval $inlibc
13480
13481 : see if wctomb exists
13482 set wctomb d_wctomb
13483 eval $inlibc
13484
13485 : see if writev exists
13486 set writev d_writev
13487 eval $inlibc
13488
13489 : preserve RCS keywords in files with variable substitution, grrr
13490 Date='$Date'
13491 Id='$Id'
13492 Log='$Log'
13493 RCSfile='$RCSfile'
13494 Revision='$Revision'
13495
13496 : check for alignment requirements
13497 echo " "
13498 case "$usecrosscompile$multiarch" in
13499 *$define*)
13500         $cat <<EOM
13501 You seem to be either cross-compiling or doing a multiarchitecture build,
13502 skipping the memory alignment check.
13503
13504 EOM
13505         case "$alignbytes" in
13506         '') alignbytes=8 ;;
13507         esac
13508         ;;
13509 *)
13510         case "$alignbytes" in
13511         '') echo "Checking alignment constraints..." >&4
13512                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13513                         $cat >try.c <<'EOCP'
13514 typedef long double NV;
13515 EOCP
13516                 else
13517                         $cat >try.c <<'EOCP'
13518 typedef double NV;
13519 EOCP
13520                 fi
13521                 $cat >>try.c <<'EOCP'
13522 #include <stdio.h>
13523 struct foobar {
13524         char foo;
13525         NV bar;
13526 } try_algn;
13527 int main()
13528 {
13529     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13530     return(0);
13531 }
13532 EOCP
13533                 set try
13534                 if eval $compile_ok; then
13535                         dflt=`$run ./try`
13536                 else
13537                         dflt='8'
13538                         echo "(I can't seem to compile the test program...)"
13539                 fi
13540                 ;;
13541         *) dflt="$alignbytes"
13542                 ;;
13543         esac
13544         rp="Doubles must be aligned on a how-many-byte boundary?"
13545         . ./myread
13546         alignbytes="$ans"
13547         $rm -f try.c try
13548         ;;
13549 esac
13550
13551
13552 : set the base revision
13553 baserev=5.0
13554
13555 : how do we catenate cpp tokens here?
13556 echo " "
13557 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13558 $cat >cpp_stuff.c <<'EOCP'
13559 #define RCAT(a,b)a/**/b
13560 #define ACAT(a,b)a ## b
13561 RCAT(Rei,ser)
13562 ACAT(Cir,cus)
13563 EOCP
13564 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13565 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13566         echo "Oh!  Smells like ANSI's been here." >&4
13567         echo "We can catify or stringify, separately or together!"
13568         cpp_stuff=42
13569 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13570         echo "Ah, yes!  The good old days!" >&4
13571         echo "However, in the good old days we don't know how to stringify and"
13572         echo "catify at the same time."
13573         cpp_stuff=1
13574 else
13575         $cat >&4 <<EOM
13576 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13577 to have to edit the values of CAT[2-5] in config.h...
13578 EOM
13579         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13580 fi
13581 $rm -f cpp_stuff.*
13582
13583 : see if this is a db.h system
13584 set db.h i_db
13585 eval $inhdr
13586
13587 case "$i_db" in
13588 $define)
13589         : Check db version.
13590         echo " "
13591         echo "Checking Berkeley DB version ..." >&4
13592         $cat >try.c <<EOCP
13593 #$d_const HASCONST
13594 #ifndef HASCONST
13595 #define const
13596 #endif
13597 #include <sys/types.h>
13598 #include <stdio.h>
13599 #include <db.h>
13600 int main(int argc, char *argv[])
13601 {
13602 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13603     int Major, Minor, Patch ;
13604     unsigned long Version ;
13605     (void)db_version(&Major, &Minor, &Patch) ;
13606     if (argc == 2) {
13607         printf("%d %d %d %d %d %d\n",
13608                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13609                Major, Minor, Patch);
13610         exit(0);
13611     }
13612     printf("You have Berkeley DB Version 2 or greater.\n");
13613
13614     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13615                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13616     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13617                 Major, Minor, Patch) ;
13618
13619     /* check that db.h & libdb are compatible */
13620     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13621         printf("db.h and libdb are incompatible.\n") ;
13622         exit(3);        
13623     }
13624
13625     printf("db.h and libdb are compatible.\n") ;
13626
13627     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13628                 + DB_VERSION_PATCH ;
13629
13630     /* needs to be >= 2.3.4 */
13631     if (Version < 2003004) {
13632     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13633         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13634         exit(2);        
13635     }
13636
13637     exit(0);
13638 #else
13639 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13640     if (argc == 2) {
13641         printf("1 0 0\n");
13642         exit(0);
13643     }
13644     printf("You have Berkeley DB Version 1.\n");
13645     exit(0);    /* DB version < 2: the coast is clear. */
13646 #else
13647     exit(1);    /* <db.h> not Berkeley DB? */
13648 #endif
13649 #endif
13650 }
13651 EOCP
13652         set try
13653         if eval $compile_ok && $run ./try; then
13654                 echo 'Looks OK.' >&4
13655                 set `$run ./try 1`
13656                 db_version_major=$1
13657                 db_version_minor=$2
13658                 db_version_patch=$3
13659         else
13660                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13661                 i_db=$undef
13662                 case " $libs " in
13663                 *"-ldb "*)
13664                         : Remove db from list of libraries to use
13665                         echo "Removing unusable -ldb from library list" >&4
13666                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13667                         shift
13668                         libs="$*"
13669                         echo "libs = $libs" >&4
13670                         ;;
13671                 esac
13672         fi
13673         $rm -f try.*
13674         ;;
13675 esac
13676
13677 case "$i_db" in
13678 define)
13679         : Check the return type needed for hash 
13680         echo " "
13681         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13682         $cat >try.c <<EOCP
13683 #$d_const HASCONST
13684 #ifndef HASCONST
13685 #define const
13686 #endif
13687 #include <sys/types.h>
13688 #include <db.h>
13689
13690 #ifndef DB_VERSION_MAJOR
13691 u_int32_t hash_cb (ptr, size)
13692 const void *ptr;
13693 size_t size;
13694 {
13695 }
13696 HASHINFO info;
13697 int main()
13698 {
13699         info.hash = hash_cb;
13700 }
13701 #endif
13702 EOCP
13703         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13704                 if $contains warning try.out >>/dev/null 2>&1 ; then
13705                         db_hashtype='int'
13706                 else
13707                         db_hashtype='u_int32_t'
13708                 fi
13709         else
13710                 : XXX Maybe we should just give up here.
13711                 db_hashtype=u_int32_t
13712                 $cat try.out >&4
13713                 echo "Help:  I can't seem to compile the db test program." >&4
13714                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13715         fi
13716         $rm -f try.*
13717         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13718         ;;
13719 *)      db_hashtype=u_int32_t
13720         ;;
13721 esac
13722 case "$i_db" in
13723 define)
13724         : Check the return type needed for prefix 
13725         echo " "
13726         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13727         cat >try.c <<EOCP
13728 #$d_const HASCONST
13729 #ifndef HASCONST
13730 #define const
13731 #endif
13732 #include <sys/types.h>
13733 #include <db.h>
13734
13735 #ifndef DB_VERSION_MAJOR
13736 size_t prefix_cb (key1, key2)
13737 const DBT *key1;
13738 const DBT *key2;
13739 {
13740 }
13741 BTREEINFO info;
13742 int main()
13743 {
13744         info.prefix = prefix_cb;
13745 }
13746 #endif
13747 EOCP
13748         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13749                 if $contains warning try.out >>/dev/null 2>&1 ; then
13750                         db_prefixtype='int'
13751                 else
13752                         db_prefixtype='size_t'
13753                 fi
13754         else
13755                 db_prefixtype='size_t'
13756                 : XXX Maybe we should just give up here.
13757                 $cat try.out >&4
13758                 echo "Help:  I can't seem to compile the db test program." >&4
13759                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13760         fi
13761         $rm -f try.*
13762         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13763         ;;
13764 *)      db_prefixtype='size_t'
13765         ;;
13766 esac
13767
13768
13769 : How can we generate normalized random numbers ?
13770 echo " "
13771 echo "Looking for a random number function..." >&4
13772 case "$randfunc" in
13773 '')
13774         if set drand48 val -f; eval $csym; $val; then
13775                 dflt="drand48"
13776                 echo "Good, found drand48()." >&4
13777         elif set random val -f; eval $csym; $val; then
13778                 dflt="random"
13779                 echo "OK, found random()." >&4
13780         else
13781                 dflt="rand"
13782                 echo "Yick, looks like I have to use rand()." >&4
13783         fi
13784         echo " "
13785         ;;
13786 *)
13787         dflt="$randfunc"
13788         ;;
13789 esac
13790 cont=true
13791
13792 case "$ccflags" in
13793 *-Dmy_rand=*|*-Dmy_srand=*)
13794         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13795         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13796         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13797         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13798         ;;
13799 esac
13800
13801 while $test "$cont"; do
13802         rp="Use which function to generate random numbers?"
13803         . ./myread
13804         if $test "$ans" = "$dflt"; then
13805                 : null
13806         else
13807                 randbits=''
13808         fi
13809         randfunc="$ans"
13810         if set $ans val -f; eval $csym; $val; then
13811                 cont=''
13812         else
13813                 dflt=y
13814                 rp="I cannot find function $ans. Use that name anyway?"
13815                 . ./myread
13816                 dflt=rand
13817                 case "$ans" in
13818                         [yY]*) cont='';;
13819                 esac
13820         fi
13821         case "$cont" in
13822         '')
13823                 case "$randfunc" in
13824                 drand48)
13825                         drand01="drand48()"
13826                         seedfunc="srand48"
13827                         randbits=48
13828                         randseedtype=long
13829                         ;;
13830                 rand|random)
13831                         case "$randbits" in
13832                         '')
13833 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13834                                 $cat >try.c <<EOCP
13835 #$i_unistd I_UNISTD
13836 #$i_stdlib I_STDLIB
13837 #include <stdio.h>
13838 #ifdef I_UNISTD
13839 #  include <unistd.h>
13840 #endif
13841 #ifdef I_STDLIB
13842 #  include <stdlib.h>
13843 #endif
13844 int main()
13845 {
13846         register int i;
13847         register unsigned long tmp;
13848         register unsigned long max = 0L;
13849
13850         for (i = 1000; i; i--) {
13851                 tmp = (unsigned long) $randfunc();
13852                 if (tmp > max) max = tmp;
13853         }
13854         for (i = 0; max; i++)
13855                 max /= 2;
13856         printf("%d\n",i);
13857 }
13858 EOCP
13859                                 set try
13860                                 if eval $compile_ok; then
13861                                         dflt=`try`
13862                                 else
13863                                         dflt='?'
13864                                         echo "(I can't seem to compile the test program...)"
13865                                 fi
13866                                 ;;
13867                         *)
13868                                 dflt="$randbits"
13869                                 ;;
13870                         esac
13871                         rp="How many bits does your $randfunc() function produce?"
13872                         . ./myread
13873                         randbits="$ans"
13874                         $rm -f try.c try
13875                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13876                         seedfunc="s$randfunc"
13877                         randseedtype=unsigned
13878                         ;;
13879                 *)
13880                         dflt="31"
13881                         rp="How many bits does your $randfunc() function produce?"
13882                         . ./myread
13883                         randbits="$ans"
13884                         seedfunc="s$randfunc"
13885                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13886                         if set $seedfunc val -f; eval $csym; $val; then
13887                                 echo "(Using $seedfunc() to seed random generator)"
13888                         else
13889                                 echo "(Warning: no $seedfunc() to seed random generator)"
13890                                 seedfunc=rand
13891                         fi
13892                         randseedtype=unsigned
13893                         ;;
13894                 esac
13895                 ;;
13896         esac
13897 done
13898
13899 echo " "
13900 echo "Determining whether or not we are on an EBCDIC system..." >&4
13901 $cat >try.c <<'EOM'
13902 int main()
13903 {
13904   if ('M'==0xd4) return 0;
13905   return 1;
13906 }
13907 EOM
13908
13909 val=$undef
13910 set try
13911 if eval $compile_ok; then
13912         if $run ./try; then
13913                 echo "You seem to speak EBCDIC." >&4
13914                 val="$define"
13915         else
13916                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13917         fi
13918 else
13919         echo "I'm unable to compile the test program." >&4
13920         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13921 fi
13922 $rm -f try try.*
13923 set ebcdic
13924 eval $setvar
13925
13926 echo " "
13927 $cat >&4 <<EOM
13928 Checking how to flush all pending stdio output...
13929 EOM
13930 # I only know how to find the first 32 possibly open files on SunOS.
13931 # See also hints/sunos_4_1.sh and util.c  --AD
13932 case "$osname" in
13933 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13934 esac
13935 $cat >>try.c <<EOCP
13936 #include <stdio.h>
13937 #$i_unistd I_UNISTD
13938 #ifdef I_UNISTD
13939 # include <unistd.h>
13940 #endif
13941 #$d_sysconf HAS_SYSCONF
13942 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13943 #ifdef HAS_STDIO_STREAM_ARRAY
13944 # define STDIO_STREAM_ARRAY $stdio_stream_array
13945 #endif
13946 int main() {
13947   FILE* p;
13948   unlink("try.out");
13949   p = fopen("try.out", "w");
13950 #ifdef TRY_FPUTC
13951   fputc('x', p);
13952 #else
13953 # ifdef TRY_FPRINTF
13954   fprintf(p, "x");
13955 # endif
13956 #endif
13957 #ifdef TRY_FFLUSH_NULL
13958   fflush(NULL);
13959 #endif
13960 #ifdef TRY_FFLUSH_ALL
13961   {
13962     long open_max = -1;
13963 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13964     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13965 # else
13966 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13967     open_max = sysconf(_SC_OPEN_MAX);
13968 #  else
13969 #   ifdef FOPEN_MAX
13970     open_max = FOPEN_MAX;
13971 #   else
13972 #    ifdef OPEN_MAX
13973     open_max = OPEN_MAX;
13974 #    else
13975 #     ifdef _NFILE
13976     open_max = _NFILE;
13977 #     endif
13978 #    endif
13979 #   endif
13980 #  endif
13981 # endif 
13982 # ifdef HAS_STDIO_STREAM_ARRAY
13983     if (open_max > 0) {
13984       long i;
13985       for (i = 0; i < open_max; i++)
13986             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13987                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13988                 STDIO_STREAM_ARRAY[i]._flag)
13989                 fflush(&STDIO_STREAM_ARRAY[i]);
13990     }   
13991   }
13992 # endif
13993 #endif
13994   _exit(42);
13995 }
13996 EOCP
13997 : first we have to find out how _not_ to flush
13998 $to try.c
13999 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
14000     output=''
14001     set try -DTRY_FPUTC
14002     if eval $compile; then
14003             $run ./try 2>/dev/null
14004             code="$?"
14005             $from try.out
14006             if $test ! -s try.out -a "X$code" = X42; then
14007                 output=-DTRY_FPUTC
14008             fi
14009     fi
14010     case "$output" in
14011     '')
14012             set try -DTRY_FPRINTF
14013             if eval $compile; then
14014                     $run ./try 2>/dev/null
14015                     code="$?"
14016                     $from try.out
14017                     if $test ! -s try.out -a "X$code" = X42; then
14018                         output=-DTRY_FPRINTF
14019                     fi
14020             fi
14021         ;;
14022     esac
14023 fi
14024 : check for fflush NULL behaviour
14025 case "$fflushNULL" in
14026 '')     set try -DTRY_FFLUSH_NULL $output
14027         if eval $compile; then
14028                 $run ./try 2>/dev/null
14029                 code="$?"
14030                 $from try.out
14031                 if $test -s try.out -a "X$code" = X42; then
14032                         fflushNULL="`$cat try.out`"
14033                 else
14034                         if $test "X$code" != X42; then
14035                                 $cat >&4 <<EOM
14036 (If this test failed, don't worry, we'll try another method shortly.)
14037 EOM
14038                         fi
14039                 fi
14040         fi
14041         $rm -f core try.core core.try.*
14042         case "$fflushNULL" in
14043         x)      $cat >&4 <<EOM
14044 Your fflush(NULL) works okay for output streams.
14045 Let's see if it clobbers input pipes...
14046 EOM
14047 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14048 # bug that improperly flushes the input end of pipes.  So we avoid the
14049 # autoflush on fork/system/exec support for now. :-(
14050 $cat >tryp.c <<EOCP
14051 #include <stdio.h>
14052 int
14053 main(int argc, char **argv)
14054 {
14055     char buf[1024];
14056     int i;
14057     char *bp = buf;
14058     while (1) {
14059         while ((i = getc(stdin)) != -1
14060                && (*bp++ = i) != '\n'
14061                && bp < &buf[1024])
14062         /* DO NOTHING */ ;
14063         *bp = '\0';
14064         fprintf(stdout, "%s", buf);
14065         fflush(NULL);
14066         if (i == -1)
14067             return 0;
14068         bp = buf;
14069     }
14070 }
14071 EOCP
14072                 fflushNULL="$define"
14073                 set tryp
14074                 if eval $compile; then
14075                     $rm -f tryp.out
14076                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14077                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
14078                        $cat >&4 <<EOM
14079 fflush(NULL) seems to behave okay with input streams.
14080 EOM
14081                         fflushNULL="$define"
14082                     else
14083                         $cat >&4 <<EOM
14084 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
14085 EOM
14086                         fflushNULL="$undef"
14087                     fi
14088                 fi
14089                 $rm -f core tryp.c tryp.core core.tryp.*
14090                 ;;
14091         '')     $cat >&4 <<EOM
14092 Your fflush(NULL) isn't working (contrary to ANSI C).
14093 EOM
14094                 fflushNULL="$undef"
14095                 ;;
14096         *)      $cat >&4 <<EOM
14097 Cannot figure out whether your fflush(NULL) works or not.
14098 I'm assuming it doesn't (contrary to ANSI C).
14099 EOM
14100                 fflushNULL="$undef"
14101                 ;;
14102         esac
14103         ;;
14104 $define|true|[yY]*)
14105         fflushNULL="$define"
14106         ;;
14107 *)
14108         fflushNULL="$undef"
14109         ;;
14110 esac
14111 : check explicit looping only if NULL did not work, and if the pipe
14112 : bug does not show up on an explicit flush too
14113 case "$fflushNULL" in
14114 "$undef")
14115         $cat >tryp.c <<EOCP
14116 #include <stdio.h>
14117 int
14118 main(int argc, char **argv)
14119 {
14120     char buf[1024];
14121     int i;
14122     char *bp = buf;
14123     while (1) {
14124         while ((i = getc(stdin)) != -1
14125                && (*bp++ = i) != '\n'
14126                && bp < &buf[1024])
14127         /* DO NOTHING */ ;
14128         *bp = '\0';
14129         fprintf(stdout, "%s", buf);
14130         fflush(stdin);
14131         if (i == -1)
14132             return 0;
14133         bp = buf;
14134     }
14135 }
14136 EOCP
14137         set tryp
14138         if eval $compile; then
14139             $rm -f tryp.out
14140             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14141             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14142                $cat >&4 <<EOM
14143 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14144 EOM
14145                 : now check for fflushall behaviour
14146                 case "$fflushall" in
14147                 '')     set try -DTRY_FFLUSH_ALL $output
14148                         if eval $compile; then
14149                                 $cat >&4 <<EOM
14150 (Now testing the other method--but note that this also may fail.)
14151 EOM
14152                                 $run ./try 2>/dev/null
14153                                 code=$?
14154                                 $from try.out
14155                                 if $test -s try.out -a "X$code" = X42; then
14156                                         fflushall="`$cat try.out`"
14157                                 fi
14158                         fi
14159                         $rm -f core try.core core.try.*
14160                         case "$fflushall" in
14161                         x)      $cat >&4 <<EOM
14162 Whew. Flushing explicitly all the stdio streams works.
14163 EOM
14164                                 fflushall="$define"
14165                                 ;;
14166                         '')     $cat >&4 <<EOM
14167 Sigh. Flushing explicitly all the stdio streams doesn't work.
14168 EOM
14169                                 fflushall="$undef"
14170                                 ;;
14171                         *)      $cat >&4 <<EOM
14172 Cannot figure out whether flushing stdio streams explicitly works or not.
14173 I'm assuming it doesn't.
14174 EOM
14175                                 fflushall="$undef"
14176                                 ;;
14177                         esac
14178                         ;;
14179                 "$define"|true|[yY]*)
14180                         fflushall="$define"
14181                         ;;
14182                 *)
14183                         fflushall="$undef"
14184                         ;;
14185                 esac
14186             else
14187                 $cat >&4 <<EOM
14188 All is futile.  Even fflush(stdin) clobbers input pipes!
14189 EOM
14190                 fflushall="$undef"
14191             fi
14192         else
14193             fflushall="$undef"
14194         fi
14195         $rm -f core tryp.c tryp.core core.tryp.*
14196         ;;
14197 *)      fflushall="$undef"
14198         ;;
14199 esac
14200
14201 case "$fflushNULL$fflushall" in
14202 undefundef)
14203         $cat <<EOM
14204 OK, I give up.  I cannot figure out how to flush pending stdio output.
14205 We won't be flushing handles at all before fork/exec/popen.
14206 EOM
14207         ;;
14208 esac
14209 $rm -f try.* try$exe_ext
14210
14211 : Store the full pathname to the ar program for use in the C program
14212 : Respect a hint or command line value for full_ar.
14213 case "$full_ar" in
14214 '') full_ar=$ar ;;
14215 esac
14216
14217 : Store the full pathname to the sed program for use in the C program
14218 full_sed=$sed
14219
14220 : see what type gids are declared as in the kernel
14221 echo " "
14222 echo "Looking for the type for group ids returned by getgid()."
14223 set gid_t gidtype xxx stdio.h sys/types.h
14224 eval $typedef
14225 case "$gidtype" in
14226 xxx)
14227         xxx=`./findhdr sys/user.h`
14228         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14229         case $1 in
14230         unsigned) dflt="$1 $2" ;;
14231         *) dflt="$1" ;;
14232         esac
14233         ;;
14234 *) dflt="$gidtype";;
14235 esac
14236 case "$gidtype" in
14237 gid_t) echo "gid_t found." ;;
14238 *)      rp="What is the type for group ids returned by getgid()?"
14239         . ./myread
14240         gidtype="$ans"
14241         ;;
14242 esac
14243
14244 echo " "
14245 case "$gidtype" in
14246 *_t) zzz="$gidtype"     ;;
14247 *)   zzz="gid"          ;;
14248 esac
14249 echo "Checking the size of $zzz..." >&4 
14250 cat > try.c <<EOCP
14251 #include <sys/types.h>
14252 #include <stdio.h>
14253 int main() {
14254     printf("%d\n", (int)sizeof($gidtype));
14255     exit(0);
14256 }
14257 EOCP
14258 set try
14259 if eval $compile_ok; then
14260         yyy=`$run ./try`
14261         case "$yyy" in
14262         '')     gidsize=4
14263                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14264                 ;;
14265         *)      gidsize=$yyy
14266                 echo "Your $zzz is $gidsize bytes long."
14267                 ;;
14268         esac
14269 else
14270         gidsize=4
14271         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14272 fi
14273
14274
14275 echo " "
14276 case "$gidtype" in
14277 *_t) zzz="$gidtype"     ;;
14278 *)   zzz="gid"          ;;
14279 esac
14280 echo "Checking the sign of $zzz..." >&4 
14281 cat > try.c <<EOCP
14282 #include <sys/types.h>
14283 #include <stdio.h>
14284 int main() {
14285         $gidtype foo = -1;
14286         if (foo < 0)
14287                 printf("-1\n");
14288         else
14289                 printf("1\n");
14290 }
14291 EOCP
14292 set try
14293 if eval $compile; then
14294         yyy=`$run ./try`
14295         case "$yyy" in
14296         '')     gidsign=1
14297                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14298                 ;;
14299         *)      gidsign=$yyy
14300                 case "$gidsign" in
14301                  1) echo "Your $zzz is unsigned." ;;
14302                 -1) echo "Your $zzz is signed."   ;;
14303                 esac
14304                 ;;
14305         esac
14306 else
14307         gidsign=1
14308         echo "(I can't compile the test program--guessing unsigned.)" >&4
14309 fi
14310
14311
14312 echo " "
14313
14314 if $test X"$quadtype" != X; then
14315
14316 echo "Checking how to print 64-bit integers..." >&4
14317
14318 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14319         $cat >try.c <<'EOCP'
14320 #include <sys/types.h>
14321 #include <stdio.h>
14322 int main() {
14323   int q = 12345678901;
14324   printf("%ld\n", q);
14325 }
14326 EOCP
14327         set try
14328         if eval $compile; then
14329                 yyy=`$run ./try`
14330                 case "$yyy" in
14331                 12345678901)
14332                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14333                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14334                         echo "We will use %d."
14335                         ;;
14336                 esac
14337         fi
14338 fi
14339
14340 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14341         $cat >try.c <<'EOCP'
14342 #include <sys/types.h>
14343 #include <stdio.h>
14344 int main() {
14345   long q = 12345678901;
14346   printf("%ld\n", q);
14347 }
14348 EOCP
14349         set try
14350         if eval $compile; then
14351                 yyy=`$run ./try`
14352                 case "$yyy" in
14353                 12345678901)
14354                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14355                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14356                         echo "We will use %ld."
14357                         ;;
14358                 esac
14359         fi
14360 fi
14361
14362 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14363         $cat >try.c <<'EOCP'
14364 #include <sys/types.h>
14365 #include <inttypes.h>
14366 #include <stdio.h>
14367 int main() {
14368   int64_t q = 12345678901;
14369   printf("%" PRId64 "\n", q);
14370 }
14371 EOCP
14372         set try
14373         if eval $compile; then
14374                 yyy=`$run ./try`
14375                 case "$yyy" in
14376                 12345678901)
14377                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14378                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14379                         echo "We will use the C9X style."
14380                         ;;
14381                 esac
14382         fi
14383 fi
14384
14385 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14386         $cat >try.c <<EOCP
14387 #include <sys/types.h>
14388 #include <stdio.h>
14389 int main() {
14390   $quadtype q = 12345678901;
14391   printf("%Ld\n", q);
14392 }
14393 EOCP
14394         set try
14395         if eval $compile; then
14396                 yyy=`$run ./try`
14397                 case "$yyy" in
14398                 12345678901)
14399                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14400                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14401                         echo "We will use %Ld."
14402                         ;;
14403                 esac
14404         fi
14405 fi
14406
14407 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14408         $cat >try.c <<'EOCP'
14409 #include <sys/types.h>
14410 #include <stdio.h>
14411 int main() {
14412   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14413   printf("%lld\n", q);
14414 }
14415 EOCP
14416         set try
14417         if eval $compile; then
14418                 yyy=`$run ./try`
14419                 case "$yyy" in
14420                 12345678901)
14421                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14422                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14423                         echo "We will use the %lld style."
14424                         ;;
14425                 esac
14426         fi
14427 fi
14428
14429 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14430         $cat >try.c <<EOCP
14431 #include <sys/types.h>
14432 #include <stdio.h>
14433 int main() {
14434   $quadtype q = 12345678901;
14435   printf("%qd\n", q);
14436 }
14437 EOCP
14438         set try
14439         if eval $compile; then
14440                 yyy=`$run ./try`
14441                 case "$yyy" in
14442                 12345678901)
14443                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14444                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14445                         echo "We will use %qd."
14446                         ;;
14447                 esac
14448         fi
14449 fi
14450
14451 if $test X"$sPRId64" = X; then
14452         echo "Cannot figure out how to print 64-bit integers." >&4
14453 fi
14454
14455 $rm -f try try.*
14456
14457 fi
14458
14459 case "$sPRId64" in
14460 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14461         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14462         ;;
14463 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14464         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14465         ;;
14466 esac
14467
14468
14469 echo " "
14470 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14471
14472 if $test X"$ivsize" = X8; then
14473         ivdformat="$sPRId64"
14474         uvuformat="$sPRIu64"
14475         uvoformat="$sPRIo64"
14476         uvxformat="$sPRIx64"
14477         uvXUformat="$sPRIXU64"
14478 else
14479         if $test X"$ivsize" = X"$longsize"; then
14480                 ivdformat='"ld"'
14481                 uvuformat='"lu"'
14482                 uvoformat='"lo"'
14483                 uvxformat='"lx"'
14484                 uvXUformat='"lX"'
14485         else
14486                 if $test X"$ivsize" = X"$intsize"; then
14487                         ivdformat='"d"'
14488                         uvuformat='"u"'
14489                         uvoformat='"o"'
14490                         uvxformat='"x"'
14491                         uvXUformat='"X"'
14492                 else
14493                         : far out
14494                         if $test X"$ivsize" = X"$shortsize"; then
14495                                 ivdformat='"hd"'
14496                                 uvuformat='"hu"'
14497                                 uvoformat='"ho"'
14498                                 uvxformat='"hx"'
14499                                 uvXUformat='"hX"'
14500                         fi
14501                 fi
14502         fi
14503 fi
14504
14505 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14506         nveformat="$sPRIeldbl"
14507         nvfformat="$sPRIfldbl"
14508         nvgformat="$sPRIgldbl"
14509         nvEUformat="$sPRIEUldbl"
14510         nvFUformat="$sPRIFUldbl"
14511         nvGUformat="$sPRIGUldbl"
14512 else
14513         nveformat='"e"'
14514         nvfformat='"f"'
14515         nvgformat='"g"'
14516         nvEUformat='"E"'
14517         nvFUformat='"F"'
14518         nvGUformat='"G"'
14519 fi
14520
14521 case "$ivdformat" in
14522 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14523     exit 1
14524     ;;
14525 esac
14526
14527
14528 echo " "
14529 $echo "Checking the format string to be used for gids..." >&4
14530
14531 case "$gidsign" in
14532 -1)     if $test X"$gidsize" = X"$ivsize"; then
14533                 gidformat="$ivdformat"
14534         else
14535                 if $test X"$gidsize" = X"$longsize"; then
14536                         gidformat='"ld"'
14537                 else
14538                         if $test X"$gidsize" = X"$intsize"; then
14539                                 gidformat='"d"'
14540                         else
14541                                 if $test X"$gidsize" = X"$shortsize"; then
14542                                         gidformat='"hd"'
14543                                 fi
14544                         fi
14545                 fi
14546         fi
14547         ;;
14548 *)      if $test X"$gidsize" = X"$uvsize"; then
14549                 gidformat="$uvuformat"
14550         else
14551                 if $test X"$gidsize" = X"$longsize"; then
14552                         gidformat='"lu"'
14553                 else
14554                         if $test X"$gidsize" = X"$intsize"; then
14555                                 gidformat='"u"'
14556                         else
14557                                 if $test X"$gidsize" = X"$shortsize"; then
14558                                         gidformat='"hu"'
14559                                 fi
14560                         fi
14561                 fi
14562         fi
14563         ;;
14564 esac
14565
14566 : see if getgroups exists
14567 set getgroups d_getgrps
14568 eval $inlibc
14569
14570 : see if setgroups exists
14571 set setgroups d_setgrps
14572 eval $inlibc
14573
14574
14575 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14576 echo " "
14577 case "$d_getgrps$d_setgrps" in
14578 *define*)
14579         case "$groupstype" in
14580         '') dflt="$gidtype" ;;
14581         *)  dflt="$groupstype" ;;
14582         esac
14583         $cat <<EOM
14584 What type of pointer is the second argument to getgroups() and setgroups()?
14585 Usually this is the same as group ids, $gidtype, but not always.
14586
14587 EOM
14588         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14589         . ./myread
14590         groupstype="$ans"
14591         ;;
14592 *)  groupstype="$gidtype";;
14593 esac
14594
14595 echo " "
14596 echo "Checking if your $make program sets \$(MAKE)..." >&4
14597 case "$make_set_make" in
14598 '')
14599         $sed 's/^X //' > testmake.mak << 'EOF'
14600 Xall:
14601 X       @echo 'maketemp="$(MAKE)"'
14602 EOF
14603         case "`$make -f testmake.mak 2>/dev/null`" in
14604         *maketemp=*) make_set_make='#' ;;
14605         *)      make_set_make="MAKE=$make" ;;
14606         esac
14607         $rm -f testmake.mak
14608         ;;
14609 esac
14610 case "$make_set_make" in
14611 '#') echo "Yup, it does.";;
14612 *) echo "Nope, it doesn't.";;
14613 esac
14614
14615 : see what type is used for mode_t
14616 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14617 set mode_t modetype int stdio.h sys/types.h
14618 eval $typedef_ask
14619
14620 : see if stdarg is available
14621 echo " "
14622 if $test `./findhdr stdarg.h`; then
14623         echo "<stdarg.h> found." >&4
14624         valstd="$define"
14625 else
14626         echo "<stdarg.h> NOT found." >&4
14627         valstd="$undef"
14628 fi
14629
14630 : see if varags is available
14631 echo " "
14632 if $test `./findhdr varargs.h`; then
14633         echo "<varargs.h> found." >&4
14634 else
14635         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14636 fi
14637
14638 : set up the varargs testing programs
14639 $cat > varargs.c <<EOP
14640 #ifdef I_STDARG
14641 #include <stdarg.h>
14642 #endif
14643 #ifdef I_VARARGS
14644 #include <varargs.h>
14645 #endif
14646
14647 #ifdef I_STDARG
14648 int f(char *p, ...)
14649 #else
14650 int f(va_alist)
14651 va_dcl
14652 #endif
14653 {
14654         va_list ap;
14655 #ifndef I_STDARG
14656         char *p;
14657 #endif
14658 #ifdef I_STDARG
14659         va_start(ap,p);
14660 #else
14661         va_start(ap);
14662         p = va_arg(ap, char *);
14663 #endif
14664         va_end(ap);
14665 }
14666 EOP
14667 $cat > varargs <<EOP
14668 $startsh
14669 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14670         echo "true"
14671 else
14672         echo "false"
14673 fi
14674 $rm -f varargs$_o
14675 EOP
14676 chmod +x varargs
14677
14678 : now check which varargs header should be included
14679 echo " "
14680 i_varhdr=''
14681 case "$valstd" in
14682 "$define")
14683         if `./varargs I_STDARG`; then
14684                 val='stdarg.h'
14685         elif `./varargs I_VARARGS`; then
14686                 val='varargs.h'
14687         fi
14688         ;;
14689 *)
14690         if `./varargs I_VARARGS`; then
14691                 val='varargs.h'
14692         fi
14693         ;;
14694 esac
14695 case "$val" in
14696 '')
14697 echo "I could not find the definition for va_dcl... You have problems..." >&4
14698         val="$undef"; set i_stdarg; eval $setvar
14699         val="$undef"; set i_varargs; eval $setvar
14700         ;;
14701 *) 
14702         set i_varhdr
14703         eval $setvar
14704         case "$i_varhdr" in
14705         stdarg.h)
14706                 val="$define"; set i_stdarg; eval $setvar
14707                 val="$undef"; set i_varargs; eval $setvar
14708                 ;;
14709         varargs.h)
14710                 val="$undef"; set i_stdarg; eval $setvar
14711                 val="$define"; set i_varargs; eval $setvar
14712                 ;;
14713         esac
14714         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14715 esac
14716 $rm -f varargs*
14717
14718 : see if we need va_copy
14719 echo " "
14720 case "$i_stdarg" in
14721 "$define")
14722         $cat >try.c <<EOCP
14723 #include <stdarg.h>
14724 #include <stdio.h>
14725 #$i_stdlib I_STDLIB
14726 #ifdef I_STDLIB
14727 #include <stdlib.h>
14728 #endif
14729 #include <signal.h>
14730
14731 int
14732 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14733 {
14734   return vfprintf(f, fmt, *valp);
14735 }
14736  
14737 int    
14738 myvfprintf(FILE *f, const  char *fmt, va_list val)
14739 {
14740   return ivfprintf(f, fmt, &val);
14741 }
14742       
14743 int
14744 myprintf(char *fmt, ...) 
14745 {
14746   va_list val;
14747   va_start(val, fmt);
14748   return myvfprintf(stdout, fmt, val); 
14749 }         
14750
14751 int
14752 main(int ac, char **av)
14753 {
14754   signal(SIGSEGV, exit);
14755
14756   myprintf("%s%cs all right, then\n", "that", '\'');                            
14757   exit(0);      
14758 }
14759 EOCP
14760         set try
14761         if eval $compile && $run ./try 2>&1 >/dev/null; then
14762                 case "`$run ./try`" in
14763                 "that's all right, then")
14764                         okay=yes
14765                         ;;
14766                 esac
14767         fi
14768         case "$okay" in
14769         yes)    echo "It seems that you don't need va_copy()." >&4
14770                 need_va_copy="$undef"
14771                 ;;
14772         *)      echo "It seems that va_copy() or similar will be needed." >&4
14773                 need_va_copy="$define"
14774                 ;;
14775         esac
14776         $rm -f try.* core core.* *.core *.core.*
14777         ;;
14778 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14779         ;;
14780 esac
14781
14782 : define a fucntion to check prototypes
14783 $cat > protochk <<EOSH
14784 $startsh
14785 cc="$cc"
14786 optimize="$optimize"
14787 ccflags="$ccflags"
14788 prototype="$prototype"
14789 define="$define"
14790 rm=$rm
14791 EOSH
14792
14793 $cat >> protochk <<'EOSH'
14794
14795 $rm -f try.c
14796 foo="$1"
14797 shift
14798 while test $# -ge 2; do
14799         case "$1" in
14800                 $define) echo "#include <$2>" >> try.c ;;
14801                 literal) echo "$2" >> try.c ;;
14802         esac
14803     shift 2
14804 done
14805 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14806 cat >> try.c <<'EOCP'
14807 #ifdef CAN_PROTOTYPE
14808 #define _(args) args
14809 #else
14810 #define _(args) ()
14811 #endif
14812 EOCP
14813 echo "$foo" >> try.c
14814 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14815 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14816 status=$?
14817 $rm -f try.[co]
14818 exit $status
14819 EOSH
14820 chmod +x protochk
14821 $eunicefix protochk
14822
14823 : see what type is used for size_t
14824 rp="What is the type used for the length parameter for string functions?"
14825 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14826 eval $typedef_ask
14827
14828 : check for type of arguments to gethostbyaddr. 
14829 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14830         case "$d_gethbyaddr" in
14831         $define)
14832                 $cat <<EOM
14833
14834 Checking to see what type of arguments are accepted by gethostbyaddr().
14835 EOM
14836                 hdrs="$define sys/types.h
14837                         $d_socket sys/socket.h 
14838                         $i_niin netinet/in.h 
14839                         $i_netdb netdb.h
14840                         $i_unistd unistd.h"
14841                 : The first arg can 'char *' or 'void *'
14842                 : The second arg is some of integral type
14843                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14844                         for yyy in size_t long int; do
14845                                 case "$netdb_host_type" in
14846                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14847                                         if ./protochk "$try" $hdrs; then
14848                                                 echo "Your system accepts $xxx for the first arg."
14849                                                 echo "...and $yyy for the second arg."
14850                                                 netdb_host_type="$xxx"
14851                                                 netdb_hlen_type="$yyy"
14852                                         fi
14853                                         ;;
14854                                 esac
14855                         done
14856                 done
14857                 : In case none of those worked, prompt the user.
14858                 case "$netdb_host_type" in
14859                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14860                         dflt='char *'
14861                         . ./myread
14862                         netdb_host_type=$ans
14863                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14864                         dflt="$sizetype"
14865                         . ./myread
14866                         netdb_hlen_type=$ans
14867                         ;;
14868                 esac
14869                 ;;
14870         *)      : no gethostbyaddr, so pick harmless defaults
14871                 netdb_host_type='char *'
14872                 netdb_hlen_type="$sizetype"
14873                 ;;
14874         esac
14875         # Remove the "const" if needed. -- but then we'll have a 
14876         # prototype clash!
14877         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14878 fi
14879
14880 : check for type of argument to gethostbyname. 
14881 if test "X$netdb_name_type" = X ; then
14882         case "$d_gethbyname" in
14883         $define)
14884                 $cat <<EOM
14885
14886 Checking to see what type of argument is accepted by gethostbyname().
14887 EOM
14888                 hdrs="$define sys/types.h
14889                         $d_socket sys/socket.h 
14890                         $i_niin netinet/in.h 
14891                         $i_netdb netdb.h
14892                         $i_unistd unistd.h"
14893                 for xxx in "const char *" "char *"; do
14894                         case "$netdb_name_type" in
14895                         '')     try="extern struct hostent *gethostbyname($xxx);"
14896                                 if ./protochk "$try" $hdrs; then
14897                                         echo "Your system accepts $xxx."
14898                                         netdb_name_type="$xxx"
14899                                 fi
14900                                 ;;
14901                         esac
14902                 done
14903                 : In case none of those worked, prompt the user.
14904                 case "$netdb_name_type" in
14905                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14906                         dflt='char *'
14907                         . ./myread
14908                         netdb_name_type=$ans
14909                         ;;
14910                 esac
14911                 ;;
14912         *)      : no gethostbyname, so pick harmless default
14913                 netdb_name_type='char *'
14914                 ;;
14915         esac
14916 fi
14917
14918 : check for type of 1st argument to getnetbyaddr. 
14919 if test "X$netdb_net_type" = X ; then
14920         case "$d_getnbyaddr" in
14921         $define)
14922                 $cat <<EOM
14923
14924 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14925 EOM
14926                 hdrs="$define sys/types.h
14927                         $d_socket sys/socket.h 
14928                         $i_niin netinet/in.h 
14929                         $i_netdb netdb.h
14930                         $i_unistd unistd.h"
14931                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14932                         case "$netdb_net_type" in
14933                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14934                                 if ./protochk "$try" $hdrs; then
14935                                         echo "Your system accepts $xxx."
14936                                         netdb_net_type="$xxx"
14937                                 fi
14938                                 ;;
14939                         esac
14940                 done
14941                 : In case none of those worked, prompt the user.
14942                 case "$netdb_net_type" in
14943                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14944                         dflt='long'
14945                         . ./myread
14946                         netdb_net_type=$ans
14947                         ;;
14948                 esac
14949                 ;;
14950         *)      : no getnetbyaddr, so pick harmless default
14951                 netdb_net_type='long'
14952                 ;;
14953         esac
14954 fi
14955 : locate the preferred pager for this system
14956 case "$pager" in
14957 '')
14958         dflt=''
14959         case "$pg" in
14960         /*) dflt=$pg;;
14961         [a-zA-Z]:/*) dflt=$pg;;
14962         esac
14963         case "$more" in
14964         /*) dflt=$more;;
14965         [a-zA-Z]:/*) dflt=$more;;
14966         esac
14967         case "$less" in
14968         /*) dflt=$less;;
14969         [a-zA-Z]:/*) dflt=$less;;
14970         esac
14971         case "$dflt" in
14972         '') dflt=/usr/ucb/more;;
14973         esac
14974         ;;
14975 *) dflt="$pager";;
14976 esac
14977 echo " "
14978 fn=f/
14979 rp='What pager is used on your system?'
14980 . ./getfile
14981 pager="$ans"
14982
14983 : see what type pids are declared as in the kernel
14984 rp="What is the type of process ids on this system?"
14985 set pid_t pidtype int stdio.h sys/types.h
14986 eval $typedef_ask
14987
14988 : Find earliest binary compatible site_perl subdirectory perl can use.
14989 case "$bincompat5005" in
14990 "$define") xs_apiversion='5.005' ;;
14991 *) xs_apiversion=$version ;;   # The current site_perl version.
14992 esac
14993 : Find earliest pure perl site_perl subdirectory perl can use.
14994 : The versioned directories started at 5.005.
14995 pm_apiversion='5.005'
14996
14997 : see if ar generates random libraries by itself
14998 echo " "
14999 echo "Checking how to generate random libraries on your machine..." >&4
15000 echo 'int bar1() { return bar2(); }' > bar1.c
15001 echo 'int bar2() { return 2; }' > bar2.c
15002 $cat > foo.c <<'EOP'
15003 int main() { printf("%d\n", bar1()); exit(0); }
15004 EOP
15005 $cc $ccflags -c bar1.c >/dev/null 2>&1
15006 $cc $ccflags -c bar2.c >/dev/null 2>&1
15007 $cc $ccflags -c foo.c >/dev/null 2>&1
15008 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
15009 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15010         $run ./foobar >/dev/null 2>&1; then
15011         echo "$ar appears to generate random libraries itself."
15012         orderlib=false
15013         ranlib=":"
15014 elif $ar ts bar$_a >/dev/null 2>&1 &&
15015         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15016         $run ./foobar >/dev/null 2>&1; then
15017                 echo "a table of contents needs to be added with '$ar ts'."
15018                 orderlib=false
15019                 ranlib="$ar ts"
15020 else
15021         case "$ranlib" in
15022         :) ranlib='';;
15023         '')
15024                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15025                 $test -f $ranlib || ranlib=''
15026                 ;;
15027         esac
15028         if $test -n "$ranlib"; then
15029                 echo "your system has '$ranlib'; we'll use that."
15030                 orderlib=false
15031         else
15032                 echo "your system doesn't seem to support random libraries"
15033                 echo "so we'll use lorder and tsort to order the libraries."
15034                 orderlib=true
15035                 ranlib=":"
15036         fi
15037 fi
15038 $rm -f foo* bar* 
15039
15040 : check for type of arguments to select. 
15041 case "$selecttype" in
15042 '') case "$d_select" in
15043         $define)
15044                 echo " "
15045                 $cat <<EOM
15046 Checking to see what type of arguments are accepted by select().
15047 EOM
15048                 hdrs="$define sys/types.h
15049                         $i_systime sys/time.h 
15050                         $i_sysselct sys/select.h
15051                         $d_socket sys/socket.h"
15052                 : The first arg can be int, unsigned, or size_t
15053                 : The last arg may or may not be 'const'
15054                 val=''
15055                 : void pointer has been seen but using that
15056                 : breaks the selectminbits test
15057                 for xxx in 'fd_set *' 'int *'; do
15058                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15059                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
15060                                         case "$val" in
15061                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15062                                                 if ./protochk "$try" $hdrs; then
15063                                                         echo "Your system accepts $xxx."
15064                                                         val="$xxx"
15065                                                 fi
15066                                                 ;;
15067                                         esac
15068                                 done
15069                         done
15070                 done
15071                 case "$val" in
15072                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15073                         case "$d_fd_set" in
15074                                 $define) dflt="fd_set *" ;;
15075                                 *)              dflt="int *" ;;
15076                         esac
15077                         . ./myread
15078                         val=$ans
15079                         ;;
15080                 esac
15081                 selecttype="$val"
15082                 ;;
15083         *)      : no select, so pick a harmless default
15084                 selecttype='int *'
15085                 ;;
15086         esac
15087         ;;
15088 esac
15089
15090 : check for the select 'width'
15091 case "$selectminbits" in
15092 '') case "$d_select" in
15093         $define)
15094                 $cat <<EOM
15095
15096 Checking to see on how many bits at a time your select() operates...
15097 EOM
15098                 $cat >try.c <<EOCP
15099 #include <sys/types.h>
15100 #$i_time I_TIME
15101 #$i_systime I_SYS_TIME
15102 #$i_systimek I_SYS_TIME_KERNEL
15103 #ifdef I_TIME
15104 #   include <time.h>
15105 #endif
15106 #ifdef I_SYS_TIME
15107 #   ifdef I_SYS_TIME_KERNEL
15108 #       define KERNEL
15109 #   endif
15110 #   include <sys/time.h>
15111 #   ifdef I_SYS_TIME_KERNEL
15112 #       undef KERNEL
15113 #   endif
15114 #endif
15115 #$i_sysselct I_SYS_SELECT
15116 #ifdef I_SYS_SELECT
15117 #include <sys/select.h>
15118 #endif
15119 #$d_socket HAS_SOCKET
15120 #ifdef HAS_SOCKET
15121 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15122 #endif
15123 #include <stdio.h>
15124 $selecttype b;
15125 #define S sizeof(*(b))
15126 #define MINBITS 64
15127 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15128 #define NBITS  (NBYTES * 8)
15129 int main() {
15130     char s[NBYTES];
15131     struct timeval t;
15132     int i;
15133     FILE* fp;
15134     int fd;
15135
15136     fclose(stdin);
15137     fp = fopen("try.c", "r");
15138     if (fp == 0)
15139       exit(1);
15140     fd = fileno(fp);
15141     if (fd < 0)
15142       exit(2);
15143     b = ($selecttype)s;
15144     for (i = 0; i < NBITS; i++)
15145         FD_SET(i, b);
15146     t.tv_sec  = 0;
15147     t.tv_usec = 0;
15148     select(fd + 1, b, 0, 0, &t);
15149     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15150     printf("%d\n", i + 1);
15151     return 0;
15152 }
15153 EOCP
15154                 set try
15155                 if eval $compile_ok; then
15156                         selectminbits=`$run ./try`
15157                         case "$selectminbits" in
15158                         '')     cat >&4 <<EOM
15159 Cannot figure out on how many bits at a time your select() operates.
15160 I'll play safe and guess it is 32 bits.
15161 EOM
15162                                 selectminbits=32
15163                                 bits="32 bits"
15164                                 ;;
15165                         1)      bits="1 bit" ;;
15166                         *)      bits="$selectminbits bits" ;;
15167                         esac
15168                         echo "Your select() operates on $bits at a time." >&4
15169                 else
15170                         rp='What is the minimum number of bits your select() operates on?'
15171                         case "$byteorder" in
15172                         1234|12345678)  dflt=32 ;;
15173                         *)              dflt=1  ;;
15174                         esac
15175                         . ./myread
15176                         val=$ans
15177                         selectminbits="$val"
15178                 fi
15179                 $rm -f try.* try
15180                 ;;
15181         *)      : no select, so pick a harmless default
15182                 selectminbits='32'
15183                 ;;
15184         esac
15185         ;;
15186 esac
15187
15188 : Trace out the files included by signal.h, then look for SIGxxx names.
15189 : Remove SIGARRAYSIZE used by HPUX.
15190 : Remove SIGSTKSIZE used by Linux.
15191 : Remove SIGSTKSZ used by Posix.
15192 : Remove SIGTYP void lines used by OS2.
15193 : Some cpps, like os390, dont give the file name anywhere
15194 if [ "X$fieldn" = X ]; then
15195         : Just make some guesses.  We check them later.
15196         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15197 else
15198         xxx=`echo '#include <signal.h>' |
15199         $cppstdin $cppminus $cppflags 2>/dev/null |
15200         $grep '^[       ]*#.*include' | 
15201         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15202 fi
15203 : Check this list of files to be sure we have parsed the cpp output ok.
15204 : This will also avoid potentially non-existent files, such 
15205 : as ../foo/bar.h
15206 xxxfiles=''
15207 for xx in $xxx /dev/null ; do
15208         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15209 done
15210 : If we have found no files, at least try signal.h
15211 case "$xxxfiles" in
15212 '')     xxxfiles=`./findhdr signal.h` ;;
15213 esac
15214 xxx=`awk '
15215 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15216         print substr($2, 4, 20)
15217 }
15218 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15219         print substr($3, 4, 20)
15220 }' $xxxfiles`
15221 : Append some common names just in case the awk scan failed.
15222 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15223 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15224 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15225 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15226 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15227
15228 : generate a few handy files for later
15229 $cat > signal.c <<'EOCP'
15230 #include <sys/types.h>
15231 #include <signal.h>
15232 #include <stdio.h>
15233 int main() {
15234
15235 /* Strange style to avoid deeply-nested #if/#else/#endif */
15236 #ifndef NSIG
15237 #  ifdef _NSIG
15238 #    define NSIG (_NSIG)
15239 #  endif
15240 #endif
15241
15242 #ifndef NSIG
15243 #  ifdef SIGMAX
15244 #    define NSIG (SIGMAX+1)
15245 #  endif
15246 #endif
15247
15248 #ifndef NSIG
15249 #  ifdef SIG_MAX
15250 #    define NSIG (SIG_MAX+1)
15251 #  endif
15252 #endif
15253
15254 #ifndef NSIG
15255 #  ifdef MAXSIG
15256 #    define NSIG (MAXSIG+1)
15257 #  endif
15258 #endif
15259
15260 #ifndef NSIG
15261 #  ifdef MAX_SIG
15262 #    define NSIG (MAX_SIG+1)
15263 #  endif
15264 #endif
15265
15266 #ifndef NSIG
15267 #  ifdef SIGARRAYSIZE
15268 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15269 #  endif
15270 #endif
15271
15272 #ifndef NSIG
15273 #  ifdef _sys_nsig
15274 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15275 #  endif
15276 #endif
15277
15278 /* Default to some arbitrary number that's big enough to get most
15279    of the common signals.
15280 */
15281 #ifndef NSIG
15282 #    define NSIG 50
15283 #endif
15284
15285 printf("NSIG %d\n", NSIG);
15286
15287 #ifndef JUST_NSIG
15288
15289 EOCP
15290
15291 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15292 {
15293         printf "#ifdef SIG"; printf $1; printf "\n"
15294         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15295         printf $1; printf ");\n"
15296         printf "#endif\n"
15297 }
15298 END {
15299         printf "#endif /* JUST_NSIG */\n";
15300         printf "exit(0);\n}\n";
15301 }
15302 ' >>signal.c
15303 $cat >signal.awk <<'EOP'
15304 BEGIN { ndups = 0 }
15305 $1 ~ /^NSIG$/ { nsig = $2 }
15306 ($1 !~ /^NSIG$/) && (NF == 2) {
15307     if ($2 > maxsig) { maxsig = $2 }
15308     if (sig_name[$2]) {
15309         dup_name[ndups] = $1
15310         dup_num[ndups] = $2
15311         ndups++ 
15312     }
15313     else {
15314         sig_name[$2] = $1
15315         sig_num[$2] = $2
15316     }
15317 }
15318 END { 
15319     if (nsig == 0) {
15320         nsig = maxsig + 1
15321     }
15322     printf("NSIG %d\n", nsig);
15323     for (n = 1; n < nsig; n++) {
15324         if (sig_name[n]) {
15325             printf("%s %d\n", sig_name[n], sig_num[n])
15326         }
15327         else {
15328             printf("NUM%d %d\n", n, n) 
15329         }
15330     }
15331     for (n = 0; n < ndups; n++) {
15332         printf("%s %d\n", dup_name[n], dup_num[n])
15333     }
15334 }
15335 EOP
15336 $cat >signal_cmd <<EOS
15337 $startsh
15338 if $test -s signal.lst; then
15339     echo "Using your existing signal.lst file"
15340         exit 0
15341 fi
15342 xxx="$xxx"
15343 EOS
15344 $cat >>signal_cmd <<'EOS'
15345
15346 set signal
15347 if eval $compile_ok; then
15348         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15349 else
15350         echo "(I can't seem be able to compile the whole test program)" >&4
15351         echo "(I'll try it in little pieces.)" >&4
15352         set signal -DJUST_NSIG
15353         if eval $compile_ok; then
15354                 $run ./signal$_exe > signal.nsg
15355                 $cat signal.nsg
15356         else
15357                 echo "I can't seem to figure out how many signals you have." >&4
15358                 echo "Guessing 50." >&4
15359                 echo 'NSIG 50' > signal.nsg
15360         fi
15361         : Now look at all the signal names, one at a time.
15362         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15363                 $cat > signal.c <<EOCP
15364 #include <sys/types.h>
15365 #include <signal.h>
15366 #include <stdio.h>
15367 int main() {
15368 printf("$xx %d\n", SIG${xx});
15369 return 0;
15370 }
15371 EOCP
15372                 set signal
15373                 if eval $compile; then
15374                         echo "SIG${xx} found."
15375                         $run ./signal$_exe  >> signal.ls1
15376                 else
15377                         echo "SIG${xx} NOT found."
15378                 fi
15379         done
15380         if $test -s signal.ls1; then
15381                 $cat signal.nsg signal.ls1 |
15382                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15383         fi
15384
15385 fi
15386 if $test -s signal.lst; then
15387         :
15388 else
15389         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15390         echo 'kill -l' >signal
15391         set X `csh -f <signal`
15392         $rm -f signal
15393         shift
15394         case $# in
15395         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15396         esac
15397         echo $@ | $tr ' ' $trnl | \
15398             $awk '{ printf "%s %d\n", $1, ++s; }
15399                   END { printf "NSIG %d\n", ++s }' >signal.lst
15400 fi
15401 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15402 EOS
15403 chmod a+x signal_cmd
15404 $eunicefix signal_cmd
15405
15406 : generate list of signal names
15407 echo " "
15408 case "$sig_name_init" in
15409 '') doinit=yes ;;
15410 *)  case "$sig_num_init" in
15411     ''|*,*) doinit=yes ;;
15412     esac ;;
15413 esac
15414 case "$doinit" in
15415 yes)
15416         echo "Generating a list of signal names and numbers..." >&4
15417         . ./signal_cmd
15418         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15419         sig_name=`$awk 'BEGIN { printf "ZERO " }
15420                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15421         sig_num=`$awk  'BEGIN { printf "0 " }
15422                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15423         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15424                              !/^NSIG/   { printf "\"%s\", ", $1 }
15425                              END        { printf "0\n" }' signal.lst`
15426         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15427                              !/^NSIG/   { printf "%d, ", $2}
15428                              END        { printf "0\n"}' signal.lst`
15429         ;;
15430 esac
15431 echo "The following $sig_count signals are available:"
15432 echo " "
15433 echo $sig_name | $awk \
15434 'BEGIN { linelen = 0 }
15435 {
15436         for (i = 1; i <= NF; i++) {
15437                 name = "SIG" $i " "
15438                 linelen = linelen + length(name)
15439                 if (linelen > 70) {
15440                         printf "\n"
15441                         linelen = length(name)
15442                 }
15443                 printf "%s", name
15444         }
15445         printf "\n"
15446 }'
15447 sig_size=`echo $sig_name | awk '{print NF}'`
15448 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15449
15450 echo " "
15451 case "$sizetype" in
15452 *_t) zzz="$sizetype"    ;;
15453 *)   zzz="filesize"     ;;
15454 esac
15455 echo "Checking the size of $zzz..." >&4 
15456 cat > try.c <<EOCP
15457 #include <sys/types.h>
15458 #include <stdio.h>
15459 int main() {
15460     printf("%d\n", (int)sizeof($sizetype));
15461     exit(0);
15462 }
15463 EOCP
15464 set try
15465 if eval $compile_ok; then
15466         yyy=`$run ./try`
15467         case "$yyy" in
15468         '')     sizesize=4
15469                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15470                 ;;
15471         *)      sizesize=$yyy
15472                 echo "Your $zzz size is $sizesize bytes."
15473                 ;;
15474         esac
15475 else
15476         sizesize=4
15477         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15478 fi
15479
15480
15481 : check for socklen_t
15482 echo " "
15483 echo "Checking to see if you have socklen_t..." >&4
15484 $cat >try.c <<EOCP
15485 #include <sys/types.h>
15486 #$d_socket HAS_SOCKET
15487 #ifdef HAS_SOCKET
15488 #include <sys/socket.h>
15489 #endif
15490 int main() { socklen_t x = 16; }
15491 EOCP
15492 set try
15493 if eval $compile; then
15494         val="$define"
15495         echo "You have socklen_t."
15496 else
15497         val="$undef"
15498         echo "You do not have socklen_t."
15499         case "$sizetype" in
15500         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15501         esac
15502 fi
15503 $rm -f try try.*
15504 set d_socklen_t
15505 eval $setvar
15506
15507 : see if this is a socks.h system
15508 set socks.h i_socks
15509 eval $inhdr
15510
15511 : check for type of the size argument to socket calls
15512 case "$d_socket" in
15513 "$define")
15514         $cat <<EOM
15515
15516 Checking to see what type is the last argument of accept().
15517 EOM
15518         yyy=''
15519         case "$d_socklen_t" in
15520         "$define") yyy="$yyy socklen_t"
15521         esac
15522         yyy="$yyy $sizetype int long unsigned"
15523         for xxx in $yyy; do
15524                 case "$socksizetype" in
15525                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15526                         case "$usesocks" in
15527                         "$define")
15528                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15529                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15530                                         socksizetype="$xxx"
15531                                 fi
15532                                 ;;
15533                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15534                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15535                                         socksizetype="$xxx"
15536                                 fi
15537                                 ;;
15538                         esac
15539                         ;;
15540                 esac
15541         done
15542 : In case none of those worked, prompt the user.
15543         case "$socksizetype" in
15544         '')     rp='What is the type for socket address structure sizes?'
15545                 dflt='int'
15546                 . ./myread
15547                 socksizetype=$ans
15548                 ;;
15549         esac
15550         ;;
15551 *)      : no sockets, so pick relatively harmless default
15552         socksizetype='int'
15553         ;;
15554 esac
15555
15556 : see what type is used for signed size_t
15557 set ssize_t ssizetype int stdio.h sys/types.h
15558 eval $typedef
15559 dflt="$ssizetype"
15560 $cat > try.c <<EOM
15561 #include <stdio.h>
15562 #include <sys/types.h>
15563 #define Size_t $sizetype
15564 #define SSize_t $dflt
15565 int main()
15566 {
15567         if (sizeof(Size_t) == sizeof(SSize_t))
15568                 printf("$dflt\n");
15569         else if (sizeof(Size_t) == sizeof(int))
15570                 printf("int\n");
15571         else 
15572                 printf("long\n");
15573         exit(0);
15574 }
15575 EOM
15576 echo " "
15577 set try
15578 if eval $compile_ok && $run ./try > /dev/null; then
15579         ssizetype=`$run ./try`
15580         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15581 else
15582         $cat >&4 <<EOM
15583 Help! I can't compile and run the ssize_t test program: please enlighten me!
15584 (This is probably a misconfiguration in your system or libraries, and
15585 you really ought to fix it.  Still, I'll try anyway.)
15586
15587 I need a type that is the same size as $sizetype, but is guaranteed to
15588 be signed.  Common values are ssize_t, int and long.
15589
15590 EOM
15591         rp="What signed type is the same size as $sizetype?"
15592         . ./myread
15593         ssizetype="$ans"
15594 fi
15595 $rm -f try try.*
15596
15597 : see what type of char stdio uses.
15598 echo " "
15599 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15600 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15601         echo "Your stdio uses unsigned chars." >&4
15602         stdchar="unsigned char"
15603 else
15604         echo "Your stdio uses signed chars." >&4
15605         stdchar="char"
15606 fi
15607 $rm -f stdioh
15608
15609
15610
15611 : see if time exists
15612 echo " "
15613 if test "X$d_time" = X -o X"$timetype" = X; then
15614     if set time val -f d_time; eval $csym; $val; then
15615                 echo 'time() found.' >&4
15616                 val="$define"
15617                 rp="What is the type returned by time() on this system?"
15618                 set time_t timetype long stdio.h sys/types.h
15619                 eval $typedef_ask
15620     else
15621                 echo 'time() not found, hope that will do.' >&4
15622                 val="$undef"
15623                 timetype='int';
15624     fi
15625     set d_time
15626     eval $setvar
15627 fi
15628
15629 : see what type uids are declared as in the kernel
15630 echo " "
15631 echo "Looking for the type for user ids returned by getuid()."
15632 set uid_t uidtype xxx stdio.h sys/types.h
15633 eval $typedef
15634 case "$uidtype" in
15635 xxx)
15636         xxx=`./findhdr sys/user.h`
15637         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15638         case $1 in
15639         unsigned) dflt="$1 $2" ;;
15640         *) dflt="$1" ;;
15641         esac
15642         ;;
15643 *) dflt="$uidtype";;
15644 esac
15645 case "$uidtype" in
15646 uid_t)  echo "uid_t found." ;;
15647 *)      rp="What is the type for user ids returned by getuid()?"
15648         . ./myread
15649         uidtype="$ans"
15650         ;;
15651 esac
15652
15653 echo " "
15654 case "$uidtype" in
15655 *_t) zzz="$uidtype"     ;;
15656 *)   zzz="uid"          ;;
15657 esac
15658 echo "Checking the size of $zzz..." >&4 
15659 cat > try.c <<EOCP
15660 #include <sys/types.h>
15661 #include <stdio.h>
15662 int main() {
15663     printf("%d\n", (int)sizeof($uidtype));
15664     exit(0);
15665 }
15666 EOCP
15667 set try
15668 if eval $compile_ok; then
15669         yyy=`$run ./try`
15670         case "$yyy" in
15671         '')     uidsize=4
15672                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15673                 ;;
15674         *)      uidsize=$yyy
15675                 echo "Your $zzz is $uidsize bytes long."
15676                 ;;
15677         esac
15678 else
15679         uidsize=4
15680         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15681 fi
15682
15683 echo " "
15684 case "$uidtype" in
15685 *_t) zzz="$uidtype"     ;;
15686 *)   zzz="uid"          ;;
15687 esac
15688 echo "Checking the sign of $zzz..." >&4
15689 cat > try.c <<EOCP
15690 #include <sys/types.h>
15691 #include <stdio.h>
15692 int main() {
15693         $uidtype foo = -1;
15694         if (foo < 0)
15695                 printf("-1\n");
15696         else
15697                 printf("1\n");
15698 }
15699 EOCP
15700 set try
15701 if eval $compile; then
15702         yyy=`$run ./try`
15703         case "$yyy" in
15704         '')     uidsign=1
15705                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15706                 ;;
15707         *)      uidsign=$yyy
15708                 case "$uidsign" in
15709                  1) echo "Your $zzz is unsigned." ;;
15710                 -1) echo "Your $zzz is signed."   ;;
15711                 esac
15712                 ;;
15713         esac
15714 else
15715         uidsign=1
15716         echo "(I can't compile the test program--guessing unsigned.)" >&4
15717 fi
15718
15719
15720
15721 echo " "
15722 $echo "Checking the format string to be used for uids..." >&4
15723
15724 case "$uidsign" in
15725 -1)     if $test X"$uidsize" = X"$ivsize"; then
15726                 uidformat="$ivdformat"
15727         else
15728                 if $test X"$uidsize" = X"$longsize"; then
15729                         uidformat='"ld"'
15730                 else
15731                         if $test X"$uidsize" = X"$intsize"; then
15732                                 uidformat='"d"'
15733                         else
15734                                 if $test X"$uidsize" = X"$shortsize"; then
15735                                         uidformat='"hd"'
15736                                 fi
15737                         fi
15738                 fi
15739         fi
15740         ;;
15741 *)      if $test X"$uidsize" = X"$uvsize"; then
15742                 uidformat="$uvuformat"
15743         else
15744                 if $test X"$uidsize" = X"$longsize"; then
15745                         uidformat='"lu"'
15746                 else
15747                         if $test X"$uidsize" = X"$intsize"; then
15748                                 uidformat='"u"'
15749                         else
15750                                 if $test X"$uidsize" = X"$shortsize"; then
15751                                         uidformat='"hu"'
15752                                 fi
15753                         fi
15754                 fi
15755         fi
15756         ;;
15757 esac
15758
15759 : determine compiler compiler
15760 case "$yacc" in
15761 '')
15762         dflt=yacc;;
15763 *)
15764         dflt="$yacc";;
15765 esac
15766 echo " "
15767 comp='yacc'
15768 if $test -f "$byacc"; then
15769         dflt="$byacc"
15770         comp="byacc or $comp"
15771 fi
15772 if $test -f "$bison"; then
15773         comp="$comp or bison -y"
15774 fi
15775 rp="Which compiler compiler ($comp) shall I use?"
15776 . ./myread
15777 yacc="$ans"
15778 case "$yacc" in
15779 *bis*)
15780         case "$yacc" in
15781         *-y*) ;;
15782         *)
15783                 yacc="$yacc -y"
15784                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15785                 ;;
15786         esac
15787         ;;
15788 esac
15789
15790 : see if fcntl.h is there
15791 val=''
15792 set fcntl.h val
15793 eval $inhdr
15794
15795 : see if we can include fcntl.h
15796 case "$val" in
15797 "$define")
15798         echo " "
15799         if $h_fcntl; then
15800                 val="$define"
15801                 echo "We'll be including <fcntl.h>." >&4
15802         else
15803                 val="$undef"
15804                 if $h_sysfile; then
15805         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15806                 else
15807                         echo "We won't be including <fcntl.h>." >&4
15808                 fi
15809         fi
15810         ;;
15811 *)
15812         h_fcntl=false
15813         val="$undef"
15814         ;;
15815 esac
15816 set i_fcntl
15817 eval $setvar
15818
15819 : see if this is a fp.h system
15820 set fp.h i_fp
15821 eval $inhdr
15822
15823 : see if this is a fp_class.h system
15824 set fp_class.h i_fp_class
15825 eval $inhdr
15826
15827 : see if this is a ieeefp.h system
15828 set ieeefp.h i_ieeefp
15829 eval $inhdr
15830
15831 : see if this is a libutil.h system
15832 set libutil.h i_libutil
15833 eval $inhdr
15834
15835 : see if locale.h is available
15836 set locale.h i_locale
15837 eval $inhdr
15838
15839 : see if mach cthreads are available
15840 if test "X$usethreads" = "X$define"; then
15841         set mach/cthreads.h i_machcthr
15842         eval $inhdr
15843 else
15844         i_machcthr="$undef"
15845 fi
15846
15847
15848
15849 : see if this is a math.h system
15850 set math.h i_math
15851 eval $inhdr
15852
15853 : see if this is a mntent.h system
15854 set mntent.h i_mntent
15855 eval $inhdr
15856
15857 : see if ndbm.h is available
15858 set ndbm.h t_ndbm
15859 eval $inhdr
15860 case "$t_ndbm" in
15861 $define)
15862         : see if dbm_open exists
15863         set dbm_open d_dbm_open
15864         eval $inlibc
15865         case "$d_dbm_open" in
15866         $undef)
15867                 t_ndbm="$undef"
15868                 echo "We won't be including <ndbm.h>"
15869                 ;;
15870         esac
15871         ;;
15872 esac
15873 val="$t_ndbm"
15874 set i_ndbm
15875 eval $setvar
15876
15877 : see if net/errno.h is available
15878 val=''
15879 set net/errno.h val
15880 eval $inhdr
15881
15882 : Unfortunately, it causes problems on some systems.  Arrgh.
15883 case "$val" in
15884 $define)
15885         cat > try.c <<'EOM'
15886 #include <stdio.h>
15887 #include <errno.h>
15888 #include <net/errno.h>
15889 int func()
15890 {
15891         return ENOTSOCK;
15892 }
15893 EOM
15894         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15895                 echo "We'll be including <net/errno.h>." >&4
15896         else
15897                 echo "We won't be including <net/errno.h>." >&4
15898                 val="$undef"
15899         fi
15900         $rm -f try.* try
15901         ;;
15902 esac
15903 set i_neterrno
15904 eval $setvar
15905
15906 : see if netinet/tcp.h is available
15907 set netinet/tcp.h i_netinettcp
15908 eval $inhdr
15909
15910 : see if this is a poll.h system
15911 set poll.h i_poll
15912 eval $inhdr
15913
15914 : see if this is a prot.h system
15915 set prot.h i_prot
15916 eval $inhdr
15917
15918 echo " "
15919 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15920 $cat <<'EOSH' > Cppsym.know
15921 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15922 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15923 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15924 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15925 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15926 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15927 bull c cadmus clipper CMU COFF COMPILER_VERSION
15928 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15929 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15930 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
15931 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15932 GLIBC GLIBC_MINOR
15933 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
15934 H3050R H3050RX hbullx20 hcx host_mips
15935 hp200 hp300 hp700 HP700 hp800 hp9000
15936 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15937 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15938 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15939 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15940 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15941 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15942 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15943 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15944 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15945 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15946 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15947 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15948 MATH_HAS_NO_SIDE_EFFECTS
15949 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15950 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15951 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15952 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15953 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15954 NetBSD news1500 news1700 news1800 news1900 news3700
15955 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15956 ns32016 ns32332 ns32k nsc32000
15957 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15958 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15959 pc532 pdp11 PGC PIC plexus PORTAR posix
15960 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15961 POSIX_C_SOURCE POSIX_SOURCE POWER
15962 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15963 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15964 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15965 sony sony_news sonyrisc sparc sparclite spectrum
15966 stardent stdc STDC_EXT stratos sun sun3 sun386
15967 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15968 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15969 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15970 sysV68 sysV88 Tek4132 Tek4300 titan
15971 TM3200 TM5400 TM5600
15972 tower tower32 tower32_200 tower32_600 tower32_700
15973 tower32_800 tower32_850 tss
15974 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15975 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15976 unix UNIX95 UNIX99 unixpc unos
15977 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
15978 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
15979 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
15980 USGr4 USGr4_2
15981 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15982 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15983 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15984 z8000
15985 EOSH
15986 # Maybe put other stuff here too.
15987 cat <<EOSH >>Cppsym.know
15988 $osname
15989 EOSH
15990 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15991 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15992 $cat Cppsym.know > Cppsym.c
15993 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15994 $rm -f Cppsym.a Cppsym.b Cppsym.c
15995 cat <<EOSH > Cppsym
15996 $startsh
15997 if $test \$# -gt 0; then
15998     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15999     if $test -s Cppsym.got; then
16000         $rm -f Cppsym.got
16001         exit 0
16002     fi
16003     $rm -f Cppsym.got
16004     exit 1
16005 else
16006     $tr " " "$trnl" | ./Cppsym.try
16007     exit 0
16008 fi
16009 EOSH
16010 chmod +x Cppsym
16011 $eunicefix Cppsym
16012 cat <<EOSH > Cppsym.try
16013 $startsh
16014 cat <<'EOCP' > try.c
16015 #include <stdio.h>
16016 int main() {
16017 EOCP
16018 $awk \\
16019 EOSH
16020 cat <<'EOSH' >> Cppsym.try
16021 'length($1) > 0 {
16022     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
16023     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
16024     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
16025     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
16026 }'       >> try.c
16027 echo 'return 0;}' >> try.c
16028 EOSH
16029 cat <<EOSH >> Cppsym.try
16030 ccflags="$ccflags"
16031 case "$osname-$gccversion" in
16032 irix-) ccflags="\$ccflags -woff 1178" ;;
16033 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16034 esac
16035 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
16036 EOSH
16037 chmod +x Cppsym.try
16038 $eunicefix Cppsym.try
16039 ./Cppsym < Cppsym.know > Cppsym.true
16040 : now check the C compiler for additional symbols
16041 postprocess_cc_v=''
16042 case "$osname" in
16043 aix) postprocess_cc_v="|$tr , ' '" ;;
16044 esac
16045 $cat >ccsym <<EOS
16046 $startsh
16047 $cat >tmp.c <<EOF
16048 extern int foo;
16049 EOF
16050 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16051 do
16052         case "\$i" in
16053         -D*) echo "\$i" | $sed 's/^-D//';;
16054         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16055         esac
16056 done
16057 $rm -f try.c
16058 EOS
16059 postprocess_cc_v=''
16060 chmod +x ccsym
16061 $eunicefix ccsym
16062 ./ccsym > ccsym1.raw
16063 if $test -s ccsym1.raw; then
16064        $sort ccsym1.raw | $uniq >ccsym.raw
16065 else
16066        mv ccsym1.raw ccsym.raw
16067 fi
16068
16069 $awk '/\=/ { print $0; next }
16070         { print $0"=1" }' ccsym.raw >ccsym.list
16071 $awk '/\=/ { print $0; next }
16072         { print $0"=1" }' Cppsym.true >ccsym.true
16073 $comm -13 ccsym.true ccsym.list >ccsym.own
16074 $comm -12 ccsym.true ccsym.list >ccsym.com
16075 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16076 also=''
16077 if $test -z ccsym.raw; then
16078         echo "Your C compiler doesn't seem to define any symbols!" >&4
16079         echo " "
16080         echo "However, your C preprocessor defines the following symbols:"
16081         $cat Cppsym.true
16082         ccsymbols=''
16083         cppsymbols=`$cat Cppsym.true`
16084         cppsymbols=`echo $cppsymbols`
16085         cppccsymbols="$cppsymbols"
16086 else
16087         if $test -s ccsym.com; then
16088                 echo "Your C compiler and pre-processor define these symbols:"
16089                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16090                 also='also '
16091                 symbols='ones'
16092                 cppccsymbols=`$cat ccsym.com`
16093                 cppccsymbols=`echo $cppccsymbols`
16094                 $test "$silent" || sleep 1
16095         fi
16096         if $test -s ccsym.cpp; then
16097                 $test "$also" && echo " "
16098                 echo "Your C pre-processor ${also}defines the following symbols:"
16099                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16100                 also='further '
16101                 cppsymbols=`$cat ccsym.cpp`
16102                 cppsymbols=`echo $cppsymbols`
16103                 $test "$silent" || sleep 1
16104         fi
16105         if $test -s ccsym.own; then
16106                 $test "$also" && echo " "
16107                 echo "Your C compiler ${also}defines the following cpp symbols:"
16108                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16109                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16110                 ccsymbols=`$cat ccsym.own`
16111                 ccsymbols=`echo $ccsymbols`
16112                 $test "$silent" || sleep 1
16113         fi
16114 fi
16115
16116 : see if this is a termio system
16117 val="$undef"
16118 val2="$undef"
16119 val3="$undef"
16120 if $test `./findhdr termios.h`; then
16121         set tcsetattr i_termios
16122         eval $inlibc
16123         val3="$i_termios"
16124 fi
16125 echo " "
16126 case "$val3" in
16127 "$define") echo "You have POSIX termios.h... good!" >&4;;
16128 *) if ./Cppsym pyr; then
16129                 case "`/bin/universe`" in
16130                 ucb) if $test `./findhdr sgtty.h`; then
16131                                 val2="$define"
16132                                 echo "<sgtty.h> found." >&4
16133                         else
16134                                 echo "System is pyramid with BSD universe."
16135                                 echo "<sgtty.h> not found--you could have problems." >&4
16136                         fi;;
16137                 *) if $test `./findhdr termio.h`; then
16138                                 val="$define"
16139                                 echo "<termio.h> found." >&4
16140                         else
16141                                 echo "System is pyramid with USG universe."
16142                                 echo "<termio.h> not found--you could have problems." >&4
16143                         fi;;
16144                 esac
16145         elif ./usg; then
16146                 if $test `./findhdr termio.h`; then
16147                         echo "<termio.h> found." >&4
16148                         val="$define"
16149                 elif $test `./findhdr sgtty.h`; then
16150                         echo "<sgtty.h> found." >&4
16151                         val2="$define"
16152                 else
16153 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16154                 fi
16155         else
16156                 if $test `./findhdr sgtty.h`; then
16157                         echo "<sgtty.h> found." >&4
16158                         val2="$define"
16159                 elif $test `./findhdr termio.h`; then
16160                         echo "<termio.h> found." >&4
16161                         val="$define"
16162                 else
16163 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16164                 fi
16165         fi;;
16166 esac
16167 set i_termio; eval $setvar
16168 val=$val2; set i_sgtty; eval $setvar
16169 val=$val3; set i_termios; eval $setvar
16170
16171 : see if this is a shadow.h system
16172 set shadow.h i_shadow
16173 eval $inhdr
16174
16175 : see if stddef is available
16176 set stddef.h i_stddef
16177 eval $inhdr
16178
16179 : see if this is a sunmath.h system
16180 set sunmath.h i_sunmath
16181 eval $inhdr
16182
16183 : see if sys/access.h is available
16184 set sys/access.h i_sysaccess
16185 eval $inhdr
16186
16187 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16188 set sys/filio.h i_sysfilio
16189 eval $inhdr
16190 echo " "
16191 if $test `./findhdr sys/ioctl.h`; then
16192         val="$define"
16193         echo '<sys/ioctl.h> found.' >&4
16194 else
16195         val="$undef"
16196         if $test $i_sysfilio = "$define"; then
16197             echo '<sys/ioctl.h> NOT found.' >&4
16198         else
16199                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16200                 $test $i_termio = "$define" && xxx="termio.h"
16201                 $test $i_termios = "$define" && xxx="termios.h"
16202 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16203         fi
16204 fi
16205 set i_sysioctl
16206 eval $setvar
16207
16208 : see if socket ioctl defs are in sys/sockio.h
16209 echo " "
16210 xxx=`./findhdr sys/sockio.h`
16211 if $test "$xxx"; then
16212         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16213                 val="$define"
16214                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16215         else
16216                 val="$undef"
16217                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16218         fi
16219 else
16220         val="$undef"
16221         $cat <<EOM
16222 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16223 EOM
16224 fi
16225 set i_syssockio
16226 eval $setvar
16227
16228
16229 : see if this is a syslog.h system
16230 set syslog.h i_syslog
16231 eval $inhdr
16232
16233
16234 : see if this is a sys/mode.h system
16235 set sys/mode.h i_sysmode
16236 eval $inhdr
16237
16238 : see if sys/resource.h has to be included
16239 set sys/resource.h i_sysresrc
16240 eval $inhdr
16241
16242 : see if sys/security.h is available
16243 set sys/security.h i_syssecrt
16244 eval $inhdr
16245
16246 : see if this is a sys/statvfs.h system
16247 set sys/statvfs.h i_sysstatvfs
16248 eval $inhdr
16249
16250 : see if this is a sys/un.h system
16251 set sys/un.h i_sysun
16252 eval $inhdr
16253
16254
16255 : see if this is a sys/utsname.h system
16256 set sys/utsname.h i_sysutsname
16257 eval $inhdr
16258
16259 : see if this is a syswait system
16260 set sys/wait.h i_syswait
16261 eval $inhdr
16262
16263 : see if this is a ustat.h system
16264 set ustat.h i_ustat
16265 eval $inhdr
16266
16267 : see if this is an utime system
16268 set utime.h i_utime
16269 eval $inhdr
16270
16271 : see if this is a values.h system
16272 set values.h i_values
16273 eval $inhdr
16274
16275 : see if this is a vfork system
16276 case "$d_vfork" in
16277 "$define")
16278         set vfork.h i_vfork
16279         eval $inhdr
16280         ;;
16281 *)
16282         i_vfork="$undef"
16283         ;;
16284 esac
16285
16286 : see if gdbm.h is available
16287 set gdbm.h t_gdbm
16288 eval $inhdr
16289 case "$t_gdbm" in
16290 $define)
16291         : see if gdbm_open exists
16292         set gdbm_open d_gdbm_open
16293         eval $inlibc
16294         case "$d_gdbm_open" in
16295         $undef)
16296                 t_gdbm="$undef"
16297                 echo "We won't be including <gdbm.h>"
16298                 ;;
16299         esac
16300         ;;
16301 esac
16302 val="$t_gdbm"
16303 set i_gdbm
16304 eval $setvar
16305
16306 echo " "
16307 echo "Looking for extensions..." >&4
16308 : If we are using the old config.sh, known_extensions may contain
16309 : old or inaccurate or duplicate values.
16310 known_extensions=''
16311 nonxs_extensions=''
16312 : We do not use find because it might not be available.
16313 : We do not just use MANIFEST because the user may have dropped
16314 : some additional extensions into the source tree and expect them
16315 : to be built.
16316
16317 : Function to recursively find available extensions, ignoring DynaLoader
16318 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16319 find_extensions='
16320     for xxx in *; do
16321        case "$xxx" in
16322            DynaLoader|dynaload) ;;
16323            *)
16324            if $test -f $xxx/$xxx.xs; then
16325                known_extensions="$known_extensions $1$xxx";
16326            elif $test -f $xxx/Makefile.PL; then
16327                nonxs_extensions="$nonxs_extensions $1$xxx";
16328            else
16329                if $test -d $xxx -a $# -lt 10; then
16330                    set $1$xxx/ $*;
16331                    cd $xxx;
16332                    eval $find_extensions;
16333                    cd ..;
16334                    shift;
16335                fi;
16336            fi
16337            ;;
16338        esac;
16339     done'
16340 tdir=`pwd`
16341 cd $rsrc/ext
16342 set X
16343 shift
16344 eval $find_extensions
16345 set X $nonxs_extensions
16346 shift
16347 nonxs_extensions="$*"
16348 set X $known_extensions
16349 shift
16350 known_extensions="$*"
16351 cd $tdir
16352
16353 : Now see which are supported on this system.
16354 avail_ext=''
16355 for xxx in $known_extensions ; do
16356         case "$xxx" in
16357         DB_File|db_file)
16358                 case "$i_db" in
16359                 $define) avail_ext="$avail_ext $xxx" ;;
16360                 esac
16361                 ;;
16362         GDBM_File|gdbm_fil)
16363                 case "$i_gdbm" in 
16364                 $define) avail_ext="$avail_ext $xxx" ;;
16365                 esac
16366                 ;;
16367         I18N/Langinfo|i18n_lan)
16368                 case "$i_langinfo$d_nl_langinfo" in 
16369                 $define$define) avail_ext="$avail_ext $xxx" ;;
16370                 esac
16371                 ;;
16372         NDBM_File|ndbm_fil)
16373                 case "$i_ndbm" in
16374                 $define)
16375                     case "$osname-$use64bitint" in
16376                     cygwin-*|hpux-define)
16377                         case "$libs" in
16378                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16379                         esac
16380                         ;;
16381                     *) avail_ext="$avail_ext $xxx" ;;
16382                     esac
16383                     ;;
16384                 esac
16385                 ;;
16386         ODBM_File|odbm_fil) 
16387                 case "${i_dbm}${i_rpcsvcdbm}" in
16388                 *"${define}"*)
16389                     case "$osname-$use64bitint" in
16390                     cygwin-*|hpux-define)
16391                         case "$libs" in
16392                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16393                         esac
16394                         ;;
16395                     *) avail_ext="$avail_ext $xxx" ;;
16396                     esac
16397                     ;;
16398                 esac
16399                 ;;
16400         POSIX|posix)
16401                 case "$useposix" in
16402                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16403                 esac
16404                 ;;
16405         Opcode|opcode)
16406                 case "$useopcode" in
16407                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16408                 esac
16409                 ;;
16410         Socket|socket)
16411                 case "$d_socket" in 
16412                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16413                 esac
16414                 ;;
16415         Sys/Syslog|sys/syslog)
16416                 : XXX syslog requires socket
16417                 case "$d_socket" in 
16418                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16419                 esac
16420                 ;;
16421         Thread|thread)
16422                 case "$usethreads" in
16423                 true|$define|y)
16424                         case "$useithreads" in
16425                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16426                         esac
16427                 esac
16428                 ;;
16429         threads)
16430                 case "$usethreads" in
16431                 true|$define|y)
16432                         case "$useithreads" in
16433                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16434                         esac
16435                 esac
16436                 ;;
16437         IPC/SysV|ipc/sysv)
16438                 : XXX Do we need a useipcsysv variable here
16439                 case "${d_msg}${d_sem}${d_shm}" in 
16440                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16441                 esac
16442                 ;;
16443         *)      avail_ext="$avail_ext $xxx"
16444                 ;;
16445         esac
16446 done
16447
16448 set X $avail_ext
16449 shift
16450 avail_ext="$*"
16451
16452 : Now see which nonxs extensions are supported on this system.
16453 : For now assume all are.
16454 nonxs_ext=''
16455 for xxx in $nonxs_extensions ; do
16456         case "$xxx" in
16457         *)      nonxs_ext="$nonxs_ext $xxx"
16458                 ;;
16459         esac
16460 done
16461
16462 set X $nonxs_ext
16463 shift
16464 nonxs_ext="$*"
16465
16466 case $usedl in
16467 $define)
16468         $cat <<EOM
16469 A number of extensions are supplied with $package.  You may choose to
16470 compile these extensions for dynamic loading (the default), compile
16471 them into the $package executable (static loading), or not include
16472 them at all.  Answer "none" to include no extensions.
16473 Note that DynaLoader is always built and need not be mentioned here.
16474
16475 EOM
16476         case "$dynamic_ext" in
16477         '') dflt="$avail_ext" ;;
16478         *)      dflt="$dynamic_ext"
16479                 # Perhaps we are reusing an old out-of-date config.sh.
16480                 case "$hint" in
16481                 previous)
16482                         if test X"$dynamic_ext" != X"$avail_ext"; then
16483                                 $cat <<EOM
16484 NOTICE:  Your previous config.sh list may be incorrect. 
16485 The extensions now available to you are 
16486         ${avail_ext}
16487 but the default list from your previous config.sh is
16488         ${dynamic_ext} 
16489
16490 EOM
16491                         fi
16492                         ;;
16493                 esac
16494                 ;;
16495         esac
16496         case "$dflt" in
16497         '')     dflt=none;;
16498         esac
16499         rp="What extensions do you wish to load dynamically?"
16500         . ./myread
16501         case "$ans" in
16502         none) dynamic_ext=' ' ;;
16503         *) dynamic_ext="$ans" ;;
16504         esac
16505
16506         case "$static_ext" in
16507         '')
16508                 : Exclude those already listed in dynamic linking
16509                 dflt=''
16510                 for xxx in $avail_ext; do
16511                         case " $dynamic_ext " in
16512                         *" $xxx "*) ;;
16513                         *) dflt="$dflt $xxx" ;;
16514                         esac
16515                 done
16516                 set X $dflt
16517                 shift
16518                 dflt="$*"
16519                 ;;
16520         *)  dflt="$static_ext" 
16521                 ;;
16522         esac
16523
16524         case "$dflt" in
16525         '')     dflt=none;;
16526         esac
16527         rp="What extensions do you wish to load statically?"
16528         . ./myread
16529         case "$ans" in
16530         none) static_ext=' ' ;;
16531         *) static_ext="$ans" ;;
16532         esac
16533         ;;
16534 *)
16535         $cat <<EOM
16536 A number of extensions are supplied with $package.  Answer "none" 
16537 to include no extensions. 
16538 Note that DynaLoader is always built and need not be mentioned here.
16539
16540 EOM
16541         case "$static_ext" in
16542         '') dflt="$avail_ext" ;;
16543         *)      dflt="$static_ext"
16544                 # Perhaps we are reusing an old out-of-date config.sh.
16545                 case "$hint" in
16546                 previous)
16547                         if test X"$static_ext" != X"$avail_ext"; then
16548                                 $cat <<EOM
16549 NOTICE:  Your previous config.sh list may be incorrect. 
16550 The extensions now available to you are 
16551         ${avail_ext}
16552 but the default list from your previous config.sh is
16553         ${static_ext} 
16554
16555 EOM
16556                         fi
16557                         ;;
16558                 esac
16559                 ;;
16560         esac
16561         : Exclude those that are not xs extensions
16562         case "$dflt" in
16563         '')     dflt=none;;
16564         esac
16565         rp="What extensions do you wish to include?"
16566         . ./myread
16567         case "$ans" in
16568         none) static_ext=' ' ;;
16569         *) static_ext="$ans" ;;
16570         esac
16571         ;;
16572 esac
16573
16574 set X $dynamic_ext $static_ext $nonxs_ext
16575 shift
16576 extensions="$*"
16577
16578 : Remove libraries needed only for extensions
16579 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16580 : The exception is SunOS 4.x, which needs them.
16581 case "${osname}X${osvers}" in
16582 sunos*X4*)
16583     perllibs="$libs"
16584     ;;
16585 *) case "$usedl" in
16586     $define|true|[yY]*)
16587             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16588             shift
16589             perllibs="$*"
16590             ;;
16591     *)  perllibs="$libs"
16592             ;;
16593     esac
16594     ;;
16595 esac
16596
16597 : Remove build directory name from cppstdin so it can be used from
16598 : either the present location or the final installed location.
16599 echo " "
16600 : Get out of the UU directory to get correct path name.
16601 cd ..
16602 case "$cppstdin" in
16603 `pwd`/cppstdin)
16604         echo "Stripping down cppstdin path name"
16605         cppstdin=cppstdin
16606         ;;
16607 esac
16608 cd UU
16609
16610 : end of configuration questions
16611 echo " "
16612 echo "End of configuration questions."
16613 echo " "
16614
16615 : back to where it started
16616 if test -d ../UU; then
16617         cd ..
16618 fi
16619
16620 : configuration may be patched via a 'config.over' file
16621 if $test -f config.over; then
16622         echo " "
16623         dflt=y
16624         rp='I see a config.over file.  Do you wish to load it?'
16625         . UU/myread
16626         case "$ans" in
16627         n*) echo "OK, I'll ignore it.";;
16628         *)      . ./config.over
16629                 echo "Configuration override changes have been loaded."
16630                 ;;
16631         esac
16632 fi
16633
16634 : in case they want portability, strip down executable paths
16635 case "$d_portable" in
16636 "$define")
16637         echo " "
16638         echo "Stripping down executable paths..." >&4
16639         for file in $loclist $trylist; do
16640                 eval temp=\$$file
16641                 eval $file=`basename $temp`
16642         done
16643         ;;
16644 esac
16645
16646 : create config.sh file
16647 echo " "
16648 echo "Creating config.sh..." >&4
16649 $spitshell <<EOT >config.sh
16650 $startsh
16651 #
16652 # This file was produced by running the Configure script. It holds all the
16653 # definitions figured out by Configure. Should you modify one of these values,
16654 # do not forget to propagate your changes by running "Configure -der". You may
16655 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16656 #
16657
16658 # Package name      : $package
16659 # Source directory  : $src
16660 # Configuration time: $cf_time
16661 # Configured by     : $cf_by
16662 # Target system     : $myuname
16663
16664 Author='$Author'
16665 Date='$Date'
16666 Header='$Header'
16667 Id='$Id'
16668 Locker='$Locker'
16669 Log='$Log'
16670 Mcc='$Mcc'
16671 RCSfile='$RCSfile'
16672 Revision='$Revision'
16673 Source='$Source'
16674 State='$State'
16675 _a='$_a'
16676 _exe='$_exe'
16677 _o='$_o'
16678 afs='$afs'
16679 afsroot='$afsroot'
16680 alignbytes='$alignbytes'
16681 ansi2knr='$ansi2knr'
16682 aphostname='$aphostname'
16683 api_revision='$api_revision'
16684 api_subversion='$api_subversion'
16685 api_version='$api_version'
16686 api_versionstring='$api_versionstring'
16687 ar='$ar'
16688 archlib='$archlib'
16689 archlibexp='$archlibexp'
16690 archname64='$archname64'
16691 archname='$archname'
16692 archobjs='$archobjs'
16693 awk='$awk'
16694 baserev='$baserev'
16695 bash='$bash'
16696 bin='$bin'
16697 bincompat5005='$bincompat5005'
16698 binexp='$binexp'
16699 bison='$bison'
16700 byacc='$byacc'
16701 byteorder='$byteorder'
16702 c='$c'
16703 castflags='$castflags'
16704 cat='$cat'
16705 cc='$cc'
16706 cccdlflags='$cccdlflags'
16707 ccdlflags='$ccdlflags'
16708 ccflags='$ccflags'
16709 ccflags_uselargefiles='$ccflags_uselargefiles'
16710 ccname='$ccname'
16711 ccsymbols='$ccsymbols'
16712 ccversion='$ccversion'
16713 cf_by='$cf_by'
16714 cf_email='$cf_email'
16715 cf_time='$cf_time'
16716 charsize='$charsize'
16717 chgrp='$chgrp'
16718 chmod='$chmod'
16719 chown='$chown'
16720 clocktype='$clocktype'
16721 comm='$comm'
16722 compress='$compress'
16723 contains='$contains'
16724 cp='$cp'
16725 cpio='$cpio'
16726 cpp='$cpp'
16727 cpp_stuff='$cpp_stuff'
16728 cppccsymbols='$cppccsymbols'
16729 cppflags='$cppflags'
16730 cpplast='$cpplast'
16731 cppminus='$cppminus'
16732 cpprun='$cpprun'
16733 cppstdin='$cppstdin'
16734 cppsymbols='$cppsymbols'
16735 cryptlib='$cryptlib'
16736 csh='$csh'
16737 d_Gconvert='$d_Gconvert'
16738 d_PRIEUldbl='$d_PRIEUldbl'
16739 d_PRIFUldbl='$d_PRIFUldbl'
16740 d_PRIGUldbl='$d_PRIGUldbl'
16741 d_PRIXU64='$d_PRIXU64'
16742 d_PRId64='$d_PRId64'
16743 d_PRIeldbl='$d_PRIeldbl'
16744 d_PRIfldbl='$d_PRIfldbl'
16745 d_PRIgldbl='$d_PRIgldbl'
16746 d_PRIi64='$d_PRIi64'
16747 d_PRIo64='$d_PRIo64'
16748 d_PRIu64='$d_PRIu64'
16749 d_PRIx64='$d_PRIx64'
16750 d_SCNfldbl='$d_SCNfldbl'
16751 d__fwalk='$d__fwalk'
16752 d_access='$d_access'
16753 d_accessx='$d_accessx'
16754 d_alarm='$d_alarm'
16755 d_archlib='$d_archlib'
16756 d_atolf='$d_atolf'
16757 d_atoll='$d_atoll'
16758 d_attribut='$d_attribut'
16759 d_bcmp='$d_bcmp'
16760 d_bcopy='$d_bcopy'
16761 d_bincompat5005='$d_bincompat5005'
16762 d_bsd='$d_bsd'
16763 d_bsdgetpgrp='$d_bsdgetpgrp'
16764 d_bsdsetpgrp='$d_bsdsetpgrp'
16765 d_bzero='$d_bzero'
16766 d_casti32='$d_casti32'
16767 d_castneg='$d_castneg'
16768 d_charvspr='$d_charvspr'
16769 d_chown='$d_chown'
16770 d_chroot='$d_chroot'
16771 d_chsize='$d_chsize'
16772 d_class='$d_class'
16773 d_closedir='$d_closedir'
16774 d_cmsghdr_s='$d_cmsghdr_s'
16775 d_const='$d_const'
16776 d_crypt='$d_crypt'
16777 d_csh='$d_csh'
16778 d_cuserid='$d_cuserid'
16779 d_dbl_dig='$d_dbl_dig'
16780 d_dbminitproto='$d_dbminitproto'
16781 d_difftime='$d_difftime'
16782 d_dirnamlen='$d_dirnamlen'
16783 d_dlerror='$d_dlerror'
16784 d_dlopen='$d_dlopen'
16785 d_dlsymun='$d_dlsymun'
16786 d_dosuid='$d_dosuid'
16787 d_drand48proto='$d_drand48proto'
16788 d_dup2='$d_dup2'
16789 d_eaccess='$d_eaccess'
16790 d_endgrent='$d_endgrent'
16791 d_endhent='$d_endhent'
16792 d_endnent='$d_endnent'
16793 d_endpent='$d_endpent'
16794 d_endpwent='$d_endpwent'
16795 d_endsent='$d_endsent'
16796 d_eofnblk='$d_eofnblk'
16797 d_eunice='$d_eunice'
16798 d_fchdir='$d_fchdir'
16799 d_fchmod='$d_fchmod'
16800 d_fchown='$d_fchown'
16801 d_fcntl='$d_fcntl'
16802 d_fcntl_can_lock='$d_fcntl_can_lock'
16803 d_fd_macros='$d_fd_macros'
16804 d_fd_set='$d_fd_set'
16805 d_fds_bits='$d_fds_bits'
16806 d_fgetpos='$d_fgetpos'
16807 d_finite='$d_finite'
16808 d_finitel='$d_finitel'
16809 d_flexfnam='$d_flexfnam'
16810 d_flock='$d_flock'
16811 d_flockproto='$d_flockproto'
16812 d_fork='$d_fork'
16813 d_fp_class='$d_fp_class'
16814 d_fpathconf='$d_fpathconf'
16815 d_fpclass='$d_fpclass'
16816 d_fpclassify='$d_fpclassify'
16817 d_fpclassl='$d_fpclassl'
16818 d_fpos64_t='$d_fpos64_t'
16819 d_frexpl='$d_frexpl'
16820 d_fs_data_s='$d_fs_data_s'
16821 d_fseeko='$d_fseeko'
16822 d_fsetpos='$d_fsetpos'
16823 d_fstatfs='$d_fstatfs'
16824 d_fstatvfs='$d_fstatvfs'
16825 d_fsync='$d_fsync'
16826 d_ftello='$d_ftello'
16827 d_ftime='$d_ftime'
16828 d_getcwd='$d_getcwd'
16829 d_getespwnam='$d_getespwnam'
16830 d_getfsstat='$d_getfsstat'
16831 d_getgrent='$d_getgrent'
16832 d_getgrps='$d_getgrps'
16833 d_gethbyaddr='$d_gethbyaddr'
16834 d_gethbyname='$d_gethbyname'
16835 d_gethent='$d_gethent'
16836 d_gethname='$d_gethname'
16837 d_gethostprotos='$d_gethostprotos'
16838 d_getitimer='$d_getitimer'
16839 d_getlogin='$d_getlogin'
16840 d_getmnt='$d_getmnt'
16841 d_getmntent='$d_getmntent'
16842 d_getnbyaddr='$d_getnbyaddr'
16843 d_getnbyname='$d_getnbyname'
16844 d_getnent='$d_getnent'
16845 d_getnetprotos='$d_getnetprotos'
16846 d_getpagsz='$d_getpagsz'
16847 d_getpbyname='$d_getpbyname'
16848 d_getpbynumber='$d_getpbynumber'
16849 d_getpent='$d_getpent'
16850 d_getpgid='$d_getpgid'
16851 d_getpgrp2='$d_getpgrp2'
16852 d_getpgrp='$d_getpgrp'
16853 d_getppid='$d_getppid'
16854 d_getprior='$d_getprior'
16855 d_getprotoprotos='$d_getprotoprotos'
16856 d_getprpwnam='$d_getprpwnam'
16857 d_getpwent='$d_getpwent'
16858 d_getsbyname='$d_getsbyname'
16859 d_getsbyport='$d_getsbyport'
16860 d_getsent='$d_getsent'
16861 d_getservprotos='$d_getservprotos'
16862 d_getspnam='$d_getspnam'
16863 d_gettimeod='$d_gettimeod'
16864 d_gnulibc='$d_gnulibc'
16865 d_grpasswd='$d_grpasswd'
16866 d_hasmntopt='$d_hasmntopt'
16867 d_htonl='$d_htonl'
16868 d_index='$d_index'
16869 d_inetaton='$d_inetaton'
16870 d_int64_t='$d_int64_t'
16871 d_isascii='$d_isascii'
16872 d_isfinite='$d_isfinite'
16873 d_isinf='$d_isinf'
16874 d_isnan='$d_isnan'
16875 d_isnanl='$d_isnanl'
16876 d_killpg='$d_killpg'
16877 d_lchown='$d_lchown'
16878 d_ldbl_dig='$d_ldbl_dig'
16879 d_link='$d_link'
16880 d_locconv='$d_locconv'
16881 d_lockf='$d_lockf'
16882 d_longdbl='$d_longdbl'
16883 d_longlong='$d_longlong'
16884 d_lseekproto='$d_lseekproto'
16885 d_lstat='$d_lstat'
16886 d_madvise='$d_madvise'
16887 d_mblen='$d_mblen'
16888 d_mbstowcs='$d_mbstowcs'
16889 d_mbtowc='$d_mbtowc'
16890 d_memchr='$d_memchr'
16891 d_memcmp='$d_memcmp'
16892 d_memcpy='$d_memcpy'
16893 d_memmove='$d_memmove'
16894 d_memset='$d_memset'
16895 d_mkdir='$d_mkdir'
16896 d_mkdtemp='$d_mkdtemp'
16897 d_mkfifo='$d_mkfifo'
16898 d_mkstemp='$d_mkstemp'
16899 d_mkstemps='$d_mkstemps'
16900 d_mktime='$d_mktime'
16901 d_mmap='$d_mmap'
16902 d_modfl='$d_modfl'
16903 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16904 d_mprotect='$d_mprotect'
16905 d_msg='$d_msg'
16906 d_msg_ctrunc='$d_msg_ctrunc'
16907 d_msg_dontroute='$d_msg_dontroute'
16908 d_msg_oob='$d_msg_oob'
16909 d_msg_peek='$d_msg_peek'
16910 d_msg_proxy='$d_msg_proxy'
16911 d_msgctl='$d_msgctl'
16912 d_msgget='$d_msgget'
16913 d_msghdr_s='$d_msghdr_s'
16914 d_msgrcv='$d_msgrcv'
16915 d_msgsnd='$d_msgsnd'
16916 d_msync='$d_msync'
16917 d_munmap='$d_munmap'
16918 d_mymalloc='$d_mymalloc'
16919 d_nice='$d_nice'
16920 d_nl_langinfo='$d_nl_langinfo'
16921 d_nv_preserves_uv='$d_nv_preserves_uv'
16922 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16923 d_off64_t='$d_off64_t'
16924 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16925 d_oldpthreads='$d_oldpthreads'
16926 d_oldsock='$d_oldsock'
16927 d_open3='$d_open3'
16928 d_pathconf='$d_pathconf'
16929 d_pause='$d_pause'
16930 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16931 d_phostname='$d_phostname'
16932 d_pipe='$d_pipe'
16933 d_poll='$d_poll'
16934 d_portable='$d_portable'
16935 d_pthread_atfork='$d_pthread_atfork'
16936 d_pthread_yield='$d_pthread_yield'
16937 d_pwage='$d_pwage'
16938 d_pwchange='$d_pwchange'
16939 d_pwclass='$d_pwclass'
16940 d_pwcomment='$d_pwcomment'
16941 d_pwexpire='$d_pwexpire'
16942 d_pwgecos='$d_pwgecos'
16943 d_pwpasswd='$d_pwpasswd'
16944 d_pwquota='$d_pwquota'
16945 d_qgcvt='$d_qgcvt'
16946 d_quad='$d_quad'
16947 d_readdir='$d_readdir'
16948 d_readlink='$d_readlink'
16949 d_readv='$d_readv'
16950 d_recvmsg='$d_recvmsg'
16951 d_rename='$d_rename'
16952 d_rewinddir='$d_rewinddir'
16953 d_rmdir='$d_rmdir'
16954 d_safebcpy='$d_safebcpy'
16955 d_safemcpy='$d_safemcpy'
16956 d_sanemcmp='$d_sanemcmp'
16957 d_sbrkproto='$d_sbrkproto'
16958 d_sched_yield='$d_sched_yield'
16959 d_scm_rights='$d_scm_rights'
16960 d_seekdir='$d_seekdir'
16961 d_select='$d_select'
16962 d_sem='$d_sem'
16963 d_semctl='$d_semctl'
16964 d_semctl_semid_ds='$d_semctl_semid_ds'
16965 d_semctl_semun='$d_semctl_semun'
16966 d_semget='$d_semget'
16967 d_semop='$d_semop'
16968 d_sendmsg='$d_sendmsg'
16969 d_setegid='$d_setegid'
16970 d_seteuid='$d_seteuid'
16971 d_setgrent='$d_setgrent'
16972 d_setgrps='$d_setgrps'
16973 d_sethent='$d_sethent'
16974 d_setitimer='$d_setitimer'
16975 d_setlinebuf='$d_setlinebuf'
16976 d_setlocale='$d_setlocale'
16977 d_setnent='$d_setnent'
16978 d_setpent='$d_setpent'
16979 d_setpgid='$d_setpgid'
16980 d_setpgrp2='$d_setpgrp2'
16981 d_setpgrp='$d_setpgrp'
16982 d_setprior='$d_setprior'
16983 d_setproctitle='$d_setproctitle'
16984 d_setpwent='$d_setpwent'
16985 d_setregid='$d_setregid'
16986 d_setresgid='$d_setresgid'
16987 d_setresuid='$d_setresuid'
16988 d_setreuid='$d_setreuid'
16989 d_setrgid='$d_setrgid'
16990 d_setruid='$d_setruid'
16991 d_setsent='$d_setsent'
16992 d_setsid='$d_setsid'
16993 d_setvbuf='$d_setvbuf'
16994 d_sfio='$d_sfio'
16995 d_shm='$d_shm'
16996 d_shmat='$d_shmat'
16997 d_shmatprototype='$d_shmatprototype'
16998 d_shmctl='$d_shmctl'
16999 d_shmdt='$d_shmdt'
17000 d_shmget='$d_shmget'
17001 d_sigaction='$d_sigaction'
17002 d_sigprocmask='$d_sigprocmask'
17003 d_sigsetjmp='$d_sigsetjmp'
17004 d_sockatmark='$d_sockatmark'
17005 d_sockatmarkproto='$d_sockatmarkproto'
17006 d_socket='$d_socket'
17007 d_socklen_t='$d_socklen_t'
17008 d_sockpair='$d_sockpair'
17009 d_socks5_init='$d_socks5_init'
17010 d_sqrtl='$d_sqrtl'
17011 d_sresgproto='$d_sresgproto'
17012 d_sresuproto='$d_sresuproto'
17013 d_statblks='$d_statblks'
17014 d_statfs_f_flags='$d_statfs_f_flags'
17015 d_statfs_s='$d_statfs_s'
17016 d_statvfs='$d_statvfs'
17017 d_stdio_cnt_lval='$d_stdio_cnt_lval'
17018 d_stdio_ptr_lval='$d_stdio_ptr_lval'
17019 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17020 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
17021 d_stdio_stream_array='$d_stdio_stream_array'
17022 d_stdiobase='$d_stdiobase'
17023 d_stdstdio='$d_stdstdio'
17024 d_strchr='$d_strchr'
17025 d_strcoll='$d_strcoll'
17026 d_strctcpy='$d_strctcpy'
17027 d_strerrm='$d_strerrm'
17028 d_strerror='$d_strerror'
17029 d_strftime='$d_strftime'
17030 d_strtod='$d_strtod'
17031 d_strtol='$d_strtol'
17032 d_strtold='$d_strtold'
17033 d_strtoll='$d_strtoll'
17034 d_strtoq='$d_strtoq'
17035 d_strtoul='$d_strtoul'
17036 d_strtoull='$d_strtoull'
17037 d_strtouq='$d_strtouq'
17038 d_strxfrm='$d_strxfrm'
17039 d_suidsafe='$d_suidsafe'
17040 d_symlink='$d_symlink'
17041 d_syscall='$d_syscall'
17042 d_syscallproto='$d_syscallproto'
17043 d_sysconf='$d_sysconf'
17044 d_sysernlst='$d_sysernlst'
17045 d_syserrlst='$d_syserrlst'
17046 d_system='$d_system'
17047 d_tcgetpgrp='$d_tcgetpgrp'
17048 d_tcsetpgrp='$d_tcsetpgrp'
17049 d_telldir='$d_telldir'
17050 d_telldirproto='$d_telldirproto'
17051 d_time='$d_time'
17052 d_times='$d_times'
17053 d_truncate='$d_truncate'
17054 d_tzname='$d_tzname'
17055 d_u32align='$d_u32align'
17056 d_ualarm='$d_ualarm'
17057 d_umask='$d_umask'
17058 d_uname='$d_uname'
17059 d_union_semun='$d_union_semun'
17060 d_unordered='$d_unordered'
17061 d_usleep='$d_usleep'
17062 d_usleepproto='$d_usleepproto'
17063 d_ustat='$d_ustat'
17064 d_vendorarch='$d_vendorarch'
17065 d_vendorbin='$d_vendorbin'
17066 d_vendorlib='$d_vendorlib'
17067 d_vfork='$d_vfork'
17068 d_void_closedir='$d_void_closedir'
17069 d_voidsig='$d_voidsig'
17070 d_voidtty='$d_voidtty'
17071 d_volatile='$d_volatile'
17072 d_vprintf='$d_vprintf'
17073 d_wait4='$d_wait4'
17074 d_waitpid='$d_waitpid'
17075 d_wcstombs='$d_wcstombs'
17076 d_wctomb='$d_wctomb'
17077 d_writev='$d_writev'
17078 d_xenix='$d_xenix'
17079 date='$date'
17080 db_hashtype='$db_hashtype'
17081 db_prefixtype='$db_prefixtype'
17082 db_version_major='$db_version_major'
17083 db_version_minor='$db_version_minor'
17084 db_version_patch='$db_version_patch'
17085 defvoidused='$defvoidused'
17086 direntrytype='$direntrytype'
17087 dlext='$dlext'
17088 dlsrc='$dlsrc'
17089 doublesize='$doublesize'
17090 drand01='$drand01'
17091 dynamic_ext='$dynamic_ext'
17092 eagain='$eagain'
17093 ebcdic='$ebcdic'
17094 echo='$echo'
17095 egrep='$egrep'
17096 emacs='$emacs'
17097 eunicefix='$eunicefix'
17098 exe_ext='$exe_ext'
17099 expr='$expr'
17100 extensions='$extensions'
17101 extras='$extras'
17102 fflushNULL='$fflushNULL'
17103 fflushall='$fflushall'
17104 find='$find'
17105 firstmakefile='$firstmakefile'
17106 flex='$flex'
17107 fpossize='$fpossize'
17108 fpostype='$fpostype'
17109 freetype='$freetype'
17110 from='$from'
17111 full_ar='$full_ar'
17112 full_csh='$full_csh'
17113 full_sed='$full_sed'
17114 gccosandvers='$gccosandvers'
17115 gccversion='$gccversion'
17116 gidformat='$gidformat'
17117 gidsign='$gidsign'
17118 gidsize='$gidsize'
17119 gidtype='$gidtype'
17120 glibpth='$glibpth'
17121 grep='$grep'
17122 groupcat='$groupcat'
17123 groupstype='$groupstype'
17124 gzip='$gzip'
17125 h_fcntl='$h_fcntl'
17126 h_sysfile='$h_sysfile'
17127 hint='$hint'
17128 hostcat='$hostcat'
17129 i16size='$i16size'
17130 i16type='$i16type'
17131 i32size='$i32size'
17132 i32type='$i32type'
17133 i64size='$i64size'
17134 i64type='$i64type'
17135 i8size='$i8size'
17136 i8type='$i8type'
17137 i_arpainet='$i_arpainet'
17138 i_bsdioctl='$i_bsdioctl'
17139 i_db='$i_db'
17140 i_dbm='$i_dbm'
17141 i_dirent='$i_dirent'
17142 i_dld='$i_dld'
17143 i_dlfcn='$i_dlfcn'
17144 i_fcntl='$i_fcntl'
17145 i_float='$i_float'
17146 i_fp='$i_fp'
17147 i_fp_class='$i_fp_class'
17148 i_gdbm='$i_gdbm'
17149 i_grp='$i_grp'
17150 i_ieeefp='$i_ieeefp'
17151 i_inttypes='$i_inttypes'
17152 i_langinfo='$i_langinfo'
17153 i_libutil='$i_libutil'
17154 i_limits='$i_limits'
17155 i_locale='$i_locale'
17156 i_machcthr='$i_machcthr'
17157 i_malloc='$i_malloc'
17158 i_math='$i_math'
17159 i_memory='$i_memory'
17160 i_mntent='$i_mntent'
17161 i_ndbm='$i_ndbm'
17162 i_netdb='$i_netdb'
17163 i_neterrno='$i_neterrno'
17164 i_netinettcp='$i_netinettcp'
17165 i_niin='$i_niin'
17166 i_poll='$i_poll'
17167 i_prot='$i_prot'
17168 i_pthread='$i_pthread'
17169 i_pwd='$i_pwd'
17170 i_rpcsvcdbm='$i_rpcsvcdbm'
17171 i_sfio='$i_sfio'
17172 i_sgtty='$i_sgtty'
17173 i_shadow='$i_shadow'
17174 i_socks='$i_socks'
17175 i_stdarg='$i_stdarg'
17176 i_stddef='$i_stddef'
17177 i_stdlib='$i_stdlib'
17178 i_string='$i_string'
17179 i_sunmath='$i_sunmath'
17180 i_sysaccess='$i_sysaccess'
17181 i_sysdir='$i_sysdir'
17182 i_sysfile='$i_sysfile'
17183 i_sysfilio='$i_sysfilio'
17184 i_sysin='$i_sysin'
17185 i_sysioctl='$i_sysioctl'
17186 i_syslog='$i_syslog'
17187 i_sysmman='$i_sysmman'
17188 i_sysmode='$i_sysmode'
17189 i_sysmount='$i_sysmount'
17190 i_sysndir='$i_sysndir'
17191 i_sysparam='$i_sysparam'
17192 i_sysresrc='$i_sysresrc'
17193 i_syssecrt='$i_syssecrt'
17194 i_sysselct='$i_sysselct'
17195 i_syssockio='$i_syssockio'
17196 i_sysstat='$i_sysstat'
17197 i_sysstatfs='$i_sysstatfs'
17198 i_sysstatvfs='$i_sysstatvfs'
17199 i_systime='$i_systime'
17200 i_systimek='$i_systimek'
17201 i_systimes='$i_systimes'
17202 i_systypes='$i_systypes'
17203 i_sysuio='$i_sysuio'
17204 i_sysun='$i_sysun'
17205 i_sysutsname='$i_sysutsname'
17206 i_sysvfs='$i_sysvfs'
17207 i_syswait='$i_syswait'
17208 i_termio='$i_termio'
17209 i_termios='$i_termios'
17210 i_time='$i_time'
17211 i_unistd='$i_unistd'
17212 i_ustat='$i_ustat'
17213 i_utime='$i_utime'
17214 i_values='$i_values'
17215 i_varargs='$i_varargs'
17216 i_varhdr='$i_varhdr'
17217 i_vfork='$i_vfork'
17218 ignore_versioned_solibs='$ignore_versioned_solibs'
17219 inc_version_list='$inc_version_list'
17220 inc_version_list_init='$inc_version_list_init'
17221 incpath='$incpath'
17222 inews='$inews'
17223 installarchlib='$installarchlib'
17224 installbin='$installbin'
17225 installman1dir='$installman1dir'
17226 installman3dir='$installman3dir'
17227 installprefix='$installprefix'
17228 installprefixexp='$installprefixexp'
17229 installprivlib='$installprivlib'
17230 installscript='$installscript'
17231 installsitearch='$installsitearch'
17232 installsitebin='$installsitebin'
17233 installsitelib='$installsitelib'
17234 installstyle='$installstyle'
17235 installusrbinperl='$installusrbinperl'
17236 installvendorarch='$installvendorarch'
17237 installvendorbin='$installvendorbin'
17238 installvendorlib='$installvendorlib'
17239 intsize='$intsize'
17240 issymlink='$issymlink'
17241 ivdformat='$ivdformat'
17242 ivsize='$ivsize'
17243 ivtype='$ivtype'
17244 known_extensions='$known_extensions'
17245 ksh='$ksh'
17246 ld='$ld'
17247 lddlflags='$lddlflags'
17248 ldflags='$ldflags'
17249 ldflags_uselargefiles='$ldflags_uselargefiles'
17250 ldlibpthname='$ldlibpthname'
17251 less='$less'
17252 lib_ext='$lib_ext'
17253 libc='$libc'
17254 libperl='$libperl'
17255 libpth='$libpth'
17256 libs='$libs'
17257 libsdirs='$libsdirs'
17258 libsfiles='$libsfiles'
17259 libsfound='$libsfound'
17260 libspath='$libspath'
17261 libswanted='$libswanted'
17262 libswanted_uselargefiles='$libswanted_uselargefiles'
17263 line='$line'
17264 lint='$lint'
17265 lkflags='$lkflags'
17266 ln='$ln'
17267 lns='$lns'
17268 locincpth='$locincpth'
17269 loclibpth='$loclibpth'
17270 longdblsize='$longdblsize'
17271 longlongsize='$longlongsize'
17272 longsize='$longsize'
17273 lp='$lp'
17274 lpr='$lpr'
17275 ls='$ls'
17276 lseeksize='$lseeksize'
17277 lseektype='$lseektype'
17278 mail='$mail'
17279 mailx='$mailx'
17280 make='$make'
17281 make_set_make='$make_set_make'
17282 mallocobj='$mallocobj'
17283 mallocsrc='$mallocsrc'
17284 malloctype='$malloctype'
17285 man1dir='$man1dir'
17286 man1direxp='$man1direxp'
17287 man1ext='$man1ext'
17288 man3dir='$man3dir'
17289 man3direxp='$man3direxp'
17290 man3ext='$man3ext'
17291 mips_type='$mips_type'
17292 mkdir='$mkdir'
17293 mmaptype='$mmaptype'
17294 modetype='$modetype'
17295 more='$more'
17296 multiarch='$multiarch'
17297 mv='$mv'
17298 myarchname='$myarchname'
17299 mydomain='$mydomain'
17300 myhostname='$myhostname'
17301 myuname='$myuname'
17302 n='$n'
17303 need_va_copy='$need_va_copy'
17304 netdb_hlen_type='$netdb_hlen_type'
17305 netdb_host_type='$netdb_host_type'
17306 netdb_name_type='$netdb_name_type'
17307 netdb_net_type='$netdb_net_type'
17308 nm='$nm'
17309 nm_opt='$nm_opt'
17310 nm_so_opt='$nm_so_opt'
17311 nonxs_ext='$nonxs_ext'
17312 nroff='$nroff'
17313 nvEUformat='$nvEUformat'
17314 nvFUformat='$nvFUformat'
17315 nvGUformat='$nvGUformat'
17316 nveformat='$nveformat'
17317 nvfformat='$nvfformat'
17318 nvgformat='$nvgformat'
17319 nvsize='$nvsize'
17320 nvtype='$nvtype'
17321 o_nonblock='$o_nonblock'
17322 obj_ext='$obj_ext'
17323 old_pthread_create_joinable='$old_pthread_create_joinable'
17324 optimize='$optimize'
17325 orderlib='$orderlib'
17326 osname='$osname'
17327 osvers='$osvers'
17328 otherlibdirs='$otherlibdirs'
17329 package='$package'
17330 pager='$pager'
17331 passcat='$passcat'
17332 patchlevel='$patchlevel'
17333 path_sep='$path_sep'
17334 perl5='$perl5'
17335 perl='$perl'
17336 perl_patchlevel='$perl_patchlevel'
17337 perladmin='$perladmin'
17338 perllibs='$perllibs'
17339 perlpath='$perlpath'
17340 pg='$pg'
17341 phostname='$phostname'
17342 pidtype='$pidtype'
17343 plibpth='$plibpth'
17344 pm_apiversion='$pm_apiversion'
17345 pmake='$pmake'
17346 pr='$pr'
17347 prefix='$prefix'
17348 prefixexp='$prefixexp'
17349 privlib='$privlib'
17350 privlibexp='$privlibexp'
17351 prototype='$prototype'
17352 ptrsize='$ptrsize'
17353 quadkind='$quadkind'
17354 quadtype='$quadtype'
17355 randbits='$randbits'
17356 randfunc='$randfunc'
17357 randseedtype='$randseedtype'
17358 ranlib='$ranlib'
17359 rd_nodata='$rd_nodata'
17360 revision='$revision'
17361 rm='$rm'
17362 rmail='$rmail'
17363 run='$run'
17364 runnm='$runnm'
17365 sPRIEUldbl='$sPRIEUldbl'
17366 sPRIFUldbl='$sPRIFUldbl'
17367 sPRIGUldbl='$sPRIGUldbl'
17368 sPRIXU64='$sPRIXU64'
17369 sPRId64='$sPRId64'
17370 sPRIeldbl='$sPRIeldbl'
17371 sPRIfldbl='$sPRIfldbl'
17372 sPRIgldbl='$sPRIgldbl'
17373 sPRIi64='$sPRIi64'
17374 sPRIo64='$sPRIo64'
17375 sPRIu64='$sPRIu64'
17376 sPRIx64='$sPRIx64'
17377 sSCNfldbl='$sSCNfldbl'
17378 sched_yield='$sched_yield'
17379 scriptdir='$scriptdir'
17380 scriptdirexp='$scriptdirexp'
17381 sed='$sed'
17382 seedfunc='$seedfunc'
17383 selectminbits='$selectminbits'
17384 selecttype='$selecttype'
17385 sendmail='$sendmail'
17386 sh='$sh'
17387 shar='$shar'
17388 sharpbang='$sharpbang'
17389 shmattype='$shmattype'
17390 shortsize='$shortsize'
17391 shrpenv='$shrpenv'
17392 shsharp='$shsharp'
17393 sig_count='$sig_count'
17394 sig_name='$sig_name'
17395 sig_name_init='$sig_name_init'
17396 sig_num='$sig_num'
17397 sig_num_init='$sig_num_init'
17398 sig_size='$sig_size'
17399 signal_t='$signal_t'
17400 sitearch='$sitearch'
17401 sitearchexp='$sitearchexp'
17402 sitebin='$sitebin'
17403 sitebinexp='$sitebinexp'
17404 sitelib='$sitelib'
17405 sitelib_stem='$sitelib_stem'
17406 sitelibexp='$sitelibexp'
17407 siteprefix='$siteprefix'
17408 siteprefixexp='$siteprefixexp'
17409 sizesize='$sizesize'
17410 sizetype='$sizetype'
17411 sleep='$sleep'
17412 smail='$smail'
17413 so='$so'
17414 sockethdr='$sockethdr'
17415 socketlib='$socketlib'
17416 socksizetype='$socksizetype'
17417 sort='$sort'
17418 spackage='$spackage'
17419 spitshell='$spitshell'
17420 src='$src'
17421 ssizetype='$ssizetype'
17422 startperl='$startperl'
17423 startsh='$startsh'
17424 static_ext='$static_ext'
17425 stdchar='$stdchar'
17426 stdio_base='$stdio_base'
17427 stdio_bufsiz='$stdio_bufsiz'
17428 stdio_cnt='$stdio_cnt'
17429 stdio_filbuf='$stdio_filbuf'
17430 stdio_ptr='$stdio_ptr'
17431 stdio_stream_array='$stdio_stream_array'
17432 strings='$strings'
17433 submit='$submit'
17434 subversion='$subversion'
17435 sysman='$sysman'
17436 tail='$tail'
17437 tar='$tar'
17438 targetarch='$targetarch'
17439 tbl='$tbl'
17440 tee='$tee'
17441 test='$test'
17442 timeincl='$timeincl'
17443 timetype='$timetype'
17444 to='$to'
17445 touch='$touch'
17446 tr='$tr'
17447 trnl='$trnl'
17448 troff='$troff'
17449 u16size='$u16size'
17450 u16type='$u16type'
17451 u32size='$u32size'
17452 u32type='$u32type'
17453 u64size='$u64size'
17454 u64type='$u64type'
17455 u8size='$u8size'
17456 u8type='$u8type'
17457 uidformat='$uidformat'
17458 uidsign='$uidsign'
17459 uidsize='$uidsize'
17460 uidtype='$uidtype'
17461 uname='$uname'
17462 uniq='$uniq'
17463 uquadtype='$uquadtype'
17464 use5005threads='$use5005threads'
17465 use64bitall='$use64bitall'
17466 use64bitint='$use64bitint'
17467 usecrosscompile='$usecrosscompile'
17468 usedl='$usedl'
17469 useithreads='$useithreads'
17470 uselargefiles='$uselargefiles'
17471 uselongdouble='$uselongdouble'
17472 usemorebits='$usemorebits'
17473 usemultiplicity='$usemultiplicity'
17474 usemymalloc='$usemymalloc'
17475 usenm='$usenm'
17476 useopcode='$useopcode'
17477 useperlio='$useperlio'
17478 useposix='$useposix'
17479 usereentrant='$usereentrant'
17480 usesfio='$usesfio'
17481 useshrplib='$useshrplib'
17482 usesocks='$usesocks'
17483 usethreads='$usethreads'
17484 usevendorprefix='$usevendorprefix'
17485 usevfork='$usevfork'
17486 usrinc='$usrinc'
17487 uuname='$uuname'
17488 uvXUformat='$uvXUformat'
17489 uvoformat='$uvoformat'
17490 uvsize='$uvsize'
17491 uvtype='$uvtype'
17492 uvuformat='$uvuformat'
17493 uvxformat='$uvxformat'
17494 vendorarch='$vendorarch'
17495 vendorarchexp='$vendorarchexp'
17496 vendorbin='$vendorbin'
17497 vendorbinexp='$vendorbinexp'
17498 vendorlib='$vendorlib'
17499 vendorlib_stem='$vendorlib_stem'
17500 vendorlibexp='$vendorlibexp'
17501 vendorprefix='$vendorprefix'
17502 vendorprefixexp='$vendorprefixexp'
17503 version='$version'
17504 version_patchlevel_string='$version_patchlevel_string'
17505 versiononly='$versiononly'
17506 vi='$vi'
17507 voidflags='$voidflags'
17508 xlibpth='$xlibpth'
17509 xs_apiversion='$xs_apiversion'
17510 yacc='$yacc'
17511 yaccflags='$yaccflags'
17512 zcat='$zcat'
17513 zip='$zip'
17514 EOT
17515
17516 : Add in command line options if available
17517 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17518
17519 : add special variables
17520 $test -f $src/patchlevel.h && \
17521 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17522 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17523 echo "PERL_CONFIG_SH=true" >>config.sh
17524
17525 : propagate old symbols
17526 if $test -f UU/config.sh; then
17527         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17528         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17529         $sort | $uniq -u >UU/oldsyms
17530         set X `cat UU/oldsyms`
17531         shift
17532         case $# in
17533         0) ;;
17534         *)
17535                 cat <<EOM
17536 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17537 EOM
17538                 echo "# Variables propagated from previous config.sh file." >>config.sh
17539                 for sym in `cat UU/oldsyms`; do
17540                         echo "    Propagating $hint variable "'$'"$sym..."
17541                         eval 'tmp="$'"${sym}"'"'
17542                         echo "$tmp" | \
17543                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17544                 done
17545                 ;;
17546         esac
17547 fi
17548
17549 : Finish up by extracting the .SH files
17550 case "$alldone" in
17551 exit)
17552         $rm -rf UU
17553         echo "Extraction done."
17554         exit 0
17555         ;;
17556 cont)
17557         ;;
17558 '')
17559         dflt=''
17560         nostick=true
17561         $cat <<EOM
17562
17563 If you'd like to make any changes to the config.sh file before I begin
17564 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17565
17566 EOM
17567         rp="Press return or use a shell escape to edit config.sh:"
17568         . UU/myread
17569         nostick=''
17570         case "$ans" in
17571         '') ;;
17572         *) : in case they cannot read
17573                 sh 1>&4 -c "$ans";;
17574         esac
17575         ;;
17576 esac
17577
17578 : if this fails, just run all the .SH files by hand
17579 . ./config.sh
17580
17581 echo " "
17582 exec 1>&4
17583 pwd=`pwd`
17584 . ./UU/extract
17585 cd $pwd
17586
17587 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17588         dflt=y
17589         case "$silent" in
17590         true) ;;
17591         *)
17592                 $cat <<EOM
17593
17594 Now you need to generate make dependencies by running "$make depend".
17595 You might prefer to run it in background: "$make depend > makedepend.out &"
17596 It can take a while, so you might not want to run it right now.
17597
17598 EOM
17599                 ;;
17600         esac
17601         rp="Run $make depend now?"
17602         . UU/myread
17603         case "$ans" in
17604         y*)
17605                 $make depend && echo "Now you must run '$make'."
17606                 ;;
17607         *)
17608                 echo "You must run '$make depend' then '$make'."
17609                 ;;
17610         esac
17611 elif test -f [Mm]akefile; then
17612         echo " "
17613         echo "Now you must run a $make."
17614 else
17615         echo "Configure done."
17616 fi
17617
17618 if $test -f Policy.sh; then
17619     $cat <<EOM
17620
17621 If you compile $package on a different machine or from a different object
17622 directory, copy the Policy.sh file from this object directory to the
17623 new one before you run Configure -- this will help you with most of
17624 the policy defaults.
17625
17626 EOM
17627 fi
17628 if $test -f config.msg; then
17629     echo "Hmm.  I also noted the following information while running:"
17630     echo " "
17631     $cat config.msg >&4
17632     $rm -f config.msg
17633 fi
17634 $rm -f kit*isdone ark*isdone
17635 $rm -rf UU
17636
17637 : End of Configure
17638