bfd5a7b312b5252dc698d8694ef493a1e70c797b
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Wed Nov 21 19:00:54 EET 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_procselfexe=''
491 d_old_pthread_create_joinable=''
492 old_pthread_create_joinable=''
493 d_pthread_atfork=''
494 d_pthread_yield=''
495 d_sched_yield=''
496 sched_yield=''
497 d_qgcvt=''
498 d_readdir=''
499 d_rewinddir=''
500 d_seekdir=''
501 d_telldir=''
502 d_readlink=''
503 d_readv=''
504 d_recvmsg=''
505 d_rename=''
506 d_rmdir=''
507 d_safebcpy=''
508 d_safemcpy=''
509 d_sanemcmp=''
510 d_sbrkproto=''
511 d_select=''
512 d_sem=''
513 d_semctl=''
514 d_semget=''
515 d_semop=''
516 d_sendmsg=''
517 d_setegid=''
518 d_seteuid=''
519 d_setgrent=''
520 d_setgrps=''
521 d_sethent=''
522 d_setitimer=''
523 d_setlinebuf=''
524 d_setlocale=''
525 d_setnent=''
526 d_setpent=''
527 d_setpgid=''
528 d_setpgrp2=''
529 d_bsdsetpgrp=''
530 d_setpgrp=''
531 d_setprior=''
532 d_setproctitle=''
533 d_setpwent=''
534 d_setregid=''
535 d_setresgid=''
536 d_setresuid=''
537 d_setreuid=''
538 d_setrgid=''
539 d_setruid=''
540 d_setsent=''
541 d_setsid=''
542 d_setvbuf=''
543 d_sfio=''
544 usesfio=''
545 d_shm=''
546 d_shmat=''
547 d_shmatprototype=''
548 shmattype=''
549 d_shmctl=''
550 d_shmdt=''
551 d_shmget=''
552 d_sigaction=''
553 d_sigprocmask=''
554 d_sigsetjmp=''
555 d_sockatmark=''
556 d_sockatmarkproto=''
557 d_msg_ctrunc=''
558 d_msg_dontroute=''
559 d_msg_oob=''
560 d_msg_peek=''
561 d_msg_proxy=''
562 d_oldsock=''
563 d_scm_rights=''
564 d_socket=''
565 d_sockpair=''
566 sockethdr=''
567 socketlib=''
568 d_socklen_t=''
569 d_socks5_init=''
570 d_sqrtl=''
571 d_sresgproto=''
572 d_sresuproto=''
573 d_statblks=''
574 d_statfs_f_flags=''
575 d_statfs_s=''
576 d_fstatvfs=''
577 d_statvfs=''
578 d_stdio_cnt_lval=''
579 d_stdio_ptr_lval=''
580 d_stdio_ptr_lval_nochange_cnt=''
581 d_stdio_ptr_lval_sets_cnt=''
582 d_stdiobase=''
583 d_stdstdio=''
584 stdio_base=''
585 stdio_bufsiz=''
586 stdio_cnt=''
587 stdio_filbuf=''
588 stdio_ptr=''
589 d_index=''
590 d_strchr=''
591 d_strcoll=''
592 d_strctcpy=''
593 d_strerrm=''
594 d_strerror=''
595 d_sysernlst=''
596 d_syserrlst=''
597 d_strftime=''
598 d_strtod=''
599 d_strtol=''
600 d_strtold=''
601 d_strtoll=''
602 d_strtoq=''
603 d_strtoul=''
604 d_strtoull=''
605 d_strtouq=''
606 d_strxfrm=''
607 d_symlink=''
608 d_syscall=''
609 d_syscallproto=''
610 d_sysconf=''
611 d_system=''
612 d_tcgetpgrp=''
613 d_tcsetpgrp=''
614 d_telldirproto=''
615 d_time=''
616 timetype=''
617 clocktype=''
618 d_times=''
619 d_truncate=''
620 d_tzname=''
621 d_u32align=''
622 d_ualarm=''
623 d_umask=''
624 d_semctl_semid_ds=''
625 d_semctl_semun=''
626 d_union_semun=''
627 d_unordered=''
628 d_usleep=''
629 d_usleepproto=''
630 d_ustat=''
631 d_vfork=''
632 usevfork=''
633 d_voidsig=''
634 signal_t=''
635 d_volatile=''
636 d_charvspr=''
637 d_vprintf=''
638 d_wait4=''
639 d_waitpid=''
640 d_wcstombs=''
641 d_wctomb=''
642 d_writev=''
643 dlext=''
644 cccdlflags=''
645 ccdlflags=''
646 dlsrc=''
647 ld=''
648 lddlflags=''
649 usedl=''
650 doublesize=''
651 ebcdic=''
652 fflushNULL=''
653 fflushall=''
654 fpossize=''
655 fpostype=''
656 gccosandvers=''
657 gccversion=''
658 gidformat=''
659 gidsign=''
660 gidsize=''
661 gidtype=''
662 groupstype=''
663 h_fcntl=''
664 h_sysfile=''
665 i_arpainet=''
666 db_hashtype=''
667 db_prefixtype=''
668 db_version_major=''
669 db_version_minor=''
670 db_version_patch=''
671 i_db=''
672 i_dbm=''
673 i_rpcsvcdbm=''
674 d_dirnamlen=''
675 direntrytype=''
676 i_dirent=''
677 i_dld=''
678 i_dlfcn=''
679 i_fcntl=''
680 i_float=''
681 i_fp=''
682 i_fp_class=''
683 i_gdbm=''
684 d_grpasswd=''
685 i_grp=''
686 i_ieeefp=''
687 i_inttypes=''
688 i_langinfo=''
689 i_libutil=''
690 i_limits=''
691 i_locale=''
692 i_machcthr=''
693 i_malloc=''
694 i_math=''
695 i_memory=''
696 i_mntent=''
697 i_ndbm=''
698 i_netdb=''
699 i_neterrno=''
700 i_netinettcp=''
701 i_niin=''
702 i_sysin=''
703 i_poll=''
704 i_prot=''
705 i_pthread=''
706 d_pwage=''
707 d_pwchange=''
708 d_pwclass=''
709 d_pwcomment=''
710 d_pwexpire=''
711 d_pwgecos=''
712 d_pwpasswd=''
713 d_pwquota=''
714 i_pwd=''
715 i_sfio=''
716 i_shadow=''
717 i_socks=''
718 i_stddef=''
719 i_stdlib=''
720 i_string=''
721 strings=''
722 i_sunmath=''
723 i_sysaccess=''
724 i_sysdir=''
725 i_sysfile=''
726 d_voidtty=''
727 i_bsdioctl=''
728 i_sysfilio=''
729 i_sysioctl=''
730 i_syssockio=''
731 i_syslog=''
732 i_sysmman=''
733 i_sysmode=''
734 i_sysmount=''
735 i_sysndir=''
736 i_sysparam=''
737 i_sysresrc=''
738 i_syssecrt=''
739 i_sysselct=''
740 i_sysstat=''
741 i_sysstatfs=''
742 i_sysstatvfs=''
743 i_systimes=''
744 i_systypes=''
745 i_sysuio=''
746 i_sysun=''
747 i_sysutsname=''
748 i_sysvfs=''
749 i_syswait=''
750 i_sgtty=''
751 i_termio=''
752 i_termios=''
753 i_systime=''
754 i_systimek=''
755 i_time=''
756 timeincl=''
757 i_unistd=''
758 i_ustat=''
759 i_utime=''
760 i_values=''
761 i_stdarg=''
762 i_varargs=''
763 i_varhdr=''
764 i_vfork=''
765 inc_version_list=''
766 inc_version_list_init=''
767 installprefix=''
768 installprefixexp=''
769 installstyle=''
770 installusrbinperl=''
771 intsize=''
772 longsize=''
773 shortsize=''
774 issymlink=''
775 libc=''
776 ldlibpthname=''
777 libperl=''
778 shrpenv=''
779 useshrplib=''
780 glibpth=''
781 libpth=''
782 loclibpth=''
783 plibpth=''
784 xlibpth=''
785 ignore_versioned_solibs=''
786 libs=''
787 libsdirs=''
788 libsfiles=''
789 libsfound=''
790 libspath=''
791 lns=''
792 d_PRIEUldbl=''
793 d_PRIFUldbl=''
794 d_PRIGUldbl=''
795 d_PRIeldbl=''
796 d_PRIfldbl=''
797 d_PRIgldbl=''
798 d_SCNfldbl=''
799 sPRIEUldbl=''
800 sPRIFUldbl=''
801 sPRIGUldbl=''
802 sPRIeldbl=''
803 sPRIfldbl=''
804 sPRIgldbl=''
805 sSCNfldbl=''
806 lseeksize=''
807 lseektype=''
808 make_set_make=''
809 d_mymalloc=''
810 freetype=''
811 mallocobj=''
812 mallocsrc=''
813 malloctype=''
814 usemymalloc=''
815 installman1dir=''
816 man1dir=''
817 man1direxp=''
818 man1ext=''
819 installman3dir=''
820 man3dir=''
821 man3direxp=''
822 man3ext=''
823 modetype=''
824 multiarch=''
825 mydomain=''
826 myhostname=''
827 phostname=''
828 c=''
829 n=''
830 d_eofnblk=''
831 eagain=''
832 o_nonblock=''
833 rd_nodata=''
834 need_va_copy=''
835 netdb_hlen_type=''
836 netdb_host_type=''
837 netdb_name_type=''
838 netdb_net_type=''
839 groupcat=''
840 hostcat=''
841 passcat=''
842 orderlib=''
843 ranlib=''
844 d_perl_otherlibdirs=''
845 otherlibdirs=''
846 package=''
847 spackage=''
848 pager=''
849 api_revision=''
850 api_subversion=''
851 api_version=''
852 api_versionstring=''
853 patchlevel=''
854 perl_patchlevel=''
855 revision=''
856 subversion=''
857 version=''
858 version_patchlevel_string=''
859 perl5=''
860 perladmin=''
861 perlpath=''
862 d_nv_preserves_uv=''
863 d_nv_preserves_uv_bits=''
864 i16size=''
865 i16type=''
866 i32size=''
867 i32type=''
868 i64size=''
869 i64type=''
870 i8size=''
871 i8type=''
872 ivsize=''
873 ivtype=''
874 nvsize=''
875 nvtype=''
876 u16size=''
877 u16type=''
878 u32size=''
879 u32type=''
880 u64size=''
881 u64type=''
882 u8size=''
883 u8type=''
884 uvsize=''
885 uvtype=''
886 ivdformat=''
887 nvEUformat=''
888 nvFUformat=''
889 nvGUformat=''
890 nveformat=''
891 nvfformat=''
892 nvgformat=''
893 uvXUformat=''
894 uvoformat=''
895 uvuformat=''
896 uvxformat=''
897 pidtype=''
898 prefix=''
899 prefixexp=''
900 installprivlib=''
901 privlib=''
902 privlibexp=''
903 prototype=''
904 ptrsize=''
905 d_PRIXU64=''
906 d_PRId64=''
907 d_PRIi64=''
908 d_PRIo64=''
909 d_PRIu64=''
910 d_PRIx64=''
911 sPRIXU64=''
912 sPRId64=''
913 sPRIi64=''
914 sPRIo64=''
915 sPRIu64=''
916 sPRIx64=''
917 d_quad=''
918 quadkind=''
919 quadtype=''
920 uquadtype=''
921 drand01=''
922 randbits=''
923 randfunc=''
924 randseedtype=''
925 seedfunc=''
926 installscript=''
927 scriptdir=''
928 scriptdirexp=''
929 selectminbits=''
930 selecttype=''
931 sh=''
932 sig_count=''
933 sig_name=''
934 sig_name_init=''
935 sig_num=''
936 sig_num_init=''
937 sig_size=''
938 installsitearch=''
939 sitearch=''
940 sitearchexp=''
941 installsitebin=''
942 sitebin=''
943 sitebinexp=''
944 installsitelib=''
945 sitelib=''
946 sitelib_stem=''
947 sitelibexp=''
948 siteprefix=''
949 siteprefixexp=''
950 sizesize=''
951 sizetype=''
952 so=''
953 socksizetype=''
954 sharpbang=''
955 shsharp=''
956 spitshell=''
957 src=''
958 ssizetype=''
959 startperl=''
960 startsh=''
961 stdchar=''
962 d_stdio_stream_array=''
963 stdio_stream_array=''
964 sysman=''
965 trnl=''
966 uidformat=''
967 uidsign=''
968 uidsize=''
969 uidtype=''
970 archname64=''
971 use64bitall=''
972 use64bitint=''
973 ccflags_uselargefiles=''
974 ldflags_uselargefiles=''
975 libswanted_uselargefiles=''
976 uselargefiles=''
977 uselongdouble=''
978 usemorebits=''
979 usemultiplicity=''
980 nm_opt=''
981 nm_so_opt=''
982 runnm=''
983 usenm=''
984 useperlio=''
985 usesocks=''
986 d_oldpthreads=''
987 use5005threads=''
988 useithreads=''
989 usereentrant=''
990 usethreads=''
991 incpath=''
992 mips_type=''
993 usrinc=''
994 d_vendorarch=''
995 installvendorarch=''
996 vendorarch=''
997 vendorarchexp=''
998 d_vendorbin=''
999 installvendorbin=''
1000 vendorbin=''
1001 vendorbinexp=''
1002 d_vendorlib=''
1003 installvendorlib=''
1004 vendorlib=''
1005 vendorlib_stem=''
1006 vendorlibexp=''
1007 usevendorprefix=''
1008 vendorprefix=''
1009 vendorprefixexp=''
1010 versiononly=''
1011 defvoidused=''
1012 voidflags=''
1013 pm_apiversion=''
1014 xs_apiversion=''
1015 yacc=''
1016 yaccflags=''
1017 CONFIG=''
1018
1019 define='define'
1020 undef='undef'
1021 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1022 rmlist=''
1023
1024 : We must find out about Eunice early
1025 eunicefix=':'
1026 if test -f /etc/unixtovms; then
1027         eunicefix=/etc/unixtovms
1028 fi
1029 if test -f /etc/unixtovms.exe; then
1030         eunicefix=/etc/unixtovms.exe
1031 fi
1032
1033 i_whoami=''
1034 ccname=''
1035 ccversion=''
1036 perllibs=''
1037 : set useposix=false in your hint file to disable the POSIX extension.
1038 useposix=true
1039 : set useopcode=false in your hint file to disable the Opcode extension.
1040 useopcode=true
1041 : Trailing extension.  Override this in a hint file, if needed.
1042 _exe=''
1043 : Extra object files, if any, needed on this platform.
1044 archobjs=''
1045 archname=''
1046 : Possible local include directories to search.
1047 : Set locincpth to "" in a hint file to defeat local include searches.
1048 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1049 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1050 :
1051 : no include file wanted by default
1052 inclwanted=''
1053
1054 groupstype=''
1055 libnames=''
1056 : change the next line if compiling for Xenix/286 on Xenix/386
1057 xlibpth='/usr/lib/386 /lib/386'
1058 : Possible local library directories to search.
1059 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1060 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1061
1062 : general looking path for locating libraries
1063 glibpth="/lib /usr/lib $xlibpth"
1064 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1065 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1066 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1067
1068 : Private path used by Configure to find libraries.  Its value
1069 : is prepended to libpth. This variable takes care of special
1070 : machines, like the mips.  Usually, it should be empty.
1071 plibpth=''
1072
1073 : default library list
1074 libswanted=''
1075 : some systems want to use only the non-versioned libso:s
1076 ignore_versioned_solibs=''
1077 archname64=''
1078 ccflags_uselargefiles=''
1079 ldflags_uselargefiles=''
1080 libswanted_uselargefiles=''
1081 : set usemultiplicity on the Configure command line to enable multiplicity.
1082 : set usesocks on the Configure command line to enable socks.
1083 : set usethreads on the Configure command line to enable threads.
1084 usereentrant='undef'
1085 : full support for void wanted by default
1086 defvoidused=15
1087
1088 : List of libraries we want.
1089 : If anyone needs -lnet, put it in a hint file.
1090 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1091 libswanted="$libswanted dld ld sun m c cposix posix"
1092 libswanted="$libswanted ndir dir crypt sec"
1093 libswanted="$libswanted ucb bsd BSD PW x util"
1094 : We probably want to search /usr/shlib before most other libraries.
1095 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1096 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1097 glibpth="/usr/shlib $glibpth"
1098 : Do not use vfork unless overridden by a hint file.
1099 usevfork=false
1100
1101 : Find the basic shell for Bourne shell scripts
1102 case "$sh" in
1103 '')
1104         case "$SYSTYPE" in
1105         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1106         *) xxx='/bin/sh';;
1107         esac
1108         if test -f "$xxx"; then
1109                 sh="$xxx"
1110         else
1111                 : Build up a list and do a single loop so we can 'break' out.
1112                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1113                 for xxx in sh bash ksh pdksh ash; do
1114                         for p in $pth; do
1115                                 try="$try ${p}/${xxx}"
1116                         done
1117                 done
1118                 for xxx in $try; do
1119                         if test -f "$xxx"; then
1120                                 sh="$xxx";
1121                                 break
1122                         elif test -f "$xxx.exe"; then
1123                                 sh="$xxx";
1124                                 break
1125                         fi
1126                 done
1127         fi
1128         ;;
1129 esac
1130
1131 case "$sh" in
1132 '')     cat >&2 <<EOM
1133 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1134
1135 Usually it's in /bin/sh.  How did you even get this far?
1136 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1137 we'll try to straighten this all out.
1138 EOM
1139         exit 1
1140         ;;
1141 esac
1142
1143 : see if sh knows # comments
1144 if `$sh -c '#' >/dev/null 2>&1`; then
1145         shsharp=true
1146         spitshell=cat
1147         xcat=/bin/cat
1148         test -f $xcat || xcat=/usr/bin/cat
1149         echo "#!$xcat" >sharp
1150         $eunicefix sharp
1151         chmod +x sharp
1152         ./sharp > today
1153         if test -s today; then
1154                 sharpbang='#!'
1155         else
1156                 echo "#! $xcat" > sharp
1157                 $eunicefix sharp
1158                 chmod +x sharp
1159                 ./sharp > today
1160                 if test -s today; then
1161                         sharpbang='#! '
1162                 else
1163                         sharpbang=': use '
1164                 fi
1165         fi
1166 else
1167         echo " "
1168         echo "Your $sh doesn't grok # comments--I will strip them later on."
1169         shsharp=false
1170         cd ..
1171         echo "exec grep -v '^[  ]*#'" >spitshell
1172         chmod +x spitshell
1173         $eunicefix spitshell
1174         spitshell=`pwd`/spitshell
1175         cd UU
1176         echo "I presume that if # doesn't work, #! won't work either!"
1177         sharpbang=': use '
1178 fi
1179 rm -f sharp today
1180
1181 : figure out how to guarantee sh startup
1182 case "$startsh" in
1183 '') startsh=${sharpbang}${sh} ;;
1184 *)
1185 esac
1186 cat >sharp <<EOSS
1187 $startsh
1188 set abc
1189 test "$?abc" != 1
1190 EOSS
1191
1192 chmod +x sharp
1193 $eunicefix sharp
1194 if ./sharp; then
1195         : echo "Yup, it does."
1196 else
1197         echo "Hmm... '$startsh' does not guarantee sh startup..."
1198         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1199 fi
1200 rm -f sharp
1201
1202
1203 : Save command line options in file UU/cmdline.opt for later use in
1204 : generating config.sh.
1205 cat > cmdline.opt <<EOSH
1206 # Configure command line arguments.
1207 config_arg0='$0'
1208 config_args='$*'
1209 config_argc=$#
1210 EOSH
1211 argn=1
1212 args_exp=''
1213 args_sep=''
1214 for arg in "$@"; do
1215         cat >>cmdline.opt <<EOSH
1216 config_arg$argn='$arg'
1217 EOSH
1218         # Extreme backslashitis: replace each ' by '"'"'
1219         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1220 $arg
1221 EOC
1222         arg_exp=`cat cmdl.opt`
1223         args_exp="$args_exp$args_sep'$arg_exp'"
1224         argn=`expr $argn + 1`
1225         args_sep=' '
1226 done
1227 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1228 # used by ./hints/os2.sh
1229 rm -f cmdl.opt
1230
1231 : produce awk script to parse command line options
1232 cat >options.awk <<'EOF'
1233 BEGIN {
1234         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1235
1236         len = length(optstr);
1237         for (i = 1; i <= len; i++) {
1238                 c = substr(optstr, i, 1);
1239                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1240                 if (a == ":") {
1241                         arg[c] = 1;
1242                         i++;
1243                 }
1244                 opt[c] = 1;
1245         }
1246 }
1247 {
1248         expect = 0;
1249         str = $0;
1250         if (substr(str, 1, 1) != "-") {
1251                 printf("'%s'\n", str);
1252                 next;
1253         }
1254         len = length($0);
1255         for (i = 2; i <= len; i++) {
1256                 c = substr(str, i, 1);
1257                 if (!opt[c]) {
1258                         printf("-%s\n", substr(str, i));
1259                         next;
1260                 }
1261                 printf("-%s\n", c);
1262                 if (arg[c]) {
1263                         if (i < len)
1264                                 printf("'%s'\n", substr(str, i + 1));
1265                         else
1266                                 expect = 1;
1267                         next;
1268                 }
1269         }
1270 }
1271 END {
1272         if (expect)
1273                 print "?";
1274 }
1275 EOF
1276
1277 : process the command line options
1278 set X `for arg in "$@"; do echo "X$arg"; done |
1279         sed -e s/X// | awk -f options.awk`
1280 eval "set $*"
1281 shift
1282 rm -f options.awk
1283
1284 : set up default values
1285 fastread=''
1286 reuseval=false
1287 config_sh=''
1288 alldone=''
1289 error=''
1290 silent=''
1291 extractsh=''
1292 override=''
1293 knowitall=''
1294 rm -f optdef.sh posthint.sh
1295 cat >optdef.sh <<EOS
1296 $startsh
1297 EOS
1298
1299
1300 : option parsing
1301 while test $# -gt 0; do
1302         case "$1" in
1303         -d) shift; fastread=yes;;
1304         -e) shift; alldone=cont;;
1305         -f)
1306                 shift
1307                 cd ..
1308                 if test -r "$1"; then
1309                         config_sh="$1"
1310                 else
1311                         echo "$me: cannot read config file $1." >&2
1312                         error=true
1313                 fi
1314                 cd UU
1315                 shift;;
1316         -h) shift; error=true;;
1317         -r) shift; reuseval=true;;
1318         -s) shift; silent=true; realsilent=true;;
1319         -E) shift; alldone=exit;;
1320         -K) shift; knowitall=true;;
1321         -O) shift; override=true;;
1322         -S) shift; silent=true; extractsh=true;;
1323         -D)
1324                 shift
1325                 case "$1" in
1326                 *=)
1327                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1328                         echo "$me: ignoring -D $1" >&2
1329                         ;;
1330                 *=*) echo "$1" | \
1331                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1332                 *) echo "$1='define'" >> optdef.sh;;
1333                 esac
1334                 shift
1335                 ;;
1336         -U)
1337                 shift
1338                 case "$1" in
1339                 *=) echo "$1" >> optdef.sh;;
1340                 *=*)
1341                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1342                         echo "$me: ignoring -U $1" >&2
1343                         ;;
1344                 *) echo "$1='undef'" >> optdef.sh;;
1345                 esac
1346                 shift
1347                 ;;
1348         -A)
1349             shift
1350             xxx=''
1351             yyy="$1"
1352             zzz=''
1353             uuu=undef
1354             case "$yyy" in
1355             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1356                  case "$zzz" in
1357                  *:*) zzz='' ;;
1358                  *)   xxx=append
1359                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1360                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1361                  esac
1362                  ;;
1363             esac
1364             case "$xxx" in
1365             '')  case "$yyy" in
1366                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1367                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1368                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1369                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1370                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1371                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1372                  esac
1373                  ;;       
1374             esac
1375             case "$xxx" in
1376             append)
1377                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1378             clear)
1379                 echo "$yyy=''"                  >> posthint.sh ;;
1380             define)
1381                 case "$zzz" in
1382                 '') zzz=define ;;
1383                 esac
1384                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1385             eval)
1386                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1387             prepend)
1388                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1389             undef)
1390                 case "$zzz" in
1391                 '') zzz="$uuu" ;;
1392                 esac
1393                 echo "$yyy=$zzz"                >> posthint.sh ;;
1394             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1395             esac
1396             shift
1397             ;;
1398         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1399             exit 0;;
1400         --) break;;
1401         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1402         *) break;;
1403         esac
1404 done
1405
1406 case "$error" in
1407 true)
1408         cat >&2 <<EOM
1409 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1410                  [-U symbol] [-U symbol=] [-A command:symbol...]
1411   -d : use defaults for all answers.
1412   -e : go on without questioning past the production of config.sh.
1413   -f : specify an alternate default configuration file.
1414   -h : print this help message and exit (with an error status).
1415   -r : reuse C symbols value if possible (skips costly nm extraction).
1416   -s : silent mode, only echoes questions and essential information.
1417   -D : define symbol to have some value:
1418          -D symbol         symbol gets the value 'define'
1419          -D symbol=value   symbol gets the value 'value'
1420   -E : stop at the end of questions, after having produced config.sh.
1421   -K : do not use unless you know what you are doing.
1422   -O : let -D and -U override definitions from loaded configuration file.
1423   -S : perform variable substitutions on all .SH files (can mix with -f)
1424   -U : undefine symbol:
1425          -U symbol    symbol gets the value 'undef'
1426          -U symbol=   symbol gets completely empty
1427   -A : manipulate symbol after the platform specific hints have been applied:
1428          -A symbol=value                append " "value to symbol
1429          -A append:symbol=value         append value to symbol
1430          -A define:symbol=value         define symbol to have value
1431          -A clear:symbol                define symbol to be ''
1432          -A define:symbol               define symbol to be 'define'
1433          -A eval:symbol=value           define symbol to be eval of value
1434          -A prepend:symbol=value        prepend value to symbol
1435          -A undef:symbol                define symbol to be 'undef'
1436          -A undef:symbol=               define symbol to be ''
1437   -V : print version number and exit (with a zero status).
1438 EOM
1439         exit 1
1440         ;;
1441 esac
1442
1443 : Sanity checks
1444 case "$fastread$alldone" in
1445 yescont|yesexit) ;;
1446 *)
1447         case "$extractsh" in
1448         true) ;;
1449         *)
1450                 if test ! -t 0; then
1451                         echo "Say 'sh Configure', not 'sh <Configure'"
1452                         exit 1
1453                 fi
1454                 ;;
1455         esac
1456         ;;
1457 esac
1458
1459 exec 4>&1
1460 case "$silent" in
1461 true) exec 1>/dev/null;;
1462 esac
1463
1464 : run the defines and the undefines, if any, but leave the file out there...
1465 touch optdef.sh
1466 . ./optdef.sh
1467 : create the posthint manipulation script and leave the file out there...
1468 touch posthint.sh
1469
1470 : set package name
1471 package=perl5
1472 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1473 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1474 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1475 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1476 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1477 esac
1478
1479 : Some greps do not return status, grrr.
1480 echo "grimblepritz" >grimble
1481 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1482         contains=contains
1483 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1484         contains=grep
1485 else
1486         contains=contains
1487 fi
1488 rm -f grimble
1489 : the following should work in any shell
1490 case "$contains" in
1491 contains*)
1492         echo " "
1493         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1494         cat >contains <<'EOSS'
1495 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1496 EOSS
1497 chmod +x contains
1498 esac
1499
1500 : Find the path to the source tree
1501 case "$src" in
1502 '') case "$0" in
1503     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1504          case "$src" in
1505          /*)    ;;
1506          .)     ;;
1507          *)     src=`cd ../$src && pwd` ;;
1508          esac
1509          ;;
1510     *)   src='.';;
1511     esac;;
1512 esac
1513 case "$src" in
1514 '')     src=/
1515         rsrc=/
1516         ;;
1517 /*) rsrc="$src";;
1518 *) rsrc="../$src";;
1519 esac
1520 if test -f $rsrc/Configure && \
1521         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1522 then
1523    : found it, so we are ok.
1524 else
1525         rsrc=''
1526         for src in . .. ../.. ../../.. ../../../..; do
1527                 if test -f ../$src/Configure && \
1528                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1529                 then
1530                         rsrc=../$src
1531                         break
1532                 fi
1533         done
1534 fi
1535 case "$rsrc" in
1536 '')
1537         cat <<EOM >&4
1538
1539 Sorry, I can't seem to locate the source dir for $package.  Please start
1540 Configure with an explicit path -- i.e. /some/path/Configure.
1541
1542 EOM
1543         exit 1
1544         ;;
1545 ../.)   rsrc='..';;
1546 *)
1547         echo " "
1548         echo "Sources for $package found in \"$src\"." >&4
1549         ;;
1550 esac
1551
1552 : script used to extract .SH files with variable substitutions
1553 cat >extract <<'EOS'
1554 PERL_CONFIG_SH=true
1555 echo "Doing variable substitutions on .SH files..."
1556 if test -f MANIFEST; then
1557         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1558 else
1559         echo "(Looking for .SH files under the source directory.)"
1560         set x `(cd $src; find . -name "*.SH" -print)`
1561 fi
1562 shift
1563 case $# in
1564 0) set x `(cd $src; echo *.SH)`; shift;;
1565 esac
1566 if test ! -f $src/$1; then
1567         shift
1568 fi
1569 mkdir_p='
1570 name=$1;
1571 create="";
1572 while test $name; do
1573         if test ! -d "$name"; then
1574                 create="$name $create";
1575                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1576                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1577         else
1578                 name="";
1579         fi;
1580 done;
1581 for file in $create; do
1582         mkdir $file;
1583 done
1584 '
1585 for file in $*; do
1586         case "$src" in
1587         ".")
1588                 case "$file" in
1589                 */*)
1590                         dir=`expr X$file : 'X\(.*\)/'`
1591                         file=`expr X$file : 'X.*/\(.*\)'`
1592                         (cd $dir && . ./$file)
1593                         ;;
1594                 *)
1595                         . ./$file
1596                         ;;
1597                 esac
1598                 ;;
1599         *)
1600                 case "$file" in
1601                 */*)
1602                         dir=`expr X$file : 'X\(.*\)/'`
1603                         file=`expr X$file : 'X.*/\(.*\)'`
1604                         (set x $dir; shift; eval $mkdir_p)
1605                         sh <$src/$dir/$file
1606                         ;;
1607                 *)
1608                         sh <$src/$file
1609                         ;;
1610                 esac
1611                 ;;
1612         esac
1613 done
1614 if test -f $src/config_h.SH; then
1615         if test ! -f config.h; then
1616         : oops, they left it out of MANIFEST, probably, so do it anyway.
1617         . $src/config_h.SH
1618         fi
1619 fi
1620 EOS
1621
1622 : extract files and exit if asked to do so
1623 case "$extractsh" in
1624 true)
1625         case "$realsilent" in
1626         true) ;;
1627         *) exec 1>&4;;
1628         esac
1629         case "$config_sh" in
1630         '') config_sh='config.sh';;
1631         esac
1632         echo " "
1633         echo "Fetching answers from $config_sh..."
1634         cd ..
1635         . $config_sh
1636         test "$override" && . ./optdef.sh
1637         echo " "
1638         . UU/extract
1639         rm -rf UU
1640         echo "Extraction done."
1641         exit 0
1642         ;;
1643 esac
1644
1645 : Eunice requires " " instead of "", can you believe it
1646 echo " "
1647 : Here we go...
1648 echo "Beginning of configuration questions for $package."
1649
1650 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1651
1652 : first determine how to suppress newline on echo command
1653 echo " "
1654 echo "Checking echo to see how to suppress newlines..."
1655 (echo "hi there\c" ; echo " ") >.echotmp
1656 if $contains c .echotmp >/dev/null 2>&1 ; then
1657         echo "...using -n."
1658         n='-n'
1659         c=''
1660 else
1661         cat <<'EOM'
1662 ...using \c
1663 EOM
1664         n=''
1665         c='\c'
1666 fi
1667 echo $n "The star should be here-->$c"
1668 echo '*'
1669 rm -f .echotmp
1670
1671 : Now test for existence of everything in MANIFEST
1672 echo " "
1673 if test -f $rsrc/MANIFEST; then
1674         echo "First let's make sure your kit is complete.  Checking..." >&4
1675         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1676         rm -f missing
1677         tmppwd=`pwd`
1678         for filelist in x??; do
1679                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1680         done
1681         if test -s missing; then
1682                 cat missing >&4
1683                 cat >&4 <<'EOM'
1684
1685 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1686
1687 You have the option of continuing the configuration process, despite the
1688 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1689 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1690 and contact the author (perlbug@perl.org).
1691
1692 EOM
1693                 echo $n "Continue? [n] $c" >&4
1694                 read ans
1695                 case "$ans" in
1696                 y*)
1697                         echo "Continuing..." >&4
1698                         rm -f missing
1699                         ;;
1700                 *)
1701                         echo "ABORTING..." >&4
1702                         kill $$
1703                         ;;
1704                 esac
1705         else
1706                 echo "Looks good..."
1707         fi
1708 else
1709         echo "There is no MANIFEST file.  I hope your kit is complete !"
1710 fi
1711 rm -f missing x??
1712
1713 echo " "
1714 : Find the appropriate value for a newline for tr
1715 if test -n "$DJGPP"; then
1716        trnl='\012'
1717 fi
1718 if test X"$trnl" = X; then
1719         case "`echo foo|tr '\n' x 2>/dev/null`" in
1720         foox) trnl='\n' ;;
1721         esac
1722 fi
1723 if test X"$trnl" = X; then
1724         case "`echo foo|tr '\012' x 2>/dev/null`" in
1725         foox) trnl='\012' ;;
1726         esac
1727 fi
1728 if test X"$trnl" = X; then
1729         cat <<EOM >&2
1730
1731 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1732
1733 EOM
1734         exit 1
1735 fi
1736
1737 : compute the number of columns on the terminal for proper question formatting
1738 case "$COLUMNS" in
1739 '') COLUMNS='80';;
1740 esac
1741
1742 : set up the echo used in my read
1743 myecho="case \"\$xxxm\" in
1744 '') echo $n \"\$rp $c\" >&4;;
1745 *) case \"\$rp\" in
1746         '') echo $n \"[\$xxxm] $c\";;
1747         *)
1748                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1749                         echo \"\$rp\" >&4
1750                         echo $n \"[\$xxxm] $c\" >&4
1751                 else
1752                         echo $n \"\$rp [\$xxxm] $c\" >&4
1753                 fi
1754                 ;;
1755         esac;;
1756 esac"
1757
1758 : now set up to do reads with possible shell escape and default assignment
1759 cat <<EOSC >myread
1760 $startsh
1761 xxxm=\$dflt
1762 $myecho
1763 ans='!'
1764 case "\$fastread" in
1765 yes) case "\$dflt" in
1766         '') ;;
1767         *) ans='';
1768                 case "\$silent-\$rp" in
1769                 true-) ;;
1770                 *) echo " " >&4;;
1771                 esac;;
1772         esac;;
1773 *) case "\$silent" in
1774         true) case "\$rp" in
1775                 '') ans='';;
1776                 esac;;
1777         esac;;
1778 esac
1779 while expr "X\$ans" : "X!" >/dev/null; do
1780         read answ
1781         set x \$xxxm
1782         shift
1783         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1784         case  "\$answ" in
1785         "!")
1786                 sh 1>&4
1787                 echo " "
1788                 $myecho
1789                 ;;
1790         !*)
1791                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1792                 shift
1793                 sh 1>&4 -c "\$*"
1794                 echo " "
1795                 $myecho
1796                 ;;
1797         "\$ans")
1798                 case "\$ans" in
1799                 \\&*)
1800                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1801                         shift
1802                         case "\$1" in
1803                         -d)
1804                                 fastread=yes
1805                                 echo "(OK, I'll run with -d after this question.)" >&4
1806                                 ;;
1807                         -*)
1808                                 echo "*** Sorry, \$1 not supported yet." >&4
1809                                 ;;
1810                         esac
1811                         $myecho
1812                         ans=!
1813                         ;;
1814                 esac;;
1815         *)
1816                 case "\$aok" in
1817                 y)
1818                         echo "*** Substitution done -- please confirm."
1819                         xxxm="\$ans"
1820                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1821                         xxxm="\$ans"
1822                         ans=!
1823                         ;;
1824                 *)
1825                         echo "*** Error -- try again."
1826                         ans=!
1827                         ;;
1828                 esac
1829                 $myecho
1830                 ;;
1831         esac
1832         case "\$ans\$xxxm\$nostick" in
1833         '')
1834                 ans=!
1835                 $myecho
1836                 ;;
1837         esac
1838 done
1839 case "\$ans" in
1840 '') ans="\$xxxm";;
1841 esac
1842 EOSC
1843
1844 : create .config dir to save info across Configure sessions
1845 test -d ../.config || mkdir ../.config
1846 cat >../.config/README <<EOF
1847 This directory created by Configure to save information that should
1848 persist across sessions for $package.
1849
1850 You may safely delete it if you wish.
1851 EOF
1852
1853 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1854 case "$usedevel" in
1855 $define|true|[yY]*) ;;
1856 *) case "$xversion" in
1857    *[13579])
1858         cat >&4 <<EOH
1859 *** WHOA THERE!!! ***
1860
1861     This is an UNSTABLE DEVELOPMENT release.
1862     The version of this $package distribution is $xversion, that is, odd,
1863     (as opposed to even) and that signifies a development release.
1864     If you want a maintenance release, you want an even-numbered version.
1865
1866     Do ***NOT*** install this into production use.
1867     Data corruption and crashes are possible.
1868
1869     It is most seriously suggested that you do not continue any further
1870     unless you want to help in developing and debugging Perl.
1871
1872     If you *still* want to build perl, you can answer 'y' now,
1873     or pass -Dusedevel to Configure.
1874
1875 EOH
1876         rp='Do you really want to continue?'
1877         dflt='n'
1878         . ./myread
1879         case "$ans" in
1880         [yY]) echo >&4 "Okay, continuing."
1881               usedevel="$define" ;;
1882         *) echo >&4 "Okay, bye."
1883            exit 1
1884            ;;
1885         esac
1886         ;;
1887     esac
1888     ;;
1889 esac
1890 case "$usedevel" in
1891 $define|true|[yY]*)
1892         case "$versiononly" in
1893         '') versiononly="$define" ;;
1894         esac
1895         case "$installusrbinperl" in
1896         '') installusrbinperl="$undef" ;;
1897         esac
1898         ;;
1899 esac
1900
1901 : general instructions
1902 needman=true
1903 firsttime=true
1904 user=`(logname) 2>/dev/null`
1905 case "$user" in
1906 '') user=`whoami 2>&1`;;
1907 esac
1908 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1909         firsttime=false
1910         echo " "
1911         rp='Would you like to see the instructions?'
1912         dflt=n
1913         . ./myread
1914         case "$ans" in
1915         [yY]*) ;;
1916         *) needman=false;;
1917         esac
1918 fi
1919 if $needman; then
1920         cat <<EOH
1921
1922 This installation shell script will examine your system and ask you questions
1923 to determine how the perl5 package should be installed. If you get
1924 stuck on a question, you may use a ! shell escape to start a subshell or
1925 execute a command.  Many of the questions will have default answers in square
1926 brackets; typing carriage return will give you the default.
1927
1928 On some of the questions which ask for file or directory names you are allowed
1929 to use the ~name construct to specify the login directory belonging to "name",
1930 even if you don't have a shell which knows about that.  Questions where this is
1931 allowed will be marked "(~name ok)".
1932
1933 EOH
1934         rp=''
1935         dflt='Type carriage return to continue'
1936         . ./myread
1937         cat <<'EOH'
1938
1939 The prompter used in this script allows you to use shell variables and
1940 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1941 in the default answer, as if the default line was a set of arguments given to a
1942 script shell.  This means you may also use $* to repeat the whole default line,
1943 so you do not have to re-type everything to add something to the default.
1944
1945 Everytime there is a substitution, you will have to confirm.  If there is an
1946 error (e.g. an unmatched backtick), the default answer will remain unchanged
1947 and you will be prompted again.
1948
1949 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1950 the questions and use the computed defaults (or the previous answers if there
1951 was already a config.sh file). Type 'Configure -h' for a list of options.
1952 You may also start interactively and then answer '& -d' at any prompt to turn
1953 on the non-interactive behaviour for the remainder of the execution.
1954
1955 EOH
1956         . ./myread
1957         cat <<EOH
1958
1959 Much effort has been expended to ensure that this shell script will run on any
1960 Unix system.  If despite that it blows up on yours, your best bet is to edit
1961 Configure and run it again.  If you can't run Configure for some reason,
1962 you'll have to generate a config.sh file by hand.  Whatever problems you
1963 have, let me (perlbug@perl.org) know how I blew it.
1964
1965 This installation script affects things in two ways:
1966
1967 1) it may do direct variable substitutions on some of the files included
1968    in this kit.
1969 2) it builds a config.h file for inclusion in C programs.  You may edit
1970    any of these files as the need arises after running this script.
1971
1972 If you make a mistake on a question, there is no easy way to back up to it
1973 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1974 files.  Configure will offer to let you do this before it runs the SH files.
1975
1976 EOH
1977         dflt='Type carriage return to continue'
1978         . ./myread
1979         case "$firsttime" in
1980         true) echo $user >>../.config/instruct;;
1981         esac
1982 fi
1983
1984 : find out where common programs are
1985 echo " "
1986 echo "Locating common programs..." >&4
1987 cat <<EOSC >loc
1988 $startsh
1989 case \$# in
1990 0) exit 1;;
1991 esac
1992 thing=\$1
1993 shift
1994 dflt=\$1
1995 shift
1996 for dir in \$*; do
1997         case "\$thing" in
1998         .)
1999         if test -d \$dir/\$thing; then
2000                 echo \$dir
2001                 exit 0
2002         fi
2003         ;;
2004         *)
2005         for thisthing in \$dir/\$thing; do
2006                 : just loop through to pick last item
2007         done
2008         if test -f \$thisthing; then
2009                 echo \$thisthing
2010                 exit 0
2011         elif test -f \$dir/\$thing.exe; then
2012                 if test -n "$DJGPP"; then
2013                         echo \$dir/\$thing.exe
2014                 else
2015                         : on Eunice apparently
2016                         echo \$dir/\$thing
2017                 fi
2018                 exit 0
2019         fi
2020         ;;
2021         esac
2022 done
2023 echo \$dflt
2024 exit 1
2025 EOSC
2026 chmod +x loc
2027 $eunicefix loc
2028 loclist="
2029 awk
2030 cat
2031 chmod
2032 comm
2033 cp
2034 echo
2035 expr
2036 grep
2037 ls
2038 make
2039 mkdir
2040 rm
2041 sed
2042 sort
2043 touch
2044 tr
2045 uniq
2046 "
2047 trylist="
2048 Mcc
2049 ar
2050 bison
2051 byacc
2052 cpp
2053 csh
2054 date
2055 egrep
2056 gzip
2057 less
2058 ln
2059 more
2060 nm
2061 nroff
2062 pg
2063 test
2064 uname
2065 zip
2066 "
2067 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2068 pth="$pth /lib /usr/lib"
2069 for file in $loclist; do
2070         eval xxx=\$$file
2071         case "$xxx" in
2072         /*|?:[\\/]*)
2073                 if test -f "$xxx"; then
2074                         : ok
2075                 else
2076                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2077                         xxx=`./loc $file $file $pth`
2078                 fi
2079                 ;;
2080         '') xxx=`./loc $file $file $pth`;;
2081         *) xxx=`./loc $xxx $xxx $pth`;;
2082         esac
2083         eval $file=$xxx
2084         eval _$file=$xxx
2085         case "$xxx" in
2086         /*)
2087                 echo $file is in $xxx.
2088                 ;;
2089         ?:[\\/]*)
2090                 echo $file is in $xxx.
2091                 ;;
2092         *)
2093                 echo "I don't know where '$file' is, and my life depends on it." >&4
2094                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2095                 exit 1
2096                 ;;
2097         esac
2098 done
2099 echo " "
2100 echo "Don't worry if any of the following aren't found..."
2101 say=offhand
2102 for file in $trylist; do
2103         eval xxx=\$$file
2104         case "$xxx" in
2105         /*|?:[\\/]*)
2106                 if test -f "$xxx"; then
2107                         : ok
2108                 else
2109                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2110                         xxx=`./loc $file $file $pth`
2111                 fi
2112                 ;;
2113         '') xxx=`./loc $file $file $pth`;;
2114         *) xxx=`./loc $xxx $xxx $pth`;;
2115         esac
2116         eval $file=$xxx
2117         eval _$file=$xxx
2118         case "$xxx" in
2119         /*)
2120                 echo $file is in $xxx.
2121                 ;;
2122         ?:[\\/]*)
2123                 echo $file is in $xxx.
2124                 ;;
2125         *)
2126                 echo "I don't see $file out there, $say."
2127                 say=either
2128                 ;;
2129         esac
2130 done
2131 case "$egrep" in
2132 egrep)
2133         echo "Substituting grep for egrep."
2134         egrep=$grep
2135         ;;
2136 esac
2137 case "$ln" in
2138 ln)
2139         echo "Substituting cp for ln."
2140         ln=$cp
2141         ;;
2142 esac
2143 case "$test" in
2144 test)
2145         echo "Hopefully test is built into your sh."
2146         ;;
2147 *)
2148         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2149                 echo "Using the test built into your sh."
2150                 test=test
2151                 _test=test
2152         fi
2153         ;;
2154 esac
2155 case "$echo" in
2156 echo)
2157         echo "Hopefully echo is built into your sh."
2158         ;;
2159 '') ;;
2160 *)
2161         echo " "
2162 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2163         $echo $n "hi there$c" >foo1
2164         echo $n "hi there$c" >foo2
2165         if cmp foo1 foo2 >/dev/null 2>&1; then
2166                 echo "They are compatible.  In fact, they may be identical."
2167         else
2168                 case "$n" in
2169                 '-n') n='' c='\c';;
2170                 *) n='-n' c='';;
2171                 esac
2172                 cat <<FOO
2173 They are not compatible!  You are probably running ksh on a non-USG system.
2174 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2175 have echo built in and we may have to run some Bourne shell scripts.  That
2176 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2177
2178 FOO
2179                 $echo $n "The star should be here-->$c"
2180                 $echo "*"
2181         fi
2182         $rm -f foo1 foo2
2183         ;;
2184 esac
2185
2186 cat <<EOS >checkcc
2187 $startsh
2188 EOS
2189 cat <<'EOSC' >>checkcc
2190 case "$cc" in
2191 '') ;;
2192 *)  $rm -f try try.*
2193     $cat >try.c <<EOM
2194 int main(int argc, char *argv[]) {
2195   return 0;
2196 }
2197 EOM
2198     if $cc -o try $ccflags $ldflags try.c; then
2199        :
2200     else
2201         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2202         despair=yes
2203         trygcc=yes
2204         case "$cc" in
2205         *gcc*) trygcc=no ;;
2206         esac
2207         case "`$cc -v -c try.c 2>&1`" in
2208         *gcc*) trygcc=no ;;
2209         esac
2210         if $test X"$trygcc" = Xyes; then
2211             if gcc -o try -c try.c; then
2212                 echo " "
2213                 echo "You seem to have a working gcc, though." >&4
2214                 rp="Would you like to use it?"
2215                 dflt=y
2216                 if $test -f myread; then
2217                     . ./myread
2218                 else
2219                     if $test -f UU/myread; then
2220                         . ./UU/myread
2221                     else
2222                         echo "Cannot find myread, sorry.  Aborting." >&2
2223                         exit 1
2224                     fi
2225                 fi  
2226                 case "$ans" in
2227                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2228                 esac
2229             fi
2230         fi
2231         if $test X"$despair" = Xyes; then
2232             $cat >&4 <<EOM
2233 You need to find a working C compiler.
2234 Either (purchase and) install the C compiler supplied by your OS vendor,
2235 or for a free C compiler try http://gcc.gnu.org/
2236 I cannot continue any further, aborting.
2237 EOM
2238             exit 1
2239         fi
2240     fi
2241     $rm -f try try.*
2242     ;;
2243 esac
2244 EOSC
2245
2246 : determine whether symbolic links are supported
2247 echo " "
2248 $touch blurfl
2249 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2250         echo "Symbolic links are supported." >&4
2251         lns="$ln -s"
2252 else
2253         echo "Symbolic links are NOT supported." >&4
2254         lns="$ln"
2255 fi
2256 $rm -f blurfl sym
2257
2258 : determine whether symbolic links are supported
2259 echo " "
2260 case "$lns" in
2261 *"ln -s")
2262         echo "Checking how to test for symbolic links..." >&4
2263         $lns blurfl sym
2264         if $test "X$issymlink" = X; then
2265                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2266                 if test $? = 0; then
2267                         issymlink="test -h"
2268                 fi              
2269         fi
2270         if $test "X$issymlink" = X; then
2271                 if  $test -h >/dev/null 2>&1; then
2272                         issymlink="$test -h"
2273                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2274                 fi              
2275         fi
2276         if $test "X$issymlink" = X; then
2277                 if $test -L sym 2>/dev/null; then
2278                         issymlink="$test -L"
2279                 fi
2280         fi
2281         if $test "X$issymlink" != X; then
2282                 echo "You can test for symbolic links with '$issymlink'." >&4
2283         else
2284                 echo "I do not know how you can test for symbolic links." >&4
2285         fi
2286         $rm -f blurfl sym
2287         ;;
2288 *)      echo "No symbolic links, so not testing for their testing..." >&4
2289         ;;
2290 esac
2291 echo " "
2292
2293
2294 case "$mksymlinks" in
2295 $define|true|[yY]*)
2296         case "$src" in
2297         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2298                 exit 1
2299                 ;;
2300         *)      case "$lns:$issymlink" in
2301                 *"ln -s:"*"test -"?)
2302                         echo "Creating the symbolic links..." >&4
2303                         echo "(First creating the subdirectories...)" >&4
2304                         cd ..
2305                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2306                                 read directory
2307                                 test -z "$directory" && break
2308                                 mkdir -p $directory
2309                         done
2310                         # Sanity check 1.
2311                         if test ! -d t/base; then
2312                                 echo "Failed to create the subdirectories.  Aborting." >&4
2313                                 exit 1
2314                         fi
2315                         echo "(Then creating the symlinks...)" >&4
2316                         awk '{print $1}' $src/MANIFEST | while true; do
2317                                 read filename
2318                                 test -z "$filename" && break
2319                                 if test -f $filename; then
2320                                         if $issymlink $filename; then
2321                                                 rm -f $filename
2322                                         fi
2323                                 fi
2324                                 if test -f $filename; then
2325                                         echo "$filename already exists, not symlinking."
2326                                 else
2327                                         ln -s $src/$filename $filename
2328                                 fi
2329                         done
2330                         # Sanity check 2.
2331                         if test ! -f t/base/lex.t; then
2332                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2333                                 exit 1
2334                         fi
2335                         cd UU
2336                         ;;
2337                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2338                         ;;
2339                 esac
2340                 ;;
2341         esac
2342         ;;
2343 esac
2344
2345
2346 case "$usecrosscompile" in
2347 $define|true|[yY]*)
2348         $echo "Cross-compiling..."
2349         croak=''
2350         case "$cc" in
2351         *-*-gcc) # A cross-compiling gcc, probably.
2352             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2353             ar=$targetarch-ar
2354             # leave out ld, choosing it is more complex
2355             nm=$targetarch-nm
2356             ranlib=$targetarch-ranlib
2357             $echo 'extern int foo;' > try.c
2358             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2359             shift
2360             if $test $# -gt 0; then
2361                 incpth="$incpth $*"
2362                 incpth="`$echo $incpth|$sed 's/^ //'`"
2363                 echo "Guessing incpth '$incpth'." >&4
2364                 for i in $*; do
2365                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2366                     if $test -d $j; then
2367                         libpth="$libpth $j"
2368                     fi
2369                 done   
2370                 libpth="`$echo $libpth|$sed 's/^ //'`"
2371                 echo "Guessing libpth '$libpth'." >&4
2372             fi
2373             $rm -f try.c
2374             ;;
2375         esac
2376         case "$targetarch" in
2377         '') echo "Targetarch not defined." >&4; croak=y ;;
2378         *)  echo "Using targetarch $targetarch." >&4 ;;
2379         esac
2380         case "$incpth" in
2381         '') echo "Incpth not defined." >&4; croak=y ;;
2382         *)  echo "Using incpth '$incpth'." >&4 ;;
2383         esac
2384         case "$libpth" in
2385         '') echo "Libpth not defined." >&4; croak=y ;;
2386         *)  echo "Using libpth '$libpth'." >&4 ;;
2387         esac
2388         case "$usrinc" in
2389         '') for i in $incpth; do
2390                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2391                     usrinc=$i
2392                     echo "Guessing usrinc $usrinc." >&4
2393                     break
2394                 fi
2395             done
2396             case "$usrinc" in
2397             '') echo "Usrinc not defined." >&4; croak=y ;;
2398             esac
2399             ;;
2400         *)  echo "Using usrinc $usrinc." >&4 ;;
2401         esac
2402         case "$targethost" in
2403         '') echo "Targethost not defined." >&4; croak=y ;;
2404         *)  echo "Using targethost $targethost." >&4
2405         esac
2406         locincpth=' '
2407         loclibpth=' '
2408         case "$croak" in
2409         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2410         esac
2411         case "$src" in
2412         /*) run=$src/Cross/run
2413             targetmkdir=$src/Cross/mkdir
2414             to=$src/Cross/to
2415             from=$src/Cross/from
2416             ;;
2417         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2418             run=$pwd/Cross/run
2419             targetmkdir=$pwd/Cross/mkdir
2420             to=$pwd/Cross/to
2421             from=$pwd/Cross/from
2422             ;;
2423         esac
2424         case "$targetrun" in
2425         '') targetrun=ssh ;;
2426         esac
2427         case "$targetto" in
2428         '') targetto=scp ;;
2429         esac
2430         case "$targetfrom" in
2431         '') targetfrom=scp ;;
2432         esac
2433         run=$run-$targetrun
2434         to=$to-$targetto
2435         from=$from-$targetfrom
2436         case "$targetdir" in
2437         '')  targetdir=/tmp
2438              echo "Guessing targetdir $targetdir." >&4
2439              ;;
2440         esac
2441         case "$targetuser" in
2442         '')  targetuser=root
2443              echo "Guessing targetuser $targetuser." >&4
2444              ;;
2445         esac
2446         case "$targetfrom" in
2447         scp)    q=-q ;;
2448         *)      q='' ;;
2449         esac
2450         case "$targetrun" in
2451         ssh|rsh)
2452             cat >$run <<EOF
2453 #!/bin/sh
2454 case "\$1" in
2455 -cwd)
2456   shift
2457   cwd=\$1
2458   shift
2459   ;;
2460 esac
2461 case "\$cwd" in
2462 '') cwd=$targetdir ;;
2463 esac
2464 exe=\$1
2465 shift
2466 if $test ! -f \$exe.xok; then
2467   $to \$exe
2468   $touch \$exe.xok
2469 fi
2470 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2471 EOF
2472             ;;
2473         *)  echo "Unknown targetrun '$targetrun'" >&4
2474             exit 1
2475             ;;
2476         esac
2477         case "$targetmkdir" in
2478         */Cross/mkdir)
2479             cat >$targetmkdir <<EOF
2480 #!/bin/sh
2481 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2482 EOF
2483             $chmod a+rx $targetmkdir
2484             ;;
2485         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2486             exit 1
2487             ;;
2488         esac
2489         case "$targetto" in
2490         scp|rcp)
2491             cat >$to <<EOF
2492 #!/bin/sh
2493 for f in \$@
2494 do
2495   case "\$f" in
2496   /*)
2497     $targetmkdir \`dirname \$f\`
2498     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2499     ;;
2500   *)
2501     $targetmkdir $targetdir/\`dirname \$f\`
2502     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2503     ;;
2504   esac
2505 done
2506 exit 0
2507 EOF
2508             ;;
2509         cp) cat >$to <<EOF
2510 #!/bin/sh
2511 for f in \$@
2512 do
2513   case "\$f" in
2514   /*)
2515     $mkdir -p $targetdir/\`dirname \$f\`
2516     $cp \$f $targetdir/\$f || exit 1
2517     ;;
2518   *)
2519     $targetmkdir $targetdir/\`dirname \$f\`
2520     $cp \$f $targetdir/\$f || exit 1
2521     ;;
2522   esac
2523 done
2524 exit 0
2525 EOF
2526             ;;
2527         *)  echo "Unknown targetto '$targetto'" >&4
2528             exit 1
2529             ;;
2530         esac
2531         case "$targetfrom" in
2532         scp|rcp)
2533           cat >$from <<EOF
2534 #!/bin/sh
2535 for f in \$@
2536 do
2537   $rm -f \$f
2538   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2539 done
2540 exit 0
2541 EOF
2542             ;;
2543         cp) cat >$from <<EOF
2544 #!/bin/sh
2545 for f in \$@
2546 do
2547   $rm -f \$f
2548   cp $targetdir/\$f . || exit 1
2549 done
2550 exit 0
2551 EOF
2552             ;;
2553         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2554             exit 1
2555             ;;
2556         esac
2557         if $test ! -f $run; then
2558             echo "Target 'run' script '$run' not found." >&4
2559         else
2560             $chmod a+rx $run
2561         fi
2562         if $test ! -f $to; then
2563             echo "Target 'to' script '$to' not found." >&4
2564         else
2565             $chmod a+rx $to
2566         fi
2567         if $test ! -f $from; then
2568             echo "Target 'from' script '$from' not found." >&4
2569         else
2570             $chmod a+rx $from
2571         fi
2572         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2573             exit 1
2574         fi
2575         cat >&4 <<EOF
2576 Using '$run' for remote execution,
2577 and '$from' and '$to'
2578 for remote file transfer.
2579 EOF
2580         ;;
2581 *)      run=''
2582         to=:
2583         from=:
2584         usecrosscompile='undef'
2585         targetarch=''
2586         ;;
2587 esac
2588
2589 : see whether [:lower:] and [:upper:] are supported character classes
2590 echo " "
2591 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2592 ABYZ)
2593         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2594         up='[:upper:]'
2595         low='[:lower:]'
2596         ;;
2597 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2598         # (0xc9 and 0xd1), therefore that is a nice testing point.
2599         if test "X$up" = X -o "X$low" = X; then
2600             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2601             ij) up='[A-Z]'
2602                 low='[a-z]'
2603                 ;;
2604             esac
2605         fi
2606         if test "X$up" = X -o "X$low" = X; then
2607             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2608             ij) up='A-Z'
2609                 low='a-z'
2610                 ;;
2611             esac
2612         fi
2613         if test "X$up" = X -o "X$low" = X; then
2614             case "`echo IJ | od -x 2>/dev/null`" in
2615             *C9D1*|*c9d1*)
2616                 echo "Hey, this might be EBCDIC." >&4
2617                 if test "X$up" = X -o "X$low" = X; then
2618                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2619                     ij) up='[A-IJ-RS-Z]'
2620                         low='[a-ij-rs-z]'
2621                         ;;
2622                     esac
2623                 fi
2624                 if test "X$up" = X -o "X$low" = X; then
2625                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2626                     ij) up='A-IJ-RS-Z'
2627                         low='a-ij-rs-z'
2628                         ;;
2629                     esac
2630                 fi
2631                 ;;
2632             esac
2633         fi
2634 esac
2635 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2636 ij)
2637     echo "Using $up and $low to convert case." >&4
2638     ;;
2639 *)
2640     echo "I don't know how to translate letters from upper to lower case." >&4
2641     echo "Your tr is not acting any way I know of." >&4
2642     exit 1
2643     ;;
2644 esac
2645 : set up the translation script tr, must be called with ./tr of course
2646 cat >tr <<EOSC
2647 $startsh
2648 case "\$1\$2" in
2649 '[A-Z][a-z]') exec $tr '$up' '$low';;
2650 '[a-z][A-Z]') exec $tr '$low' '$up';;
2651 esac
2652 exec $tr "\$@"
2653 EOSC
2654 chmod +x tr
2655 $eunicefix tr
2656
2657 : Try to determine whether config.sh was made on this system
2658 case "$config_sh" in
2659 '')
2660 myuname=`$uname -a 2>/dev/null`
2661 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2662 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2663 # because the A-Z/a-z are not consecutive.
2664 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2665         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2666 newmyuname="$myuname"
2667 dflt=n
2668 case "$knowitall" in
2669 '')
2670         if test -f ../config.sh; then
2671                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2672                         eval "`grep myuname= ../config.sh`"
2673                 fi
2674                 if test "X$myuname" = "X$newmyuname"; then
2675                         dflt=y
2676                 fi
2677         fi
2678         ;;
2679 *) dflt=y;;
2680 esac
2681
2682 : Get old answers from old config file if Configure was run on the
2683 : same system, otherwise use the hints.
2684 hint=default
2685 cd ..
2686 if test -f config.sh; then
2687         echo " "
2688         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2689         . UU/myread
2690         case "$ans" in
2691         n*|N*) echo "OK, I'll ignore it."
2692                 mv config.sh config.sh.old
2693                 myuname="$newmyuname"
2694                 ;;
2695         *)  echo "Fetching default answers from your old config.sh file..." >&4
2696                 tmp_n="$n"
2697                 tmp_c="$c"
2698                 tmp_sh="$sh"
2699                 . ./config.sh
2700                 cp config.sh UU
2701                 n="$tmp_n"
2702                 c="$tmp_c"
2703                 : Older versions did not always set $sh.  Catch re-use of such
2704                 : an old config.sh.
2705                 case "$sh" in
2706                 '') sh="$tmp_sh" ;;
2707                 esac
2708                 hint=previous
2709                 ;;
2710         esac
2711 fi
2712 . ./UU/checkcc
2713 if test ! -f config.sh; then
2714         $cat <<EOM
2715
2716 First time through, eh?  I have some defaults handy for some systems
2717 that need some extra help getting the Configure answers right:
2718
2719 EOM
2720         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2721         dflt=''
2722         : Half the following guesses are probably wrong... If you have better
2723         : tests or hints, please send them to perlbug@perl.org
2724         : The metaconfig authors would also appreciate a copy...
2725         $test -f /irix && osname=irix
2726         $test -f /xenix && osname=sco_xenix
2727         $test -f /dynix && osname=dynix
2728         $test -f /dnix && osname=dnix
2729         $test -f /lynx.os && osname=lynxos
2730         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2731         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2732         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2733         $test -f /bin/mips && /bin/mips && osname=mips
2734         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2735                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2736         $test -d /usr/apollo/bin && osname=apollo
2737         $test -f /etc/saf/_sactab && osname=svr4
2738         $test -d /usr/include/minix && osname=minix
2739         if $test -d /MachTen -o -d /MachTen_Folder; then
2740                 osname=machten
2741                 if $test -x /sbin/version; then
2742                         osvers=`/sbin/version | $awk '{print $2}' |
2743                         $sed -e 's/[A-Za-z]$//'`
2744                 elif $test -x /usr/etc/version; then
2745                         osvers=`/usr/etc/version | $awk '{print $2}' |
2746                         $sed -e 's/[A-Za-z]$//'`
2747                 else
2748                         osvers="$2.$3"
2749                 fi
2750         fi
2751
2752         $test -f /sys/posix.dll &&
2753                 $test -f /usr/bin/what &&
2754                 set X `/usr/bin/what /sys/posix.dll` &&
2755                 $test "$3" = UWIN &&
2756                 osname=uwin &&
2757                 osvers="$5"
2758
2759         if $test -f $uname; then
2760                 set X $myuname
2761                 shift
2762
2763                 case "$5" in
2764                 fps*) osname=fps ;;
2765                 mips*)
2766                         case "$4" in
2767                         umips) osname=umips ;;
2768                         *) osname=mips ;;
2769                         esac;;
2770                 [23]100) osname=mips ;;
2771                 next*) osname=next ;;
2772                 i386*)
2773                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2774                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2775                                 osname='sco'
2776                                 osvers=$tmp
2777                         elif $test -f /etc/kconfig; then
2778                                 osname=isc
2779                                 if test "$lns" = "$ln -s"; then
2780                                         osvers=4
2781                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2782                                         osvers=3
2783                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2784                                         osvers=2
2785                                 fi
2786                         fi
2787                         tmp=''
2788                         ;;
2789                 pc*)
2790                         if test -n "$DJGPP"; then
2791                                 osname=dos
2792                                 osvers=djgpp
2793                         fi
2794                         ;;
2795                 esac
2796
2797                 case "$1" in
2798                 aix) osname=aix
2799                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2800                         case "$tmp" in
2801                         'not found') osvers="$4"."$3" ;;
2802                         '<3240'|'<>3240') osvers=3.2.0 ;;
2803                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2804                         '=3250'|'>3250') osvers=3.2.5 ;;
2805                         *) osvers=$tmp;;
2806                         esac
2807                         ;;
2808                 bsd386) osname=bsd386
2809                         osvers=`$uname -r`
2810                         ;;
2811                 cygwin*) osname=cygwin
2812                         osvers="$3"
2813                         ;;
2814                 *dc.osx) osname=dcosx
2815                         osvers="$3"
2816                         ;;
2817                 dnix) osname=dnix
2818                         osvers="$3"
2819                         ;;
2820                 domainos) osname=apollo
2821                         osvers="$3"
2822                         ;;
2823                 dgux) osname=dgux 
2824                         osvers="$3"
2825                         ;;
2826                 dynixptx*) osname=dynixptx
2827                         osvers=`echo "$4"|sed 's/^v//'`
2828                         ;;
2829                 freebsd) osname=freebsd 
2830                         osvers="$3" ;;
2831                 genix) osname=genix ;;
2832                 hp*) osname=hpux 
2833                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2834                         ;;
2835                 irix*) osname=irix
2836                         case "$3" in
2837                         4*) osvers=4 ;;
2838                         5*) osvers=5 ;;
2839                         *)      osvers="$3" ;;
2840                         esac
2841                         ;;
2842                 linux) osname=linux
2843                         case "$3" in
2844                         *)      osvers="$3" ;;
2845                         esac
2846                         ;;
2847                 MiNT) osname=mint
2848                         ;;
2849                 netbsd*) osname=netbsd
2850                         osvers="$3"
2851                         ;;
2852                 news-os) osvers="$3"
2853                         case "$3" in
2854                         4*) osname=newsos4 ;;
2855                         *) osname=newsos ;;
2856                         esac
2857                         ;;
2858                 next*) osname=next ;;
2859                 nonstop-ux) osname=nonstopux ;;
2860                 POSIX-BC | posix-bc ) osname=posix-bc
2861                         osvers="$3"
2862                         ;;
2863                 powerux | power_ux | powermax_os | powermaxos | \
2864                 powerunix | power_unix) osname=powerux
2865                         osvers="$3"
2866                         ;;
2867                 qnx) osname=qnx
2868                         osvers="$4"
2869                         ;;
2870                 solaris) osname=solaris
2871                         case "$3" in
2872                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2873                         *)      osvers="$3" ;;
2874                         esac
2875                         ;;
2876                 sunos) osname=sunos
2877                         case "$3" in
2878                         5*) osname=solaris
2879                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2880                         *)      osvers="$3" ;;
2881                         esac
2882                         ;;
2883                 titanos) osname=titanos
2884                         case "$3" in
2885                         1*) osvers=1 ;;
2886                         2*) osvers=2 ;;
2887                         3*) osvers=3 ;;
2888                         4*) osvers=4 ;;
2889                         *)      osvers="$3" ;;
2890                         esac
2891                         ;;
2892                 ultrix) osname=ultrix
2893                         osvers="$3"
2894                         ;;
2895                 osf1|mls+)      case "$5" in
2896                                 alpha)
2897                                         osname=dec_osf
2898                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2899                                         case "$osvers" in
2900                                         [1-9].[0-9]*) ;;
2901                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2902                                         esac
2903                                         ;;
2904                         hp*)    osname=hp_osf1  ;;
2905                         mips)   osname=mips_osf1 ;;
2906                         esac
2907                         ;;
2908                 unixware) osname=svr5
2909                         osvers="$4"
2910                         ;;
2911                 uts) osname=uts
2912                         osvers="$3"
2913                         ;;
2914                 $2) case "$osname" in
2915                         *isc*) ;;
2916                         *freebsd*) ;;
2917                         svr*)
2918                                 : svr4.x or possibly later
2919                                 case "svr$3" in 
2920                                 ${osname}*)
2921                                         osname=svr$3
2922                                         osvers=$4
2923                                         ;;
2924                                 esac
2925                                 case "$osname" in
2926                                 svr4.0)
2927                                         : Check for ESIX
2928                                         if test -f /stand/boot ; then
2929                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2930                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2931                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2932                                                         if test -n "$isesix"; then
2933                                                                 osname=esix4
2934                                                         fi
2935                                                 fi
2936                                         fi
2937                                         ;;
2938                                 esac
2939                                 ;;
2940                         *)      if test -f /etc/systemid; then
2941                                         osname=sco
2942                                         set `echo $3 | $sed 's/\./ /g'` $4
2943                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2944                                                 osvers=$1.$2.$3
2945                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2946                                                 osvers=$1.$2
2947                                         elif $test -f $src/hints/sco_$1.sh; then
2948                                                 osvers=$1
2949                                         fi
2950                                 else
2951                                         case "$osname" in
2952                                         '') : Still unknown.  Probably a generic Sys V.
2953                                                 osname="sysv"
2954                                                 osvers="$3"
2955                                                 ;;
2956                                         esac
2957                                 fi
2958                                 ;;
2959                         esac
2960                         ;;
2961                 *)      case "$osname" in
2962                         '') : Still unknown.  Probably a generic BSD.
2963                                 osname="$1"
2964                                 osvers="$3"
2965                                 ;;
2966                         esac
2967                         ;;
2968                 esac
2969         else
2970                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2971                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2972                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2973                                 osname=news_os
2974                         fi
2975                         $rm -f UU/kernel.what
2976                 elif test -d c:/.; then
2977                         set X $myuname
2978                         osname=os2
2979                         osvers="$5"
2980                 fi
2981         fi
2982         
2983         case "$targetarch" in
2984         '') ;;
2985         *)  hostarch=$osname
2986             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2987             osvers=''
2988             ;;
2989         esac
2990
2991         : Now look for a hint file osname_osvers, unless one has been
2992         : specified already.
2993         case "$hintfile" in
2994         ''|' ')
2995                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2996                 : Also try without trailing minor version numbers.
2997                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2998                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2999                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3000                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3001                 case "$file" in
3002                 '') dflt=none ;;
3003                 *)  case "$osvers" in
3004                         '') dflt=$file
3005                                 ;;
3006                         *)  if $test -f $src/hints/$file.sh ; then
3007                                         dflt=$file
3008                                 elif $test -f $src/hints/$xfile.sh ; then
3009                                         dflt=$xfile
3010                                 elif $test -f $src/hints/$xxfile.sh ; then
3011                                         dflt=$xxfile
3012                                 elif $test -f $src/hints/$xxxfile.sh ; then
3013                                         dflt=$xxxfile
3014                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3015                                         dflt=$xxxxfile
3016                                 elif $test -f "$src/hints/${osname}.sh" ; then
3017                                         dflt="${osname}"
3018                                 else
3019                                         dflt=none
3020                                 fi
3021                                 ;;
3022                         esac
3023                         ;;
3024                 esac
3025                 if $test -f Policy.sh ; then
3026                         case "$dflt" in
3027                         *Policy*) ;;
3028                         none) dflt="Policy" ;;
3029                         *) dflt="Policy $dflt" ;;
3030                         esac
3031                 fi
3032                 ;;
3033         *)
3034                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3035                 ;;
3036         esac
3037
3038         if $test -f Policy.sh ; then
3039                 $cat <<EOM
3040
3041 There's also a Policy hint file available, which should make the
3042 site-specific (policy) questions easier to answer.
3043 EOM
3044
3045         fi
3046
3047         $cat <<EOM
3048
3049 You may give one or more space-separated answers, or "none" if appropriate.
3050 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3051 is a good thing.  DO NOT give a wrong version or a wrong OS.
3052
3053 EOM
3054
3055         rp="Which of these apply, if any?"
3056         . UU/myread
3057         tans=$ans
3058         for file in $tans; do
3059                 if $test X$file = XPolicy -a -f Policy.sh; then
3060                         . Policy.sh
3061                         $cat Policy.sh >> UU/config.sh
3062                 elif $test -f $src/hints/$file.sh; then
3063                         . $src/hints/$file.sh
3064                         $cat $src/hints/$file.sh >> UU/config.sh
3065                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3066                         : nothing
3067                 else
3068                         : Give one chance to correct a possible typo.
3069                         echo "$file.sh does not exist"
3070                         dflt=$file
3071                         rp="hint to use instead?"
3072                         . UU/myread
3073                         for file in $ans; do
3074                                 if $test -f "$src/hints/$file.sh"; then
3075                                         . $src/hints/$file.sh
3076                                         $cat $src/hints/$file.sh >> UU/config.sh
3077                                 elif $test X$ans = X -o X$ans = Xnone ; then
3078                                         : nothing
3079                                 else
3080                                         echo "$file.sh does not exist -- ignored."
3081                                 fi
3082                         done
3083                 fi
3084         done
3085
3086         hint=recommended
3087         : Remember our hint file for later.
3088         if $test -f "$src/hints/$file.sh" ; then
3089                 hintfile="$file"
3090         else
3091                 hintfile=''
3092         fi
3093 fi
3094 cd UU
3095 ;;
3096 *)
3097         echo " "
3098         echo "Fetching default answers from $config_sh..." >&4
3099         tmp_n="$n"
3100         tmp_c="$c"
3101         cd ..
3102         cp $config_sh config.sh 2>/dev/null
3103         chmod +w config.sh
3104         . ./config.sh
3105         cd UU
3106         cp ../config.sh .
3107         n="$tmp_n"
3108         c="$tmp_c"
3109         hint=previous
3110         ;;
3111 esac
3112 test "$override" && . ./optdef.sh
3113
3114 : Restore computed paths
3115 for file in $loclist $trylist; do
3116         eval $file="\$_$file"
3117 done
3118
3119 cat << EOM
3120
3121 Configure uses the operating system name and version to set some defaults.
3122 The default value is probably right if the name rings a bell. Otherwise,
3123 since spelling matters for me, either accept the default or answer "none"
3124 to leave it blank.
3125
3126 EOM
3127 case "$osname" in
3128         ''|' ')
3129                 case "$hintfile" in
3130                 ''|' '|none) dflt=none ;;
3131                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3132                 esac
3133                 ;;
3134         *) dflt="$osname" ;;
3135 esac
3136 rp="Operating system name?"
3137 . ./myread
3138 case "$ans" in
3139 none)  osname='' ;;
3140 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3141 esac
3142 echo " "
3143 case "$osvers" in
3144         ''|' ')
3145                 case "$hintfile" in
3146                 ''|' '|none) dflt=none ;;
3147                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3148                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3149                         case "$dflt" in
3150                         ''|' ') dflt=none ;;
3151                         esac
3152                         ;;
3153                 esac
3154                 ;;
3155         *) dflt="$osvers" ;;
3156 esac
3157 rp="Operating system version?"
3158 . ./myread
3159 case "$ans" in
3160 none)  osvers='' ;;
3161 *) osvers="$ans" ;;
3162 esac
3163
3164
3165 . ./posthint.sh
3166
3167 : who configured the system
3168 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3169 cf_by=`(logname) 2>/dev/null`
3170 case "$cf_by" in
3171 "")
3172         cf_by=`(whoami) 2>/dev/null`
3173         case "$cf_by" in
3174         "") cf_by=unknown ;;
3175         esac ;;
3176 esac
3177
3178 : set up the script used to warn in case of inconsistency
3179 cat <<EOS >whoa
3180 $startsh
3181 EOS
3182 cat <<'EOSC' >>whoa
3183 dflt=y
3184 echo " "
3185 echo "*** WHOA THERE!!! ***" >&4
3186 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3187 rp="    Keep the $hint value?"
3188 . ./myread
3189 case "$ans" in
3190 y) td=$was; tu=$was;;
3191 esac
3192 EOSC
3193
3194 : function used to set $1 to $val
3195 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3196 case "$val$was" in
3197 $define$undef) . ./whoa; eval "$var=\$td";;
3198 $undef$define) . ./whoa; eval "$var=\$tu";;
3199 *) eval "$var=$val";;
3200 esac'
3201
3202 case "$usethreads" in
3203 $define|true|[yY]*)     dflt='y';;
3204 *) dflt='n';;
3205 esac
3206 cat <<EOM
3207
3208 Perl can be built to take advantage of threads on some systems.
3209 To do so, Configure can be run with -Dusethreads.
3210
3211 Note that threading is a highly experimental feature, and
3212 some known race conditions still remain.  If you choose to try
3213 it, be very sure to not actually deploy it for production
3214 purposes.  README.threads has more details, and is required
3215 reading if you enable threads.
3216
3217 If this doesn't make any sense to you, just accept the default '$dflt'.
3218 EOM
3219 rp='Build a threading Perl?'
3220 . ./myread
3221 case "$ans" in
3222 y|Y)    val="$define" ;;
3223 *)      val="$undef" ;;
3224 esac
3225 set usethreads
3226 eval $setvar
3227
3228 case "$usethreads" in
3229 $define)
3230         $cat <<EOM
3231
3232 As of 5.5.640, Perl has two different internal threading implementations,
3233 the 5.005 version (5005threads) and an interpreter-based version
3234 (ithreads) that has one interpreter per thread.  Both are very 
3235 experimental.  This arrangement exists to help developers work out
3236 which one is better.
3237
3238 If you're a casual user, you probably don't want interpreter-threads
3239 at this time.  There doesn't yet exist a way to create threads from
3240 within Perl in this model, i.e., "use Thread;" will NOT work.
3241 EOM
3242         : Default to ithreads unless overridden on command line or with
3243         : old config.sh
3244         dflt='y'
3245         case "$use5005threads" in
3246                 $define|true|[yY]*) dflt='n';;
3247         esac
3248         case "$useithreads" in
3249                 $undef|false|[nN]*) dflt='n';;
3250         esac
3251         rp='Use interpreter-based ithreads?'
3252         . ./myread
3253         case "$ans" in
3254         y|Y)    val="$define" ;;
3255         *)      val="$undef" ;;
3256         esac
3257         set useithreads
3258         eval $setvar
3259         : Now set use5005threads to the opposite value.
3260         case "$useithreads" in
3261         $define) val="$undef" ;;
3262         *) val="$define" ;;
3263         esac
3264         set use5005threads
3265         eval $setvar
3266         ;;
3267 *)
3268         useithreads="$undef"
3269         use5005threads="$undef"
3270         ;;
3271 esac
3272
3273 case "$useithreads$use5005threads" in
3274 "$define$define")
3275         $cat >&4 <<EOM
3276
3277 You cannot have both the ithreads and the 5.005 threads enabled
3278 at the same time.  Disabling the 5.005 threads since they are
3279 much less stable than the ithreads.
3280
3281 EOM
3282         use5005threads="$undef"
3283         ;;
3284 esac
3285
3286 case "$d_oldpthreads" in
3287 '')     : Configure tests would be welcome here.  For now, assume undef.
3288         val="$undef" ;;
3289 *)      val="$d_oldpthreads" ;;
3290 esac
3291 set d_oldpthreads
3292 eval $setvar
3293
3294
3295 case "$usethreads" in
3296 "$define"|true|[yY]*)
3297 : Look for a hint-file generated 'call-back-unit'.  If the
3298 : user has specified that a threading perl is to be built,
3299 : we may need to set or change some other defaults.
3300         if $test -f usethreads.cbu; then
3301                 echo "Your platform has some specific hints for threaded builds, using them..."
3302                 . ./usethreads.cbu
3303         else
3304                 $cat <<EOM
3305 (Your platform doesn't have any specific hints for threaded builds.
3306  Assuming POSIX threads, then.)
3307 EOM
3308         fi
3309         ;;
3310 esac
3311
3312 cat <<EOM
3313
3314 Perl can be built so that multiple Perl interpreters can coexist
3315 within the same Perl executable.
3316 EOM
3317
3318 case "$useithreads" in
3319 $define)
3320         cat <<EOM
3321 This multiple interpreter support is required for interpreter-based threads.
3322 EOM
3323         val="$define"
3324         ;;
3325 *)      case "$usemultiplicity" in
3326         $define|true|[yY]*)     dflt='y';;
3327         *) dflt='n';;
3328         esac
3329         echo " "
3330         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3331         rp='Build Perl for multiplicity?'
3332         . ./myread
3333         case "$ans" in
3334         y|Y)    val="$define" ;;
3335         *)      val="$undef" ;;
3336         esac
3337         ;;
3338 esac
3339 set usemultiplicity
3340 eval $setvar
3341
3342
3343 case "$usemorebits" in
3344 "$define"|true|[yY]*)
3345         use64bitint="$define"
3346         uselongdouble="$define"
3347         usemorebits="$define"
3348         ;;
3349 *)      usemorebits="$undef"
3350         ;;
3351 esac
3352
3353 : make some quick guesses about what we are up against
3354 echo " "
3355 $echo $n "Hmm...  $c"
3356 echo exit 1 >bsd
3357 echo exit 1 >usg
3358 echo exit 1 >v7
3359 echo exit 1 >osf1
3360 echo exit 1 >eunice
3361 echo exit 1 >xenix
3362 echo exit 1 >venix
3363 echo exit 1 >os2
3364 d_bsd="$undef"
3365 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3366 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3367 then
3368         echo "Looks kind of like an OSF/1 system, but we'll see..."
3369         echo exit 0 >osf1
3370 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3371         xxx=`./loc addbib blurfl $pth`
3372         if $test -f $xxx; then
3373         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3374                 echo exit 0 >bsd
3375                 echo exit 0 >usg
3376         else
3377                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3378                         echo "Looks kind of like an extended USG system, but we'll see..."
3379                 else
3380                         echo "Looks kind of like a USG system, but we'll see..."
3381                 fi
3382                 echo exit 0 >usg
3383         fi
3384 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3385         echo "Looks kind of like a BSD system, but we'll see..."
3386         d_bsd="$define"
3387         echo exit 0 >bsd
3388 else
3389         echo "Looks kind of like a Version 7 system, but we'll see..."
3390         echo exit 0 >v7
3391 fi
3392 case "$eunicefix" in
3393 *unixtovms*)
3394         $cat <<'EOI'
3395 There is, however, a strange, musty smell in the air that reminds me of
3396 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3397 EOI
3398         echo exit 0 >eunice
3399         d_eunice="$define"
3400 : it so happens the Eunice I know will not run shell scripts in Unix format
3401         ;;
3402 *)
3403         echo " "
3404         echo "Congratulations.  You aren't running Eunice."
3405         d_eunice="$undef"
3406         ;;
3407 esac
3408 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3409 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3410 : semicolon as a patch separator
3411 case "$p_" in
3412 :) ;;
3413 *)
3414         $cat <<'EOI'
3415 I have the feeling something is not exactly right, however...don't tell me...
3416 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3417 (Or you may be running DOS with DJGPP.)
3418 EOI
3419         echo exit 0 >os2
3420         ;;
3421 esac
3422 if test -f /xenix; then
3423         echo "Actually, this looks more like a XENIX system..."
3424         echo exit 0 >xenix
3425         d_xenix="$define"
3426 else
3427         echo " "
3428         echo "It's not Xenix..."
3429         d_xenix="$undef"
3430 fi
3431 chmod +x xenix
3432 $eunicefix xenix
3433 if test -f /venix; then
3434         echo "Actually, this looks more like a VENIX system..."
3435         echo exit 0 >venix
3436 else
3437         echo " "
3438         if ./xenix; then
3439                 : null
3440         else
3441                 echo "Nor is it Venix..."
3442         fi
3443 fi
3444 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3445 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3446 $rm -f foo
3447
3448 case "$cc" in
3449 '') dflt=cc;;
3450 *) dflt="$cc";;
3451 esac
3452 rp="Use which C compiler?"
3453 . ./myread
3454 cc="$ans"
3455 : Look for a hint-file generated 'call-back-unit'.  Now that the
3456 : user has specified the compiler, we may need to set or change some
3457 : other defaults.
3458 if $test -f cc.cbu; then
3459     . ./cc.cbu
3460 fi
3461 . ./checkcc
3462
3463 echo " "
3464 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3465 $cat >try.c <<EOM
3466 #include <stdio.h>
3467 int main() {
3468 #ifdef __GNUC__
3469 #ifdef __VERSION__
3470         printf("%s\n", __VERSION__);
3471 #else
3472         printf("%s\n", "1");
3473 #endif
3474 #endif
3475         exit(0);
3476 }
3477 EOM
3478 if $cc -o try $ccflags $ldflags try.c; then
3479         gccversion=`$run ./try`
3480         case "$gccversion" in
3481         '') echo "You are not using GNU cc." ;;
3482         *)  echo "You are using GNU cc $gccversion."
3483             ccname=gcc  
3484             ;;
3485         esac
3486 else
3487         echo " "
3488         echo "*** WHOA THERE!!! ***" >&4
3489         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3490         case "$knowitall" in
3491         '')
3492         echo "    You'd better start hunting for one and let me know about it." >&4
3493                 exit 1
3494                 ;;
3495         esac
3496 fi
3497 $rm -f try try.*
3498 case "$gccversion" in
3499 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3500 esac
3501 case "$gccversion" in
3502 '') gccosandvers='' ;;
3503 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3504    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3505    gccshortvers=''
3506    case "$gccosandvers" in
3507    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3508    $osname$osvers) ;; # looking good
3509    $osname*) cat <<EOM >&4
3510
3511 *** WHOA THERE!!! ***
3512
3513     Your gcc has not been compiled for the exact release of
3514     your operating system ($gccosandvers versus $osname$osvers).
3515
3516     In general it is a good idea to keep gcc synchronized with
3517     the operating system because otherwise serious problems
3518     may ensue when trying to compile software, like Perl.
3519
3520     I'm trying to be optimistic here, though, and will continue.
3521     If later during the configuration and build icky compilation
3522     problems appear (headerfile conflicts being the most common
3523     manifestation), I suggest reinstalling the gcc to match
3524     your operating system release.
3525
3526 EOM
3527       ;;
3528    *) gccosandvers='' ;; # failed to parse, better be silent
3529    esac
3530    ;;
3531 esac
3532 case "$ccname" in
3533 '') ccname="$cc" ;;
3534 esac
3535
3536
3537 : decide how portable to be.  Allow command line overrides.
3538 case "$d_portable" in
3539 "$undef") ;;
3540 *)      d_portable="$define" ;;
3541 esac
3542
3543 : set up shell script to do ~ expansion
3544 cat >filexp <<EOSS
3545 $startsh
3546 : expand filename
3547 case "\$1" in
3548  ~/*|~)
3549         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3550         ;;
3551  ~*)
3552         if $test -f /bin/csh; then
3553                 /bin/csh -f -c "glob \$1"
3554                 failed=\$?
3555                 echo ""
3556                 exit \$failed
3557         else
3558                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3559                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3560                 if $test ! -d "\$dir"; then
3561                         me=\`basename \$0\`
3562                         echo "\$me: can't locate home directory for: \$name" >&2
3563                         exit 1
3564                 fi
3565                 case "\$1" in
3566                 */*)
3567                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3568                         ;;
3569                 *)
3570                         echo \$dir
3571                         ;;
3572                 esac
3573         fi
3574         ;;
3575 *)
3576         echo \$1
3577         ;;
3578 esac
3579 EOSS
3580 chmod +x filexp
3581 $eunicefix filexp
3582
3583 : now set up to get a file name
3584 cat <<EOS >getfile
3585 $startsh
3586 EOS
3587 cat <<'EOSC' >>getfile
3588 tilde=''
3589 fullpath=''
3590 already=''
3591 skip=''
3592 none_ok=''
3593 exp_file=''
3594 nopath_ok=''
3595 orig_rp="$rp"
3596 orig_dflt="$dflt"
3597 case "$gfpth" in
3598 '') gfpth='.' ;;
3599 esac
3600
3601 case "$fn" in
3602 *\(*)
3603         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3604         fn=`echo $fn | sed 's/(.*)//'`
3605         ;;
3606 esac
3607
3608 case "$fn" in
3609 *:*)
3610         loc_file=`expr $fn : '.*:\(.*\)'`
3611         fn=`expr $fn : '\(.*\):.*'`
3612         ;;
3613 esac
3614
3615 case "$fn" in
3616 *~*) tilde=true;;
3617 esac
3618 case "$fn" in
3619 */*) fullpath=true;;
3620 esac
3621 case "$fn" in
3622 *+*) skip=true;;
3623 esac
3624 case "$fn" in
3625 *n*) none_ok=true;;
3626 esac
3627 case "$fn" in
3628 *e*) exp_file=true;;
3629 esac
3630 case "$fn" in
3631 *p*) nopath_ok=true;;
3632 esac
3633
3634 case "$fn" in
3635 *f*) type='File';;
3636 *d*) type='Directory';;
3637 *l*) type='Locate';;
3638 esac
3639
3640 what="$type"
3641 case "$what" in
3642 Locate) what='File';;
3643 esac
3644
3645 case "$exp_file" in
3646 '')
3647         case "$d_portable" in
3648         "$define") ;;
3649         *) exp_file=true;;
3650         esac
3651         ;;
3652 esac
3653
3654 cd ..
3655 while test "$type"; do
3656         redo=''
3657         rp="$orig_rp"
3658         dflt="$orig_dflt"
3659         case "$tilde" in
3660         true) rp="$rp (~name ok)";;
3661         esac
3662         . UU/myread
3663         if test -f UU/getfile.ok && \
3664                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3665         then
3666                 value="$ans"
3667                 ansexp="$ans"
3668                 break
3669         fi
3670         case "$ans" in
3671         none)
3672                 value=''
3673                 ansexp=''
3674                 case "$none_ok" in
3675                 true) type='';;
3676                 esac
3677                 ;;
3678         *)
3679                 case "$tilde" in
3680                 '') value="$ans"
3681                         ansexp="$ans";;
3682                 *)
3683                         value=`UU/filexp $ans`
3684                         case $? in
3685                         0)
3686                                 if test "$ans" != "$value"; then
3687                                         echo "(That expands to $value on this system.)"
3688                                 fi
3689                                 ;;
3690                         *) value="$ans";;
3691                         esac
3692                         ansexp="$value"
3693                         case "$exp_file" in
3694                         '') value="$ans";;
3695                         esac
3696                         ;;
3697                 esac
3698                 case "$fullpath" in
3699                 true)
3700                         case "$ansexp" in
3701                         /*) value="$ansexp" ;;
3702                         [a-zA-Z]:/*) value="$ansexp" ;;
3703                         *)
3704                                 redo=true
3705                                 case "$already" in
3706                                 true)
3707                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3708                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3709                                         ;;
3710                                 *)
3711                                 echo "Please give a full path name, starting with slash." >&4
3712                                         case "$tilde" in
3713                                         true)
3714                                 echo "Note that using ~name is ok provided it expands well." >&4
3715                                                 already=true
3716                                                 ;;
3717                                         esac
3718                                 esac
3719                                 ;;
3720                         esac
3721                         ;;
3722                 esac
3723                 case "$redo" in
3724                 '')
3725                         case "$type" in
3726                         File)
3727                                 for fp in $gfpth; do
3728                                         if test "X$fp" = X.; then
3729                                             pf="$ansexp"
3730                                         else    
3731                                             pf="$fp/$ansexp"
3732                                         fi
3733                                         if test -f "$pf"; then
3734                                                 type=''
3735                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3736                                         then
3737                                                 echo "($value is not a plain file, but that's ok.)"
3738                                                 type=''
3739                                         fi
3740                                         if test X"$type" = X; then
3741                                             value="$pf"
3742                                             break
3743                                         fi
3744                                 done
3745                                 ;;
3746                         Directory)
3747                                 for fp in $gfpth; do
3748                                         if test "X$fp" = X.; then
3749                                             dir="$ans"
3750                                             direxp="$ansexp"
3751                                         else    
3752                                             dir="$fp/$ansexp"
3753                                             direxp="$fp/$ansexp"
3754                                         fi
3755                                         if test -d "$direxp"; then
3756                                                 type=''
3757                                                 value="$dir"
3758                                                 break
3759                                         fi
3760                                 done
3761                                 ;;
3762                         Locate)
3763                                 if test -d "$ansexp"; then
3764                                         echo "(Looking for $loc_file in directory $value.)"
3765                                         value="$value/$loc_file"
3766                                         ansexp="$ansexp/$loc_file"
3767                                 fi
3768                                 if test -f "$ansexp"; then
3769                                         type=''
3770                                 fi
3771                                 case "$nopath_ok" in
3772                                 true)   case "$value" in
3773                                         */*) ;;
3774                                         *)      echo "Assuming $value will be in people's path."
3775                                                 type=''
3776                                                 ;;
3777                                         esac
3778                                         ;;
3779                                 esac
3780                                 ;;
3781                         esac
3782
3783                         case "$skip" in
3784                         true) type='';
3785                         esac
3786
3787                         case "$type" in
3788                         '') ;;
3789                         *)
3790                                 if test "$fastread" = yes; then
3791                                         dflt=y
3792                                 else
3793                                         dflt=n
3794                                 fi
3795                                 rp="$what $value doesn't exist.  Use that name anyway?"
3796                                 . UU/myread
3797                                 dflt=''
3798                                 case "$ans" in
3799                                 y*) type='';;
3800                                 *) echo " ";;
3801                                 esac
3802                                 ;;
3803                         esac
3804                         ;;
3805                 esac
3806                 ;;
3807         esac
3808 done
3809 cd UU
3810 ans="$value"
3811 rp="$orig_rp"
3812 dflt="$orig_dflt"
3813 rm -f getfile.ok
3814 test "X$gfpthkeep" != Xy && gfpth=""
3815 EOSC
3816
3817 : What should the include directory be ?
3818 echo " "
3819 $echo $n "Hmm...  $c"
3820 dflt='/usr/include'
3821 incpath=''
3822 mips_type=''
3823 if $test -f /bin/mips && /bin/mips; then
3824         echo "Looks like a MIPS system..."
3825         $cat >usr.c <<'EOCP'
3826 #ifdef SYSTYPE_BSD43
3827 /bsd43
3828 #endif
3829 EOCP
3830         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3831                 dflt='/bsd43/usr/include'
3832                 incpath='/bsd43'
3833                 mips_type='BSD 4.3'
3834         else
3835                 mips_type='System V'
3836         fi
3837         $rm -f usr.c usr.out
3838         echo "and you're compiling with the $mips_type compiler and libraries."
3839         xxx_prompt=y
3840         echo "exit 0" >mips
3841 else
3842         echo "Doesn't look like a MIPS system."
3843         xxx_prompt=n
3844         echo "exit 1" >mips
3845 fi
3846 chmod +x mips
3847 $eunicefix mips
3848 case "$usrinc" in
3849 '') ;;
3850 *) dflt="$usrinc";;
3851 esac
3852 case "$xxx_prompt" in
3853 y)      fn=d/
3854         echo " "
3855         rp='Where are the include files you want to use?'
3856         . ./getfile
3857         usrinc="$ans"
3858         ;;
3859 *)      usrinc="$dflt"
3860         ;;
3861 esac
3862
3863 : see how we invoke the C preprocessor
3864 echo " "
3865 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3866 cat <<'EOT' >testcpp.c
3867 #define ABC abc
3868 #define XYZ xyz
3869 ABC.XYZ
3870 EOT
3871 cd ..
3872 if test ! -f cppstdin; then
3873         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3874                 # AIX cc -E doesn't show the absolute headerfile
3875                 # locations but we'll cheat by using the -M flag.
3876                 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
3877         else
3878                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3879         fi
3880 else
3881         echo "Keeping your $hint cppstdin wrapper."
3882 fi
3883 chmod 755 cppstdin
3884 wrapper=`pwd`/cppstdin
3885 ok='false'
3886 cd UU
3887
3888 if $test "X$cppstdin" != "X" && \
3889         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3890         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3891 then
3892         echo "You used to use $cppstdin $cppminus so we'll use that again."
3893         case "$cpprun" in
3894         '') echo "But let's see if we can live without a wrapper..." ;;
3895         *)
3896                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3897                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3898                 then
3899                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3900                         ok='true'
3901                 else
3902                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3903                 fi
3904                 ;;
3905         esac
3906 else
3907         case "$cppstdin" in
3908         '') ;;
3909         *)
3910                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3911                 ;;
3912         esac
3913 fi
3914
3915 if $ok; then
3916         : nothing
3917 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3918         $cc -E <testcpp.c >testcpp.out 2>&1; \
3919         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3920         echo "Yup, it does."
3921         x_cpp="$cc -E"
3922         x_minus='';
3923 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3924         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3925         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3926         echo "Yup, it does."
3927         x_cpp="$cc -E"
3928         x_minus='-';
3929 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3930         $cc -P <testcpp.c >testcpp.out 2>&1; \
3931         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3932         echo "Yipee, that works!"
3933         x_cpp="$cc -P"
3934         x_minus='';
3935 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3936         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3937         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3938         echo "At long last!"
3939         x_cpp="$cc -P"
3940         x_minus='-';
3941 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3942         $cpp <testcpp.c >testcpp.out 2>&1; \
3943         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3944         echo "It works!"
3945         x_cpp="$cpp"
3946         x_minus='';
3947 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3948         $cpp - <testcpp.c >testcpp.out 2>&1; \
3949         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3950         echo "Hooray, it works!  I was beginning to wonder."
3951         x_cpp="$cpp"
3952         x_minus='-';
3953 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3954         $wrapper <testcpp.c >testcpp.out 2>&1; \
3955         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3956         x_cpp="$wrapper"
3957         x_minus=''
3958         echo "Eureka!"
3959 else
3960         dflt=''
3961         rp="No dice.  I can't find a C preprocessor.  Name one:"
3962         . ./myread
3963         x_cpp="$ans"
3964         x_minus=''
3965         $x_cpp <testcpp.c >testcpp.out 2>&1
3966         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3967                 echo "OK, that will do." >&4
3968         else
3969 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3970                 exit 1
3971         fi
3972 fi
3973
3974 case "$ok" in
3975 false)
3976         cppstdin="$x_cpp"
3977         cppminus="$x_minus"
3978         cpprun="$x_cpp"
3979         cpplast="$x_minus"
3980         set X $x_cpp
3981         shift
3982         case "$1" in
3983         "$cpp")
3984                 echo "Perhaps can we force $cc -E using a wrapper..."
3985                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3986                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3987                 then
3988                         echo "Yup, we can."
3989                         cppstdin="$wrapper"
3990                         cppminus='';
3991                 else
3992                         echo "Nope, we'll have to live without it..."
3993                 fi
3994                 ;;
3995         esac
3996         case "$cpprun" in
3997         "$wrapper")
3998                 cpprun=''
3999                 cpplast=''
4000                 ;;
4001         esac
4002         ;;
4003 esac
4004
4005 case "$cppstdin" in
4006 "$wrapper"|'cppstdin') ;;
4007 *) $rm -f $wrapper;;
4008 esac
4009 $rm -f testcpp.c testcpp.out
4010
4011 : Set private lib path
4012 case "$plibpth" in
4013 '') if ./mips; then
4014                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4015         fi;;
4016 esac
4017 case "$libpth" in
4018 ' ') dlist='';;
4019 '') dlist="$loclibpth $plibpth $glibpth";;
4020 *) dlist="$libpth";;
4021 esac
4022
4023 : Now check and see which directories actually exist, avoiding duplicates
4024 libpth=''
4025 for xxx in $dlist
4026 do
4027     if $test -d $xxx; then
4028                 case " $libpth " in
4029                 *" $xxx "*) ;;
4030                 *) libpth="$libpth $xxx";;
4031                 esac
4032     fi
4033 done
4034 $cat <<'EOM'
4035
4036 Some systems have incompatible or broken versions of libraries.  Among
4037 the directories listed in the question below, please remove any you
4038 know not to be holding relevant libraries, and add any that are needed.
4039 Say "none" for none.
4040
4041 EOM
4042 case "$libpth" in
4043 '') dflt='none';;
4044 *)
4045         set X $libpth
4046         shift
4047         dflt=${1+"$@"}
4048         ;;
4049 esac
4050 rp="Directories to use for library searches?"
4051 . ./myread
4052 case "$ans" in
4053 none) libpth=' ';;
4054 *) libpth="$ans";;
4055 esac
4056
4057 : compute shared library extension
4058 case "$so" in
4059 '')
4060         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4061                 dflt='sl'
4062         else
4063                 dflt='so'
4064         fi
4065         ;;
4066 *) dflt="$so";;
4067 esac
4068 $cat <<EOM
4069
4070 On some systems, shared libraries may be available.  Answer 'none' if
4071 you want to suppress searching of shared libraries for the remainder
4072 of this configuration.
4073
4074 EOM
4075 rp='What is the file extension used for shared libraries?'
4076 . ./myread
4077 so="$ans"
4078
4079 : Define several unixisms.
4080 : Hints files or command line option can be used to override them.
4081 : The convoluted testing is in case hints files set either the old
4082 : or the new name.
4083 case "$_exe" in
4084 '')     case "$exe_ext" in
4085     '') ;;
4086         *)      _exe="$exe_ext" ;;
4087         esac
4088         ;;
4089 esac
4090 case "$_a" in
4091 '')     case "$lib_ext" in
4092     '') _a='.a';;
4093         *)      _a="$lib_ext" ;;
4094         esac
4095         ;;
4096 esac
4097 case "$_o" in
4098 '') case "$obj_ext" in
4099         '')     _o='.o';;
4100         *)      _o="$obj_ext";;
4101         esac
4102         ;;
4103 esac
4104 case "$p_" in
4105 '') case "$path_sep" in
4106         '')     p_=':';;
4107         *)      p_="$path_sep";;
4108         esac
4109         ;;
4110 esac
4111 exe_ext=$_exe
4112 lib_ext=$_a
4113 obj_ext=$_o
4114 path_sep=$p_
4115
4116 : Which makefile gets called first.  This is used by make depend.
4117 case "$firstmakefile" in
4118 '') firstmakefile='makefile';;
4119 esac
4120
4121 case "$usesocks" in
4122 $define|true|[yY]*)     dflt='y';;
4123 *) dflt='n';;
4124 esac
4125 cat <<EOM
4126
4127 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4128 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4129 to use the PerlIO abstraction layer, this will be implicitly selected.
4130
4131 If this doesn't make any sense to you, just accept the default '$dflt'.
4132 EOM
4133 rp='Build Perl for SOCKS?'
4134 . ./myread
4135 case "$ans" in
4136 y|Y)    val="$define" ;;     
4137 *)      val="$undef" ;;
4138 esac
4139 set usesocks
4140 eval $setvar
4141
4142 case "$usesocks" in
4143 $define|true|[yY]*) useperlio="$define";;
4144 esac
4145
4146 : Looking for optional libraries
4147 echo " "
4148 echo "Checking for optional libraries..." >&4
4149 case "$libs" in
4150 ' '|'') dflt='';;
4151 *) dflt="$libs";;
4152 esac
4153 case "$libswanted" in
4154 '') libswanted='c_s';;
4155 esac
4156 case "$usesocks" in
4157 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4158 esac
4159 libsfound=''
4160 libsfiles=''
4161 libsdirs=''
4162 libspath=''
4163 for thisdir in $libpth $xlibpth; do
4164   test -d $thisdir && libspath="$libspath $thisdir"
4165 done
4166 for thislib in $libswanted; do
4167         for thisdir in $libspath; do
4168             xxx=''
4169             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4170                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4171                 $test -f "$xxx" && eval $libscheck
4172                 $test -f "$xxx" && libstyle=shared
4173             fi
4174             if test ! -f "$xxx"; then
4175                 xxx=$thisdir/lib$thislib.$so
4176                 $test -f "$xxx" && eval $libscheck
4177                 $test -f "$xxx" && libstyle=shared
4178             fi  
4179             if test ! -f "$xxx"; then
4180                 xxx=$thisdir/lib$thislib$_a
4181                 $test -f "$xxx" && eval $libscheck
4182                 $test -f "$xxx" && libstyle=static
4183             fi
4184             if test ! -f "$xxx"; then
4185                 xxx=$thisdir/$thislib$_a
4186                 $test -f "$xxx" && eval $libscheck
4187                 $test -f "$xxx" && libstyle=static
4188             fi
4189             if test ! -f "$xxx"; then
4190                 xxx=$thisdir/lib${thislib}_s$_a
4191                 $test -f "$xxx" && eval $libscheck
4192                 $test -f "$xxx" && libstyle=static
4193                 $test -f "$xxx" && thislib=${thislib}_s
4194             fi
4195             if test ! -f "$xxx"; then
4196                 xxx=$thisdir/Slib$thislib$_a
4197                 $test -f "$xxx" && eval $libscheck
4198                 $test -f "$xxx" && libstyle=static
4199             fi
4200             if $test -f "$xxx"; then
4201                 case "$libstyle" in
4202                 shared) echo "Found -l$thislib (shared)." ;;
4203                 static) echo "Found -l$thislib." ;;
4204                 *)      echo "Found -l$thislib ($libstyle)." ;;
4205                 esac
4206                 case " $dflt " in
4207                 *"-l$thislib "*);;
4208                 *) dflt="$dflt -l$thislib"
4209                    libsfound="$libsfound $xxx"
4210                    yyy=`basename $xxx`
4211                    libsfiles="$libsfiles $yyy"
4212                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4213                    case " $libsdirs " in
4214                    *" $yyy "*) ;;
4215                    *) libsdirs="$libsdirs $yyy" ;;
4216                    esac
4217                    ;;
4218                 esac
4219                 break
4220             fi  
4221         done
4222         if $test ! -f "$xxx"; then
4223             echo "No -l$thislib."
4224         fi
4225 done
4226 set X $dflt
4227 shift
4228 dflt="$*"
4229 case "$libs" in
4230 '') dflt="$dflt";;
4231 *) dflt="$libs";;
4232 esac
4233 case "$dflt" in
4234 ' '|'') dflt='none';;
4235 esac
4236
4237 $cat <<EOM
4238
4239 In order to compile $package on your machine, a number of libraries
4240 are usually needed.  Include any other special libraries here as well.
4241 Say "none" for none.  The default list is almost always right.
4242 EOM
4243
4244 echo " "
4245 rp="What libraries to use?"
4246 . ./myread
4247 case "$ans" in
4248 none) libs=' ';;
4249 *) libs="$ans";;
4250 esac
4251
4252 : determine optimization, if desired, or use for debug flag also
4253 case "$optimize" in
4254 ' '|$undef) dflt='none';;
4255 '') dflt='-O';;
4256 *) dflt="$optimize";;
4257 esac
4258 $cat <<EOH
4259
4260 By default, $package compiles with the -O flag to use the optimizer.
4261 Alternately, you might want to use the symbolic debugger, which uses
4262 the -g flag (on traditional Unix systems).  Either flag can be
4263 specified here.  To use neither flag, specify the word "none".
4264
4265 EOH
4266 rp="What optimizer/debugger flag should be used?"
4267 . ./myread
4268 optimize="$ans"
4269 case "$optimize" in
4270 'none') optimize=" ";;
4271 esac
4272
4273 dflt=''
4274 : We will not override a previous value, but we might want to
4275 : augment a hint file
4276 case "$hint" in
4277 default|recommended)
4278         case "$gccversion" in
4279         1*) dflt='-fpcc-struct-return' ;;
4280         esac
4281         case "$optimize" in
4282         *-g*) dflt="$dflt -DDEBUGGING";;
4283         esac
4284         case "$gccversion" in
4285         2*) if test -d /etc/conf/kconfig.d &&
4286                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4287                 then
4288                         dflt="$dflt -posix"
4289                 fi
4290                 ;;
4291         esac
4292         case "$gccversion" in
4293         1*) ;;
4294         2.[0-8]*) ;;
4295         ?*)     echo " "
4296                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4297                 echo 'int main(void) { return 0; }' > gcctest.c
4298                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4299                         echo "Yes, it does." 2>&1
4300                         case "$ccflags" in
4301                         *strict-aliasing*) 
4302                                 echo "Leaving current flags $ccflags alone." 2>&1
4303                                 ;;
4304                         *) dflt="$dflt -fno-strict-aliasing" ;;
4305                         esac
4306                 else
4307                         echo "Nope, it doesn't, but that's ok." 2>&1
4308                 fi
4309                 ;;
4310         esac
4311         ;;
4312 esac
4313
4314 case "$mips_type" in
4315 *BSD*|'') inclwanted="$locincpth $usrinc";;
4316 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4317 esac
4318 for thisincl in $inclwanted; do
4319         if $test -d $thisincl; then
4320                 if $test x$thisincl != x$usrinc; then
4321                         case "$dflt" in
4322                         *" -I$thisincl "*);;
4323                         *) dflt="$dflt -I$thisincl ";;
4324                         esac
4325                 fi
4326         fi
4327 done
4328
4329 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4330         xxx=true;
4331 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4332         xxx=true;
4333 else
4334         xxx=false;
4335 fi;
4336 if $xxx; then
4337         case "$dflt" in
4338         *$2*);;
4339         *) dflt="$dflt -D$2";;
4340         esac;
4341 fi'
4342
4343 set signal.h LANGUAGE_C; eval $inctest
4344
4345 case "$usesocks" in
4346 $define)
4347         ccflags="$ccflags -DSOCKS"
4348         ;;
4349 esac
4350
4351 case "$hint" in
4352 default|recommended) dflt="$ccflags $dflt" ;;
4353 *) dflt="$ccflags";;
4354 esac
4355
4356 case "$dflt" in
4357 ''|' ') dflt=none;;
4358 esac
4359
4360 $cat <<EOH
4361
4362 Your C compiler may want other flags.  For this question you should include
4363 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4364 but you should NOT include libraries or ld flags like -lwhatever.  If you
4365 want $package to honor its debug switch, you should include -DDEBUGGING here.
4366 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4367
4368 To use no flags, specify the word "none".
4369
4370 EOH
4371 set X $dflt
4372 shift
4373 dflt=${1+"$@"}
4374 rp="Any additional cc flags?"
4375 . ./myread
4376 case "$ans" in
4377 none) ccflags='';;
4378 *) ccflags="$ans";;
4379 esac
4380
4381 : the following weeds options from ccflags that are of no interest to cpp
4382 case "$cppflags" in
4383 '') cppflags="$ccflags" ;;
4384 *)  cppflags="$cppflags $ccflags" ;;
4385 esac
4386 case "$gccversion" in
4387 1*) cppflags="$cppflags -D__GNUC__"
4388 esac
4389 case "$mips_type" in
4390 '');;
4391 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4392 esac
4393 case "$cppflags" in
4394 '');;
4395 *)
4396         echo " "
4397         echo "Let me guess what the preprocessor flags are..." >&4
4398         set X $cppflags
4399         shift
4400         cppflags=''
4401         $cat >cpp.c <<'EOM'
4402 #define BLURFL foo
4403
4404 BLURFL xx LFRULB
4405 EOM
4406         previous=''
4407         for flag in $*
4408         do
4409                 case "$flag" in
4410                 -*) ftry="$flag";;
4411                 *) ftry="$previous $flag";;
4412                 esac
4413                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4414                         >cpp1.out 2>/dev/null && \
4415                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4416                         >cpp2.out 2>/dev/null && \
4417                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4418                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4419                 then
4420                         cppflags="$cppflags $ftry"
4421                         previous=''
4422                 else
4423                         previous="$flag"
4424                 fi
4425         done
4426         set X $cppflags
4427         shift
4428         cppflags=${1+"$@"}
4429         case "$cppflags" in
4430         *-*)  echo "They appear to be: $cppflags";;
4431         esac
4432         $rm -f cpp.c cpp?.out
4433         ;;
4434 esac
4435
4436 : flags used in final linking phase
4437 case "$ldflags" in
4438 '') if ./venix; then
4439                 dflt='-i -z'
4440         else
4441                 dflt=''
4442         fi
4443         case "$ccflags" in
4444         *-posix*) dflt="$dflt -posix" ;;
4445         esac
4446         ;;
4447 *) dflt="$ldflags";;
4448 esac
4449
4450 : Try to guess additional flags to pick up local libraries.
4451 for thislibdir in $libpth; do
4452         case " $loclibpth " in
4453         *" $thislibdir "*)
4454                 case "$dflt " in 
4455                 *"-L$thislibdir "*) ;;
4456                 *)  dflt="$dflt -L$thislibdir" ;;
4457                 esac
4458                 ;;
4459         esac
4460 done
4461
4462 case "$dflt" in
4463 '') dflt='none' ;;
4464 esac
4465
4466 $cat <<EOH
4467
4468 Your C linker may need flags.  For this question you should
4469 include -L/whatever and any other flags used by the C linker, but you
4470 should NOT include libraries like -lwhatever.
4471
4472 Make sure you include the appropriate -L/path flags if your C linker
4473 does not normally search all of the directories you specified above,
4474 namely
4475         $libpth
4476 To use no flags, specify the word "none".
4477
4478 EOH
4479
4480 rp="Any additional ld flags (NOT including libraries)?"
4481 . ./myread
4482 case "$ans" in
4483 none) ldflags='';;
4484 *) ldflags="$ans";;
4485 esac
4486 rmlist="$rmlist pdp11"
4487
4488 : coherency check
4489 echo " "
4490 echo "Checking your choice of C compiler and flags for coherency..." >&4
4491 $cat > try.c <<'EOF'
4492 #include <stdio.h>
4493 int main() { printf("Ok\n"); exit(0); }
4494 EOF
4495 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4496 shift
4497 $cat >try.msg <<'EOM'
4498 I've tried to compile and run the following simple program:
4499
4500 EOM
4501 $cat try.c >> try.msg
4502
4503 $cat >> try.msg <<EOM
4504
4505 I used the command:
4506
4507         $*
4508         $run ./try
4509
4510 and I got the following output:
4511
4512 EOM
4513 dflt=y
4514 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4515         if $sh -c "$run ./try" >>try.msg 2>&1; then
4516                 xxx=`$run ./try`
4517                 case "$xxx" in
4518                 "Ok") dflt=n ;;
4519                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4520                         case " $libs " in
4521                         *" -lsfio "*)
4522                                 cat >> try.msg <<'EOQS'
4523 If $libs contains -lsfio, and sfio is mis-configured, then it
4524 sometimes (apparently) runs and exits with a 0 status, but with no
4525 output!  It may have to do with sfio's use of _exit vs. exit.
4526
4527 EOQS
4528                                 rp="You have a big problem.  Shall I abort Configure"
4529                                 dflt=y
4530                                 ;;
4531                         esac
4532                         ;;
4533                 esac
4534         else
4535                 echo "The program compiled OK, but exited with status $?." >>try.msg
4536                 rp="You have a problem.  Shall I abort Configure"
4537                 dflt=y
4538         fi
4539 else
4540         echo "I can't compile the test program." >>try.msg
4541         rp="You have a BIG problem.  Shall I abort Configure"
4542         dflt=y
4543 fi
4544 case "$dflt" in
4545 y)
4546         $cat try.msg >&4
4547         case "$knowitall" in
4548         '')
4549                 echo "(The supplied flags or libraries might be incorrect.)"
4550                 ;;
4551         *) dflt=n;;
4552         esac
4553         echo " "
4554         . ./myread
4555         case "$ans" in
4556         n*|N*) ;;
4557         *)      echo "Ok.  Stopping Configure." >&4
4558                 exit 1
4559                 ;;
4560         esac
4561         ;;
4562 n) echo "OK, that should do.";;
4563 esac
4564 $rm -f try try.* core
4565
4566 : define a shorthand compile call
4567 compile='
4568 mc_file=$1;
4569 shift;
4570 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4571 : define a shorthand compile call for compilations that should be ok.
4572 compile_ok='
4573 mc_file=$1;
4574 shift;
4575 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4576
4577 : check for lengths of integral types
4578 echo " "
4579 case "$intsize" in
4580 '')
4581         echo "Checking to see how big your integers are..." >&4
4582         $cat >try.c <<'EOCP'
4583 #include <stdio.h>
4584 int main()
4585 {
4586         printf("intsize=%d;\n", (int)sizeof(int));
4587         printf("longsize=%d;\n", (int)sizeof(long));
4588         printf("shortsize=%d;\n", (int)sizeof(short));
4589         exit(0);
4590 }
4591 EOCP
4592         set try
4593         if eval $compile_ok && $run ./try > /dev/null; then
4594                 eval `$run ./try`
4595                 echo "Your integers are $intsize bytes long."
4596                 echo "Your long integers are $longsize bytes long."
4597                 echo "Your short integers are $shortsize bytes long."
4598         else
4599                 $cat >&4 <<EOM
4600 !
4601 Help! I can't compile and run the intsize test program: please enlighten me!
4602 (This is probably a misconfiguration in your system or libraries, and
4603 you really ought to fix it.  Still, I'll try anyway.)
4604 !
4605 EOM
4606                 dflt=4
4607                 rp="What is the size of an integer (in bytes)?"
4608                 . ./myread
4609                 intsize="$ans"
4610                 dflt=$intsize
4611                 rp="What is the size of a long integer (in bytes)?"
4612                 . ./myread
4613                 longsize="$ans"
4614                 dflt=2
4615                 rp="What is the size of a short integer (in bytes)?"
4616                 . ./myread
4617                 shortsize="$ans"
4618         fi
4619         ;;
4620 esac
4621 $rm -f try try.*
4622
4623 : check for void type
4624 echo " "
4625 echo "Checking to see how well your C compiler groks the void type..." >&4
4626 case "$voidflags" in
4627 '')
4628         $cat >try.c <<'EOCP'
4629 #if TRY & 1
4630 void sub() {
4631 #else
4632 sub() {
4633 #endif
4634         extern void moo();      /* function returning void */
4635         void (*goo)();          /* ptr to func returning void */
4636 #if TRY & 8
4637         void *hue;              /* generic ptr */
4638 #endif
4639 #if TRY & 2
4640         void (*foo[10])();
4641 #endif
4642
4643 #if TRY & 4
4644         if(goo == moo) {
4645                 exit(0);
4646         }
4647 #endif
4648         exit(0);
4649 }
4650 int main() { sub(); }
4651 EOCP
4652         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4653                 voidflags=$defvoidused
4654         echo "Good.  It appears to support void to the level $package wants.">&4
4655                 if $contains warning .out >/dev/null 2>&1; then
4656                         echo "However, you might get some warnings that look like this:"
4657                         $cat .out
4658                 fi
4659         else
4660 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4661                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4662                         echo "It supports 1..."
4663                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4664                                 echo "It also supports 2..."
4665                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4666                                         voidflags=7
4667                                         echo "And it supports 4 but not 8 definitely."
4668                                 else
4669                                         echo "It doesn't support 4..."
4670                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4671                                                 voidflags=11
4672                                                 echo "But it supports 8."
4673                                         else
4674                                                 voidflags=3
4675                                                 echo "Neither does it support 8."
4676                                         fi
4677                                 fi
4678                         else
4679                                 echo "It does not support 2..."
4680                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4681                                         voidflags=13
4682                                         echo "But it supports 4 and 8."
4683                                 else
4684                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4685                                                 voidflags=5
4686                                                 echo "And it supports 4 but has not heard about 8."
4687                                         else
4688                                                 echo "However it supports 8 but not 4."
4689                                         fi
4690                                 fi
4691                         fi
4692                 else
4693                         echo "There is no support at all for void."
4694                         voidflags=0
4695                 fi
4696         fi
4697 esac
4698 case "$voidflags" in
4699 "$defvoidused") ;;
4700 *)      $cat >&4 <<'EOM'
4701   Support flag bits are:
4702     1: basic void declarations.
4703     2: arrays of pointers to functions returning void.
4704     4: operations between pointers to and addresses of void functions.
4705     8: generic void pointers.
4706 EOM
4707         dflt="$voidflags";
4708         rp="Your void support flags add up to what?"
4709         . ./myread
4710         voidflags="$ans"
4711         ;;
4712 esac
4713 $rm -f try.* .out
4714
4715 : check for length of pointer
4716 echo " "
4717 case "$ptrsize" in
4718 '')
4719         echo "Checking to see how big your pointers are..." >&4
4720         if test "$voidflags" -gt 7; then
4721                 echo '#define VOID_PTR char *' > try.c
4722         else
4723                 echo '#define VOID_PTR void *' > try.c
4724         fi
4725         $cat >>try.c <<'EOCP'
4726 #include <stdio.h>
4727 int main()
4728 {
4729     printf("%d\n", (int)sizeof(VOID_PTR));
4730     exit(0);
4731 }
4732 EOCP
4733         set try
4734         if eval $compile_ok; then
4735                 ptrsize=`$run ./try`
4736                 echo "Your pointers are $ptrsize bytes long."
4737         else
4738                 dflt='4'
4739                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4740                 rp="What is the size of a pointer (in bytes)?"
4741                 . ./myread
4742                 ptrsize="$ans"
4743         fi
4744         ;;
4745 esac
4746 $rm -f try.c try
4747
4748 : check for long long
4749 echo " "
4750 echo "Checking to see if you have long long..." >&4
4751 echo 'int main() { long long x = 7; return 0; }' > try.c
4752 set try
4753 if eval $compile; then
4754         val="$define"
4755         echo "You have long long."
4756 else
4757         val="$undef"
4758         echo "You do not have long long."
4759 fi
4760 $rm try.*
4761 set d_longlong
4762 eval $setvar
4763
4764 : check for length of long long
4765 case "${d_longlong}${longlongsize}" in
4766 $define)
4767         echo " "
4768         echo "Checking to see how big your long longs are..." >&4
4769         $cat >try.c <<'EOCP'
4770 #include <stdio.h>
4771 int main()
4772 {
4773     printf("%d\n", (int)sizeof(long long));
4774     return(0);
4775 }
4776 EOCP
4777         set try
4778         if eval $compile_ok; then
4779                 longlongsize=`$run ./try`
4780                 echo "Your long longs are $longlongsize bytes long."
4781         else
4782                 dflt='8'
4783                 echo " "
4784                 echo "(I can't seem to compile the test program.  Guessing...)"
4785                 rp="What is the size of a long long (in bytes)?"
4786                 . ./myread
4787                 longlongsize="$ans"
4788         fi
4789         if $test "X$longsize" = "X$longlongsize"; then
4790                 echo "(That isn't any different from an ordinary long.)"
4791         fi      
4792         ;;
4793 esac
4794 $rm -f try.* try
4795
4796 : determine filename position in cpp output
4797 echo " "
4798 echo "Computing filename position in cpp output for #include directives..." >&4
4799 echo '#include <stdio.h>' > foo.c
4800 $cat >fieldn <<EOF
4801 $startsh
4802 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4803 $grep '^[       ]*#.*stdio\.h' | \
4804 while read cline; do
4805         pos=1
4806         set \$cline
4807         while $test \$# -gt 0; do
4808                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4809                         echo "\$pos"
4810                         exit 0
4811                 fi
4812                 shift
4813                 pos=\`expr \$pos + 1\`
4814         done
4815 done
4816 EOF
4817 chmod +x fieldn
4818 fieldn=`./fieldn`
4819 $rm -f foo.c fieldn
4820 case $fieldn in
4821 '') pos='???';;
4822 1) pos=first;;
4823 2) pos=second;;
4824 3) pos=third;;
4825 *) pos="${fieldn}th";;
4826 esac
4827 echo "Your cpp writes the filename in the $pos field of the line."
4828
4829 : locate header file
4830 $cat >findhdr <<EOF
4831 $startsh
4832 wanted=\$1
4833 name=''
4834 for usrincdir in $usrinc
4835 do
4836         if test -f \$usrincdir/\$wanted; then
4837                 echo "\$usrincdir/\$wanted"
4838                 exit 0
4839         fi
4840 done
4841 awkprg='{ print \$$fieldn }'
4842 echo "#include <\$wanted>" > foo\$\$.c
4843 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4844 $grep "^[       ]*#.*\$wanted" | \
4845 while read cline; do
4846         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4847         case "\$name" in
4848         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4849         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4850         *) exit 2;;
4851         esac;
4852 done;
4853 #
4854 # status = 0: grep returned 0 lines, case statement not executed
4855 # status = 1: headerfile found
4856 # status = 2: while loop executed, no headerfile found
4857 #
4858 status=\$?
4859 $rm -f foo\$\$.c;
4860 if test \$status -eq 1; then
4861         exit 0;
4862 fi
4863 exit 1
4864 EOF
4865 chmod +x findhdr
4866
4867 : define an alternate in-header-list? function
4868 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4869 cont=true; xxf="echo \"<\$1> found.\" >&4";
4870 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4871 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4872 esac;
4873 case $# in 4) instead=instead;; *) instead="at last";; esac;
4874 while $test "$cont"; do
4875         xxx=`./findhdr $1`
4876         var=$2; eval "was=\$$2";
4877         if $test "$xxx" && $test -r "$xxx";
4878         then eval $xxf;
4879         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4880                 cont="";
4881         else eval $xxnf;
4882         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4883         set $yyy; shift; shift; yyy=$@;
4884         case $# in 0) cont="";;
4885         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4886                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4887         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4888                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4889         esac;
4890 done;
4891 while $test "$yyy";
4892 do set $yyy; var=$2; eval "was=\$$2";
4893         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4894         set $yyy; shift; shift; yyy=$@;
4895 done'
4896
4897 : see if inttypes.h is available
4898 : we want a real compile instead of Inhdr because some systems
4899 : have an inttypes.h which includes non-existent headers
4900 echo " "
4901 $cat >try.c <<EOCP
4902 #include <inttypes.h>
4903 int main() {
4904         static int32_t foo32 = 0x12345678;
4905 }
4906 EOCP
4907 set try
4908 if eval $compile; then
4909         echo "<inttypes.h> found." >&4
4910         val="$define"
4911 else
4912         echo "<inttypes.h> NOT found." >&4
4913         val="$undef"
4914 fi
4915 $rm -f try.c try
4916 set i_inttypes
4917 eval $setvar
4918
4919 : check for int64_t
4920 echo " "
4921 echo "Checking to see if you have int64_t..." >&4
4922 $cat >try.c <<EOCP
4923 #include <sys/types.h>
4924 #$i_inttypes I_INTTYPES
4925 #ifdef I_INTTYPES
4926 #include <inttypes.h>
4927 #endif
4928 int main() { int64_t x = 7; }
4929 EOCP
4930 set try
4931 if eval $compile; then
4932         val="$define"
4933         echo "You have int64_t."
4934 else
4935         val="$undef"
4936         echo "You do not have int64_t."
4937 fi
4938 $rm -f try try.*
4939 set d_int64_t
4940 eval $setvar
4941
4942
4943 echo " "
4944 echo "Checking which 64-bit integer type we could use..." >&4
4945
4946 case "$intsize" in
4947 8) val=int
4948    set quadtype
4949    eval $setvar
4950    val='"unsigned int"'
4951    set uquadtype
4952    eval $setvar
4953    quadkind=1
4954    ;;
4955 *) case "$longsize" in
4956    8) val=long
4957       set quadtype
4958       eval $setvar
4959       val='"unsigned long"'
4960       set uquadtype
4961       eval $setvar
4962       quadkind=2
4963       ;;
4964    *) case "$d_longlong:$longlongsize" in
4965       define:8)
4966         val='"long long"'
4967         set quadtype
4968         eval $setvar
4969         val='"unsigned long long"'
4970         set uquadtype
4971         eval $setvar
4972         quadkind=3
4973         ;;
4974       *) case "$d_int64_t" in
4975          define)
4976            val=int64_t
4977            set quadtype
4978            eval $setvar
4979            val=uint64_t
4980            set uquadtype
4981            eval $setvar
4982            quadkind=4
4983            ;;
4984          esac
4985          ;;
4986       esac
4987       ;;
4988    esac
4989    ;;
4990 esac
4991
4992 case "$quadtype" in
4993 '')     echo "Alas, no 64-bit integer types in sight." >&4
4994         d_quad="$undef"
4995         ;;
4996 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
4997         d_quad="$define"
4998         ;;
4999 esac
5000
5001
5002 case "$uselonglong" in
5003 "$define"|true|[yY]*)
5004         cat <<EOM >&4
5005
5006 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5007 EOM
5008         use64bitint="$define"
5009         ;;
5010 esac                          
5011 case "$use64bits" in
5012 "$define"|true|[yY]*)
5013         cat <<EOM >&4
5014
5015 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5016 EOM
5017         use64bitint="$define"
5018         ;;
5019 esac                          
5020 case "$use64bitints" in
5021 "$define"|true|[yY]*)
5022         cat <<EOM >&4
5023
5024 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5025 EOM
5026         use64bitint="$define"
5027         ;;
5028 esac                          
5029 case "$use64bitsint" in
5030 "$define"|true|[yY]*)
5031         cat <<EOM >&4
5032
5033 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5034 EOM
5035         use64bitint="$define"
5036         ;;
5037 esac                          
5038 case "$uselonglongs" in
5039 "$define"|true|[yY]*)
5040         cat <<EOM >&4
5041
5042 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5043 EOM
5044         use64bitint="$define"
5045         ;;
5046 esac                          
5047 case "$use64bitsall" in
5048 "$define"|true|[yY]*)
5049         cat <<EOM >&4
5050
5051 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5052 EOM
5053         use64bitall="$define"
5054         ;;
5055 esac                          
5056
5057 case "$ccflags" in
5058 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5059 esac
5060 case "$use64bitall" in
5061 "$define"|true|[yY]*) use64bitint="$define" ;;
5062 esac
5063
5064 case "$longsize" in
5065 8) cat <<EOM
5066
5067 You have natively 64-bit long integers.
5068 EOM
5069    val="$define"
5070    ;;
5071 *) case "$use64bitint" in
5072    "$define"|true|[yY]*) dflt='y';;
5073    *) dflt='n';;
5074    esac
5075    case "$d_quad" in
5076    "$define") ;;
5077    *) dflt='n' ;;
5078    esac
5079    cat <<EOM
5080
5081 Perl can be built to take advantage of 64-bit integer types
5082 on some systems.  To do so, Configure can be run with -Duse64bitint.
5083 Choosing this option will most probably introduce binary incompatibilities.
5084
5085 If this doesn't make any sense to you, just accept the default '$dflt'.
5086 (The default has been chosen based on your configuration.)
5087 EOM
5088    rp='Try to use 64-bit integers, if available?'
5089    . ./myread
5090    case "$ans" in
5091    [yY]*) val="$define" ;;
5092    *)     val="$undef"  ;;
5093    esac
5094    ;;
5095 esac
5096 set use64bitint
5097 eval $setvar
5098
5099 case "$use64bitall" in
5100 "$define"|true|[yY]*) dflt='y' ;;
5101 *) case "$longsize" in
5102    8) dflt='y' ;;
5103    *) dflt='n' ;;
5104    esac
5105    ;;
5106 esac    
5107 cat <<EOM
5108
5109 You may also choose to try maximal 64-bitness.  It means using as much
5110 64-bitness as possible on the platform.  This in turn means even more
5111 binary incompatibilities.  On the other hand, your platform may not
5112 have any more 64-bitness available than what you already have chosen.
5113
5114 If this doesn't make any sense to you, just accept the default '$dflt'.
5115 (The default has been chosen based on your configuration.)
5116 EOM
5117 rp='Try to use maximal 64-bit support, if available?'
5118 . ./myread
5119 case "$ans" in
5120 [yY]*) val="$define" ;;
5121 *)     val="$undef"  ;;
5122 esac
5123 set use64bitall
5124 eval $setvar
5125 case "$use64bitall" in
5126 "$define")
5127         case "$use64bitint" in
5128         "$undef")
5129                 cat <<EOM
5130
5131 Since you have chosen a maximally 64-bit build, I'm also turning on
5132 the use of 64-bit integers.
5133 EOM
5134                 use64bitint="$define" ;;
5135         esac
5136         ;;
5137 esac
5138
5139 case "$use64bitall" in
5140 "$define"|true|[yY]*)
5141         case "$ptrsize" in
5142         4)      cat <<EOM >&4
5143
5144 *** You have chosen a maximally 64-bit build, but your pointers
5145 *** are only 4 bytes wide, disabling maximal 64-bitness.
5146
5147 EOM
5148                 use64bitall="$undef"
5149                 case "$use64bitint" in
5150                 "$define"|true|[yY]*) ;;
5151                 *)      cat <<EOM >&4
5152
5153 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5154
5155 EOM
5156                         use64bitint="$define"
5157                         ;;
5158                 esac
5159                 ;;
5160         esac
5161         ;;
5162 esac
5163
5164 case "$use64bitint" in
5165 "$define"|true|[yY]*)
5166 : Look for a hint-file generated 'call-back-unit'.  If the
5167 : user has specified that a 64-bit perl is to be built,
5168 : we may need to set or change some other defaults.
5169         if $test -f use64bitint.cbu; then
5170                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5171                 . ./use64bitint.cbu
5172         fi
5173         case "$longsize" in
5174         4) case "$archname64" in
5175            '') archname64=64int ;;
5176            esac
5177            ;;
5178         esac
5179         ;;
5180 esac
5181
5182 case "$use64bitall" in
5183 "$define"|true|[yY]*)
5184 : Look for a hint-file generated 'call-back-unit'.  If the
5185 : user has specified that a maximally 64-bit perl is to be built,
5186 : we may need to set or change some other defaults.
5187         if $test -f use64bitall.cbu; then
5188                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5189                 . ./use64bitall.cbu
5190         fi
5191         case "$longsize" in
5192         4) case "$archname64" in
5193            ''|64int) archname64=64all ;;
5194            esac
5195            ;;
5196         esac
5197         ;;
5198 esac
5199
5200 echo " "
5201 echo "Checking for GNU C Library..." >&4
5202 cat >try.c <<EOM
5203 #include <stdio.h>
5204 int main()
5205 {
5206 #ifdef __GLIBC__
5207     exit(0);
5208 #else
5209     exit(1);
5210 #endif
5211 }
5212 EOM
5213 set try
5214 if eval $compile_ok && $run ./try; then
5215         val="$define"
5216         echo "You are using the GNU C Library"
5217 else
5218         val="$undef"
5219         echo "You are not using the GNU C Library"
5220 fi
5221 $rm -f try try.*
5222 set d_gnulibc
5223 eval $setvar
5224
5225 : see if nm is to be used to determine whether a symbol is defined or not
5226 case "$usenm" in
5227 '')
5228         dflt=''
5229         case "$d_gnulibc" in
5230         "$define")
5231                 echo " "
5232                 echo "nm probably won't work on the GNU C Library." >&4
5233                 dflt=n
5234                 ;;
5235         esac
5236         case "$dflt" in
5237         '') 
5238                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5239                         echo " "
5240                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5241                         echo "'nm' won't be sufficient on this sytem." >&4
5242                         dflt=n
5243                 fi
5244                 ;;
5245         esac
5246         case "$dflt" in
5247         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5248                 if $test $dflt -gt 20; then
5249                         dflt=y
5250                 else
5251                         dflt=n
5252                 fi
5253                 ;;
5254         esac
5255         ;;
5256 *)
5257         case "$usenm" in
5258         true|$define) dflt=y;;
5259         *) dflt=n;;
5260         esac
5261         ;;
5262 esac
5263 $cat <<EOM
5264
5265 I can use $nm to extract the symbols from your C libraries. This
5266 is a time consuming task which may generate huge output on the disk (up
5267 to 3 megabytes) but that should make the symbols extraction faster. The
5268 alternative is to skip the 'nm' extraction part and to compile a small
5269 test program instead to determine whether each symbol is present. If
5270 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5271 this may be the best solution.
5272
5273 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5274
5275 EOM
5276 rp="Shall I use $nm to extract C symbols from the libraries?"
5277 . ./myread
5278 case "$ans" in
5279 [Nn]*) usenm=false;;
5280 *) usenm=true;;
5281 esac
5282
5283 runnm=$usenm
5284 case "$reuseval" in
5285 true) runnm=false;;
5286 esac
5287
5288 : nm options which may be necessary
5289 case "$nm_opt" in
5290 '') if $test -f /mach_boot; then
5291                 nm_opt=''       # Mach
5292         elif $test -d /usr/ccs/lib; then
5293                 nm_opt='-p'     # Solaris (and SunOS?)
5294         elif $test -f /dgux; then
5295                 nm_opt='-p'     # DG-UX
5296         elif $test -f /lib64/rld; then
5297                 nm_opt='-p'     # 64-bit Irix
5298         else
5299                 nm_opt=''
5300         fi;;
5301 esac
5302
5303 : nm options which may be necessary for shared libraries but illegal
5304 : for archive libraries.  Thank you, Linux.
5305 case "$nm_so_opt" in
5306 '')     case "$myuname" in
5307         *linux*)
5308                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5309                         nm_so_opt='--dynamic'
5310                 fi
5311                 ;;
5312         esac
5313         ;;
5314 esac
5315
5316 case "$runnm" in
5317 true)
5318 : get list of predefined functions in a handy place
5319 echo " "
5320 case "$libc" in
5321 '') libc=unknown
5322         case "$libs" in
5323         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5324         esac
5325         ;;
5326 esac
5327 case "$libs" in
5328 '') ;;
5329 *)  for thislib in $libs; do
5330         case "$thislib" in
5331         -lc|-lc_s)
5332                 : Handle C library specially below.
5333                 ;;
5334         -l*)
5335                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5336                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5337                         :
5338                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5339                         :
5340                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5341                         :
5342                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5343                         :
5344                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5345                         :
5346                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5347                         :
5348                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5349                         :
5350                 else
5351                         try=''
5352                 fi
5353                 libnames="$libnames $try"
5354                 ;;
5355         *) libnames="$libnames $thislib" ;;
5356         esac
5357         done
5358         ;;
5359 esac
5360 xxx=normal
5361 case "$libc" in
5362 unknown)
5363         set /lib/libc.$so
5364         for xxx in $libpth; do
5365                 $test -r $1 || set $xxx/libc.$so
5366                 : The messy sed command sorts on library version numbers.
5367                 $test -r $1 || \
5368                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5369                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5370                                 h
5371                                 s/[0-9][0-9]*/0000&/g
5372                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5373                                 G
5374                                 s/\n/ /' | \
5375                          $sort | $sed -e 's/^.* //'`
5376                 eval set \$$#
5377         done
5378         $test -r $1 || set /usr/ccs/lib/libc.$so
5379         $test -r $1 || set /lib/libsys_s$_a
5380         ;;
5381 *)
5382         set blurfl
5383         ;;
5384 esac
5385 if $test -r "$1"; then
5386         echo "Your (shared) C library seems to be in $1."
5387         libc="$1"
5388 elif $test -r /lib/libc && $test -r /lib/clib; then
5389         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5390         xxx=apollo
5391         libc='/lib/clib /lib/libc'
5392         if $test -r /lib/syslib; then
5393                 echo "(Your math library is in /lib/syslib.)"
5394                 libc="$libc /lib/syslib"
5395         fi
5396 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5397         echo "Your C library seems to be in $libc, as you said before."
5398 elif $test -r $incpath/usr/lib/libc$_a; then
5399         libc=$incpath/usr/lib/libc$_a;
5400         echo "Your C library seems to be in $libc.  That's fine."
5401 elif $test -r /lib/libc$_a; then
5402         libc=/lib/libc$_a;
5403         echo "Your C library seems to be in $libc.  You're normal."
5404 else
5405         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5406                 :
5407         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5408                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5409         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5410                 :
5411         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5412                 :
5413         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5414                 :
5415         else
5416                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5417         fi
5418         if $test -r "$tans"; then
5419                 echo "Your C library seems to be in $tans, of all places."
5420                 libc=$tans
5421         else
5422                 libc='blurfl'
5423         fi
5424 fi
5425 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5426         dflt="$libc"
5427         cat <<EOM
5428
5429 If the guess above is wrong (which it might be if you're using a strange
5430 compiler, or your machine supports multiple models), you can override it here.
5431
5432 EOM
5433 else
5434         dflt=''
5435         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5436         cat >&4 <<EOM
5437 I can't seem to find your C library.  I've looked in the following places:
5438
5439 EOM
5440         $sed 's/^/      /' libpath
5441         cat <<EOM
5442
5443 None of these seems to contain your C library. I need to get its name...
5444
5445 EOM
5446 fi
5447 fn=f
5448 rp='Where is your C library?'
5449 . ./getfile
5450 libc="$ans"
5451
5452 echo " "
5453 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5454 set X `cat libnames`
5455 shift
5456 xxx=files
5457 case $# in 1) xxx=file; esac
5458 echo "Extracting names from the following $xxx for later perusal:" >&4
5459 echo " "
5460 $sed 's/^/      /' libnames >&4
5461 echo " "
5462 $echo $n "This may take a while...$c" >&4
5463
5464 for file in $*; do
5465         case $file in
5466         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5467         *) $nm $nm_opt $file 2>/dev/null;;
5468         esac
5469 done >libc.tmp
5470
5471 $echo $n ".$c"
5472 $grep fprintf libc.tmp > libc.ptf
5473 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5474 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5475 xxx='[ADTSIW]'
5476 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5477         eval $xscan;\
5478         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5479                 eval $xrun
5480 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5481         eval $xscan;\
5482         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5483                 eval $xrun
5484 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5485         eval $xscan;\
5486         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5487                 eval $xrun
5488 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5489         eval $xscan;\
5490         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5491                 eval $xrun
5492 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5493         eval $xscan;\
5494         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5495                 eval $xrun
5496 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5497         eval $xscan;\
5498         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5499                 eval $xrun
5500 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5501                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5502         eval $xscan;\
5503         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5504                 eval $xrun
5505 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5506         eval $xscan;\
5507         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5508                 eval $xrun
5509 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5510         eval $xscan;\
5511         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5512                 eval $xrun
5513 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5514         eval $xscan;\
5515         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5516                 eval $xrun
5517 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5518         eval $xscan;\
5519         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5520                 eval $xrun
5521 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5522         eval $xscan;\
5523         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5524                 eval $xrun
5525 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5526         eval $xscan;\
5527         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5528                 eval $xrun
5529 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5530         eval $xscan;\
5531         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5532                 eval $xrun
5533 else
5534         $nm -p $* 2>/dev/null >libc.tmp
5535         $grep fprintf libc.tmp > libc.ptf
5536         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5537                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5538         then
5539                 nm_opt='-p'
5540                 eval $xrun
5541         else
5542                 echo " "
5543                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5544                 com=''
5545                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5546                         for thisname in $libnames $libc; do
5547                                 $ar t $thisname >>libc.tmp
5548                         done
5549                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5550                         echo "Ok." >&4
5551                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5552                         # Repeat libc to extract forwarders to DLL entries too
5553                         for thisname in $libnames $libc; do
5554                                 $ar tv $thisname >>libc.tmp
5555                                 # Revision 50 of EMX has bug in $ar.
5556                                 # it will not extract forwarders to DLL entries
5557                                 # Use emximp which will extract exactly them.
5558                                 emximp -o tmp.imp $thisname \
5559                                     2>/dev/null && \
5560                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5561                                     < tmp.imp >>libc.tmp
5562                                 $rm tmp.imp
5563                         done
5564                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5565                         echo "Ok." >&4
5566                 else
5567                         echo "$ar didn't seem to work right." >&4
5568                         echo "Maybe this is a Cray...trying bld instead..." >&4
5569                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5570                         then
5571                                 for thisname in $libnames; do
5572                                         bld t $libnames | \
5573                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5574                                         $ar t $thisname >>libc.tmp
5575                                 done
5576                                 echo "Ok." >&4
5577                         else
5578                                 echo "That didn't work either.  Giving up." >&4
5579                                 exit 1
5580                         fi
5581                 fi
5582         fi
5583 fi
5584 nm_extract="$com"
5585 if $test -f /lib/syscalls.exp; then
5586         echo " "
5587         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5588         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5589 fi
5590 ;;
5591 esac
5592 $rm -f libnames libpath
5593
5594 : is a C symbol defined?
5595 csym='tlook=$1;
5596 case "$3" in
5597 -v) tf=libc.tmp; tc=""; tdc="";;
5598 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5599 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5600 esac;
5601 tx=yes;
5602 case "$reuseval-$4" in
5603 true-) ;;
5604 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5605 esac;
5606 case "$tx" in
5607 yes)
5608         case "$runnm" in
5609         true)
5610                 if $contains $tlook $tf >/dev/null 2>&1;
5611                 then tval=true;
5612                 else tval=false;
5613                 fi;;
5614         *)
5615                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5616                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5617                 then tval=true;
5618                 else tval=false;
5619                 fi;
5620                 $rm -f t t.c;;
5621         esac;;
5622 *)
5623         case "$tval" in
5624         $define) tval=true;;
5625         *) tval=false;;
5626         esac;;
5627 esac;
5628 eval "$2=$tval"'
5629
5630 : define an is-in-libc? function
5631 inlibc='echo " "; td=$define; tu=$undef;
5632 sym=$1; var=$2; eval "was=\$$2";
5633 tx=yes;
5634 case "$reuseval$was" in
5635 true) ;;
5636 true*) tx=no;;
5637 esac;
5638 case "$tx" in
5639 yes)
5640         set $sym tres -f;
5641         eval $csym;
5642         case "$tres" in
5643         true)
5644                 echo "$sym() found." >&4;
5645                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5646         *)
5647                 echo "$sym() NOT found." >&4;
5648                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5649         esac;;
5650 *)
5651         case "$was" in
5652         $define) echo "$sym() found." >&4;;
5653         *) echo "$sym() NOT found." >&4;;
5654         esac;;
5655 esac'
5656
5657 : see if sqrtl exists
5658 set sqrtl d_sqrtl
5659 eval $inlibc
5660
5661 case "$ccflags" in
5662 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5663 esac
5664
5665 case "$uselongdouble" in
5666 $define|true|[yY]*)     dflt='y';;
5667 *) dflt='n';;
5668 esac
5669 cat <<EOM
5670
5671 Perl can be built to take advantage of long doubles which
5672 (if available) may give more accuracy and range for floating point numbers.
5673
5674 If this doesn't make any sense to you, just accept the default '$dflt'.
5675 EOM
5676 rp='Try to use long doubles if available?'
5677 . ./myread
5678 case "$ans" in
5679 y|Y)    val="$define"   ;;
5680 *)      val="$undef"    ;;
5681 esac
5682 set uselongdouble
5683 eval $setvar
5684
5685 case "$uselongdouble" in
5686 true|[yY]*) uselongdouble="$define" ;;
5687 esac
5688
5689 case "$uselongdouble" in
5690 $define)
5691 : Look for a hint-file generated 'call-back-unit'.  If the
5692 : user has specified that long doubles should be used,
5693 : we may need to set or change some other defaults.
5694         if $test -f uselongdouble.cbu; then
5695                 echo "Your platform has some specific hints for long doubles, using them..."
5696                 . ./uselongdouble.cbu
5697         else
5698                 $cat <<EOM
5699 (Your platform doesn't have any specific hints for long doubles.)
5700 EOM
5701         fi
5702         ;;
5703 esac
5704
5705 case "$uselongdouble:$d_sqrtl" in
5706 $define:$undef)
5707                 $cat <<EOM >&4
5708
5709 *** You requested the use of long doubles but you do not seem to have
5710 *** the mathematic functions for long doubles.  I'm disabling the use
5711 *** of long doubles.
5712
5713 EOM
5714         uselongdouble=$undef
5715         ;;
5716 esac
5717
5718 : check for length of double
5719 echo " "
5720 case "$doublesize" in
5721 '')
5722         echo "Checking to see how big your double precision numbers are..." >&4
5723         $cat >try.c <<'EOCP'
5724 #include <stdio.h>
5725 int main()
5726 {
5727     printf("%d\n", (int)sizeof(double));
5728     exit(0);
5729 }
5730 EOCP
5731         set try
5732         if eval $compile_ok; then
5733                 doublesize=`$run ./try`
5734                 echo "Your double is $doublesize bytes long."
5735         else
5736                 dflt='8'
5737                 echo "(I can't seem to compile the test program.  Guessing...)"
5738                 rp="What is the size of a double precision number (in bytes)?"
5739                 . ./myread
5740                 doublesize="$ans"
5741         fi
5742         ;;
5743 esac
5744 $rm -f try.c try
5745
5746 : check for long doubles
5747 echo " "
5748 echo "Checking to see if you have long double..." >&4
5749 echo 'int main() { long double x = 7.0; }' > try.c
5750 set try
5751 if eval $compile; then
5752         val="$define"
5753         echo "You have long double."
5754 else
5755         val="$undef"
5756         echo "You do not have long double."
5757 fi
5758 $rm try.*
5759 set d_longdbl
5760 eval $setvar
5761
5762 : check for length of long double
5763 case "${d_longdbl}${longdblsize}" in
5764 $define)
5765         echo " "
5766         echo "Checking to see how big your long doubles are..." >&4
5767         $cat >try.c <<'EOCP'
5768 #include <stdio.h>
5769 int main()
5770 {
5771         printf("%d\n", sizeof(long double));
5772 }
5773 EOCP
5774         set try
5775         set try
5776         if eval $compile; then
5777                 longdblsize=`$run ./try`
5778                 echo "Your long doubles are $longdblsize bytes long."
5779         else
5780                 dflt='8'
5781                 echo " "
5782                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5783                 rp="What is the size of a long double (in bytes)?"
5784                 . ./myread
5785                 longdblsize="$ans"
5786         fi
5787         if $test "X$doublesize" = "X$longdblsize"; then
5788                 echo "(That isn't any different from an ordinary double.)"
5789         fi      
5790         ;;
5791 esac
5792 $rm -f try.* try
5793
5794 case "$useperlio" in
5795 $define|true|[yY]*|'')  dflt='y';;
5796 *) dflt='n';;
5797 esac
5798 cat <<EOM
5799
5800 Previous version of $package used the standard IO mechanisms as
5801 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5802 alternate IO mechanisms via the PerlIO abstraction layer, but the
5803 stdio mechanism is still available if needed.  The abstraction layer
5804 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5805 Using PerlIO with sfio may cause problems with some extension modules.
5806
5807 If this doesn't make any sense to you, just accept the default '$dflt'.
5808 EOM
5809 rp='Use the PerlIO abstraction layer?'
5810 . ./myread
5811 case "$ans" in
5812 y|Y) 
5813         val="$define"
5814         ;;
5815 *)      
5816         echo "Ok, doing things the stdio way."
5817         val="$undef"
5818         ;;
5819 esac
5820 set useperlio
5821 eval $setvar 
5822
5823 case "$usesocks" in
5824 $define|true|[yY]*)
5825         case "$useperlio" in
5826         $define|true|[yY]*) ;;
5827         *)      cat >&4 <<EOM
5828
5829 You are using the SOCKS proxy protocol library which means that you
5830 should also use the PerlIO layer.  You may be headed for trouble.
5831
5832 EOM
5833                 ;;
5834         esac
5835         ;;
5836 esac
5837
5838         
5839 : determine the architecture name
5840 echo " "
5841 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5842         tarch=`arch`"-$osname"
5843 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5844         if uname -m > tmparch 2>&1 ; then
5845                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5846                         -e 's/$/'"-$osname/" tmparch`
5847         else
5848                 tarch="$osname"
5849         fi
5850         $rm -f tmparch
5851 else
5852         tarch="$osname"
5853 fi
5854 case "$myarchname" in
5855 ''|"$tarch") ;;
5856 *)
5857         echo "(Your architecture name used to be $myarchname.)"
5858         archname=''
5859         ;;
5860 esac
5861 case "$targetarch" in
5862 '') ;;
5863 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5864 esac
5865 myarchname="$tarch"
5866 case "$archname" in
5867 '') dflt="$tarch";;
5868 *) dflt="$archname";;
5869 esac
5870 rp='What is your architecture name'
5871 . ./myread
5872 archname="$ans"
5873 case "$usethreads" in
5874 $define)
5875         echo "Threads selected." >&4
5876         case "$archname" in
5877         *-thread*) echo "...and architecture name already has -thread." >&4
5878                 ;;
5879         *)      archname="$archname-thread"
5880                 echo "...setting architecture name to $archname." >&4
5881                 ;;
5882         esac
5883         ;;
5884 esac
5885 case "$usemultiplicity" in
5886 $define)
5887         echo "Multiplicity selected." >&4
5888         case "$archname" in
5889         *-multi*) echo "...and architecture name already has -multi." >&4
5890                 ;;
5891         *)      archname="$archname-multi"
5892                 echo "...setting architecture name to $archname." >&4
5893                 ;;
5894         esac
5895         ;;
5896 esac
5897 case "$use64bitint$use64bitall" in
5898 *"$define"*)
5899         case "$archname64" in
5900         '')
5901                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5902                 ;;
5903         *)
5904                 case "$use64bitint" in
5905                 "$define") echo "64 bit integers selected." >&4 ;;
5906                 esac
5907                 case "$use64bitall" in
5908                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5909                 esac
5910                 case "$archname" in
5911                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5912                         ;;
5913                 *)      archname="$archname-$archname64"
5914                         echo "...setting architecture name to $archname." >&4
5915                         ;;
5916                 esac
5917                 ;;
5918         esac
5919 esac
5920 case "$uselongdouble" in
5921 $define)
5922         echo "Long doubles selected." >&4
5923         case "$longdblsize" in
5924         $doublesize)
5925                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5926                 ;;
5927         *)
5928                 case "$archname" in
5929                 *-ld*) echo "...and architecture name already has -ld." >&4
5930                         ;;
5931                 *)      archname="$archname-ld"
5932                         echo "...setting architecture name to $archname." >&4
5933                         ;;
5934                 esac
5935                 ;;
5936         esac
5937         ;;
5938 esac
5939 case "$useperlio" in
5940 $define)
5941         echo "Perlio selected." >&4
5942         ;;
5943 *)
5944         echo "Perlio not selected, using stdio." >&4
5945         case "$archname" in
5946         *-stdio*) echo "...and architecture name already has -stdio." >&4
5947                 ;;
5948         *)      archname="$archname-stdio"
5949                 echo "...setting architecture name to $archname." >&4
5950                 ;;
5951         esac
5952         ;;
5953 esac
5954
5955 : determine root of directory hierarchy where package will be installed.
5956 case "$prefix" in
5957 '')
5958         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5959         ;;
5960 *)
5961         dflt="$prefix"
5962         ;;
5963 esac
5964 $cat <<EOM
5965
5966 By default, $package will be installed in $dflt/bin, manual pages
5967 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5968 installation directories. Typically this is something like /usr/local.
5969 If you wish to have binaries under /usr/bin but other parts of the
5970 installation under /usr/local, that's ok: you will be prompted
5971 separately for each of the installation directories, the prefix being
5972 only used to set the defaults.
5973
5974 EOM
5975 fn=d~
5976 rp='Installation prefix to use?'
5977 . ./getfile
5978 oldprefix=''
5979 case "$prefix" in
5980 '') ;;
5981 *)
5982         case "$ans" in
5983         "$prefix") ;;
5984         *) oldprefix="$prefix";;
5985         esac
5986         ;;
5987 esac
5988 prefix="$ans"
5989 prefixexp="$ansexp"
5990
5991 case "$afsroot" in
5992 '')     afsroot=/afs ;;
5993 *)      afsroot=$afsroot ;;
5994 esac
5995
5996 : is AFS running?
5997 echo " "
5998 case "$afs" in
5999 $define|true)   afs=true ;;
6000 $undef|false)   afs=false ;;
6001 *)      if test -d $afsroot; then
6002                 afs=true
6003         else
6004                 afs=false
6005         fi
6006         ;;
6007 esac
6008 if $afs; then
6009         echo "AFS may be running... I'll be extra cautious then..." >&4
6010 else
6011         echo "AFS does not seem to be running..." >&4
6012 fi
6013
6014 : determine installation prefix for where package is to be installed.
6015 if $afs; then 
6016 $cat <<EOM
6017
6018 Since you are running AFS, I need to distinguish the directory in which
6019 files will reside from the directory in which they are installed (and from
6020 which they are presumably copied to the former directory by occult means).
6021
6022 EOM
6023         case "$installprefix" in
6024         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6025         *) dflt="$installprefix";;
6026         esac
6027 else
6028 $cat <<EOM
6029
6030 In some special cases, particularly when building $package for distribution,
6031 it is convenient to distinguish between the directory in which files should 
6032 be installed from the directory ($prefix) in which they 
6033 will eventually reside.  For most users, these two directories are the same.
6034
6035 EOM
6036         case "$installprefix" in
6037         '') dflt=$prefix ;;
6038         *) dflt=$installprefix;;
6039         esac
6040 fi
6041 fn=d~
6042 rp='What installation prefix should I use for installing files?'
6043 . ./getfile
6044 installprefix="$ans"
6045 installprefixexp="$ansexp"
6046
6047 : set the prefixit variable, to compute a suitable default value
6048 prefixit='case "$3" in
6049 ""|none)
6050         case "$oldprefix" in
6051         "") eval "$1=\"\$$2\"";;
6052         *)
6053                 case "$3" in
6054                 "") eval "$1=";;
6055                 none)
6056                         eval "tp=\"\$$2\"";
6057                         case "$tp" in
6058                         ""|" ") eval "$1=\"\$$2\"";;
6059                         *) eval "$1=";;
6060                         esac;;
6061                 esac;;
6062         esac;;
6063 *)
6064         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6065         case "$tp" in
6066         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6067         /*-$oldprefix/*|\~*-$oldprefix/*)
6068                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6069         *) eval "$1=\"\$$2\"";;
6070         esac;;
6071 esac'
6072
6073 : get the patchlevel
6074 echo " "
6075 echo "Getting the current patchlevel..." >&4
6076 if $test -r $rsrc/patchlevel.h;then
6077         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6078         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6079         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6080         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6081         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6082         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6083        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6084 else
6085         revision=0
6086         patchlevel=0
6087         subversion=0
6088         api_revision=0
6089         api_version=0
6090         api_subversion=0
6091         perl_patchlevel=0
6092         $echo "(You do not have patchlevel.h.  Eek.)"
6093 fi
6094 if $test -r $rsrc/.patch ; then  
6095         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6096                 perl_patchlevel=`cat $rsrc/.patch`
6097         fi
6098 fi
6099 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6100 version_patchlevel_string="version $patchlevel subversion $subversion"
6101 case "$perl_patchlevel" in
6102 0|'') ;;
6103 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6104 esac
6105
6106 $echo "(You have $package $version_patchlevel_string.)"
6107
6108 case "$osname" in
6109 dos|vms)
6110         : XXX Should be a Configure test for double-dots in filenames.
6111         version=`echo $revision $patchlevel $subversion | \
6112                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6113         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6114                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6115         ;;
6116 *)
6117         version=`echo $revision $patchlevel $subversion | \
6118                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6119         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6120                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6121         ;;
6122 esac
6123 : Special case the 5.005_xx maintenance series, which used 5.005
6124 : without any subversion label as a subdirectory in $sitelib
6125 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6126         api_versionstring='5.005'
6127 fi
6128
6129 : determine installation style
6130 : For now, try to deduce it from prefix unless it is already set.
6131 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6132 case "$installstyle" in
6133 '')     case "$prefix" in
6134                 *perl*) dflt='lib';;
6135                 *) dflt='lib/perl5' ;;
6136         esac
6137         ;;
6138 *)      dflt="$installstyle" ;;
6139 esac
6140 : Probably not worth prompting for this since we prompt for all
6141 : the directories individually, and the prompt would be too long and
6142 : confusing anyway.
6143 installstyle=$dflt
6144
6145 : determine where private library files go
6146 : Usual default is /usr/local/lib/perl5/$version.
6147 : Also allow things like /opt/perl/lib/$version, since 
6148 : /opt/perl/lib/perl5... would be redundant.
6149 : The default "style" setting is made in installstyle.U
6150 case "$installstyle" in
6151 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6152 *)       set dflt privlib lib/$version ;;
6153 esac
6154 eval $prefixit
6155 $cat <<EOM
6156
6157 There are some auxiliary files for $package that need to be put into a
6158 private library directory that is accessible by everyone.
6159
6160 EOM
6161 fn=d~+
6162 rp='Pathname where the private library files will reside?'
6163 . ./getfile
6164 privlib="$ans"
6165 privlibexp="$ansexp"
6166 : Change installation prefix, if necessary.
6167 if $test X"$prefix" != X"$installprefix"; then
6168         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6169 else
6170         installprivlib="$privlibexp"
6171 fi
6172
6173 : set the prefixup variable, to restore leading tilda escape
6174 prefixup='case "$prefixexp" in
6175 "$prefix") ;;
6176 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6177 esac'
6178
6179 : determine where public architecture dependent libraries go
6180 set archlib archlib
6181 eval $prefixit
6182 : privlib default is /usr/local/lib/$package/$version
6183 : archlib default is /usr/local/lib/$package/$version/$archname
6184 : privlib may have an optional trailing /share.
6185 tdflt=`echo $privlib | $sed 's,/share$,,'`
6186 tdflt=$tdflt/$archname
6187 case "$archlib" in
6188 '')     dflt=$tdflt
6189         ;;
6190 *)      dflt="$archlib"
6191     ;;
6192 esac
6193 $cat <<EOM
6194
6195 $spackage contains architecture-dependent library files.  If you are
6196 sharing libraries in a heterogeneous environment, you might store
6197 these files in a separate location.  Otherwise, you can just include
6198 them with the rest of the public library files.
6199
6200 EOM
6201 fn=d+~
6202 rp='Where do you want to put the public architecture-dependent libraries?'
6203 . ./getfile
6204 archlib="$ans"
6205 archlibexp="$ansexp"
6206 if $test X"$archlib" = X"$privlib"; then
6207         d_archlib="$undef"
6208 else
6209         d_archlib="$define"
6210 fi
6211 : Change installation prefix, if necessary.
6212 if $test X"$prefix" != X"$installprefix"; then
6213         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6214 else
6215         installarchlib="$archlibexp"
6216 fi
6217
6218
6219 : Binary compatibility with 5.005 is not possible for builds
6220 : with advanced features
6221 case "$usethreads$usemultiplicity" in
6222 *define*)
6223         bincompat5005="$undef"
6224         d_bincompat5005="$undef"
6225         ;;
6226 *)      $cat <<EOM
6227
6228 This version of Perl can be compiled for binary compatibility with 5.005.
6229 If you decide to do so, you will be able to continue using most of the
6230 extensions that were compiled for Perl 5.005.
6231
6232 EOM
6233         case "$bincompat5005$d_bincompat5005" in
6234         *"$undef"*) dflt=n ;;
6235         *) dflt=y ;;
6236         esac
6237         rp='Binary compatibility with Perl 5.005?'
6238         . ./myread
6239         case "$ans" in
6240         y*) val="$define" ;;
6241         *)  val="$undef" ;;
6242         esac
6243         set d_bincompat5005
6244         eval $setvar
6245         case "$d_bincompat5005" in
6246         "$define")
6247                 bincompat5005="$define"
6248                 ;;
6249         *)      bincompat5005="$undef"
6250                 d_bincompat5005="$undef"
6251                 ;;
6252         esac
6253         ;;
6254 esac
6255
6256
6257 : see if setuid scripts can be secure
6258 $cat <<EOM
6259
6260 Some kernels have a bug that prevents setuid #! scripts from being
6261 secure.  Some sites have disabled setuid #! scripts because of this.
6262
6263 First let's decide if your kernel supports secure setuid #! scripts.
6264 (If setuid #! scripts would be secure but have been disabled anyway,
6265 don't say that they are secure if asked.)
6266
6267 EOM
6268
6269 val="$undef"
6270 if $test -d /dev/fd; then
6271         echo "#!$ls" >reflect
6272         chmod +x,u+s reflect
6273         ./reflect >flect 2>&1
6274         if $contains "/dev/fd" flect >/dev/null; then
6275                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6276                 val="$define"
6277         else
6278                 $cat <<EOM
6279 If you are not sure if they are secure, I can check but I'll need a
6280 username and password different from the one you are using right now.
6281 If you don't have such a username or don't want me to test, simply
6282 enter 'none'.
6283
6284 EOM
6285                 rp='Other username to test security of setuid scripts with?'
6286                 dflt='none'
6287                 . ./myread
6288                 case "$ans" in
6289                 n|none)
6290                         case "$d_suidsafe" in
6291                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6292                                 dflt=n;;
6293                         "$undef")
6294                                 echo "Well, the $hint value is *not* secure." >&4
6295                                 dflt=n;;
6296                         *)      echo "Well, the $hint value *is* secure." >&4
6297                                 dflt=y;;
6298                         esac
6299                         ;;
6300                 *)
6301                         $rm -f reflect flect
6302                         echo "#!$ls" >reflect
6303                         chmod +x,u+s reflect
6304                         echo >flect
6305                         chmod a+w flect
6306                         echo '"su" will (probably) prompt you for '"$ans's password."
6307                         su $ans -c './reflect >flect'
6308                         if $contains "/dev/fd" flect >/dev/null; then
6309                                 echo "Okay, it looks like setuid scripts are secure." >&4
6310                                 dflt=y
6311                         else
6312                                 echo "I don't think setuid scripts are secure." >&4
6313                                 dflt=n
6314                         fi
6315                         ;;
6316                 esac
6317                 rp='Does your kernel have *secure* setuid scripts?'
6318                 . ./myread
6319                 case "$ans" in
6320                 [yY]*)  val="$define";;
6321                 *)      val="$undef";;
6322                 esac
6323         fi
6324 else
6325         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6326         echo "(That's for file descriptors, not floppy disks.)"
6327         val="$undef"
6328 fi
6329 set d_suidsafe
6330 eval $setvar
6331
6332 $rm -f reflect flect
6333
6334 : now see if they want to do setuid emulation
6335 echo " "
6336 val="$undef"
6337 case "$d_suidsafe" in
6338 "$define")
6339         val="$undef"
6340         echo "No need to emulate SUID scripts since they are secure here." >& 4
6341         ;;
6342 *)
6343         $cat <<EOM
6344 Some systems have disabled setuid scripts, especially systems where
6345 setuid scripts cannot be secure.  On systems where setuid scripts have
6346 been disabled, the setuid/setgid bits on scripts are currently
6347 useless.  It is possible for $package to detect those bits and emulate
6348 setuid/setgid in a secure fashion.  This emulation will only work if
6349 setuid scripts have been disabled in your kernel.
6350
6351 EOM
6352         case "$d_dosuid" in
6353         "$define") dflt=y ;;
6354         *) dflt=n ;;
6355         esac
6356         rp="Do you want to do setuid/setgid emulation?"
6357         . ./myread
6358         case "$ans" in
6359         [yY]*)  val="$define";;
6360         *)      val="$undef";;
6361         esac
6362         ;;
6363 esac
6364 set d_dosuid
6365 eval $setvar
6366
6367 : see if this is a malloc.h system
6368 set malloc.h i_malloc
6369 eval $inhdr
6370
6371 : see if stdlib is available
6372 set stdlib.h i_stdlib
6373 eval $inhdr
6374
6375 : determine which malloc to compile in
6376 echo " "
6377 case "$usemymalloc" in
6378 [yY]*|true|$define)     dflt='y' ;;
6379 [nN]*|false|$undef)     dflt='n' ;;
6380 *)      case "$ptrsize" in
6381         4) dflt='y' ;;
6382         *) dflt='n' ;;
6383         esac
6384         ;;
6385 esac
6386 rp="Do you wish to attempt to use the malloc that comes with $package?"
6387 . ./myread
6388 usemymalloc="$ans"
6389 case "$ans" in
6390 y*|true)
6391         usemymalloc='y'
6392         mallocsrc='malloc.c'
6393         mallocobj="malloc$_o"
6394         d_mymalloc="$define"
6395         case "$libs" in
6396         *-lmalloc*)
6397                 : Remove malloc from list of libraries to use
6398                 echo "Removing unneeded -lmalloc from library list" >&4
6399                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6400                 shift
6401                 libs="$*"
6402                 echo "libs = $libs" >&4
6403                 ;;
6404         esac
6405         ;;
6406 *)
6407         usemymalloc='n'
6408         mallocsrc=''
6409         mallocobj=''
6410         d_mymalloc="$undef"
6411         ;;
6412 esac
6413
6414 : compute the return types of malloc and free
6415 echo " "
6416 $cat >malloc.c <<END
6417 #$i_malloc I_MALLOC
6418 #$i_stdlib I_STDLIB
6419 #include <stdio.h>
6420 #include <sys/types.h>
6421 #ifdef I_MALLOC
6422 #include <malloc.h>
6423 #endif
6424 #ifdef I_STDLIB
6425 #include <stdlib.h>
6426 #endif
6427 #ifdef TRY_MALLOC
6428 void *malloc();
6429 #endif
6430 #ifdef TRY_FREE
6431 void free();
6432 #endif
6433 END
6434 case "$malloctype" in
6435 '')
6436         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6437                 malloctype='void *'
6438         else
6439                 malloctype='char *'
6440         fi
6441         ;;
6442 esac
6443 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6444
6445 case "$freetype" in
6446 '')
6447         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6448                 freetype='void'
6449         else
6450                 freetype='int'
6451         fi
6452         ;;
6453 esac
6454 echo "Your system uses $freetype free(), it would seem." >&4
6455 $rm -f malloc.[co]
6456 $cat <<EOM
6457
6458 After $package is installed, you may wish to install various
6459 add-on modules and utilities.  Typically, these add-ons will
6460 be installed under $prefix with the rest
6461 of this package.  However, you may wish to install such add-ons
6462 elsewhere under a different prefix.
6463
6464 If you do not wish to put everything under a single prefix, that's
6465 ok.  You will be prompted for the individual locations; this siteprefix
6466 is only used to suggest the defaults.
6467
6468 The default should be fine for most people.
6469
6470 EOM
6471 fn=d~+
6472 rp='Installation prefix to use for add-on modules and utilities?'
6473 : XXX Here might be another good place for an installstyle setting.
6474 case "$siteprefix" in
6475 '') dflt=$prefix ;;
6476 *)  dflt=$siteprefix ;;
6477 esac
6478 . ./getfile
6479 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6480 oldsiteprefix=''
6481 case "$siteprefix" in
6482 '') ;;
6483 *)      case "$ans" in
6484         "$prefix") ;;
6485         *) oldsiteprefix="$prefix";;
6486         esac
6487         ;;
6488 esac
6489 siteprefix="$ans"
6490 siteprefixexp="$ansexp"
6491
6492 : determine where site specific libraries go.
6493 : Usual default is /usr/local/lib/perl5/site_perl/$version
6494 : The default "style" setting is made in installstyle.U
6495 : XXX No longer works with Prefixit stuff.
6496 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6497 case "$sitelib" in
6498 '') case "$installstyle" in
6499         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6500         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6501         esac
6502         ;;
6503 *)      dflt="$sitelib"
6504         ;;
6505 esac
6506 $cat <<EOM
6507
6508 The installation process will create a directory for
6509 site-specific extensions and modules.  Most users find it convenient
6510 to place all site-specific files in this directory rather than in the
6511 main distribution directory.
6512
6513 EOM
6514 fn=d~+
6515 rp='Pathname for the site-specific library files?'
6516 . ./getfile
6517 sitelib="$ans"
6518 sitelibexp="$ansexp"
6519 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6520 : Change installation prefix, if necessary.
6521 if $test X"$prefix" != X"$installprefix"; then
6522         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6523 else
6524         installsitelib="$sitelibexp"
6525 fi
6526
6527 : determine where site specific architecture-dependent libraries go.
6528 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6529 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6530 : sitelib may have an optional trailing /share.
6531 case "$sitearch" in
6532 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6533         dflt="$dflt/$archname"
6534         ;;
6535 *)      dflt="$sitearch"
6536         ;;
6537 esac
6538 set sitearch sitearch none
6539 eval $prefixit
6540 $cat <<EOM
6541
6542 The installation process will also create a directory for
6543 architecture-dependent site-specific extensions and modules.
6544
6545 EOM
6546 fn=d~+
6547 rp='Pathname for the site-specific architecture-dependent library files?'
6548 . ./getfile
6549 sitearch="$ans"
6550 sitearchexp="$ansexp"
6551 : Change installation prefix, if necessary.
6552 if $test X"$prefix" != X"$installprefix"; then
6553         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6554 else
6555         installsitearch="$sitearchexp"
6556 fi
6557
6558 $cat <<EOM
6559
6560 The installation process will also create a directory for
6561 vendor-supplied add-ons.  Vendors who supply perl with their system
6562 may find it convenient to place all vendor-supplied files in this
6563 directory rather than in the main distribution directory.  This will
6564 ease upgrades between binary-compatible maintenance versions of perl.
6565
6566 Of course you may also use these directories in whatever way you see
6567 fit.  For example, you might use them to access modules shared over a
6568 company-wide network.
6569
6570 The default answer should be fine for most people.
6571 This causes further questions about vendor add-ons to be skipped
6572 and no vendor-specific directories will be configured for perl.
6573
6574 EOM
6575 rp='Do you want to configure vendor-specific add-on directories?'
6576 case "$usevendorprefix" in
6577 define|true|[yY]*) dflt=y ;;
6578 *)      : User may have set vendorprefix directly on Configure command line.
6579         case "$vendorprefix" in
6580         ''|' ') dflt=n ;;
6581         *)      dflt=y ;;
6582         esac
6583         ;;
6584 esac
6585 . ./myread
6586 case "$ans" in
6587 [yY]*)  fn=d~+
6588         rp='Installation prefix to use for vendor-supplied add-ons?'
6589         case "$vendorprefix" in
6590         '') dflt='' ;;
6591         *)  dflt=$vendorprefix ;;
6592         esac
6593         . ./getfile
6594         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6595         oldvendorprefix=''
6596         case "$vendorprefix" in
6597         '') ;;
6598         *)      case "$ans" in
6599                 "$prefix") ;;
6600                 *) oldvendorprefix="$prefix";;
6601                 esac
6602                 ;;
6603         esac
6604         usevendorprefix="$define"
6605         vendorprefix="$ans"
6606         vendorprefixexp="$ansexp"
6607         ;;
6608 *)      usevendorprefix="$undef"
6609         vendorprefix=''
6610         vendorprefixexp=''
6611         ;;
6612 esac
6613
6614 case "$vendorprefix" in
6615 '')     d_vendorlib="$undef"
6616         vendorlib=''
6617         vendorlibexp=''
6618         ;;
6619 *)      d_vendorlib="$define"
6620         : determine where vendor-supplied modules go.
6621         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6622         case "$vendorlib" in
6623         '')
6624                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6625                 case "$installstyle" in
6626                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6627                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6628                 esac
6629                 ;;
6630         *)      dflt="$vendorlib"
6631                 ;;
6632         esac
6633         fn=d~+
6634         rp='Pathname for the vendor-supplied library files?'
6635         . ./getfile
6636         vendorlib="$ans"
6637         vendorlibexp="$ansexp"
6638         ;;
6639 esac
6640 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6641 : Change installation prefix, if necessary.
6642 if $test X"$prefix" != X"$installprefix"; then
6643         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6644 else
6645         installvendorlib="$vendorlibexp"
6646 fi
6647
6648 case "$vendorprefix" in
6649 '')     d_vendorarch="$undef"
6650         vendorarch=''
6651         vendorarchexp=''
6652         ;;
6653 *)      d_vendorarch="$define"
6654         : determine where vendor-supplied architecture-dependent libraries go.
6655         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6656         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6657         : vendorlib may have an optional trailing /share.
6658         case "$vendorarch" in
6659         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6660                 dflt="$dflt/$archname"
6661                 ;;
6662         *)      dflt="$vendorarch" ;;
6663         esac
6664         fn=d~+
6665         rp='Pathname for vendor-supplied architecture-dependent files?'
6666         . ./getfile
6667         vendorarch="$ans"
6668         vendorarchexp="$ansexp"
6669         ;;
6670 esac
6671 : Change installation prefix, if necessary.
6672 if $test X"$prefix" != X"$installprefix"; then
6673         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6674 else
6675         installvendorarch="$vendorarchexp"
6676 fi
6677
6678 : Final catch-all directories to search
6679 $cat <<EOM
6680
6681 Lastly, you can have perl look in other directories for extensions and
6682 modules in addition to those already specified.
6683 These directories will be searched after 
6684         $sitearch 
6685         $sitelib 
6686 EOM
6687 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6688 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6689 echo ' '
6690 case "$otherlibdirs" in
6691 ''|' ') dflt='none' ;;
6692 *)      dflt="$otherlibdirs" ;;
6693 esac
6694 $cat <<EOM
6695 Enter a colon-separated set of extra paths to include in perl's @INC
6696 search path, or enter 'none' for no extra paths.
6697
6698 EOM
6699
6700 rp='Colon-separated list of additional directories for perl to search?'
6701 . ./myread
6702 case "$ans" in
6703 ' '|''|none)    otherlibdirs=' ' ;;     
6704 *)      otherlibdirs="$ans" ;;
6705 esac
6706 case "$otherlibdirs" in
6707 ' ') val=$undef ;;
6708 *)      val=$define ;;
6709 esac
6710 set d_perl_otherlibdirs
6711 eval $setvar
6712
6713 : Cruising for prototypes
6714 echo " "
6715 echo "Checking out function prototypes..." >&4
6716 $cat >prototype.c <<'EOCP'
6717 int main(int argc, char *argv[]) {
6718         exit(0);}
6719 EOCP
6720 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6721         echo "Your C compiler appears to support function prototypes."
6722         val="$define"
6723 else
6724         echo "Your C compiler doesn't seem to understand function prototypes."
6725         val="$undef"
6726 fi
6727 set prototype
6728 eval $setvar
6729 $rm -f prototype*
6730
6731 case "$prototype" in
6732 "$define") ;;
6733 *)      ansi2knr='ansi2knr'
6734         echo " "
6735         cat <<EOM >&4
6736
6737 $me:  FATAL ERROR:
6738 This version of $package can only be compiled by a compiler that 
6739 understands function prototypes.  Unfortunately, your C compiler 
6740         $cc $ccflags
6741 doesn't seem to understand them.  Sorry about that.
6742
6743 If GNU cc is available for your system, perhaps you could try that instead.  
6744
6745 Eventually, we hope to support building Perl with pre-ANSI compilers.
6746 If you would like to help in that effort, please contact <perlbug@perl.org>.
6747
6748 Aborting Configure now.
6749 EOM
6750         exit 2
6751         ;;
6752 esac
6753
6754 : determine where public executables go
6755 echo " "
6756 set dflt bin bin
6757 eval $prefixit
6758 fn=d~
6759 rp='Pathname where the public executables will reside?'
6760 . ./getfile
6761 if $test "X$ansexp" != "X$binexp"; then
6762         installbin=''
6763 fi
6764 bin="$ans"
6765 binexp="$ansexp"
6766 : Change installation prefix, if necessary.
6767 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6768 if $test X"$prefix" != X"$installprefix"; then
6769         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6770 else
6771         installbin="$binexp"
6772 fi
6773
6774 echo " "
6775 case "$extras" in
6776 '') dflt='n';;
6777 *) dflt='y';;
6778 esac
6779 cat <<EOM
6780 Perl can be built with extra modules or bundles of modules which
6781 will be fetched from the CPAN and installed alongside Perl.
6782
6783 Notice that you will need access to the CPAN; either via the Internet,
6784 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6785 be asked later to configure the CPAN.pm module which will in turn do
6786 the installation of the rest of the extra modules or bundles.)
6787
6788 Notice also that if the modules require any external software such as
6789 libraries and headers (the libz library and the zlib.h header for the
6790 Compress::Zlib module, for example) you MUST have any such software
6791 already installed, this configuration process will NOT install such
6792 things for you.
6793
6794 If this doesn't make any sense to you, just accept the default '$dflt'.
6795 EOM
6796 rp='Install any extra modules (y or n)?'
6797 . ./myread
6798 case "$ans" in
6799 y|Y)
6800         cat <<EOM
6801
6802 Please list any extra modules or bundles to be installed from CPAN,
6803 with spaces between the names.  The names can be in any format the
6804 'install' command of CPAN.pm will understand.  (Answer 'none',
6805 without the quotes, to install no extra modules or bundles.)
6806 EOM
6807         rp='Extras?'
6808         dflt="$extras"
6809         . ./myread
6810         extras="$ans"
6811 esac
6812 case "$extras" in
6813 ''|'none')
6814         val=''
6815         $rm -f ../extras.lst
6816         ;;
6817 *)      echo "(Saving the list of extras for later...)"
6818         echo "$extras" > ../extras.lst
6819         val="'$extras'"
6820         ;;
6821 esac
6822 set extras
6823 eval $setvar
6824 echo " "
6825
6826 : Find perl5.005 or later.
6827 echo "Looking for a previously installed perl5.005 or later... "
6828 case "$perl5" in
6829 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6830                 : Check if this perl is recent and can load a simple module
6831                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6832                         perl5=$tdir/perl
6833                         break;
6834                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6835                         perl5=$tdir/perl5
6836                         break;
6837                 fi
6838         done
6839         ;;
6840 *)      perl5="$perl5"
6841         ;;
6842 esac
6843 case "$perl5" in
6844 '')     echo "None found.  That's ok.";;
6845 *)      echo "Using $perl5." ;;
6846 esac
6847
6848 : Determine list of previous versions to include in @INC
6849 $cat > getverlist <<EOPL
6850 #!$perl5 -w
6851 use File::Basename;
6852 \$api_versionstring = "$api_versionstring";
6853 \$version = "$version";
6854 \$stem = "$sitelib_stem";
6855 \$archname = "$archname";
6856 EOPL
6857         $cat >> getverlist <<'EOPL'
6858 # Can't have leading @ because metaconfig interprets it as a command!
6859 ;@inc_version_list=();
6860 # XXX Redo to do opendir/readdir? 
6861 if (-d $stem) {
6862     chdir($stem);
6863     ;@candidates = glob("5.*");
6864 }
6865 else {
6866     ;@candidates = ();
6867 }
6868
6869 # XXX ToDo:  These comparisons must be reworked when two-digit
6870 # subversions come along, so that 5.7.10 compares as greater than
6871 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6872 # widespread that we can use the built-in version vectors rather
6873 # than reinventing them here.  For 5.6.0, however, we must
6874 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6875 foreach $d (@candidates) {
6876     if ($d lt $version) {
6877         if ($d ge $api_versionstring) {
6878             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6879         }
6880         elsif ($d ge "5.005") {
6881             unshift(@inc_version_list, grep { -d } $d);
6882         }
6883     }
6884     else {
6885         # Skip newer version.  I.e. don't look in
6886         # 5.7.0 if we're installing 5.6.1.
6887     }
6888 }
6889
6890 if (@inc_version_list) {
6891     print join(' ', @inc_version_list);
6892 }
6893 else {
6894     # Blank space to preserve value for next Configure run.
6895     print " ";
6896 }
6897 EOPL
6898 chmod +x getverlist
6899 case "$inc_version_list" in
6900 '')     if test -x "$perl5$exe_ext"; then
6901                 dflt=`$perl5 getverlist`
6902         else
6903                 dflt='none'
6904         fi
6905         ;;
6906 $undef) dflt='none' ;;
6907 *)  eval dflt=\"$inc_version_list\" ;;
6908 esac
6909 case "$dflt" in
6910 ''|' ') dflt=none ;;
6911 esac
6912 case "$dflt" in
6913 5.005) case "$bincompat5005" in
6914        $define|true|[yY]*) ;;
6915        *) dflt=none ;;
6916        esac
6917        ;;
6918 esac
6919 $cat <<'EOM'
6920
6921 In order to ease the process of upgrading, this version of perl 
6922 can be configured to use modules built and installed with earlier 
6923 versions of perl that were installed under $prefix.  Specify here
6924 the list of earlier versions that this version of perl should check.
6925 If Configure detected no earlier versions of perl installed under
6926 $prefix, then the list will be empty.  Answer 'none' to tell perl
6927 to not search earlier versions.
6928
6929 The default should almost always be sensible, so if you're not sure,
6930 just accept the default.
6931 EOM
6932
6933 rp='List of earlier versions to include in @INC?'
6934 . ./myread
6935 case "$ans" in
6936 [Nn]one|''|' ') inc_version_list=' ' ;;
6937 *) inc_version_list="$ans" ;;
6938 esac
6939 case "$inc_version_list" in
6940 ''|' ') 
6941         inc_version_list_init='0';;
6942 *)      inc_version_list_init=`echo $inc_version_list |
6943                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6944         ;;
6945 esac
6946 $rm -f getverlist
6947
6948 : determine whether to install perl also as /usr/bin/perl
6949
6950 echo " "
6951 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6952         $cat <<EOM
6953 Many scripts expect perl to be installed as /usr/bin/perl.
6954 I can install the perl you are about to compile also as /usr/bin/perl
6955 (in addition to $installbin/perl).
6956 EOM
6957         case "$installusrbinperl" in
6958         "$undef"|[nN]*) dflt='n';;
6959         *)              dflt='y';;
6960         esac
6961         rp="Do you want to install perl as /usr/bin/perl?"
6962         . ./myread
6963         case "$ans" in
6964         [yY]*)  val="$define";;
6965         *)      val="$undef" ;;
6966         esac
6967 else
6968         val="$undef"
6969 fi
6970 set installusrbinperl
6971 eval $setvar
6972
6973 : see if dld is available
6974 set dld.h i_dld
6975 eval $inhdr
6976
6977 : see if dlopen exists
6978 xxx_runnm="$runnm"
6979 runnm=false
6980 set dlopen d_dlopen
6981 eval $inlibc
6982 runnm="$xxx_runnm"
6983
6984 : determine which dynamic loading, if any, to compile in
6985 echo " "
6986 dldir="ext/DynaLoader"
6987 case "$usedl" in
6988 $define|y|true)
6989         dflt='y'
6990         usedl="$define"
6991         ;;
6992 $undef|n|false)
6993         dflt='n'
6994         usedl="$undef"
6995         ;;
6996 *) 
6997         dflt='n'
6998         case "$d_dlopen" in
6999             $define) dflt='y' ;;
7000         esac
7001         case "$i_dld" in
7002             $define) dflt='y' ;;
7003         esac
7004         : Does a dl_xxx.xs file exist for this operating system
7005         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7006         ;;
7007 esac
7008 rp="Do you wish to use dynamic loading?"
7009 . ./myread
7010 usedl="$ans"
7011 case "$ans" in
7012 y*) usedl="$define"
7013         case "$dlsrc" in
7014         '')
7015                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7016                         dflt="$dldir/dl_${osname}.xs"
7017                 elif $test "$d_dlopen" = "$define" ; then
7018                         dflt="$dldir/dl_dlopen.xs"
7019                 elif $test "$i_dld" = "$define" ; then
7020                         dflt="$dldir/dl_dld.xs"
7021                 else
7022                         dflt=''
7023                 fi
7024                 ;;
7025         *)      dflt="$dldir/$dlsrc"
7026                 ;;
7027         esac
7028     echo "The following dynamic loading files are available:"
7029         : Can not go over to $dldir because getfile has path hard-coded in.
7030         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7031         rp="Source file to use for dynamic loading"
7032         fn="fne"
7033         gfpth="$src"
7034         . ./getfile
7035         usedl="$define"
7036         : emulate basename
7037         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7038
7039         $cat << EOM
7040
7041 Some systems may require passing special flags to $cc -c to
7042 compile modules that will be used to create a shared library.
7043 To use no flags, say "none".
7044
7045 EOM
7046     case "$cccdlflags" in
7047     '') case "$gccversion" in
7048                 '') case "$osname" in
7049                         hpux)   dflt='+z' ;;
7050                         next)   dflt='none' ;;
7051                         irix*)  dflt='-KPIC' ;;
7052                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7053                         sunos)  dflt='-pic' ;;
7054                         *)      dflt='none' ;;
7055                     esac
7056                         ;;
7057                 *)  case "$osname" in
7058                         darwin) dflt='none' ;;
7059                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7060                         *)      dflt='-fpic' ;;
7061                     esac ;;
7062             esac ;;
7063         ' ') dflt='none' ;;
7064     *)  dflt="$cccdlflags" ;;
7065     esac
7066     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7067     . ./myread
7068     case "$ans" in
7069     none) cccdlflags=' ' ;;
7070     *) cccdlflags="$ans" ;;
7071     esac
7072
7073     cat << EOM
7074
7075 Some systems use ld to create libraries that can be dynamically loaded,
7076 while other systems (such as those using ELF) use $cc.
7077
7078 EOM
7079         case "$ld" in
7080         '')     $cat >try.c <<'EOM'
7081 /* Test for whether ELF binaries are produced */
7082 #include <fcntl.h>
7083 #include <stdlib.h>
7084 int main() {
7085         char b[4];
7086         int i = open("a.out",O_RDONLY);
7087         if(i == -1) 
7088                 exit(1); /* fail */
7089         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7090                 exit(0); /* succeed (yes, it's ELF) */
7091         else
7092                 exit(1); /* fail */
7093 }
7094 EOM
7095                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7096                         cat <<EOM
7097 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7098 EOM
7099                         dflt="$cc"
7100                 else
7101                         echo "I'll use ld to build dynamic libraries."
7102                         dflt='ld'
7103                 fi
7104                 rm -f try.c a.out
7105                 ;;
7106         *)      dflt="$ld"
7107                 ;;
7108         esac
7109
7110     rp="What command should be used to create dynamic libraries?"
7111     . ./myread
7112         ld="$ans"
7113
7114     cat << EOM
7115
7116 Some systems may require passing special flags to $ld to create a
7117 library that can be dynamically loaded.  If your ld flags include
7118 -L/other/path options to locate libraries outside your loader's normal
7119 search path, you may need to specify those -L options here as well.  To
7120 use no flags, say "none".
7121
7122 EOM
7123     case "$lddlflags" in
7124     '') case "$osname" in
7125                         beos) dflt='-nostart' ;;
7126                         hpux) dflt='-b';
7127                               case "$gccversion" in
7128                               '') dflt="$dflt +vnocompatwarnings" ;;
7129                               esac
7130                               ;;        
7131                         linux|irix*)    dflt='-shared' ;;
7132                         next)  dflt='none' ;;
7133                         solaris) dflt='-G' ;;
7134                         sunos) dflt='-assert nodefinitions' ;;
7135                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7136                 *)     dflt='none' ;;
7137                         esac
7138                         ;;
7139     *) dflt="$lddlflags" ;;
7140     esac
7141
7142         : Try to guess additional flags to pick up local libraries.
7143         : Be careful not to append to a plain 'none'
7144         case "$dflt" in
7145         none) dflt='' ;;
7146         esac
7147         for thisflag in $ldflags; do
7148                 case "$thisflag" in
7149                 -L*|-R*)
7150                         case " $dflt " in
7151                         *" $thisflag "*) ;;
7152                         *) dflt="$dflt $thisflag" ;;
7153                         esac
7154                         ;;
7155                 esac
7156         done
7157
7158         case "$dflt" in
7159         ''|' ') dflt='none' ;;
7160         esac
7161
7162     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7163     . ./myread
7164     case "$ans" in
7165     none) lddlflags=' ' ;;
7166     *) lddlflags="$ans" ;;
7167     esac
7168
7169         cat <<EOM
7170
7171 Some systems may require passing special flags to $cc to indicate that
7172 the resulting executable will use dynamic linking.  To use no flags,
7173 say "none".
7174
7175 EOM
7176     case "$ccdlflags" in
7177     '') case "$osname" in
7178                 hpux)   dflt='-Wl,-E' ;;
7179                 linux)  dflt='-rdynamic' ;;
7180                 next)   dflt='none' ;;
7181                 sunos)  dflt='none' ;;
7182                 *)      dflt='none' ;;
7183             esac ;;
7184     ' ')  dflt='none' ;;
7185     *)  dflt="$ccdlflags" ;;
7186     esac
7187     rp="Any special flags to pass to $cc to use dynamic linking?"
7188     . ./myread
7189     case "$ans" in
7190     none) ccdlflags=' ' ;;
7191     *) ccdlflags="$ans" ;;
7192     esac
7193     ;;
7194 *)  usedl="$undef"
7195         ld='ld'
7196     dlsrc='dl_none.xs'
7197     lddlflags=''
7198     ccdlflags=''
7199     ;;
7200 esac
7201
7202 also=''
7203 case "$usedl" in
7204 $undef)
7205         # No dynamic loading being used, so don't bother even to prompt.
7206         useshrplib='false'
7207         ;;
7208 *)      case "$useshrplib" in
7209         '')     case "$osname" in
7210                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7211                         dflt=y
7212                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7213                         ;;
7214                 next*)
7215                         case "$osvers" in
7216                         4*)     dflt=y
7217                                 also='Building a shared libperl is needed for MAB support.'
7218                                 ;;
7219                         *)      dflt=n
7220                                 ;;
7221                         esac
7222                         ;;
7223                 *)      dflt=n
7224                         ;;
7225                 esac
7226                 ;;
7227         $define|true|[Yy]*)
7228                 dflt=y
7229                 ;;
7230         *)      dflt=n
7231                 ;;
7232         esac
7233         $cat << EOM
7234
7235 The perl executable is normally obtained by linking perlmain.c with
7236 libperl${_a}, any static extensions (usually just DynaLoader), and
7237 any other libraries needed on this system (such as -lm, etc.).  Since
7238 your system supports dynamic loading, it is probably possible to build
7239 a shared libperl.$so.  If you will have more than one executable linked
7240 to libperl.$so, this will significantly reduce the size of each
7241 executable, but it may have a noticeable affect on performance.  The
7242 default is probably sensible for your system.
7243 $also
7244
7245 EOM
7246         rp="Build a shared libperl.$so (y/n)"
7247         . ./myread
7248         case "$ans" in
7249         true|$define|[Yy]*)
7250                 useshrplib='true'  ;;
7251         *)      useshrplib='false' ;;
7252         esac
7253         ;;
7254 esac
7255
7256 case "$useshrplib" in
7257 true)
7258         case "$libperl" in
7259         '')
7260                 # Figure out a good name for libperl.so.  Since it gets stored in
7261                 # a version-specific architecture-dependent library, the version
7262                 # number isn't really that important, except for making cc/ld happy.
7263                 #
7264                 # A name such as libperl.so.3.1
7265                 majmin="libperl.$so.$patchlevel.$subversion"
7266                 # A name such as libperl.so.301
7267                 majonly=`echo $patchlevel $subversion |
7268                         $awk '{printf "%d%02d", $1, $2}'`
7269                 majonly=libperl.$so.$majonly
7270                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7271                 # rely on figuring it out from the naming of libc.
7272                 case "${osname}${osvers}" in
7273                 next4*)
7274                         dflt=libperl.5.$so
7275                         # XXX How handle the --version stuff for MAB?
7276                         ;;
7277                 linux*)  # ld won't link with a bare -lperl otherwise.
7278                         dflt=libperl.$so
7279                         ;;
7280                 cygwin*) # include version
7281                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7282                         ;;
7283                 *)      # Try to guess based on whether libc has major.minor.
7284                         case "$libc" in
7285                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7286                         *libc.$so.[0-9]*) dflt=$majonly ;;
7287                         *)      dflt=libperl.$so ;;
7288                         esac
7289                         ;;
7290                 esac
7291                 ;;
7292         *)      dflt=$libperl
7293                 ;;
7294         esac
7295         cat << EOM
7296
7297 I need to select a good name for the shared libperl.  If your system uses
7298 library names with major and minor numbers, then you might want something
7299 like $majmin.  Alternatively, if your system uses a single version
7300 number for shared libraries, then you might want to use $majonly.
7301 Or, your system might be quite happy with a simple libperl.$so.
7302
7303 Since the shared libperl will get installed into a version-specific
7304 architecture-dependent directory, the version number of the shared perl
7305 library probably isn't important, so the default should be o.k.
7306
7307 EOM
7308         rp='What name do you want to give to the shared libperl?'
7309         . ./myread
7310         libperl=$ans
7311         echo "Ok, I'll use $libperl"
7312         ;;
7313 *)
7314         libperl="libperl${_a}"
7315         ;;
7316 esac
7317
7318 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7319 case "$shrpdir" in
7320 '') ;;
7321 *)      $cat >&4 <<EOM
7322 WARNING:  Use of the shrpdir variable for the installation location of
7323 the shared $libperl is not supported.  It was never documented and
7324 will not work in this version.  Let me (perlbug@perl.org)
7325 know of any problems this may cause.
7326
7327 EOM
7328         case "$shrpdir" in
7329         "$archlibexp/CORE")
7330                 $cat >&4 <<EOM
7331 But your current setting of $shrpdir is
7332 the default anyway, so it's harmless.
7333 EOM
7334                 ;;
7335         *)
7336                 $cat >&4 <<EOM
7337 Further, your current attempted setting of $shrpdir
7338 conflicts with the value of $archlibexp/CORE
7339 that installperl will use.
7340 EOM
7341                 ;;
7342         esac
7343         ;;
7344 esac
7345
7346 # How will the perl executable find the installed shared $libperl?
7347 # Add $xxx to ccdlflags.
7348 # If we can't figure out a command-line option, use $shrpenv to
7349 # set env LD_RUN_PATH.  The main perl makefile uses this.
7350 shrpdir=$archlibexp/CORE
7351 xxx=''
7352 tmp_shrpenv=''
7353 if "$useshrplib"; then
7354     case "$osname" in 
7355         aix)
7356                 # We'll set it in Makefile.SH...
7357                 ;;
7358         solaris|netbsd)
7359                 xxx="-R $shrpdir"
7360                 ;;
7361         freebsd)
7362                 xxx="-Wl,-R$shrpdir"
7363                 ;;
7364         linux|irix*|dec_osf)
7365                 xxx="-Wl,-rpath,$shrpdir"
7366                 ;;
7367         next)
7368                 # next doesn't like the default...
7369                 ;;
7370         beos)
7371                 # beos doesn't like the default, either.
7372                 ;;
7373         hpux*)
7374                 # hpux doesn't like the default, either.
7375                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7376                 ;;
7377         *)
7378                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7379                 ;;
7380         esac
7381         case "$xxx" in
7382         '') ;;
7383         *)      
7384                 # Only add $xxx if it isn't already in ccdlflags.
7385                 case " $ccdlflags " in
7386                 *" $xxx "*)     ;;
7387                 *)      ccdlflags="$ccdlflags $xxx"
7388                         cat <<EOM >&4
7389
7390 Adding $xxx to the flags
7391 passed to $ld so that the perl executable will find the 
7392 installed shared $libperl.
7393
7394 EOM
7395                         ;;
7396                 esac
7397                 ;;
7398         esac
7399 fi
7400 # Fix ccdlflags in AIX for building external extensions.
7401 # (For building Perl itself bare -bE:perl.exp is needed,
7402 #  Makefile.SH takes care of this.)
7403 case "$osname" in
7404 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7405 esac
7406 # Respect a hint or command-line value.
7407 case "$shrpenv" in
7408 '') shrpenv="$tmp_shrpenv" ;;
7409 esac
7410 case "$ldlibpthname" in
7411 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7412 none)   ldlibpthname='' ;;
7413 esac
7414
7415 : determine where manual pages are on this system
7416 echo " "
7417 case "$sysman" in
7418 '') 
7419         syspath='/usr/share/man/man1 /usr/man/man1'
7420         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7421         syspath="$syspath /usr/man/u_man/man1"
7422         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7423         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7424         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7425         sysman=`./loc . /usr/man/man1 $syspath`
7426         ;;
7427 esac
7428 if $test -d "$sysman"; then
7429         echo "System manual is in $sysman." >&4
7430 else
7431         echo "Could not find manual pages in source form." >&4
7432 fi
7433
7434 : determine where manual pages go
7435 set man1dir man1dir none
7436 eval $prefixit
7437 $cat <<EOM
7438
7439 $spackage has manual pages available in source form.
7440 EOM
7441 case "$nroff" in
7442 nroff)
7443         echo "However, you don't have nroff, so they're probably useless to you."
7444         case "$man1dir" in
7445         '') man1dir="none";;
7446         esac;;
7447 esac
7448 echo "If you don't want the manual sources installed, answer 'none'."
7449 case "$man1dir" in
7450 ' ') dflt=none
7451         ;;
7452 '')
7453         lookpath="$prefixexp/share/man/man1"
7454         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7455         lookpath="$lookpath $prefixexp/man/p_man/man1"
7456         lookpath="$lookpath $prefixexp/man/u_man/man1"
7457         lookpath="$lookpath $prefixexp/man/man.1"
7458         case "$sysman" in
7459         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7460         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7461         esac
7462         set dflt
7463         eval $prefixup
7464         ;;
7465 *)  dflt="$man1dir"
7466         ;;
7467 esac
7468 echo " "
7469 fn=dn+~
7470 rp="Where do the main $spackage manual pages (source) go?"
7471 . ./getfile
7472 if $test "X$man1direxp" != "X$ansexp"; then
7473         installman1dir=''
7474 fi
7475 man1dir="$ans"
7476 man1direxp="$ansexp"
7477 case "$man1dir" in
7478 '')     man1dir=' '
7479         installman1dir='';;
7480 esac
7481
7482 : Change installation prefix, if necessary.
7483 if $test X"$prefix" != X"$installprefix"; then
7484         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7485 else
7486         installman1dir="$man1direxp"
7487 fi
7488
7489 : What suffix to use on installed man pages
7490
7491 case "$man1dir" in
7492 ' ')
7493         man1ext='0'
7494         ;;
7495 *)
7496         rp="What suffix should be used for the main $spackage man pages?"
7497         case "$man1ext" in
7498         '')     case "$man1dir" in
7499                 *1)  dflt=1 ;;
7500                 *1p) dflt=1p ;;
7501                 *1pm) dflt=1pm ;;
7502                 *l) dflt=l;;
7503                 *n) dflt=n;;
7504                 *o) dflt=o;;
7505                 *p) dflt=p;;
7506                 *C) dflt=C;;
7507                 *L) dflt=L;;
7508                 *L1) dflt=L1;;
7509                 *) dflt=1;;
7510                 esac
7511                 ;;
7512         *)      dflt="$man1ext";;
7513         esac
7514         . ./myread
7515         man1ext="$ans"
7516         ;;
7517 esac
7518
7519 : see if we can have long filenames
7520 echo " "
7521 first=123456789abcdef
7522 $rm -f $first
7523 if (echo hi >$first) 2>/dev/null; then
7524         if $test -f 123456789abcde; then
7525                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7526                 val="$undef"
7527         else
7528                 echo 'You can have filenames longer than 14 characters.'>&4
7529                 val="$define"
7530         fi
7531 else
7532         $cat <<'EOM'
7533 You can't have filenames longer than 14 chars.
7534 You can't even think about them!
7535 EOM
7536         val="$undef"
7537 fi 
7538 set d_flexfnam
7539 eval $setvar
7540 $rm -rf 123456789abcde*
7541
7542 : determine where library module manual pages go
7543 set man3dir man3dir none
7544 eval $prefixit
7545 $cat <<EOM
7546
7547 $spackage has manual pages for many of the library modules.
7548 EOM
7549
7550 case "$nroff" in
7551 nroff)
7552         $cat <<'EOM'
7553 However, you don't have nroff, so they're probably useless to you.
7554 EOM
7555         case "$man3dir" in
7556         '') man3dir="none";;
7557         esac;;
7558 esac
7559
7560 case "$d_flexfnam" in
7561 undef)
7562         $cat <<'EOM'
7563 However, your system can't handle the long file names like File::Basename.3. 
7564 EOM
7565         case "$man3dir" in
7566         '') man3dir="none";;
7567         esac;;
7568 esac
7569
7570 echo "If you don't want the manual sources installed, answer 'none'."
7571 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7572 case "$man3dir" in
7573 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7574         if $test -d "$privlib/man/man3"; then
7575                 cat <<EOM >&4
7576
7577 WARNING:  Previous versions of perl installed man3 pages into
7578 $privlib/man/man3.  This version will suggest a 
7579 new default of $dflt.  
7580 EOM
7581                 tdflt=$dflt
7582                 dflt='n'
7583                 rp='Do you wish to preserve the old behavior?(y/n)'
7584                 . ./myread
7585                 case "$ans" in
7586                 y*) dflt="$privlib/man/man3" ;;
7587                 *)  dflt=$tdflt ;;
7588                 esac
7589     fi
7590         ;;
7591 *)      dflt="$man3dir" ;;
7592 esac
7593 case "$dflt" in
7594 ' ') dflt=none ;;
7595 esac
7596 echo " "
7597 fn=dn+~
7598 rp="Where do the $package library man pages (source) go?"
7599 . ./getfile
7600 man3dir="$ans"
7601 man3direxp="$ansexp"
7602 case "$man3dir" in
7603 '')     man3dir=' '
7604         installman3dir='';;
7605 esac
7606
7607 : Change installation prefix, if necessary.
7608 if $test X"$prefix" != X"$installprefix"; then
7609         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7610 else
7611         installman3dir="$man3direxp"
7612 fi
7613
7614 : What suffix to use on installed man pages
7615 case "$man3dir" in
7616 ' ')
7617         man3ext='0'
7618         ;;
7619 *)
7620         rp="What suffix should be used for the $package library man pages?"
7621         case "$man3ext" in
7622         '')     case "$man3dir" in
7623                 *3)  dflt=3 ;;
7624                 *3p) dflt=3p ;;
7625                 *3pm) dflt=3pm ;;
7626                 *l) dflt=l;;
7627                 *n) dflt=n;;
7628                 *o) dflt=o;;
7629                 *p) dflt=p;;
7630                 *C) dflt=C;;
7631                 *L) dflt=L;;
7632                 *L3) dflt=L3;;
7633                 *) dflt=3;;
7634                 esac
7635                 ;;
7636         *)      dflt="$man3ext";;
7637         esac
7638         . ./myread
7639         man3ext="$ans"
7640         ;;
7641 esac
7642
7643 : see if we have to deal with yellow pages, now NIS.
7644 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7645         if $test -f /usr/etc/nibindd; then
7646                 echo " "
7647                 echo "I'm fairly confident you're on a NeXT."
7648                 echo " "
7649                 rp='Do you get the hosts file via NetInfo?'
7650                 dflt=y
7651                 case "$hostcat" in
7652                 nidump*) ;;
7653                 '') ;;
7654                 *) dflt=n;;
7655                 esac
7656                 . ./myread
7657                 case "$ans" in
7658                 y*) hostcat='nidump hosts .';;
7659                 *)      case "$hostcat" in
7660                         nidump*) hostcat='';;
7661                         esac
7662                         ;;
7663                 esac
7664         fi
7665         case "$hostcat" in
7666         nidump*) ;;
7667         *)
7668                 case "$hostcat" in
7669                 *ypcat*) dflt=y;;
7670                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7671                                 dflt=y
7672                         else
7673                                 dflt=n
7674                         fi;;
7675                 *) dflt=n;;
7676                 esac
7677                 echo " "
7678                 rp='Are you getting the hosts file via yellow pages?'
7679                 . ./myread
7680                 case "$ans" in
7681                 y*) hostcat='ypcat hosts';;
7682                 *) hostcat='cat /etc/hosts';;
7683                 esac
7684                 ;;
7685         esac
7686 fi
7687 case "$hostcat" in
7688 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7689 esac
7690 case "$groupcat" in
7691 '') test -f /etc/group && groupcat='cat /etc/group';;
7692 esac
7693 case "$passcat" in
7694 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7695 esac
7696
7697 : now get the host name
7698 echo " "
7699 echo "Figuring out host name..." >&4
7700 case "$myhostname" in
7701 '') cont=true
7702         echo 'Maybe "hostname" will work...'
7703         if tans=`sh -c hostname 2>&1` ; then
7704                 myhostname=$tans
7705                 phostname=hostname
7706                 cont=''
7707         fi
7708         ;;
7709 *) cont='';;
7710 esac
7711 if $test "$cont"; then
7712         if ./xenix; then
7713                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7714                 if tans=`cat /etc/systemid 2>&1` ; then
7715                         myhostname=$tans
7716                         phostname='cat /etc/systemid'
7717                         echo "Whadyaknow.  Xenix always was a bit strange..."
7718                         cont=''
7719                 fi
7720         elif $test -r /etc/systemid; then
7721                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7722         fi
7723 fi
7724 if $test "$cont"; then
7725         echo 'No, maybe "uuname -l" will work...'
7726         if tans=`sh -c 'uuname -l' 2>&1` ; then
7727                 myhostname=$tans
7728                 phostname='uuname -l'
7729         else
7730                 echo 'Strange.  Maybe "uname -n" will work...'
7731                 if tans=`sh -c 'uname -n' 2>&1` ; then
7732                         myhostname=$tans
7733                         phostname='uname -n'
7734                 else
7735                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7736                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7737                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7738                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7739                         else
7740                                 case "$myhostname" in
7741                                 '') echo "Does this machine have an identity crisis or something?"
7742                                         phostname='';;
7743                                 *)
7744                                         echo "Well, you said $myhostname before..."
7745                                         phostname='echo $myhostname';;
7746                                 esac
7747                         fi
7748                 fi
7749         fi
7750 fi
7751 : you do not want to know about this
7752 set $myhostname
7753 myhostname=$1
7754
7755 : verify guess
7756 if $test "$myhostname" ; then
7757         dflt=y
7758         rp='Your host name appears to be "'$myhostname'".'" Right?"
7759         . ./myread
7760         case "$ans" in
7761         y*) ;;
7762         *) myhostname='';;
7763         esac
7764 fi
7765
7766 : bad guess or no guess
7767 while $test "X$myhostname" = X ; do
7768         dflt=''
7769         rp="Please type the (one word) name of your host:"
7770         . ./myread
7771         myhostname="$ans"
7772 done
7773
7774 : translate upper to lower if necessary
7775 case "$myhostname" in
7776 *[A-Z]*)
7777         echo "(Normalizing case in your host name)"
7778         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7779         ;;
7780 esac
7781
7782 case "$myhostname" in
7783 *.*)
7784         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7785         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7786         echo "(Trimming domain name from host name--host name is now $myhostname)"
7787         ;;
7788 *) case "$mydomain" in
7789         '')
7790                 {
7791                         test "X$hostcat" = "Xypcat hosts" &&
7792                         ypmatch "$myhostname" hosts 2>/dev/null |\
7793                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7794                         $test -s hosts
7795                 } || {
7796                         test "X$hostcat" != "X" &&
7797                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7798                                         /[       ]$myhostname[  . ]/p" > hosts
7799                 }
7800                 tmp_re="[       . ]"
7801                 if $test -f hosts; then
7802                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7803                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7804                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7805                                 hosts | $sort | $uniq | \
7806                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7807                         case `$echo X$dflt` in
7808                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7809                                 dflt=.
7810                                 ;;
7811                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7812                                 ;;
7813                         esac
7814                 else
7815                         echo "(I cannot locate a hosts database anywhere)"
7816                         dflt=.
7817                 fi
7818                 case "$dflt" in
7819                 .)
7820                         tans=`./loc resolv.conf X /etc /usr/etc`
7821                         if $test -f "$tans"; then
7822                                 echo "(Attempting domain name extraction from $tans)"
7823                                 dflt=.`$sed -n -e 's/   / /g' \
7824                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7825                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7826                                 case "$dflt" in
7827                                 .) dflt=.`$sed -n -e 's/        / /g' \
7828                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7829                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7830                                         ;;
7831                                 esac
7832                         fi
7833                         ;;
7834                 esac
7835                 case "$dflt" in
7836                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7837                         dflt=.`sh -c domainname 2>/dev/null`
7838                         case "$dflt" in
7839                         '') dflt='.';;
7840                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7841                         esac
7842                         ;;
7843                 esac
7844                 case "$dflt$osname" in
7845                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7846                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7847                         ;;
7848                 esac
7849                 case "$dflt" in
7850                 .) echo "(Lost all hope -- silly guess then)"
7851                         dflt='.uucp'
7852                         ;;
7853                 esac
7854                 $rm -f hosts
7855                 ;;
7856         *) dflt="$mydomain";;
7857         esac;;
7858 esac
7859 echo " "
7860 rp="What is your domain name?"
7861 . ./myread
7862 tans="$ans"
7863 case "$ans" in
7864 '') ;;
7865 .*) ;;
7866 *) tans=".$tans";;
7867 esac
7868 mydomain="$tans"
7869
7870 : translate upper to lower if necessary
7871 case "$mydomain" in
7872 *[A-Z]*)
7873         echo "(Normalizing case in your domain name)"
7874         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7875         ;;
7876 esac
7877
7878 : a little sanity check here
7879 case "$phostname" in
7880 '') ;;
7881 *)
7882         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7883         $myhostname$mydomain|$myhostname) ;;
7884         *)
7885                 case "$phostname" in
7886                 sed*)
7887                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7888                         ;;
7889                 *)
7890                         echo "(That doesn't agree with your $phostname command, by the way.)"
7891                         ;;
7892                 esac
7893         ;;
7894         esac
7895         ;;
7896 esac
7897
7898 $cat <<EOM
7899
7900 I need to get your e-mail address in Internet format if possible, i.e.
7901 something like user@host.domain. Please answer accurately since I have
7902 no easy means to double check it. The default value provided below
7903 is most probably close to reality but may not be valid from outside
7904 your organization...
7905
7906 EOM
7907 cont=x
7908 while test "$cont"; do
7909         case "$cf_email" in
7910         '') dflt="$cf_by@$myhostname$mydomain";;
7911         *) dflt="$cf_email";;
7912         esac
7913         rp='What is your e-mail address?'
7914         . ./myread
7915         cf_email="$ans"
7916         case "$cf_email" in
7917         *@*.*) cont='' ;;
7918         *)
7919                 rp='Address does not look like an Internet one.  Use it anyway?'
7920                 case "$fastread" in
7921                 yes) dflt=y ;;
7922                 *) dflt=n ;;
7923                 esac
7924                 . ./myread
7925                 case "$ans" in
7926                 y*) cont='' ;;
7927                 *) echo " " ;;
7928                 esac
7929                 ;;
7930         esac
7931 done
7932
7933 $cat <<EOM
7934
7935 If you or somebody else will be maintaining perl at your site, please
7936 fill in the correct e-mail address here so that they may be contacted
7937 if necessary. Currently, the "perlbug" program included with perl
7938 will send mail to this address in addition to perlbug@perl.org. You may
7939 enter "none" for no administrator.
7940
7941 EOM
7942 case "$perladmin" in
7943 '') dflt="$cf_email";;
7944 *) dflt="$perladmin";;
7945 esac
7946 rp='Perl administrator e-mail address'
7947 . ./myread
7948 perladmin="$ans"
7949
7950 : determine whether to only install version-specific parts.
7951 echo " "
7952 $cat <<EOM
7953 Do you want to install only the version-specific parts of the perl
7954 distribution?  Usually you do *not* want to do this.
7955 EOM
7956 case "$versiononly" in
7957 "$define"|[Yy]*|true) dflt='y' ;;
7958 *) dflt='n';
7959 esac
7960 rp="Do you want to install only the version-specific parts of perl?"
7961 . ./myread
7962 case "$ans" in
7963 [yY]*)  val="$define";;
7964 *)      val="$undef" ;;
7965 esac
7966 set versiononly
7967 eval $setvar
7968
7969 : figure out how to guarantee perl startup
7970 case "$startperl" in
7971 '')
7972         case "$sharpbang" in
7973         *!)
7974                 $cat <<EOH
7975
7976 I can use the #! construct to start perl on your system. This will
7977 make startup of perl scripts faster, but may cause problems if you
7978 want to share those scripts and perl is not in a standard place
7979 ($binexp/perl) on all your platforms. The alternative is to force
7980 a shell by starting the script with a single ':' character.
7981
7982 EOH
7983                 case "$versiononly" in
7984                 "$define")      dflt="$binexp/perl$version";;  
7985                 *)              dflt="$binexp/perl";;
7986                 esac
7987                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7988                 . ./myread
7989                 case "$ans" in
7990                 none)   startperl=": # use perl";;
7991                 *)      startperl="#!$ans"
7992                         if $test 30 -lt `echo "$ans" | wc -c`; then
7993                                 $cat >&4 <<EOM
7994
7995 WARNING:  Some systems limit the #! command to 32 characters.
7996 If you experience difficulty running Perl scripts with #!, try
7997 installing Perl in a directory with a shorter pathname.
7998
7999 EOM
8000                         fi ;;
8001                 esac
8002                 ;;
8003         *) startperl=": # use perl"
8004                 ;;
8005         esac
8006         ;;
8007 esac
8008 echo "I'll use $startperl to start perl scripts."
8009
8010 : figure best path for perl in scripts
8011 case "$perlpath" in
8012 '')
8013         perlpath="$binexp/perl"
8014         case "$startperl" in
8015         *!*) ;;
8016         *)
8017                 $cat <<EOH
8018
8019 I will use the "eval 'exec'" idiom to start Perl on your system.
8020 I can use the full path of your Perl binary for this purpose, but
8021 doing so may cause problems if you want to share those scripts and
8022 Perl is not always in a standard place ($binexp/perl).
8023
8024 EOH
8025                 dflt="$binexp/perl"
8026                 rp="What path shall I use in \"eval 'exec'\"?"
8027                 . ./myread
8028                 perlpath="$ans"
8029                 ;;
8030         esac
8031         ;;
8032 esac
8033 case "$startperl" in
8034 *!*)    ;;
8035 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8036 esac
8037
8038 : determine where public executable scripts go
8039 set scriptdir scriptdir
8040 eval $prefixit
8041 case "$scriptdir" in
8042 '')
8043         dflt="$bin"
8044         : guess some guesses
8045         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8046         $test -d /usr/share/bin     && dflt=/usr/share/bin
8047         $test -d /usr/local/script  && dflt=/usr/local/script
8048         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8049         $test -d $prefixexp/script  && dflt=$prefixexp/script
8050         set dflt
8051         eval $prefixup
8052         ;;
8053 *)  dflt="$scriptdir"
8054         ;;
8055 esac
8056 $cat <<EOM
8057  
8058 Some installations have a separate directory just for executable scripts so
8059 that they can mount it across multiple architectures but keep the scripts in
8060 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8061 Or you might just lump your scripts in with all your other executables.
8062  
8063 EOM
8064 fn=d~
8065 rp='Where do you keep publicly executable scripts?'
8066 . ./getfile
8067 if $test "X$ansexp" != "X$scriptdirexp"; then
8068         installscript=''
8069 fi
8070 scriptdir="$ans"
8071 scriptdirexp="$ansexp"
8072 : Change installation prefix, if necessary.
8073 if $test X"$prefix" != X"$installprefix"; then
8074         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8075 else
8076         installscript="$scriptdirexp"
8077 fi
8078
8079 : determine where add-on public executables go
8080 case "$sitebin" in
8081 '')     dflt=$siteprefix/bin ;;
8082 *)      dflt=$sitebin ;;
8083 esac
8084 fn=d~
8085 rp='Pathname where the add-on public executables should be installed?'
8086 . ./getfile
8087 sitebin="$ans"
8088 sitebinexp="$ansexp"
8089 : Change installation prefix, if necessary.
8090 if $test X"$prefix" != X"$installprefix"; then
8091         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8092 else
8093         installsitebin="$sitebinexp"
8094 fi
8095
8096 : define an is-a-typedef? function
8097 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8098 case "$inclist" in
8099 "") inclist="sys/types.h";;
8100 esac;
8101 eval "varval=\$$var";
8102 case "$varval" in
8103 "")
8104         $rm -f temp.c;
8105         for inc in $inclist; do
8106                 echo "#include <$inc>" >>temp.c;
8107         done;
8108         echo "#ifdef $type" >> temp.c;
8109         echo "printf(\"We have $type\");" >> temp.c;
8110         echo "#endif" >> temp.c;
8111         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8112         if $contains $type temp.E >/dev/null 2>&1; then
8113                 eval "$var=\$type";
8114         else
8115                 eval "$var=\$def";
8116         fi;
8117         $rm -f temp.?;;
8118 *) eval "$var=\$varval";;
8119 esac'
8120
8121 : define an is-a-typedef? function that prompts if the type is not available.
8122 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8123 case "$inclist" in
8124 "") inclist="sys/types.h";;
8125 esac;
8126 eval "varval=\$$var";
8127 case "$varval" in
8128 "")
8129         $rm -f temp.c;
8130         for inc in $inclist; do
8131                 echo "#include <$inc>" >>temp.c;
8132         done;
8133         echo "#ifdef $type" >> temp.c;
8134         echo "printf(\"We have $type\");" >> temp.c;
8135         echo "#endif" >> temp.c;
8136         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8137         echo " " ;
8138         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8139         if $contains $type temp.E >/dev/null 2>&1; then
8140                 echo "$type found." >&4;
8141                 eval "$var=\$type";
8142         else
8143                 echo "$type NOT found." >&4;
8144                 dflt="$def";
8145                 . ./myread ;
8146                 eval "$var=\$ans";
8147         fi;
8148         $rm -f temp.?;;
8149 *) eval "$var=\$varval";;
8150 esac'
8151
8152 : see what type lseek is declared as in the kernel
8153 rp="What is the type used for lseek's offset on this system?"
8154 set off_t lseektype long stdio.h sys/types.h
8155 eval $typedef_ask
8156
8157 echo " "
8158 echo "Checking to see how big your file offsets are..." >&4
8159 $cat >try.c <<EOCP
8160 #include <sys/types.h>
8161 #include <stdio.h>
8162 int main()
8163 {
8164     printf("%d\n", (int)sizeof($lseektype));
8165     return(0); 
8166 }
8167 EOCP
8168 set try
8169 if eval $compile_ok; then
8170         lseeksize=`$run ./try`
8171         echo "Your file offsets are $lseeksize bytes long."
8172 else
8173         dflt=$longsize
8174         echo " "
8175         echo "(I can't seem to compile the test program.  Guessing...)"
8176         rp="What is the size of your file offsets (in bytes)?"
8177         . ./myread
8178         lseeksize="$ans"
8179 fi
8180 $rm -f try.c try
8181
8182 : see what type file positions are declared as in the library
8183 rp="What is the type for file position used by fsetpos()?"
8184 set fpos_t fpostype long stdio.h sys/types.h
8185 eval $typedef_ask
8186
8187 echo " "
8188 case "$fpostype" in
8189 *_t) zzz="$fpostype"    ;;
8190 *)   zzz="fpos_t"       ;;
8191 esac
8192 echo "Checking the size of $zzz..." >&4 
8193 cat > try.c <<EOCP
8194 #include <sys/types.h>
8195 #include <stdio.h>
8196 int main() {
8197     printf("%d\n", (int)sizeof($fpostype));
8198     exit(0);
8199 }
8200 EOCP
8201 set try
8202 if eval $compile_ok; then
8203         yyy=`$run ./try`
8204         case "$yyy" in
8205         '')     fpossize=4
8206                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8207                 ;;
8208         *)      fpossize=$yyy
8209                 echo "Your $zzz is $fpossize bytes long."
8210                 ;;
8211         esac
8212 else
8213         dflt="$longsize"
8214         echo " " >&4
8215         echo "(I can't compile the test program.  Guessing...)" >&4
8216         rp="What is the size of your file positions (in bytes)?"
8217         . ./myread
8218         fpossize="$ans"
8219 fi
8220
8221
8222
8223 # Backward compatibility (uselfs is deprecated).
8224 case "$uselfs" in
8225 "$define"|true|[yY]*)
8226         cat <<EOM >&4
8227
8228 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8229 EOM
8230         uselargefiles="$define"
8231         ;;
8232 esac                          
8233
8234 case "$lseeksize:$fpossize" in
8235 8:8) cat <<EOM
8236
8237 You can have files larger than 2 gigabytes.
8238 EOM
8239    val="$define" ;;
8240 *)    case "$uselargefiles" in
8241    "$undef"|false|[nN]*) dflt='n' ;;
8242    *)   dflt='y' ;;
8243    esac
8244    cat <<EOM
8245
8246 Perl can be built to understand large files (files larger than 2 gigabytes)
8247 on some systems.  To do so, Configure can be run with -Duselargefiles.
8248
8249 If this doesn't make any sense to you, just accept the default '$dflt'.
8250 EOM
8251    rp='Try to understand large files, if available?'
8252    . ./myread
8253    case "$ans" in
8254    y|Y)         val="$define" ;;
8255    *)           val="$undef"  ;;
8256    esac
8257    ;;
8258 esac
8259 set uselargefiles
8260 eval $setvar
8261 case "$uselargefiles" in
8262 "$define")
8263 : Look for a hint-file generated 'call-back-unit'.  If the
8264 : user has specified that a large files perl is to be built,
8265 : we may need to set or change some other defaults.
8266         if $test -f uselargefiles.cbu; then
8267                 echo "Your platform has some specific hints for large file builds, using them..."
8268                 . ./uselargefiles.cbu
8269                 echo " "
8270                 echo "Rechecking to see how big your file offsets are..." >&4
8271                 $cat >try.c <<EOCP
8272 #include <sys/types.h>
8273 #include <stdio.h>
8274 int main()
8275 {
8276     printf("%d\n", (int)sizeof($lseektype));
8277     return(0); 
8278 }
8279 EOCP
8280                 set try
8281                 if eval $compile_ok; then
8282                         lseeksize=`$run ./try`
8283                         $echo "Your file offsets are now $lseeksize bytes long."
8284                 else
8285                         dflt="$lseeksize"
8286                         echo " "
8287                         echo "(I can't seem to compile the test program.  Guessing...)"
8288                         rp="What is the size of your file offsets (in bytes)?"
8289                         . ./myread
8290                         lseeksize="$ans"
8291                 fi
8292                 case "$fpostype" in
8293                 *_t) zzz="$fpostype"    ;;
8294                 *)   zzz="fpos_t"       ;;
8295                 esac
8296                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8297                 $cat > try.c <<EOCP
8298 #include <sys/types.h>
8299 #include <stdio.h>
8300 int main() {
8301     printf("%d\n", (int)sizeof($fpostype));
8302     exit(0);
8303 }
8304 EOCP
8305                 set try
8306                 if eval $compile_ok; then
8307                         yyy=`$run ./try`
8308                         dflt="$lseeksize"
8309                         case "$yyy" in
8310                         '')     echo " "
8311                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8312                                 ;;
8313                         *)      fpossize=$yyy
8314                                 echo " $fpossize bytes." >&4
8315                                 ;;
8316                         esac
8317                 else
8318                         dflt="$fpossize"
8319                         echo " "
8320                         echo "(I can't compile the test program.  Guessing...)" >&4
8321                         rp="What is the size of your file positions (in bytes)?"
8322                         . ./myread
8323                         fpossize="$ans"
8324                 fi
8325                 $rm -f try.c try
8326         fi
8327         ;;
8328 esac
8329
8330 case "$vendorprefix" in
8331 '')     d_vendorbin="$undef"
8332         vendorbin=''
8333         vendorbinexp=''
8334         ;;
8335 *)      d_vendorbin="$define"
8336         : determine where vendor-supplied executables go.
8337         case "$vendorbin" in
8338         '') dflt=$vendorprefix/bin ;;
8339         *)      dflt="$vendorbin" ;;
8340         esac
8341         fn=d~+
8342         rp='Pathname for the vendor-supplied executables directory?'
8343         . ./getfile
8344         vendorbin="$ans"
8345         vendorbinexp="$ansexp"
8346         ;;
8347 esac
8348 : Change installation prefix, if necessary.
8349 if $test X"$prefix" != X"$installprefix"; then
8350         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8351 else
8352         installvendorbin="$vendorbinexp"
8353 fi
8354
8355 : see if qgcvt exists
8356 set qgcvt d_qgcvt
8357 eval $inlibc
8358
8359 echo " "
8360
8361 if $test X"$d_longdbl" = X"$define"; then
8362
8363 echo "Checking how to print long doubles..." >&4
8364
8365 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8366         $cat >try.c <<'EOCP'
8367 #include <sys/types.h>
8368 #include <stdio.h>
8369 int main() {
8370   double d = 123.456;
8371   printf("%.3f\n", d);
8372 }
8373 EOCP
8374         set try
8375         if eval $compile; then
8376                 yyy=`$run ./try`
8377                 case "$yyy" in
8378                 123.456)
8379                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8380                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8381                         echo "We will use %f."
8382                         ;;
8383                 esac
8384         fi
8385 fi
8386
8387 if $test X"$sPRIfldbl" = X; then
8388         $cat >try.c <<'EOCP'
8389 #include <sys/types.h>
8390 #include <stdio.h>
8391 int main() {
8392   long double d = 123.456;
8393   printf("%.3Lf\n", d);
8394 }
8395 EOCP
8396         set try
8397         if eval $compile; then
8398                 yyy=`$run ./try`
8399                 case "$yyy" in
8400                 123.456)
8401                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8402                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8403                         echo "We will use %Lf."
8404                         ;;
8405                 esac
8406         fi
8407 fi
8408
8409 if $test X"$sPRIfldbl" = X; then
8410         $cat >try.c <<'EOCP'
8411 #include <sys/types.h>
8412 #include <stdio.h>
8413 int main() {
8414   long double d = 123.456;
8415   printf("%.3llf\n", d);
8416 }
8417 EOCP
8418         set try
8419         if eval $compile; then
8420                 yyy=`$run ./try`
8421                 case "$yyy" in
8422                 123.456)
8423                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8424                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8425                         echo "We will use %llf."
8426                         ;;
8427                 esac
8428         fi
8429 fi
8430
8431 if $test X"$sPRIfldbl" = X; then
8432         $cat >try.c <<'EOCP'
8433 #include <sys/types.h>
8434 #include <stdio.h>
8435 int main() {
8436   long double d = 123.456;
8437   printf("%.3lf\n", d);
8438 }
8439 EOCP
8440         set try
8441         if eval $compile; then
8442                 yyy=`$run ./try`
8443                 case "$yyy" in
8444                 123.456)
8445                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8446                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8447                         echo "We will use %lf."
8448                         ;;
8449                 esac
8450         fi
8451 fi
8452
8453 if $test X"$sPRIfldbl" = X; then
8454         echo "Cannot figure out how to print long doubles." >&4
8455 else
8456         sSCNfldbl=$sPRIfldbl    # expect consistency
8457 fi
8458
8459 $rm -f try try.*
8460
8461 fi # d_longdbl
8462
8463 case "$sPRIfldbl" in
8464 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8465         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8466         d_SCNfldbl="$undef";
8467         ;;
8468 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8469         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8470         d_SCNfldbl="$define";
8471         ;;
8472 esac
8473
8474 : Check how to convert floats to strings.
8475 echo " "
8476 echo "Checking for an efficient way to convert floats to strings."
8477 echo " " > try.c
8478 case "$uselongdouble" in
8479 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8480 esac
8481 case "$d_longdbl" in
8482 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8483 esac
8484 case "$d_PRIgldbl" in
8485 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8486 esac
8487 $cat >>try.c <<EOP
8488 #ifdef TRY_gconvert
8489 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8490 char *myname = "gconvert";
8491 #endif
8492 #ifdef TRY_gcvt
8493 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8494 char *myname = "gcvt";
8495 #endif
8496 #ifdef TRY_qgcvt
8497 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8498 char *myname = "qgcvt";
8499 #define DOUBLETYPE long double
8500 #endif
8501 #ifdef TRY_sprintf
8502 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8503 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8504 #else
8505 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8506 #endif
8507 char *myname = "sprintf";
8508 #endif
8509
8510 #ifndef DOUBLETYPE
8511 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8512 #define DOUBLETYPE long double
8513 #else
8514 #define DOUBLETYPE double
8515 #endif
8516 #endif
8517
8518 #include <stdio.h>
8519
8520 #define I_STDLIB $i_stdlib
8521 #ifdef I_STDLIB
8522 #include <stdlib.h>
8523 #endif
8524
8525 int
8526 checkit(expect, got)
8527 char *expect;
8528 char *got;
8529 {
8530     if (strcmp(expect, got)) {
8531                 printf("%s oddity:  Expected %s, got %s\n",
8532                         myname, expect, got);
8533                 exit(1);
8534         }
8535 }
8536
8537 int main()
8538
8539         char buf[64]; 
8540         buf[63] = '\0';
8541
8542         /* This must be 1st test on (which?) platform */
8543         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8544         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8545         checkit("0.1", buf);
8546
8547         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8548         checkit("1", buf);
8549
8550         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8551         checkit("1.1", buf);
8552
8553         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8554         checkit("1.01", buf);
8555
8556         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8557         checkit("1.001", buf);
8558
8559         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8560         checkit("1.0001", buf);
8561
8562         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8563         checkit("1.00001", buf);
8564
8565         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8566         checkit("1.000001", buf);
8567
8568         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8569         checkit("0", buf);
8570
8571         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8572         checkit("-1", buf);
8573
8574         /* Some Linux gcvt's give 1.e+5 here. */
8575         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8576         checkit("100000", buf);
8577         
8578         /* Some Linux gcvt's give -1.e+5 here. */
8579         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8580         checkit("-100000", buf);
8581
8582         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8583         checkit("123.456", buf);
8584
8585         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8586         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8587         if (strlen(buf) > 5)
8588             checkit("1e+030", buf); /* for Microsoft */
8589         else
8590             checkit("1e+30", buf);
8591
8592         exit(0);
8593 }
8594 EOP
8595 case "$d_Gconvert" in
8596 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8597 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8598 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8599 *) xxx_list='gconvert gcvt sprintf' ;;
8600 esac
8601
8602 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8603 "$define$define$define")
8604     # for long doubles prefer first qgcvt, then sprintf
8605     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8606     xxx_list="sprintf $xxx_list"
8607     case "$d_qgcvt" in
8608     "$define") xxx_list="qgcvt $xxx_list" ;;
8609     esac
8610     ;;
8611 esac
8612
8613 for xxx_convert in $xxx_list; do
8614         echo "Trying $xxx_convert..."
8615         $rm -f try try$_o
8616         set try -DTRY_$xxx_convert
8617         if eval $compile; then
8618                 echo "$xxx_convert() found." >&4
8619                 if $run ./try; then
8620                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8621                         break;
8622                 else
8623                         echo "...But $xxx_convert didn't work as I expected."
8624                 fi
8625         else
8626                 echo "$xxx_convert NOT found." >&4
8627         fi
8628 done
8629         
8630 case "$xxx_convert" in
8631 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8632 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8633 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8634 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8635    "$define$define$define")
8636       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8637    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8638    esac
8639    ;;  
8640 esac
8641
8642 : see if _fwalk exists
8643 set fwalk d__fwalk
8644 eval $inlibc
8645
8646 : Initialize h_fcntl
8647 h_fcntl=false
8648
8649 : Initialize h_sysfile
8650 h_sysfile=false
8651
8652 : access call always available on UNIX
8653 set access d_access
8654 eval $inlibc
8655
8656 : locate the flags for 'access()'
8657 case "$d_access" in
8658 "$define")
8659         echo " "
8660         $cat >access.c <<'EOCP'
8661 #include <sys/types.h>
8662 #ifdef I_FCNTL
8663 #include <fcntl.h>
8664 #endif
8665 #ifdef I_SYS_FILE
8666 #include <sys/file.h>
8667 #endif
8668 #ifdef I_UNISTD
8669 #include <unistd.h>
8670 #endif
8671 int main() {
8672         exit(R_OK);
8673 }
8674 EOCP
8675         : check sys/file.h first, no particular reason here
8676         if $test `./findhdr sys/file.h` && \
8677                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8678                 h_sysfile=true;
8679                 echo "<sys/file.h> defines the *_OK access constants." >&4
8680         elif $test `./findhdr fcntl.h` && \
8681                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8682                 h_fcntl=true;
8683                 echo "<fcntl.h> defines the *_OK access constants." >&4
8684         elif $test `./findhdr unistd.h` && \
8685                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8686                 echo "<unistd.h> defines the *_OK access constants." >&4
8687         else
8688                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8689         fi
8690         ;;
8691 esac
8692 $rm -f access*
8693
8694 : see if accessx exists
8695 set accessx d_accessx
8696 eval $inlibc
8697
8698 : see if alarm exists
8699 set alarm d_alarm
8700 eval $inlibc
8701
8702 : see if atolf exists
8703 set atolf d_atolf
8704 eval $inlibc
8705
8706 : see if atoll exists
8707 set atoll d_atoll
8708 eval $inlibc
8709
8710 : Look for GNU-cc style attribute checking
8711 echo " "
8712 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8713 $cat >attrib.c <<'EOCP'
8714 #include <stdio.h>
8715 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8716 EOCP
8717 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8718         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8719                 echo "Your C compiler doesn't fully support __attribute__."
8720                 val="$undef"
8721         else
8722                 echo "Your C compiler supports __attribute__."
8723                 val="$define"
8724         fi
8725 else
8726         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8727         val="$undef"
8728 fi
8729 set d_attribut
8730 eval $setvar
8731 $rm -f attrib*
8732
8733 : see if bcmp exists
8734 set bcmp d_bcmp
8735 eval $inlibc
8736
8737 : see if bcopy exists
8738 set bcopy d_bcopy
8739 eval $inlibc
8740
8741 : see if this is a unistd.h system
8742 set unistd.h i_unistd
8743 eval $inhdr
8744
8745 : see if getpgrp exists
8746 set getpgrp d_getpgrp
8747 eval $inlibc
8748
8749 case "$d_getpgrp" in
8750 "$define")
8751         echo " "
8752         echo "Checking to see which flavor of getpgrp is in use..."
8753         $cat >try.c <<EOP
8754 #$i_unistd I_UNISTD
8755 #include <sys/types.h>
8756 #ifdef I_UNISTD
8757 #  include <unistd.h>
8758 #endif
8759 int main()
8760 {
8761         if (getuid() == 0) {
8762                 printf("(I see you are running Configure as super-user...)\n");
8763                 setuid(1);
8764         }
8765 #ifdef TRY_BSD_PGRP
8766         if (getpgrp(1) == 0)
8767                 exit(0);
8768 #else
8769         if (getpgrp() > 0)
8770                 exit(0);
8771 #endif
8772         exit(1);
8773 }
8774 EOP
8775         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8776                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8777                 val="$define"
8778         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8779                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8780                 val="$undef"
8781         else
8782                 echo "I can't seem to compile and run the test program."
8783                 if ./usg; then
8784                         xxx="a USG one, i.e. you use getpgrp()."
8785                 else
8786                         # SVR4 systems can appear rather BSD-ish.
8787                         case "$i_unistd" in
8788                         $undef)
8789                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8790                                 val="$define"
8791                                 ;;
8792                         $define)
8793                                 xxx="probably a USG one, i.e. you use getpgrp()."
8794                                 val="$undef"
8795                                 ;;
8796                         esac
8797                 fi
8798                 echo "Assuming your getpgrp is $xxx" >&4
8799         fi
8800         ;;
8801 *) val="$undef";;
8802 esac
8803 set d_bsdgetpgrp
8804 eval $setvar
8805 $rm -f try try.*
8806
8807 : see if setpgrp exists
8808 set setpgrp d_setpgrp
8809 eval $inlibc
8810
8811 case "$d_setpgrp" in
8812 "$define")
8813         echo " "
8814         echo "Checking to see which flavor of setpgrp is in use..."
8815         $cat >try.c <<EOP
8816 #$i_unistd I_UNISTD
8817 #include <sys/types.h>
8818 #ifdef I_UNISTD
8819 #  include <unistd.h>
8820 #endif
8821 int main()
8822 {
8823         if (getuid() == 0) {
8824                 printf("(I see you are running Configure as super-user...)\n");
8825                 setuid(1);
8826         }
8827 #ifdef TRY_BSD_PGRP
8828         if (-1 == setpgrp(1, 1))
8829                 exit(0);
8830 #else
8831         if (setpgrp() != -1)
8832                 exit(0);
8833 #endif
8834         exit(1);
8835 }
8836 EOP
8837         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8838                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8839                 val="$define"
8840         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8841                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8842                 val="$undef"
8843         else
8844                 echo "(I can't seem to compile and run the test program.)"
8845                 if ./usg; then
8846                         xxx="a USG one, i.e. you use setpgrp()."
8847                 else
8848                         # SVR4 systems can appear rather BSD-ish.
8849                         case "$i_unistd" in
8850                         $undef)
8851                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8852                                 val="$define"
8853                                 ;;
8854                         $define)
8855                                 xxx="probably a USG one, i.e. you use setpgrp()."
8856                                 val="$undef"
8857                                 ;;
8858                         esac
8859                 fi
8860                 echo "Assuming your setpgrp is $xxx" >&4
8861         fi
8862         ;;
8863 *) val="$undef";;
8864 esac
8865 set d_bsdsetpgrp
8866 eval $setvar
8867 $rm -f try try.*
8868 : see if bzero exists
8869 set bzero d_bzero
8870 eval $inlibc
8871
8872 : see if signal is declared as pointer to function returning int or void
8873 echo " "
8874 xxx=`./findhdr signal.h`
8875 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8876 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8877         echo "You have int (*signal())() instead of void." >&4
8878         val="$undef"
8879 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8880         echo "You have void (*signal())()." >&4
8881         val="$define"
8882 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8883         echo "You have int (*signal())() instead of void." >&4
8884         val="$undef"
8885 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8886         echo "You have void (*signal())()." >&4
8887         val="$define"
8888 else
8889         case "$d_voidsig" in
8890         '')
8891         echo "I can't determine whether signal handler returns void or int..." >&4
8892                 dflt=void
8893                 rp="What type does your signal handler return?"
8894                 . ./myread
8895                 case "$ans" in
8896                 v*) val="$define";;
8897                 *) val="$undef";;
8898                 esac;;
8899         "$define")
8900                 echo "As you already told me, signal handler returns void." >&4
8901                 val="$define"
8902                 ;;
8903         *)      echo "As you already told me, signal handler returns int." >&4
8904                 val="$undef"
8905                 ;;
8906         esac
8907 fi
8908 set d_voidsig
8909 eval $setvar
8910 case "$d_voidsig" in
8911 "$define") signal_t="void";;
8912 *) signal_t="int";;
8913 esac
8914 $rm -f $$.tmp
8915
8916 : check for ability to cast large floats to 32-bit ints.
8917 echo " "
8918 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8919 if $test "$intsize" -ge 4; then
8920         xxx=int
8921 else
8922         xxx=long
8923 fi
8924 $cat >try.c <<EOCP
8925 #include <stdio.h>
8926 #include <sys/types.h>
8927 #include <signal.h>
8928 $signal_t blech(s) int s; { exit(3); }
8929 int main()
8930 {
8931         $xxx i32;
8932         double f, g;
8933         int result = 0;
8934         char str[16];
8935         signal(SIGFPE, blech);
8936
8937         /* Don't let compiler optimize the test away.  Store the number 
8938            in a writable string for gcc to pass to sscanf under HP/UX.
8939         */
8940         sprintf(str, "2147483647");
8941         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8942         g = 10 * f;
8943         i32  = ($xxx) g;
8944
8945         /* x86 processors will probably give 0x8000 0000, which is a
8946        sign change.  We don't want that.  We want to mimic SPARC
8947            behavior here, which is to preserve the sign and give
8948            back 0x7fff ffff.
8949         */
8950         if (i32 != ($xxx) f)
8951                 result |= 1;
8952         exit(result);
8953 }
8954 EOCP
8955 set try
8956 if eval $compile_ok; then
8957         $run ./try
8958         yyy=$?
8959 else
8960         echo "(I can't seem to compile the test program--assuming it can't)"
8961         yyy=1
8962 fi
8963 case "$yyy" in
8964 0)      val="$define"
8965         echo "Yup, it can."
8966         ;;
8967 *)      val="$undef"
8968         echo "Nope, it can't."
8969         ;;
8970 esac
8971 set d_casti32
8972 eval $setvar
8973 $rm -f try try.*
8974
8975 : check for ability to cast negative floats to unsigned
8976 echo " "
8977 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8978 $cat >try.c <<EOCP
8979 #include <stdio.h>
8980 #include <sys/types.h>
8981 #include <signal.h>
8982 $signal_t blech(s) int s; { exit(7); }
8983 $signal_t blech_in_list(s) int s; { exit(4); }
8984 unsigned long dummy_long(p) unsigned long p; { return p; }
8985 unsigned int dummy_int(p) unsigned int p; { return p; }
8986 unsigned short dummy_short(p) unsigned short p; { return p; }
8987 int main()
8988 {
8989         double f;
8990         unsigned long along;
8991         unsigned int aint;
8992         unsigned short ashort;
8993         int result = 0;
8994         char str[16];
8995         
8996         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8997            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8998            optimized the whole file away
8999         */
9000         /* Store the number in a writable string for gcc to pass to 
9001            sscanf under HP/UX.
9002         */
9003         sprintf(str, "-123");
9004         sscanf(str, "%lf", &f);  /* f = -123.; */
9005
9006         signal(SIGFPE, blech);
9007         along = (unsigned long)f;
9008         aint = (unsigned int)f;
9009         ashort = (unsigned short)f;
9010         if (along != (unsigned long)-123)
9011                 result |= 1;
9012         if (aint != (unsigned int)-123)
9013                 result |= 1;
9014         if (ashort != (unsigned short)-123)
9015                 result |= 1;
9016         sprintf(str, "1073741824.");
9017         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9018         f = f + f;
9019         along = 0;
9020         along = (unsigned long)f;
9021         if (along != 0x80000000)
9022                 result |= 2;
9023         f -= 1.;
9024         along = 0;
9025         along = (unsigned long)f;
9026         if (along != 0x7fffffff)
9027                 result |= 1;
9028         f += 2.;
9029         along = 0;
9030         along = (unsigned long)f;
9031         if (along != 0x80000001)
9032                 result |= 2;
9033         if (result)
9034                 exit(result);
9035         signal(SIGFPE, blech_in_list);
9036         sprintf(str, "123.");
9037         sscanf(str, "%lf", &f);  /* f = 123.; */
9038         along = dummy_long((unsigned long)f);
9039         aint = dummy_int((unsigned int)f);
9040         ashort = dummy_short((unsigned short)f);
9041         if (along != (unsigned long)123)
9042                 result |= 4;
9043         if (aint != (unsigned int)123)
9044                 result |= 4;
9045         if (ashort != (unsigned short)123)
9046                 result |= 4;
9047         exit(result);
9048
9049 }
9050 EOCP
9051 set try
9052 if eval $compile_ok; then
9053         $run ./try
9054         castflags=$?
9055 else
9056         echo "(I can't seem to compile the test program--assuming it can't)"
9057         castflags=7
9058 fi
9059 case "$castflags" in
9060 0)      val="$define"
9061         echo "Yup, it can."
9062         ;;
9063 *)      val="$undef"
9064         echo "Nope, it can't."
9065         ;;
9066 esac
9067 set d_castneg
9068 eval $setvar
9069 $rm -f try.*
9070
9071 : see if vprintf exists
9072 echo " "
9073 if set vprintf val -f d_vprintf; eval $csym; $val; then
9074         echo 'vprintf() found.' >&4
9075         val="$define"
9076         $cat >try.c <<'EOF'
9077 #include <varargs.h>
9078
9079 int main() { xxx("foo"); }
9080
9081 xxx(va_alist)
9082 va_dcl
9083 {
9084         va_list args;
9085         char buf[10];
9086
9087         va_start(args);
9088         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9089 }
9090 EOF
9091         set try
9092         if eval $compile && $run ./try; then
9093                 echo "Your vsprintf() returns (int)." >&4
9094                 val2="$undef"
9095         else
9096                 echo "Your vsprintf() returns (char*)." >&4
9097                 val2="$define"
9098         fi
9099 else
9100         echo 'vprintf() NOT found.' >&4
9101                 val="$undef"
9102                 val2="$undef"
9103 fi
9104 $rm -f try try.*
9105 set d_vprintf
9106 eval $setvar
9107 val=$val2
9108 set d_charvspr
9109 eval $setvar
9110
9111 : see if chown exists
9112 set chown d_chown
9113 eval $inlibc
9114
9115 : see if chroot exists
9116 set chroot d_chroot
9117 eval $inlibc
9118
9119 : see if chsize exists
9120 set chsize d_chsize
9121 eval $inlibc
9122
9123 : see if class exists
9124 set class d_class
9125 eval $inlibc
9126
9127 hasstruct='varname=$1; struct=$2; shift; shift;
9128 while $test $# -ge 2; do
9129         case "$1" in
9130         $define) echo "#include <$2>";;
9131         esac ;
9132     shift 2;
9133 done > try.c;
9134 echo "int main () { struct $struct foo; }" >> try.c;
9135 set try;
9136 if eval $compile; then
9137         val="$define";
9138 else
9139         val="$undef";
9140 fi;
9141 set $varname;
9142 eval $setvar;
9143 $rm -f try.c try.o'
9144
9145 : see if sys/types.h has to be included
9146 set sys/types.h i_systypes
9147 eval $inhdr
9148
9149 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9150 while $test $# -ge 2; do
9151         case "$1" in
9152         $define) echo "#include <$2>";;
9153         esac ;
9154     shift 2;
9155 done > try.c;
9156 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9157 set try;
9158 if eval $compile; then
9159         val="$define";
9160 else
9161         val="$undef";
9162 fi;
9163 set $varname;
9164 eval $setvar;
9165 $rm -f try.c try.o'
9166
9167 socketlib=''
9168 sockethdr=''
9169 : see whether socket exists
9170 echo " "
9171 $echo $n "Hmm... $c" >&4
9172 if set socket val -f d_socket; eval $csym; $val; then
9173         echo "Looks like you have Berkeley networking support." >&4
9174         d_socket="$define"
9175         if set setsockopt val -f; eval $csym; $val; then
9176                 d_oldsock="$undef"
9177         else
9178                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9179                 d_oldsock="$define"
9180         fi
9181 else
9182         if $contains socklib libc.list >/dev/null 2>&1; then
9183                 echo "Looks like you have Berkeley networking support." >&4
9184                 d_socket="$define"
9185                 : we will have to assume that it supports the 4.2 BSD interface
9186                 d_oldsock="$undef"
9187         else
9188                 echo "You don't have Berkeley networking in libc$_a..." >&4
9189                 if test "X$d_socket" = "X$define"; then
9190                    echo "...but you seem to believe that you have sockets." >&4
9191                 else
9192                         for net in net socket
9193                         do
9194                                 if test -f /usr/lib/lib$net$_a; then
9195                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9196                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9197                                         if $contains socket libc.list >/dev/null 2>&1; then
9198                                                 d_socket="$define"
9199                                                 socketlib="-l$net"
9200                                                 case "$net" in
9201                                                 net)
9202                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9203                                                         sockethdr="-I/usr/netinclude"
9204                                                         ;;
9205                                                 esac
9206                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9207                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9208                                                         d_oldsock="$undef"
9209                                                 else
9210                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9211                                                         d_oldsock="$define"
9212                                                 fi
9213                                                 break
9214                                         fi
9215                                 fi
9216                         done
9217                         if test "X$d_socket" != "X$define"; then
9218                            echo "or anywhere else I see." >&4
9219                            d_socket="$undef"
9220                            d_oldsock="$undef"
9221                         fi
9222                 fi
9223         fi
9224 fi
9225
9226 : see if socketpair exists
9227 set socketpair d_sockpair
9228 eval $inlibc
9229
9230
9231 echo " "
9232 echo "Checking the availability of certain socket constants..." >& 4
9233 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9234         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9235         $cat >try.c <<EOF
9236 #include <sys/types.h>
9237 #include <sys/socket.h>
9238 int main() {
9239     int i = $ENUM;
9240 }
9241 EOF
9242         val="$undef"
9243         set try; if eval $compile; then
9244                 val="$define"
9245         fi
9246         set d_${enum}; eval $setvar
9247         $rm -f try.c try
9248 done
9249
9250 : see if this is a sys/uio.h system
9251 set sys/uio.h i_sysuio
9252 eval $inhdr
9253
9254
9255 echo " "
9256 echo "Checking to see if your system supports struct cmsghdr..." >&4
9257 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9258 eval $hasstruct
9259 case "$d_cmsghdr_s" in
9260 "$define")      echo "Yes, it does."   ;;
9261 *)              echo "No, it doesn't." ;;
9262 esac
9263
9264
9265 : check for const keyword
9266 echo " "
9267 echo 'Checking to see if your C compiler knows about "const"...' >&4
9268 $cat >const.c <<'EOCP'
9269 typedef struct spug { int drokk; } spug;
9270 int main()
9271 {
9272         const char *foo;
9273         const spug y;
9274 }
9275 EOCP
9276 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9277         val="$define"
9278         echo "Yup, it does."
9279 else
9280         val="$undef"
9281         echo "Nope, it doesn't."
9282 fi
9283 set d_const
9284 eval $setvar
9285
9286 : see if crypt exists
9287 echo " "
9288 if set crypt val -f d_crypt; eval $csym; $val; then
9289         echo 'crypt() found.' >&4
9290         val="$define"
9291         cryptlib=''
9292 else
9293         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9294         if $test -z "$cryptlib"; then
9295                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9296         else
9297                 cryptlib=-lcrypt
9298         fi
9299         if $test -z "$cryptlib"; then
9300                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9301         else
9302                 cryptlib=-lcrypt
9303         fi
9304         if $test -z "$cryptlib"; then
9305                 cryptlib=`./loc libcrypt$_a "" $libpth`
9306         else
9307                 cryptlib=-lcrypt
9308         fi
9309         if $test -z "$cryptlib"; then
9310                 echo 'crypt() NOT found.' >&4
9311                 val="$undef"
9312         else
9313                 val="$define"
9314         fi
9315 fi
9316 set d_crypt
9317 eval $setvar
9318
9319 : get csh whereabouts
9320 case "$csh" in
9321 'csh') val="$undef" ;;
9322 *) val="$define" ;;
9323 esac
9324 set d_csh
9325 eval $setvar
9326 : Respect a hint or command line value for full_csh.
9327 case "$full_csh" in
9328 '') full_csh=$csh ;;
9329 esac
9330
9331 : see if cuserid exists
9332 set cuserid d_cuserid
9333 eval $inlibc
9334
9335 : see if this is a limits.h system
9336 set limits.h i_limits
9337 eval $inhdr
9338
9339 : see if this is a float.h system
9340 set float.h i_float
9341 eval $inhdr
9342
9343 : See if number of significant digits in a double precision number is known
9344 echo " "
9345 $cat >dbl_dig.c <<EOM
9346 #$i_limits I_LIMITS
9347 #$i_float I_FLOAT
9348 #ifdef I_LIMITS
9349 #include <limits.h>
9350 #endif
9351 #ifdef I_FLOAT
9352 #include <float.h>
9353 #endif
9354 #ifdef DBL_DIG
9355 printf("Contains DBL_DIG");
9356 #endif
9357 EOM
9358 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9359 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9360         echo "DBL_DIG found." >&4
9361         val="$define"
9362 else
9363         echo "DBL_DIG NOT found." >&4
9364         val="$undef"
9365 fi
9366 $rm -f dbl_dig.?
9367 set d_dbl_dig
9368 eval $setvar
9369
9370 hasproto='varname=$1; func=$2; shift; shift;
9371 while $test $# -ge 2; do
9372         case "$1" in
9373         $define) echo "#include <$2>";;
9374         esac ;
9375     shift 2;
9376 done > try.c;
9377 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9378 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9379         echo "$func() prototype found.";
9380         val="$define";
9381 else
9382         echo "$func() prototype NOT found.";
9383         val="$undef";
9384 fi;
9385 set $varname;
9386 eval $setvar;
9387 $rm -f try.c tryout.c'
9388
9389 : see if dbm.h is available
9390 : see if dbmclose exists
9391 set dbmclose d_dbmclose
9392 eval $inlibc
9393
9394 case "$d_dbmclose" in
9395 $define)
9396         set dbm.h i_dbm
9397         eval $inhdr
9398         case "$i_dbm" in
9399         $define)
9400                 val="$undef"
9401                 set i_rpcsvcdbm
9402                 eval $setvar
9403                 ;;
9404         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9405                 eval $inhdr
9406                 ;;
9407         esac
9408         ;;
9409 *)      echo "We won't be including <dbm.h>"
9410         val="$undef"
9411         set i_dbm
9412         eval $setvar
9413         val="$undef"
9414         set i_rpcsvcdbm
9415         eval $setvar
9416         ;;
9417 esac
9418
9419 : see if prototype for dbminit is available
9420 echo " "
9421 set d_dbminitproto dbminit $i_dbm dbm.h
9422 eval $hasproto
9423
9424 : see if difftime exists
9425 set difftime d_difftime
9426 eval $inlibc
9427
9428 : see if this is a dirent system
9429 echo " "
9430 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9431         val="$define"
9432         echo "<dirent.h> found." >&4
9433 else
9434         val="$undef"
9435         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9436                 echo "<sys/dir.h> found." >&4
9437                 echo " "
9438         else
9439                 xinc=`./findhdr sys/ndir.h`
9440         fi
9441         echo "<dirent.h> NOT found." >&4
9442 fi
9443 set i_dirent
9444 eval $setvar
9445
9446 : Look for type of directory structure.
9447 echo " "
9448 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9449
9450 case "$direntrytype" in
9451 ''|' ')
9452         case "$i_dirent" in
9453         $define) guess1='struct dirent' ;;
9454         *) guess1='struct direct'  ;;
9455         esac
9456         ;;
9457 *)      guess1="$direntrytype"
9458         ;;
9459 esac
9460
9461 case "$guess1" in
9462 'struct dirent') guess2='struct direct' ;;
9463 *) guess2='struct dirent' ;;
9464 esac
9465                 
9466 if $contains "$guess1" try.c >/dev/null 2>&1; then
9467         direntrytype="$guess1"
9468         echo "Your directory entries are $direntrytype." >&4
9469 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9470         direntrytype="$guess2"
9471         echo "Your directory entries seem to be $direntrytype." >&4
9472 else
9473         echo "I don't recognize your system's directory entries." >&4
9474         rp="What type is used for directory entries on this system?"
9475         dflt="$guess1"
9476         . ./myread
9477         direntrytype="$ans"
9478 fi
9479 $rm -f try.c
9480
9481
9482 : see if the directory entry stores field length
9483 echo " "
9484 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9485 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9486         echo "Good, your directory entry keeps length information in d_namlen." >&4
9487         val="$define"
9488 else
9489         echo "Your directory entry does not know about the d_namlen field." >&4
9490         val="$undef"
9491 fi
9492 set d_dirnamlen
9493 eval $setvar
9494 $rm -f try.c
9495
9496 : see if dlerror exists
9497 xxx_runnm="$runnm"
9498 runnm=false
9499 set dlerror d_dlerror
9500 eval $inlibc
9501 runnm="$xxx_runnm"
9502
9503 : see if dlfcn is available
9504 set dlfcn.h i_dlfcn
9505 eval $inhdr
9506
9507 case "$usedl" in
9508 $define|y|true)
9509         $cat << EOM
9510
9511 On a few systems, the dynamically loaded modules that perl generates and uses
9512 will need a different extension than shared libs. The default will probably
9513 be appropriate.
9514
9515 EOM
9516         case "$dlext" in
9517         '')     dflt="$so" ;;
9518         *)      dflt="$dlext" ;;
9519         esac
9520         rp='What is the extension of dynamically loaded modules'
9521         . ./myread
9522         dlext="$ans"
9523         ;;
9524 *)
9525         dlext="none"
9526         ;;
9527 esac
9528
9529 : Check if dlsym need a leading underscore
9530 echo " "
9531 val="$undef"
9532
9533 case "$dlsrc" in
9534 dl_dlopen.xs)
9535         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9536         $cat >dyna.c <<'EOM'
9537 fred () { }
9538 EOM
9539
9540 $cat >fred.c<<EOM
9541
9542 #include <stdio.h>
9543 #$i_dlfcn I_DLFCN
9544 #ifdef I_DLFCN
9545 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9546 #else
9547 #include <sys/types.h>
9548 #include <nlist.h>
9549 #include <link.h>
9550 #endif
9551
9552 extern int fred() ;
9553
9554 int main()
9555 {
9556     void * handle ;
9557     void * symbol ;
9558 #ifndef RTLD_LAZY
9559     int mode = 1 ;
9560 #else
9561     int mode = RTLD_LAZY ;
9562 #endif
9563     handle = dlopen("./dyna.$dlext", mode) ;
9564     if (handle == NULL) {
9565         printf ("1\n") ;
9566         fflush (stdout) ;
9567         exit(0);
9568     }
9569     symbol = dlsym(handle, "fred") ;
9570     if (symbol == NULL) {
9571         /* try putting a leading underscore */
9572         symbol = dlsym(handle, "_fred") ;
9573         if (symbol == NULL) {
9574             printf ("2\n") ;
9575             fflush (stdout) ;
9576             exit(0);
9577         }
9578         printf ("3\n") ;
9579     }
9580     else
9581         printf ("4\n") ;
9582     fflush (stdout) ;
9583     exit(0);
9584 }
9585 EOM
9586         : Call the object file tmp-dyna.o in case dlext=o.
9587         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9588                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9589                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9590                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9591                 xxx=`$run ./fred`
9592                 case $xxx in
9593                 1)      echo "Test program failed using dlopen." >&4
9594                         echo "Perhaps you should not use dynamic loading." >&4;;
9595                 2)      echo "Test program failed using dlsym." >&4
9596                         echo "Perhaps you should not use dynamic loading." >&4;;
9597                 3)      echo "dlsym needs a leading underscore" >&4
9598                         val="$define" ;;
9599                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9600                 esac
9601         else
9602                 echo "I can't compile and run the test program." >&4
9603                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9604         fi
9605         ;;
9606 esac
9607                 
9608 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9609
9610 set d_dlsymun
9611 eval $setvar
9612
9613 : see if prototype for drand48 is available
9614 echo " "
9615 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9616 eval $hasproto
9617
9618 : see if dup2 exists
9619 set dup2 d_dup2
9620 eval $inlibc
9621
9622 : see if eaccess exists
9623 set eaccess d_eaccess
9624 eval $inlibc
9625
9626 : see if endgrent exists
9627 set endgrent d_endgrent
9628 eval $inlibc
9629
9630 : see if endhostent exists
9631 set endhostent d_endhent
9632 eval $inlibc
9633
9634 : see if endnetent exists
9635 set endnetent d_endnent
9636 eval $inlibc
9637
9638 : see if endprotoent exists
9639 set endprotoent d_endpent
9640 eval $inlibc
9641
9642 : see if endpwent exists
9643 set endpwent d_endpwent
9644 eval $inlibc
9645
9646 : see if endservent exists
9647 set endservent d_endsent
9648 eval $inlibc
9649
9650 : Locate the flags for 'open()'
9651 echo " "
9652 $cat >try.c <<'EOCP'
9653 #include <sys/types.h>
9654 #ifdef I_FCNTL
9655 #include <fcntl.h>
9656 #endif
9657 #ifdef I_SYS_FILE
9658 #include <sys/file.h>
9659 #endif
9660 int main() {
9661         if(O_RDONLY);
9662 #ifdef O_TRUNC
9663         exit(0);
9664 #else
9665         exit(1);
9666 #endif
9667 }
9668 EOCP
9669 : check sys/file.h first to get FREAD on Sun
9670 if $test `./findhdr sys/file.h` && \
9671                 set try -DI_SYS_FILE && eval $compile; then
9672         h_sysfile=true;
9673         echo "<sys/file.h> defines the O_* constants..." >&4
9674         if $run ./try; then
9675                 echo "and you have the 3 argument form of open()." >&4
9676                 val="$define"
9677         else
9678                 echo "but not the 3 argument form of open().  Oh, well." >&4
9679                 val="$undef"
9680         fi
9681 elif $test `./findhdr fcntl.h` && \
9682                 set try -DI_FCNTL && eval $compile; then
9683         h_fcntl=true;
9684         echo "<fcntl.h> defines the O_* constants..." >&4
9685         if $run ./try; then
9686                 echo "and you have the 3 argument form of open()." >&4
9687                 val="$define"
9688         else
9689                 echo "but not the 3 argument form of open().  Oh, well." >&4
9690                 val="$undef"
9691         fi
9692 else
9693         val="$undef"
9694         echo "I can't find the O_* constant definitions!  You got problems." >&4
9695 fi
9696 set d_open3
9697 eval $setvar
9698 $rm -f try try.*
9699
9700 : see which of string.h or strings.h is needed
9701 echo " "
9702 strings=`./findhdr string.h`
9703 if $test "$strings" && $test -r "$strings"; then
9704         echo "Using <string.h> instead of <strings.h>." >&4
9705         val="$define"
9706 else
9707         val="$undef"
9708         strings=`./findhdr strings.h`
9709         if $test "$strings" && $test -r "$strings"; then
9710                 echo "Using <strings.h> instead of <string.h>." >&4
9711         else
9712                 echo "No string header found -- You'll surely have problems." >&4
9713         fi
9714 fi
9715 set i_string
9716 eval $setvar
9717 case "$i_string" in
9718 "$undef") strings=`./findhdr strings.h`;;
9719 *)        strings=`./findhdr string.h`;;
9720 esac
9721
9722 : check for non-blocking I/O stuff
9723 case "$h_sysfile" in
9724 true) echo "#include <sys/file.h>" > head.c;;
9725 *)
9726        case "$h_fcntl" in
9727        true) echo "#include <fcntl.h>" > head.c;;
9728        *) echo "#include <sys/fcntl.h>" > head.c;;
9729        esac
9730        ;;
9731 esac
9732 echo " "
9733 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9734 case "$o_nonblock" in
9735 '')
9736         $cat head.c > try.c
9737         $cat >>try.c <<'EOCP'
9738 #include <stdio.h>
9739 #include <stdlib.h>
9740 int main() {
9741 #ifdef O_NONBLOCK
9742         printf("O_NONBLOCK\n");
9743         exit(0);
9744 #endif
9745 #ifdef O_NDELAY
9746         printf("O_NDELAY\n");
9747         exit(0);
9748 #endif
9749 #ifdef FNDELAY
9750         printf("FNDELAY\n");
9751         exit(0);
9752 #endif
9753         exit(0);
9754 }
9755 EOCP
9756         set try
9757         if eval $compile_ok; then
9758                 o_nonblock=`$run ./try`
9759                 case "$o_nonblock" in
9760                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9761                 *) echo "Seems like we can use $o_nonblock.";;
9762                 esac
9763         else
9764                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9765         fi
9766         ;;
9767 *) echo "Using $hint value $o_nonblock.";;
9768 esac
9769 $rm -f try try.* .out core
9770
9771 echo " "
9772 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9773 case "$eagain" in
9774 '')
9775         $cat head.c > try.c
9776         $cat >>try.c <<EOCP
9777 #include <errno.h>
9778 #include <sys/types.h>
9779 #include <signal.h>
9780 #include <stdio.h> 
9781 #include <stdlib.h> 
9782 #define MY_O_NONBLOCK $o_nonblock
9783 #ifndef errno  /* XXX need better Configure test */
9784 extern int errno;
9785 #endif
9786 #$i_unistd I_UNISTD
9787 #ifdef I_UNISTD
9788 #include <unistd.h>
9789 #endif
9790 #$i_string I_STRING
9791 #ifdef I_STRING
9792 #include <string.h>
9793 #else
9794 #include <strings.h>
9795 #endif
9796 $signal_t blech(x) int x; { exit(3); }
9797 EOCP
9798         $cat >> try.c <<'EOCP'
9799 int main()
9800 {
9801         int pd[2];
9802         int pu[2];
9803         char buf[1];
9804         char string[100];
9805
9806         pipe(pd);       /* Down: child -> parent */
9807         pipe(pu);       /* Up: parent -> child */
9808         if (0 != fork()) {
9809                 int ret;
9810                 close(pd[1]);   /* Parent reads from pd[0] */
9811                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9812 #ifdef F_SETFL
9813                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9814                         exit(1);
9815 #else
9816                 exit(4);
9817 #endif
9818                 signal(SIGALRM, blech);
9819                 alarm(5);
9820                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9821                         exit(2);
9822                 sprintf(string, "%d\n", ret);
9823                 write(2, string, strlen(string));
9824                 alarm(0);
9825 #ifdef EAGAIN
9826                 if (errno == EAGAIN) {
9827                         printf("EAGAIN\n");
9828                         goto ok;
9829                 }
9830 #endif
9831 #ifdef EWOULDBLOCK
9832                 if (errno == EWOULDBLOCK)
9833                         printf("EWOULDBLOCK\n");
9834 #endif
9835         ok:
9836                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9837                 sleep(2);                               /* Give it time to close our pipe */
9838                 alarm(5);
9839                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9840                 alarm(0);
9841                 sprintf(string, "%d\n", ret);
9842                 write(3, string, strlen(string));
9843                 exit(0);
9844         }
9845
9846         close(pd[0]);                   /* We write to pd[1] */
9847         close(pu[1]);                   /* We read from pu[0] */
9848         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9849         close(pd[1]);                   /* Pipe pd is now fully closed! */
9850         exit(0);                                /* Bye bye, thank you for playing! */
9851 }
9852 EOCP
9853         set try
9854         if eval $compile_ok; then
9855                 echo "$startsh" >mtry
9856                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9857                 chmod +x mtry
9858                 ./mtry >/dev/null 2>&1
9859                 case $? in
9860                 0) eagain=`$cat try.out`;;
9861                 1) echo "Could not perform non-blocking setting!";;
9862                 2) echo "I did a successful read() for something that was not there!";;
9863                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9864                 4) echo "Could not find F_SETFL!";;
9865                 *) echo "Something terribly wrong happened during testing.";;
9866                 esac
9867                 rd_nodata=`$cat try.ret`
9868                 echo "A read() system call with no data present returns $rd_nodata."
9869                 case "$rd_nodata" in
9870                 0|-1) ;;
9871                 *)
9872                         echo "(That's peculiar, fixing that to be -1.)"
9873                         rd_nodata=-1
9874                         ;;
9875                 esac
9876                 case "$eagain" in
9877                 '')
9878                         echo "Forcing errno EAGAIN on read() with no data available."
9879                         eagain=EAGAIN
9880                         ;;
9881                 *)
9882                         echo "Your read() sets errno to $eagain when no data is available."
9883                         ;;
9884                 esac
9885                 status=`$cat try.err`
9886                 case "$status" in
9887                 0) echo "And it correctly returns 0 to signal EOF.";;
9888                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9889                 *) echo "However, your read() returns '$status' on EOF??";;
9890                 esac
9891                 val="$define"
9892                 if test "$status" = "$rd_nodata"; then
9893                         echo "WARNING: you can't distinguish between EOF and no data!"
9894                         val="$undef"
9895                 fi
9896         else
9897                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9898                 eagain=EAGAIN
9899         fi
9900         set d_eofnblk
9901         eval $setvar
9902         ;;
9903 *)
9904         echo "Using $hint value $eagain."
9905         echo "Your read() returns $rd_nodata when no data is present."
9906         case "$d_eofnblk" in
9907         "$define") echo "And you can see EOF because read() returns 0.";;
9908         "$undef") echo "But you can't see EOF status from read() returned value.";;
9909         *)
9910                 echo "(Assuming you can't see EOF status from read anyway.)"
9911                 d_eofnblk=$undef
9912                 ;;
9913         esac
9914         ;;
9915 esac
9916 $rm -f try try.* .out core head.c mtry
9917
9918 : see if fchdir exists
9919 set fchdir d_fchdir
9920 eval $inlibc
9921
9922 : see if fchmod exists
9923 set fchmod d_fchmod
9924 eval $inlibc
9925
9926 : see if fchown exists
9927 set fchown d_fchown
9928 eval $inlibc
9929
9930 : see if this is an fcntl system
9931 set fcntl d_fcntl
9932 eval $inlibc
9933
9934 echo " "
9935 : See if fcntl-based locking works.
9936 $cat >try.c <<EOCP
9937 #include <stdlib.h>
9938 #include <unistd.h>
9939 #include <fcntl.h>
9940 #include <signal.h>
9941 $signal_t blech(x) int x; { exit(3); }
9942 int main() {
9943 #if defined(F_SETLK) && defined(F_SETLKW)
9944      struct flock flock;
9945      int retval, fd;
9946      fd = open("try.c", O_RDONLY);
9947      flock.l_type = F_RDLCK;
9948      flock.l_whence = SEEK_SET;
9949      flock.l_start = flock.l_len = 0;
9950      signal(SIGALRM, blech);
9951      alarm(10);
9952      retval = fcntl(fd, F_SETLK, &flock);
9953      close(fd);
9954      (retval < 0 ? exit(2) : exit(0));
9955 #else
9956      exit(2);
9957 #endif
9958 }
9959 EOCP
9960 echo "Checking if fcntl-based file locking works... "
9961 case "$d_fcntl" in
9962 "$define")
9963         set try
9964         if eval $compile_ok; then
9965                 if $run ./try; then
9966                         echo "Yes, it seems to work."
9967                         val="$define"
9968                 else
9969                         echo "Nope, it didn't work."
9970                         val="$undef"
9971                         case "$?" in
9972                         3) $cat >&4 <<EOM
9973 ***
9974 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9975 *** This is (almost) impossible.
9976 *** If your NFS lock daemons are not feeling well, something like
9977 *** this may happen, please investigate.  Cannot continue, aborting.
9978 ***
9979 EOM
9980                                 exit 1
9981                                 ;;
9982                         esac
9983                 fi
9984         else
9985                 echo "I'm unable to compile the test program, so I'll assume not."
9986                 val="$undef"
9987         fi
9988         ;;
9989 *) val="$undef";
9990         echo "Nope, since you don't even have fcntl()."
9991         ;;
9992 esac
9993 set d_fcntl_can_lock
9994 eval $setvar
9995 $rm -f try*
9996
9997
9998 : see if sys/select.h has to be included
9999 set sys/select.h i_sysselct
10000 eval $inhdr
10001
10002 : see if we should include time.h, sys/time.h, or both
10003 echo " "
10004 if test "X$timeincl" = X; then
10005         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10006         $echo $n "I'm now running the test program...$c"
10007         $cat >try.c <<'EOCP'
10008 #include <sys/types.h>
10009 #ifdef I_TIME
10010 #include <time.h>
10011 #endif
10012 #ifdef I_SYSTIME
10013 #ifdef SYSTIMEKERNEL
10014 #define KERNEL
10015 #endif
10016 #include <sys/time.h>
10017 #endif
10018 #ifdef I_SYSSELECT
10019 #include <sys/select.h>
10020 #endif
10021 int main()
10022 {
10023         struct tm foo;
10024 #ifdef S_TIMEVAL
10025         struct timeval bar;
10026 #endif
10027 #ifdef S_TIMEZONE
10028         struct timezone tzp;
10029 #endif
10030         if (foo.tm_sec == foo.tm_sec)
10031                 exit(0);
10032 #ifdef S_TIMEVAL
10033         if (bar.tv_sec == bar.tv_sec)
10034                 exit(0);
10035 #endif
10036         exit(1);
10037 }
10038 EOCP
10039         flags=''
10040         for s_timezone in '-DS_TIMEZONE' ''; do
10041         sysselect=''
10042         for s_timeval in '-DS_TIMEVAL' ''; do
10043         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10044         for i_time in '' '-DI_TIME'; do
10045         for i_systime in '-DI_SYSTIME' ''; do
10046                 case "$flags" in
10047                 '') $echo $n ".$c"
10048                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10049                         if eval $compile; then
10050                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10051                                 shift
10052                                 flags="$*"
10053                                 echo " "
10054                                 $echo $n "Succeeded with $flags$c"
10055                         fi
10056                         ;;
10057                 esac
10058         done
10059         done
10060         done
10061         done
10062         done
10063         timeincl=''
10064         echo " "
10065         case "$flags" in
10066         *SYSTIMEKERNEL*) i_systimek="$define"
10067                 timeincl=`./findhdr sys/time.h`
10068                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10069         *) i_systimek="$undef";;
10070         esac
10071         case "$flags" in
10072         *I_TIME*) i_time="$define"
10073                 timeincl=`./findhdr time.h`" $timeincl"
10074                 echo "We'll include <time.h>." >&4;;
10075         *) i_time="$undef";;
10076         esac
10077         case "$flags" in
10078         *I_SYSTIME*) i_systime="$define"
10079                 timeincl=`./findhdr sys/time.h`" $timeincl"
10080                 echo "We'll include <sys/time.h>." >&4;;
10081         *) i_systime="$undef";;
10082         esac
10083         $rm -f try.c try
10084 fi
10085
10086 : check for fd_set items
10087 $cat <<EOM
10088
10089 Checking to see how well your C compiler handles fd_set and friends ...
10090 EOM
10091 $cat >try.c <<EOCP
10092 #$i_systime I_SYS_TIME
10093 #$i_sysselct I_SYS_SELECT
10094 #$d_socket HAS_SOCKET
10095 #include <sys/types.h>
10096 #ifdef HAS_SOCKET
10097 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10098 #endif
10099 #ifdef I_SYS_TIME
10100 #include <sys/time.h>
10101 #endif
10102 #ifdef I_SYS_SELECT
10103 #include <sys/select.h>
10104 #endif
10105 int main() {
10106         fd_set fds;
10107
10108 #ifdef TRYBITS
10109         if(fds.fds_bits);
10110 #endif
10111
10112 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10113         exit(0);
10114 #else
10115         exit(1);
10116 #endif
10117 }
10118 EOCP
10119 set try -DTRYBITS
10120 if eval $compile; then
10121         d_fds_bits="$define"
10122         d_fd_set="$define"
10123         echo "Well, your system knows about the normal fd_set typedef..." >&4
10124         if $run ./try; then
10125                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10126                 d_fd_macros="$define"
10127         else
10128                 $cat >&4 <<'EOM'
10129 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10130 EOM
10131                 d_fd_macros="$undef"
10132         fi
10133 else
10134         $cat <<'EOM'
10135 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10136 EOM
10137         set try
10138         if eval $compile; then
10139                 d_fds_bits="$undef"
10140                 d_fd_set="$define"
10141                 echo "Well, your system has some sort of fd_set available..." >&4
10142                 if $run ./try; then
10143                         echo "and you have the normal fd_set macros." >&4
10144                         d_fd_macros="$define"
10145                 else
10146                         $cat <<'EOM'
10147 but not the normal fd_set macros!  Gross!  More work for me...
10148 EOM
10149                         d_fd_macros="$undef"
10150                 fi
10151         else
10152         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10153                 d_fd_set="$undef"
10154                 d_fds_bits="$undef"
10155                 d_fd_macros="$undef"
10156         fi
10157 fi
10158 $rm -f try try.*
10159
10160 : see if fgetpos exists
10161 set fgetpos d_fgetpos
10162 eval $inlibc
10163
10164 : see if finite exists
10165 set finite d_finite
10166 eval $inlibc
10167
10168 : see if finitel exists
10169 set finitel d_finitel
10170 eval $inlibc
10171
10172 : see if flock exists
10173 set flock d_flock
10174 eval $inlibc
10175
10176 : see if this is a sys/file.h system
10177 val=''
10178 set sys/file.h val
10179 eval $inhdr
10180
10181 : do we need to include sys/file.h ?
10182 case "$val" in
10183 "$define")
10184         echo " "
10185         if $h_sysfile; then
10186                 val="$define"
10187                 echo "We'll be including <sys/file.h>." >&4
10188         else
10189                 val="$undef"
10190                 echo "We won't be including <sys/file.h>." >&4
10191         fi
10192         ;;
10193 *)
10194         h_sysfile=false
10195         ;;
10196 esac
10197 set i_sysfile
10198 eval $setvar
10199
10200 : see if prototype for flock is available
10201 echo " "
10202 set d_flockproto flock $i_sysfile sys/file.h
10203 eval $hasproto
10204
10205 : see if fork exists
10206 set fork d_fork
10207 eval $inlibc
10208
10209 : see if fp_class exists
10210 set fp_class d_fp_class
10211 eval $inlibc
10212
10213 : see if pathconf exists
10214 set pathconf d_pathconf
10215 eval $inlibc
10216
10217 : see if fpathconf exists
10218 set fpathconf d_fpathconf
10219 eval $inlibc
10220
10221 : see if fpclass exists
10222 set fpclass d_fpclass
10223 eval $inlibc
10224
10225 : see if fpclassify exists
10226 set fpclassify d_fpclassify
10227 eval $inlibc
10228
10229 : see if fpclassl exists
10230 set fpclassl d_fpclassl
10231 eval $inlibc
10232
10233
10234 : check for fpos64_t
10235 echo " "
10236 echo "Checking to see if you have fpos64_t..." >&4
10237 $cat >try.c <<EOCP
10238 #include <stdio.h>
10239 int main() { fpos64_t x = 7; }
10240 EOCP
10241 set try
10242 if eval $compile; then
10243         val="$define"
10244         echo "You have fpos64_t."
10245 else
10246         val="$undef"
10247         echo "You do not have fpos64_t."
10248         case "$fpossize" in
10249         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10250         esac
10251 fi
10252 $rm -f try.* try
10253 set d_fpos64_t
10254 eval $setvar
10255
10256 : see if frexpl exists
10257 set frexpl d_frexpl
10258 eval $inlibc
10259
10260 : see if this is a sys/param system
10261 set sys/param.h i_sysparam
10262 eval $inhdr
10263
10264 : see if this is a sys/mount.h system
10265 set sys/mount.h i_sysmount
10266 eval $inhdr
10267
10268
10269 echo " "
10270 echo "Checking to see if your system supports struct fs_data..." >&4
10271 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10272 eval $hasstruct
10273 case "$d_fs_data_s" in
10274 "$define")      echo "Yes, it does."   ;;
10275 *)              echo "No, it doesn't." ;;
10276 esac
10277
10278 : see if fseeko exists
10279 set fseeko d_fseeko
10280 eval $inlibc
10281 case "$longsize" in
10282 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10283 esac
10284
10285 : see if fsetpos exists
10286 set fsetpos d_fsetpos
10287 eval $inlibc
10288
10289
10290 : see if fstatfs exists
10291 set fstatfs d_fstatfs
10292 eval $inlibc
10293
10294
10295 : see if statvfs exists
10296 set statvfs d_statvfs
10297 eval $inlibc
10298
10299 : see if fstatvfs exists
10300 set fstatvfs d_fstatvfs
10301 eval $inlibc
10302
10303
10304 : see if fsync exists
10305 set fsync d_fsync
10306 eval $inlibc
10307
10308 : see if ftello exists
10309 set ftello d_ftello
10310 eval $inlibc
10311 case "$longsize" in
10312 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10313 esac
10314
10315 : see if getcwd exists
10316 set getcwd d_getcwd
10317 eval $inlibc
10318
10319 : see if getespwnam exists
10320 set getespwnam d_getespwnam
10321 eval $inlibc
10322
10323
10324 : see if getfsstat exists
10325 set getfsstat d_getfsstat
10326 eval $inlibc
10327
10328 : see if getgrent exists
10329 set getgrent d_getgrent
10330 eval $inlibc
10331
10332 : see if gethostbyaddr exists
10333 set gethostbyaddr d_gethbyaddr
10334 eval $inlibc
10335
10336 : see if gethostbyname exists
10337 set gethostbyname d_gethbyname
10338 eval $inlibc
10339
10340 : see if gethostent exists
10341 set gethostent d_gethent
10342 eval $inlibc
10343
10344 : see how we will look up host name
10345 echo " "
10346 call=''
10347 if set gethostname val -f d_gethname; eval $csym; $val; then
10348         echo 'gethostname() found.' >&4
10349         d_gethname="$define"
10350         call=gethostname
10351 fi
10352 if set uname val -f d_uname; eval $csym; $val; then
10353         if ./xenix; then
10354                 $cat <<'EOM'
10355 uname() was found, but you're running xenix, and older versions of xenix
10356 have a broken uname(). If you don't really know whether your xenix is old
10357 enough to have a broken system call, use the default answer.
10358
10359 EOM
10360                 dflt=y
10361                 case "$d_uname" in
10362                 "$define") dflt=n;;
10363                 esac
10364                 rp='Is your uname() broken?'
10365                 . ./myread
10366                 case "$ans" in
10367                 n*) d_uname="$define"; call=uname;;
10368                 esac
10369         else
10370                 echo 'uname() found.' >&4
10371                 d_uname="$define"
10372                 case "$call" in
10373                 '') call=uname ;;
10374                 esac
10375         fi
10376 fi
10377 case "$d_gethname" in
10378 '') d_gethname="$undef";;
10379 esac
10380 case "$d_uname" in
10381 '') d_uname="$undef";;
10382 esac
10383 case "$d_uname$d_gethname" in
10384 *define*)
10385         dflt=n
10386         cat <<EOM
10387  
10388 Every now and then someone has a $call() that lies about the hostname
10389 but can't be fixed for political or economic reasons.  If you wish, I can
10390 pretend $call() isn't there and maybe compute hostname at run-time
10391 thanks to the '$phostname' command.
10392
10393 EOM
10394         rp="Shall I ignore $call() from now on?"
10395         . ./myread
10396         case "$ans" in
10397         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10398         esac;;
10399 esac
10400 case "$phostname" in
10401 '') aphostname='';;
10402 *) case "$aphostname" in
10403         /*) ;;
10404         *) set X $phostname
10405                 shift
10406                 file=$1
10407                 shift
10408                 file=`./loc $file $file $pth`
10409                 aphostname=`echo $file $*`
10410                 ;;
10411         esac
10412         ;;
10413 esac
10414 case "$d_uname$d_gethname" in
10415 *define*) ;;
10416 *)
10417         case "$phostname" in
10418         '')
10419                 echo "There will be no way for $package to get your hostname." >&4;;
10420         *)
10421         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10422                 ;;
10423         esac;;
10424 esac
10425 case "$d_phostname" in
10426 '') d_phostname="$undef";;
10427 esac
10428
10429 : see if this is a netdb.h system
10430 set netdb.h i_netdb
10431 eval $inhdr
10432
10433 : see if prototypes for various gethostxxx netdb.h functions are available
10434 echo " "
10435 set d_gethostprotos gethostent $i_netdb netdb.h
10436 eval $hasproto
10437
10438 : see if getitimer exists
10439 set getitimer d_getitimer
10440 eval $inlibc
10441
10442 : see if getlogin exists
10443 set getlogin d_getlogin
10444 eval $inlibc
10445
10446 : see if getmnt exists
10447 set getmnt d_getmnt
10448 eval $inlibc
10449
10450 : see if getmntent exists
10451 set getmntent d_getmntent
10452 eval $inlibc
10453
10454 : see if getnetbyaddr exists
10455 set getnetbyaddr d_getnbyaddr
10456 eval $inlibc
10457
10458 : see if getnetbyname exists
10459 set getnetbyname d_getnbyname
10460 eval $inlibc
10461
10462 : see if getnetent exists
10463 set getnetent d_getnent
10464 eval $inlibc
10465
10466 : see if prototypes for various getnetxxx netdb.h functions are available
10467 echo " "
10468 set d_getnetprotos getnetent $i_netdb netdb.h
10469 eval $hasproto
10470
10471 : see if getpagesize exists
10472 set getpagesize d_getpagsz
10473 eval $inlibc
10474
10475
10476 : see if getprotobyname exists
10477 set getprotobyname d_getpbyname
10478 eval $inlibc
10479
10480 : see if getprotobynumber exists
10481 set getprotobynumber d_getpbynumber
10482 eval $inlibc
10483
10484 : see if getprotoent exists
10485 set getprotoent d_getpent
10486 eval $inlibc
10487
10488 : see if getpgid exists
10489 set getpgid d_getpgid
10490 eval $inlibc
10491
10492 : see if getpgrp2 exists
10493 set getpgrp2 d_getpgrp2
10494 eval $inlibc
10495
10496 : see if getppid exists
10497 set getppid d_getppid
10498 eval $inlibc
10499
10500 : see if getpriority exists
10501 set getpriority d_getprior
10502 eval $inlibc
10503
10504 : see if prototypes for various getprotoxxx netdb.h functions are available
10505 echo " "
10506 set d_getprotoprotos getprotoent $i_netdb netdb.h
10507 eval $hasproto
10508
10509 : see if getprpwnam exists
10510 set getprpwnam d_getprpwnam
10511 eval $inlibc
10512
10513 : see if getpwent exists
10514 set getpwent d_getpwent
10515 eval $inlibc
10516
10517
10518 : see if getservbyname exists
10519 set getservbyname d_getsbyname
10520 eval $inlibc
10521
10522 : see if getservbyport exists
10523 set getservbyport d_getsbyport
10524 eval $inlibc
10525
10526 : see if getservent exists
10527 set getservent d_getsent
10528 eval $inlibc
10529
10530 : see if prototypes for various getservxxx netdb.h functions are available
10531 echo " "
10532 set d_getservprotos getservent $i_netdb netdb.h
10533 eval $hasproto
10534
10535 : see if getspnam exists
10536 set getspnam d_getspnam
10537 eval $inlibc
10538
10539 : see if gettimeofday or ftime exists
10540 set gettimeofday d_gettimeod
10541 eval $inlibc
10542 case "$d_gettimeod" in
10543 "$undef")
10544         set ftime d_ftime 
10545         eval $inlibc
10546         ;;
10547 *)
10548         val="$undef"; set d_ftime; eval $setvar
10549         ;;
10550 esac
10551 case "$d_gettimeod$d_ftime" in
10552 "$undef$undef")
10553         echo " "
10554         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10555         ;;
10556 esac
10557
10558 : see if this is an grp system
10559 set grp.h i_grp
10560 eval $inhdr
10561
10562 case "$i_grp" in
10563 $define)
10564         xxx=`./findhdr grp.h`
10565         $cppstdin $cppflags $cppminus < $xxx >$$.h
10566
10567         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10568                 val="$define"
10569         else
10570                 val="$undef"
10571         fi
10572         set d_grpasswd
10573         eval $setvar
10574
10575         $rm -f $$.h
10576         ;;
10577 *)
10578         val="$undef";
10579         set d_grpasswd; eval $setvar
10580         ;;
10581 esac
10582
10583 : see if hasmntopt exists
10584 set hasmntopt d_hasmntopt
10585 eval $inlibc
10586
10587 : see if this is a netinet/in.h or sys/in.h system
10588 set netinet/in.h i_niin sys/in.h i_sysin
10589 eval $inhdr
10590
10591 : see if arpa/inet.h has to be included
10592 set arpa/inet.h i_arpainet
10593 eval $inhdr
10594
10595 : see if htonl --and friends-- exists
10596 val=''
10597 set htonl val
10598 eval $inlibc
10599
10600 : Maybe they are macros.
10601 case "$val" in
10602 $undef)
10603         $cat >htonl.c <<EOM
10604 #include <stdio.h>
10605 #include <sys/types.h>
10606 #$i_niin I_NETINET_IN
10607 #$i_sysin I_SYS_IN
10608 #$i_arpainet I_ARPA_INET
10609 #ifdef I_NETINET_IN
10610 #include <netinet/in.h>
10611 #endif
10612 #ifdef I_SYS_IN
10613 #include <sys/in.h>
10614 #endif
10615 #ifdef I_ARPA_INET
10616 #include <arpa/inet.h>
10617 #endif
10618 #ifdef htonl
10619 printf("Defined as a macro.");
10620 #endif
10621 EOM
10622         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10623         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10624                 val="$define"
10625                 echo "But it seems to be defined as a macro." >&4
10626         fi
10627         $rm -f htonl.?
10628         ;;
10629 esac
10630 set d_htonl
10631 eval $setvar
10632
10633 : index or strchr
10634 echo " "
10635 if set index val -f; eval $csym; $val; then
10636         if set strchr val -f d_strchr; eval $csym; $val; then
10637                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10638                         val="$define"
10639                         vali="$undef"
10640                         echo "strchr() found." >&4
10641                 else
10642                         val="$undef"
10643                         vali="$define"
10644                         echo "index() found." >&4
10645                 fi
10646         else
10647                 val="$undef"
10648                 vali="$define"
10649                 echo "index() found." >&4
10650         fi
10651 else
10652         if set strchr val -f d_strchr; eval $csym; $val; then
10653                 val="$define"
10654                 vali="$undef"
10655                 echo "strchr() found." >&4
10656         else
10657                 echo "No index() or strchr() found!" >&4
10658                 val="$undef"
10659                 vali="$undef"
10660         fi
10661 fi
10662 set d_strchr; eval $setvar
10663 val="$vali"
10664 set d_index; eval $setvar
10665
10666 : check whether inet_aton exists
10667 set inet_aton d_inetaton
10668 eval $inlibc
10669
10670 : Look for isascii
10671 echo " "
10672 $cat >isascii.c <<'EOCP'
10673 #include <stdio.h>
10674 #include <ctype.h>
10675 int main() {
10676         int c = 'A';
10677         if (isascii(c))
10678                 exit(0);
10679         else
10680                 exit(1);
10681 }
10682 EOCP
10683 set isascii
10684 if eval $compile; then
10685         echo "isascii() found." >&4
10686         val="$define"
10687 else
10688         echo "isascii() NOT found." >&4
10689         val="$undef"
10690 fi
10691 set d_isascii
10692 eval $setvar
10693 $rm -f isascii*
10694
10695 : see if isfinite exists
10696 set isfinite d_isfinite
10697 eval $inlibc
10698
10699 : see if isinf exists
10700 set isinf d_isinf
10701 eval $inlibc
10702
10703 : see if isnan exists
10704 set isnan d_isnan
10705 eval $inlibc
10706
10707 : see if isnanl exists
10708 set isnanl d_isnanl
10709 eval $inlibc
10710
10711 : see if killpg exists
10712 set killpg d_killpg
10713 eval $inlibc
10714
10715 : see if lchown exists
10716 echo " "
10717 $cat > try.c <<'EOCP'
10718 /* System header to define __stub macros and hopefully few prototypes,
10719     which can conflict with char lchown(); below.  */
10720 #include <assert.h>
10721 /* Override any gcc2 internal prototype to avoid an error.  */
10722 /* We use char because int might match the return type of a gcc2
10723    builtin and then its argument prototype would still apply.  */
10724 char lchown();
10725 int main() {
10726     /*  The GNU C library defines this for functions which it implements
10727         to always fail with ENOSYS.  Some functions are actually named
10728         something starting with __ and the normal name is an alias.  */
10729 #if defined (__stub_lchown) || defined (__stub___lchown)
10730 choke me
10731 #else
10732 lchown();
10733 #endif
10734 ; return 0; }
10735 EOCP
10736 set try
10737 if eval $compile; then
10738     $echo "lchown() found." >&4
10739     val="$define"
10740 else
10741     $echo "lchown() NOT found." >&4
10742     val="$undef"
10743 fi
10744 set d_lchown
10745 eval $setvar
10746
10747 : See if number of significant digits in a double precision number is known
10748 echo " "
10749 $cat >ldbl_dig.c <<EOM
10750 #$i_limits I_LIMITS
10751 #$i_float I_FLOAT
10752 #ifdef I_LIMITS
10753 #include <limits.h>
10754 #endif
10755 #ifdef I_FLOAT
10756 #include <float.h>
10757 #endif
10758 #ifdef LDBL_DIG
10759 printf("Contains LDBL_DIG");
10760 #endif
10761 EOM
10762 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10763 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10764         echo "LDBL_DIG found." >&4
10765         val="$define"
10766 else
10767         echo "LDBL_DIG NOT found." >&4
10768         val="$undef"
10769 fi
10770 $rm -f ldbl_dig.?
10771 set d_ldbl_dig
10772 eval $setvar
10773
10774 : see if link exists
10775 set link d_link
10776 eval $inlibc
10777
10778 : see if localeconv exists
10779 set localeconv d_locconv
10780 eval $inlibc
10781
10782 : see if lockf exists
10783 set lockf d_lockf
10784 eval $inlibc
10785
10786 : see if prototype for lseek is available
10787 echo " "
10788 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10789 eval $hasproto
10790
10791 : see if lstat exists
10792 set lstat d_lstat
10793 eval $inlibc
10794
10795 : see if madvise exists
10796 set madvise d_madvise
10797 eval $inlibc
10798
10799 : see if mblen exists
10800 set mblen d_mblen
10801 eval $inlibc
10802
10803 : see if mbstowcs exists
10804 set mbstowcs d_mbstowcs
10805 eval $inlibc
10806
10807 : see if mbtowc exists
10808 set mbtowc d_mbtowc
10809 eval $inlibc
10810
10811 : see if memchr exists
10812 set memchr d_memchr
10813 eval $inlibc
10814
10815 : see if memcmp exists
10816 set memcmp d_memcmp
10817 eval $inlibc
10818
10819 : see if memcpy exists
10820 set memcpy d_memcpy
10821 eval $inlibc
10822
10823 : see if memmove exists
10824 set memmove d_memmove
10825 eval $inlibc
10826
10827 : see if memset exists
10828 set memset d_memset
10829 eval $inlibc
10830
10831 : see if mkdir exists
10832 set mkdir d_mkdir
10833 eval $inlibc
10834
10835 : see if mkdtemp exists
10836 set mkdtemp d_mkdtemp
10837 eval $inlibc
10838
10839 : see if mkfifo exists
10840 set mkfifo d_mkfifo
10841 eval $inlibc
10842
10843 : see if mkstemp exists
10844 set mkstemp d_mkstemp
10845 eval $inlibc
10846
10847 : see if mkstemps exists
10848 set mkstemps d_mkstemps
10849 eval $inlibc
10850
10851 : see if mktime exists
10852 set mktime d_mktime
10853 eval $inlibc
10854
10855 : see if this is a sys/mman.h system
10856 set sys/mman.h i_sysmman
10857 eval $inhdr
10858
10859 : see if mmap exists
10860 set mmap d_mmap
10861 eval $inlibc
10862 : see what shmat returns
10863 : default to something harmless
10864 mmaptype='void *'
10865 case "$i_sysmman$d_mmap" in
10866 "$define$define")
10867         $cat >mmap.c <<'END'
10868 #include <sys/mman.h>
10869 void *mmap();
10870 END
10871         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10872                 mmaptype='void *'
10873         else
10874                 mmaptype='caddr_t'
10875         fi
10876         echo "and it returns ($mmaptype)." >&4
10877         ;;
10878 esac
10879
10880
10881
10882 : see if modfl exists
10883 set modfl d_modfl
10884 eval $inlibc
10885
10886 d_modfl_pow32_bug="$undef"
10887
10888 case "$d_longdbl$d_modfl" in
10889 $define$define)
10890         $cat <<EOM
10891 Checking to see whether your modfl() is okay for large values...
10892 EOM
10893 $cat >try.c <<EOCP
10894 #include <math.h> 
10895 #include <stdio.h>
10896 int main() {
10897     long double nv = 4294967303.15;
10898     long double v, w;
10899     v = modfl(nv, &w);         
10900 #ifdef __GLIBC__
10901     printf("glibc");
10902 #endif
10903     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10904     return 0;
10905 }
10906 EOCP
10907         case "$osname:$gccversion" in
10908         aix:)   saveccflags="$ccflags"
10909                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10910         esac
10911         set try
10912         if eval $compile; then
10913                 foo=`$run ./try`
10914                 case "$foo" in
10915                 *" 4294967303.150000 1.150000 4294967302.000000")
10916                         echo >&4 "Your modfl() is broken for large values."
10917                         d_modfl_pow32_bug="$define"
10918                         case "$foo" in
10919                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10920                         ;;
10921                         esac
10922                         ;;
10923                 *" 4294967303.150000 0.150000 4294967303.000000")
10924                         echo >&4 "Your modfl() seems okay for large values."
10925                         ;;
10926                 *)      echo >&4 "I don't understand your modfl() at all."
10927                         d_modfl="$undef"
10928                         ;;
10929                 esac
10930                 $rm -f try.* try core core.try.*
10931         else
10932                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10933                 d_modfl="$undef"
10934         fi
10935         case "$osname:$gccversion" in
10936         aix:)   ccflags="$saveccflags" ;; # restore
10937         esac
10938         ;;
10939 esac
10940
10941 : see if mprotect exists
10942 set mprotect d_mprotect
10943 eval $inlibc
10944
10945 : see if msgctl exists
10946 set msgctl d_msgctl
10947 eval $inlibc
10948
10949 : see if msgget exists
10950 set msgget d_msgget
10951 eval $inlibc
10952
10953 : see if msgsnd exists
10954 set msgsnd d_msgsnd
10955 eval $inlibc
10956
10957 : see if msgrcv exists
10958 set msgrcv d_msgrcv
10959 eval $inlibc
10960
10961 : see how much of the 'msg*(2)' library is present.
10962 h_msg=true
10963 echo " "
10964 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10965 *"$undef"*) h_msg=false;;
10966 esac
10967 case "$osname" in
10968 freebsd)
10969     case "`ipcs 2>&1`" in
10970     "SVID messages"*"not configured"*)
10971         echo "Your $osname does not have the msg*(2) configured." >&4
10972         h_msg=false
10973         val="$undef"
10974         set msgctl d_msgctl
10975         eval $setvar
10976         set msgget d_msgget
10977         eval $setvar
10978         set msgsnd d_msgsnd
10979         eval $setvar
10980         set msgrcv d_msgrcv
10981         eval $setvar
10982         ;;
10983     esac
10984     ;;
10985 esac
10986 : we could also check for sys/ipc.h ...
10987 if $h_msg && $test `./findhdr sys/msg.h`; then
10988         echo "You have the full msg*(2) library." >&4
10989         val="$define"
10990 else
10991         echo "You don't have the full msg*(2) library." >&4
10992         val="$undef"
10993 fi
10994 set d_msg
10995 eval $setvar
10996
10997
10998 echo " "
10999 echo "Checking to see if your system supports struct msghdr..." >&4
11000 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11001 eval $hasstruct
11002 case "$d_msghdr_s" in
11003 "$define")      echo "Yes, it does."   ;;
11004 *)              echo "No, it doesn't." ;;
11005 esac
11006
11007
11008 : see if msync exists
11009 set msync d_msync
11010 eval $inlibc
11011
11012 : see if munmap exists
11013 set munmap d_munmap
11014 eval $inlibc
11015
11016 : see if nice exists
11017 set nice d_nice
11018 eval $inlibc
11019
11020 : see if this is a langinfo.h system
11021 set langinfo.h i_langinfo
11022 eval $inhdr
11023
11024 : see if nl_langinfo exists
11025 set nl_langinfo d_nl_langinfo
11026 eval $inlibc
11027
11028 : check for length of character
11029 echo " "
11030 case "$charsize" in
11031 '')
11032         echo "Checking to see how big your characters are (hey, you never know)..." >&4
11033         $cat >try.c <<'EOCP'
11034 #include <stdio.h>
11035 int main()
11036 {
11037     printf("%d\n", (int)sizeof(char));
11038     exit(0);
11039 }
11040 EOCP
11041         set try
11042         if eval $compile_ok; then
11043                 dflt=`$run ./try`
11044         else
11045                 dflt='1'
11046                 echo "(I can't seem to compile the test program.  Guessing...)"
11047         fi
11048         ;;
11049 *)
11050         dflt="$charsize"
11051         ;;
11052 esac
11053 rp="What is the size of a character (in bytes)?"
11054 . ./myread
11055 charsize="$ans"
11056 $rm -f try.c try
11057
11058 : check for volatile keyword
11059 echo " "
11060 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11061 $cat >try.c <<'EOCP'
11062 int main()
11063 {
11064         typedef struct _goo_struct goo_struct;
11065         goo_struct * volatile goo = ((goo_struct *)0);
11066         struct _goo_struct {
11067                 long long_int;
11068                 int reg_int;
11069                 char char_var;
11070         };
11071         typedef unsigned short foo_t;
11072         char *volatile foo;
11073         volatile int bar;
11074         volatile foo_t blech;
11075         foo = foo;
11076 }
11077 EOCP
11078 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11079         val="$define"
11080         echo "Yup, it does."
11081 else
11082         val="$undef"
11083         echo "Nope, it doesn't."
11084 fi
11085 set d_volatile
11086 eval $setvar
11087 $rm -f try.*
11088
11089
11090 echo " "
11091 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11092
11093 case "$use64bitint:$d_quad:$quadtype" in
11094 define:define:?*)
11095         ivtype="$quadtype"
11096         uvtype="$uquadtype"
11097         ivsize=8
11098         uvsize=8
11099         ;;
11100 *)      ivtype="long"
11101         uvtype="unsigned long"
11102         ivsize=$longsize
11103         uvsize=$longsize
11104         ;;
11105 esac
11106
11107 case "$uselongdouble:$d_longdbl" in
11108 define:define)
11109         nvtype="long double"
11110         nvsize=$longdblsize
11111         ;;
11112 *)      nvtype=double
11113         nvsize=$doublesize
11114         ;;
11115 esac
11116
11117 $echo "(IV will be "$ivtype", $ivsize bytes)"
11118 $echo "(UV will be "$uvtype", $uvsize bytes)"
11119 $echo "(NV will be "$nvtype", $nvsize bytes)"
11120
11121 $cat >try.c <<EOCP
11122 #$i_inttypes I_INTTYPES
11123 #ifdef I_INTTYPES
11124 #include <inttypes.h>
11125 #endif
11126 #include <stdio.h>
11127 int main() {
11128 #ifdef INT8
11129    int8_t i =  INT8_MAX;
11130   uint8_t u = UINT8_MAX;
11131   printf("int8_t\n");
11132 #endif
11133 #ifdef INT16
11134    int16_t i =  INT16_MAX;
11135   uint16_t i = UINT16_MAX;
11136   printf("int16_t\n");
11137 #endif
11138 #ifdef INT32
11139    int32_t i =  INT32_MAX;
11140   uint32_t u = UINT32_MAX;
11141   printf("int32_t\n");
11142 #endif
11143 }
11144 EOCP
11145
11146 case "$i8type" in
11147 '')     case "$charsize" in
11148         1)      i8type=char
11149                 u8type="unsigned char"
11150                 i8size=$charsize
11151                 u8size=$charsize
11152                 ;;
11153         esac
11154         ;;
11155 esac
11156 case "$i8type" in
11157 '')     set try -DINT8
11158         if eval $compile; then
11159                 case "`$run ./try`" in
11160                 int8_t) i8type=int8_t
11161                         u8type=uint8_t
11162                         i8size=1
11163                         u8size=1
11164                         ;;
11165                 esac
11166         fi
11167         ;;
11168 esac
11169 case "$i8type" in
11170 '')     if $test $charsize -ge 1; then
11171                 i8type=char
11172                 u8type="unsigned char"
11173                 i8size=$charsize
11174                 u8size=$charsize
11175         fi
11176         ;;
11177 esac
11178
11179 case "$i16type" in
11180 '')     case "$shortsize" in
11181         2)      i16type=short
11182                 u16type="unsigned short"
11183                 i16size=$shortsize
11184                 u16size=$shortsize
11185                 ;;
11186         esac
11187         ;;
11188 esac
11189 case "$i16type" in
11190 '')     set try -DINT16
11191         if eval $compile; then
11192                 case "`$run ./try`" in
11193                 int16_t)
11194                         i16type=int16_t
11195                         u16type=uint16_t
11196                         i16size=2
11197                         u16size=2
11198                         ;;
11199                 esac
11200         fi
11201         ;;
11202 esac
11203 case "$i16type" in
11204 '')     if $test $shortsize -ge 2; then
11205                 i16type=short
11206                 u16type="unsigned short"
11207                 i16size=$shortsize
11208                 u16size=$shortsize
11209         fi
11210         ;;
11211 esac
11212
11213 case "$i32type" in
11214 '')     case "$longsize" in
11215         4)      i32type=long
11216                 u32type="unsigned long"
11217                 i32size=$longsize
11218                 u32size=$longsize
11219                 ;;
11220         *)      case "$intsize" in
11221                 4)      i32type=int
11222                         u32type="unsigned int"
11223                         i32size=$intsize
11224                         u32size=$intsize
11225                         ;;
11226                 esac
11227                 ;;
11228         esac
11229         ;;
11230 esac
11231 case "$i32type" in
11232 '')     set try -DINT32
11233         if eval $compile; then
11234                 case "`$run ./try`" in
11235                 int32_t)
11236                         i32type=int32_t
11237                         u32type=uint32_t
11238                         i32size=4
11239                         u32size=4
11240                         ;;
11241                 esac
11242         fi
11243         ;;
11244 esac
11245 case "$i32type" in
11246 '')     if $test $intsize -ge 4; then
11247                 i32type=int
11248                 u32type="unsigned int"
11249                 i32size=$intsize
11250                 u32size=$intsize
11251         fi
11252         ;;
11253 esac
11254
11255 case "$i64type" in
11256 '')     case "$d_quad:$quadtype" in
11257         define:?*)
11258                 i64type="$quadtype"
11259                 u64type="$uquadtype"
11260                 i64size=8
11261                 u64size=8
11262                 ;;
11263         esac
11264         ;;
11265 esac
11266
11267 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11268 : volatile so that the compiler has to store it out to memory.
11269 if test X"$d_volatile" = X"$define"; then
11270         volatile=volatile
11271 fi
11272 $cat <<EOP >try.c
11273 #include <stdio.h>
11274 #include <sys/types.h>
11275 #include <signal.h>
11276 #ifdef SIGFPE
11277 $volatile int bletched = 0;
11278 $signal_t blech(s) int s; { bletched = 1; }
11279 #endif
11280 int main() {
11281     $uvtype u = 0;
11282     $nvtype d;
11283     int     n = 8 * $uvsize;
11284     int     i;
11285 #ifdef SIGFPE
11286     signal(SIGFPE, blech);
11287 #endif
11288
11289     for (i = 0; i < n; i++) {
11290       u = u << 1 | ($uvtype)1;
11291       d = ($nvtype)u;
11292       if (($uvtype)d != u)
11293         break;
11294       if (d <= 0)
11295         break;
11296       d = ($nvtype)(u - 1);
11297       if (($uvtype)d != (u - 1))
11298         break;
11299 #ifdef SIGFPE
11300       if (bletched) {
11301         break;
11302 #endif
11303       } 
11304     }
11305     printf("%d\n", ((i == n) ? -n : i));
11306     exit(0);
11307 }
11308 EOP
11309 set try
11310
11311 d_nv_preserves_uv="$undef"
11312 if eval $compile; then
11313         d_nv_preserves_uv_bits="`$run ./try`"
11314 fi
11315 case "$d_nv_preserves_uv_bits" in
11316 \-[1-9]*)       
11317         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11318         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11319         d_nv_preserves_uv="$define"
11320         ;;
11321 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11322         d_nv_preserves_uv="$undef" ;;
11323 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11324         d_nv_preserves_uv_bits="$undef" ;;
11325 esac
11326
11327 $rm -f try.* try
11328
11329
11330 : check for off64_t
11331 echo " "
11332 echo "Checking to see if you have off64_t..." >&4
11333 $cat >try.c <<EOCP
11334 #include <sys/types.h>
11335 #include <unistd.h>
11336 int main() { off64_t x = 7; }
11337 EOCP
11338 set try
11339 if eval $compile; then
11340         val="$define"
11341         echo "You have off64_t."
11342 else
11343         val="$undef"
11344         echo "You do not have off64_t."
11345         case "$lseeksize" in
11346         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11347         esac
11348 fi
11349 $rm -f try.* try
11350 set d_off64_t
11351 eval $setvar
11352
11353 : see if POSIX threads are available
11354 set pthread.h i_pthread
11355 eval $inhdr
11356
11357
11358
11359
11360 : how to create joinable pthreads
11361 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11362         echo " "
11363         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11364         $cat >try.c <<'EOCP'
11365 #include <pthread.h>
11366 int main() {
11367     int detachstate = JOINABLE;
11368 }
11369 EOCP
11370         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11371         if eval $compile; then
11372                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11373                 val="$undef" # Yes, undef.
11374                 set d_old_pthread_create_joinable
11375                 eval $setvar
11376                 val=""
11377                 set old_pthread_create_joinable
11378                 eval $setvar
11379         else
11380                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11381                 if eval $compile; then
11382                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11383                         val="$define"
11384                         set d_old_pthread_create_joinable
11385                         eval $setvar
11386                         val=PTHREAD_CREATE_UNDETACHED
11387                         set old_pthread_create_joinable
11388                         eval $setvar
11389                 else            
11390                         set try -DJOINABLE=__UNDETACHED
11391                         if eval $compile; then
11392                                 echo "You seem to use __UNDETACHED." >&4
11393                                 val="$define"
11394                                 set d_old_pthread_create_joinable
11395                                 eval $setvar
11396                                 val=__UNDETACHED
11397                                 set old_pthread_create_joinable
11398                                 eval $setvar
11399                         else
11400                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11401                                 val="$define"
11402                                 set d_old_pthread_create_joinable
11403                                 eval $setvar
11404                                 val=0
11405                                 set old_pthread_create_joinable
11406                                 eval $setvar
11407                         fi
11408                 fi
11409         fi
11410         $rm -f try try.*
11411 else
11412     d_old_pthread_create_joinable="$undef"
11413     old_pthread_create_joinable=""
11414 fi
11415
11416 : see if pause exists
11417 set pause d_pause
11418 eval $inlibc
11419
11420 : see if pipe exists
11421 set pipe d_pipe
11422 eval $inlibc
11423
11424 : see if poll exists
11425 set poll d_poll
11426 eval $inlibc
11427
11428 : see if readlink exists
11429 set readlink d_readlink
11430 eval $inlibc
11431
11432 echo " "
11433 echo "Checking for /proc/self/exe..." >&4
11434 val="$undef"
11435 case "$d_readlink" in
11436 "$define")
11437         if $issymlink /proc/self/exe ; then
11438                 $ls -l /proc/self/exe > reflect
11439                 if $contains $ls reflect >/dev/null 2>&1; then
11440                         val="$define"
11441                         echo "You have Linux-like /proc/self/exe."
11442                 fi
11443                 $rm reflect
11444         fi
11445         ;;
11446 esac
11447 set d_procselfexe
11448 eval $setvar
11449
11450 : see if pthread_atfork exists
11451 set pthread_atfork d_pthread_atfork
11452 eval $inlibc
11453
11454
11455 : see whether the various POSIXish _yields exist
11456 $cat >try.c <<EOP
11457 #include <pthread.h>
11458 #include <stdio.h>
11459 int main() {
11460 #ifdef SCHED_YIELD
11461         sched_yield();
11462 #else
11463 #ifdef PTHREAD_YIELD
11464         pthread_yield();
11465 #else
11466 #ifdef PTHREAD_YIELD_NULL
11467         pthread_yield(NULL);
11468 #endif
11469 #endif
11470 #endif
11471 }
11472 EOP
11473 : see if sched_yield exists
11474 set try -DSCHED_YIELD
11475 if eval $compile; then
11476     val="$define"
11477     sched_yield='sched_yield()'
11478 else
11479     val="$undef"
11480 fi
11481 case "$usethreads" in
11482 $define)
11483         case "$val" in
11484         $define) echo 'sched_yield() found.' >&4        ;;
11485         *)       echo 'sched_yield() NOT found.' >&4    ;;
11486         esac
11487 esac
11488 set d_sched_yield
11489 eval $setvar
11490
11491 : see if pthread_yield exists
11492 set try -DPTHREAD_YIELD
11493 if eval $compile; then
11494     val="$define"
11495     case "$sched_yield" in
11496     '') sched_yield='pthread_yield()' ;;
11497     esac
11498 else
11499     set try -DPTHREAD_YIELD_NULL
11500     if eval $compile; then
11501         val="$define"
11502         case "$sched_yield" in
11503         '') sched_yield='pthread_yield(NULL)' ;;
11504         esac
11505     else
11506         val="$undef"
11507     fi
11508 fi
11509 case "$usethreads" in
11510 $define)
11511         case "$val" in
11512         $define) echo 'pthread_yield() found.' >&4      ;;
11513         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11514         esac
11515         ;;
11516 esac
11517 set d_pthread_yield
11518 eval $setvar
11519
11520 case "$sched_yield" in
11521 '') sched_yield=undef ;;
11522 esac
11523
11524 $rm -f try try.*
11525
11526 : see if this is a pwd.h system
11527 set pwd.h i_pwd
11528 eval $inhdr
11529
11530 case "$i_pwd" in
11531 $define)
11532         xxx=`./findhdr pwd.h`
11533         $cppstdin $cppflags $cppminus < $xxx >$$.h
11534
11535         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11536                 val="$define"
11537         else
11538                 val="$undef"
11539         fi
11540         set d_pwquota
11541         eval $setvar
11542
11543         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11544                 val="$define"
11545         else
11546                 val="$undef"
11547         fi
11548         set d_pwage
11549         eval $setvar
11550
11551         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11552                 val="$define"
11553         else
11554                 val="$undef"
11555         fi
11556         set d_pwchange
11557         eval $setvar
11558
11559         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11560                 val="$define"
11561         else
11562                 val="$undef"
11563         fi
11564         set d_pwclass
11565         eval $setvar
11566
11567         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11568                 val="$define"
11569         else
11570                 val="$undef"
11571         fi
11572         set d_pwexpire
11573         eval $setvar
11574
11575         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11576                 val="$define"
11577         else
11578                 val="$undef"
11579         fi
11580         set d_pwcomment
11581         eval $setvar
11582
11583         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11584                 val="$define"
11585         else
11586                 val="$undef"
11587         fi
11588         set d_pwgecos
11589         eval $setvar
11590
11591         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11592                 val="$define"
11593         else
11594                 val="$undef"
11595         fi
11596         set d_pwpasswd
11597         eval $setvar
11598
11599         $rm -f $$.h
11600         ;;
11601 *)
11602         val="$undef"; 
11603         set d_pwquota; eval $setvar
11604         set d_pwage; eval $setvar
11605         set d_pwchange; eval $setvar
11606         set d_pwclass; eval $setvar
11607         set d_pwexpire; eval $setvar
11608         set d_pwcomment; eval $setvar
11609         set d_pwgecos; eval $setvar
11610         set d_pwpasswd; eval $setvar
11611         ;;
11612 esac
11613
11614 : see if readdir and friends exist
11615 set readdir d_readdir
11616 eval $inlibc
11617 set seekdir d_seekdir
11618 eval $inlibc
11619 set telldir d_telldir
11620 eval $inlibc
11621 set rewinddir d_rewinddir
11622 eval $inlibc
11623
11624 : see if readv exists
11625 set readv d_readv
11626 eval $inlibc
11627
11628 : see if recvmsg exists
11629 set recvmsg d_recvmsg
11630 eval $inlibc
11631
11632 : see if rename exists
11633 set rename d_rename
11634 eval $inlibc
11635
11636 : see if rmdir exists
11637 set rmdir d_rmdir
11638 eval $inlibc
11639
11640 : see if memory.h is available.
11641 val=''
11642 set memory.h val
11643 eval $inhdr
11644
11645 : See if it conflicts with string.h
11646 case "$val" in
11647 $define)
11648         case "$strings" in
11649         '') ;;
11650         *)
11651                 $cppstdin $cppflags $cppminus < $strings > mem.h
11652                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11653                         echo " "
11654                         echo "We won't be including <memory.h>."
11655                         val="$undef"
11656                 fi
11657                 $rm -f mem.h
11658                 ;;
11659         esac
11660 esac
11661 set i_memory
11662 eval $setvar
11663
11664 : can bcopy handle overlapping blocks?
11665 echo " "
11666 val="$undef"
11667 case "$d_memmove" in
11668 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11669 *)      case "$d_bcopy" in
11670         "$define")
11671                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11672                 $cat >try.c <<EOCP
11673 #$i_memory I_MEMORY
11674 #$i_stdlib I_STDLIB
11675 #$i_string I_STRING
11676 #$i_unistd I_UNISTD
11677 EOCP
11678         $cat >>try.c <<'EOCP'
11679 #include <stdio.h>
11680 #ifdef I_MEMORY
11681 #  include <memory.h>
11682 #endif
11683 #ifdef I_STDLIB
11684 #  include <stdlib.h>
11685 #endif
11686 #ifdef I_STRING
11687 #  include <string.h>
11688 #else
11689 #  include <strings.h>
11690 #endif
11691 #ifdef I_UNISTD
11692 #  include <unistd.h>  /* Needed for NetBSD */
11693 #endif
11694 int main()
11695 {
11696 char buf[128], abc[128];
11697 char *b;
11698 int len;
11699 int off;
11700 int align;
11701
11702 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11703    try to store the string in read-only memory. */
11704 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11705
11706 for (align = 7; align >= 0; align--) {
11707         for (len = 36; len; len--) {
11708                 b = buf+align;
11709                 bcopy(abc, b, len);
11710                 for (off = 1; off <= len; off++) {
11711                         bcopy(b, b+off, len);
11712                         bcopy(b+off, b, len);
11713                         if (bcmp(b, abc, len))
11714                                 exit(1);
11715                 }
11716         }
11717 }
11718 exit(0);
11719 }
11720 EOCP
11721                 set try
11722                 if eval $compile_ok; then
11723                         if ./try 2>/dev/null; then
11724                                 echo "Yes, it can."
11725                                 val="$define"
11726                         else
11727                                 echo "It can't, sorry."
11728                         fi
11729                 else
11730                         echo "(I can't compile the test program, so we'll assume not...)"
11731                 fi
11732                 ;;
11733         esac
11734         $rm -f try.* try core
11735         ;;
11736 esac
11737 set d_safebcpy
11738 eval $setvar
11739
11740 : can memcpy handle overlapping blocks?
11741 echo " "
11742 val="$undef"
11743 case "$d_memmove" in
11744 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11745 *)      case "$d_memcpy" in
11746         "$define")
11747                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11748                 $cat >try.c <<EOCP
11749 #$i_memory I_MEMORY
11750 #$i_stdlib I_STDLIB
11751 #$i_string I_STRING
11752 #$i_unistd I_UNISTD
11753 EOCP
11754         $cat >>try.c <<'EOCP'
11755 #include <stdio.h>
11756 #ifdef I_MEMORY
11757 #  include <memory.h>
11758 #endif
11759 #ifdef I_STDLIB
11760 #  include <stdlib.h>
11761 #endif
11762 #ifdef I_STRING
11763 #  include <string.h>
11764 #else
11765 #  include <strings.h>
11766 #endif
11767 #ifdef I_UNISTD
11768 #  include <unistd.h>  /* Needed for NetBSD */
11769 #endif
11770 int main()
11771 {
11772 char buf[128], abc[128];
11773 char *b;
11774 int len;
11775 int off;
11776 int align;
11777
11778 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11779    try to store the string in read-only memory. */
11780 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11781
11782 for (align = 7; align >= 0; align--) {
11783         for (len = 36; len; len--) {
11784                 b = buf+align;
11785                 memcpy(b, abc, len);
11786                 for (off = 1; off <= len; off++) {
11787                         memcpy(b+off, b, len);
11788                         memcpy(b, b+off, len);
11789                         if (memcmp(b, abc, len))
11790                                 exit(1);
11791                 }
11792         }
11793 }
11794 exit(0);
11795 }
11796 EOCP
11797                 set try
11798                 if eval $compile_ok; then
11799                         if ./try 2>/dev/null; then
11800                                 echo "Yes, it can."
11801                                 val="$define"
11802                         else
11803                                 echo "It can't, sorry."
11804                         fi
11805                 else
11806                         echo "(I can't compile the test program, so we'll assume not...)"
11807                 fi
11808                 ;;
11809         esac
11810         $rm -f try.* try core
11811         ;;
11812 esac
11813 set d_safemcpy
11814 eval $setvar
11815
11816 : can memcmp be trusted to compare relative magnitude?
11817 val="$undef"
11818 case "$d_memcmp" in
11819 "$define")
11820         echo " "
11821         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11822         $cat >try.c <<EOCP
11823 #$i_memory I_MEMORY
11824 #$i_stdlib I_STDLIB
11825 #$i_string I_STRING
11826 #$i_unistd I_UNISTD
11827 EOCP
11828         $cat >>try.c <<'EOCP'
11829 #include <stdio.h>
11830 #ifdef I_MEMORY
11831 #  include <memory.h>
11832 #endif
11833 #ifdef I_STDLIB
11834 #  include <stdlib.h>
11835 #endif
11836 #ifdef I_STRING
11837 #  include <string.h>
11838 #else
11839 #  include <strings.h>
11840 #endif
11841 #ifdef I_UNISTD
11842 #  include <unistd.h>  /* Needed for NetBSD */
11843 #endif
11844 int main()
11845 {
11846 char a = -1;
11847 char b = 0;
11848 if ((a < b) && memcmp(&a, &b, 1) < 0)
11849         exit(1);
11850 exit(0);
11851 }
11852 EOCP
11853         set try
11854         if eval $compile_ok; then
11855                 if $run ./try 2>/dev/null; then
11856                         echo "Yes, it can."
11857                         val="$define"
11858                 else
11859                         echo "No, it can't (it uses signed chars)."
11860                 fi
11861         else
11862                 echo "(I can't compile the test program, so we'll assume not...)"
11863         fi
11864         ;;
11865 esac
11866 $rm -f try.* try core
11867 set d_sanemcmp
11868 eval $setvar
11869
11870 : see if prototype for sbrk is available
11871 echo " "
11872 set d_sbrkproto sbrk $i_unistd unistd.h
11873 eval $hasproto
11874
11875 : see if select exists
11876 set select d_select
11877 eval $inlibc
11878
11879 : see if semctl exists
11880 set semctl d_semctl
11881 eval $inlibc
11882
11883 : see if semget exists
11884 set semget d_semget
11885 eval $inlibc
11886
11887 : see if semop exists
11888 set semop d_semop
11889 eval $inlibc
11890
11891 : see how much of the 'sem*(2)' library is present.
11892 h_sem=true
11893 echo " "
11894 case "$d_semctl$d_semget$d_semop" in
11895 *"$undef"*) h_sem=false;;
11896 esac
11897 case "$osname" in
11898 freebsd)
11899     case "`ipcs 2>&1`" in
11900     "SVID messages"*"not configured"*)
11901         echo "Your $osname does not have the sem*(2) configured." >&4
11902         h_sem=false
11903         val="$undef"
11904         set semctl d_semctl
11905         eval $setvar
11906         set semget d_semget
11907         eval $setvar
11908         set semop d_semop
11909         eval $setvar
11910         ;;
11911     esac
11912     ;;
11913 esac
11914 : we could also check for sys/ipc.h ...
11915 if $h_sem && $test `./findhdr sys/sem.h`; then
11916         echo "You have the full sem*(2) library." >&4
11917         val="$define"
11918 else
11919         echo "You don't have the full sem*(2) library." >&4
11920         val="$undef"
11921 fi
11922 set d_sem
11923 eval $setvar
11924
11925 : see whether sys/sem.h defines union semun
11926 echo " "
11927 $cat > try.c <<'END'
11928 #include <sys/types.h>
11929 #include <sys/ipc.h>
11930 #include <sys/sem.h>
11931 int main () { union semun semun; semun.buf = 0; }
11932 END
11933 set try
11934 if eval $compile; then
11935     echo "You have union semun in <sys/sem.h>." >&4
11936     val="$define"
11937 else
11938     echo "You do not have union semun in <sys/sem.h>." >&4
11939     val="$undef"
11940 fi
11941 $rm -f try try.c try.h
11942 set d_union_semun
11943 eval $setvar
11944
11945 : see how to do semctl IPC_STAT
11946 case "$d_sem" in
11947 $define)
11948     : see whether semctl IPC_STAT can use union semun
11949     echo " "
11950     $cat > try.h <<END
11951 #ifndef S_IRUSR
11952 #   ifdef S_IREAD
11953 #       define S_IRUSR S_IREAD
11954 #       define S_IWUSR S_IWRITE
11955 #       define S_IXUSR S_IEXEC
11956 #   else
11957 #       define S_IRUSR 0400
11958 #       define S_IWUSR 0200
11959 #       define S_IXUSR 0100
11960 #   endif
11961 #   define S_IRGRP (S_IRUSR>>3)
11962 #   define S_IWGRP (S_IWUSR>>3)
11963 #   define S_IXGRP (S_IXUSR>>3)
11964 #   define S_IROTH (S_IRUSR>>6)
11965 #   define S_IWOTH (S_IWUSR>>6)
11966 #   define S_IXOTH (S_IXUSR>>6)
11967 #endif
11968 #ifndef S_IRWXU
11969 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11970 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11971 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11972 #endif
11973 END
11974
11975     $cat > try.c <<END
11976 #include <sys/types.h>
11977 #include <sys/ipc.h>
11978 #include <sys/sem.h>
11979 #include <sys/stat.h>
11980 #include <stdio.h>
11981 #include <errno.h>
11982 #include "try.h"
11983 #ifndef errno
11984 extern int errno;
11985 #endif
11986 #$d_union_semun HAS_UNION_SEMUN
11987 int main() {
11988     union semun
11989 #ifndef HAS_UNION_SEMUN
11990     {
11991         int val;
11992         struct semid_ds *buf;
11993         unsigned short *array;
11994     }
11995 #endif
11996     arg;
11997     int sem, st;
11998
11999 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12000     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12001     if (sem > -1) {
12002         struct semid_ds argbuf;
12003         arg.buf = &argbuf;
12004 #       ifdef IPC_STAT
12005         st = semctl(sem, 0, IPC_STAT, arg);
12006         if (st == 0)
12007             printf("semun\n");
12008         else
12009 #       endif /* IPC_STAT */
12010             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12011 #       ifdef IPC_RMID
12012         if (semctl(sem, 0, IPC_RMID, arg) != 0)
12013 #       endif /* IPC_RMID */
12014             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12015     } else
12016 #endif /* IPC_PRIVATE && ... */
12017         printf("semget failed: errno = %d\n", errno);
12018   return 0;
12019 }
12020 END
12021     val="$undef"
12022     set try
12023     if eval $compile; then
12024         xxx=`$run ./try`
12025         case "$xxx" in
12026         semun) val="$define" ;;
12027         esac
12028     fi
12029     $rm -f try try.c
12030     set d_semctl_semun
12031     eval $setvar
12032     case "$d_semctl_semun" in
12033     $define)
12034         echo "You can use union semun for semctl IPC_STAT." >&4
12035         also='also'
12036         ;;
12037     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
12038         also=''
12039         ;;
12040     esac
12041
12042     : see whether semctl IPC_STAT can use struct semid_ds pointer
12043     $cat > try.c <<'END'
12044 #include <sys/types.h>
12045 #include <sys/ipc.h>
12046 #include <sys/sem.h>
12047 #include <sys/stat.h>
12048 #include "try.h"
12049 #include <stdio.h>
12050 #include <errno.h>
12051 #ifndef errno
12052 extern int errno;
12053 #endif
12054 int main() {
12055     struct semid_ds arg;
12056     int sem, st;
12057
12058 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
12059     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12060     if (sem > -1) {
12061 #       ifdef IPC_STAT
12062         st = semctl(sem, 0, IPC_STAT, &arg);
12063         if (st == 0)
12064             printf("semid_ds\n");
12065         else
12066 #       endif /* IPC_STAT */
12067             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12068 #       ifdef IPC_RMID
12069         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12070 #       endif /* IPC_RMID */
12071             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12072     } else
12073 #endif /* IPC_PRIVATE && ... */
12074         printf("semget failed: errno = %d\n", errno);
12075
12076     return 0;
12077 }
12078 END
12079     val="$undef"
12080     set try
12081     if eval $compile; then
12082         xxx=`$run ./try`
12083         case "$xxx" in
12084         semid_ds) val="$define" ;;
12085         esac
12086     fi
12087     $rm -f try try.c
12088     set d_semctl_semid_ds
12089     eval $setvar
12090     case "$d_semctl_semid_ds" in
12091     $define)
12092         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12093         ;;
12094     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12095         ;;
12096     esac
12097     $rm -f try.h
12098     ;;
12099 *)  val="$undef"
12100
12101     # We do not have the full sem*(2) library, so assume we can not
12102     # use either.
12103
12104     set d_semctl_semun
12105     eval $setvar
12106
12107     set d_semctl_semid_ds
12108     eval $setvar
12109     ;;
12110 esac
12111
12112 : see if sendmsg exists
12113 set sendmsg d_sendmsg
12114 eval $inlibc
12115
12116 : see if setegid exists
12117 set setegid d_setegid
12118 eval $inlibc
12119
12120 : see if seteuid exists
12121 set seteuid d_seteuid
12122 eval $inlibc
12123
12124 : see if setgrent exists
12125 set setgrent d_setgrent
12126 eval $inlibc
12127
12128 : see if sethostent exists
12129 set sethostent d_sethent
12130 eval $inlibc
12131
12132 : see if setitimer exists
12133 set setitimer d_setitimer
12134 eval $inlibc
12135
12136 : see if setlinebuf exists
12137 set setlinebuf d_setlinebuf
12138 eval $inlibc
12139
12140 : see if setlocale exists
12141 set setlocale d_setlocale
12142 eval $inlibc
12143
12144 : see if setnetent exists
12145 set setnetent d_setnent
12146 eval $inlibc
12147
12148 : see if setprotoent exists
12149 set setprotoent d_setpent
12150 eval $inlibc
12151
12152 : see if setpgid exists
12153 set setpgid d_setpgid
12154 eval $inlibc
12155
12156 : see if setpgrp2 exists
12157 set setpgrp2 d_setpgrp2
12158 eval $inlibc
12159
12160 : see if setpriority exists
12161 set setpriority d_setprior
12162 eval $inlibc
12163
12164 : see if setproctitle exists
12165 set setproctitle d_setproctitle
12166 eval $inlibc
12167
12168 : see if setpwent exists
12169 set setpwent d_setpwent
12170 eval $inlibc
12171
12172 : see if setregid exists
12173 set setregid d_setregid
12174 eval $inlibc
12175 set setresgid d_setresgid
12176 eval $inlibc
12177
12178 : see if setreuid exists
12179 set setreuid d_setreuid
12180 eval $inlibc
12181 set setresuid d_setresuid
12182 eval $inlibc
12183
12184 : see if setrgid exists
12185 set setrgid d_setrgid
12186 eval $inlibc
12187
12188 : see if setruid exists
12189 set setruid d_setruid
12190 eval $inlibc
12191
12192 : see if setservent exists
12193 set setservent d_setsent
12194 eval $inlibc
12195
12196 : see if setsid exists
12197 set setsid d_setsid
12198 eval $inlibc
12199
12200 : see if setvbuf exists
12201 set setvbuf d_setvbuf
12202 eval $inlibc
12203
12204 : see if sfio.h is available
12205 set sfio.h i_sfio
12206 eval $inhdr
12207
12208
12209 : see if sfio library is available
12210 case "$i_sfio" in
12211 $define)
12212         val=''
12213         set sfreserve val
12214         eval $inlibc
12215         ;;
12216 *)
12217         val="$undef"
12218         ;;
12219 esac
12220 : Ok, but do we want to use it.
12221 case "$val" in
12222 $define)
12223         case "$usesfio" in
12224         true|$define|[yY]*) dflt='y';;
12225         *) dflt='n';;
12226         esac
12227         echo "$package can use the sfio library, but it is experimental."
12228         case "$useperlio" in
12229         "$undef")
12230             echo "For sfio also the PerlIO abstraction layer is needed."
12231             echo "Earlier you said you wouldn't want that."
12232             ;;
12233         esac
12234         rp="You seem to have sfio available, do you want to try using it?"
12235         . ./myread
12236         case "$ans" in
12237         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12238                 useperlio="$define"
12239                 val="$define"
12240                 ;;
12241         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12242                 val="$undef"
12243                 ;;
12244         esac
12245         ;;
12246 *)      case "$usesfio" in
12247         true|$define|[yY]*)
12248                 echo "Sorry, cannot find sfio on this machine." >&4
12249                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12250                 val="$undef"
12251                 ;;
12252         esac
12253         ;;
12254 esac
12255 set d_sfio
12256 eval $setvar
12257 case "$d_sfio" in
12258 $define) usesfio='true';;
12259 *) usesfio='false';;
12260 esac
12261 case "$d_sfio" in
12262 $define) ;;
12263 *)      : Remove sfio from list of libraries to use
12264         case "$libs" in
12265         *-lsfio*)
12266                 echo "Removing unneeded -lsfio from library list" >&4
12267                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12268                 shift
12269                 libs="$*"
12270                 echo "libs = $libs" >&4
12271                 ;;
12272         esac
12273 ;;
12274 esac
12275
12276
12277 : see if shmctl exists
12278 set shmctl d_shmctl
12279 eval $inlibc
12280
12281 : see if shmget exists
12282 set shmget d_shmget
12283 eval $inlibc
12284
12285 : see if shmat exists
12286 set shmat d_shmat
12287 eval $inlibc
12288 : see what shmat returns
12289 case "$d_shmat" in
12290 "$define")
12291         $cat >shmat.c <<'END'
12292 #include <sys/shm.h>
12293 void *shmat();
12294 END
12295         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12296                 shmattype='void *'
12297         else
12298                 shmattype='char *'
12299         fi
12300         echo "and it returns ($shmattype)." >&4
12301         : see if a prototype for shmat is available
12302         xxx=`./findhdr sys/shm.h`
12303         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12304         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12305                 val="$define"
12306         else
12307                 val="$undef"
12308         fi
12309         $rm -f shmat.[co]
12310         ;;
12311 *)
12312         val="$undef"
12313         ;;
12314 esac
12315 set d_shmatprototype
12316 eval $setvar
12317
12318 : see if shmdt exists
12319 set shmdt d_shmdt
12320 eval $inlibc
12321
12322 : see how much of the 'shm*(2)' library is present.
12323 h_shm=true
12324 echo " "
12325 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12326 *"$undef"*) h_shm=false;;
12327 esac
12328 case "$osname" in
12329 freebsd)
12330     case "`ipcs 2>&1`" in
12331     "SVID shared memory"*"not configured"*)
12332         echo "Your $osname does not have the shm*(2) configured." >&4
12333         h_shm=false
12334         val="$undef"
12335         set shmctl d_shmctl
12336         evat $setvar
12337         set shmget d_shmget
12338         evat $setvar
12339         set shmat d_shmat
12340         evat $setvar
12341         set shmdt d_shmdt
12342         evat $setvar
12343         ;;
12344     esac
12345     ;;
12346 esac
12347 : we could also check for sys/ipc.h ...
12348 if $h_shm && $test `./findhdr sys/shm.h`; then
12349         echo "You have the full shm*(2) library." >&4
12350         val="$define"
12351 else
12352         echo "You don't have the full shm*(2) library." >&4
12353         val="$undef"
12354 fi
12355 set d_shm
12356 eval $setvar
12357
12358 echo " "
12359 : see if we have sigaction
12360 if set sigaction val -f d_sigaction; eval $csym; $val; then
12361         echo 'sigaction() found.' >&4
12362         $cat > try.c <<'EOP'
12363 #include <stdio.h>
12364 #include <sys/types.h>
12365 #include <signal.h>
12366 int main()
12367 {
12368     struct sigaction act, oact;
12369     act.sa_flags = 0;
12370     oact.sa_handler = 0;
12371     /* so that act and oact are used */
12372     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12373 }
12374 EOP
12375         set try
12376         if eval $compile_ok; then
12377                 val="$define"
12378         else
12379                 echo "But you don't seem to have a useable struct sigaction." >&4
12380                 val="$undef"
12381         fi
12382 else
12383         echo 'sigaction NOT found.' >&4
12384         val="$undef"
12385 fi
12386 set d_sigaction; eval $setvar
12387 $rm -f try try$_o try.c
12388
12389 : see if sigprocmask exists
12390 set sigprocmask d_sigprocmask
12391 eval $inlibc
12392
12393 : see if sigsetjmp exists
12394 echo " "
12395 case "$d_sigsetjmp" in
12396 '')
12397         $cat >try.c <<'EOP'
12398 #include <setjmp.h>
12399 sigjmp_buf env;
12400 int set = 1;
12401 int main()
12402 {
12403         if (sigsetjmp(env,1))
12404                 exit(set);
12405         set = 0;
12406         siglongjmp(env, 1);
12407         exit(1);
12408 }
12409 EOP
12410         set try
12411         if eval $compile; then
12412                 if $run ./try >/dev/null 2>&1; then
12413                         echo "POSIX sigsetjmp found." >&4
12414                         val="$define"
12415                 else
12416                         $cat >&4 <<EOM
12417 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12418 I'll ignore them.
12419 EOM
12420                         val="$undef"
12421                 fi
12422         else
12423                 echo "sigsetjmp not found." >&4
12424                 val="$undef"
12425         fi
12426         ;;
12427 *) val="$d_sigsetjmp"
12428         case "$d_sigsetjmp" in
12429         $define) echo "POSIX sigsetjmp found." >&4;;
12430         $undef) echo "sigsetjmp not found." >&4;;
12431         esac
12432         ;;
12433 esac
12434 set d_sigsetjmp
12435 eval $setvar
12436 $rm -f try.c try
12437
12438 : see if sockatmark exists
12439 set sockatmark d_sockatmark
12440 eval $inlibc
12441
12442 : see if prototype for sockatmark is available
12443 echo " "
12444 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12445 eval $hasproto
12446
12447 : see if socks5_init exists
12448 set socks5_init d_socks5_init
12449 eval $inlibc
12450
12451 : see if prototype for setresgid is available
12452 echo " "
12453 set d_sresgproto setresgid $i_unistd unistd.h
12454 eval $hasproto
12455
12456 : see if prototype for setresuid is available
12457 echo " "
12458 set d_sresuproto setresuid $i_unistd unistd.h
12459 eval $hasproto
12460
12461 : see if sys/stat.h is available
12462 set sys/stat.h i_sysstat
12463 eval $inhdr
12464
12465
12466 : see if stat knows about block sizes
12467 echo " "
12468 echo "Checking to see if your struct stat has st_blocks field..." >&4
12469 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12470 eval $hasfield
12471
12472
12473 : see if this is a sys/vfs.h system
12474 set sys/vfs.h i_sysvfs
12475 eval $inhdr
12476
12477
12478 : see if this is a sys/statfs.h system
12479 set sys/statfs.h i_sysstatfs
12480 eval $inhdr
12481
12482
12483 echo " "
12484 echo "Checking to see if your system supports struct statfs..." >&4
12485 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
12486 eval $hasstruct
12487 case "$d_statfs_s" in
12488 "$define")      echo "Yes, it does."   ;;
12489 *)              echo "No, it doesn't." ;;
12490 esac
12491
12492
12493
12494 : see if struct statfs knows about f_flags
12495 case "$d_statfs_s" in
12496 define) 
12497         echo " "
12498         echo "Checking to see if your struct statfs has f_flags field..." >&4
12499         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
12500         eval $hasfield
12501         ;;
12502 *)      val="$undef"
12503         set d_statfs_f_flags
12504         eval $setvar
12505         ;;
12506 esac
12507 case "$d_statfs_f_flags" in
12508 "$define")      echo "Yes, it does."   ;;
12509 *)              echo "No, it doesn't." ;;
12510 esac
12511
12512 : see if _ptr and _cnt from stdio act std
12513 echo " "
12514
12515 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12516         echo "(Looks like you have stdio.h from BSD.)"
12517         case "$stdio_ptr" in
12518         '') stdio_ptr='((fp)->_p)'
12519                 ptr_lval=$define
12520                 ;;
12521         *)      ptr_lval=$d_stdio_ptr_lval;;
12522         esac
12523         case "$stdio_cnt" in
12524         '') stdio_cnt='((fp)->_r)'
12525                 cnt_lval=$define
12526                 ;;
12527         *)      cnt_lval=$d_stdio_cnt_lval;;
12528         esac
12529         case "$stdio_base" in
12530         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12531         esac
12532         case "$stdio_bufsiz" in
12533         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12534         esac
12535 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12536         echo "(Looks like you have stdio.h from Linux.)"
12537         case "$stdio_ptr" in
12538         '') stdio_ptr='((fp)->_IO_read_ptr)'
12539                 ptr_lval=$define
12540                 ;;
12541         *)      ptr_lval=$d_stdio_ptr_lval;;
12542         esac
12543         case "$stdio_cnt" in
12544         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12545                 cnt_lval=$undef
12546                 ;;
12547         *)      cnt_lval=$d_stdio_cnt_lval;;
12548         esac
12549         case "$stdio_base" in
12550         '') stdio_base='((fp)->_IO_read_base)';;
12551         esac
12552         case "$stdio_bufsiz" in
12553         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12554         esac
12555 else
12556         case "$stdio_ptr" in
12557         '') stdio_ptr='((fp)->_ptr)'
12558                 ptr_lval=$define
12559                 ;;
12560         *)      ptr_lval=$d_stdio_ptr_lval;;
12561         esac
12562         case "$stdio_cnt" in
12563         '') stdio_cnt='((fp)->_cnt)'
12564                 cnt_lval=$define
12565                 ;;
12566         *)      cnt_lval=$d_stdio_cnt_lval;;
12567         esac
12568         case "$stdio_base" in
12569         '') stdio_base='((fp)->_base)';;
12570         esac
12571         case "$stdio_bufsiz" in
12572         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12573         esac
12574 fi
12575
12576 : test whether _ptr and _cnt really work
12577 echo "Checking how std your stdio is..." >&4
12578 $cat >try.c <<EOP
12579 #include <stdio.h>
12580 #define FILE_ptr(fp)    $stdio_ptr
12581 #define FILE_cnt(fp)    $stdio_cnt
12582 int main() {
12583         FILE *fp = fopen("try.c", "r");
12584         char c = getc(fp);
12585         if (
12586                 18 <= FILE_cnt(fp) &&
12587                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12588         )
12589                 exit(0);
12590         exit(1);
12591 }
12592 EOP
12593 val="$undef"
12594 set try
12595 if eval $compile && $to try.c; then
12596         if $run ./try; then
12597                 echo "Your stdio acts pretty std."
12598                 val="$define"
12599         else
12600                 echo "Your stdio isn't very std."
12601         fi
12602 else
12603         echo "Your stdio doesn't appear very std."
12604 fi
12605 $rm -f try.c try
12606 set d_stdstdio
12607 eval $setvar
12608
12609 : Can _ptr be used as an lvalue?
12610 case "$d_stdstdio$ptr_lval" in
12611 $define$define) val=$define ;;
12612 *) val=$undef ;;
12613 esac
12614 set d_stdio_ptr_lval
12615 eval $setvar
12616
12617 : Can _cnt be used as an lvalue?
12618 case "$d_stdstdio$cnt_lval" in
12619 $define$define) val=$define ;;
12620 *) val=$undef ;;
12621 esac
12622 set d_stdio_cnt_lval
12623 eval $setvar
12624
12625
12626 : test whether setting _ptr sets _cnt as a side effect
12627 d_stdio_ptr_lval_sets_cnt="$undef"
12628 d_stdio_ptr_lval_nochange_cnt="$undef"
12629 case "$d_stdio_ptr_lval$d_stdstdio" in
12630 $define$define)
12631         echo "Checking to see what happens if we set the stdio ptr..." >&4
12632 $cat >try.c <<EOP
12633 #include <stdio.h>
12634 /* Can we scream? */
12635 /* Eat dust sed :-) */
12636 /* In the buffer space, no one can hear you scream. */
12637 #define FILE_ptr(fp)    $stdio_ptr
12638 #define FILE_cnt(fp)    $stdio_cnt
12639 #include <sys/types.h>
12640 int main() {
12641         FILE *fp = fopen("try.c", "r");
12642         int c;
12643         char *ptr;
12644         size_t cnt;
12645         if (!fp) {
12646             puts("Fail even to read");
12647             exit(1);
12648         }
12649         c = getc(fp); /* Read away the first # */
12650         if (c == EOF) {
12651             puts("Fail even to read");
12652             exit(1);
12653         }
12654         if (!(
12655                 18 <= FILE_cnt(fp) &&
12656                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12657         )) {
12658                 puts("Fail even to read");
12659                 exit (1);
12660         }
12661         ptr = (char*) FILE_ptr(fp);
12662         cnt = (size_t)FILE_cnt(fp);
12663
12664         FILE_ptr(fp) += 42;
12665
12666         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12667                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12668                 exit (1);
12669         }
12670         if (FILE_cnt(fp) <= 20) {
12671                 printf ("Fail (<20 chars to test)");
12672                 exit (1);
12673         }
12674         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12675                 puts("Fail compare");
12676                 exit (1);
12677         }
12678         if (cnt == FILE_cnt(fp)) {
12679                 puts("Pass_unchanged");
12680                 exit (0);
12681         }       
12682         if (FILE_cnt(fp) == (cnt - 42)) {
12683                 puts("Pass_changed");
12684                 exit (0);
12685         }
12686         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12687         return 1;
12688
12689 }
12690 EOP
12691         set try
12692         if eval $compile && $to try.c; then
12693                 case `$run ./try` in
12694                 Pass_changed)
12695                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12696                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12697                 Pass_unchanged)
12698                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12699                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12700                 Fail*)
12701                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12702                 *)
12703                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12704         esac
12705         else
12706                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12707         fi
12708         $rm -f try.c try
12709         ;;
12710 esac
12711
12712 : see if _base is also standard
12713 val="$undef"
12714 case "$d_stdstdio" in
12715 $define)
12716         $cat >try.c <<EOP
12717 #include <stdio.h>
12718 #define FILE_base(fp)   $stdio_base
12719 #define FILE_bufsiz(fp) $stdio_bufsiz
12720 int main() {
12721         FILE *fp = fopen("try.c", "r");
12722         char c = getc(fp);
12723         if (
12724                 19 <= FILE_bufsiz(fp) &&
12725                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12726         )
12727                 exit(0);
12728         exit(1);
12729 }
12730 EOP
12731         set try
12732         if eval $compile && $to try.c; then
12733                 if $run ./try; then
12734                         echo "And its _base field acts std."
12735                         val="$define"
12736                 else
12737                         echo "But its _base field isn't std."
12738                 fi
12739         else
12740                 echo "However, it seems to be lacking the _base field."
12741         fi
12742         $rm -f try.c try
12743         ;;
12744 esac
12745 set d_stdiobase
12746 eval $setvar
12747
12748 $cat >&4 <<EOM
12749 Checking how to access stdio streams by file descriptor number...
12750 EOM
12751 case "$stdio_stream_array" in
12752 '')     $cat >try.c <<EOCP
12753 #include <stdio.h>
12754 int main() {
12755   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12756     printf("yes\n");
12757 }
12758 EOCP
12759         for s in _iob __iob __sF
12760         do
12761                 set try -DSTDIO_STREAM_ARRAY=$s
12762                 if eval $compile; then
12763                         case "`$run ./try`" in
12764                         yes)    stdio_stream_array=$s; break ;;
12765                         esac
12766                 fi
12767         done
12768         $rm -f try.* try$exe_ext
12769 esac
12770 case "$stdio_stream_array" in
12771 '')     $cat >&4 <<EOM
12772 I can't figure out how to access stdio streams by file descriptor number.
12773 EOM
12774         d_stdio_stream_array="$undef"
12775         ;;
12776 *)      $cat >&4 <<EOM
12777 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12778 EOM
12779         d_stdio_stream_array="$define"
12780         ;;
12781 esac
12782
12783 : see if strcoll exists
12784 set strcoll d_strcoll
12785 eval $inlibc
12786
12787 : check for structure copying
12788 echo " "
12789 echo "Checking to see if your C compiler can copy structs..." >&4
12790 $cat >try.c <<'EOCP'
12791 int main()
12792 {
12793         struct blurfl {
12794                 int dyick;
12795         } foo, bar;
12796
12797         foo = bar;
12798 }
12799 EOCP
12800 if $cc -c try.c >/dev/null 2>&1 ; then
12801         val="$define"
12802         echo "Yup, it can."
12803 else
12804         val="$undef"
12805         echo "Nope, it can't."
12806 fi
12807 set d_strctcpy
12808 eval $setvar
12809 $rm -f try.*
12810
12811 : see if strerror and/or sys_errlist[] exist
12812 echo " "
12813 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12814     if set strerror val -f d_strerror; eval $csym; $val; then
12815                 echo 'strerror() found.' >&4
12816                 d_strerror="$define"
12817                 d_strerrm='strerror(e)'
12818                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12819                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12820                         d_syserrlst="$define"
12821                 else
12822                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12823                         d_syserrlst="$undef"
12824                 fi
12825     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12826                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12827                 echo 'strerror() found in string header.' >&4
12828                 d_strerror="$define"
12829                 d_strerrm='strerror(e)'
12830                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12831                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12832                                 d_syserrlst="$define"
12833                 else
12834                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12835                         d_syserrlst="$undef"
12836                 fi
12837     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12838                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12839                 d_strerror="$undef"
12840                 d_syserrlst="$define"
12841                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12842     else
12843                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12844                 d_strerror="$undef"
12845                 d_syserrlst="$undef"
12846                 d_strerrm='"unknown"'
12847     fi
12848 fi
12849
12850 : see if strftime exists
12851 set strftime d_strftime
12852 eval $inlibc
12853
12854 : see if strtod exists
12855 set strtod d_strtod
12856 eval $inlibc
12857
12858 : see if strtol exists
12859 set strtol d_strtol
12860 eval $inlibc
12861
12862 : see if strtold exists
12863 set strtold d_strtold
12864 eval $inlibc
12865
12866 : see if strtoll exists
12867 set strtoll d_strtoll
12868 eval $inlibc
12869
12870 case "$d_longlong-$d_strtoll" in
12871 "$define-$define")
12872         $cat <<EOM
12873 Checking whether your strtoll() works okay...
12874 EOM
12875         $cat >try.c <<'EOCP'
12876 #include <errno.h>
12877 #ifdef __hpux
12878 #define strtoll __strtoll
12879 #endif
12880 #ifdef __EMX__
12881 #define strtoll _strtoll
12882 #endif
12883 #include <stdio.h>
12884 extern long long int strtoll(char *s, char **, int); 
12885 static int bad = 0;
12886 int check(char *s, long long ell, int een) {
12887         long long gll;
12888         errno = 0;
12889         gll = strtoll(s, 0, 10);
12890         if (!((gll == ell) && (errno == een)))
12891                 bad++;
12892 }
12893 int main() {
12894         check(" 1",                                      1LL, 0);
12895         check(" 0",                                      0LL, 0);
12896         check("-1",                                     -1LL, 0);
12897         check("-9223372036854775808", -9223372036854775808LL, 0);
12898         check("-9223372036854775808", -9223372036854775808LL, 0);
12899         check(" 9223372036854775807",  9223372036854775807LL, 0);
12900         check("-9223372036854775808", -9223372036854775808LL, 0);
12901         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12902         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12903         if (!bad)
12904                 printf("ok\n");
12905 }
12906 EOCP
12907         set try
12908         if eval $compile; then
12909                 yyy=`$run ./try`
12910                 case "$yyy" in
12911                 ok) echo "Your strtoll() seems to be working okay." ;;
12912                 *) cat <<EOM >&4
12913 Your strtoll() doesn't seem to be working okay.
12914 EOM
12915                    d_strtoll="$undef"
12916                    ;;
12917                 esac
12918         else
12919                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12920                 d_strtoll="$undef"
12921         fi
12922         ;;
12923 esac
12924
12925 : see if strtoq exists
12926 set strtoq d_strtoq
12927 eval $inlibc
12928
12929 : see if strtoul exists
12930 set strtoul d_strtoul
12931 eval $inlibc
12932
12933 case "$d_strtoul" in
12934 "$define")
12935         $cat <<EOM
12936 Checking whether your strtoul() works okay...
12937 EOM
12938         $cat >try.c <<'EOCP'
12939 #include <errno.h>
12940 #include <stdio.h>
12941 extern unsigned long int strtoul(char *s, char **, int); 
12942 static int bad = 0;
12943 void check(char *s, unsigned long eul, int een) {
12944         unsigned long gul;
12945         errno = 0;
12946         gul = strtoul(s, 0, 10);
12947         if (!((gul == eul) && (errno == een)))
12948                 bad++;
12949 }
12950 int main() {
12951         check(" 1", 1L, 0);
12952         check(" 0", 0L, 0);
12953 EOCP
12954         case "$longsize" in
12955         8)
12956             $cat >>try.c <<'EOCP'
12957         check("18446744073709551615", 18446744073709551615UL, 0);
12958         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12959 #if 0 /* strtoul() for /^-/ strings is undefined. */
12960         check("-1", 18446744073709551615UL, 0);
12961         check("-18446744073709551614", 2, 0);
12962         check("-18446744073709551615", 1, 0);
12963         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12964         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12965 #endif
12966 EOCP
12967                 ;;
12968         4)
12969                     $cat >>try.c <<'EOCP'
12970         check("4294967295", 4294967295UL, 0);
12971         check("4294967296", 4294967295UL, ERANGE);
12972 #if 0 /* strtoul() for /^-/ strings is undefined. */
12973         check("-1", 4294967295UL, 0);
12974         check("-4294967294", 2, 0);
12975         check("-4294967295", 1, 0);
12976         check("-4294967296", 4294967295UL, ERANGE);
12977         check("-4294967297", 4294967295UL, ERANGE);
12978 #endif
12979 EOCP
12980                 ;;
12981         *)
12982 : Should we write these tests to be more portable by sprintf-ing
12983 : ~0 and then manipulating that char string as input for strtol?
12984                 ;;
12985         esac
12986         $cat >>try.c <<'EOCP'
12987         if (!bad)
12988                 printf("ok\n");
12989         return 0;
12990 }
12991 EOCP
12992         set try
12993         if eval $compile; then
12994                 case "`$run ./try`" in
12995                 ok) echo "Your strtoul() seems to be working okay." ;;
12996                 *) cat <<EOM >&4
12997 Your strtoul() doesn't seem to be working okay.
12998 EOM
12999                    d_strtoul="$undef"
13000                    ;;
13001                 esac
13002         fi
13003         ;;
13004 esac
13005
13006 : see if strtoull exists
13007 set strtoull d_strtoull
13008 eval $inlibc
13009
13010 case "$d_longlong-$d_strtoull" in
13011 "$define-$define")
13012         $cat <<EOM
13013 Checking whether your strtoull() works okay...
13014 EOM
13015         $cat >try.c <<'EOCP'
13016 #include <errno.h>
13017 #ifdef __hpux
13018 #define strtoull __strtoull
13019 #endif
13020 #include <stdio.h>
13021 extern unsigned long long int strtoull(char *s, char **, int); 
13022 static int bad = 0;
13023 int check(char *s, long long eull, int een) {
13024         long long gull;
13025         errno = 0;
13026         gull = strtoull(s, 0, 10);
13027         if (!((gull == eull) && (errno == een)))
13028                 bad++;
13029 }
13030 int main() {
13031         check(" 1",                                        1LL, 0);
13032         check(" 0",                                        0LL, 0);
13033         check("18446744073709551615",  18446744073709551615ULL, 0);
13034         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13035 #if 0 /* strtoull() for /^-/ strings is undefined. */
13036         check("-1",                    18446744073709551615ULL, 0);
13037         check("-18446744073709551614",                     2LL, 0);
13038         check("-18446744073709551615",                     1LL, 0);
13039         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13040         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13041 #endif
13042         if (!bad)
13043                 printf("ok\n");
13044 }
13045 EOCP
13046         set try
13047         if eval $compile; then
13048                 case "`$run ./try`" in
13049                 ok) echo "Your strtoull() seems to be working okay." ;;
13050                 *) cat <<EOM >&4
13051 Your strtoull() doesn't seem to be working okay.
13052 EOM
13053                    d_strtoull="$undef"
13054                    ;;
13055                 esac
13056         fi
13057         ;;
13058 esac
13059
13060 : see if strtouq exists
13061 set strtouq d_strtouq
13062 eval $inlibc
13063
13064 case "$d_strtouq" in
13065 "$define")
13066         $cat <<EOM
13067 Checking whether your strtouq() works okay...
13068 EOM
13069         $cat >try.c <<'EOCP'
13070 #include <errno.h>
13071 #include <stdio.h>
13072 extern unsigned long long int strtouq(char *s, char **, int); 
13073 static int bad = 0;
13074 void check(char *s, unsigned long long eull, int een) {
13075         unsigned long long gull;
13076         errno = 0;
13077         gull = strtouq(s, 0, 10);
13078         if (!((gull == eull) && (errno == een)))
13079                 bad++;
13080 }
13081 int main() {
13082         check(" 1",                                        1LL, 0);
13083         check(" 0",                                        0LL, 0);
13084         check("18446744073709551615",  18446744073709551615ULL, 0);
13085         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13086 #if 0 /* strtouq() for /^-/ strings is undefined. */
13087         check("-1",                    18446744073709551615ULL, 0);
13088         check("-18446744073709551614",                     2LL, 0);
13089         check("-18446744073709551615",                     1LL, 0);
13090         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13091         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13092 #endif
13093         if (!bad)
13094                 printf("ok\n");
13095         return 0;
13096 }
13097 EOCP
13098         set try
13099         if eval $compile; then
13100                 case "`$run ./try`" in
13101                 ok) echo "Your strtouq() seems to be working okay." ;;
13102                 *) cat <<EOM >&4
13103 Your strtouq() doesn't seem to be working okay.
13104 EOM
13105                    d_strtouq="$undef"
13106                    ;;
13107                 esac
13108         fi
13109         ;;
13110 esac
13111
13112 : see if strxfrm exists
13113 set strxfrm d_strxfrm
13114 eval $inlibc
13115
13116 : see if symlink exists
13117 set symlink d_symlink
13118 eval $inlibc
13119
13120 : see if syscall exists
13121 set syscall d_syscall
13122 eval $inlibc
13123
13124 : see if prototype for syscall is available
13125 echo " "
13126 set d_syscallproto syscall $i_unistd unistd.h
13127 eval $hasproto
13128
13129 : see if sysconf exists
13130 set sysconf d_sysconf
13131 eval $inlibc
13132
13133 : see if system exists
13134 set system d_system
13135 eval $inlibc
13136
13137 : see if tcgetpgrp exists
13138 set tcgetpgrp d_tcgetpgrp
13139 eval $inlibc
13140
13141 : see if tcsetpgrp exists
13142 set tcsetpgrp d_tcsetpgrp
13143 eval $inlibc
13144
13145 : see if prototype for telldir is available
13146 echo " "
13147 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13148 eval $hasproto
13149
13150 : see if this is a sys/times.h system
13151 set sys/times.h i_systimes
13152 eval $inhdr
13153
13154 : see if times exists
13155 echo " "
13156 if set times val -f d_times; eval $csym; $val; then
13157         echo 'times() found.' >&4
13158         d_times="$define"
13159         inc=''
13160         case "$i_systimes" in
13161         "$define") inc='sys/times.h';;
13162         esac
13163         rp="What is the type returned by times() on this system?"
13164         set clock_t clocktype long stdio.h sys/types.h $inc
13165         eval $typedef_ask
13166 else
13167         echo 'times() NOT found, hope that will do.' >&4
13168         d_times="$undef"
13169         clocktype='int'
13170 fi
13171
13172 : see if truncate exists
13173 set truncate d_truncate
13174 eval $inlibc
13175
13176 : see if tzname[] exists
13177 echo " "
13178 if set tzname val -a d_tzname; eval $csym; $val; then
13179         val="$define"
13180         echo 'tzname[] found.' >&4
13181 else
13182         val="$undef"
13183         echo 'tzname[] NOT found.' >&4
13184 fi
13185 set d_tzname
13186 eval $setvar
13187
13188 case "$osname" in
13189 next|rhapsody|darwin) multiarch="$define" ;;
13190 esac
13191 case "$multiarch" in
13192 ''|[nN]*) multiarch="$undef" ;;
13193 esac
13194
13195 : check for ordering of bytes in a long
13196 echo " "
13197 case "$usecrosscompile$multiarch" in
13198 *$define*)
13199         $cat <<EOM
13200 You seem to be either cross-compiling or doing a multiarchitecture build,
13201 skipping the byteorder check.
13202
13203 EOM
13204         byteorder='ffff'
13205         ;;
13206 *)
13207         case "$byteorder" in
13208         '')
13209                 $cat <<'EOM'
13210 In the following, larger digits indicate more significance.  A big-endian
13211 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13212 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13213 machines may have weird orders like 3412.  A Cray will report 87654321,
13214 an Alpha will report 12345678. If the test program works the default is
13215 probably right.
13216 I'm now running the test program...
13217 EOM
13218                 $cat >try.c <<'EOCP'
13219 #include <stdio.h>
13220 int main()
13221 {
13222         int i;
13223         union {
13224                 unsigned long l;
13225                 char c[sizeof(long)];
13226         } u;
13227
13228         if (sizeof(long) > 4)
13229                 u.l = (0x08070605L << 32) | 0x04030201L;
13230         else
13231                 u.l = 0x04030201L;
13232         for (i = 0; i < sizeof(long); i++)
13233                 printf("%c", u.c[i]+'0');
13234         printf("\n");
13235         exit(0);
13236 }
13237 EOCP
13238                 xxx_prompt=y
13239                 set try
13240                 if eval $compile && ./try > /dev/null; then
13241                         dflt=`$run ./try`
13242                         case "$dflt" in
13243                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13244                                 echo "(The test program ran ok.)"
13245                                 echo "byteorder=$dflt"
13246                                 xxx_prompt=n
13247                         ;;
13248                         ????|????????) echo "(The test program ran ok.)" ;;
13249                         *) echo "(The test program didn't run right for some reason.)" ;;
13250                         esac
13251                 else
13252                         dflt='4321'
13253                         cat <<'EOM'
13254 (I can't seem to compile the test program.  Guessing big-endian...)
13255 EOM
13256                 fi
13257                 case "$xxx_prompt" in
13258                 y)
13259                         rp="What is the order of bytes in a long?"
13260                         . ./myread
13261                         byteorder="$ans"
13262                         ;;
13263                 *)      byteorder=$dflt
13264                         ;;
13265                 esac
13266                 ;;
13267         esac
13268         $rm -f try.c try
13269         ;;
13270 esac
13271
13272
13273 $cat <<EOM
13274
13275 Checking to see whether you can access character data unalignedly...
13276 EOM
13277 $cat >try.c <<EOCP
13278 #include <stdio.h>
13279 #define U32 $u32type
13280 #define BYTEORDER $byteorder
13281 int main() {
13282 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13283     U8 buf[] = "\0\0\0\1\0\0\0\0";
13284     U32 *up;
13285     int i;
13286
13287     if (sizeof(U32) != 4) {
13288         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13289         exit(1);
13290     }
13291
13292     fflush(stdout);
13293
13294     for (i = 0; i < 4; i++) {
13295         up = (U32*)(buf + i);
13296         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13297                (*up == 1 << (8*(3-i)))  /* little-endian */
13298               )
13299            )
13300         {
13301             printf("read failed (%x)\n", *up);
13302             exit(2);
13303         }
13304     }
13305
13306     /* write test */
13307     for (i = 0; i < 4; i++) {
13308         up = (U32*)(buf + i);
13309         *up = 0xBeef;
13310         if (*up != 0xBeef) {
13311             printf("write failed (%x)\n", *up);
13312             exit(3);
13313         }
13314     }
13315
13316     exit(0);
13317 #else
13318     printf("1\n");
13319     exit(1);
13320 #endif
13321     return 0;
13322 }
13323 EOCP
13324 set try
13325 if eval $compile_ok; then
13326         echo "(Testing for character data alignment may dump core.)" >&4
13327         $run ./try 2>&1 >/dev/null
13328         case "$?" in
13329         0)      cat >&4 <<EOM
13330 You can access character data pretty unalignedly.
13331 EOM
13332                 d_u32align="$undef"
13333                 ;;
13334         *)      cat >&4 <<EOM
13335 It seems that you must access character data in an aligned manner.
13336 EOM
13337                 d_u32align="$define"
13338                 ;;
13339         esac
13340         $rm -f core core.try.* try.core
13341 else
13342         rp='Can you access character data at unaligned addresses?'
13343         dflt='n'
13344         . ./myread
13345         case "$ans" in
13346         [yY]*)  d_u32align="$undef"  ;;
13347         *)      d_u32align="$define" ;;
13348         esac
13349 fi
13350
13351 : see if ualarm exists
13352 set ualarm d_ualarm
13353 eval $inlibc
13354
13355 : see if umask exists
13356 set umask d_umask
13357 eval $inlibc
13358
13359 : see if unordered exists
13360 set unordered d_unordered
13361 eval $inlibc
13362
13363 : see if usleep exists
13364 set usleep d_usleep
13365 eval $inlibc
13366
13367 : see if prototype for usleep is available
13368 echo " "
13369 set d_usleepproto usleep $i_unistd unistd.h
13370 eval $hasproto
13371
13372 : see if ustat exists
13373 set ustat d_ustat
13374 eval $inlibc
13375
13376 : backward compatibility for d_hvfork
13377 if test X$d_hvfork != X; then
13378         d_vfork="$d_hvfork"
13379         d_hvfork=''
13380 fi
13381 : see if there is a vfork
13382 val=''
13383 set vfork val
13384 eval $inlibc
13385
13386 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13387 : perl on Solaris 2.x, and probably elsewhere.
13388 case "$val" in
13389 $define)
13390         echo " "
13391         case "$usevfork" in
13392         false) dflt='n';;
13393         *) dflt='y';;
13394         esac
13395         cat <<'EOM'
13396  
13397 Perl can only use a vfork() that doesn't suffer from strict
13398 restrictions on calling functions or modifying global data in
13399 the child.  For example, glibc-2.1 contains such a vfork()
13400 that is unsuitable.  If your system provides a proper fork()
13401 call, chances are that you do NOT want perl to use vfork().
13402
13403 EOM
13404         rp="Do you still want to use vfork()?"
13405         . ./myread
13406         case "$ans" in
13407         y|Y) ;;
13408         *)
13409                 echo "Ok, we won't use vfork()."
13410                 val="$undef"
13411                 ;;
13412         esac
13413         ;;
13414 esac
13415 set d_vfork
13416 eval $setvar
13417 case "$d_vfork" in
13418 $define) usevfork='true';;
13419 *) usevfork='false';;
13420 esac
13421
13422 : see if this is an sysdir system
13423 set sys/dir.h i_sysdir
13424 eval $inhdr
13425
13426 : see if this is an sysndir system
13427 set sys/ndir.h i_sysndir
13428 eval $inhdr
13429
13430 : see if closedir exists
13431 set closedir d_closedir
13432 eval $inlibc
13433
13434 case "$d_closedir" in
13435 "$define")
13436         echo " "
13437         echo "Checking whether closedir() returns a status..." >&4
13438         cat > try.c <<EOM
13439 #$i_dirent I_DIRENT             /**/
13440 #$i_sysdir I_SYS_DIR            /**/
13441 #$i_sysndir I_SYS_NDIR          /**/
13442 #$i_systypes I_SYS_TYPES        /**/
13443
13444 #if defined(I_SYS_TYPES)
13445 #include <sys/types.h>
13446 #endif
13447 #if defined(I_DIRENT)
13448 #include <dirent.h>
13449 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13450 #include <sys/dir.h>
13451 #endif
13452 #else
13453 #ifdef I_SYS_NDIR
13454 #include <sys/ndir.h>
13455 #else
13456 #ifdef I_SYS_DIR
13457 #ifdef hp9000s500
13458 #include <ndir.h>       /* may be wrong in the future */
13459 #else
13460 #include <sys/dir.h>
13461 #endif
13462 #endif
13463 #endif
13464 #endif 
13465 int main() { return closedir(opendir(".")); }
13466 EOM
13467         set try
13468         if eval $compile_ok; then
13469                 if $run ./try > /dev/null 2>&1 ; then
13470                         echo "Yes, it does."
13471                         val="$undef"
13472                 else
13473                         echo "No, it doesn't."
13474                         val="$define"
13475                 fi
13476         else
13477                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13478                 val="$define"
13479         fi
13480         ;;
13481 *)
13482         val="$undef";
13483         ;;
13484 esac
13485 set d_void_closedir
13486 eval $setvar
13487 $rm -f try try.*
13488 : see if there is a wait4
13489 set wait4 d_wait4
13490 eval $inlibc
13491
13492 : see if waitpid exists
13493 set waitpid d_waitpid
13494 eval $inlibc
13495
13496 : see if wcstombs exists
13497 set wcstombs d_wcstombs
13498 eval $inlibc
13499
13500 : see if wctomb exists
13501 set wctomb d_wctomb
13502 eval $inlibc
13503
13504 : see if writev exists
13505 set writev d_writev
13506 eval $inlibc
13507
13508 : preserve RCS keywords in files with variable substitution, grrr
13509 Date='$Date'
13510 Id='$Id'
13511 Log='$Log'
13512 RCSfile='$RCSfile'
13513 Revision='$Revision'
13514
13515 : check for alignment requirements
13516 echo " "
13517 case "$usecrosscompile$multiarch" in
13518 *$define*)
13519         $cat <<EOM
13520 You seem to be either cross-compiling or doing a multiarchitecture build,
13521 skipping the memory alignment check.
13522
13523 EOM
13524         case "$alignbytes" in
13525         '') alignbytes=8 ;;
13526         esac
13527         ;;
13528 *)
13529         case "$alignbytes" in
13530         '') echo "Checking alignment constraints..." >&4
13531                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13532                         $cat >try.c <<'EOCP'
13533 typedef long double NV;
13534 EOCP
13535                 else
13536                         $cat >try.c <<'EOCP'
13537 typedef double NV;
13538 EOCP
13539                 fi
13540                 $cat >>try.c <<'EOCP'
13541 #include <stdio.h>
13542 struct foobar {
13543         char foo;
13544         NV bar;
13545 } try_algn;
13546 int main()
13547 {
13548     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13549     return(0);
13550 }
13551 EOCP
13552                 set try
13553                 if eval $compile_ok; then
13554                         dflt=`$run ./try`
13555                 else
13556                         dflt='8'
13557                         echo "(I can't seem to compile the test program...)"
13558                 fi
13559                 ;;
13560         *) dflt="$alignbytes"
13561                 ;;
13562         esac
13563         rp="Doubles must be aligned on a how-many-byte boundary?"
13564         . ./myread
13565         alignbytes="$ans"
13566         $rm -f try.c try
13567         ;;
13568 esac
13569
13570
13571 : set the base revision
13572 baserev=5.0
13573
13574 : how do we catenate cpp tokens here?
13575 echo " "
13576 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13577 $cat >cpp_stuff.c <<'EOCP'
13578 #define RCAT(a,b)a/**/b
13579 #define ACAT(a,b)a ## b
13580 RCAT(Rei,ser)
13581 ACAT(Cir,cus)
13582 EOCP
13583 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13584 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13585         echo "Oh!  Smells like ANSI's been here." >&4
13586         echo "We can catify or stringify, separately or together!"
13587         cpp_stuff=42
13588 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13589         echo "Ah, yes!  The good old days!" >&4
13590         echo "However, in the good old days we don't know how to stringify and"
13591         echo "catify at the same time."
13592         cpp_stuff=1
13593 else
13594         $cat >&4 <<EOM
13595 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13596 to have to edit the values of CAT[2-5] in config.h...
13597 EOM
13598         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13599 fi
13600 $rm -f cpp_stuff.*
13601
13602 : see if this is a db.h system
13603 set db.h i_db
13604 eval $inhdr
13605
13606 case "$i_db" in
13607 $define)
13608         : Check db version.
13609         echo " "
13610         echo "Checking Berkeley DB version ..." >&4
13611         $cat >try.c <<EOCP
13612 #$d_const HASCONST
13613 #ifndef HASCONST
13614 #define const
13615 #endif
13616 #include <sys/types.h>
13617 #include <stdio.h>
13618 #include <db.h>
13619 int main(int argc, char *argv[])
13620 {
13621 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13622     int Major, Minor, Patch ;
13623     unsigned long Version ;
13624     (void)db_version(&Major, &Minor, &Patch) ;
13625     if (argc == 2) {
13626         printf("%d %d %d %d %d %d\n",
13627                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13628                Major, Minor, Patch);
13629         exit(0);
13630     }
13631     printf("You have Berkeley DB Version 2 or greater.\n");
13632
13633     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13634                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13635     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13636                 Major, Minor, Patch) ;
13637
13638     /* check that db.h & libdb are compatible */
13639     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13640         printf("db.h and libdb are incompatible.\n") ;
13641         exit(3);        
13642     }
13643
13644     printf("db.h and libdb are compatible.\n") ;
13645
13646     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13647                 + DB_VERSION_PATCH ;
13648
13649     /* needs to be >= 2.3.4 */
13650     if (Version < 2003004) {
13651     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13652         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13653         exit(2);        
13654     }
13655
13656     exit(0);
13657 #else
13658 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13659     if (argc == 2) {
13660         printf("1 0 0\n");
13661         exit(0);
13662     }
13663     printf("You have Berkeley DB Version 1.\n");
13664     exit(0);    /* DB version < 2: the coast is clear. */
13665 #else
13666     exit(1);    /* <db.h> not Berkeley DB? */
13667 #endif
13668 #endif
13669 }
13670 EOCP
13671         set try
13672         if eval $compile_ok && $run ./try; then
13673                 echo 'Looks OK.' >&4
13674                 set `$run ./try 1`
13675                 db_version_major=$1
13676                 db_version_minor=$2
13677                 db_version_patch=$3
13678         else
13679                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13680                 i_db=$undef
13681                 case " $libs " in
13682                 *"-ldb "*)
13683                         : Remove db from list of libraries to use
13684                         echo "Removing unusable -ldb from library list" >&4
13685                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13686                         shift
13687                         libs="$*"
13688                         echo "libs = $libs" >&4
13689                         ;;
13690                 esac
13691         fi
13692         $rm -f try.*
13693         ;;
13694 esac
13695
13696 case "$i_db" in
13697 define)
13698         : Check the return type needed for hash 
13699         echo " "
13700         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13701         $cat >try.c <<EOCP
13702 #$d_const HASCONST
13703 #ifndef HASCONST
13704 #define const
13705 #endif
13706 #include <sys/types.h>
13707 #include <db.h>
13708
13709 #ifndef DB_VERSION_MAJOR
13710 u_int32_t hash_cb (ptr, size)
13711 const void *ptr;
13712 size_t size;
13713 {
13714 }
13715 HASHINFO info;
13716 int main()
13717 {
13718         info.hash = hash_cb;
13719 }
13720 #endif
13721 EOCP
13722         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13723                 if $contains warning try.out >>/dev/null 2>&1 ; then
13724                         db_hashtype='int'
13725                 else
13726                         db_hashtype='u_int32_t'
13727                 fi
13728         else
13729                 : XXX Maybe we should just give up here.
13730                 db_hashtype=u_int32_t
13731                 $cat try.out >&4
13732                 echo "Help:  I can't seem to compile the db test program." >&4
13733                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13734         fi
13735         $rm -f try.*
13736         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13737         ;;
13738 *)      db_hashtype=u_int32_t
13739         ;;
13740 esac
13741 case "$i_db" in
13742 define)
13743         : Check the return type needed for prefix 
13744         echo " "
13745         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13746         cat >try.c <<EOCP
13747 #$d_const HASCONST
13748 #ifndef HASCONST
13749 #define const
13750 #endif
13751 #include <sys/types.h>
13752 #include <db.h>
13753
13754 #ifndef DB_VERSION_MAJOR
13755 size_t prefix_cb (key1, key2)
13756 const DBT *key1;
13757 const DBT *key2;
13758 {
13759 }
13760 BTREEINFO info;
13761 int main()
13762 {
13763         info.prefix = prefix_cb;
13764 }
13765 #endif
13766 EOCP
13767         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13768                 if $contains warning try.out >>/dev/null 2>&1 ; then
13769                         db_prefixtype='int'
13770                 else
13771                         db_prefixtype='size_t'
13772                 fi
13773         else
13774                 db_prefixtype='size_t'
13775                 : XXX Maybe we should just give up here.
13776                 $cat try.out >&4
13777                 echo "Help:  I can't seem to compile the db test program." >&4
13778                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13779         fi
13780         $rm -f try.*
13781         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13782         ;;
13783 *)      db_prefixtype='size_t'
13784         ;;
13785 esac
13786
13787
13788 : How can we generate normalized random numbers ?
13789 echo " "
13790 echo "Looking for a random number function..." >&4
13791 case "$randfunc" in
13792 '')
13793         if set drand48 val -f; eval $csym; $val; then
13794                 dflt="drand48"
13795                 echo "Good, found drand48()." >&4
13796         elif set random val -f; eval $csym; $val; then
13797                 dflt="random"
13798                 echo "OK, found random()." >&4
13799         else
13800                 dflt="rand"
13801                 echo "Yick, looks like I have to use rand()." >&4
13802         fi
13803         echo " "
13804         ;;
13805 *)
13806         dflt="$randfunc"
13807         ;;
13808 esac
13809 cont=true
13810
13811 case "$ccflags" in
13812 *-Dmy_rand=*|*-Dmy_srand=*)
13813         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13814         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13815         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13816         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13817         ;;
13818 esac
13819
13820 while $test "$cont"; do
13821         rp="Use which function to generate random numbers?"
13822         . ./myread
13823         if $test "$ans" = "$dflt"; then
13824                 : null
13825         else
13826                 randbits=''
13827         fi
13828         randfunc="$ans"
13829         if set $ans val -f; eval $csym; $val; then
13830                 cont=''
13831         else
13832                 dflt=y
13833                 rp="I cannot find function $ans. Use that name anyway?"
13834                 . ./myread
13835                 dflt=rand
13836                 case "$ans" in
13837                         [yY]*) cont='';;
13838                 esac
13839         fi
13840         case "$cont" in
13841         '')
13842                 case "$randfunc" in
13843                 drand48)
13844                         drand01="drand48()"
13845                         seedfunc="srand48"
13846                         randbits=48
13847                         randseedtype=long
13848                         ;;
13849                 rand|random)
13850                         case "$randbits" in
13851                         '')
13852 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13853                                 $cat >try.c <<EOCP
13854 #$i_unistd I_UNISTD
13855 #$i_stdlib I_STDLIB
13856 #include <stdio.h>
13857 #ifdef I_UNISTD
13858 #  include <unistd.h>
13859 #endif
13860 #ifdef I_STDLIB
13861 #  include <stdlib.h>
13862 #endif
13863 int main()
13864 {
13865         register int i;
13866         register unsigned long tmp;
13867         register unsigned long max = 0L;
13868
13869         for (i = 1000; i; i--) {
13870                 tmp = (unsigned long) $randfunc();
13871                 if (tmp > max) max = tmp;
13872         }
13873         for (i = 0; max; i++)
13874                 max /= 2;
13875         printf("%d\n",i);
13876 }
13877 EOCP
13878                                 set try
13879                                 if eval $compile_ok; then
13880                                         dflt=`try`
13881                                 else
13882                                         dflt='?'
13883                                         echo "(I can't seem to compile the test program...)"
13884                                 fi
13885                                 ;;
13886                         *)
13887                                 dflt="$randbits"
13888                                 ;;
13889                         esac
13890                         rp="How many bits does your $randfunc() function produce?"
13891                         . ./myread
13892                         randbits="$ans"
13893                         $rm -f try.c try
13894                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13895                         seedfunc="s$randfunc"
13896                         randseedtype=unsigned
13897                         ;;
13898                 *)
13899                         dflt="31"
13900                         rp="How many bits does your $randfunc() function produce?"
13901                         . ./myread
13902                         randbits="$ans"
13903                         seedfunc="s$randfunc"
13904                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13905                         if set $seedfunc val -f; eval $csym; $val; then
13906                                 echo "(Using $seedfunc() to seed random generator)"
13907                         else
13908                                 echo "(Warning: no $seedfunc() to seed random generator)"
13909                                 seedfunc=rand
13910                         fi
13911                         randseedtype=unsigned
13912                         ;;
13913                 esac
13914                 ;;
13915         esac
13916 done
13917
13918 echo " "
13919 echo "Determining whether or not we are on an EBCDIC system..." >&4
13920 $cat >try.c <<'EOM'
13921 int main()
13922 {
13923   if ('M'==0xd4) return 0;
13924   return 1;
13925 }
13926 EOM
13927
13928 val=$undef
13929 set try
13930 if eval $compile_ok; then
13931         if $run ./try; then
13932                 echo "You seem to speak EBCDIC." >&4
13933                 val="$define"
13934         else
13935                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13936         fi
13937 else
13938         echo "I'm unable to compile the test program." >&4
13939         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13940 fi
13941 $rm -f try try.*
13942 set ebcdic
13943 eval $setvar
13944
13945 echo " "
13946 $cat >&4 <<EOM
13947 Checking how to flush all pending stdio output...
13948 EOM
13949 # I only know how to find the first 32 possibly open files on SunOS.
13950 # See also hints/sunos_4_1.sh and util.c  --AD
13951 case "$osname" in
13952 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13953 esac
13954 $cat >>try.c <<EOCP
13955 #include <stdio.h>
13956 #$i_unistd I_UNISTD
13957 #ifdef I_UNISTD
13958 # include <unistd.h>
13959 #endif
13960 #$d_sysconf HAS_SYSCONF
13961 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13962 #ifdef HAS_STDIO_STREAM_ARRAY
13963 # define STDIO_STREAM_ARRAY $stdio_stream_array
13964 #endif
13965 int main() {
13966   FILE* p;
13967   unlink("try.out");
13968   p = fopen("try.out", "w");
13969 #ifdef TRY_FPUTC
13970   fputc('x', p);
13971 #else
13972 # ifdef TRY_FPRINTF
13973   fprintf(p, "x");
13974 # endif
13975 #endif
13976 #ifdef TRY_FFLUSH_NULL
13977   fflush(NULL);
13978 #endif
13979 #ifdef TRY_FFLUSH_ALL
13980   {
13981     long open_max = -1;
13982 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13983     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13984 # else
13985 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13986     open_max = sysconf(_SC_OPEN_MAX);
13987 #  else
13988 #   ifdef FOPEN_MAX
13989     open_max = FOPEN_MAX;
13990 #   else
13991 #    ifdef OPEN_MAX
13992     open_max = OPEN_MAX;
13993 #    else
13994 #     ifdef _NFILE
13995     open_max = _NFILE;
13996 #     endif
13997 #    endif
13998 #   endif
13999 #  endif
14000 # endif 
14001 # ifdef HAS_STDIO_STREAM_ARRAY
14002     if (open_max > 0) {
14003       long i;
14004       for (i = 0; i < open_max; i++)
14005             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
14006                 STDIO_STREAM_ARRAY[i]._file < open_max &&
14007                 STDIO_STREAM_ARRAY[i]._flag)
14008                 fflush(&STDIO_STREAM_ARRAY[i]);
14009     }   
14010   }
14011 # endif
14012 #endif
14013   _exit(42);
14014 }
14015 EOCP
14016 : first we have to find out how _not_ to flush
14017 $to try.c
14018 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
14019     output=''
14020     set try -DTRY_FPUTC
14021     if eval $compile; then
14022             $run ./try 2>/dev/null
14023             code="$?"
14024             $from try.out
14025             if $test ! -s try.out -a "X$code" = X42; then
14026                 output=-DTRY_FPUTC
14027             fi
14028     fi
14029     case "$output" in
14030     '')
14031             set try -DTRY_FPRINTF
14032             if eval $compile; then
14033                     $run ./try 2>/dev/null
14034                     code="$?"
14035                     $from try.out
14036                     if $test ! -s try.out -a "X$code" = X42; then
14037                         output=-DTRY_FPRINTF
14038                     fi
14039             fi
14040         ;;
14041     esac
14042 fi
14043 : check for fflush NULL behaviour
14044 case "$fflushNULL" in
14045 '')     set try -DTRY_FFLUSH_NULL $output
14046         if eval $compile; then
14047                 $run ./try 2>/dev/null
14048                 code="$?"
14049                 $from try.out
14050                 if $test -s try.out -a "X$code" = X42; then
14051                         fflushNULL="`$cat try.out`"
14052                 else
14053                         if $test "X$code" != X42; then
14054                                 $cat >&4 <<EOM
14055 (If this test failed, don't worry, we'll try another method shortly.)
14056 EOM
14057                         fi
14058                 fi
14059         fi
14060         $rm -f core try.core core.try.*
14061         case "$fflushNULL" in
14062         x)      $cat >&4 <<EOM
14063 Your fflush(NULL) works okay for output streams.
14064 Let's see if it clobbers input pipes...
14065 EOM
14066 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14067 # bug that improperly flushes the input end of pipes.  So we avoid the
14068 # autoflush on fork/system/exec support for now. :-(
14069 $cat >tryp.c <<EOCP
14070 #include <stdio.h>
14071 int
14072 main(int argc, char **argv)
14073 {
14074     char buf[1024];
14075     int i;
14076     char *bp = buf;
14077     while (1) {
14078         while ((i = getc(stdin)) != -1
14079                && (*bp++ = i) != '\n'
14080                && bp < &buf[1024])
14081         /* DO NOTHING */ ;
14082         *bp = '\0';
14083         fprintf(stdout, "%s", buf);
14084         fflush(NULL);
14085         if (i == -1)
14086             return 0;
14087         bp = buf;
14088     }
14089 }
14090 EOCP
14091                 fflushNULL="$define"
14092                 set tryp
14093                 if eval $compile; then
14094                     $rm -f tryp.out
14095                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14096                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
14097                        $cat >&4 <<EOM
14098 fflush(NULL) seems to behave okay with input streams.
14099 EOM
14100                         fflushNULL="$define"
14101                     else
14102                         $cat >&4 <<EOM
14103 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
14104 EOM
14105                         fflushNULL="$undef"
14106                     fi
14107                 fi
14108                 $rm -f core tryp.c tryp.core core.tryp.*
14109                 ;;
14110         '')     $cat >&4 <<EOM
14111 Your fflush(NULL) isn't working (contrary to ANSI C).
14112 EOM
14113                 fflushNULL="$undef"
14114                 ;;
14115         *)      $cat >&4 <<EOM
14116 Cannot figure out whether your fflush(NULL) works or not.
14117 I'm assuming it doesn't (contrary to ANSI C).
14118 EOM
14119                 fflushNULL="$undef"
14120                 ;;
14121         esac
14122         ;;
14123 $define|true|[yY]*)
14124         fflushNULL="$define"
14125         ;;
14126 *)
14127         fflushNULL="$undef"
14128         ;;
14129 esac
14130 : check explicit looping only if NULL did not work, and if the pipe
14131 : bug does not show up on an explicit flush too
14132 case "$fflushNULL" in
14133 "$undef")
14134         $cat >tryp.c <<EOCP
14135 #include <stdio.h>
14136 int
14137 main(int argc, char **argv)
14138 {
14139     char buf[1024];
14140     int i;
14141     char *bp = buf;
14142     while (1) {
14143         while ((i = getc(stdin)) != -1
14144                && (*bp++ = i) != '\n'
14145                && bp < &buf[1024])
14146         /* DO NOTHING */ ;
14147         *bp = '\0';
14148         fprintf(stdout, "%s", buf);
14149         fflush(stdin);
14150         if (i == -1)
14151             return 0;
14152         bp = buf;
14153     }
14154 }
14155 EOCP
14156         set tryp
14157         if eval $compile; then
14158             $rm -f tryp.out
14159             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14160             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14161                $cat >&4 <<EOM
14162 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14163 EOM
14164                 : now check for fflushall behaviour
14165                 case "$fflushall" in
14166                 '')     set try -DTRY_FFLUSH_ALL $output
14167                         if eval $compile; then
14168                                 $cat >&4 <<EOM
14169 (Now testing the other method--but note that this also may fail.)
14170 EOM
14171                                 $run ./try 2>/dev/null
14172                                 code=$?
14173                                 $from try.out
14174                                 if $test -s try.out -a "X$code" = X42; then
14175                                         fflushall="`$cat try.out`"
14176                                 fi
14177                         fi
14178                         $rm -f core try.core core.try.*
14179                         case "$fflushall" in
14180                         x)      $cat >&4 <<EOM
14181 Whew. Flushing explicitly all the stdio streams works.
14182 EOM
14183                                 fflushall="$define"
14184                                 ;;
14185                         '')     $cat >&4 <<EOM
14186 Sigh. Flushing explicitly all the stdio streams doesn't work.
14187 EOM
14188                                 fflushall="$undef"
14189                                 ;;
14190                         *)      $cat >&4 <<EOM
14191 Cannot figure out whether flushing stdio streams explicitly works or not.
14192 I'm assuming it doesn't.
14193 EOM
14194                                 fflushall="$undef"
14195                                 ;;
14196                         esac
14197                         ;;
14198                 "$define"|true|[yY]*)
14199                         fflushall="$define"
14200                         ;;
14201                 *)
14202                         fflushall="$undef"
14203                         ;;
14204                 esac
14205             else
14206                 $cat >&4 <<EOM
14207 All is futile.  Even fflush(stdin) clobbers input pipes!
14208 EOM
14209                 fflushall="$undef"
14210             fi
14211         else
14212             fflushall="$undef"
14213         fi
14214         $rm -f core tryp.c tryp.core core.tryp.*
14215         ;;
14216 *)      fflushall="$undef"
14217         ;;
14218 esac
14219
14220 case "$fflushNULL$fflushall" in
14221 undefundef)
14222         $cat <<EOM
14223 OK, I give up.  I cannot figure out how to flush pending stdio output.
14224 We won't be flushing handles at all before fork/exec/popen.
14225 EOM
14226         ;;
14227 esac
14228 $rm -f try.* try$exe_ext
14229
14230 : Store the full pathname to the ar program for use in the C program
14231 : Respect a hint or command line value for full_ar.
14232 case "$full_ar" in
14233 '') full_ar=$ar ;;
14234 esac
14235
14236 : Store the full pathname to the sed program for use in the C program
14237 full_sed=$sed
14238
14239 : see what type gids are declared as in the kernel
14240 echo " "
14241 echo "Looking for the type for group ids returned by getgid()."
14242 set gid_t gidtype xxx stdio.h sys/types.h
14243 eval $typedef
14244 case "$gidtype" in
14245 xxx)
14246         xxx=`./findhdr sys/user.h`
14247         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14248         case $1 in
14249         unsigned) dflt="$1 $2" ;;
14250         *) dflt="$1" ;;
14251         esac
14252         ;;
14253 *) dflt="$gidtype";;
14254 esac
14255 case "$gidtype" in
14256 gid_t) echo "gid_t found." ;;
14257 *)      rp="What is the type for group ids returned by getgid()?"
14258         . ./myread
14259         gidtype="$ans"
14260         ;;
14261 esac
14262
14263 echo " "
14264 case "$gidtype" in
14265 *_t) zzz="$gidtype"     ;;
14266 *)   zzz="gid"          ;;
14267 esac
14268 echo "Checking the size of $zzz..." >&4 
14269 cat > try.c <<EOCP
14270 #include <sys/types.h>
14271 #include <stdio.h>
14272 int main() {
14273     printf("%d\n", (int)sizeof($gidtype));
14274     exit(0);
14275 }
14276 EOCP
14277 set try
14278 if eval $compile_ok; then
14279         yyy=`$run ./try`
14280         case "$yyy" in
14281         '')     gidsize=4
14282                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14283                 ;;
14284         *)      gidsize=$yyy
14285                 echo "Your $zzz is $gidsize bytes long."
14286                 ;;
14287         esac
14288 else
14289         gidsize=4
14290         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14291 fi
14292
14293
14294 echo " "
14295 case "$gidtype" in
14296 *_t) zzz="$gidtype"     ;;
14297 *)   zzz="gid"          ;;
14298 esac
14299 echo "Checking the sign of $zzz..." >&4 
14300 cat > try.c <<EOCP
14301 #include <sys/types.h>
14302 #include <stdio.h>
14303 int main() {
14304         $gidtype foo = -1;
14305         if (foo < 0)
14306                 printf("-1\n");
14307         else
14308                 printf("1\n");
14309 }
14310 EOCP
14311 set try
14312 if eval $compile; then
14313         yyy=`$run ./try`
14314         case "$yyy" in
14315         '')     gidsign=1
14316                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14317                 ;;
14318         *)      gidsign=$yyy
14319                 case "$gidsign" in
14320                  1) echo "Your $zzz is unsigned." ;;
14321                 -1) echo "Your $zzz is signed."   ;;
14322                 esac
14323                 ;;
14324         esac
14325 else
14326         gidsign=1
14327         echo "(I can't compile the test program--guessing unsigned.)" >&4
14328 fi
14329
14330
14331 echo " "
14332
14333 if $test X"$quadtype" != X; then
14334
14335 echo "Checking how to print 64-bit integers..." >&4
14336
14337 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14338         $cat >try.c <<'EOCP'
14339 #include <sys/types.h>
14340 #include <stdio.h>
14341 int main() {
14342   int q = 12345678901;
14343   printf("%ld\n", q);
14344 }
14345 EOCP
14346         set try
14347         if eval $compile; then
14348                 yyy=`$run ./try`
14349                 case "$yyy" in
14350                 12345678901)
14351                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14352                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14353                         echo "We will use %d."
14354                         ;;
14355                 esac
14356         fi
14357 fi
14358
14359 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14360         $cat >try.c <<'EOCP'
14361 #include <sys/types.h>
14362 #include <stdio.h>
14363 int main() {
14364   long q = 12345678901;
14365   printf("%ld\n", q);
14366 }
14367 EOCP
14368         set try
14369         if eval $compile; then
14370                 yyy=`$run ./try`
14371                 case "$yyy" in
14372                 12345678901)
14373                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14374                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14375                         echo "We will use %ld."
14376                         ;;
14377                 esac
14378         fi
14379 fi
14380
14381 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14382         $cat >try.c <<'EOCP'
14383 #include <sys/types.h>
14384 #include <inttypes.h>
14385 #include <stdio.h>
14386 int main() {
14387   int64_t q = 12345678901;
14388   printf("%" PRId64 "\n", q);
14389 }
14390 EOCP
14391         set try
14392         if eval $compile; then
14393                 yyy=`$run ./try`
14394                 case "$yyy" in
14395                 12345678901)
14396                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14397                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14398                         echo "We will use the C9X style."
14399                         ;;
14400                 esac
14401         fi
14402 fi
14403
14404 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14405         $cat >try.c <<EOCP
14406 #include <sys/types.h>
14407 #include <stdio.h>
14408 int main() {
14409   $quadtype q = 12345678901;
14410   printf("%Ld\n", q);
14411 }
14412 EOCP
14413         set try
14414         if eval $compile; then
14415                 yyy=`$run ./try`
14416                 case "$yyy" in
14417                 12345678901)
14418                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14419                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14420                         echo "We will use %Ld."
14421                         ;;
14422                 esac
14423         fi
14424 fi
14425
14426 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14427         $cat >try.c <<'EOCP'
14428 #include <sys/types.h>
14429 #include <stdio.h>
14430 int main() {
14431   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14432   printf("%lld\n", q);
14433 }
14434 EOCP
14435         set try
14436         if eval $compile; then
14437                 yyy=`$run ./try`
14438                 case "$yyy" in
14439                 12345678901)
14440                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14441                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14442                         echo "We will use the %lld style."
14443                         ;;
14444                 esac
14445         fi
14446 fi
14447
14448 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14449         $cat >try.c <<EOCP
14450 #include <sys/types.h>
14451 #include <stdio.h>
14452 int main() {
14453   $quadtype q = 12345678901;
14454   printf("%qd\n", q);
14455 }
14456 EOCP
14457         set try
14458         if eval $compile; then
14459                 yyy=`$run ./try`
14460                 case "$yyy" in
14461                 12345678901)
14462                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14463                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14464                         echo "We will use %qd."
14465                         ;;
14466                 esac
14467         fi
14468 fi
14469
14470 if $test X"$sPRId64" = X; then
14471         echo "Cannot figure out how to print 64-bit integers." >&4
14472 fi
14473
14474 $rm -f try try.*
14475
14476 fi
14477
14478 case "$sPRId64" in
14479 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14480         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14481         ;;
14482 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14483         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14484         ;;
14485 esac
14486
14487
14488 echo " "
14489 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14490
14491 if $test X"$ivsize" = X8; then
14492         ivdformat="$sPRId64"
14493         uvuformat="$sPRIu64"
14494         uvoformat="$sPRIo64"
14495         uvxformat="$sPRIx64"
14496         uvXUformat="$sPRIXU64"
14497 else
14498         if $test X"$ivsize" = X"$longsize"; then
14499                 ivdformat='"ld"'
14500                 uvuformat='"lu"'
14501                 uvoformat='"lo"'
14502                 uvxformat='"lx"'
14503                 uvXUformat='"lX"'
14504         else
14505                 if $test X"$ivsize" = X"$intsize"; then
14506                         ivdformat='"d"'
14507                         uvuformat='"u"'
14508                         uvoformat='"o"'
14509                         uvxformat='"x"'
14510                         uvXUformat='"X"'
14511                 else
14512                         : far out
14513                         if $test X"$ivsize" = X"$shortsize"; then
14514                                 ivdformat='"hd"'
14515                                 uvuformat='"hu"'
14516                                 uvoformat='"ho"'
14517                                 uvxformat='"hx"'
14518                                 uvXUformat='"hX"'
14519                         fi
14520                 fi
14521         fi
14522 fi
14523
14524 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14525         nveformat="$sPRIeldbl"
14526         nvfformat="$sPRIfldbl"
14527         nvgformat="$sPRIgldbl"
14528         nvEUformat="$sPRIEUldbl"
14529         nvFUformat="$sPRIFUldbl"
14530         nvGUformat="$sPRIGUldbl"
14531 else
14532         nveformat='"e"'
14533         nvfformat='"f"'
14534         nvgformat='"g"'
14535         nvEUformat='"E"'
14536         nvFUformat='"F"'
14537         nvGUformat='"G"'
14538 fi
14539
14540 case "$ivdformat" in
14541 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14542     exit 1
14543     ;;
14544 esac
14545
14546
14547 echo " "
14548 $echo "Checking the format string to be used for gids..." >&4
14549
14550 case "$gidsign" in
14551 -1)     if $test X"$gidsize" = X"$ivsize"; then
14552                 gidformat="$ivdformat"
14553         else
14554                 if $test X"$gidsize" = X"$longsize"; then
14555                         gidformat='"ld"'
14556                 else
14557                         if $test X"$gidsize" = X"$intsize"; then
14558                                 gidformat='"d"'
14559                         else
14560                                 if $test X"$gidsize" = X"$shortsize"; then
14561                                         gidformat='"hd"'
14562                                 fi
14563                         fi
14564                 fi
14565         fi
14566         ;;
14567 *)      if $test X"$gidsize" = X"$uvsize"; then
14568                 gidformat="$uvuformat"
14569         else
14570                 if $test X"$gidsize" = X"$longsize"; then
14571                         gidformat='"lu"'
14572                 else
14573                         if $test X"$gidsize" = X"$intsize"; then
14574                                 gidformat='"u"'
14575                         else
14576                                 if $test X"$gidsize" = X"$shortsize"; then
14577                                         gidformat='"hu"'
14578                                 fi
14579                         fi
14580                 fi
14581         fi
14582         ;;
14583 esac
14584
14585 : see if getgroups exists
14586 set getgroups d_getgrps
14587 eval $inlibc
14588
14589 : see if setgroups exists
14590 set setgroups d_setgrps
14591 eval $inlibc
14592
14593
14594 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14595 echo " "
14596 case "$d_getgrps$d_setgrps" in
14597 *define*)
14598         case "$groupstype" in
14599         '') dflt="$gidtype" ;;
14600         *)  dflt="$groupstype" ;;
14601         esac
14602         $cat <<EOM
14603 What type of pointer is the second argument to getgroups() and setgroups()?
14604 Usually this is the same as group ids, $gidtype, but not always.
14605
14606 EOM
14607         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14608         . ./myread
14609         groupstype="$ans"
14610         ;;
14611 *)  groupstype="$gidtype";;
14612 esac
14613
14614 echo " "
14615 echo "Checking if your $make program sets \$(MAKE)..." >&4
14616 case "$make_set_make" in
14617 '')
14618         $sed 's/^X //' > testmake.mak << 'EOF'
14619 Xall:
14620 X       @echo 'maketemp="$(MAKE)"'
14621 EOF
14622         case "`$make -f testmake.mak 2>/dev/null`" in
14623         *maketemp=*) make_set_make='#' ;;
14624         *)      make_set_make="MAKE=$make" ;;
14625         esac
14626         $rm -f testmake.mak
14627         ;;
14628 esac
14629 case "$make_set_make" in
14630 '#') echo "Yup, it does.";;
14631 *) echo "Nope, it doesn't.";;
14632 esac
14633
14634 : see what type is used for mode_t
14635 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14636 set mode_t modetype int stdio.h sys/types.h
14637 eval $typedef_ask
14638
14639 : see if stdarg is available
14640 echo " "
14641 if $test `./findhdr stdarg.h`; then
14642         echo "<stdarg.h> found." >&4
14643         valstd="$define"
14644 else
14645         echo "<stdarg.h> NOT found." >&4
14646         valstd="$undef"
14647 fi
14648
14649 : see if varags is available
14650 echo " "
14651 if $test `./findhdr varargs.h`; then
14652         echo "<varargs.h> found." >&4
14653 else
14654         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14655 fi
14656
14657 : set up the varargs testing programs
14658 $cat > varargs.c <<EOP
14659 #ifdef I_STDARG
14660 #include <stdarg.h>
14661 #endif
14662 #ifdef I_VARARGS
14663 #include <varargs.h>
14664 #endif
14665
14666 #ifdef I_STDARG
14667 int f(char *p, ...)
14668 #else
14669 int f(va_alist)
14670 va_dcl
14671 #endif
14672 {
14673         va_list ap;
14674 #ifndef I_STDARG
14675         char *p;
14676 #endif
14677 #ifdef I_STDARG
14678         va_start(ap,p);
14679 #else
14680         va_start(ap);
14681         p = va_arg(ap, char *);
14682 #endif
14683         va_end(ap);
14684 }
14685 EOP
14686 $cat > varargs <<EOP
14687 $startsh
14688 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14689         echo "true"
14690 else
14691         echo "false"
14692 fi
14693 $rm -f varargs$_o
14694 EOP
14695 chmod +x varargs
14696
14697 : now check which varargs header should be included
14698 echo " "
14699 i_varhdr=''
14700 case "$valstd" in
14701 "$define")
14702         if `./varargs I_STDARG`; then
14703                 val='stdarg.h'
14704         elif `./varargs I_VARARGS`; then
14705                 val='varargs.h'
14706         fi
14707         ;;
14708 *)
14709         if `./varargs I_VARARGS`; then
14710                 val='varargs.h'
14711         fi
14712         ;;
14713 esac
14714 case "$val" in
14715 '')
14716 echo "I could not find the definition for va_dcl... You have problems..." >&4
14717         val="$undef"; set i_stdarg; eval $setvar
14718         val="$undef"; set i_varargs; eval $setvar
14719         ;;
14720 *) 
14721         set i_varhdr
14722         eval $setvar
14723         case "$i_varhdr" in
14724         stdarg.h)
14725                 val="$define"; set i_stdarg; eval $setvar
14726                 val="$undef"; set i_varargs; eval $setvar
14727                 ;;
14728         varargs.h)
14729                 val="$undef"; set i_stdarg; eval $setvar
14730                 val="$define"; set i_varargs; eval $setvar
14731                 ;;
14732         esac
14733         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14734 esac
14735 $rm -f varargs*
14736
14737 : see if we need va_copy
14738 echo " "
14739 case "$i_stdarg" in
14740 "$define")
14741         $cat >try.c <<EOCP
14742 #include <stdarg.h>
14743 #include <stdio.h>
14744 #$i_stdlib I_STDLIB
14745 #ifdef I_STDLIB
14746 #include <stdlib.h>
14747 #endif
14748 #include <signal.h>
14749
14750 int
14751 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14752 {
14753   return vfprintf(f, fmt, *valp);
14754 }
14755  
14756 int    
14757 myvfprintf(FILE *f, const  char *fmt, va_list val)
14758 {
14759   return ivfprintf(f, fmt, &val);
14760 }
14761       
14762 int
14763 myprintf(char *fmt, ...) 
14764 {
14765   va_list val;
14766   va_start(val, fmt);
14767   return myvfprintf(stdout, fmt, val); 
14768 }         
14769
14770 int
14771 main(int ac, char **av)
14772 {
14773   signal(SIGSEGV, exit);
14774
14775   myprintf("%s%cs all right, then\n", "that", '\'');                            
14776   exit(0);      
14777 }
14778 EOCP
14779         set try
14780         if eval $compile && $run ./try 2>&1 >/dev/null; then
14781                 case "`$run ./try`" in
14782                 "that's all right, then")
14783                         okay=yes
14784                         ;;
14785                 esac
14786         fi
14787         case "$okay" in
14788         yes)    echo "It seems that you don't need va_copy()." >&4
14789                 need_va_copy="$undef"
14790                 ;;
14791         *)      echo "It seems that va_copy() or similar will be needed." >&4
14792                 need_va_copy="$define"
14793                 ;;
14794         esac
14795         $rm -f try.* core core.* *.core *.core.*
14796         ;;
14797 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14798         ;;
14799 esac
14800
14801 : define a fucntion to check prototypes
14802 $cat > protochk <<EOSH
14803 $startsh
14804 cc="$cc"
14805 optimize="$optimize"
14806 ccflags="$ccflags"
14807 prototype="$prototype"
14808 define="$define"
14809 rm=$rm
14810 EOSH
14811
14812 $cat >> protochk <<'EOSH'
14813
14814 $rm -f try.c
14815 foo="$1"
14816 shift
14817 while test $# -ge 2; do
14818         case "$1" in
14819                 $define) echo "#include <$2>" >> try.c ;;
14820                 literal) echo "$2" >> try.c ;;
14821         esac
14822     shift 2
14823 done
14824 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14825 cat >> try.c <<'EOCP'
14826 #ifdef CAN_PROTOTYPE
14827 #define _(args) args
14828 #else
14829 #define _(args) ()
14830 #endif
14831 EOCP
14832 echo "$foo" >> try.c
14833 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14834 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14835 status=$?
14836 $rm -f try.[co]
14837 exit $status
14838 EOSH
14839 chmod +x protochk
14840 $eunicefix protochk
14841
14842 : see what type is used for size_t
14843 rp="What is the type used for the length parameter for string functions?"
14844 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14845 eval $typedef_ask
14846
14847 : check for type of arguments to gethostbyaddr. 
14848 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14849         case "$d_gethbyaddr" in
14850         $define)
14851                 $cat <<EOM
14852
14853 Checking to see what type of arguments are accepted by gethostbyaddr().
14854 EOM
14855                 hdrs="$define sys/types.h
14856                         $d_socket sys/socket.h 
14857                         $i_niin netinet/in.h 
14858                         $i_netdb netdb.h
14859                         $i_unistd unistd.h"
14860                 : The first arg can 'char *' or 'void *'
14861                 : The second arg is some of integral type
14862                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14863                         for yyy in size_t long int; do
14864                                 case "$netdb_host_type" in
14865                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14866                                         if ./protochk "$try" $hdrs; then
14867                                                 echo "Your system accepts $xxx for the first arg."
14868                                                 echo "...and $yyy for the second arg."
14869                                                 netdb_host_type="$xxx"
14870                                                 netdb_hlen_type="$yyy"
14871                                         fi
14872                                         ;;
14873                                 esac
14874                         done
14875                 done
14876                 : In case none of those worked, prompt the user.
14877                 case "$netdb_host_type" in
14878                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14879                         dflt='char *'
14880                         . ./myread
14881                         netdb_host_type=$ans
14882                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14883                         dflt="$sizetype"
14884                         . ./myread
14885                         netdb_hlen_type=$ans
14886                         ;;
14887                 esac
14888                 ;;
14889         *)      : no gethostbyaddr, so pick harmless defaults
14890                 netdb_host_type='char *'
14891                 netdb_hlen_type="$sizetype"
14892                 ;;
14893         esac
14894         # Remove the "const" if needed. -- but then we'll have a 
14895         # prototype clash!
14896         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14897 fi
14898
14899 : check for type of argument to gethostbyname. 
14900 if test "X$netdb_name_type" = X ; then
14901         case "$d_gethbyname" in
14902         $define)
14903                 $cat <<EOM
14904
14905 Checking to see what type of argument is accepted by gethostbyname().
14906 EOM
14907                 hdrs="$define sys/types.h
14908                         $d_socket sys/socket.h 
14909                         $i_niin netinet/in.h 
14910                         $i_netdb netdb.h
14911                         $i_unistd unistd.h"
14912                 for xxx in "const char *" "char *"; do
14913                         case "$netdb_name_type" in
14914                         '')     try="extern struct hostent *gethostbyname($xxx);"
14915                                 if ./protochk "$try" $hdrs; then
14916                                         echo "Your system accepts $xxx."
14917                                         netdb_name_type="$xxx"
14918                                 fi
14919                                 ;;
14920                         esac
14921                 done
14922                 : In case none of those worked, prompt the user.
14923                 case "$netdb_name_type" in
14924                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14925                         dflt='char *'
14926                         . ./myread
14927                         netdb_name_type=$ans
14928                         ;;
14929                 esac
14930                 ;;
14931         *)      : no gethostbyname, so pick harmless default
14932                 netdb_name_type='char *'
14933                 ;;
14934         esac
14935 fi
14936
14937 : check for type of 1st argument to getnetbyaddr. 
14938 if test "X$netdb_net_type" = X ; then
14939         case "$d_getnbyaddr" in
14940         $define)
14941                 $cat <<EOM
14942
14943 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14944 EOM
14945                 hdrs="$define sys/types.h
14946                         $d_socket sys/socket.h 
14947                         $i_niin netinet/in.h 
14948                         $i_netdb netdb.h
14949                         $i_unistd unistd.h"
14950                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14951                         case "$netdb_net_type" in
14952                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14953                                 if ./protochk "$try" $hdrs; then
14954                                         echo "Your system accepts $xxx."
14955                                         netdb_net_type="$xxx"
14956                                 fi
14957                                 ;;
14958                         esac
14959                 done
14960                 : In case none of those worked, prompt the user.
14961                 case "$netdb_net_type" in
14962                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14963                         dflt='long'
14964                         . ./myread
14965                         netdb_net_type=$ans
14966                         ;;
14967                 esac
14968                 ;;
14969         *)      : no getnetbyaddr, so pick harmless default
14970                 netdb_net_type='long'
14971                 ;;
14972         esac
14973 fi
14974 : locate the preferred pager for this system
14975 case "$pager" in
14976 '')
14977         dflt=''
14978         case "$pg" in
14979         /*) dflt=$pg;;
14980         [a-zA-Z]:/*) dflt=$pg;;
14981         esac
14982         case "$more" in
14983         /*) dflt=$more;;
14984         [a-zA-Z]:/*) dflt=$more;;
14985         esac
14986         case "$less" in
14987         /*) dflt=$less;;
14988         [a-zA-Z]:/*) dflt=$less;;
14989         esac
14990         case "$dflt" in
14991         '') dflt=/usr/ucb/more;;
14992         esac
14993         ;;
14994 *) dflt="$pager";;
14995 esac
14996 echo " "
14997 fn=f/
14998 rp='What pager is used on your system?'
14999 . ./getfile
15000 pager="$ans"
15001
15002 : see what type pids are declared as in the kernel
15003 rp="What is the type of process ids on this system?"
15004 set pid_t pidtype int stdio.h sys/types.h
15005 eval $typedef_ask
15006
15007 : Find earliest binary compatible site_perl subdirectory perl can use.
15008 case "$bincompat5005" in
15009 "$define") xs_apiversion='5.005' ;;
15010 *) xs_apiversion=$version ;;   # The current site_perl version.
15011 esac
15012 : Find earliest pure perl site_perl subdirectory perl can use.
15013 : The versioned directories started at 5.005.
15014 pm_apiversion='5.005'
15015
15016 : see if ar generates random libraries by itself
15017 echo " "
15018 echo "Checking how to generate random libraries on your machine..." >&4
15019 echo 'int bar1() { return bar2(); }' > bar1.c
15020 echo 'int bar2() { return 2; }' > bar2.c
15021 $cat > foo.c <<'EOP'
15022 int main() { printf("%d\n", bar1()); exit(0); }
15023 EOP
15024 $cc $ccflags -c bar1.c >/dev/null 2>&1
15025 $cc $ccflags -c bar2.c >/dev/null 2>&1
15026 $cc $ccflags -c foo.c >/dev/null 2>&1
15027 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
15028 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15029         $run ./foobar >/dev/null 2>&1; then
15030         echo "$ar appears to generate random libraries itself."
15031         orderlib=false
15032         ranlib=":"
15033 elif $ar ts bar$_a >/dev/null 2>&1 &&
15034         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15035         $run ./foobar >/dev/null 2>&1; then
15036                 echo "a table of contents needs to be added with '$ar ts'."
15037                 orderlib=false
15038                 ranlib="$ar ts"
15039 else
15040         case "$ranlib" in
15041         :) ranlib='';;
15042         '')
15043                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15044                 $test -f $ranlib || ranlib=''
15045                 ;;
15046         esac
15047         if $test -n "$ranlib"; then
15048                 echo "your system has '$ranlib'; we'll use that."
15049                 orderlib=false
15050         else
15051                 echo "your system doesn't seem to support random libraries"
15052                 echo "so we'll use lorder and tsort to order the libraries."
15053                 orderlib=true
15054                 ranlib=":"
15055         fi
15056 fi
15057 $rm -f foo* bar* 
15058
15059 : check for type of arguments to select. 
15060 case "$selecttype" in
15061 '') case "$d_select" in
15062         $define)
15063                 echo " "
15064                 $cat <<EOM
15065 Checking to see what type of arguments are accepted by select().
15066 EOM
15067                 hdrs="$define sys/types.h
15068                         $i_systime sys/time.h 
15069                         $i_sysselct sys/select.h
15070                         $d_socket sys/socket.h"
15071                 : The first arg can be int, unsigned, or size_t
15072                 : The last arg may or may not be 'const'
15073                 val=''
15074                 : void pointer has been seen but using that
15075                 : breaks the selectminbits test
15076                 for xxx in 'fd_set *' 'int *'; do
15077                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15078                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
15079                                         case "$val" in
15080                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15081                                                 if ./protochk "$try" $hdrs; then
15082                                                         echo "Your system accepts $xxx."
15083                                                         val="$xxx"
15084                                                 fi
15085                                                 ;;
15086                                         esac
15087                                 done
15088                         done
15089                 done
15090                 case "$val" in
15091                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15092                         case "$d_fd_set" in
15093                                 $define) dflt="fd_set *" ;;
15094                                 *)              dflt="int *" ;;
15095                         esac
15096                         . ./myread
15097                         val=$ans
15098                         ;;
15099                 esac
15100                 selecttype="$val"
15101                 ;;
15102         *)      : no select, so pick a harmless default
15103                 selecttype='int *'
15104                 ;;
15105         esac
15106         ;;
15107 esac
15108
15109 : check for the select 'width'
15110 case "$selectminbits" in
15111 '') case "$d_select" in
15112         $define)
15113                 $cat <<EOM
15114
15115 Checking to see on how many bits at a time your select() operates...
15116 EOM
15117                 $cat >try.c <<EOCP
15118 #include <sys/types.h>
15119 #$i_time I_TIME
15120 #$i_systime I_SYS_TIME
15121 #$i_systimek I_SYS_TIME_KERNEL
15122 #ifdef I_TIME
15123 #   include <time.h>
15124 #endif
15125 #ifdef I_SYS_TIME
15126 #   ifdef I_SYS_TIME_KERNEL
15127 #       define KERNEL
15128 #   endif
15129 #   include <sys/time.h>
15130 #   ifdef I_SYS_TIME_KERNEL
15131 #       undef KERNEL
15132 #   endif
15133 #endif
15134 #$i_sysselct I_SYS_SELECT
15135 #ifdef I_SYS_SELECT
15136 #include <sys/select.h>
15137 #endif
15138 #$d_socket HAS_SOCKET
15139 #ifdef HAS_SOCKET
15140 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15141 #endif
15142 #include <stdio.h>
15143 $selecttype b;
15144 #define S sizeof(*(b))
15145 #define MINBITS 64
15146 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15147 #define NBITS  (NBYTES * 8)
15148 int main() {
15149     char s[NBYTES];
15150     struct timeval t;
15151     int i;
15152     FILE* fp;
15153     int fd;
15154
15155     fclose(stdin);
15156     fp = fopen("try.c", "r");
15157     if (fp == 0)
15158       exit(1);
15159     fd = fileno(fp);
15160     if (fd < 0)
15161       exit(2);
15162     b = ($selecttype)s;
15163     for (i = 0; i < NBITS; i++)
15164         FD_SET(i, b);
15165     t.tv_sec  = 0;
15166     t.tv_usec = 0;
15167     select(fd + 1, b, 0, 0, &t);
15168     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15169     printf("%d\n", i + 1);
15170     return 0;
15171 }
15172 EOCP
15173                 set try
15174                 if eval $compile_ok; then
15175                         selectminbits=`$run ./try`
15176                         case "$selectminbits" in
15177                         '')     cat >&4 <<EOM
15178 Cannot figure out on how many bits at a time your select() operates.
15179 I'll play safe and guess it is 32 bits.
15180 EOM
15181                                 selectminbits=32
15182                                 bits="32 bits"
15183                                 ;;
15184                         1)      bits="1 bit" ;;
15185                         *)      bits="$selectminbits bits" ;;
15186                         esac
15187                         echo "Your select() operates on $bits at a time." >&4
15188                 else
15189                         rp='What is the minimum number of bits your select() operates on?'
15190                         case "$byteorder" in
15191                         1234|12345678)  dflt=32 ;;
15192                         *)              dflt=1  ;;
15193                         esac
15194                         . ./myread
15195                         val=$ans
15196                         selectminbits="$val"
15197                 fi
15198                 $rm -f try.* try
15199                 ;;
15200         *)      : no select, so pick a harmless default
15201                 selectminbits='32'
15202                 ;;
15203         esac
15204         ;;
15205 esac
15206
15207 : Trace out the files included by signal.h, then look for SIGxxx names.
15208 : Remove SIGARRAYSIZE used by HPUX.
15209 : Remove SIGSTKSIZE used by Linux.
15210 : Remove SIGSTKSZ used by Posix.
15211 : Remove SIGTYP void lines used by OS2.
15212 : Some cpps, like os390, dont give the file name anywhere
15213 if [ "X$fieldn" = X ]; then
15214         : Just make some guesses.  We check them later.
15215         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15216 else
15217         xxx=`echo '#include <signal.h>' |
15218         $cppstdin $cppminus $cppflags 2>/dev/null |
15219         $grep '^[       ]*#.*include' | 
15220         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15221 fi
15222 : Check this list of files to be sure we have parsed the cpp output ok.
15223 : This will also avoid potentially non-existent files, such 
15224 : as ../foo/bar.h
15225 xxxfiles=''
15226 for xx in $xxx /dev/null ; do
15227         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15228 done
15229 : If we have found no files, at least try signal.h
15230 case "$xxxfiles" in
15231 '')     xxxfiles=`./findhdr signal.h` ;;
15232 esac
15233 xxx=`awk '
15234 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15235         print substr($2, 4, 20)
15236 }
15237 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15238         print substr($3, 4, 20)
15239 }' $xxxfiles`
15240 : Append some common names just in case the awk scan failed.
15241 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15242 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15243 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15244 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15245 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15246
15247 : generate a few handy files for later
15248 $cat > signal.c <<'EOCP'
15249 #include <sys/types.h>
15250 #include <signal.h>
15251 #include <stdio.h>
15252 int main() {
15253
15254 /* Strange style to avoid deeply-nested #if/#else/#endif */
15255 #ifndef NSIG
15256 #  ifdef _NSIG
15257 #    define NSIG (_NSIG)
15258 #  endif
15259 #endif
15260
15261 #ifndef NSIG
15262 #  ifdef SIGMAX
15263 #    define NSIG (SIGMAX+1)
15264 #  endif
15265 #endif
15266
15267 #ifndef NSIG
15268 #  ifdef SIG_MAX
15269 #    define NSIG (SIG_MAX+1)
15270 #  endif
15271 #endif
15272
15273 #ifndef NSIG
15274 #  ifdef MAXSIG
15275 #    define NSIG (MAXSIG+1)
15276 #  endif
15277 #endif
15278
15279 #ifndef NSIG
15280 #  ifdef MAX_SIG
15281 #    define NSIG (MAX_SIG+1)
15282 #  endif
15283 #endif
15284
15285 #ifndef NSIG
15286 #  ifdef SIGARRAYSIZE
15287 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15288 #  endif
15289 #endif
15290
15291 #ifndef NSIG
15292 #  ifdef _sys_nsig
15293 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15294 #  endif
15295 #endif
15296
15297 /* Default to some arbitrary number that's big enough to get most
15298    of the common signals.
15299 */
15300 #ifndef NSIG
15301 #    define NSIG 50
15302 #endif
15303
15304 printf("NSIG %d\n", NSIG);
15305
15306 #ifndef JUST_NSIG
15307
15308 EOCP
15309
15310 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15311 {
15312         printf "#ifdef SIG"; printf $1; printf "\n"
15313         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15314         printf $1; printf ");\n"
15315         printf "#endif\n"
15316 }
15317 END {
15318         printf "#endif /* JUST_NSIG */\n";
15319         printf "exit(0);\n}\n";
15320 }
15321 ' >>signal.c
15322 $cat >signal.awk <<'EOP'
15323 BEGIN { ndups = 0 }
15324 $1 ~ /^NSIG$/ { nsig = $2 }
15325 ($1 !~ /^NSIG$/) && (NF == 2) {
15326     if ($2 > maxsig) { maxsig = $2 }
15327     if (sig_name[$2]) {
15328         dup_name[ndups] = $1
15329         dup_num[ndups] = $2
15330         ndups++ 
15331     }
15332     else {
15333         sig_name[$2] = $1
15334         sig_num[$2] = $2
15335     }
15336 }
15337 END { 
15338     if (nsig == 0) {
15339         nsig = maxsig + 1
15340     }
15341     printf("NSIG %d\n", nsig);
15342     for (n = 1; n < nsig; n++) {
15343         if (sig_name[n]) {
15344             printf("%s %d\n", sig_name[n], sig_num[n])
15345         }
15346         else {
15347             printf("NUM%d %d\n", n, n) 
15348         }
15349     }
15350     for (n = 0; n < ndups; n++) {
15351         printf("%s %d\n", dup_name[n], dup_num[n])
15352     }
15353 }
15354 EOP
15355 $cat >signal_cmd <<EOS
15356 $startsh
15357 if $test -s signal.lst; then
15358     echo "Using your existing signal.lst file"
15359         exit 0
15360 fi
15361 xxx="$xxx"
15362 EOS
15363 $cat >>signal_cmd <<'EOS'
15364
15365 set signal
15366 if eval $compile_ok; then
15367         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15368 else
15369         echo "(I can't seem be able to compile the whole test program)" >&4
15370         echo "(I'll try it in little pieces.)" >&4
15371         set signal -DJUST_NSIG
15372         if eval $compile_ok; then
15373                 $run ./signal$_exe > signal.nsg
15374                 $cat signal.nsg
15375         else
15376                 echo "I can't seem to figure out how many signals you have." >&4
15377                 echo "Guessing 50." >&4
15378                 echo 'NSIG 50' > signal.nsg
15379         fi
15380         : Now look at all the signal names, one at a time.
15381         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15382                 $cat > signal.c <<EOCP
15383 #include <sys/types.h>
15384 #include <signal.h>
15385 #include <stdio.h>
15386 int main() {
15387 printf("$xx %d\n", SIG${xx});
15388 return 0;
15389 }
15390 EOCP
15391                 set signal
15392                 if eval $compile; then
15393                         echo "SIG${xx} found."
15394                         $run ./signal$_exe  >> signal.ls1
15395                 else
15396                         echo "SIG${xx} NOT found."
15397                 fi
15398         done
15399         if $test -s signal.ls1; then
15400                 $cat signal.nsg signal.ls1 |
15401                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15402         fi
15403
15404 fi
15405 if $test -s signal.lst; then
15406         :
15407 else
15408         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15409         echo 'kill -l' >signal
15410         set X `csh -f <signal`
15411         $rm -f signal
15412         shift
15413         case $# in
15414         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15415         esac
15416         echo $@ | $tr ' ' $trnl | \
15417             $awk '{ printf "%s %d\n", $1, ++s; }
15418                   END { printf "NSIG %d\n", ++s }' >signal.lst
15419 fi
15420 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15421 EOS
15422 chmod a+x signal_cmd
15423 $eunicefix signal_cmd
15424
15425 : generate list of signal names
15426 echo " "
15427 case "$sig_name_init" in
15428 '') doinit=yes ;;
15429 *)  case "$sig_num_init" in
15430     ''|*,*) doinit=yes ;;
15431     esac ;;
15432 esac
15433 case "$doinit" in
15434 yes)
15435         echo "Generating a list of signal names and numbers..." >&4
15436         . ./signal_cmd
15437         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15438         sig_name=`$awk 'BEGIN { printf "ZERO " }
15439                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15440         sig_num=`$awk  'BEGIN { printf "0 " }
15441                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15442         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15443                              !/^NSIG/   { printf "\"%s\", ", $1 }
15444                              END        { printf "0\n" }' signal.lst`
15445         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15446                              !/^NSIG/   { printf "%d, ", $2}
15447                              END        { printf "0\n"}' signal.lst`
15448         ;;
15449 esac
15450 echo "The following $sig_count signals are available:"
15451 echo " "
15452 echo $sig_name | $awk \
15453 'BEGIN { linelen = 0 }
15454 {
15455         for (i = 1; i <= NF; i++) {
15456                 name = "SIG" $i " "
15457                 linelen = linelen + length(name)
15458                 if (linelen > 70) {
15459                         printf "\n"
15460                         linelen = length(name)
15461                 }
15462                 printf "%s", name
15463         }
15464         printf "\n"
15465 }'
15466 sig_size=`echo $sig_name | awk '{print NF}'`
15467 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15468
15469 echo " "
15470 case "$sizetype" in
15471 *_t) zzz="$sizetype"    ;;
15472 *)   zzz="filesize"     ;;
15473 esac
15474 echo "Checking the size of $zzz..." >&4 
15475 cat > try.c <<EOCP
15476 #include <sys/types.h>
15477 #include <stdio.h>
15478 int main() {
15479     printf("%d\n", (int)sizeof($sizetype));
15480     exit(0);
15481 }
15482 EOCP
15483 set try
15484 if eval $compile_ok; then
15485         yyy=`$run ./try`
15486         case "$yyy" in
15487         '')     sizesize=4
15488                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15489                 ;;
15490         *)      sizesize=$yyy
15491                 echo "Your $zzz size is $sizesize bytes."
15492                 ;;
15493         esac
15494 else
15495         sizesize=4
15496         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15497 fi
15498
15499
15500 : check for socklen_t
15501 echo " "
15502 echo "Checking to see if you have socklen_t..." >&4
15503 $cat >try.c <<EOCP
15504 #include <sys/types.h>
15505 #$d_socket HAS_SOCKET
15506 #ifdef HAS_SOCKET
15507 #include <sys/socket.h>
15508 #endif
15509 int main() { socklen_t x = 16; }
15510 EOCP
15511 set try
15512 if eval $compile; then
15513         val="$define"
15514         echo "You have socklen_t."
15515 else
15516         val="$undef"
15517         echo "You do not have socklen_t."
15518         case "$sizetype" in
15519         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15520         esac
15521 fi
15522 $rm -f try try.*
15523 set d_socklen_t
15524 eval $setvar
15525
15526 : see if this is a socks.h system
15527 set socks.h i_socks
15528 eval $inhdr
15529
15530 : check for type of the size argument to socket calls
15531 case "$d_socket" in
15532 "$define")
15533         $cat <<EOM
15534
15535 Checking to see what type is the last argument of accept().
15536 EOM
15537         yyy=''
15538         case "$d_socklen_t" in
15539         "$define") yyy="$yyy socklen_t"
15540         esac
15541         yyy="$yyy $sizetype int long unsigned"
15542         for xxx in $yyy; do
15543                 case "$socksizetype" in
15544                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15545                         case "$usesocks" in
15546                         "$define")
15547                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15548                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15549                                         socksizetype="$xxx"
15550                                 fi
15551                                 ;;
15552                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15553                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15554                                         socksizetype="$xxx"
15555                                 fi
15556                                 ;;
15557                         esac
15558                         ;;
15559                 esac
15560         done
15561 : In case none of those worked, prompt the user.
15562         case "$socksizetype" in
15563         '')     rp='What is the type for socket address structure sizes?'
15564                 dflt='int'
15565                 . ./myread
15566                 socksizetype=$ans
15567                 ;;
15568         esac
15569         ;;
15570 *)      : no sockets, so pick relatively harmless default
15571         socksizetype='int'
15572         ;;
15573 esac
15574
15575 : see what type is used for signed size_t
15576 set ssize_t ssizetype int stdio.h sys/types.h
15577 eval $typedef
15578 dflt="$ssizetype"
15579 $cat > try.c <<EOM
15580 #include <stdio.h>
15581 #include <sys/types.h>
15582 #define Size_t $sizetype
15583 #define SSize_t $dflt
15584 int main()
15585 {
15586         if (sizeof(Size_t) == sizeof(SSize_t))
15587                 printf("$dflt\n");
15588         else if (sizeof(Size_t) == sizeof(int))
15589                 printf("int\n");
15590         else 
15591                 printf("long\n");
15592         exit(0);
15593 }
15594 EOM
15595 echo " "
15596 set try
15597 if eval $compile_ok && $run ./try > /dev/null; then
15598         ssizetype=`$run ./try`
15599         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15600 else
15601         $cat >&4 <<EOM
15602 Help! I can't compile and run the ssize_t test program: please enlighten me!
15603 (This is probably a misconfiguration in your system or libraries, and
15604 you really ought to fix it.  Still, I'll try anyway.)
15605
15606 I need a type that is the same size as $sizetype, but is guaranteed to
15607 be signed.  Common values are ssize_t, int and long.
15608
15609 EOM
15610         rp="What signed type is the same size as $sizetype?"
15611         . ./myread
15612         ssizetype="$ans"
15613 fi
15614 $rm -f try try.*
15615
15616 : see what type of char stdio uses.
15617 echo " "
15618 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15619 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15620         echo "Your stdio uses unsigned chars." >&4
15621         stdchar="unsigned char"
15622 else
15623         echo "Your stdio uses signed chars." >&4
15624         stdchar="char"
15625 fi
15626 $rm -f stdioh
15627
15628
15629
15630 : see if time exists
15631 echo " "
15632 if test "X$d_time" = X -o X"$timetype" = X; then
15633     if set time val -f d_time; eval $csym; $val; then
15634                 echo 'time() found.' >&4
15635                 val="$define"
15636                 rp="What is the type returned by time() on this system?"
15637                 set time_t timetype long stdio.h sys/types.h
15638                 eval $typedef_ask
15639     else
15640                 echo 'time() not found, hope that will do.' >&4
15641                 val="$undef"
15642                 timetype='int';
15643     fi
15644     set d_time
15645     eval $setvar
15646 fi
15647
15648 : see what type uids are declared as in the kernel
15649 echo " "
15650 echo "Looking for the type for user ids returned by getuid()."
15651 set uid_t uidtype xxx stdio.h sys/types.h
15652 eval $typedef
15653 case "$uidtype" in
15654 xxx)
15655         xxx=`./findhdr sys/user.h`
15656         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15657         case $1 in
15658         unsigned) dflt="$1 $2" ;;
15659         *) dflt="$1" ;;
15660         esac
15661         ;;
15662 *) dflt="$uidtype";;
15663 esac
15664 case "$uidtype" in
15665 uid_t)  echo "uid_t found." ;;
15666 *)      rp="What is the type for user ids returned by getuid()?"
15667         . ./myread
15668         uidtype="$ans"
15669         ;;
15670 esac
15671
15672 echo " "
15673 case "$uidtype" in
15674 *_t) zzz="$uidtype"     ;;
15675 *)   zzz="uid"          ;;
15676 esac
15677 echo "Checking the size of $zzz..." >&4 
15678 cat > try.c <<EOCP
15679 #include <sys/types.h>
15680 #include <stdio.h>
15681 int main() {
15682     printf("%d\n", (int)sizeof($uidtype));
15683     exit(0);
15684 }
15685 EOCP
15686 set try
15687 if eval $compile_ok; then
15688         yyy=`$run ./try`
15689         case "$yyy" in
15690         '')     uidsize=4
15691                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15692                 ;;
15693         *)      uidsize=$yyy
15694                 echo "Your $zzz is $uidsize bytes long."
15695                 ;;
15696         esac
15697 else
15698         uidsize=4
15699         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15700 fi
15701
15702 echo " "
15703 case "$uidtype" in
15704 *_t) zzz="$uidtype"     ;;
15705 *)   zzz="uid"          ;;
15706 esac
15707 echo "Checking the sign of $zzz..." >&4
15708 cat > try.c <<EOCP
15709 #include <sys/types.h>
15710 #include <stdio.h>
15711 int main() {
15712         $uidtype foo = -1;
15713         if (foo < 0)
15714                 printf("-1\n");
15715         else
15716                 printf("1\n");
15717 }
15718 EOCP
15719 set try
15720 if eval $compile; then
15721         yyy=`$run ./try`
15722         case "$yyy" in
15723         '')     uidsign=1
15724                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15725                 ;;
15726         *)      uidsign=$yyy
15727                 case "$uidsign" in
15728                  1) echo "Your $zzz is unsigned." ;;
15729                 -1) echo "Your $zzz is signed."   ;;
15730                 esac
15731                 ;;
15732         esac
15733 else
15734         uidsign=1
15735         echo "(I can't compile the test program--guessing unsigned.)" >&4
15736 fi
15737
15738
15739
15740 echo " "
15741 $echo "Checking the format string to be used for uids..." >&4
15742
15743 case "$uidsign" in
15744 -1)     if $test X"$uidsize" = X"$ivsize"; then
15745                 uidformat="$ivdformat"
15746         else
15747                 if $test X"$uidsize" = X"$longsize"; then
15748                         uidformat='"ld"'
15749                 else
15750                         if $test X"$uidsize" = X"$intsize"; then
15751                                 uidformat='"d"'
15752                         else
15753                                 if $test X"$uidsize" = X"$shortsize"; then
15754                                         uidformat='"hd"'
15755                                 fi
15756                         fi
15757                 fi
15758         fi
15759         ;;
15760 *)      if $test X"$uidsize" = X"$uvsize"; then
15761                 uidformat="$uvuformat"
15762         else
15763                 if $test X"$uidsize" = X"$longsize"; then
15764                         uidformat='"lu"'
15765                 else
15766                         if $test X"$uidsize" = X"$intsize"; then
15767                                 uidformat='"u"'
15768                         else
15769                                 if $test X"$uidsize" = X"$shortsize"; then
15770                                         uidformat='"hu"'
15771                                 fi
15772                         fi
15773                 fi
15774         fi
15775         ;;
15776 esac
15777
15778 : determine compiler compiler
15779 case "$yacc" in
15780 '')
15781         dflt=yacc;;
15782 *)
15783         dflt="$yacc";;
15784 esac
15785 echo " "
15786 comp='yacc'
15787 if $test -f "$byacc"; then
15788         dflt="$byacc"
15789         comp="byacc or $comp"
15790 fi
15791 if $test -f "$bison"; then
15792         comp="$comp or bison -y"
15793 fi
15794 rp="Which compiler compiler ($comp) shall I use?"
15795 . ./myread
15796 yacc="$ans"
15797 case "$yacc" in
15798 *bis*)
15799         case "$yacc" in
15800         *-y*) ;;
15801         *)
15802                 yacc="$yacc -y"
15803                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15804                 ;;
15805         esac
15806         ;;
15807 esac
15808
15809 : see if fcntl.h is there
15810 val=''
15811 set fcntl.h val
15812 eval $inhdr
15813
15814 : see if we can include fcntl.h
15815 case "$val" in
15816 "$define")
15817         echo " "
15818         if $h_fcntl; then
15819                 val="$define"
15820                 echo "We'll be including <fcntl.h>." >&4
15821         else
15822                 val="$undef"
15823                 if $h_sysfile; then
15824         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15825                 else
15826                         echo "We won't be including <fcntl.h>." >&4
15827                 fi
15828         fi
15829         ;;
15830 *)
15831         h_fcntl=false
15832         val="$undef"
15833         ;;
15834 esac
15835 set i_fcntl
15836 eval $setvar
15837
15838 : see if this is a fp.h system
15839 set fp.h i_fp
15840 eval $inhdr
15841
15842 : see if this is a fp_class.h system
15843 set fp_class.h i_fp_class
15844 eval $inhdr
15845
15846 : see if this is a ieeefp.h system
15847 set ieeefp.h i_ieeefp
15848 eval $inhdr
15849
15850 : see if this is a libutil.h system
15851 set libutil.h i_libutil
15852 eval $inhdr
15853
15854 : see if locale.h is available
15855 set locale.h i_locale
15856 eval $inhdr
15857
15858 : see if mach cthreads are available
15859 if test "X$usethreads" = "X$define"; then
15860         set mach/cthreads.h i_machcthr
15861         eval $inhdr
15862 else
15863         i_machcthr="$undef"
15864 fi
15865
15866
15867
15868 : see if this is a math.h system
15869 set math.h i_math
15870 eval $inhdr
15871
15872 : see if this is a mntent.h system
15873 set mntent.h i_mntent
15874 eval $inhdr
15875
15876 : see if ndbm.h is available
15877 set ndbm.h t_ndbm
15878 eval $inhdr
15879 case "$t_ndbm" in
15880 $define)
15881         : see if dbm_open exists
15882         set dbm_open d_dbm_open
15883         eval $inlibc
15884         case "$d_dbm_open" in
15885         $undef)
15886                 t_ndbm="$undef"
15887                 echo "We won't be including <ndbm.h>"
15888                 ;;
15889         esac
15890         ;;
15891 esac
15892 val="$t_ndbm"
15893 set i_ndbm
15894 eval $setvar
15895
15896 : see if net/errno.h is available
15897 val=''
15898 set net/errno.h val
15899 eval $inhdr
15900
15901 : Unfortunately, it causes problems on some systems.  Arrgh.
15902 case "$val" in
15903 $define)
15904         cat > try.c <<'EOM'
15905 #include <stdio.h>
15906 #include <errno.h>
15907 #include <net/errno.h>
15908 int func()
15909 {
15910         return ENOTSOCK;
15911 }
15912 EOM
15913         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15914                 echo "We'll be including <net/errno.h>." >&4
15915         else
15916                 echo "We won't be including <net/errno.h>." >&4
15917                 val="$undef"
15918         fi
15919         $rm -f try.* try
15920         ;;
15921 esac
15922 set i_neterrno
15923 eval $setvar
15924
15925 : see if netinet/tcp.h is available
15926 set netinet/tcp.h i_netinettcp
15927 eval $inhdr
15928
15929 : see if this is a poll.h system
15930 set poll.h i_poll
15931 eval $inhdr
15932
15933 : see if this is a prot.h system
15934 set prot.h i_prot
15935 eval $inhdr
15936
15937 echo " "
15938 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15939 $cat <<'EOSH' > Cppsym.know
15940 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15941 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15942 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15943 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15944 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15945 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15946 bull c cadmus clipper CMU COFF COMPILER_VERSION
15947 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15948 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15949 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
15950 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15951 GLIBC GLIBC_MINOR
15952 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
15953 H3050R H3050RX hbullx20 hcx host_mips
15954 hp200 hp300 hp700 HP700 hp800 hp9000
15955 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15956 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15957 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15958 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15959 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15960 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15961 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15962 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15963 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15964 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15965 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15966 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15967 MATH_HAS_NO_SIDE_EFFECTS
15968 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15969 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15970 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15971 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15972 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15973 NetBSD news1500 news1700 news1800 news1900 news3700
15974 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15975 ns32016 ns32332 ns32k nsc32000
15976 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15977 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15978 pc532 pdp11 PGC PIC plexus PORTAR posix
15979 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15980 POSIX_C_SOURCE POSIX_SOURCE POWER
15981 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15982 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15983 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15984 sony sony_news sonyrisc sparc sparclite spectrum
15985 stardent stdc STDC_EXT stratos sun sun3 sun386
15986 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15987 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15988 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15989 sysV68 sysV88 Tek4132 Tek4300 titan
15990 TM3200 TM5400 TM5600
15991 tower tower32 tower32_200 tower32_600 tower32_700
15992 tower32_800 tower32_850 tss
15993 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15994 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15995 unix UNIX95 UNIX99 unixpc unos
15996 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
15997 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
15998 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
15999 USGr4 USGr4_2
16000 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
16001 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
16002 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
16003 z8000
16004 EOSH
16005 # Maybe put other stuff here too.
16006 cat <<EOSH >>Cppsym.know
16007 $osname
16008 EOSH
16009 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
16010 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
16011 $cat Cppsym.know > Cppsym.c
16012 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
16013 $rm -f Cppsym.a Cppsym.b Cppsym.c
16014 cat <<EOSH > Cppsym
16015 $startsh
16016 if $test \$# -gt 0; then
16017     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
16018     if $test -s Cppsym.got; then
16019         $rm -f Cppsym.got
16020         exit 0
16021     fi
16022     $rm -f Cppsym.got
16023     exit 1
16024 else
16025     $tr " " "$trnl" | ./Cppsym.try
16026     exit 0
16027 fi
16028 EOSH
16029 chmod +x Cppsym
16030 $eunicefix Cppsym
16031 cat <<EOSH > Cppsym.try
16032 $startsh
16033 cat <<'EOCP' > try.c
16034 #include <stdio.h>
16035 int main() {
16036 EOCP
16037 $awk \\
16038 EOSH
16039 cat <<'EOSH' >> Cppsym.try
16040 'length($1) > 0 {
16041     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
16042     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
16043     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
16044     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
16045 }'       >> try.c
16046 echo 'return 0;}' >> try.c
16047 EOSH
16048 cat <<EOSH >> Cppsym.try
16049 ccflags="$ccflags"
16050 case "$osname-$gccversion" in
16051 irix-) ccflags="\$ccflags -woff 1178" ;;
16052 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16053 esac
16054 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
16055 EOSH
16056 chmod +x Cppsym.try
16057 $eunicefix Cppsym.try
16058 ./Cppsym < Cppsym.know > Cppsym.true
16059 : now check the C compiler for additional symbols
16060 postprocess_cc_v=''
16061 case "$osname" in
16062 aix) postprocess_cc_v="|$tr , ' '" ;;
16063 esac
16064 $cat >ccsym <<EOS
16065 $startsh
16066 $cat >tmp.c <<EOF
16067 extern int foo;
16068 EOF
16069 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16070 do
16071         case "\$i" in
16072         -D*) echo "\$i" | $sed 's/^-D//';;
16073         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16074         esac
16075 done
16076 $rm -f try.c
16077 EOS
16078 postprocess_cc_v=''
16079 chmod +x ccsym
16080 $eunicefix ccsym
16081 ./ccsym > ccsym1.raw
16082 if $test -s ccsym1.raw; then
16083        $sort ccsym1.raw | $uniq >ccsym.raw
16084 else
16085        mv ccsym1.raw ccsym.raw
16086 fi
16087
16088 $awk '/\=/ { print $0; next }
16089         { print $0"=1" }' ccsym.raw >ccsym.list
16090 $awk '/\=/ { print $0; next }
16091         { print $0"=1" }' Cppsym.true >ccsym.true
16092 $comm -13 ccsym.true ccsym.list >ccsym.own
16093 $comm -12 ccsym.true ccsym.list >ccsym.com
16094 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16095 also=''
16096 if $test -z ccsym.raw; then
16097         echo "Your C compiler doesn't seem to define any symbols!" >&4
16098         echo " "
16099         echo "However, your C preprocessor defines the following symbols:"
16100         $cat Cppsym.true
16101         ccsymbols=''
16102         cppsymbols=`$cat Cppsym.true`
16103         cppsymbols=`echo $cppsymbols`
16104         cppccsymbols="$cppsymbols"
16105 else
16106         if $test -s ccsym.com; then
16107                 echo "Your C compiler and pre-processor define these symbols:"
16108                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16109                 also='also '
16110                 symbols='ones'
16111                 cppccsymbols=`$cat ccsym.com`
16112                 cppccsymbols=`echo $cppccsymbols`
16113                 $test "$silent" || sleep 1
16114         fi
16115         if $test -s ccsym.cpp; then
16116                 $test "$also" && echo " "
16117                 echo "Your C pre-processor ${also}defines the following symbols:"
16118                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16119                 also='further '
16120                 cppsymbols=`$cat ccsym.cpp`
16121                 cppsymbols=`echo $cppsymbols`
16122                 $test "$silent" || sleep 1
16123         fi
16124         if $test -s ccsym.own; then
16125                 $test "$also" && echo " "
16126                 echo "Your C compiler ${also}defines the following cpp symbols:"
16127                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16128                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16129                 ccsymbols=`$cat ccsym.own`
16130                 ccsymbols=`echo $ccsymbols`
16131                 $test "$silent" || sleep 1
16132         fi
16133 fi
16134
16135 : see if this is a termio system
16136 val="$undef"
16137 val2="$undef"
16138 val3="$undef"
16139 if $test `./findhdr termios.h`; then
16140         set tcsetattr i_termios
16141         eval $inlibc
16142         val3="$i_termios"
16143 fi
16144 echo " "
16145 case "$val3" in
16146 "$define") echo "You have POSIX termios.h... good!" >&4;;
16147 *) if ./Cppsym pyr; then
16148                 case "`/bin/universe`" in
16149                 ucb) if $test `./findhdr sgtty.h`; then
16150                                 val2="$define"
16151                                 echo "<sgtty.h> found." >&4
16152                         else
16153                                 echo "System is pyramid with BSD universe."
16154                                 echo "<sgtty.h> not found--you could have problems." >&4
16155                         fi;;
16156                 *) if $test `./findhdr termio.h`; then
16157                                 val="$define"
16158                                 echo "<termio.h> found." >&4
16159                         else
16160                                 echo "System is pyramid with USG universe."
16161                                 echo "<termio.h> not found--you could have problems." >&4
16162                         fi;;
16163                 esac
16164         elif ./usg; then
16165                 if $test `./findhdr termio.h`; then
16166                         echo "<termio.h> found." >&4
16167                         val="$define"
16168                 elif $test `./findhdr sgtty.h`; then
16169                         echo "<sgtty.h> found." >&4
16170                         val2="$define"
16171                 else
16172 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16173                 fi
16174         else
16175                 if $test `./findhdr sgtty.h`; then
16176                         echo "<sgtty.h> found." >&4
16177                         val2="$define"
16178                 elif $test `./findhdr termio.h`; then
16179                         echo "<termio.h> found." >&4
16180                         val="$define"
16181                 else
16182 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16183                 fi
16184         fi;;
16185 esac
16186 set i_termio; eval $setvar
16187 val=$val2; set i_sgtty; eval $setvar
16188 val=$val3; set i_termios; eval $setvar
16189
16190 : see if this is a shadow.h system
16191 set shadow.h i_shadow
16192 eval $inhdr
16193
16194 : see if stddef is available
16195 set stddef.h i_stddef
16196 eval $inhdr
16197
16198 : see if this is a sunmath.h system
16199 set sunmath.h i_sunmath
16200 eval $inhdr
16201
16202 : see if sys/access.h is available
16203 set sys/access.h i_sysaccess
16204 eval $inhdr
16205
16206 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16207 set sys/filio.h i_sysfilio
16208 eval $inhdr
16209 echo " "
16210 if $test `./findhdr sys/ioctl.h`; then
16211         val="$define"
16212         echo '<sys/ioctl.h> found.' >&4
16213 else
16214         val="$undef"
16215         if $test $i_sysfilio = "$define"; then
16216             echo '<sys/ioctl.h> NOT found.' >&4
16217         else
16218                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16219                 $test $i_termio = "$define" && xxx="termio.h"
16220                 $test $i_termios = "$define" && xxx="termios.h"
16221 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16222         fi
16223 fi
16224 set i_sysioctl
16225 eval $setvar
16226
16227 : see if socket ioctl defs are in sys/sockio.h
16228 echo " "
16229 xxx=`./findhdr sys/sockio.h`
16230 if $test "$xxx"; then
16231         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16232                 val="$define"
16233                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16234         else
16235                 val="$undef"
16236                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16237         fi
16238 else
16239         val="$undef"
16240         $cat <<EOM
16241 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16242 EOM
16243 fi
16244 set i_syssockio
16245 eval $setvar
16246
16247
16248 : see if this is a syslog.h system
16249 set syslog.h i_syslog
16250 eval $inhdr
16251
16252
16253 : see if this is a sys/mode.h system
16254 set sys/mode.h i_sysmode
16255 eval $inhdr
16256
16257 : see if sys/resource.h has to be included
16258 set sys/resource.h i_sysresrc
16259 eval $inhdr
16260
16261 : see if sys/security.h is available
16262 set sys/security.h i_syssecrt
16263 eval $inhdr
16264
16265 : see if this is a sys/statvfs.h system
16266 set sys/statvfs.h i_sysstatvfs
16267 eval $inhdr
16268
16269 : see if this is a sys/un.h system
16270 set sys/un.h i_sysun
16271 eval $inhdr
16272
16273
16274 : see if this is a sys/utsname.h system
16275 set sys/utsname.h i_sysutsname
16276 eval $inhdr
16277
16278 : see if this is a syswait system
16279 set sys/wait.h i_syswait
16280 eval $inhdr
16281
16282 : see if this is a ustat.h system
16283 set ustat.h i_ustat
16284 eval $inhdr
16285
16286 : see if this is an utime system
16287 set utime.h i_utime
16288 eval $inhdr
16289
16290 : see if this is a values.h system
16291 set values.h i_values
16292 eval $inhdr
16293
16294 : see if this is a vfork system
16295 case "$d_vfork" in
16296 "$define")
16297         set vfork.h i_vfork
16298         eval $inhdr
16299         ;;
16300 *)
16301         i_vfork="$undef"
16302         ;;
16303 esac
16304
16305 : see if gdbm.h is available
16306 set gdbm.h t_gdbm
16307 eval $inhdr
16308 case "$t_gdbm" in
16309 $define)
16310         : see if gdbm_open exists
16311         set gdbm_open d_gdbm_open
16312         eval $inlibc
16313         case "$d_gdbm_open" in
16314         $undef)
16315                 t_gdbm="$undef"
16316                 echo "We won't be including <gdbm.h>"
16317                 ;;
16318         esac
16319         ;;
16320 esac
16321 val="$t_gdbm"
16322 set i_gdbm
16323 eval $setvar
16324
16325 echo " "
16326 echo "Looking for extensions..." >&4
16327 : If we are using the old config.sh, known_extensions may contain
16328 : old or inaccurate or duplicate values.
16329 known_extensions=''
16330 nonxs_extensions=''
16331 : We do not use find because it might not be available.
16332 : We do not just use MANIFEST because the user may have dropped
16333 : some additional extensions into the source tree and expect them
16334 : to be built.
16335
16336 : Function to recursively find available extensions, ignoring DynaLoader
16337 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16338 find_extensions='
16339     for xxx in *; do
16340        case "$xxx" in
16341            DynaLoader|dynaload) ;;
16342            *)
16343            if $test -f $xxx/$xxx.xs; then
16344                known_extensions="$known_extensions $1$xxx";
16345            elif $test -f $xxx/Makefile.PL; then
16346                nonxs_extensions="$nonxs_extensions $1$xxx";
16347            else
16348                if $test -d $xxx -a $# -lt 10; then
16349                    set $1$xxx/ $*;
16350                    cd $xxx;
16351                    eval $find_extensions;
16352                    cd ..;
16353                    shift;
16354                fi;
16355            fi
16356            ;;
16357        esac;
16358     done'
16359 tdir=`pwd`
16360 cd $rsrc/ext
16361 set X
16362 shift
16363 eval $find_extensions
16364 # Special case:  Add in threads/shared since it is not picked up by the
16365 # recursive find above (and adding in general recursive finding breaks
16366 # SDBM_File/sdbm).  A.D.  10/25/2001.
16367 known_extensions="$known_extensions threads/shared"
16368 set X $nonxs_extensions
16369 shift
16370 nonxs_extensions="$*"
16371 set X $known_extensions
16372 shift
16373 known_extensions="$*"
16374 cd $tdir
16375
16376 : Now see which are supported on this system.
16377 avail_ext=''
16378 for xxx in $known_extensions ; do
16379         case "$xxx" in
16380         DB_File|db_file)
16381                 case "$i_db" in
16382                 $define) avail_ext="$avail_ext $xxx" ;;
16383                 esac
16384                 ;;
16385         GDBM_File|gdbm_fil)
16386                 case "$i_gdbm" in 
16387                 $define) avail_ext="$avail_ext $xxx" ;;
16388                 esac
16389                 ;;
16390         I18N/Langinfo|i18n_lan)
16391                 case "$i_langinfo$d_nl_langinfo" in 
16392                 $define$define) avail_ext="$avail_ext $xxx" ;;
16393                 esac
16394                 ;;
16395         NDBM_File|ndbm_fil)
16396                 case "$i_ndbm" in
16397                 $define)
16398                     case "$osname-$use64bitint" in
16399                     cygwin-*|hpux-define)
16400                         case "$libs" in
16401                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16402                         esac
16403                         ;;
16404                     *) avail_ext="$avail_ext $xxx" ;;
16405                     esac
16406                     ;;
16407                 esac
16408                 ;;
16409         ODBM_File|odbm_fil) 
16410                 case "${i_dbm}${i_rpcsvcdbm}" in
16411                 *"${define}"*)
16412                     case "$osname-$use64bitint" in
16413                     cygwin-*|hpux-define)
16414                         case "$libs" in
16415                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16416                         esac
16417                         ;;
16418                     *) avail_ext="$avail_ext $xxx" ;;
16419                     esac
16420                     ;;
16421                 esac
16422                 ;;
16423         POSIX|posix)
16424                 case "$useposix" in
16425                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16426                 esac
16427                 ;;
16428         Opcode|opcode)
16429                 case "$useopcode" in
16430                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16431                 esac
16432                 ;;
16433         Socket|socket)
16434                 case "$d_socket" in 
16435                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16436                 esac
16437                 ;;
16438         Sys/Syslog|sys/syslog)
16439                 : XXX syslog requires socket
16440                 case "$d_socket" in 
16441                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16442                 esac
16443                 ;;
16444         Thread|thread)
16445                 case "$usethreads" in
16446                 true|$define|y)
16447                         case "$useithreads" in
16448                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16449                         esac
16450                 esac
16451                 ;;
16452         threads|threads/shared)
16453                 case "$usethreads" in
16454                 true|$define|y)
16455                         case "$useithreads" in
16456                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16457                         esac
16458                 esac
16459                 ;;
16460         IPC/SysV|ipc/sysv)
16461                 : XXX Do we need a useipcsysv variable here
16462                 case "${d_msg}${d_sem}${d_shm}" in 
16463                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16464                 esac
16465                 ;;
16466         *)      avail_ext="$avail_ext $xxx"
16467                 ;;
16468         esac
16469 done
16470
16471 set X $avail_ext
16472 shift
16473 avail_ext="$*"
16474
16475 : Now see which nonxs extensions are supported on this system.
16476 : For now assume all are.
16477 nonxs_ext=''
16478 for xxx in $nonxs_extensions ; do
16479         case "$xxx" in
16480         *)      nonxs_ext="$nonxs_ext $xxx"
16481                 ;;
16482         esac
16483 done
16484
16485 set X $nonxs_ext
16486 shift
16487 nonxs_ext="$*"
16488
16489 case $usedl in
16490 $define)
16491         $cat <<EOM
16492 A number of extensions are supplied with $package.  You may choose to
16493 compile these extensions for dynamic loading (the default), compile
16494 them into the $package executable (static loading), or not include
16495 them at all.  Answer "none" to include no extensions.
16496 Note that DynaLoader is always built and need not be mentioned here.
16497
16498 EOM
16499         case "$dynamic_ext" in
16500         '') dflt="$avail_ext" ;;
16501         *)      dflt="$dynamic_ext"
16502                 # Perhaps we are reusing an old out-of-date config.sh.
16503                 case "$hint" in
16504                 previous)
16505                         if test X"$dynamic_ext" != X"$avail_ext"; then
16506                                 $cat <<EOM
16507 NOTICE:  Your previous config.sh list may be incorrect. 
16508 The extensions now available to you are 
16509         ${avail_ext}
16510 but the default list from your previous config.sh is
16511         ${dynamic_ext} 
16512
16513 EOM
16514                         fi
16515                         ;;
16516                 esac
16517                 ;;
16518         esac
16519         case "$dflt" in
16520         '')     dflt=none;;
16521         esac
16522         rp="What extensions do you wish to load dynamically?"
16523         . ./myread
16524         case "$ans" in
16525         none) dynamic_ext=' ' ;;
16526         *) dynamic_ext="$ans" ;;
16527         esac
16528
16529         case "$static_ext" in
16530         '')
16531                 : Exclude those already listed in dynamic linking
16532                 dflt=''
16533                 for xxx in $avail_ext; do
16534                         case " $dynamic_ext " in
16535                         *" $xxx "*) ;;
16536                         *) dflt="$dflt $xxx" ;;
16537                         esac
16538                 done
16539                 set X $dflt
16540                 shift
16541                 dflt="$*"
16542                 ;;
16543         *)  dflt="$static_ext" 
16544                 ;;
16545         esac
16546
16547         case "$dflt" in
16548         '')     dflt=none;;
16549         esac
16550         rp="What extensions do you wish to load statically?"
16551         . ./myread
16552         case "$ans" in
16553         none) static_ext=' ' ;;
16554         *) static_ext="$ans" ;;
16555         esac
16556         ;;
16557 *)
16558         $cat <<EOM
16559 A number of extensions are supplied with $package.  Answer "none" 
16560 to include no extensions. 
16561 Note that DynaLoader is always built and need not be mentioned here.
16562
16563 EOM
16564         case "$static_ext" in
16565         '') dflt="$avail_ext" ;;
16566         *)      dflt="$static_ext"
16567                 # Perhaps we are reusing an old out-of-date config.sh.
16568                 case "$hint" in
16569                 previous)
16570                         if test X"$static_ext" != X"$avail_ext"; then
16571                                 $cat <<EOM
16572 NOTICE:  Your previous config.sh list may be incorrect. 
16573 The extensions now available to you are 
16574         ${avail_ext}
16575 but the default list from your previous config.sh is
16576         ${static_ext} 
16577
16578 EOM
16579                         fi
16580                         ;;
16581                 esac
16582                 ;;
16583         esac
16584         : Exclude those that are not xs extensions
16585         case "$dflt" in
16586         '')     dflt=none;;
16587         esac
16588         rp="What extensions do you wish to include?"
16589         . ./myread
16590         case "$ans" in
16591         none) static_ext=' ' ;;
16592         *) static_ext="$ans" ;;
16593         esac
16594         ;;
16595 esac
16596
16597 set X $dynamic_ext $static_ext $nonxs_ext
16598 shift
16599 extensions="$*"
16600
16601 : Remove libraries needed only for extensions
16602 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16603 : The exception is SunOS 4.x, which needs them.
16604 case "${osname}X${osvers}" in
16605 sunos*X4*)
16606     perllibs="$libs"
16607     ;;
16608 *) case "$usedl" in
16609     $define|true|[yY]*)
16610             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16611             shift
16612             perllibs="$*"
16613             ;;
16614     *)  perllibs="$libs"
16615             ;;
16616     esac
16617     ;;
16618 esac
16619
16620 : Remove build directory name from cppstdin so it can be used from
16621 : either the present location or the final installed location.
16622 echo " "
16623 : Get out of the UU directory to get correct path name.
16624 cd ..
16625 case "$cppstdin" in
16626 `pwd`/cppstdin)
16627         echo "Stripping down cppstdin path name"
16628         cppstdin=cppstdin
16629         ;;
16630 esac
16631 cd UU
16632
16633 : end of configuration questions
16634 echo " "
16635 echo "End of configuration questions."
16636 echo " "
16637
16638 : back to where it started
16639 if test -d ../UU; then
16640         cd ..
16641 fi
16642
16643 : configuration may be patched via a 'config.arch' file
16644 if $test -f config.arch; then
16645         echo "I see a config.arch file, loading it."
16646         . ./config.arch
16647 fi
16648
16649 : configuration may be patched via a 'config.over' file
16650 if $test -f config.over; then
16651         echo " "
16652         dflt=y
16653         rp='I see a config.over file.  Do you wish to load it?'
16654         . UU/myread
16655         case "$ans" in
16656         n*) echo "OK, I'll ignore it.";;
16657         *)      . ./config.over
16658                 echo "Configuration override changes have been loaded."
16659                 ;;
16660         esac
16661 fi
16662
16663 : in case they want portability, strip down executable paths
16664 case "$d_portable" in
16665 "$define")
16666         echo " "
16667         echo "Stripping down executable paths..." >&4
16668         for file in $loclist $trylist; do
16669                 eval temp=\$$file
16670                 eval $file=`basename $temp`
16671         done
16672         ;;
16673 esac
16674
16675 : create config.sh file
16676 echo " "
16677 echo "Creating config.sh..." >&4
16678 $spitshell <<EOT >config.sh
16679 $startsh
16680 #
16681 # This file was produced by running the Configure script. It holds all the
16682 # definitions figured out by Configure. Should you modify one of these values,
16683 # do not forget to propagate your changes by running "Configure -der". You may
16684 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16685 #
16686
16687 # Package name      : $package
16688 # Source directory  : $src
16689 # Configuration time: $cf_time
16690 # Configured by     : $cf_by
16691 # Target system     : $myuname
16692
16693 Author='$Author'
16694 Date='$Date'
16695 Header='$Header'
16696 Id='$Id'
16697 Locker='$Locker'
16698 Log='$Log'
16699 Mcc='$Mcc'
16700 RCSfile='$RCSfile'
16701 Revision='$Revision'
16702 Source='$Source'
16703 State='$State'
16704 _a='$_a'
16705 _exe='$_exe'
16706 _o='$_o'
16707 afs='$afs'
16708 afsroot='$afsroot'
16709 alignbytes='$alignbytes'
16710 ansi2knr='$ansi2knr'
16711 aphostname='$aphostname'
16712 api_revision='$api_revision'
16713 api_subversion='$api_subversion'
16714 api_version='$api_version'
16715 api_versionstring='$api_versionstring'
16716 ar='$ar'
16717 archlib='$archlib'
16718 archlibexp='$archlibexp'
16719 archname64='$archname64'
16720 archname='$archname'
16721 archobjs='$archobjs'
16722 awk='$awk'
16723 baserev='$baserev'
16724 bash='$bash'
16725 bin='$bin'
16726 bincompat5005='$bincompat5005'
16727 binexp='$binexp'
16728 bison='$bison'
16729 byacc='$byacc'
16730 byteorder='$byteorder'
16731 c='$c'
16732 castflags='$castflags'
16733 cat='$cat'
16734 cc='$cc'
16735 cccdlflags='$cccdlflags'
16736 ccdlflags='$ccdlflags'
16737 ccflags='$ccflags'
16738 ccflags_uselargefiles='$ccflags_uselargefiles'
16739 ccname='$ccname'
16740 ccsymbols='$ccsymbols'
16741 ccversion='$ccversion'
16742 cf_by='$cf_by'
16743 cf_email='$cf_email'
16744 cf_time='$cf_time'
16745 charsize='$charsize'
16746 chgrp='$chgrp'
16747 chmod='$chmod'
16748 chown='$chown'
16749 clocktype='$clocktype'
16750 comm='$comm'
16751 compress='$compress'
16752 contains='$contains'
16753 cp='$cp'
16754 cpio='$cpio'
16755 cpp='$cpp'
16756 cpp_stuff='$cpp_stuff'
16757 cppccsymbols='$cppccsymbols'
16758 cppflags='$cppflags'
16759 cpplast='$cpplast'
16760 cppminus='$cppminus'
16761 cpprun='$cpprun'
16762 cppstdin='$cppstdin'
16763 cppsymbols='$cppsymbols'
16764 cryptlib='$cryptlib'
16765 csh='$csh'
16766 d_Gconvert='$d_Gconvert'
16767 d_PRIEUldbl='$d_PRIEUldbl'
16768 d_PRIFUldbl='$d_PRIFUldbl'
16769 d_PRIGUldbl='$d_PRIGUldbl'
16770 d_PRIXU64='$d_PRIXU64'
16771 d_PRId64='$d_PRId64'
16772 d_PRIeldbl='$d_PRIeldbl'
16773 d_PRIfldbl='$d_PRIfldbl'
16774 d_PRIgldbl='$d_PRIgldbl'
16775 d_PRIi64='$d_PRIi64'
16776 d_PRIo64='$d_PRIo64'
16777 d_PRIu64='$d_PRIu64'
16778 d_PRIx64='$d_PRIx64'
16779 d_SCNfldbl='$d_SCNfldbl'
16780 d__fwalk='$d__fwalk'
16781 d_access='$d_access'
16782 d_accessx='$d_accessx'
16783 d_alarm='$d_alarm'
16784 d_archlib='$d_archlib'
16785 d_atolf='$d_atolf'
16786 d_atoll='$d_atoll'
16787 d_attribut='$d_attribut'
16788 d_bcmp='$d_bcmp'
16789 d_bcopy='$d_bcopy'
16790 d_bincompat5005='$d_bincompat5005'
16791 d_bsd='$d_bsd'
16792 d_bsdgetpgrp='$d_bsdgetpgrp'
16793 d_bsdsetpgrp='$d_bsdsetpgrp'
16794 d_bzero='$d_bzero'
16795 d_casti32='$d_casti32'
16796 d_castneg='$d_castneg'
16797 d_charvspr='$d_charvspr'
16798 d_chown='$d_chown'
16799 d_chroot='$d_chroot'
16800 d_chsize='$d_chsize'
16801 d_class='$d_class'
16802 d_closedir='$d_closedir'
16803 d_cmsghdr_s='$d_cmsghdr_s'
16804 d_const='$d_const'
16805 d_crypt='$d_crypt'
16806 d_csh='$d_csh'
16807 d_cuserid='$d_cuserid'
16808 d_dbl_dig='$d_dbl_dig'
16809 d_dbminitproto='$d_dbminitproto'
16810 d_difftime='$d_difftime'
16811 d_dirnamlen='$d_dirnamlen'
16812 d_dlerror='$d_dlerror'
16813 d_dlopen='$d_dlopen'
16814 d_dlsymun='$d_dlsymun'
16815 d_dosuid='$d_dosuid'
16816 d_drand48proto='$d_drand48proto'
16817 d_dup2='$d_dup2'
16818 d_eaccess='$d_eaccess'
16819 d_endgrent='$d_endgrent'
16820 d_endhent='$d_endhent'
16821 d_endnent='$d_endnent'
16822 d_endpent='$d_endpent'
16823 d_endpwent='$d_endpwent'
16824 d_endsent='$d_endsent'
16825 d_eofnblk='$d_eofnblk'
16826 d_eunice='$d_eunice'
16827 d_fchdir='$d_fchdir'
16828 d_fchmod='$d_fchmod'
16829 d_fchown='$d_fchown'
16830 d_fcntl='$d_fcntl'
16831 d_fcntl_can_lock='$d_fcntl_can_lock'
16832 d_fd_macros='$d_fd_macros'
16833 d_fd_set='$d_fd_set'
16834 d_fds_bits='$d_fds_bits'
16835 d_fgetpos='$d_fgetpos'
16836 d_finite='$d_finite'
16837 d_finitel='$d_finitel'
16838 d_flexfnam='$d_flexfnam'
16839 d_flock='$d_flock'
16840 d_flockproto='$d_flockproto'
16841 d_fork='$d_fork'
16842 d_fp_class='$d_fp_class'
16843 d_fpathconf='$d_fpathconf'
16844 d_fpclass='$d_fpclass'
16845 d_fpclassify='$d_fpclassify'
16846 d_fpclassl='$d_fpclassl'
16847 d_fpos64_t='$d_fpos64_t'
16848 d_frexpl='$d_frexpl'
16849 d_fs_data_s='$d_fs_data_s'
16850 d_fseeko='$d_fseeko'
16851 d_fsetpos='$d_fsetpos'
16852 d_fstatfs='$d_fstatfs'
16853 d_fstatvfs='$d_fstatvfs'
16854 d_fsync='$d_fsync'
16855 d_ftello='$d_ftello'
16856 d_ftime='$d_ftime'
16857 d_getcwd='$d_getcwd'
16858 d_getespwnam='$d_getespwnam'
16859 d_getfsstat='$d_getfsstat'
16860 d_getgrent='$d_getgrent'
16861 d_getgrps='$d_getgrps'
16862 d_gethbyaddr='$d_gethbyaddr'
16863 d_gethbyname='$d_gethbyname'
16864 d_gethent='$d_gethent'
16865 d_gethname='$d_gethname'
16866 d_gethostprotos='$d_gethostprotos'
16867 d_getitimer='$d_getitimer'
16868 d_getlogin='$d_getlogin'
16869 d_getmnt='$d_getmnt'
16870 d_getmntent='$d_getmntent'
16871 d_getnbyaddr='$d_getnbyaddr'
16872 d_getnbyname='$d_getnbyname'
16873 d_getnent='$d_getnent'
16874 d_getnetprotos='$d_getnetprotos'
16875 d_getpagsz='$d_getpagsz'
16876 d_getpbyname='$d_getpbyname'
16877 d_getpbynumber='$d_getpbynumber'
16878 d_getpent='$d_getpent'
16879 d_getpgid='$d_getpgid'
16880 d_getpgrp2='$d_getpgrp2'
16881 d_getpgrp='$d_getpgrp'
16882 d_getppid='$d_getppid'
16883 d_getprior='$d_getprior'
16884 d_getprotoprotos='$d_getprotoprotos'
16885 d_getprpwnam='$d_getprpwnam'
16886 d_getpwent='$d_getpwent'
16887 d_getsbyname='$d_getsbyname'
16888 d_getsbyport='$d_getsbyport'
16889 d_getsent='$d_getsent'
16890 d_getservprotos='$d_getservprotos'
16891 d_getspnam='$d_getspnam'
16892 d_gettimeod='$d_gettimeod'
16893 d_gnulibc='$d_gnulibc'
16894 d_grpasswd='$d_grpasswd'
16895 d_hasmntopt='$d_hasmntopt'
16896 d_htonl='$d_htonl'
16897 d_index='$d_index'
16898 d_inetaton='$d_inetaton'
16899 d_int64_t='$d_int64_t'
16900 d_isascii='$d_isascii'
16901 d_isfinite='$d_isfinite'
16902 d_isinf='$d_isinf'
16903 d_isnan='$d_isnan'
16904 d_isnanl='$d_isnanl'
16905 d_killpg='$d_killpg'
16906 d_lchown='$d_lchown'
16907 d_ldbl_dig='$d_ldbl_dig'
16908 d_link='$d_link'
16909 d_locconv='$d_locconv'
16910 d_lockf='$d_lockf'
16911 d_longdbl='$d_longdbl'
16912 d_longlong='$d_longlong'
16913 d_lseekproto='$d_lseekproto'
16914 d_lstat='$d_lstat'
16915 d_madvise='$d_madvise'
16916 d_mblen='$d_mblen'
16917 d_mbstowcs='$d_mbstowcs'
16918 d_mbtowc='$d_mbtowc'
16919 d_memchr='$d_memchr'
16920 d_memcmp='$d_memcmp'
16921 d_memcpy='$d_memcpy'
16922 d_memmove='$d_memmove'
16923 d_memset='$d_memset'
16924 d_mkdir='$d_mkdir'
16925 d_mkdtemp='$d_mkdtemp'
16926 d_mkfifo='$d_mkfifo'
16927 d_mkstemp='$d_mkstemp'
16928 d_mkstemps='$d_mkstemps'
16929 d_mktime='$d_mktime'
16930 d_mmap='$d_mmap'
16931 d_modfl='$d_modfl'
16932 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16933 d_mprotect='$d_mprotect'
16934 d_msg='$d_msg'
16935 d_msg_ctrunc='$d_msg_ctrunc'
16936 d_msg_dontroute='$d_msg_dontroute'
16937 d_msg_oob='$d_msg_oob'
16938 d_msg_peek='$d_msg_peek'
16939 d_msg_proxy='$d_msg_proxy'
16940 d_msgctl='$d_msgctl'
16941 d_msgget='$d_msgget'
16942 d_msghdr_s='$d_msghdr_s'
16943 d_msgrcv='$d_msgrcv'
16944 d_msgsnd='$d_msgsnd'
16945 d_msync='$d_msync'
16946 d_munmap='$d_munmap'
16947 d_mymalloc='$d_mymalloc'
16948 d_nice='$d_nice'
16949 d_nl_langinfo='$d_nl_langinfo'
16950 d_nv_preserves_uv='$d_nv_preserves_uv'
16951 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16952 d_off64_t='$d_off64_t'
16953 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16954 d_oldpthreads='$d_oldpthreads'
16955 d_oldsock='$d_oldsock'
16956 d_open3='$d_open3'
16957 d_pathconf='$d_pathconf'
16958 d_pause='$d_pause'
16959 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16960 d_phostname='$d_phostname'
16961 d_pipe='$d_pipe'
16962 d_poll='$d_poll'
16963 d_portable='$d_portable'
16964 d_procselfexe='$d_procselfexe'
16965 d_pthread_atfork='$d_pthread_atfork'
16966 d_pthread_yield='$d_pthread_yield'
16967 d_pwage='$d_pwage'
16968 d_pwchange='$d_pwchange'
16969 d_pwclass='$d_pwclass'
16970 d_pwcomment='$d_pwcomment'
16971 d_pwexpire='$d_pwexpire'
16972 d_pwgecos='$d_pwgecos'
16973 d_pwpasswd='$d_pwpasswd'
16974 d_pwquota='$d_pwquota'
16975 d_qgcvt='$d_qgcvt'
16976 d_quad='$d_quad'
16977 d_readdir='$d_readdir'
16978 d_readlink='$d_readlink'
16979 d_readv='$d_readv'
16980 d_recvmsg='$d_recvmsg'
16981 d_rename='$d_rename'
16982 d_rewinddir='$d_rewinddir'
16983 d_rmdir='$d_rmdir'
16984 d_safebcpy='$d_safebcpy'
16985 d_safemcpy='$d_safemcpy'
16986 d_sanemcmp='$d_sanemcmp'
16987 d_sbrkproto='$d_sbrkproto'
16988 d_sched_yield='$d_sched_yield'
16989 d_scm_rights='$d_scm_rights'
16990 d_seekdir='$d_seekdir'
16991 d_select='$d_select'
16992 d_sem='$d_sem'
16993 d_semctl='$d_semctl'
16994 d_semctl_semid_ds='$d_semctl_semid_ds'
16995 d_semctl_semun='$d_semctl_semun'
16996 d_semget='$d_semget'
16997 d_semop='$d_semop'
16998 d_sendmsg='$d_sendmsg'
16999 d_setegid='$d_setegid'
17000 d_seteuid='$d_seteuid'
17001 d_setgrent='$d_setgrent'
17002 d_setgrps='$d_setgrps'
17003 d_sethent='$d_sethent'
17004 d_setitimer='$d_setitimer'
17005 d_setlinebuf='$d_setlinebuf'
17006 d_setlocale='$d_setlocale'
17007 d_setnent='$d_setnent'
17008 d_setpent='$d_setpent'
17009 d_setpgid='$d_setpgid'
17010 d_setpgrp2='$d_setpgrp2'
17011 d_setpgrp='$d_setpgrp'
17012 d_setprior='$d_setprior'
17013 d_setproctitle='$d_setproctitle'
17014 d_setpwent='$d_setpwent'
17015 d_setregid='$d_setregid'
17016 d_setresgid='$d_setresgid'
17017 d_setresuid='$d_setresuid'
17018 d_setreuid='$d_setreuid'
17019 d_setrgid='$d_setrgid'
17020 d_setruid='$d_setruid'
17021 d_setsent='$d_setsent'
17022 d_setsid='$d_setsid'
17023 d_setvbuf='$d_setvbuf'
17024 d_sfio='$d_sfio'
17025 d_shm='$d_shm'
17026 d_shmat='$d_shmat'
17027 d_shmatprototype='$d_shmatprototype'
17028 d_shmctl='$d_shmctl'
17029 d_shmdt='$d_shmdt'
17030 d_shmget='$d_shmget'
17031 d_sigaction='$d_sigaction'
17032 d_sigprocmask='$d_sigprocmask'
17033 d_sigsetjmp='$d_sigsetjmp'
17034 d_sockatmark='$d_sockatmark'
17035 d_sockatmarkproto='$d_sockatmarkproto'
17036 d_socket='$d_socket'
17037 d_socklen_t='$d_socklen_t'
17038 d_sockpair='$d_sockpair'
17039 d_socks5_init='$d_socks5_init'
17040 d_sqrtl='$d_sqrtl'
17041 d_sresgproto='$d_sresgproto'
17042 d_sresuproto='$d_sresuproto'
17043 d_statblks='$d_statblks'
17044 d_statfs_f_flags='$d_statfs_f_flags'
17045 d_statfs_s='$d_statfs_s'
17046 d_statvfs='$d_statvfs'
17047 d_stdio_cnt_lval='$d_stdio_cnt_lval'
17048 d_stdio_ptr_lval='$d_stdio_ptr_lval'
17049 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17050 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
17051 d_stdio_stream_array='$d_stdio_stream_array'
17052 d_stdiobase='$d_stdiobase'
17053 d_stdstdio='$d_stdstdio'
17054 d_strchr='$d_strchr'
17055 d_strcoll='$d_strcoll'
17056 d_strctcpy='$d_strctcpy'
17057 d_strerrm='$d_strerrm'
17058 d_strerror='$d_strerror'
17059 d_strftime='$d_strftime'
17060 d_strtod='$d_strtod'
17061 d_strtol='$d_strtol'
17062 d_strtold='$d_strtold'
17063 d_strtoll='$d_strtoll'
17064 d_strtoq='$d_strtoq'
17065 d_strtoul='$d_strtoul'
17066 d_strtoull='$d_strtoull'
17067 d_strtouq='$d_strtouq'
17068 d_strxfrm='$d_strxfrm'
17069 d_suidsafe='$d_suidsafe'
17070 d_symlink='$d_symlink'
17071 d_syscall='$d_syscall'
17072 d_syscallproto='$d_syscallproto'
17073 d_sysconf='$d_sysconf'
17074 d_sysernlst='$d_sysernlst'
17075 d_syserrlst='$d_syserrlst'
17076 d_system='$d_system'
17077 d_tcgetpgrp='$d_tcgetpgrp'
17078 d_tcsetpgrp='$d_tcsetpgrp'
17079 d_telldir='$d_telldir'
17080 d_telldirproto='$d_telldirproto'
17081 d_time='$d_time'
17082 d_times='$d_times'
17083 d_truncate='$d_truncate'
17084 d_tzname='$d_tzname'
17085 d_u32align='$d_u32align'
17086 d_ualarm='$d_ualarm'
17087 d_umask='$d_umask'
17088 d_uname='$d_uname'
17089 d_union_semun='$d_union_semun'
17090 d_unordered='$d_unordered'
17091 d_usleep='$d_usleep'
17092 d_usleepproto='$d_usleepproto'
17093 d_ustat='$d_ustat'
17094 d_vendorarch='$d_vendorarch'
17095 d_vendorbin='$d_vendorbin'
17096 d_vendorlib='$d_vendorlib'
17097 d_vfork='$d_vfork'
17098 d_void_closedir='$d_void_closedir'
17099 d_voidsig='$d_voidsig'
17100 d_voidtty='$d_voidtty'
17101 d_volatile='$d_volatile'
17102 d_vprintf='$d_vprintf'
17103 d_wait4='$d_wait4'
17104 d_waitpid='$d_waitpid'
17105 d_wcstombs='$d_wcstombs'
17106 d_wctomb='$d_wctomb'
17107 d_writev='$d_writev'
17108 d_xenix='$d_xenix'
17109 date='$date'
17110 db_hashtype='$db_hashtype'
17111 db_prefixtype='$db_prefixtype'
17112 db_version_major='$db_version_major'
17113 db_version_minor='$db_version_minor'
17114 db_version_patch='$db_version_patch'
17115 defvoidused='$defvoidused'
17116 direntrytype='$direntrytype'
17117 dlext='$dlext'
17118 dlsrc='$dlsrc'
17119 doublesize='$doublesize'
17120 drand01='$drand01'
17121 dynamic_ext='$dynamic_ext'
17122 eagain='$eagain'
17123 ebcdic='$ebcdic'
17124 echo='$echo'
17125 egrep='$egrep'
17126 emacs='$emacs'
17127 eunicefix='$eunicefix'
17128 exe_ext='$exe_ext'
17129 expr='$expr'
17130 extensions='$extensions'
17131 extras='$extras'
17132 fflushNULL='$fflushNULL'
17133 fflushall='$fflushall'
17134 find='$find'
17135 firstmakefile='$firstmakefile'
17136 flex='$flex'
17137 fpossize='$fpossize'
17138 fpostype='$fpostype'
17139 freetype='$freetype'
17140 from='$from'
17141 full_ar='$full_ar'
17142 full_csh='$full_csh'
17143 full_sed='$full_sed'
17144 gccosandvers='$gccosandvers'
17145 gccversion='$gccversion'
17146 gidformat='$gidformat'
17147 gidsign='$gidsign'
17148 gidsize='$gidsize'
17149 gidtype='$gidtype'
17150 glibpth='$glibpth'
17151 grep='$grep'
17152 groupcat='$groupcat'
17153 groupstype='$groupstype'
17154 gzip='$gzip'
17155 h_fcntl='$h_fcntl'
17156 h_sysfile='$h_sysfile'
17157 hint='$hint'
17158 hostcat='$hostcat'
17159 i16size='$i16size'
17160 i16type='$i16type'
17161 i32size='$i32size'
17162 i32type='$i32type'
17163 i64size='$i64size'
17164 i64type='$i64type'
17165 i8size='$i8size'
17166 i8type='$i8type'
17167 i_arpainet='$i_arpainet'
17168 i_bsdioctl='$i_bsdioctl'
17169 i_db='$i_db'
17170 i_dbm='$i_dbm'
17171 i_dirent='$i_dirent'
17172 i_dld='$i_dld'
17173 i_dlfcn='$i_dlfcn'
17174 i_fcntl='$i_fcntl'
17175 i_float='$i_float'
17176 i_fp='$i_fp'
17177 i_fp_class='$i_fp_class'
17178 i_gdbm='$i_gdbm'
17179 i_grp='$i_grp'
17180 i_ieeefp='$i_ieeefp'
17181 i_inttypes='$i_inttypes'
17182 i_langinfo='$i_langinfo'
17183 i_libutil='$i_libutil'
17184 i_limits='$i_limits'
17185 i_locale='$i_locale'
17186 i_machcthr='$i_machcthr'
17187 i_malloc='$i_malloc'
17188 i_math='$i_math'
17189 i_memory='$i_memory'
17190 i_mntent='$i_mntent'
17191 i_ndbm='$i_ndbm'
17192 i_netdb='$i_netdb'
17193 i_neterrno='$i_neterrno'
17194 i_netinettcp='$i_netinettcp'
17195 i_niin='$i_niin'
17196 i_poll='$i_poll'
17197 i_prot='$i_prot'
17198 i_pthread='$i_pthread'
17199 i_pwd='$i_pwd'
17200 i_rpcsvcdbm='$i_rpcsvcdbm'
17201 i_sfio='$i_sfio'
17202 i_sgtty='$i_sgtty'
17203 i_shadow='$i_shadow'
17204 i_socks='$i_socks'
17205 i_stdarg='$i_stdarg'
17206 i_stddef='$i_stddef'
17207 i_stdlib='$i_stdlib'
17208 i_string='$i_string'
17209 i_sunmath='$i_sunmath'
17210 i_sysaccess='$i_sysaccess'
17211 i_sysdir='$i_sysdir'
17212 i_sysfile='$i_sysfile'
17213 i_sysfilio='$i_sysfilio'
17214 i_sysin='$i_sysin'
17215 i_sysioctl='$i_sysioctl'
17216 i_syslog='$i_syslog'
17217 i_sysmman='$i_sysmman'
17218 i_sysmode='$i_sysmode'
17219 i_sysmount='$i_sysmount'
17220 i_sysndir='$i_sysndir'
17221 i_sysparam='$i_sysparam'
17222 i_sysresrc='$i_sysresrc'
17223 i_syssecrt='$i_syssecrt'
17224 i_sysselct='$i_sysselct'
17225 i_syssockio='$i_syssockio'
17226 i_sysstat='$i_sysstat'
17227 i_sysstatfs='$i_sysstatfs'
17228 i_sysstatvfs='$i_sysstatvfs'
17229 i_systime='$i_systime'
17230 i_systimek='$i_systimek'
17231 i_systimes='$i_systimes'
17232 i_systypes='$i_systypes'
17233 i_sysuio='$i_sysuio'
17234 i_sysun='$i_sysun'
17235 i_sysutsname='$i_sysutsname'
17236 i_sysvfs='$i_sysvfs'
17237 i_syswait='$i_syswait'
17238 i_termio='$i_termio'
17239 i_termios='$i_termios'
17240 i_time='$i_time'
17241 i_unistd='$i_unistd'
17242 i_ustat='$i_ustat'
17243 i_utime='$i_utime'
17244 i_values='$i_values'
17245 i_varargs='$i_varargs'
17246 i_varhdr='$i_varhdr'
17247 i_vfork='$i_vfork'
17248 ignore_versioned_solibs='$ignore_versioned_solibs'
17249 inc_version_list='$inc_version_list'
17250 inc_version_list_init='$inc_version_list_init'
17251 incpath='$incpath'
17252 inews='$inews'
17253 installarchlib='$installarchlib'
17254 installbin='$installbin'
17255 installman1dir='$installman1dir'
17256 installman3dir='$installman3dir'
17257 installprefix='$installprefix'
17258 installprefixexp='$installprefixexp'
17259 installprivlib='$installprivlib'
17260 installscript='$installscript'
17261 installsitearch='$installsitearch'
17262 installsitebin='$installsitebin'
17263 installsitelib='$installsitelib'
17264 installstyle='$installstyle'
17265 installusrbinperl='$installusrbinperl'
17266 installvendorarch='$installvendorarch'
17267 installvendorbin='$installvendorbin'
17268 installvendorlib='$installvendorlib'
17269 intsize='$intsize'
17270 issymlink='$issymlink'
17271 ivdformat='$ivdformat'
17272 ivsize='$ivsize'
17273 ivtype='$ivtype'
17274 known_extensions='$known_extensions'
17275 ksh='$ksh'
17276 ld='$ld'
17277 lddlflags='$lddlflags'
17278 ldflags='$ldflags'
17279 ldflags_uselargefiles='$ldflags_uselargefiles'
17280 ldlibpthname='$ldlibpthname'
17281 less='$less'
17282 lib_ext='$lib_ext'
17283 libc='$libc'
17284 libperl='$libperl'
17285 libpth='$libpth'
17286 libs='$libs'
17287 libsdirs='$libsdirs'
17288 libsfiles='$libsfiles'
17289 libsfound='$libsfound'
17290 libspath='$libspath'
17291 libswanted='$libswanted'
17292 libswanted_uselargefiles='$libswanted_uselargefiles'
17293 line='$line'
17294 lint='$lint'
17295 lkflags='$lkflags'
17296 ln='$ln'
17297 lns='$lns'
17298 locincpth='$locincpth'
17299 loclibpth='$loclibpth'
17300 longdblsize='$longdblsize'
17301 longlongsize='$longlongsize'
17302 longsize='$longsize'
17303 lp='$lp'
17304 lpr='$lpr'
17305 ls='$ls'
17306 lseeksize='$lseeksize'
17307 lseektype='$lseektype'
17308 mail='$mail'
17309 mailx='$mailx'
17310 make='$make'
17311 make_set_make='$make_set_make'
17312 mallocobj='$mallocobj'
17313 mallocsrc='$mallocsrc'
17314 malloctype='$malloctype'
17315 man1dir='$man1dir'
17316 man1direxp='$man1direxp'
17317 man1ext='$man1ext'
17318 man3dir='$man3dir'
17319 man3direxp='$man3direxp'
17320 man3ext='$man3ext'
17321 mips_type='$mips_type'
17322 mkdir='$mkdir'
17323 mmaptype='$mmaptype'
17324 modetype='$modetype'
17325 more='$more'
17326 multiarch='$multiarch'
17327 mv='$mv'
17328 myarchname='$myarchname'
17329 mydomain='$mydomain'
17330 myhostname='$myhostname'
17331 myuname='$myuname'
17332 n='$n'
17333 need_va_copy='$need_va_copy'
17334 netdb_hlen_type='$netdb_hlen_type'
17335 netdb_host_type='$netdb_host_type'
17336 netdb_name_type='$netdb_name_type'
17337 netdb_net_type='$netdb_net_type'
17338 nm='$nm'
17339 nm_opt='$nm_opt'
17340 nm_so_opt='$nm_so_opt'
17341 nonxs_ext='$nonxs_ext'
17342 nroff='$nroff'
17343 nvEUformat='$nvEUformat'
17344 nvFUformat='$nvFUformat'
17345 nvGUformat='$nvGUformat'
17346 nveformat='$nveformat'
17347 nvfformat='$nvfformat'
17348 nvgformat='$nvgformat'
17349 nvsize='$nvsize'
17350 nvtype='$nvtype'
17351 o_nonblock='$o_nonblock'
17352 obj_ext='$obj_ext'
17353 old_pthread_create_joinable='$old_pthread_create_joinable'
17354 optimize='$optimize'
17355 orderlib='$orderlib'
17356 osname='$osname'
17357 osvers='$osvers'
17358 otherlibdirs='$otherlibdirs'
17359 package='$package'
17360 pager='$pager'
17361 passcat='$passcat'
17362 patchlevel='$patchlevel'
17363 path_sep='$path_sep'
17364 perl5='$perl5'
17365 perl='$perl'
17366 perl_patchlevel='$perl_patchlevel'
17367 perladmin='$perladmin'
17368 perllibs='$perllibs'
17369 perlpath='$perlpath'
17370 pg='$pg'
17371 phostname='$phostname'
17372 pidtype='$pidtype'
17373 plibpth='$plibpth'
17374 pm_apiversion='$pm_apiversion'
17375 pmake='$pmake'
17376 pr='$pr'
17377 prefix='$prefix'
17378 prefixexp='$prefixexp'
17379 privlib='$privlib'
17380 privlibexp='$privlibexp'
17381 prototype='$prototype'
17382 ptrsize='$ptrsize'
17383 quadkind='$quadkind'
17384 quadtype='$quadtype'
17385 randbits='$randbits'
17386 randfunc='$randfunc'
17387 randseedtype='$randseedtype'
17388 ranlib='$ranlib'
17389 rd_nodata='$rd_nodata'
17390 revision='$revision'
17391 rm='$rm'
17392 rmail='$rmail'
17393 run='$run'
17394 runnm='$runnm'
17395 sPRIEUldbl='$sPRIEUldbl'
17396 sPRIFUldbl='$sPRIFUldbl'
17397 sPRIGUldbl='$sPRIGUldbl'
17398 sPRIXU64='$sPRIXU64'
17399 sPRId64='$sPRId64'
17400 sPRIeldbl='$sPRIeldbl'
17401 sPRIfldbl='$sPRIfldbl'
17402 sPRIgldbl='$sPRIgldbl'
17403 sPRIi64='$sPRIi64'
17404 sPRIo64='$sPRIo64'
17405 sPRIu64='$sPRIu64'
17406 sPRIx64='$sPRIx64'
17407 sSCNfldbl='$sSCNfldbl'
17408 sched_yield='$sched_yield'
17409 scriptdir='$scriptdir'
17410 scriptdirexp='$scriptdirexp'
17411 sed='$sed'
17412 seedfunc='$seedfunc'
17413 selectminbits='$selectminbits'
17414 selecttype='$selecttype'
17415 sendmail='$sendmail'
17416 sh='$sh'
17417 shar='$shar'
17418 sharpbang='$sharpbang'
17419 shmattype='$shmattype'
17420 shortsize='$shortsize'
17421 shrpenv='$shrpenv'
17422 shsharp='$shsharp'
17423 sig_count='$sig_count'
17424 sig_name='$sig_name'
17425 sig_name_init='$sig_name_init'
17426 sig_num='$sig_num'
17427 sig_num_init='$sig_num_init'
17428 sig_size='$sig_size'
17429 signal_t='$signal_t'
17430 sitearch='$sitearch'
17431 sitearchexp='$sitearchexp'
17432 sitebin='$sitebin'
17433 sitebinexp='$sitebinexp'
17434 sitelib='$sitelib'
17435 sitelib_stem='$sitelib_stem'
17436 sitelibexp='$sitelibexp'
17437 siteprefix='$siteprefix'
17438 siteprefixexp='$siteprefixexp'
17439 sizesize='$sizesize'
17440 sizetype='$sizetype'
17441 sleep='$sleep'
17442 smail='$smail'
17443 so='$so'
17444 sockethdr='$sockethdr'
17445 socketlib='$socketlib'
17446 socksizetype='$socksizetype'
17447 sort='$sort'
17448 spackage='$spackage'
17449 spitshell='$spitshell'
17450 src='$src'
17451 ssizetype='$ssizetype'
17452 startperl='$startperl'
17453 startsh='$startsh'
17454 static_ext='$static_ext'
17455 stdchar='$stdchar'
17456 stdio_base='$stdio_base'
17457 stdio_bufsiz='$stdio_bufsiz'
17458 stdio_cnt='$stdio_cnt'
17459 stdio_filbuf='$stdio_filbuf'
17460 stdio_ptr='$stdio_ptr'
17461 stdio_stream_array='$stdio_stream_array'
17462 strings='$strings'
17463 submit='$submit'
17464 subversion='$subversion'
17465 sysman='$sysman'
17466 tail='$tail'
17467 tar='$tar'
17468 targetarch='$targetarch'
17469 tbl='$tbl'
17470 tee='$tee'
17471 test='$test'
17472 timeincl='$timeincl'
17473 timetype='$timetype'
17474 to='$to'
17475 touch='$touch'
17476 tr='$tr'
17477 trnl='$trnl'
17478 troff='$troff'
17479 u16size='$u16size'
17480 u16type='$u16type'
17481 u32size='$u32size'
17482 u32type='$u32type'
17483 u64size='$u64size'
17484 u64type='$u64type'
17485 u8size='$u8size'
17486 u8type='$u8type'
17487 uidformat='$uidformat'
17488 uidsign='$uidsign'
17489 uidsize='$uidsize'
17490 uidtype='$uidtype'
17491 uname='$uname'
17492 uniq='$uniq'
17493 uquadtype='$uquadtype'
17494 use5005threads='$use5005threads'
17495 use64bitall='$use64bitall'
17496 use64bitint='$use64bitint'
17497 usecrosscompile='$usecrosscompile'
17498 usedl='$usedl'
17499 useithreads='$useithreads'
17500 uselargefiles='$uselargefiles'
17501 uselongdouble='$uselongdouble'
17502 usemorebits='$usemorebits'
17503 usemultiplicity='$usemultiplicity'
17504 usemymalloc='$usemymalloc'
17505 usenm='$usenm'
17506 useopcode='$useopcode'
17507 useperlio='$useperlio'
17508 useposix='$useposix'
17509 usereentrant='$usereentrant'
17510 usesfio='$usesfio'
17511 useshrplib='$useshrplib'
17512 usesocks='$usesocks'
17513 usethreads='$usethreads'
17514 usevendorprefix='$usevendorprefix'
17515 usevfork='$usevfork'
17516 usrinc='$usrinc'
17517 uuname='$uuname'
17518 uvXUformat='$uvXUformat'
17519 uvoformat='$uvoformat'
17520 uvsize='$uvsize'
17521 uvtype='$uvtype'
17522 uvuformat='$uvuformat'
17523 uvxformat='$uvxformat'
17524 vendorarch='$vendorarch'
17525 vendorarchexp='$vendorarchexp'
17526 vendorbin='$vendorbin'
17527 vendorbinexp='$vendorbinexp'
17528 vendorlib='$vendorlib'
17529 vendorlib_stem='$vendorlib_stem'
17530 vendorlibexp='$vendorlibexp'
17531 vendorprefix='$vendorprefix'
17532 vendorprefixexp='$vendorprefixexp'
17533 version='$version'
17534 version_patchlevel_string='$version_patchlevel_string'
17535 versiononly='$versiononly'
17536 vi='$vi'
17537 voidflags='$voidflags'
17538 xlibpth='$xlibpth'
17539 xs_apiversion='$xs_apiversion'
17540 yacc='$yacc'
17541 yaccflags='$yaccflags'
17542 zcat='$zcat'
17543 zip='$zip'
17544 EOT
17545
17546 : Add in command line options if available
17547 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17548
17549 : add special variables
17550 $test -f $src/patchlevel.h && \
17551 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17552 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17553 echo "PERL_CONFIG_SH=true" >>config.sh
17554
17555 : propagate old symbols
17556 if $test -f UU/config.sh; then
17557         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17558         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17559         $sort | $uniq -u >UU/oldsyms
17560         set X `cat UU/oldsyms`
17561         shift
17562         case $# in
17563         0) ;;
17564         *)
17565                 cat <<EOM
17566 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17567 EOM
17568                 echo "# Variables propagated from previous config.sh file." >>config.sh
17569                 for sym in `cat UU/oldsyms`; do
17570                         echo "    Propagating $hint variable "'$'"$sym..."
17571                         eval 'tmp="$'"${sym}"'"'
17572                         echo "$tmp" | \
17573                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17574                 done
17575                 ;;
17576         esac
17577 fi
17578
17579 : Finish up by extracting the .SH files
17580 case "$alldone" in
17581 exit)
17582         $rm -rf UU
17583         echo "Extraction done."
17584         exit 0
17585         ;;
17586 cont)
17587         ;;
17588 '')
17589         dflt=''
17590         nostick=true
17591         $cat <<EOM
17592
17593 If you'd like to make any changes to the config.sh file before I begin
17594 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17595
17596 EOM
17597         rp="Press return or use a shell escape to edit config.sh:"
17598         . UU/myread
17599         nostick=''
17600         case "$ans" in
17601         '') ;;
17602         *) : in case they cannot read
17603                 sh 1>&4 -c "$ans";;
17604         esac
17605         ;;
17606 esac
17607
17608 : if this fails, just run all the .SH files by hand
17609 . ./config.sh
17610
17611 echo " "
17612 exec 1>&4
17613 pwd=`pwd`
17614 . ./UU/extract
17615 cd $pwd
17616
17617 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17618         dflt=y
17619         case "$silent" in
17620         true) ;;
17621         *)
17622                 $cat <<EOM
17623
17624 Now you need to generate make dependencies by running "$make depend".
17625 You might prefer to run it in background: "$make depend > makedepend.out &"
17626 It can take a while, so you might not want to run it right now.
17627
17628 EOM
17629                 ;;
17630         esac
17631         rp="Run $make depend now?"
17632         . UU/myread
17633         case "$ans" in
17634         y*)
17635                 $make depend && echo "Now you must run '$make'."
17636                 ;;
17637         *)
17638                 echo "You must run '$make depend' then '$make'."
17639                 ;;
17640         esac
17641 elif test -f [Mm]akefile; then
17642         echo " "
17643         echo "Now you must run a $make."
17644 else
17645         echo "Configure done."
17646 fi
17647
17648 if $test -f Policy.sh; then
17649     $cat <<EOM
17650
17651 If you compile $package on a different machine or from a different object
17652 directory, copy the Policy.sh file from this object directory to the
17653 new one before you run Configure -- this will help you with most of
17654 the policy defaults.
17655
17656 EOM
17657 fi
17658 if $test -f config.msg; then
17659     echo "Hmm.  I also noted the following information while running:"
17660     echo " "
17661     $cat config.msg >&4
17662     $rm -f config.msg
17663 fi
17664 $rm -f kit*isdone ark*isdone
17665 $rm -rf UU
17666
17667 : End of Configure
17668