2485f57862f35c09088f0df99c947e483725ba25
[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 Dec 19 02:24:52 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 paths="$paths /system/gnu_library/bin"
85
86 for p in $paths
87 do
88         case "$p_$PATH$p_" in
89         *$p_$p$p_*) ;;
90         *) test -d $p && PATH=$PATH$p_$p ;;
91         esac
92 done
93
94 PATH=.$p_$PATH
95 export PATH
96
97 : shall we be using ksh?
98 inksh=''
99 needksh=''
100 avoidksh=''
101 newsh=/bin/ksh
102 changesh=''
103 if (PATH=.; alias -x) >/dev/null 2>&1; then
104                 inksh=true
105 fi
106 if test -f /hp-ux -a -f /bin/ksh; then
107         needksh='to avoid sh bug in "here document" expansion'
108 fi
109 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
110         if test X`/usr/bin/uname -v` = X4; then
111                 avoidksh="to avoid AIX 4's /bin/sh"
112                 newsh=/usr/bin/bsh
113         fi
114 fi
115 if test -f /osf_boot -a -f /usr/sbin/setld; then
116         if test X`/usr/bin/uname -s` = XOSF1; then
117                 avoidksh="to avoid Digital UNIX' ksh"
118                 newsh=/bin/sh
119                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
120         fi
121 fi
122 case "$inksh/$needksh" in
123 /[a-z]*)
124                 ENV=''
125                 changesh=true
126                 reason="$needksh"
127         ;;
128 esac
129 case "$inksh/$avoidksh" in
130 true/[a-z]*)
131         changesh=true
132         reason="$avoidksh"
133         ;;
134 esac
135 case "$inksh/$needksh-$avoidksh-" in
136 true/--)
137                 cat <<EOM
138 (I see you are using the Korn shell.  Some ksh's blow up on $me,
139 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
140 EOM
141         ;;
142 esac
143 case "$changesh" in
144 true)
145         export newsh
146         echo "(Feeding myself to $newsh $reason.)"
147         case "$0" in
148         Configure|*/Configure) exec $newsh $0 "$@";;
149         *) exec $newsh Configure "$@";;
150         esac
151         ;;
152 esac
153
154 : if needed set CDPATH to a harmless value that is not chatty
155 : avoid bash 2.02 problems with empty CDPATH.
156 case "$CDPATH" in
157 '')     ;;
158 *)      case "$SHELL" in
159         *bash*) CDPATH='.' ;;
160         *)              CDPATH='' ;;
161         esac
162         ;;
163 esac
164 : Configure runs within the UU subdirectory
165 test -d UU || mkdir UU
166 cd UU && rm -f ./*
167
168 ccname=''
169 ccversion=''
170 ccsymbols=''
171 cppccsymbols=''
172 cppsymbols=''
173 from=''
174 run=''
175 targetarch=''
176 to=''
177 usecrosscompile=''
178 perllibs=''
179 dynamic_ext=''
180 extensions=''
181 known_extensions=''
182 nonxs_ext=''
183 static_ext=''
184 useopcode=''
185 useposix=''
186 extras=''
187 d_bsd=''
188 d_eunice=''
189 d_xenix=''
190 eunicefix=''
191 Mcc=''
192 ar=''
193 awk=''
194 bash=''
195 bison=''
196 byacc=''
197 cat=''
198 chgrp=''
199 chmod=''
200 chown=''
201 comm=''
202 compress=''
203 cp=''
204 cpio=''
205 cpp=''
206 csh=''
207 date=''
208 echo=''
209 egrep=''
210 emacs=''
211 expr=''
212 find=''
213 flex=''
214 gmake=''
215 grep=''
216 gzip=''
217 inews=''
218 ksh=''
219 less=''
220 line=''
221 lint=''
222 ln=''
223 lp=''
224 lpr=''
225 ls=''
226 mail=''
227 mailx=''
228 make=''
229 mkdir=''
230 more=''
231 mv=''
232 nm=''
233 nroff=''
234 perl=''
235 pg=''
236 pmake=''
237 pr=''
238 rm=''
239 rmail=''
240 sed=''
241 sendmail=''
242 shar=''
243 sleep=''
244 smail=''
245 sort=''
246 submit=''
247 tail=''
248 tar=''
249 tbl=''
250 tee=''
251 test=''
252 touch=''
253 tr=''
254 troff=''
255 uname=''
256 uniq=''
257 uuname=''
258 vi=''
259 zcat=''
260 zip=''
261 full_ar=''
262 full_sed=''
263 libswanted=''
264 hint=''
265 myuname=''
266 osname=''
267 osvers=''
268 Author=''
269 Date=''
270 Header=''
271 Id=''
272 Locker=''
273 Log=''
274 RCSfile=''
275 Revision=''
276 Source=''
277 State=''
278 _a=''
279 _exe=''
280 _o=''
281 archobjs=''
282 exe_ext=''
283 firstmakefile=''
284 lib_ext=''
285 obj_ext=''
286 path_sep=''
287 afs=''
288 afsroot=''
289 alignbytes=''
290 ansi2knr=''
291 archlib=''
292 archlibexp=''
293 d_archlib=''
294 installarchlib=''
295 archname=''
296 myarchname=''
297 d_atolf=''
298 d_atoll=''
299 baserev=''
300 bin=''
301 binexp=''
302 installbin=''
303 bincompat5005=''
304 d_bincompat5005=''
305 byteorder=''
306 cc=''
307 ccflags=''
308 cppflags=''
309 ldflags=''
310 lkflags=''
311 locincpth=''
312 optimize=''
313 cf_email=''
314 cf_by=''
315 cf_time=''
316 charsize=''
317 contains=''
318 cpp_stuff=''
319 cpplast=''
320 cppminus=''
321 cpprun=''
322 cppstdin=''
323 d__fwalk=''
324 d_access=''
325 d_accessx=''
326 d_alarm=''
327 d_attribut=''
328 d_bcmp=''
329 d_bcopy=''
330 d_bzero=''
331 d_casti32=''
332 castflags=''
333 d_castneg=''
334 d_chown=''
335 d_chroot=''
336 d_chsize=''
337 d_class=''
338 d_closedir=''
339 d_void_closedir=''
340 d_cmsghdr_s=''
341 d_const=''
342 cryptlib=''
343 d_crypt=''
344 d_csh=''
345 full_csh=''
346 d_cuserid=''
347 d_dbl_dig=''
348 d_dbminitproto=''
349 d_difftime=''
350 d_dirfd=''
351 d_dlerror=''
352 d_dlopen=''
353 d_dlsymun=''
354 d_dosuid=''
355 d_suidsafe=''
356 d_drand48proto=''
357 d_dup2=''
358 d_eaccess=''
359 d_endgrent=''
360 d_endhent=''
361 d_endnent=''
362 d_endpent=''
363 d_endpwent=''
364 d_endsent=''
365 d_fchdir=''
366 d_fchmod=''
367 d_fchown=''
368 d_fcntl=''
369 d_fcntl_can_lock=''
370 d_fd_macros=''
371 d_fd_set=''
372 d_fds_bits=''
373 d_fgetpos=''
374 d_finite=''
375 d_finitel=''
376 d_flexfnam=''
377 d_flock=''
378 d_flockproto=''
379 d_fork=''
380 d_fp_class=''
381 d_fpclass=''
382 d_fpclassify=''
383 d_fpclassl=''
384 d_fpos64_t=''
385 d_frexpl=''
386 d_fs_data_s=''
387 d_fseeko=''
388 d_fsetpos=''
389 d_fstatfs=''
390 d_fsync=''
391 d_ftello=''
392 d_ftime=''
393 d_gettimeod=''
394 d_Gconvert=''
395 d_getcwd=''
396 d_getespwnam=''
397 d_getfsstat=''
398 d_getgrent=''
399 d_getgrps=''
400 d_gethbyaddr=''
401 d_gethbyname=''
402 d_gethent=''
403 aphostname=''
404 d_gethname=''
405 d_phostname=''
406 d_uname=''
407 d_gethostprotos=''
408 d_getitimer=''
409 d_getlogin=''
410 d_getmnt=''
411 d_getmntent=''
412 d_getnbyaddr=''
413 d_getnbyname=''
414 d_getnent=''
415 d_getnetprotos=''
416 d_getpagsz=''
417 d_getpent=''
418 d_getpgid=''
419 d_getpgrp2=''
420 d_bsdgetpgrp=''
421 d_getpgrp=''
422 d_getppid=''
423 d_getprior=''
424 d_getpbyname=''
425 d_getpbynumber=''
426 d_getprotoprotos=''
427 d_getprpwnam=''
428 d_getpwent=''
429 d_getsent=''
430 d_getservprotos=''
431 d_getspnam=''
432 d_getsbyname=''
433 d_getsbyport=''
434 d_gnulibc=''
435 d_hasmntopt=''
436 d_htonl=''
437 d_inetaton=''
438 d_int64_t=''
439 d_isascii=''
440 d_isfinite=''
441 d_isinf=''
442 d_isnan=''
443 d_isnanl=''
444 d_killpg=''
445 d_lchown=''
446 d_ldbl_dig=''
447 d_link=''
448 d_locconv=''
449 d_lockf=''
450 d_longdbl=''
451 longdblsize=''
452 d_longlong=''
453 longlongsize=''
454 d_lseekproto=''
455 d_lstat=''
456 d_madvise=''
457 d_mblen=''
458 d_mbstowcs=''
459 d_mbtowc=''
460 d_memchr=''
461 d_memcmp=''
462 d_memcpy=''
463 d_memmove=''
464 d_memset=''
465 d_mkdir=''
466 d_mkdtemp=''
467 d_mkfifo=''
468 d_mkstemp=''
469 d_mkstemps=''
470 d_mktime=''
471 d_mmap=''
472 mmaptype=''
473 d_modfl=''
474 d_modfl_pow32_bug=''
475 d_mprotect=''
476 d_msg=''
477 d_msgctl=''
478 d_msgget=''
479 d_msghdr_s=''
480 d_msgrcv=''
481 d_msgsnd=''
482 d_msync=''
483 d_munmap=''
484 d_nice=''
485 d_nl_langinfo=''
486 d_off64_t=''
487 d_open3=''
488 d_fpathconf=''
489 d_pathconf=''
490 d_pause=''
491 d_pipe=''
492 d_poll=''
493 d_portable=''
494 d_procselfexe=''
495 procselfexe=''
496 d_old_pthread_create_joinable=''
497 old_pthread_create_joinable=''
498 d_pthread_atfork=''
499 d_pthread_yield=''
500 d_sched_yield=''
501 sched_yield=''
502 d_qgcvt=''
503 d_readdir=''
504 d_rewinddir=''
505 d_seekdir=''
506 d_telldir=''
507 d_readlink=''
508 d_readv=''
509 d_recvmsg=''
510 d_rename=''
511 d_rmdir=''
512 d_safebcpy=''
513 d_safemcpy=''
514 d_sanemcmp=''
515 d_sbrkproto=''
516 d_select=''
517 d_sem=''
518 d_semctl=''
519 d_semget=''
520 d_semop=''
521 d_sendmsg=''
522 d_setegid=''
523 d_seteuid=''
524 d_setgrent=''
525 d_setgrps=''
526 d_sethent=''
527 d_setitimer=''
528 d_setlinebuf=''
529 d_setlocale=''
530 d_setnent=''
531 d_setpent=''
532 d_setpgid=''
533 d_setpgrp2=''
534 d_bsdsetpgrp=''
535 d_setpgrp=''
536 d_setprior=''
537 d_setproctitle=''
538 d_setpwent=''
539 d_setregid=''
540 d_setresgid=''
541 d_setresuid=''
542 d_setreuid=''
543 d_setrgid=''
544 d_setruid=''
545 d_setsent=''
546 d_setsid=''
547 d_setvbuf=''
548 d_sfio=''
549 usesfio=''
550 d_shm=''
551 d_shmat=''
552 d_shmatprototype=''
553 shmattype=''
554 d_shmctl=''
555 d_shmdt=''
556 d_shmget=''
557 d_sigaction=''
558 d_sigprocmask=''
559 d_sigsetjmp=''
560 d_sockatmark=''
561 d_sockatmarkproto=''
562 d_msg_ctrunc=''
563 d_msg_dontroute=''
564 d_msg_oob=''
565 d_msg_peek=''
566 d_msg_proxy=''
567 d_oldsock=''
568 d_scm_rights=''
569 d_socket=''
570 d_sockpair=''
571 sockethdr=''
572 socketlib=''
573 d_socklen_t=''
574 d_socks5_init=''
575 d_sqrtl=''
576 d_sresgproto=''
577 d_sresuproto=''
578 d_statblks=''
579 d_statfs_f_flags=''
580 d_statfs_s=''
581 d_fstatvfs=''
582 d_statvfs=''
583 d_stdio_cnt_lval=''
584 d_stdio_ptr_lval=''
585 d_stdio_ptr_lval_nochange_cnt=''
586 d_stdio_ptr_lval_sets_cnt=''
587 d_stdiobase=''
588 d_stdstdio=''
589 stdio_base=''
590 stdio_bufsiz=''
591 stdio_cnt=''
592 stdio_filbuf=''
593 stdio_ptr=''
594 d_index=''
595 d_strchr=''
596 d_strcoll=''
597 d_strctcpy=''
598 d_strerrm=''
599 d_strerror=''
600 d_sysernlst=''
601 d_syserrlst=''
602 d_strftime=''
603 d_strtod=''
604 d_strtol=''
605 d_strtold=''
606 d_strtoll=''
607 d_strtoq=''
608 d_strtoul=''
609 d_strtoull=''
610 d_strtouq=''
611 d_strxfrm=''
612 d_symlink=''
613 d_syscall=''
614 d_syscallproto=''
615 d_sysconf=''
616 d_system=''
617 d_tcgetpgrp=''
618 d_tcsetpgrp=''
619 d_telldirproto=''
620 d_time=''
621 timetype=''
622 clocktype=''
623 d_times=''
624 d_truncate=''
625 d_tzname=''
626 d_u32align=''
627 d_ualarm=''
628 d_umask=''
629 d_semctl_semid_ds=''
630 d_semctl_semun=''
631 d_union_semun=''
632 d_unordered=''
633 d_usleep=''
634 d_usleepproto=''
635 d_ustat=''
636 d_vfork=''
637 usevfork=''
638 d_voidsig=''
639 signal_t=''
640 d_volatile=''
641 d_charvspr=''
642 d_vprintf=''
643 d_wait4=''
644 d_waitpid=''
645 d_wcstombs=''
646 d_wctomb=''
647 d_writev=''
648 dlext=''
649 cccdlflags=''
650 ccdlflags=''
651 dlsrc=''
652 ld=''
653 lddlflags=''
654 usedl=''
655 doublesize=''
656 ebcdic=''
657 fflushNULL=''
658 fflushall=''
659 fpossize=''
660 fpostype=''
661 gccosandvers=''
662 gccversion=''
663 gidformat=''
664 gidsign=''
665 gidsize=''
666 gidtype=''
667 groupstype=''
668 h_fcntl=''
669 h_sysfile=''
670 i_arpainet=''
671 db_hashtype=''
672 db_prefixtype=''
673 db_version_major=''
674 db_version_minor=''
675 db_version_patch=''
676 i_db=''
677 i_dbm=''
678 i_rpcsvcdbm=''
679 d_dirnamlen=''
680 direntrytype=''
681 i_dirent=''
682 i_dld=''
683 i_dlfcn=''
684 i_fcntl=''
685 i_float=''
686 i_fp=''
687 i_fp_class=''
688 i_gdbm=''
689 d_grpasswd=''
690 i_grp=''
691 i_ieeefp=''
692 i_inttypes=''
693 i_langinfo=''
694 i_libutil=''
695 i_limits=''
696 i_locale=''
697 i_machcthr=''
698 i_malloc=''
699 i_math=''
700 i_memory=''
701 i_mntent=''
702 i_ndbm=''
703 i_netdb=''
704 i_neterrno=''
705 i_netinettcp=''
706 i_niin=''
707 i_sysin=''
708 i_poll=''
709 i_prot=''
710 i_pthread=''
711 d_pwage=''
712 d_pwchange=''
713 d_pwclass=''
714 d_pwcomment=''
715 d_pwexpire=''
716 d_pwgecos=''
717 d_pwpasswd=''
718 d_pwquota=''
719 i_pwd=''
720 i_sfio=''
721 i_shadow=''
722 i_socks=''
723 i_stddef=''
724 i_stdlib=''
725 i_string=''
726 strings=''
727 i_sunmath=''
728 i_sysaccess=''
729 i_sysdir=''
730 i_sysfile=''
731 d_voidtty=''
732 i_bsdioctl=''
733 i_sysfilio=''
734 i_sysioctl=''
735 i_syssockio=''
736 i_syslog=''
737 i_sysmman=''
738 i_sysmode=''
739 i_sysmount=''
740 i_sysndir=''
741 i_sysparam=''
742 i_sysresrc=''
743 i_syssecrt=''
744 i_sysselct=''
745 i_sysstat=''
746 i_sysstatfs=''
747 i_sysstatvfs=''
748 i_systimes=''
749 i_systypes=''
750 i_sysuio=''
751 i_sysun=''
752 i_sysutsname=''
753 i_sysvfs=''
754 i_syswait=''
755 i_sgtty=''
756 i_termio=''
757 i_termios=''
758 i_systime=''
759 i_systimek=''
760 i_time=''
761 timeincl=''
762 i_unistd=''
763 i_ustat=''
764 i_utime=''
765 i_values=''
766 i_stdarg=''
767 i_varargs=''
768 i_varhdr=''
769 i_vfork=''
770 inc_version_list=''
771 inc_version_list_init=''
772 installprefix=''
773 installprefixexp=''
774 installstyle=''
775 installusrbinperl=''
776 intsize=''
777 longsize=''
778 shortsize=''
779 issymlink=''
780 libc=''
781 ldlibpthname=''
782 libperl=''
783 shrpenv=''
784 useshrplib=''
785 glibpth=''
786 libpth=''
787 loclibpth=''
788 plibpth=''
789 xlibpth=''
790 ignore_versioned_solibs=''
791 libs=''
792 libsdirs=''
793 libsfiles=''
794 libsfound=''
795 libspath=''
796 lns=''
797 d_PRIEUldbl=''
798 d_PRIFUldbl=''
799 d_PRIGUldbl=''
800 d_PRIeldbl=''
801 d_PRIfldbl=''
802 d_PRIgldbl=''
803 d_SCNfldbl=''
804 sPRIEUldbl=''
805 sPRIFUldbl=''
806 sPRIGUldbl=''
807 sPRIeldbl=''
808 sPRIfldbl=''
809 sPRIgldbl=''
810 sSCNfldbl=''
811 lseeksize=''
812 lseektype=''
813 make_set_make=''
814 d_mymalloc=''
815 freetype=''
816 mallocobj=''
817 mallocsrc=''
818 malloctype=''
819 usemymalloc=''
820 installman1dir=''
821 man1dir=''
822 man1direxp=''
823 man1ext=''
824 installman3dir=''
825 man3dir=''
826 man3direxp=''
827 man3ext=''
828 modetype=''
829 multiarch=''
830 mydomain=''
831 myhostname=''
832 phostname=''
833 c=''
834 n=''
835 d_eofnblk=''
836 eagain=''
837 o_nonblock=''
838 rd_nodata=''
839 need_va_copy=''
840 netdb_hlen_type=''
841 netdb_host_type=''
842 netdb_name_type=''
843 netdb_net_type=''
844 groupcat=''
845 hostcat=''
846 passcat=''
847 orderlib=''
848 ranlib=''
849 d_perl_otherlibdirs=''
850 otherlibdirs=''
851 package=''
852 spackage=''
853 pager=''
854 api_revision=''
855 api_subversion=''
856 api_version=''
857 api_versionstring=''
858 patchlevel=''
859 perl_patchlevel=''
860 revision=''
861 subversion=''
862 version=''
863 version_patchlevel_string=''
864 perl5=''
865 perladmin=''
866 perlpath=''
867 d_nv_preserves_uv=''
868 d_nv_preserves_uv_bits=''
869 i16size=''
870 i16type=''
871 i32size=''
872 i32type=''
873 i64size=''
874 i64type=''
875 i8size=''
876 i8type=''
877 ivsize=''
878 ivtype=''
879 nvsize=''
880 nvtype=''
881 u16size=''
882 u16type=''
883 u32size=''
884 u32type=''
885 u64size=''
886 u64type=''
887 u8size=''
888 u8type=''
889 uvsize=''
890 uvtype=''
891 ivdformat=''
892 nvEUformat=''
893 nvFUformat=''
894 nvGUformat=''
895 nveformat=''
896 nvfformat=''
897 nvgformat=''
898 uvXUformat=''
899 uvoformat=''
900 uvuformat=''
901 uvxformat=''
902 pidtype=''
903 prefix=''
904 prefixexp=''
905 installprivlib=''
906 privlib=''
907 privlibexp=''
908 prototype=''
909 ptrsize=''
910 d_PRIXU64=''
911 d_PRId64=''
912 d_PRIi64=''
913 d_PRIo64=''
914 d_PRIu64=''
915 d_PRIx64=''
916 sPRIXU64=''
917 sPRId64=''
918 sPRIi64=''
919 sPRIo64=''
920 sPRIu64=''
921 sPRIx64=''
922 d_quad=''
923 quadkind=''
924 quadtype=''
925 uquadtype=''
926 drand01=''
927 randbits=''
928 randfunc=''
929 randseedtype=''
930 seedfunc=''
931 installscript=''
932 scriptdir=''
933 scriptdirexp=''
934 selectminbits=''
935 selecttype=''
936 sh=''
937 sig_count=''
938 sig_name=''
939 sig_name_init=''
940 sig_num=''
941 sig_num_init=''
942 sig_size=''
943 installsitearch=''
944 sitearch=''
945 sitearchexp=''
946 installsitebin=''
947 sitebin=''
948 sitebinexp=''
949 installsitelib=''
950 sitelib=''
951 sitelib_stem=''
952 sitelibexp=''
953 siteprefix=''
954 siteprefixexp=''
955 sizesize=''
956 sizetype=''
957 so=''
958 socksizetype=''
959 sharpbang=''
960 shsharp=''
961 spitshell=''
962 src=''
963 ssizetype=''
964 startperl=''
965 startsh=''
966 stdchar=''
967 d_stdio_stream_array=''
968 stdio_stream_array=''
969 sysman=''
970 trnl=''
971 uidformat=''
972 uidsign=''
973 uidsize=''
974 uidtype=''
975 archname64=''
976 use64bitall=''
977 use64bitint=''
978 ccflags_uselargefiles=''
979 ldflags_uselargefiles=''
980 libswanted_uselargefiles=''
981 uselargefiles=''
982 uselongdouble=''
983 usemorebits=''
984 usemultiplicity=''
985 nm_opt=''
986 nm_so_opt=''
987 runnm=''
988 usenm=''
989 useperlio=''
990 usesocks=''
991 d_oldpthreads=''
992 use5005threads=''
993 useithreads=''
994 usereentrant=''
995 usethreads=''
996 incpath=''
997 mips_type=''
998 usrinc=''
999 d_vendorarch=''
1000 installvendorarch=''
1001 vendorarch=''
1002 vendorarchexp=''
1003 d_vendorbin=''
1004 installvendorbin=''
1005 vendorbin=''
1006 vendorbinexp=''
1007 d_vendorlib=''
1008 installvendorlib=''
1009 vendorlib=''
1010 vendorlib_stem=''
1011 vendorlibexp=''
1012 usevendorprefix=''
1013 vendorprefix=''
1014 vendorprefixexp=''
1015 versiononly=''
1016 defvoidused=''
1017 voidflags=''
1018 pm_apiversion=''
1019 xs_apiversion=''
1020 yacc=''
1021 yaccflags=''
1022 CONFIG=''
1023
1024 define='define'
1025 undef='undef'
1026 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1027 rmlist=''
1028
1029 : We must find out about Eunice early
1030 eunicefix=':'
1031 if test -f /etc/unixtovms; then
1032         eunicefix=/etc/unixtovms
1033 fi
1034 if test -f /etc/unixtovms.exe; then
1035         eunicefix=/etc/unixtovms.exe
1036 fi
1037
1038 i_whoami=''
1039 ccname=''
1040 ccversion=''
1041 perllibs=''
1042 : set useposix=false in your hint file to disable the POSIX extension.
1043 useposix=true
1044 : set useopcode=false in your hint file to disable the Opcode extension.
1045 useopcode=true
1046 : Trailing extension.  Override this in a hint file, if needed.
1047 _exe=''
1048 : Extra object files, if any, needed on this platform.
1049 archobjs=''
1050 archname=''
1051 : Possible local include directories to search.
1052 : Set locincpth to "" in a hint file to defeat local include searches.
1053 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1054 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1055 :
1056 : no include file wanted by default
1057 inclwanted=''
1058
1059 groupstype=''
1060 libnames=''
1061 : change the next line if compiling for Xenix/286 on Xenix/386
1062 xlibpth='/usr/lib/386 /lib/386'
1063 : Possible local library directories to search.
1064 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1065 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1066
1067 : general looking path for locating libraries
1068 glibpth="/lib /usr/lib $xlibpth"
1069 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1070 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1071 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1072
1073 : Private path used by Configure to find libraries.  Its value
1074 : is prepended to libpth. This variable takes care of special
1075 : machines, like the mips.  Usually, it should be empty.
1076 plibpth=''
1077
1078 : default library list
1079 libswanted=''
1080 : some systems want to use only the non-versioned libso:s
1081 ignore_versioned_solibs=''
1082 archname64=''
1083 ccflags_uselargefiles=''
1084 ldflags_uselargefiles=''
1085 libswanted_uselargefiles=''
1086 : set usemultiplicity on the Configure command line to enable multiplicity.
1087 : set usesocks on the Configure command line to enable socks.
1088 : set usethreads on the Configure command line to enable threads.
1089 usereentrant='undef'
1090 : full support for void wanted by default
1091 defvoidused=15
1092
1093 : List of libraries we want.
1094 : If anyone needs -lnet, put it in a hint file.
1095 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1096 libswanted="$libswanted dld ld sun m c cposix posix"
1097 libswanted="$libswanted ndir dir crypt sec"
1098 libswanted="$libswanted ucb bsd BSD PW x util"
1099 : We probably want to search /usr/shlib before most other libraries.
1100 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1101 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1102 glibpth="/usr/shlib $glibpth"
1103 : Do not use vfork unless overridden by a hint file.
1104 usevfork=false
1105
1106 : Find the basic shell for Bourne shell scripts
1107 case "$sh" in
1108 '')
1109         case "$SYSTYPE" in
1110         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1111         *) xxx='/bin/sh';;
1112         esac
1113         if test -f "$xxx"; then
1114                 sh="$xxx"
1115         else
1116                 : Build up a list and do a single loop so we can 'break' out.
1117                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1118                 for xxx in sh bash ksh pdksh ash; do
1119                         for p in $pth; do
1120                                 try="$try ${p}/${xxx}"
1121                         done
1122                 done
1123                 for xxx in $try; do
1124                         if test -f "$xxx"; then
1125                                 sh="$xxx";
1126                                 break
1127                         elif test -f "$xxx.exe"; then
1128                                 sh="$xxx";
1129                                 break
1130                         fi
1131                 done
1132         fi
1133         ;;
1134 esac
1135
1136 case "$sh" in
1137 '')     cat >&2 <<EOM
1138 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1139
1140 Usually it's in /bin/sh.  How did you even get this far?
1141 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1142 we'll try to straighten this all out.
1143 EOM
1144         exit 1
1145         ;;
1146 esac
1147
1148 : see if sh knows # comments
1149 if `$sh -c '#' >/dev/null 2>&1`; then
1150         shsharp=true
1151         spitshell=cat
1152         xcat=/bin/cat
1153         test -f $xcat || xcat=/usr/bin/cat
1154         if test ! -f $xcat; then
1155                 for p in $paths; do
1156                         if test -f $p/cat; then
1157                                 xcat=$p/cat
1158                                 break
1159                         fi
1160                 done
1161                 if test ! -f $xcat; then
1162                         echo "Can't find cat anywhere!" >&4
1163                         exit 1
1164                 fi
1165         fi
1166         echo "#!$xcat" >sharp
1167         $eunicefix sharp
1168         chmod +x sharp
1169         ./sharp > today
1170         if test -s today; then
1171                 sharpbang='#!'
1172         else
1173                 echo "#! $xcat" > sharp
1174                 $eunicefix sharp
1175                 chmod +x sharp
1176                 ./sharp > today
1177                 if test -s today; then
1178                         sharpbang='#! '
1179                 else
1180                         sharpbang=': use '
1181                 fi
1182         fi
1183 else
1184         echo " "
1185         echo "Your $sh doesn't grok # comments--I will strip them later on."
1186         shsharp=false
1187         cd ..
1188         echo "exec grep -v '^[  ]*#'" >spitshell
1189         chmod +x spitshell
1190         $eunicefix spitshell
1191         spitshell=`pwd`/spitshell
1192         cd UU
1193         echo "I presume that if # doesn't work, #! won't work either!"
1194         sharpbang=': use '
1195 fi
1196 rm -f sharp today
1197
1198 : figure out how to guarantee sh startup
1199 case "$startsh" in
1200 '') startsh=${sharpbang}${sh} ;;
1201 *)
1202 esac
1203 cat >sharp <<EOSS
1204 $startsh
1205 set abc
1206 test "$?abc" != 1
1207 EOSS
1208
1209 chmod +x sharp
1210 $eunicefix sharp
1211 if ./sharp; then
1212         : echo "Yup, it does."
1213 else
1214         echo "Hmm... '$startsh' does not guarantee sh startup..."
1215         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1216 fi
1217 rm -f sharp
1218
1219
1220 : Save command line options in file UU/cmdline.opt for later use in
1221 : generating config.sh.
1222 cat > cmdline.opt <<EOSH
1223 # Configure command line arguments.
1224 config_arg0='$0'
1225 config_args='$*'
1226 config_argc=$#
1227 EOSH
1228 argn=1
1229 args_exp=''
1230 args_sep=''
1231 for arg in "$@"; do
1232         cat >>cmdline.opt <<EOSH
1233 config_arg$argn='$arg'
1234 EOSH
1235         # Extreme backslashitis: replace each ' by '"'"'
1236         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1237 $arg
1238 EOC
1239         arg_exp=`cat cmdl.opt`
1240         args_exp="$args_exp$args_sep'$arg_exp'"
1241         argn=`expr $argn + 1`
1242         args_sep=' '
1243 done
1244 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1245 # used by ./hints/os2.sh
1246 rm -f cmdl.opt
1247
1248 : produce awk script to parse command line options
1249 cat >options.awk <<'EOF'
1250 BEGIN {
1251         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1252
1253         len = length(optstr);
1254         for (i = 1; i <= len; i++) {
1255                 c = substr(optstr, i, 1);
1256                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1257                 if (a == ":") {
1258                         arg[c] = 1;
1259                         i++;
1260                 }
1261                 opt[c] = 1;
1262         }
1263 }
1264 {
1265         expect = 0;
1266         str = $0;
1267         if (substr(str, 1, 1) != "-") {
1268                 printf("'%s'\n", str);
1269                 next;
1270         }
1271         len = length($0);
1272         for (i = 2; i <= len; i++) {
1273                 c = substr(str, i, 1);
1274                 if (!opt[c]) {
1275                         printf("-%s\n", substr(str, i));
1276                         next;
1277                 }
1278                 printf("-%s\n", c);
1279                 if (arg[c]) {
1280                         if (i < len)
1281                                 printf("'%s'\n", substr(str, i + 1));
1282                         else
1283                                 expect = 1;
1284                         next;
1285                 }
1286         }
1287 }
1288 END {
1289         if (expect)
1290                 print "?";
1291 }
1292 EOF
1293
1294 : process the command line options
1295 set X `for arg in "$@"; do echo "X$arg"; done |
1296         sed -e s/X// | awk -f options.awk`
1297 eval "set $*"
1298 shift
1299 rm -f options.awk
1300
1301 : set up default values
1302 fastread=''
1303 reuseval=false
1304 config_sh=''
1305 alldone=''
1306 error=''
1307 silent=''
1308 extractsh=''
1309 override=''
1310 knowitall=''
1311 rm -f optdef.sh posthint.sh
1312 cat >optdef.sh <<EOS
1313 $startsh
1314 EOS
1315
1316
1317 : option parsing
1318 while test $# -gt 0; do
1319         case "$1" in
1320         -d) shift; fastread=yes;;
1321         -e) shift; alldone=cont;;
1322         -f)
1323                 shift
1324                 cd ..
1325                 if test -r "$1"; then
1326                         config_sh="$1"
1327                 else
1328                         echo "$me: cannot read config file $1." >&2
1329                         error=true
1330                 fi
1331                 cd UU
1332                 shift;;
1333         -h) shift; error=true;;
1334         -r) shift; reuseval=true;;
1335         -s) shift; silent=true; realsilent=true;;
1336         -E) shift; alldone=exit;;
1337         -K) shift; knowitall=true;;
1338         -O) shift; override=true;;
1339         -S) shift; silent=true; extractsh=true;;
1340         -D)
1341                 shift
1342                 case "$1" in
1343                 *=)
1344                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1345                         echo "$me: ignoring -D $1" >&2
1346                         ;;
1347                 *=*) echo "$1" | \
1348                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1349                 *) echo "$1='define'" >> optdef.sh;;
1350                 esac
1351                 shift
1352                 ;;
1353         -U)
1354                 shift
1355                 case "$1" in
1356                 *=) echo "$1" >> optdef.sh;;
1357                 *=*)
1358                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1359                         echo "$me: ignoring -U $1" >&2
1360                         ;;
1361                 *) echo "$1='undef'" >> optdef.sh;;
1362                 esac
1363                 shift
1364                 ;;
1365         -A)
1366             shift
1367             xxx=''
1368             yyy="$1"
1369             zzz=''
1370             uuu=undef
1371             case "$yyy" in
1372             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1373                  case "$zzz" in
1374                  *:*) zzz='' ;;
1375                  *)   xxx=append
1376                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1377                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1378                  esac
1379                  ;;
1380             esac
1381             case "$xxx" in
1382             '')  case "$yyy" in
1383                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1384                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1385                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1386                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1387                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1388                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1389                  esac
1390                  ;;       
1391             esac
1392             case "$xxx" in
1393             append)
1394                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1395             clear)
1396                 echo "$yyy=''"                  >> posthint.sh ;;
1397             define)
1398                 case "$zzz" in
1399                 '') zzz=define ;;
1400                 esac
1401                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1402             eval)
1403                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1404             prepend)
1405                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1406             undef)
1407                 case "$zzz" in
1408                 '') zzz="$uuu" ;;
1409                 esac
1410                 echo "$yyy=$zzz"                >> posthint.sh ;;
1411             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1412             esac
1413             shift
1414             ;;
1415         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1416             exit 0;;
1417         --) break;;
1418         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1419         *) break;;
1420         esac
1421 done
1422
1423 case "$error" in
1424 true)
1425         cat >&2 <<EOM
1426 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1427                  [-U symbol] [-U symbol=] [-A command:symbol...]
1428   -d : use defaults for all answers.
1429   -e : go on without questioning past the production of config.sh.
1430   -f : specify an alternate default configuration file.
1431   -h : print this help message and exit (with an error status).
1432   -r : reuse C symbols value if possible (skips costly nm extraction).
1433   -s : silent mode, only echoes questions and essential information.
1434   -D : define symbol to have some value:
1435          -D symbol         symbol gets the value 'define'
1436          -D symbol=value   symbol gets the value 'value'
1437   -E : stop at the end of questions, after having produced config.sh.
1438   -K : do not use unless you know what you are doing.
1439   -O : let -D and -U override definitions from loaded configuration file.
1440   -S : perform variable substitutions on all .SH files (can mix with -f)
1441   -U : undefine symbol:
1442          -U symbol    symbol gets the value 'undef'
1443          -U symbol=   symbol gets completely empty
1444   -A : manipulate symbol after the platform specific hints have been applied:
1445          -A symbol=value                append " "value to symbol
1446          -A append:symbol=value         append value to symbol
1447          -A define:symbol=value         define symbol to have value
1448          -A clear:symbol                define symbol to be ''
1449          -A define:symbol               define symbol to be 'define'
1450          -A eval:symbol=value           define symbol to be eval of value
1451          -A prepend:symbol=value        prepend value to symbol
1452          -A undef:symbol                define symbol to be 'undef'
1453          -A undef:symbol=               define symbol to be ''
1454   -V : print version number and exit (with a zero status).
1455 EOM
1456         exit 1
1457         ;;
1458 esac
1459
1460 : Sanity checks
1461 case "$fastread$alldone" in
1462 yescont|yesexit) ;;
1463 *)
1464         case "$extractsh" in
1465         true) ;;
1466         *)
1467                 if test ! -t 0; then
1468                         echo "Say 'sh Configure', not 'sh <Configure'"
1469                         exit 1
1470                 fi
1471                 ;;
1472         esac
1473         ;;
1474 esac
1475
1476 exec 4>&1
1477 case "$silent" in
1478 true) exec 1>/dev/null;;
1479 esac
1480
1481 : run the defines and the undefines, if any, but leave the file out there...
1482 touch optdef.sh
1483 . ./optdef.sh
1484 : create the posthint manipulation script and leave the file out there...
1485 touch posthint.sh
1486
1487 : set package name
1488 package=perl5
1489 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1490 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1491 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1492 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1493 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1494 esac
1495
1496 : Some greps do not return status, grrr.
1497 echo "grimblepritz" >grimble
1498 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1499         contains=contains
1500 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1501         contains=grep
1502 else
1503         contains=contains
1504 fi
1505 rm -f grimble
1506 : the following should work in any shell
1507 case "$contains" in
1508 contains*)
1509         echo " "
1510         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1511         cat >contains <<'EOSS'
1512 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1513 EOSS
1514 chmod +x contains
1515 esac
1516
1517 : Find the path to the source tree
1518 case "$src" in
1519 '') case "$0" in
1520     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1521          case "$src" in
1522          /*)    ;;
1523          .)     ;;
1524          *)     src=`cd ../$src && pwd` ;;
1525          esac
1526          ;;
1527     *)   src='.';;
1528     esac;;
1529 esac
1530 case "$src" in
1531 '')     src=/
1532         rsrc=/
1533         ;;
1534 /*) rsrc="$src";;
1535 *) rsrc="../$src";;
1536 esac
1537 if test -f $rsrc/Configure && \
1538         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1539 then
1540    : found it, so we are ok.
1541 else
1542         rsrc=''
1543         for src in . .. ../.. ../../.. ../../../..; do
1544                 if test -f ../$src/Configure && \
1545                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1546                 then
1547                         rsrc=../$src
1548                         break
1549                 fi
1550         done
1551 fi
1552 case "$rsrc" in
1553 '')
1554         cat <<EOM >&4
1555
1556 Sorry, I can't seem to locate the source dir for $package.  Please start
1557 Configure with an explicit path -- i.e. /some/path/Configure.
1558
1559 EOM
1560         exit 1
1561         ;;
1562 ../.)   rsrc='..';;
1563 *)
1564         echo " "
1565         echo "Sources for $package found in \"$src\"." >&4
1566         ;;
1567 esac
1568
1569 : script used to extract .SH files with variable substitutions
1570 cat >extract <<'EOS'
1571 PERL_CONFIG_SH=true
1572 echo "Doing variable substitutions on .SH files..."
1573 if test -f MANIFEST; then
1574         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1575 else
1576         echo "(Looking for .SH files under the source directory.)"
1577         set x `(cd $src; find . -name "*.SH" -print)`
1578 fi
1579 shift
1580 case $# in
1581 0) set x `(cd $src; echo *.SH)`; shift;;
1582 esac
1583 if test ! -f $src/$1; then
1584         shift
1585 fi
1586 mkdir_p='
1587 name=$1;
1588 create="";
1589 while test $name; do
1590         if test ! -d "$name"; then
1591                 create="$name $create";
1592                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1593                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1594         else
1595                 name="";
1596         fi;
1597 done;
1598 for file in $create; do
1599         mkdir $file;
1600 done
1601 '
1602 for file in $*; do
1603         case "$src" in
1604         ".")
1605                 case "$file" in
1606                 */*)
1607                         dir=`expr X$file : 'X\(.*\)/'`
1608                         file=`expr X$file : 'X.*/\(.*\)'`
1609                         (cd $dir && . ./$file)
1610                         ;;
1611                 *)
1612                         . ./$file
1613                         ;;
1614                 esac
1615                 ;;
1616         *)
1617                 case "$file" in
1618                 */*)
1619                         dir=`expr X$file : 'X\(.*\)/'`
1620                         file=`expr X$file : 'X.*/\(.*\)'`
1621                         (set x $dir; shift; eval $mkdir_p)
1622                         sh <$src/$dir/$file
1623                         ;;
1624                 *)
1625                         sh <$src/$file
1626                         ;;
1627                 esac
1628                 ;;
1629         esac
1630 done
1631 if test -f $src/config_h.SH; then
1632         if test ! -f config.h; then
1633         : oops, they left it out of MANIFEST, probably, so do it anyway.
1634         . $src/config_h.SH
1635         fi
1636 fi
1637 EOS
1638
1639 : extract files and exit if asked to do so
1640 case "$extractsh" in
1641 true)
1642         case "$realsilent" in
1643         true) ;;
1644         *) exec 1>&4;;
1645         esac
1646         case "$config_sh" in
1647         '') config_sh='config.sh';;
1648         esac
1649         echo " "
1650         echo "Fetching answers from $config_sh..."
1651         cd ..
1652         . $config_sh
1653         test "$override" && . ./optdef.sh
1654         echo " "
1655         . UU/extract
1656         rm -rf UU
1657         echo "Extraction done."
1658         exit 0
1659         ;;
1660 esac
1661
1662 : Eunice requires " " instead of "", can you believe it
1663 echo " "
1664 : Here we go...
1665 echo "Beginning of configuration questions for $package."
1666
1667 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1668
1669 : first determine how to suppress newline on echo command
1670 echo " "
1671 echo "Checking echo to see how to suppress newlines..."
1672 (echo "hi there\c" ; echo " ") >.echotmp
1673 if $contains c .echotmp >/dev/null 2>&1 ; then
1674         echo "...using -n."
1675         n='-n'
1676         c=''
1677 else
1678         cat <<'EOM'
1679 ...using \c
1680 EOM
1681         n=''
1682         c='\c'
1683 fi
1684 echo $n "The star should be here-->$c"
1685 echo '*'
1686 rm -f .echotmp
1687
1688 : Now test for existence of everything in MANIFEST
1689 echo " "
1690 if test -f $rsrc/MANIFEST; then
1691         echo "First let's make sure your kit is complete.  Checking..." >&4
1692         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1693         rm -f missing
1694         tmppwd=`pwd`
1695         for filelist in x??; do
1696                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1697         done
1698         if test -s missing; then
1699                 cat missing >&4
1700                 cat >&4 <<'EOM'
1701
1702 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1703
1704 You have the option of continuing the configuration process, despite the
1705 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1706 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1707 and contact the author (perlbug@perl.org).
1708
1709 EOM
1710                 echo $n "Continue? [n] $c" >&4
1711                 read ans
1712                 case "$ans" in
1713                 y*)
1714                         echo "Continuing..." >&4
1715                         rm -f missing
1716                         ;;
1717                 *)
1718                         echo "ABORTING..." >&4
1719                         kill $$
1720                         ;;
1721                 esac
1722         else
1723                 echo "Looks good..."
1724         fi
1725 else
1726         echo "There is no MANIFEST file.  I hope your kit is complete !"
1727 fi
1728 rm -f missing x??
1729
1730 echo " "
1731 : Find the appropriate value for a newline for tr
1732 if test -n "$DJGPP"; then
1733        trnl='\012'
1734 fi
1735 if test X"$trnl" = X; then
1736         case "`echo foo|tr '\n' x 2>/dev/null`" in
1737         foox) trnl='\n' ;;
1738         esac
1739 fi
1740 if test X"$trnl" = X; then
1741         case "`echo foo|tr '\012' x 2>/dev/null`" in
1742         foox) trnl='\012' ;;
1743         esac
1744 fi
1745 if test X"$trnl" = X; then
1746         cat <<EOM >&2
1747
1748 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1749
1750 EOM
1751         exit 1
1752 fi
1753
1754 : compute the number of columns on the terminal for proper question formatting
1755 case "$COLUMNS" in
1756 '') COLUMNS='80';;
1757 esac
1758
1759 : set up the echo used in my read
1760 myecho="case \"\$xxxm\" in
1761 '') echo $n \"\$rp $c\" >&4;;
1762 *) case \"\$rp\" in
1763         '') echo $n \"[\$xxxm] $c\";;
1764         *)
1765                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1766                         echo \"\$rp\" >&4
1767                         echo $n \"[\$xxxm] $c\" >&4
1768                 else
1769                         echo $n \"\$rp [\$xxxm] $c\" >&4
1770                 fi
1771                 ;;
1772         esac;;
1773 esac"
1774
1775 : now set up to do reads with possible shell escape and default assignment
1776 cat <<EOSC >myread
1777 $startsh
1778 xxxm=\$dflt
1779 $myecho
1780 ans='!'
1781 case "\$fastread" in
1782 yes) case "\$dflt" in
1783         '') ;;
1784         *) ans='';
1785                 case "\$silent-\$rp" in
1786                 true-) ;;
1787                 *) echo " " >&4;;
1788                 esac;;
1789         esac;;
1790 *) case "\$silent" in
1791         true) case "\$rp" in
1792                 '') ans='';;
1793                 esac;;
1794         esac;;
1795 esac
1796 while expr "X\$ans" : "X!" >/dev/null; do
1797         read answ
1798         set x \$xxxm
1799         shift
1800         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1801         case  "\$answ" in
1802         "!")
1803                 sh 1>&4
1804                 echo " "
1805                 $myecho
1806                 ;;
1807         !*)
1808                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1809                 shift
1810                 sh 1>&4 -c "\$*"
1811                 echo " "
1812                 $myecho
1813                 ;;
1814         "\$ans")
1815                 case "\$ans" in
1816                 \\&*)
1817                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1818                         shift
1819                         case "\$1" in
1820                         -d)
1821                                 fastread=yes
1822                                 echo "(OK, I'll run with -d after this question.)" >&4
1823                                 ;;
1824                         -*)
1825                                 echo "*** Sorry, \$1 not supported yet." >&4
1826                                 ;;
1827                         esac
1828                         $myecho
1829                         ans=!
1830                         ;;
1831                 esac;;
1832         *)
1833                 case "\$aok" in
1834                 y)
1835                         echo "*** Substitution done -- please confirm."
1836                         xxxm="\$ans"
1837                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1838                         xxxm="\$ans"
1839                         ans=!
1840                         ;;
1841                 *)
1842                         echo "*** Error -- try again."
1843                         ans=!
1844                         ;;
1845                 esac
1846                 $myecho
1847                 ;;
1848         esac
1849         case "\$ans\$xxxm\$nostick" in
1850         '')
1851                 ans=!
1852                 $myecho
1853                 ;;
1854         esac
1855 done
1856 case "\$ans" in
1857 '') ans="\$xxxm";;
1858 esac
1859 EOSC
1860
1861 : create .config dir to save info across Configure sessions
1862 test -d ../.config || mkdir ../.config
1863 cat >../.config/README <<EOF
1864 This directory created by Configure to save information that should
1865 persist across sessions for $package.
1866
1867 You may safely delete it if you wish.
1868 EOF
1869
1870 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1871 case "$usedevel" in
1872 $define|true|[yY]*) ;;
1873 *) case "$xversion" in
1874    *[13579])
1875         cat >&4 <<EOH
1876 *** WHOA THERE!!! ***
1877
1878     This is an UNSTABLE DEVELOPMENT release.
1879     The version of this $package distribution is $xversion, that is, odd,
1880     (as opposed to even) and that signifies a development release.
1881     If you want a maintenance release, you want an even-numbered version.
1882
1883     Do ***NOT*** install this into production use.
1884     Data corruption and crashes are possible.
1885
1886     It is most seriously suggested that you do not continue any further
1887     unless you want to help in developing and debugging Perl.
1888
1889     If you *still* want to build perl, you can answer 'y' now,
1890     or pass -Dusedevel to Configure.
1891
1892 EOH
1893         rp='Do you really want to continue?'
1894         dflt='n'
1895         . ./myread
1896         case "$ans" in
1897         [yY]) echo >&4 "Okay, continuing."
1898               usedevel="$define" ;;
1899         *) echo >&4 "Okay, bye."
1900            exit 1
1901            ;;
1902         esac
1903         ;;
1904     esac
1905     ;;
1906 esac
1907 case "$usedevel" in
1908 $define|true|[yY]*)
1909         case "$versiononly" in
1910         '') versiononly="$define" ;;
1911         esac
1912         case "$installusrbinperl" in
1913         '') installusrbinperl="$undef" ;;
1914         esac
1915         ;;
1916 esac
1917
1918 : general instructions
1919 needman=true
1920 firsttime=true
1921 user=`(logname) 2>/dev/null`
1922 case "$user" in
1923 '') user=`whoami 2>&1`;;
1924 esac
1925 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1926         firsttime=false
1927         echo " "
1928         rp='Would you like to see the instructions?'
1929         dflt=n
1930         . ./myread
1931         case "$ans" in
1932         [yY]*) ;;
1933         *) needman=false;;
1934         esac
1935 fi
1936 if $needman; then
1937         cat <<EOH
1938
1939 This installation shell script will examine your system and ask you questions
1940 to determine how the perl5 package should be installed. If you get
1941 stuck on a question, you may use a ! shell escape to start a subshell or
1942 execute a command.  Many of the questions will have default answers in square
1943 brackets; typing carriage return will give you the default.
1944
1945 On some of the questions which ask for file or directory names you are allowed
1946 to use the ~name construct to specify the login directory belonging to "name",
1947 even if you don't have a shell which knows about that.  Questions where this is
1948 allowed will be marked "(~name ok)".
1949
1950 EOH
1951         rp=''
1952         dflt='Type carriage return to continue'
1953         . ./myread
1954         cat <<'EOH'
1955
1956 The prompter used in this script allows you to use shell variables and
1957 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1958 in the default answer, as if the default line was a set of arguments given to a
1959 script shell.  This means you may also use $* to repeat the whole default line,
1960 so you do not have to re-type everything to add something to the default.
1961
1962 Everytime there is a substitution, you will have to confirm.  If there is an
1963 error (e.g. an unmatched backtick), the default answer will remain unchanged
1964 and you will be prompted again.
1965
1966 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1967 the questions and use the computed defaults (or the previous answers if there
1968 was already a config.sh file). Type 'Configure -h' for a list of options.
1969 You may also start interactively and then answer '& -d' at any prompt to turn
1970 on the non-interactive behaviour for the remainder of the execution.
1971
1972 EOH
1973         . ./myread
1974         cat <<EOH
1975
1976 Much effort has been expended to ensure that this shell script will run on any
1977 Unix system.  If despite that it blows up on yours, your best bet is to edit
1978 Configure and run it again.  If you can't run Configure for some reason,
1979 you'll have to generate a config.sh file by hand.  Whatever problems you
1980 have, let me (perlbug@perl.org) know how I blew it.
1981
1982 This installation script affects things in two ways:
1983
1984 1) it may do direct variable substitutions on some of the files included
1985    in this kit.
1986 2) it builds a config.h file for inclusion in C programs.  You may edit
1987    any of these files as the need arises after running this script.
1988
1989 If you make a mistake on a question, there is no easy way to back up to it
1990 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1991 files.  Configure will offer to let you do this before it runs the SH files.
1992
1993 EOH
1994         dflt='Type carriage return to continue'
1995         . ./myread
1996         case "$firsttime" in
1997         true) echo $user >>../.config/instruct;;
1998         esac
1999 fi
2000
2001 : find out where common programs are
2002 echo " "
2003 echo "Locating common programs..." >&4
2004 cat <<EOSC >loc
2005 $startsh
2006 case \$# in
2007 0) exit 1;;
2008 esac
2009 thing=\$1
2010 shift
2011 dflt=\$1
2012 shift
2013 for dir in \$*; do
2014         case "\$thing" in
2015         .)
2016         if test -d \$dir/\$thing; then
2017                 echo \$dir
2018                 exit 0
2019         fi
2020         ;;
2021         *)
2022         for thisthing in \$dir/\$thing; do
2023                 : just loop through to pick last item
2024         done
2025         if test -f \$thisthing; then
2026                 echo \$thisthing
2027                 exit 0
2028         elif test -f \$dir/\$thing.exe; then
2029                 if test -n "$DJGPP"; then
2030                         echo \$dir/\$thing.exe
2031                 else
2032                         : on Eunice apparently
2033                         echo \$dir/\$thing
2034                 fi
2035                 exit 0
2036         fi
2037         ;;
2038         esac
2039 done
2040 echo \$dflt
2041 exit 1
2042 EOSC
2043 chmod +x loc
2044 $eunicefix loc
2045 loclist="
2046 awk
2047 cat
2048 chmod
2049 comm
2050 cp
2051 echo
2052 expr
2053 grep
2054 ls
2055 mkdir
2056 rm
2057 sed
2058 sort
2059 touch
2060 tr
2061 uniq
2062 "
2063 trylist="
2064 Mcc
2065 ar
2066 bison
2067 byacc
2068 cpp
2069 csh
2070 date
2071 egrep
2072 gzip
2073 less
2074 ln
2075 make
2076 more
2077 nm
2078 nroff
2079 pg
2080 test
2081 uname
2082 zip
2083 "
2084 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2085 pth="$pth /lib /usr/lib"
2086 for file in $loclist; do
2087         eval xxx=\$$file
2088         case "$xxx" in
2089         /*|?:[\\/]*)
2090                 if test -f "$xxx"; then
2091                         : ok
2092                 else
2093                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2094                         xxx=`./loc $file $file $pth`
2095                 fi
2096                 ;;
2097         '') xxx=`./loc $file $file $pth`;;
2098         *) xxx=`./loc $xxx $xxx $pth`;;
2099         esac
2100         eval $file=$xxx
2101         eval _$file=$xxx
2102         case "$xxx" in
2103         /*)
2104                 echo $file is in $xxx.
2105                 ;;
2106         ?:[\\/]*)
2107                 echo $file is in $xxx.
2108                 ;;
2109         *)
2110                 echo "I don't know where '$file' is, and my life depends on it." >&4
2111                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2112                 exit 1
2113                 ;;
2114         esac
2115 done
2116 echo " "
2117 echo "Don't worry if any of the following aren't found..."
2118 say=offhand
2119 for file in $trylist; do
2120         eval xxx=\$$file
2121         case "$xxx" in
2122         /*|?:[\\/]*)
2123                 if test -f "$xxx"; then
2124                         : ok
2125                 else
2126                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2127                         xxx=`./loc $file $file $pth`
2128                 fi
2129                 ;;
2130         '') xxx=`./loc $file $file $pth`;;
2131         *) xxx=`./loc $xxx $xxx $pth`;;
2132         esac
2133         eval $file=$xxx
2134         eval _$file=$xxx
2135         case "$xxx" in
2136         /*)
2137                 echo $file is in $xxx.
2138                 ;;
2139         ?:[\\/]*)
2140                 echo $file is in $xxx.
2141                 ;;
2142         *)
2143                 echo "I don't see $file out there, $say."
2144                 say=either
2145                 ;;
2146         esac
2147 done
2148 case "$egrep" in
2149 egrep)
2150         echo "Substituting grep for egrep."
2151         egrep=$grep
2152         ;;
2153 esac
2154 case "$ln" in
2155 ln)
2156         echo "Substituting cp for ln."
2157         ln=$cp
2158         ;;
2159 esac
2160 case "$test" in
2161 test)
2162         echo "Hopefully test is built into your sh."
2163         ;;
2164 *)
2165         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2166                 echo "Using the test built into your sh."
2167                 test=test
2168                 _test=test
2169         fi
2170         ;;
2171 esac
2172 case "$echo" in
2173 echo)
2174         echo "Hopefully echo is built into your sh."
2175         ;;
2176 '') ;;
2177 *)
2178         echo " "
2179 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2180         $echo $n "hi there$c" >foo1
2181         echo $n "hi there$c" >foo2
2182         if cmp foo1 foo2 >/dev/null 2>&1; then
2183                 echo "They are compatible.  In fact, they may be identical."
2184         else
2185                 case "$n" in
2186                 '-n') n='' c='\c';;
2187                 *) n='-n' c='';;
2188                 esac
2189                 cat <<FOO
2190 They are not compatible!  You are probably running ksh on a non-USG system.
2191 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2192 have echo built in and we may have to run some Bourne shell scripts.  That
2193 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2194
2195 FOO
2196                 $echo $n "The star should be here-->$c"
2197                 $echo "*"
2198         fi
2199         $rm -f foo1 foo2
2200         ;;
2201 esac
2202
2203 cat <<EOS >checkcc
2204 $startsh
2205 EOS
2206 cat <<'EOSC' >>checkcc
2207 case "$cc" in
2208 '') ;;
2209 *)  $rm -f try try.*
2210     $cat >try.c <<EOM
2211 int main(int argc, char *argv[]) {
2212   return 0;
2213 }
2214 EOM
2215     if $cc -o try $ccflags $ldflags try.c; then
2216        :
2217     else
2218         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2219         despair=yes
2220         trygcc=yes
2221         case "$cc" in
2222         *gcc*) trygcc=no ;;
2223         esac
2224         case "`$cc -v -c try.c 2>&1`" in
2225         *gcc*) trygcc=no ;;
2226         esac
2227         if $test X"$trygcc" = Xyes; then
2228             if gcc -o try -c try.c; then
2229                 echo " "
2230                 echo "You seem to have a working gcc, though." >&4
2231                 rp="Would you like to use it?"
2232                 dflt=y
2233                 if $test -f myread; then
2234                     . ./myread
2235                 else
2236                     if $test -f UU/myread; then
2237                         . ./UU/myread
2238                     else
2239                         echo "Cannot find myread, sorry.  Aborting." >&2
2240                         exit 1
2241                     fi
2242                 fi  
2243                 case "$ans" in
2244                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2245                 esac
2246             fi
2247         fi
2248         if $test X"$despair" = Xyes; then
2249             $cat >&4 <<EOM
2250 You need to find a working C compiler.
2251 Either (purchase and) install the C compiler supplied by your OS vendor,
2252 or for a free C compiler try http://gcc.gnu.org/
2253 I cannot continue any further, aborting.
2254 EOM
2255             exit 1
2256         fi
2257     fi
2258     $rm -f try try.*
2259     ;;
2260 esac
2261 EOSC
2262
2263 : determine whether symbolic links are supported
2264 echo " "
2265 $touch blurfl
2266 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2267         echo "Symbolic links are supported." >&4
2268         lns="$ln -s"
2269 else
2270         echo "Symbolic links are NOT supported." >&4
2271         lns="$ln"
2272 fi
2273 $rm -f blurfl sym
2274
2275 : determine whether symbolic links are supported
2276 echo " "
2277 case "$lns" in
2278 *"ln -s")
2279         echo "Checking how to test for symbolic links..." >&4
2280         $lns blurfl sym
2281         if $test "X$issymlink" = X; then
2282                 case "$newsh" in
2283                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2284                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2285                 esac
2286                 if test $? = 0; then
2287                         issymlink="test -h"
2288                 else
2289                         echo "Your builtin 'test -h' may be broken." >&4
2290                         case "$test" in
2291                         /*)     ;;
2292                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2293                                 for p in $pth
2294                                 do
2295                                         if test -f "$p/$test"; then
2296                                                 test="$p/$test"
2297                                                 break
2298                                         fi
2299                                 done
2300                                 ;;
2301                         esac
2302                         case "$test" in
2303                         /*)
2304                                 echo "Trying external '$test -h'." >&4
2305                                 issymlink="$test -h"
2306                                 if $test ! -h sym >/dev/null 2>&1; then
2307                                         echo "External '$test -h' is broken, too." >&4
2308                                         issymlink=''
2309                                 fi
2310                                 ;;
2311                         *)      issymlink='' ;;
2312                         esac
2313                 fi              
2314         fi
2315         if $test "X$issymlink" = X; then
2316                 if $test -L sym 2>/dev/null; then
2317                         issymlink="$test -L"
2318                         echo "The builtin '$test -L' worked." >&4
2319                 fi
2320         fi
2321         if $test "X$issymlink" != X; then
2322                 echo "You can test for symbolic links with '$issymlink'." >&4
2323         else
2324                 echo "I do not know how you can test for symbolic links." >&4
2325         fi
2326         $rm -f blurfl sym
2327         ;;
2328 *)      echo "No symbolic links, so not testing for their testing..." >&4
2329         ;;
2330 esac
2331 echo " "
2332
2333
2334 case "$mksymlinks" in
2335 $define|true|[yY]*)
2336         case "$src" in
2337         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2338                 exit 1
2339                 ;;
2340         *)      case "$lns:$issymlink" in
2341                 *"ln -s:"*"test -"?)
2342                         echo "Creating the symbolic links..." >&4
2343                         echo "(First creating the subdirectories...)" >&4
2344                         cd ..
2345                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2346                                 read directory
2347                                 test -z "$directory" && break
2348                                 mkdir -p $directory
2349                         done
2350                         # Sanity check 1.
2351                         if test ! -d t/base; then
2352                                 echo "Failed to create the subdirectories.  Aborting." >&4
2353                                 exit 1
2354                         fi
2355                         echo "(Then creating the symlinks...)" >&4
2356                         awk '{print $1}' $src/MANIFEST | while true; do
2357                                 read filename
2358                                 test -z "$filename" && break
2359                                 if test -f $filename; then
2360                                         if $issymlink $filename; then
2361                                                 rm -f $filename
2362                                         fi
2363                                 fi
2364                                 if test -f $filename; then
2365                                         echo "$filename already exists, not symlinking."
2366                                 else
2367                                         ln -s $src/$filename $filename
2368                                 fi
2369                         done
2370                         # Sanity check 2.
2371                         if test ! -f t/base/lex.t; then
2372                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2373                                 exit 1
2374                         fi
2375                         cd UU
2376                         ;;
2377                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2378                         ;;
2379                 esac
2380                 ;;
2381         esac
2382         ;;
2383 esac
2384
2385
2386 case "$usecrosscompile" in
2387 $define|true|[yY]*)
2388         $echo "Cross-compiling..."
2389         croak=''
2390         case "$cc" in
2391         *-*-gcc) # A cross-compiling gcc, probably.
2392             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2393             ar=$targetarch-ar
2394             # leave out ld, choosing it is more complex
2395             nm=$targetarch-nm
2396             ranlib=$targetarch-ranlib
2397             $echo 'extern int foo;' > try.c
2398             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2399             shift
2400             if $test $# -gt 0; then
2401                 incpth="$incpth $*"
2402                 incpth="`$echo $incpth|$sed 's/^ //'`"
2403                 echo "Guessing incpth '$incpth'." >&4
2404                 for i in $*; do
2405                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2406                     if $test -d $j; then
2407                         libpth="$libpth $j"
2408                     fi
2409                 done   
2410                 libpth="`$echo $libpth|$sed 's/^ //'`"
2411                 echo "Guessing libpth '$libpth'." >&4
2412             fi
2413             $rm -f try.c
2414             ;;
2415         esac
2416         case "$targetarch" in
2417         '') echo "Targetarch not defined." >&4; croak=y ;;
2418         *)  echo "Using targetarch $targetarch." >&4 ;;
2419         esac
2420         case "$incpth" in
2421         '') echo "Incpth not defined." >&4; croak=y ;;
2422         *)  echo "Using incpth '$incpth'." >&4 ;;
2423         esac
2424         case "$libpth" in
2425         '') echo "Libpth not defined." >&4; croak=y ;;
2426         *)  echo "Using libpth '$libpth'." >&4 ;;
2427         esac
2428         case "$usrinc" in
2429         '') for i in $incpth; do
2430                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2431                     usrinc=$i
2432                     echo "Guessing usrinc $usrinc." >&4
2433                     break
2434                 fi
2435             done
2436             case "$usrinc" in
2437             '') echo "Usrinc not defined." >&4; croak=y ;;
2438             esac
2439             ;;
2440         *)  echo "Using usrinc $usrinc." >&4 ;;
2441         esac
2442         case "$targethost" in
2443         '') echo "Targethost not defined." >&4; croak=y ;;
2444         *)  echo "Using targethost $targethost." >&4
2445         esac
2446         locincpth=' '
2447         loclibpth=' '
2448         case "$croak" in
2449         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2450         esac
2451         case "$src" in
2452         /*) run=$src/Cross/run
2453             targetmkdir=$src/Cross/mkdir
2454             to=$src/Cross/to
2455             from=$src/Cross/from
2456             ;;
2457         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2458             run=$pwd/Cross/run
2459             targetmkdir=$pwd/Cross/mkdir
2460             to=$pwd/Cross/to
2461             from=$pwd/Cross/from
2462             ;;
2463         esac
2464         case "$targetrun" in
2465         '') targetrun=ssh ;;
2466         esac
2467         case "$targetto" in
2468         '') targetto=scp ;;
2469         esac
2470         case "$targetfrom" in
2471         '') targetfrom=scp ;;
2472         esac
2473         run=$run-$targetrun
2474         to=$to-$targetto
2475         from=$from-$targetfrom
2476         case "$targetdir" in
2477         '')  targetdir=/tmp
2478              echo "Guessing targetdir $targetdir." >&4
2479              ;;
2480         esac
2481         case "$targetuser" in
2482         '')  targetuser=root
2483              echo "Guessing targetuser $targetuser." >&4
2484              ;;
2485         esac
2486         case "$targetfrom" in
2487         scp)    q=-q ;;
2488         *)      q='' ;;
2489         esac
2490         case "$targetrun" in
2491         ssh|rsh)
2492             cat >$run <<EOF
2493 #!/bin/sh
2494 case "\$1" in
2495 -cwd)
2496   shift
2497   cwd=\$1
2498   shift
2499   ;;
2500 esac
2501 case "\$cwd" in
2502 '') cwd=$targetdir ;;
2503 esac
2504 exe=\$1
2505 shift
2506 if $test ! -f \$exe.xok; then
2507   $to \$exe
2508   $touch \$exe.xok
2509 fi
2510 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2511 EOF
2512             ;;
2513         *)  echo "Unknown targetrun '$targetrun'" >&4
2514             exit 1
2515             ;;
2516         esac
2517         case "$targetmkdir" in
2518         */Cross/mkdir)
2519             cat >$targetmkdir <<EOF
2520 #!/bin/sh
2521 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2522 EOF
2523             $chmod a+rx $targetmkdir
2524             ;;
2525         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2526             exit 1
2527             ;;
2528         esac
2529         case "$targetto" in
2530         scp|rcp)
2531             cat >$to <<EOF
2532 #!/bin/sh
2533 for f in \$@
2534 do
2535   case "\$f" in
2536   /*)
2537     $targetmkdir \`dirname \$f\`
2538     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2539     ;;
2540   *)
2541     $targetmkdir $targetdir/\`dirname \$f\`
2542     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2543     ;;
2544   esac
2545 done
2546 exit 0
2547 EOF
2548             ;;
2549         cp) cat >$to <<EOF
2550 #!/bin/sh
2551 for f in \$@
2552 do
2553   case "\$f" in
2554   /*)
2555     $mkdir -p $targetdir/\`dirname \$f\`
2556     $cp \$f $targetdir/\$f || exit 1
2557     ;;
2558   *)
2559     $targetmkdir $targetdir/\`dirname \$f\`
2560     $cp \$f $targetdir/\$f || exit 1
2561     ;;
2562   esac
2563 done
2564 exit 0
2565 EOF
2566             ;;
2567         *)  echo "Unknown targetto '$targetto'" >&4
2568             exit 1
2569             ;;
2570         esac
2571         case "$targetfrom" in
2572         scp|rcp)
2573           cat >$from <<EOF
2574 #!/bin/sh
2575 for f in \$@
2576 do
2577   $rm -f \$f
2578   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2579 done
2580 exit 0
2581 EOF
2582             ;;
2583         cp) cat >$from <<EOF
2584 #!/bin/sh
2585 for f in \$@
2586 do
2587   $rm -f \$f
2588   cp $targetdir/\$f . || exit 1
2589 done
2590 exit 0
2591 EOF
2592             ;;
2593         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2594             exit 1
2595             ;;
2596         esac
2597         if $test ! -f $run; then
2598             echo "Target 'run' script '$run' not found." >&4
2599         else
2600             $chmod a+rx $run
2601         fi
2602         if $test ! -f $to; then
2603             echo "Target 'to' script '$to' not found." >&4
2604         else
2605             $chmod a+rx $to
2606         fi
2607         if $test ! -f $from; then
2608             echo "Target 'from' script '$from' not found." >&4
2609         else
2610             $chmod a+rx $from
2611         fi
2612         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2613             exit 1
2614         fi
2615         cat >&4 <<EOF
2616 Using '$run' for remote execution,
2617 and '$from' and '$to'
2618 for remote file transfer.
2619 EOF
2620         ;;
2621 *)      run=''
2622         to=:
2623         from=:
2624         usecrosscompile='undef'
2625         targetarch=''
2626         ;;
2627 esac
2628
2629 : see whether [:lower:] and [:upper:] are supported character classes
2630 echo " "
2631 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2632 ABYZ)
2633         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2634         up='[:upper:]'
2635         low='[:lower:]'
2636         ;;
2637 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2638         # (0xc9 and 0xd1), therefore that is a nice testing point.
2639         if test "X$up" = X -o "X$low" = X; then
2640             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2641             ij) up='[A-Z]'
2642                 low='[a-z]'
2643                 ;;
2644             esac
2645         fi
2646         if test "X$up" = X -o "X$low" = X; then
2647             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2648             ij) up='A-Z'
2649                 low='a-z'
2650                 ;;
2651             esac
2652         fi
2653         if test "X$up" = X -o "X$low" = X; then
2654             case "`echo IJ | od -x 2>/dev/null`" in
2655             *C9D1*|*c9d1*)
2656                 echo "Hey, this might be EBCDIC." >&4
2657                 if test "X$up" = X -o "X$low" = X; then
2658                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2659                     ij) up='[A-IJ-RS-Z]'
2660                         low='[a-ij-rs-z]'
2661                         ;;
2662                     esac
2663                 fi
2664                 if test "X$up" = X -o "X$low" = X; then
2665                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2666                     ij) up='A-IJ-RS-Z'
2667                         low='a-ij-rs-z'
2668                         ;;
2669                     esac
2670                 fi
2671                 ;;
2672             esac
2673         fi
2674 esac
2675 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2676 ij)
2677     echo "Using $up and $low to convert case." >&4
2678     ;;
2679 *)
2680     echo "I don't know how to translate letters from upper to lower case." >&4
2681     echo "Your tr is not acting any way I know of." >&4
2682     exit 1
2683     ;;
2684 esac
2685 : set up the translation script tr, must be called with ./tr of course
2686 cat >tr <<EOSC
2687 $startsh
2688 case "\$1\$2" in
2689 '[A-Z][a-z]') exec $tr '$up' '$low';;
2690 '[a-z][A-Z]') exec $tr '$low' '$up';;
2691 esac
2692 exec $tr "\$@"
2693 EOSC
2694 chmod +x tr
2695 $eunicefix tr
2696
2697 : Try to determine whether config.sh was made on this system
2698 case "$config_sh" in
2699 '')
2700 myuname=`$uname -a 2>/dev/null`
2701 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2702 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2703 # because the A-Z/a-z are not consecutive.
2704 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2705         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2706 newmyuname="$myuname"
2707 dflt=n
2708 case "$knowitall" in
2709 '')
2710         if test -f ../config.sh; then
2711                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2712                         eval "`grep myuname= ../config.sh`"
2713                 fi
2714                 if test "X$myuname" = "X$newmyuname"; then
2715                         dflt=y
2716                 fi
2717         fi
2718         ;;
2719 *) dflt=y;;
2720 esac
2721
2722 : Get old answers from old config file if Configure was run on the
2723 : same system, otherwise use the hints.
2724 hint=default
2725 cd ..
2726 if test -f config.sh; then
2727         echo " "
2728         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2729         . UU/myread
2730         case "$ans" in
2731         n*|N*) echo "OK, I'll ignore it."
2732                 mv config.sh config.sh.old
2733                 myuname="$newmyuname"
2734                 ;;
2735         *)  echo "Fetching default answers from your old config.sh file..." >&4
2736                 tmp_n="$n"
2737                 tmp_c="$c"
2738                 tmp_sh="$sh"
2739                 . ./config.sh
2740                 cp config.sh UU
2741                 n="$tmp_n"
2742                 c="$tmp_c"
2743                 : Older versions did not always set $sh.  Catch re-use of such
2744                 : an old config.sh.
2745                 case "$sh" in
2746                 '') sh="$tmp_sh" ;;
2747                 esac
2748                 hint=previous
2749                 ;;
2750         esac
2751 fi
2752 . ./UU/checkcc
2753 if test ! -f config.sh; then
2754         $cat <<EOM
2755
2756 First time through, eh?  I have some defaults handy for some systems
2757 that need some extra help getting the Configure answers right:
2758
2759 EOM
2760         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2761         dflt=''
2762         : Half the following guesses are probably wrong... If you have better
2763         : tests or hints, please send them to perlbug@perl.org
2764         : The metaconfig authors would also appreciate a copy...
2765         $test -f /irix && osname=irix
2766         $test -f /xenix && osname=sco_xenix
2767         $test -f /dynix && osname=dynix
2768         $test -f /dnix && osname=dnix
2769         $test -f /lynx.os && osname=lynxos
2770         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2771         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2772         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2773         $test -f /bin/mips && /bin/mips && osname=mips
2774         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2775                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2776         $test -d /usr/apollo/bin && osname=apollo
2777         $test -f /etc/saf/_sactab && osname=svr4
2778         $test -d /usr/include/minix && osname=minix
2779         $test -d /system && osname=vos
2780         if $test -d /MachTen -o -d /MachTen_Folder; then
2781                 osname=machten
2782                 if $test -x /sbin/version; then
2783                         osvers=`/sbin/version | $awk '{print $2}' |
2784                         $sed -e 's/[A-Za-z]$//'`
2785                 elif $test -x /usr/etc/version; then
2786                         osvers=`/usr/etc/version | $awk '{print $2}' |
2787                         $sed -e 's/[A-Za-z]$//'`
2788                 else
2789                         osvers="$2.$3"
2790                 fi
2791         fi
2792
2793         $test -f /sys/posix.dll &&
2794                 $test -f /usr/bin/what &&
2795                 set X `/usr/bin/what /sys/posix.dll` &&
2796                 $test "$3" = UWIN &&
2797                 osname=uwin &&
2798                 osvers="$5"
2799
2800         if $test -f $uname; then
2801                 set X $myuname
2802                 shift
2803
2804                 case "$5" in
2805                 fps*) osname=fps ;;
2806                 mips*)
2807                         case "$4" in
2808                         umips) osname=umips ;;
2809                         *) osname=mips ;;
2810                         esac;;
2811                 [23]100) osname=mips ;;
2812                 next*) osname=next ;;
2813                 i386*)
2814                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2815                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2816                                 osname='sco'
2817                                 osvers=$tmp
2818                         elif $test -f /etc/kconfig; then
2819                                 osname=isc
2820                                 if test "$lns" = "$ln -s"; then
2821                                         osvers=4
2822                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2823                                         osvers=3
2824                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2825                                         osvers=2
2826                                 fi
2827                         fi
2828                         tmp=''
2829                         ;;
2830                 pc*)
2831                         if test -n "$DJGPP"; then
2832                                 osname=dos
2833                                 osvers=djgpp
2834                         fi
2835                         ;;
2836                 esac
2837
2838                 case "$1" in
2839                 aix) osname=aix
2840                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2841                         case "$tmp" in
2842                         'not found') osvers="$4"."$3" ;;
2843                         '<3240'|'<>3240') osvers=3.2.0 ;;
2844                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2845                         '=3250'|'>3250') osvers=3.2.5 ;;
2846                         *) osvers=$tmp;;
2847                         esac
2848                         ;;
2849                 bsd386) osname=bsd386
2850                         osvers=`$uname -r`
2851                         ;;
2852                 cygwin*) osname=cygwin
2853                         osvers="$3"
2854                         ;;
2855                 *dc.osx) osname=dcosx
2856                         osvers="$3"
2857                         ;;
2858                 dnix) osname=dnix
2859                         osvers="$3"
2860                         ;;
2861                 domainos) osname=apollo
2862                         osvers="$3"
2863                         ;;
2864                 dgux) osname=dgux 
2865                         osvers="$3"
2866                         ;;
2867                 dynixptx*) osname=dynixptx
2868                         osvers=`echo "$4"|sed 's/^v//'`
2869                         ;;
2870                 freebsd) osname=freebsd 
2871                         osvers="$3" ;;
2872                 genix) osname=genix ;;
2873                 hp*) osname=hpux 
2874                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2875                         ;;
2876                 irix*) osname=irix
2877                         case "$3" in
2878                         4*) osvers=4 ;;
2879                         5*) osvers=5 ;;
2880                         *)      osvers="$3" ;;
2881                         esac
2882                         ;;
2883                 linux) osname=linux
2884                         case "$3" in
2885                         *)      osvers="$3" ;;
2886                         esac
2887                         ;;
2888                 MiNT) osname=mint
2889                         ;;
2890                 netbsd*) osname=netbsd
2891                         osvers="$3"
2892                         ;;
2893                 news-os) osvers="$3"
2894                         case "$3" in
2895                         4*) osname=newsos4 ;;
2896                         *) osname=newsos ;;
2897                         esac
2898                         ;;
2899                 next*) osname=next ;;
2900                 nonstop-ux) osname=nonstopux ;;
2901                 POSIX-BC | posix-bc ) osname=posix-bc
2902                         osvers="$3"
2903                         ;;
2904                 powerux | power_ux | powermax_os | powermaxos | \
2905                 powerunix | power_unix) osname=powerux
2906                         osvers="$3"
2907                         ;;
2908                 qnx) osname=qnx
2909                         osvers="$4"
2910                         ;;
2911                 solaris) osname=solaris
2912                         case "$3" in
2913                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2914                         *)      osvers="$3" ;;
2915                         esac
2916                         ;;
2917                 sunos) osname=sunos
2918                         case "$3" in
2919                         5*) osname=solaris
2920                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2921                         *)      osvers="$3" ;;
2922                         esac
2923                         ;;
2924                 titanos) osname=titanos
2925                         case "$3" in
2926                         1*) osvers=1 ;;
2927                         2*) osvers=2 ;;
2928                         3*) osvers=3 ;;
2929                         4*) osvers=4 ;;
2930                         *)      osvers="$3" ;;
2931                         esac
2932                         ;;
2933                 ultrix) osname=ultrix
2934                         osvers="$3"
2935                         ;;
2936                 osf1|mls+)      case "$5" in
2937                                 alpha)
2938                                         osname=dec_osf
2939                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2940                                         case "$osvers" in
2941                                         [1-9].[0-9]*) ;;
2942                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2943                                         esac
2944                                         ;;
2945                         hp*)    osname=hp_osf1  ;;
2946                         mips)   osname=mips_osf1 ;;
2947                         esac
2948                         ;;
2949                 unixware) osname=svr5
2950                         osvers="$4"
2951                         ;;
2952                 uts)    osname=uts
2953                         osvers="$3"
2954                         ;;
2955                 vos) osvers="$3"
2956                         ;;
2957                 $2) case "$osname" in
2958                         *isc*) ;;
2959                         *freebsd*) ;;
2960                         svr*)
2961                                 : svr4.x or possibly later
2962                                 case "svr$3" in 
2963                                 ${osname}*)
2964                                         osname=svr$3
2965                                         osvers=$4
2966                                         ;;
2967                                 esac
2968                                 case "$osname" in
2969                                 svr4.0)
2970                                         : Check for ESIX
2971                                         if test -f /stand/boot ; then
2972                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2973                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2974                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2975                                                         if test -n "$isesix"; then
2976                                                                 osname=esix4
2977                                                         fi
2978                                                 fi
2979                                         fi
2980                                         ;;
2981                                 esac
2982                                 ;;
2983                         *)      if test -f /etc/systemid; then
2984                                         osname=sco
2985                                         set `echo $3 | $sed 's/\./ /g'` $4
2986                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2987                                                 osvers=$1.$2.$3
2988                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2989                                                 osvers=$1.$2
2990                                         elif $test -f $src/hints/sco_$1.sh; then
2991                                                 osvers=$1
2992                                         fi
2993                                 else
2994                                         case "$osname" in
2995                                         '') : Still unknown.  Probably a generic Sys V.
2996                                                 osname="sysv"
2997                                                 osvers="$3"
2998                                                 ;;
2999                                         esac
3000                                 fi
3001                                 ;;
3002                         esac
3003                         ;;
3004                 *)      case "$osname" in
3005                         '') : Still unknown.  Probably a generic BSD.
3006                                 osname="$1"
3007                                 osvers="$3"
3008                                 ;;
3009                         esac
3010                         ;;
3011                 esac
3012         else
3013                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3014                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3015                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3016                                 osname=news_os
3017                         fi
3018                         $rm -f UU/kernel.what
3019                 elif test -d c:/.; then
3020                         set X $myuname
3021                         osname=os2
3022                         osvers="$5"
3023                 fi
3024         fi
3025         
3026         case "$targetarch" in
3027         '') ;;
3028         *)  hostarch=$osname
3029             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3030             osvers=''
3031             ;;
3032         esac
3033
3034         : Now look for a hint file osname_osvers, unless one has been
3035         : specified already.
3036         case "$hintfile" in
3037         ''|' ')
3038                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3039                 : Also try without trailing minor version numbers.
3040                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3041                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3042                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3043                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3044                 case "$file" in
3045                 '') dflt=none ;;
3046                 *)  case "$osvers" in
3047                         '') dflt=$file
3048                                 ;;
3049                         *)  if $test -f $src/hints/$file.sh ; then
3050                                         dflt=$file
3051                                 elif $test -f $src/hints/$xfile.sh ; then
3052                                         dflt=$xfile
3053                                 elif $test -f $src/hints/$xxfile.sh ; then
3054                                         dflt=$xxfile
3055                                 elif $test -f $src/hints/$xxxfile.sh ; then
3056                                         dflt=$xxxfile
3057                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3058                                         dflt=$xxxxfile
3059                                 elif $test -f "$src/hints/${osname}.sh" ; then
3060                                         dflt="${osname}"
3061                                 else
3062                                         dflt=none
3063                                 fi
3064                                 ;;
3065                         esac
3066                         ;;
3067                 esac
3068                 if $test -f Policy.sh ; then
3069                         case "$dflt" in
3070                         *Policy*) ;;
3071                         none) dflt="Policy" ;;
3072                         *) dflt="Policy $dflt" ;;
3073                         esac
3074                 fi
3075                 ;;
3076         *)
3077                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3078                 ;;
3079         esac
3080
3081         if $test -f Policy.sh ; then
3082                 $cat <<EOM
3083
3084 There's also a Policy hint file available, which should make the
3085 site-specific (policy) questions easier to answer.
3086 EOM
3087
3088         fi
3089
3090         $cat <<EOM
3091
3092 You may give one or more space-separated answers, or "none" if appropriate.
3093 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3094 is a good thing.  DO NOT give a wrong version or a wrong OS.
3095
3096 EOM
3097
3098         rp="Which of these apply, if any?"
3099         . UU/myread
3100         tans=$ans
3101         for file in $tans; do
3102                 if $test X$file = XPolicy -a -f Policy.sh; then
3103                         . Policy.sh
3104                         $cat Policy.sh >> UU/config.sh
3105                 elif $test -f $src/hints/$file.sh; then
3106                         . $src/hints/$file.sh
3107                         $cat $src/hints/$file.sh >> UU/config.sh
3108                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3109                         : nothing
3110                 else
3111                         : Give one chance to correct a possible typo.
3112                         echo "$file.sh does not exist"
3113                         dflt=$file
3114                         rp="hint to use instead?"
3115                         . UU/myread
3116                         for file in $ans; do
3117                                 if $test -f "$src/hints/$file.sh"; then
3118                                         . $src/hints/$file.sh
3119                                         $cat $src/hints/$file.sh >> UU/config.sh
3120                                 elif $test X$ans = X -o X$ans = Xnone ; then
3121                                         : nothing
3122                                 else
3123                                         echo "$file.sh does not exist -- ignored."
3124                                 fi
3125                         done
3126                 fi
3127         done
3128
3129         hint=recommended
3130         : Remember our hint file for later.
3131         if $test -f "$src/hints/$file.sh" ; then
3132                 hintfile="$file"
3133         else
3134                 hintfile=''
3135         fi
3136 fi
3137 cd UU
3138 ;;
3139 *)
3140         echo " "
3141         echo "Fetching default answers from $config_sh..." >&4
3142         tmp_n="$n"
3143         tmp_c="$c"
3144         cd ..
3145         cp $config_sh config.sh 2>/dev/null
3146         chmod +w config.sh
3147         . ./config.sh
3148         cd UU
3149         cp ../config.sh .
3150         n="$tmp_n"
3151         c="$tmp_c"
3152         hint=previous
3153         ;;
3154 esac
3155 test "$override" && . ./optdef.sh
3156
3157 : Restore computed paths
3158 for file in $loclist $trylist; do
3159         eval $file="\$_$file"
3160 done
3161
3162 cat << EOM
3163
3164 Configure uses the operating system name and version to set some defaults.
3165 The default value is probably right if the name rings a bell. Otherwise,
3166 since spelling matters for me, either accept the default or answer "none"
3167 to leave it blank.
3168
3169 EOM
3170 case "$osname" in
3171         ''|' ')
3172                 case "$hintfile" in
3173                 ''|' '|none) dflt=none ;;
3174                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3175                 esac
3176                 ;;
3177         *) dflt="$osname" ;;
3178 esac
3179 rp="Operating system name?"
3180 . ./myread
3181 case "$ans" in
3182 none)  osname='' ;;
3183 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3184 esac
3185 echo " "
3186 case "$osvers" in
3187         ''|' ')
3188                 case "$hintfile" in
3189                 ''|' '|none) dflt=none ;;
3190                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3191                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3192                         case "$dflt" in
3193                         ''|' ') dflt=none ;;
3194                         esac
3195                         ;;
3196                 esac
3197                 ;;
3198         *) dflt="$osvers" ;;
3199 esac
3200 rp="Operating system version?"
3201 . ./myread
3202 case "$ans" in
3203 none)  osvers='' ;;
3204 *) osvers="$ans" ;;
3205 esac
3206
3207
3208 . ./posthint.sh
3209
3210 : who configured the system
3211 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3212 cf_by=`(logname) 2>/dev/null`
3213 case "$cf_by" in
3214 "")
3215         cf_by=`(whoami) 2>/dev/null`
3216         case "$cf_by" in
3217         "") cf_by=unknown ;;
3218         esac ;;
3219 esac
3220
3221 : set up the script used to warn in case of inconsistency
3222 cat <<EOS >whoa
3223 $startsh
3224 EOS
3225 cat <<'EOSC' >>whoa
3226 dflt=y
3227 echo " "
3228 echo "*** WHOA THERE!!! ***" >&4
3229 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3230 rp="    Keep the $hint value?"
3231 . ./myread
3232 case "$ans" in
3233 y) td=$was; tu=$was;;
3234 esac
3235 EOSC
3236
3237 : function used to set $1 to $val
3238 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3239 case "$val$was" in
3240 $define$undef) . ./whoa; eval "$var=\$td";;
3241 $undef$define) . ./whoa; eval "$var=\$tu";;
3242 *) eval "$var=$val";;
3243 esac'
3244
3245 case "$usethreads" in
3246 $define|true|[yY]*)     dflt='y';;
3247 *) dflt='n';;
3248 esac
3249 cat <<EOM
3250
3251 Perl can be built to take advantage of threads on some systems.
3252 To do so, Configure can be run with -Dusethreads.
3253
3254 Note that threading is a highly experimental feature, and
3255 some known race conditions still remain.  If you choose to try
3256 it, be very sure to not actually deploy it for production
3257 purposes.  README.threads has more details, and is required
3258 reading if you enable threads.
3259
3260 If this doesn't make any sense to you, just accept the default '$dflt'.
3261 EOM
3262 rp='Build a threading Perl?'
3263 . ./myread
3264 case "$ans" in
3265 y|Y)    val="$define" ;;
3266 *)      val="$undef" ;;
3267 esac
3268 set usethreads
3269 eval $setvar
3270
3271 case "$usethreads" in
3272 $define)
3273         $cat <<EOM
3274
3275 As of 5.5.640, Perl has two different internal threading implementations,
3276 the 5.005 version (5005threads) and an interpreter-based version
3277 (ithreads) that has one interpreter per thread.  Both are very 
3278 experimental.  This arrangement exists to help developers work out
3279 which one is better.
3280
3281 If you're a casual user, you probably don't want interpreter-threads
3282 at this time.  But if you do, the 'threads' module allows their use,
3283 and the 'Thread' module offers an interface to both 5005threads and
3284 ithreads (whichever has been configured).
3285 EOM
3286         : Default to ithreads unless overridden on command line or with
3287         : old config.sh
3288         dflt='y'
3289         case "$use5005threads" in
3290                 $define|true|[yY]*) dflt='n';;
3291         esac
3292         case "$useithreads" in
3293                 $undef|false|[nN]*) dflt='n';;
3294         esac
3295         rp='Use interpreter-based ithreads?'
3296         . ./myread
3297         case "$ans" in
3298         y|Y)    val="$define" ;;
3299         *)      val="$undef" ;;
3300         esac
3301         set useithreads
3302         eval $setvar
3303         : Now set use5005threads to the opposite value.
3304         case "$useithreads" in
3305         $define) val="$undef" ;;
3306         *) val="$define" ;;
3307         esac
3308         set use5005threads
3309         eval $setvar
3310         ;;
3311 *)
3312         useithreads="$undef"
3313         use5005threads="$undef"
3314         ;;
3315 esac
3316
3317 case "$useithreads$use5005threads" in
3318 "$define$define")
3319         $cat >&4 <<EOM
3320
3321 You cannot have both the ithreads and the 5.005 threads enabled
3322 at the same time.  Disabling the 5.005 threads since they are
3323 much less stable than the ithreads.
3324
3325 EOM
3326         use5005threads="$undef"
3327         ;;
3328 esac
3329
3330 case "$d_oldpthreads" in
3331 '')     : Configure tests would be welcome here.  For now, assume undef.
3332         val="$undef" ;;
3333 *)      val="$d_oldpthreads" ;;
3334 esac
3335 set d_oldpthreads
3336 eval $setvar
3337
3338
3339 case "$usethreads" in
3340 "$define"|true|[yY]*)
3341 : Look for a hint-file generated 'call-back-unit'.  If the
3342 : user has specified that a threading perl is to be built,
3343 : we may need to set or change some other defaults.
3344         if $test -f usethreads.cbu; then
3345                 echo "Your platform has some specific hints for threaded builds, using them..."
3346                 . ./usethreads.cbu
3347         else
3348                 $cat <<EOM
3349 (Your platform doesn't have any specific hints for threaded builds.
3350  Assuming POSIX threads, then.)
3351 EOM
3352         fi
3353         ;;
3354 esac
3355
3356 cat <<EOM
3357
3358 Perl can be built so that multiple Perl interpreters can coexist
3359 within the same Perl executable.
3360 EOM
3361
3362 case "$useithreads" in
3363 $define)
3364         cat <<EOM
3365 This multiple interpreter support is required for interpreter-based threads.
3366 EOM
3367         val="$define"
3368         ;;
3369 *)      case "$usemultiplicity" in
3370         $define|true|[yY]*)     dflt='y';;
3371         *) dflt='n';;
3372         esac
3373         echo " "
3374         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3375         rp='Build Perl for multiplicity?'
3376         . ./myread
3377         case "$ans" in
3378         y|Y)    val="$define" ;;
3379         *)      val="$undef" ;;
3380         esac
3381         ;;
3382 esac
3383 set usemultiplicity
3384 eval $setvar
3385
3386
3387 case "$usemorebits" in
3388 "$define"|true|[yY]*)
3389         use64bitint="$define"
3390         uselongdouble="$define"
3391         usemorebits="$define"
3392         ;;
3393 *)      usemorebits="$undef"
3394         ;;
3395 esac
3396
3397 : make some quick guesses about what we are up against
3398 echo " "
3399 $echo $n "Hmm...  $c"
3400 echo exit 1 >bsd
3401 echo exit 1 >usg
3402 echo exit 1 >v7
3403 echo exit 1 >osf1
3404 echo exit 1 >eunice
3405 echo exit 1 >xenix
3406 echo exit 1 >venix
3407 echo exit 1 >os2
3408 d_bsd="$undef"
3409 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3410 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3411 then
3412         echo "Looks kind of like an OSF/1 system, but we'll see..."
3413         echo exit 0 >osf1
3414 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3415         xxx=`./loc addbib blurfl $pth`
3416         if $test -f $xxx; then
3417         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3418                 echo exit 0 >bsd
3419                 echo exit 0 >usg
3420         else
3421                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3422                         echo "Looks kind of like an extended USG system, but we'll see..."
3423                 else
3424                         echo "Looks kind of like a USG system, but we'll see..."
3425                 fi
3426                 echo exit 0 >usg
3427         fi
3428 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3429         echo "Looks kind of like a BSD system, but we'll see..."
3430         d_bsd="$define"
3431         echo exit 0 >bsd
3432 else
3433         echo "Looks kind of like a Version 7 system, but we'll see..."
3434         echo exit 0 >v7
3435 fi
3436 case "$eunicefix" in
3437 *unixtovms*)
3438         $cat <<'EOI'
3439 There is, however, a strange, musty smell in the air that reminds me of
3440 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3441 EOI
3442         echo exit 0 >eunice
3443         d_eunice="$define"
3444 : it so happens the Eunice I know will not run shell scripts in Unix format
3445         ;;
3446 *)
3447         echo " "
3448         echo "Congratulations.  You aren't running Eunice."
3449         d_eunice="$undef"
3450         ;;
3451 esac
3452 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3453 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3454 : semicolon as a patch separator
3455 case "$p_" in
3456 :) ;;
3457 *)
3458         $cat <<'EOI'
3459 I have the feeling something is not exactly right, however...don't tell me...
3460 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3461 (Or you may be running DOS with DJGPP.)
3462 EOI
3463         echo exit 0 >os2
3464         ;;
3465 esac
3466 if test -f /xenix; then
3467         echo "Actually, this looks more like a XENIX system..."
3468         echo exit 0 >xenix
3469         d_xenix="$define"
3470 else
3471         echo " "
3472         echo "It's not Xenix..."
3473         d_xenix="$undef"
3474 fi
3475 chmod +x xenix
3476 $eunicefix xenix
3477 if test -f /venix; then
3478         echo "Actually, this looks more like a VENIX system..."
3479         echo exit 0 >venix
3480 else
3481         echo " "
3482         if ./xenix; then
3483                 : null
3484         else
3485                 echo "Nor is it Venix..."
3486         fi
3487 fi
3488 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3489 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3490 $rm -f foo
3491
3492 case "$cc" in
3493 '') dflt=cc;;
3494 *) dflt="$cc";;
3495 esac
3496 rp="Use which C compiler?"
3497 . ./myread
3498 cc="$ans"
3499 : Look for a hint-file generated 'call-back-unit'.  Now that the
3500 : user has specified the compiler, we may need to set or change some
3501 : other defaults.
3502 if $test -f cc.cbu; then
3503     . ./cc.cbu
3504 fi
3505 . ./checkcc
3506
3507 echo " "
3508 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3509 $cat >try.c <<EOM
3510 #include <stdio.h>
3511 int main() {
3512 #ifdef __GNUC__
3513 #ifdef __VERSION__
3514         printf("%s\n", __VERSION__);
3515 #else
3516         printf("%s\n", "1");
3517 #endif
3518 #endif
3519         exit(0);
3520 }
3521 EOM
3522 if $cc -o try $ccflags $ldflags try.c; then
3523         gccversion=`$run ./try`
3524         case "$gccversion" in
3525         '') echo "You are not using GNU cc." ;;
3526         *)  echo "You are using GNU cc $gccversion."
3527             ccname=gcc  
3528             ;;
3529         esac
3530 else
3531         echo " "
3532         echo "*** WHOA THERE!!! ***" >&4
3533         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3534         case "$knowitall" in
3535         '')
3536         echo "    You'd better start hunting for one and let me know about it." >&4
3537                 exit 1
3538                 ;;
3539         esac
3540 fi
3541 $rm -f try try.*
3542 case "$gccversion" in
3543 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3544 esac
3545 case "$gccversion" in
3546 '') gccosandvers='' ;;
3547 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3548    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3549    gccshortvers=''
3550    case "$gccosandvers" in
3551    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3552    $osname$osvers) ;; # looking good
3553    $osname*) cat <<EOM >&4
3554
3555 *** WHOA THERE!!! ***
3556
3557     Your gcc has not been compiled for the exact release of
3558     your operating system ($gccosandvers versus $osname$osvers).
3559
3560     In general it is a good idea to keep gcc synchronized with
3561     the operating system because otherwise serious problems
3562     may ensue when trying to compile software, like Perl.
3563
3564     I'm trying to be optimistic here, though, and will continue.
3565     If later during the configuration and build icky compilation
3566     problems appear (headerfile conflicts being the most common
3567     manifestation), I suggest reinstalling the gcc to match
3568     your operating system release.
3569
3570 EOM
3571       ;;
3572    *) gccosandvers='' ;; # failed to parse, better be silent
3573    esac
3574    ;;
3575 esac
3576 case "$ccname" in
3577 '') ccname="$cc" ;;
3578 esac
3579
3580
3581 : decide how portable to be.  Allow command line overrides.
3582 case "$d_portable" in
3583 "$undef") ;;
3584 *)      d_portable="$define" ;;
3585 esac
3586
3587 : set up shell script to do ~ expansion
3588 cat >filexp <<EOSS
3589 $startsh
3590 : expand filename
3591 case "\$1" in
3592  ~/*|~)
3593         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3594         ;;
3595  ~*)
3596         if $test -f /bin/csh; then
3597                 /bin/csh -f -c "glob \$1"
3598                 failed=\$?
3599                 echo ""
3600                 exit \$failed
3601         else
3602                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3603                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3604                 if $test ! -d "\$dir"; then
3605                         me=\`basename \$0\`
3606                         echo "\$me: can't locate home directory for: \$name" >&2
3607                         exit 1
3608                 fi
3609                 case "\$1" in
3610                 */*)
3611                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3612                         ;;
3613                 *)
3614                         echo \$dir
3615                         ;;
3616                 esac
3617         fi
3618         ;;
3619 *)
3620         echo \$1
3621         ;;
3622 esac
3623 EOSS
3624 chmod +x filexp
3625 $eunicefix filexp
3626
3627 : now set up to get a file name
3628 cat <<EOS >getfile
3629 $startsh
3630 EOS
3631 cat <<'EOSC' >>getfile
3632 tilde=''
3633 fullpath=''
3634 already=''
3635 skip=''
3636 none_ok=''
3637 exp_file=''
3638 nopath_ok=''
3639 orig_rp="$rp"
3640 orig_dflt="$dflt"
3641 case "$gfpth" in
3642 '') gfpth='.' ;;
3643 esac
3644
3645 case "$fn" in
3646 *\(*)
3647         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3648         fn=`echo $fn | sed 's/(.*)//'`
3649         ;;
3650 esac
3651
3652 case "$fn" in
3653 *:*)
3654         loc_file=`expr $fn : '.*:\(.*\)'`
3655         fn=`expr $fn : '\(.*\):.*'`
3656         ;;
3657 esac
3658
3659 case "$fn" in
3660 *~*) tilde=true;;
3661 esac
3662 case "$fn" in
3663 */*) fullpath=true;;
3664 esac
3665 case "$fn" in
3666 *+*) skip=true;;
3667 esac
3668 case "$fn" in
3669 *n*) none_ok=true;;
3670 esac
3671 case "$fn" in
3672 *e*) exp_file=true;;
3673 esac
3674 case "$fn" in
3675 *p*) nopath_ok=true;;
3676 esac
3677
3678 case "$fn" in
3679 *f*) type='File';;
3680 *d*) type='Directory';;
3681 *l*) type='Locate';;
3682 esac
3683
3684 what="$type"
3685 case "$what" in
3686 Locate) what='File';;
3687 esac
3688
3689 case "$exp_file" in
3690 '')
3691         case "$d_portable" in
3692         "$define") ;;
3693         *) exp_file=true;;
3694         esac
3695         ;;
3696 esac
3697
3698 cd ..
3699 while test "$type"; do
3700         redo=''
3701         rp="$orig_rp"
3702         dflt="$orig_dflt"
3703         case "$tilde" in
3704         true) rp="$rp (~name ok)";;
3705         esac
3706         . UU/myread
3707         if test -f UU/getfile.ok && \
3708                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3709         then
3710                 value="$ans"
3711                 ansexp="$ans"
3712                 break
3713         fi
3714         case "$ans" in
3715         none)
3716                 value=''
3717                 ansexp=''
3718                 case "$none_ok" in
3719                 true) type='';;
3720                 esac
3721                 ;;
3722         *)
3723                 case "$tilde" in
3724                 '') value="$ans"
3725                         ansexp="$ans";;
3726                 *)
3727                         value=`UU/filexp $ans`
3728                         case $? in
3729                         0)
3730                                 if test "$ans" != "$value"; then
3731                                         echo "(That expands to $value on this system.)"
3732                                 fi
3733                                 ;;
3734                         *) value="$ans";;
3735                         esac
3736                         ansexp="$value"
3737                         case "$exp_file" in
3738                         '') value="$ans";;
3739                         esac
3740                         ;;
3741                 esac
3742                 case "$fullpath" in
3743                 true)
3744                         case "$ansexp" in
3745                         /*) value="$ansexp" ;;
3746                         [a-zA-Z]:/*) value="$ansexp" ;;
3747                         *)
3748                                 redo=true
3749                                 case "$already" in
3750                                 true)
3751                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3752                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3753                                         ;;
3754                                 *)
3755                                 echo "Please give a full path name, starting with slash." >&4
3756                                         case "$tilde" in
3757                                         true)
3758                                 echo "Note that using ~name is ok provided it expands well." >&4
3759                                                 already=true
3760                                                 ;;
3761                                         esac
3762                                 esac
3763                                 ;;
3764                         esac
3765                         ;;
3766                 esac
3767                 case "$redo" in
3768                 '')
3769                         case "$type" in
3770                         File)
3771                                 for fp in $gfpth; do
3772                                         if test "X$fp" = X.; then
3773                                             pf="$ansexp"
3774                                         else    
3775                                             pf="$fp/$ansexp"
3776                                         fi
3777                                         if test -f "$pf"; then
3778                                                 type=''
3779                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3780                                         then
3781                                                 echo "($value is not a plain file, but that's ok.)"
3782                                                 type=''
3783                                         fi
3784                                         if test X"$type" = X; then
3785                                             value="$pf"
3786                                             break
3787                                         fi
3788                                 done
3789                                 ;;
3790                         Directory)
3791                                 for fp in $gfpth; do
3792                                         if test "X$fp" = X.; then
3793                                             dir="$ans"
3794                                             direxp="$ansexp"
3795                                         else    
3796                                             dir="$fp/$ansexp"
3797                                             direxp="$fp/$ansexp"
3798                                         fi
3799                                         if test -d "$direxp"; then
3800                                                 type=''
3801                                                 value="$dir"
3802                                                 break
3803                                         fi
3804                                 done
3805                                 ;;
3806                         Locate)
3807                                 if test -d "$ansexp"; then
3808                                         echo "(Looking for $loc_file in directory $value.)"
3809                                         value="$value/$loc_file"
3810                                         ansexp="$ansexp/$loc_file"
3811                                 fi
3812                                 if test -f "$ansexp"; then
3813                                         type=''
3814                                 fi
3815                                 case "$nopath_ok" in
3816                                 true)   case "$value" in
3817                                         */*) ;;
3818                                         *)      echo "Assuming $value will be in people's path."
3819                                                 type=''
3820                                                 ;;
3821                                         esac
3822                                         ;;
3823                                 esac
3824                                 ;;
3825                         esac
3826
3827                         case "$skip" in
3828                         true) type='';
3829                         esac
3830
3831                         case "$type" in
3832                         '') ;;
3833                         *)
3834                                 if test "$fastread" = yes; then
3835                                         dflt=y
3836                                 else
3837                                         dflt=n
3838                                 fi
3839                                 rp="$what $value doesn't exist.  Use that name anyway?"
3840                                 . UU/myread
3841                                 dflt=''
3842                                 case "$ans" in
3843                                 y*) type='';;
3844                                 *) echo " ";;
3845                                 esac
3846                                 ;;
3847                         esac
3848                         ;;
3849                 esac
3850                 ;;
3851         esac
3852 done
3853 cd UU
3854 ans="$value"
3855 rp="$orig_rp"
3856 dflt="$orig_dflt"
3857 rm -f getfile.ok
3858 test "X$gfpthkeep" != Xy && gfpth=""
3859 EOSC
3860
3861 : What should the include directory be ?
3862 echo " "
3863 $echo $n "Hmm...  $c"
3864 dflt='/usr/include'
3865 incpath=''
3866 mips_type=''
3867 if $test -f /bin/mips && /bin/mips; then
3868         echo "Looks like a MIPS system..."
3869         $cat >usr.c <<'EOCP'
3870 #ifdef SYSTYPE_BSD43
3871 /bsd43
3872 #endif
3873 EOCP
3874         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3875                 dflt='/bsd43/usr/include'
3876                 incpath='/bsd43'
3877                 mips_type='BSD 4.3'
3878         else
3879                 mips_type='System V'
3880         fi
3881         $rm -f usr.c usr.out
3882         echo "and you're compiling with the $mips_type compiler and libraries."
3883         xxx_prompt=y
3884         echo "exit 0" >mips
3885 else
3886         echo "Doesn't look like a MIPS system."
3887         xxx_prompt=n
3888         echo "exit 1" >mips
3889 fi
3890 chmod +x mips
3891 $eunicefix mips
3892 case "$usrinc" in
3893 '') ;;
3894 *) dflt="$usrinc";;
3895 esac
3896 case "$xxx_prompt" in
3897 y)      fn=d/
3898         echo " "
3899         rp='Where are the include files you want to use?'
3900         . ./getfile
3901         usrinc="$ans"
3902         ;;
3903 *)      usrinc="$dflt"
3904         ;;
3905 esac
3906
3907 : see how we invoke the C preprocessor
3908 echo " "
3909 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3910 cat <<'EOT' >testcpp.c
3911 #define ABC abc
3912 #define XYZ xyz
3913 ABC.XYZ
3914 EOT
3915 cd ..
3916 if test ! -f cppstdin; then
3917         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3918                 # AIX cc -E doesn't show the absolute headerfile
3919                 # locations but we'll cheat by using the -M flag.
3920                 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
3921         else
3922                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3923         fi
3924 else
3925         echo "Keeping your $hint cppstdin wrapper."
3926 fi
3927 chmod 755 cppstdin
3928 wrapper=`pwd`/cppstdin
3929 ok='false'
3930 cd UU
3931
3932 if $test "X$cppstdin" != "X" && \
3933         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3934         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3935 then
3936         echo "You used to use $cppstdin $cppminus so we'll use that again."
3937         case "$cpprun" in
3938         '') echo "But let's see if we can live without a wrapper..." ;;
3939         *)
3940                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3941                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3942                 then
3943                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3944                         ok='true'
3945                 else
3946                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3947                 fi
3948                 ;;
3949         esac
3950 else
3951         case "$cppstdin" in
3952         '') ;;
3953         *)
3954                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3955                 ;;
3956         esac
3957 fi
3958
3959 if $ok; then
3960         : nothing
3961 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3962         $cc -E <testcpp.c >testcpp.out 2>&1; \
3963         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3964         echo "Yup, it does."
3965         x_cpp="$cc -E"
3966         x_minus='';
3967 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3968         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3969         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3970         echo "Yup, it does."
3971         x_cpp="$cc -E"
3972         x_minus='-';
3973 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3974         $cc -P <testcpp.c >testcpp.out 2>&1; \
3975         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3976         echo "Yipee, that works!"
3977         x_cpp="$cc -P"
3978         x_minus='';
3979 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3980         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3981         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3982         echo "At long last!"
3983         x_cpp="$cc -P"
3984         x_minus='-';
3985 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3986         $cpp <testcpp.c >testcpp.out 2>&1; \
3987         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3988         echo "It works!"
3989         x_cpp="$cpp"
3990         x_minus='';
3991 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3992         $cpp - <testcpp.c >testcpp.out 2>&1; \
3993         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3994         echo "Hooray, it works!  I was beginning to wonder."
3995         x_cpp="$cpp"
3996         x_minus='-';
3997 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3998         $wrapper <testcpp.c >testcpp.out 2>&1; \
3999         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4000         x_cpp="$wrapper"
4001         x_minus=''
4002         echo "Eureka!"
4003 else
4004         dflt=''
4005         rp="No dice.  I can't find a C preprocessor.  Name one:"
4006         . ./myread
4007         x_cpp="$ans"
4008         x_minus=''
4009         $x_cpp <testcpp.c >testcpp.out 2>&1
4010         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4011                 echo "OK, that will do." >&4
4012         else
4013 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4014                 exit 1
4015         fi
4016 fi
4017
4018 case "$ok" in
4019 false)
4020         cppstdin="$x_cpp"
4021         cppminus="$x_minus"
4022         cpprun="$x_cpp"
4023         cpplast="$x_minus"
4024         set X $x_cpp
4025         shift
4026         case "$1" in
4027         "$cpp")
4028                 echo "Perhaps can we force $cc -E using a wrapper..."
4029                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4030                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4031                 then
4032                         echo "Yup, we can."
4033                         cppstdin="$wrapper"
4034                         cppminus='';
4035                 else
4036                         echo "Nope, we'll have to live without it..."
4037                 fi
4038                 ;;
4039         esac
4040         case "$cpprun" in
4041         "$wrapper")
4042                 cpprun=''
4043                 cpplast=''
4044                 ;;
4045         esac
4046         ;;
4047 esac
4048
4049 case "$cppstdin" in
4050 "$wrapper"|'cppstdin') ;;
4051 *) $rm -f $wrapper;;
4052 esac
4053 $rm -f testcpp.c testcpp.out
4054
4055 : Set private lib path
4056 case "$plibpth" in
4057 '') if ./mips; then
4058                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4059         fi;;
4060 esac
4061 case "$libpth" in
4062 ' ') dlist='';;
4063 '') dlist="$loclibpth $plibpth $glibpth";;
4064 *) dlist="$libpth";;
4065 esac
4066
4067 : Now check and see which directories actually exist, avoiding duplicates
4068 libpth=''
4069 for xxx in $dlist
4070 do
4071     if $test -d $xxx; then
4072                 case " $libpth " in
4073                 *" $xxx "*) ;;
4074                 *) libpth="$libpth $xxx";;
4075                 esac
4076     fi
4077 done
4078 $cat <<'EOM'
4079
4080 Some systems have incompatible or broken versions of libraries.  Among
4081 the directories listed in the question below, please remove any you
4082 know not to be holding relevant libraries, and add any that are needed.
4083 Say "none" for none.
4084
4085 EOM
4086 case "$libpth" in
4087 '') dflt='none';;
4088 *)
4089         set X $libpth
4090         shift
4091         dflt=${1+"$@"}
4092         ;;
4093 esac
4094 rp="Directories to use for library searches?"
4095 . ./myread
4096 case "$ans" in
4097 none) libpth=' ';;
4098 *) libpth="$ans";;
4099 esac
4100
4101 : compute shared library extension
4102 case "$so" in
4103 '')
4104         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4105                 dflt='sl'
4106         else
4107                 dflt='so'
4108         fi
4109         ;;
4110 *) dflt="$so";;
4111 esac
4112 $cat <<EOM
4113
4114 On some systems, shared libraries may be available.  Answer 'none' if
4115 you want to suppress searching of shared libraries for the remainder
4116 of this configuration.
4117
4118 EOM
4119 rp='What is the file extension used for shared libraries?'
4120 . ./myread
4121 so="$ans"
4122
4123 : Define several unixisms.
4124 : Hints files or command line option can be used to override them.
4125 : The convoluted testing is in case hints files set either the old
4126 : or the new name.
4127 case "$_exe" in
4128 '')     case "$exe_ext" in
4129     '') ;;
4130         *)      _exe="$exe_ext" ;;
4131         esac
4132         ;;
4133 esac
4134 case "$_a" in
4135 '')     case "$lib_ext" in
4136     '') _a='.a';;
4137         *)      _a="$lib_ext" ;;
4138         esac
4139         ;;
4140 esac
4141 case "$_o" in
4142 '') case "$obj_ext" in
4143         '')     _o='.o';;
4144         *)      _o="$obj_ext";;
4145         esac
4146         ;;
4147 esac
4148 case "$p_" in
4149 '') case "$path_sep" in
4150         '')     p_=':';;
4151         *)      p_="$path_sep";;
4152         esac
4153         ;;
4154 esac
4155 exe_ext=$_exe
4156 lib_ext=$_a
4157 obj_ext=$_o
4158 path_sep=$p_
4159
4160 : Which makefile gets called first.  This is used by make depend.
4161 case "$firstmakefile" in
4162 '') firstmakefile='makefile';;
4163 esac
4164
4165 case "$usesocks" in
4166 $define|true|[yY]*)     dflt='y';;
4167 *) dflt='n';;
4168 esac
4169 cat <<EOM
4170
4171 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4172 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4173 to use the PerlIO abstraction layer, this will be implicitly selected.
4174
4175 If this doesn't make any sense to you, just accept the default '$dflt'.
4176 EOM
4177 rp='Build Perl for SOCKS?'
4178 . ./myread
4179 case "$ans" in
4180 y|Y)    val="$define" ;;     
4181 *)      val="$undef" ;;
4182 esac
4183 set usesocks
4184 eval $setvar
4185
4186 case "$usesocks" in
4187 $define|true|[yY]*) useperlio="$define";;
4188 esac
4189
4190 : Looking for optional libraries
4191 echo " "
4192 echo "Checking for optional libraries..." >&4
4193 case "$libs" in
4194 ' '|'') dflt='';;
4195 *) dflt="$libs";;
4196 esac
4197 case "$libswanted" in
4198 '') libswanted='c_s';;
4199 esac
4200 case "$usesocks" in
4201 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4202 esac
4203 libsfound=''
4204 libsfiles=''
4205 libsdirs=''
4206 libspath=''
4207 for thisdir in $libpth $xlibpth; do
4208   test -d $thisdir && libspath="$libspath $thisdir"
4209 done
4210 for thislib in $libswanted; do
4211         for thisdir in $libspath; do
4212             xxx=''
4213             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4214                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4215                 $test -f "$xxx" && eval $libscheck
4216                 $test -f "$xxx" && libstyle=shared
4217             fi
4218             if test ! -f "$xxx"; then
4219                 xxx=$thisdir/lib$thislib.$so
4220                 $test -f "$xxx" && eval $libscheck
4221                 $test -f "$xxx" && libstyle=shared
4222             fi  
4223             if test ! -f "$xxx"; then
4224                 xxx=$thisdir/lib$thislib$_a
4225                 $test -f "$xxx" && eval $libscheck
4226                 $test -f "$xxx" && libstyle=static
4227             fi
4228             if test ! -f "$xxx"; then
4229                 xxx=$thisdir/$thislib$_a
4230                 $test -f "$xxx" && eval $libscheck
4231                 $test -f "$xxx" && libstyle=static
4232             fi
4233             if test ! -f "$xxx"; then
4234                 xxx=$thisdir/lib${thislib}_s$_a
4235                 $test -f "$xxx" && eval $libscheck
4236                 $test -f "$xxx" && libstyle=static
4237                 $test -f "$xxx" && thislib=${thislib}_s
4238             fi
4239             if test ! -f "$xxx"; then
4240                 xxx=$thisdir/Slib$thislib$_a
4241                 $test -f "$xxx" && eval $libscheck
4242                 $test -f "$xxx" && libstyle=static
4243             fi
4244             if $test -f "$xxx"; then
4245                 case "$libstyle" in
4246                 shared) echo "Found -l$thislib (shared)." ;;
4247                 static) echo "Found -l$thislib." ;;
4248                 *)      echo "Found -l$thislib ($libstyle)." ;;
4249                 esac
4250                 case " $dflt " in
4251                 *"-l$thislib "*);;
4252                 *) dflt="$dflt -l$thislib"
4253                    libsfound="$libsfound $xxx"
4254                    yyy=`basename $xxx`
4255                    libsfiles="$libsfiles $yyy"
4256                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4257                    case " $libsdirs " in
4258                    *" $yyy "*) ;;
4259                    *) libsdirs="$libsdirs $yyy" ;;
4260                    esac
4261                    ;;
4262                 esac
4263                 break
4264             fi  
4265         done
4266         if $test ! -f "$xxx"; then
4267             echo "No -l$thislib."
4268         fi
4269 done
4270 set X $dflt
4271 shift
4272 dflt="$*"
4273 case "$libs" in
4274 '') dflt="$dflt";;
4275 *) dflt="$libs";;
4276 esac
4277 case "$dflt" in
4278 ' '|'') dflt='none';;
4279 esac
4280
4281 $cat <<EOM
4282
4283 In order to compile $package on your machine, a number of libraries
4284 are usually needed.  Include any other special libraries here as well.
4285 Say "none" for none.  The default list is almost always right.
4286 EOM
4287
4288 echo " "
4289 rp="What libraries to use?"
4290 . ./myread
4291 case "$ans" in
4292 none) libs=' ';;
4293 *) libs="$ans";;
4294 esac
4295
4296 : determine optimization, if desired, or use for debug flag also
4297 case "$optimize" in
4298 ' '|$undef) dflt='none';;
4299 '') dflt='-O';;
4300 *) dflt="$optimize";;
4301 esac
4302 $cat <<EOH
4303
4304 By default, $package compiles with the -O flag to use the optimizer.
4305 Alternately, you might want to use the symbolic debugger, which uses
4306 the -g flag (on traditional Unix systems).  Either flag can be
4307 specified here.  To use neither flag, specify the word "none".
4308
4309 EOH
4310 rp="What optimizer/debugger flag should be used?"
4311 . ./myread
4312 optimize="$ans"
4313 case "$optimize" in
4314 'none') optimize=" ";;
4315 esac
4316
4317 dflt=''
4318 : We will not override a previous value, but we might want to
4319 : augment a hint file
4320 case "$hint" in
4321 default|recommended)
4322         case "$gccversion" in
4323         1*) dflt='-fpcc-struct-return' ;;
4324         esac
4325         case "$optimize" in
4326         *-g*) dflt="$dflt -DDEBUGGING";;
4327         esac
4328         case "$gccversion" in
4329         2*) if test -d /etc/conf/kconfig.d &&
4330                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4331                 then
4332                         dflt="$dflt -posix"
4333                 fi
4334                 ;;
4335         esac
4336         case "$gccversion" in
4337         1*) ;;
4338         2.[0-8]*) ;;
4339         ?*)     echo " "
4340                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4341                 echo 'int main(void) { return 0; }' > gcctest.c
4342                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4343                         echo "Yes, it does." 2>&1
4344                         case "$ccflags" in
4345                         *strict-aliasing*) 
4346                                 echo "Leaving current flags $ccflags alone." 2>&1
4347                                 ;;
4348                         *) dflt="$dflt -fno-strict-aliasing" ;;
4349                         esac
4350                 else
4351                         echo "Nope, it doesn't, but that's ok." 2>&1
4352                 fi
4353                 ;;
4354         esac
4355         ;;
4356 esac
4357
4358 case "$mips_type" in
4359 *BSD*|'') inclwanted="$locincpth $usrinc";;
4360 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4361 esac
4362 for thisincl in $inclwanted; do
4363         if $test -d $thisincl; then
4364                 if $test x$thisincl != x$usrinc; then
4365                         case "$dflt" in
4366                         *" -I$thisincl "*);;
4367                         *) dflt="$dflt -I$thisincl ";;
4368                         esac
4369                 fi
4370         fi
4371 done
4372
4373 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4374         xxx=true;
4375 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4376         xxx=true;
4377 else
4378         xxx=false;
4379 fi;
4380 if $xxx; then
4381         case "$dflt" in
4382         *$2*);;
4383         *) dflt="$dflt -D$2";;
4384         esac;
4385 fi'
4386
4387 set signal.h LANGUAGE_C; eval $inctest
4388
4389 case "$usesocks" in
4390 $define)
4391         ccflags="$ccflags -DSOCKS"
4392         ;;
4393 esac
4394
4395 case "$hint" in
4396 default|recommended) dflt="$ccflags $dflt" ;;
4397 *) dflt="$ccflags";;
4398 esac
4399
4400 case "$dflt" in
4401 ''|' ') dflt=none;;
4402 esac
4403
4404 $cat <<EOH
4405
4406 Your C compiler may want other flags.  For this question you should include
4407 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4408 but you should NOT include libraries or ld flags like -lwhatever.  If you
4409 want $package to honor its debug switch, you should include -DDEBUGGING here.
4410 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4411
4412 To use no flags, specify the word "none".
4413
4414 EOH
4415 set X $dflt
4416 shift
4417 dflt=${1+"$@"}
4418 rp="Any additional cc flags?"
4419 . ./myread
4420 case "$ans" in
4421 none) ccflags='';;
4422 *) ccflags="$ans";;
4423 esac
4424
4425 : the following weeds options from ccflags that are of no interest to cpp
4426 case "$cppflags" in
4427 '') cppflags="$ccflags" ;;
4428 *)  cppflags="$cppflags $ccflags" ;;
4429 esac
4430 case "$gccversion" in
4431 1*) cppflags="$cppflags -D__GNUC__"
4432 esac
4433 case "$mips_type" in
4434 '');;
4435 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4436 esac
4437 case "$cppflags" in
4438 '');;
4439 *)
4440         echo " "
4441         echo "Let me guess what the preprocessor flags are..." >&4
4442         set X $cppflags
4443         shift
4444         cppflags=''
4445         $cat >cpp.c <<'EOM'
4446 #define BLURFL foo
4447
4448 BLURFL xx LFRULB
4449 EOM
4450         previous=''
4451         for flag in $*
4452         do
4453                 case "$flag" in
4454                 -*) ftry="$flag";;
4455                 *) ftry="$previous $flag";;
4456                 esac
4457                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4458                         >cpp1.out 2>/dev/null && \
4459                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4460                         >cpp2.out 2>/dev/null && \
4461                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4462                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4463                 then
4464                         cppflags="$cppflags $ftry"
4465                         previous=''
4466                 else
4467                         previous="$flag"
4468                 fi
4469         done
4470         set X $cppflags
4471         shift
4472         cppflags=${1+"$@"}
4473         case "$cppflags" in
4474         *-*)  echo "They appear to be: $cppflags";;
4475         esac
4476         $rm -f cpp.c cpp?.out
4477         ;;
4478 esac
4479
4480 : flags used in final linking phase
4481 case "$ldflags" in
4482 '') if ./venix; then
4483                 dflt='-i -z'
4484         else
4485                 dflt=''
4486         fi
4487         case "$ccflags" in
4488         *-posix*) dflt="$dflt -posix" ;;
4489         esac
4490         ;;
4491 *) dflt="$ldflags";;
4492 esac
4493
4494 : Try to guess additional flags to pick up local libraries.
4495 for thislibdir in $libpth; do
4496         case " $loclibpth " in
4497         *" $thislibdir "*)
4498                 case "$dflt " in 
4499                 *"-L$thislibdir "*) ;;
4500                 *)  dflt="$dflt -L$thislibdir" ;;
4501                 esac
4502                 ;;
4503         esac
4504 done
4505
4506 case "$dflt" in
4507 '') dflt='none' ;;
4508 esac
4509
4510 $cat <<EOH
4511
4512 Your C linker may need flags.  For this question you should
4513 include -L/whatever and any other flags used by the C linker, but you
4514 should NOT include libraries like -lwhatever.
4515
4516 Make sure you include the appropriate -L/path flags if your C linker
4517 does not normally search all of the directories you specified above,
4518 namely
4519         $libpth
4520 To use no flags, specify the word "none".
4521
4522 EOH
4523
4524 rp="Any additional ld flags (NOT including libraries)?"
4525 . ./myread
4526 case "$ans" in
4527 none) ldflags='';;
4528 *) ldflags="$ans";;
4529 esac
4530 rmlist="$rmlist pdp11"
4531
4532 : coherency check
4533 echo " "
4534 echo "Checking your choice of C compiler and flags for coherency..." >&4
4535 $cat > try.c <<'EOF'
4536 #include <stdio.h>
4537 int main() { printf("Ok\n"); exit(0); }
4538 EOF
4539 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4540 shift
4541 $cat >try.msg <<'EOM'
4542 I've tried to compile and run the following simple program:
4543
4544 EOM
4545 $cat try.c >> try.msg
4546
4547 $cat >> try.msg <<EOM
4548
4549 I used the command:
4550
4551         $*
4552         $run ./try
4553
4554 and I got the following output:
4555
4556 EOM
4557 dflt=y
4558 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4559         if $sh -c "$run ./try" >>try.msg 2>&1; then
4560                 xxx=`$run ./try`
4561                 case "$xxx" in
4562                 "Ok") dflt=n ;;
4563                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4564                         case " $libs " in
4565                         *" -lsfio "*)
4566                                 cat >> try.msg <<'EOQS'
4567 If $libs contains -lsfio, and sfio is mis-configured, then it
4568 sometimes (apparently) runs and exits with a 0 status, but with no
4569 output!  It may have to do with sfio's use of _exit vs. exit.
4570
4571 EOQS
4572                                 rp="You have a big problem.  Shall I abort Configure"
4573                                 dflt=y
4574                                 ;;
4575                         esac
4576                         ;;
4577                 esac
4578         else
4579                 echo "The program compiled OK, but exited with status $?." >>try.msg
4580                 rp="You have a problem.  Shall I abort Configure"
4581                 dflt=y
4582         fi
4583 else
4584         echo "I can't compile the test program." >>try.msg
4585         rp="You have a BIG problem.  Shall I abort Configure"
4586         dflt=y
4587 fi
4588 case "$dflt" in
4589 y)
4590         $cat try.msg >&4
4591         case "$knowitall" in
4592         '')
4593                 echo "(The supplied flags or libraries might be incorrect.)"
4594                 ;;
4595         *) dflt=n;;
4596         esac
4597         echo " "
4598         . ./myread
4599         case "$ans" in
4600         n*|N*) ;;
4601         *)      echo "Ok.  Stopping Configure." >&4
4602                 exit 1
4603                 ;;
4604         esac
4605         ;;
4606 n) echo "OK, that should do.";;
4607 esac
4608 $rm -f try try.* core
4609
4610 : define a shorthand compile call
4611 compile='
4612 mc_file=$1;
4613 shift;
4614 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4615 : define a shorthand compile call for compilations that should be ok.
4616 compile_ok='
4617 mc_file=$1;
4618 shift;
4619 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4620
4621 : check for lengths of integral types
4622 echo " "
4623 case "$intsize" in
4624 '')
4625         echo "Checking to see how big your integers are..." >&4
4626         $cat >try.c <<'EOCP'
4627 #include <stdio.h>
4628 int main()
4629 {
4630         printf("intsize=%d;\n", (int)sizeof(int));
4631         printf("longsize=%d;\n", (int)sizeof(long));
4632         printf("shortsize=%d;\n", (int)sizeof(short));
4633         exit(0);
4634 }
4635 EOCP
4636         set try
4637         if eval $compile_ok && $run ./try > /dev/null; then
4638                 eval `$run ./try`
4639                 echo "Your integers are $intsize bytes long."
4640                 echo "Your long integers are $longsize bytes long."
4641                 echo "Your short integers are $shortsize bytes long."
4642         else
4643                 $cat >&4 <<EOM
4644 !
4645 Help! I can't compile and run the intsize test program: please enlighten me!
4646 (This is probably a misconfiguration in your system or libraries, and
4647 you really ought to fix it.  Still, I'll try anyway.)
4648 !
4649 EOM
4650                 dflt=4
4651                 rp="What is the size of an integer (in bytes)?"
4652                 . ./myread
4653                 intsize="$ans"
4654                 dflt=$intsize
4655                 rp="What is the size of a long integer (in bytes)?"
4656                 . ./myread
4657                 longsize="$ans"
4658                 dflt=2
4659                 rp="What is the size of a short integer (in bytes)?"
4660                 . ./myread
4661                 shortsize="$ans"
4662         fi
4663         ;;
4664 esac
4665 $rm -f try try.*
4666
4667 : check for void type
4668 echo " "
4669 echo "Checking to see how well your C compiler groks the void type..." >&4
4670 case "$voidflags" in
4671 '')
4672         $cat >try.c <<'EOCP'
4673 #if TRY & 1
4674 void sub() {
4675 #else
4676 sub() {
4677 #endif
4678         extern void moo();      /* function returning void */
4679         void (*goo)();          /* ptr to func returning void */
4680 #if TRY & 8
4681         void *hue;              /* generic ptr */
4682 #endif
4683 #if TRY & 2
4684         void (*foo[10])();
4685 #endif
4686
4687 #if TRY & 4
4688         if(goo == moo) {
4689                 exit(0);
4690         }
4691 #endif
4692         exit(0);
4693 }
4694 int main() { sub(); }
4695 EOCP
4696         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4697                 voidflags=$defvoidused
4698         echo "Good.  It appears to support void to the level $package wants.">&4
4699                 if $contains warning .out >/dev/null 2>&1; then
4700                         echo "However, you might get some warnings that look like this:"
4701                         $cat .out
4702                 fi
4703         else
4704 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4705                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4706                         echo "It supports 1..."
4707                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4708                                 echo "It also supports 2..."
4709                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4710                                         voidflags=7
4711                                         echo "And it supports 4 but not 8 definitely."
4712                                 else
4713                                         echo "It doesn't support 4..."
4714                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4715                                                 voidflags=11
4716                                                 echo "But it supports 8."
4717                                         else
4718                                                 voidflags=3
4719                                                 echo "Neither does it support 8."
4720                                         fi
4721                                 fi
4722                         else
4723                                 echo "It does not support 2..."
4724                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4725                                         voidflags=13
4726                                         echo "But it supports 4 and 8."
4727                                 else
4728                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4729                                                 voidflags=5
4730                                                 echo "And it supports 4 but has not heard about 8."
4731                                         else
4732                                                 echo "However it supports 8 but not 4."
4733                                         fi
4734                                 fi
4735                         fi
4736                 else
4737                         echo "There is no support at all for void."
4738                         voidflags=0
4739                 fi
4740         fi
4741 esac
4742 case "$voidflags" in
4743 "$defvoidused") ;;
4744 *)      $cat >&4 <<'EOM'
4745   Support flag bits are:
4746     1: basic void declarations.
4747     2: arrays of pointers to functions returning void.
4748     4: operations between pointers to and addresses of void functions.
4749     8: generic void pointers.
4750 EOM
4751         dflt="$voidflags";
4752         rp="Your void support flags add up to what?"
4753         . ./myread
4754         voidflags="$ans"
4755         ;;
4756 esac
4757 $rm -f try.* .out
4758
4759 : check for length of pointer
4760 echo " "
4761 case "$ptrsize" in
4762 '')
4763         echo "Checking to see how big your pointers are..." >&4
4764         if test "$voidflags" -gt 7; then
4765                 echo '#define VOID_PTR char *' > try.c
4766         else
4767                 echo '#define VOID_PTR void *' > try.c
4768         fi
4769         $cat >>try.c <<'EOCP'
4770 #include <stdio.h>
4771 int main()
4772 {
4773     printf("%d\n", (int)sizeof(VOID_PTR));
4774     exit(0);
4775 }
4776 EOCP
4777         set try
4778         if eval $compile_ok; then
4779                 ptrsize=`$run ./try`
4780                 echo "Your pointers are $ptrsize bytes long."
4781         else
4782                 dflt='4'
4783                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4784                 rp="What is the size of a pointer (in bytes)?"
4785                 . ./myread
4786                 ptrsize="$ans"
4787         fi
4788         ;;
4789 esac
4790 $rm -f try.c try
4791
4792 : check for long long
4793 echo " "
4794 echo "Checking to see if you have long long..." >&4
4795 echo 'int main() { long long x = 7; return 0; }' > try.c
4796 set try
4797 if eval $compile; then
4798         val="$define"
4799         echo "You have long long."
4800 else
4801         val="$undef"
4802         echo "You do not have long long."
4803 fi
4804 $rm try.*
4805 set d_longlong
4806 eval $setvar
4807
4808 : check for length of long long
4809 case "${d_longlong}${longlongsize}" in
4810 $define)
4811         echo " "
4812         echo "Checking to see how big your long longs are..." >&4
4813         $cat >try.c <<'EOCP'
4814 #include <stdio.h>
4815 int main()
4816 {
4817     printf("%d\n", (int)sizeof(long long));
4818     return(0);
4819 }
4820 EOCP
4821         set try
4822         if eval $compile_ok; then
4823                 longlongsize=`$run ./try`
4824                 echo "Your long longs are $longlongsize bytes long."
4825         else
4826                 dflt='8'
4827                 echo " "
4828                 echo "(I can't seem to compile the test program.  Guessing...)"
4829                 rp="What is the size of a long long (in bytes)?"
4830                 . ./myread
4831                 longlongsize="$ans"
4832         fi
4833         if $test "X$longsize" = "X$longlongsize"; then
4834                 echo "(That isn't any different from an ordinary long.)"
4835         fi      
4836         ;;
4837 esac
4838 $rm -f try.* try
4839
4840 : determine filename position in cpp output
4841 echo " "
4842 echo "Computing filename position in cpp output for #include directives..." >&4
4843 echo '#include <stdio.h>' > foo.c
4844 $cat >fieldn <<EOF
4845 $startsh
4846 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4847 $grep '^[       ]*#.*stdio\.h' | \
4848 while read cline; do
4849         pos=1
4850         set \$cline
4851         while $test \$# -gt 0; do
4852                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4853                         echo "\$pos"
4854                         exit 0
4855                 fi
4856                 shift
4857                 pos=\`expr \$pos + 1\`
4858         done
4859 done
4860 EOF
4861 chmod +x fieldn
4862 fieldn=`./fieldn`
4863 $rm -f foo.c fieldn
4864 case $fieldn in
4865 '') pos='???';;
4866 1) pos=first;;
4867 2) pos=second;;
4868 3) pos=third;;
4869 *) pos="${fieldn}th";;
4870 esac
4871 echo "Your cpp writes the filename in the $pos field of the line."
4872
4873 case "$osname" in
4874 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
4875 *)   cppfilter='' ;;
4876 esac
4877 : locate header file
4878 $cat >findhdr <<EOF
4879 $startsh
4880 wanted=\$1
4881 name=''
4882 for usrincdir in $usrinc
4883 do
4884         if test -f \$usrincdir/\$wanted; then
4885                 echo "\$usrincdir/\$wanted"
4886                 exit 0
4887         fi
4888 done
4889 awkprg='{ print \$$fieldn }'
4890 echo "#include <\$wanted>" > foo\$\$.c
4891 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4892 $cppfilter $grep "^[    ]*#.*\$wanted" | \
4893 while read cline; do
4894         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4895         case "\$name" in
4896         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4897         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4898         *) exit 2;;
4899         esac;
4900 done;
4901 #
4902 # status = 0: grep returned 0 lines, case statement not executed
4903 # status = 1: headerfile found
4904 # status = 2: while loop executed, no headerfile found
4905 #
4906 status=\$?
4907 $rm -f foo\$\$.c;
4908 if test \$status -eq 1; then
4909         exit 0;
4910 fi
4911 exit 1
4912 EOF
4913 chmod +x findhdr
4914
4915 : define an alternate in-header-list? function
4916 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4917 cont=true; xxf="echo \"<\$1> found.\" >&4";
4918 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4919 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4920 esac;
4921 case $# in 4) instead=instead;; *) instead="at last";; esac;
4922 while $test "$cont"; do
4923         xxx=`./findhdr $1`
4924         var=$2; eval "was=\$$2";
4925         if $test "$xxx" && $test -r "$xxx";
4926         then eval $xxf;
4927         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4928                 cont="";
4929         else eval $xxnf;
4930         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4931         set $yyy; shift; shift; yyy=$@;
4932         case $# in 0) cont="";;
4933         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4934                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4935         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4936                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4937         esac;
4938 done;
4939 while $test "$yyy";
4940 do set $yyy; var=$2; eval "was=\$$2";
4941         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4942         set $yyy; shift; shift; yyy=$@;
4943 done'
4944
4945 : see if inttypes.h is available
4946 : we want a real compile instead of Inhdr because some systems
4947 : have an inttypes.h which includes non-existent headers
4948 echo " "
4949 $cat >try.c <<EOCP
4950 #include <inttypes.h>
4951 int main() {
4952         static int32_t foo32 = 0x12345678;
4953 }
4954 EOCP
4955 set try
4956 if eval $compile; then
4957         echo "<inttypes.h> found." >&4
4958         val="$define"
4959 else
4960         echo "<inttypes.h> NOT found." >&4
4961         val="$undef"
4962 fi
4963 $rm -f try.c try
4964 set i_inttypes
4965 eval $setvar
4966
4967 : check for int64_t
4968 echo " "
4969 echo "Checking to see if you have int64_t..." >&4
4970 $cat >try.c <<EOCP
4971 #include <sys/types.h>
4972 #$i_inttypes I_INTTYPES
4973 #ifdef I_INTTYPES
4974 #include <inttypes.h>
4975 #endif
4976 int main() { int64_t x = 7; }
4977 EOCP
4978 set try
4979 if eval $compile; then
4980         val="$define"
4981         echo "You have int64_t."
4982 else
4983         val="$undef"
4984         echo "You do not have int64_t."
4985 fi
4986 $rm -f try try.*
4987 set d_int64_t
4988 eval $setvar
4989
4990
4991 echo " "
4992 echo "Checking which 64-bit integer type we could use..." >&4
4993
4994 case "$intsize" in
4995 8) val=int
4996    set quadtype
4997    eval $setvar
4998    val='"unsigned int"'
4999    set uquadtype
5000    eval $setvar
5001    quadkind=1
5002    ;;
5003 *) case "$longsize" in
5004    8) val=long
5005       set quadtype
5006       eval $setvar
5007       val='"unsigned long"'
5008       set uquadtype
5009       eval $setvar
5010       quadkind=2
5011       ;;
5012    *) case "$d_longlong:$longlongsize" in
5013       define:8)
5014         val='"long long"'
5015         set quadtype
5016         eval $setvar
5017         val='"unsigned long long"'
5018         set uquadtype
5019         eval $setvar
5020         quadkind=3
5021         ;;
5022       *) case "$d_int64_t" in
5023          define)
5024            val=int64_t
5025            set quadtype
5026            eval $setvar
5027            val=uint64_t
5028            set uquadtype
5029            eval $setvar
5030            quadkind=4
5031            ;;
5032          esac
5033          ;;
5034       esac
5035       ;;
5036    esac
5037    ;;
5038 esac
5039
5040 case "$quadtype" in
5041 '')     echo "Alas, no 64-bit integer types in sight." >&4
5042         d_quad="$undef"
5043         ;;
5044 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5045         d_quad="$define"
5046         ;;
5047 esac
5048
5049
5050 case "$uselonglong" in
5051 "$define"|true|[yY]*)
5052         cat <<EOM >&4
5053
5054 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5055 EOM
5056         use64bitint="$define"
5057         ;;
5058 esac                          
5059 case "$use64bits" in
5060 "$define"|true|[yY]*)
5061         cat <<EOM >&4
5062
5063 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5064 EOM
5065         use64bitint="$define"
5066         ;;
5067 esac                          
5068 case "$use64bitints" in
5069 "$define"|true|[yY]*)
5070         cat <<EOM >&4
5071
5072 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5073 EOM
5074         use64bitint="$define"
5075         ;;
5076 esac                          
5077 case "$use64bitsint" in
5078 "$define"|true|[yY]*)
5079         cat <<EOM >&4
5080
5081 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5082 EOM
5083         use64bitint="$define"
5084         ;;
5085 esac                          
5086 case "$uselonglongs" in
5087 "$define"|true|[yY]*)
5088         cat <<EOM >&4
5089
5090 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5091 EOM
5092         use64bitint="$define"
5093         ;;
5094 esac                          
5095 case "$use64bitsall" in
5096 "$define"|true|[yY]*)
5097         cat <<EOM >&4
5098
5099 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5100 EOM
5101         use64bitall="$define"
5102         ;;
5103 esac                          
5104
5105 case "$ccflags" in
5106 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5107 esac
5108 case "$use64bitall" in
5109 "$define"|true|[yY]*) use64bitint="$define" ;;
5110 esac
5111
5112 case "$longsize" in
5113 8) cat <<EOM
5114
5115 You have natively 64-bit long integers.
5116 EOM
5117    val="$define"
5118    ;;
5119 *) case "$use64bitint" in
5120    "$define"|true|[yY]*) dflt='y';;
5121    *) dflt='n';;
5122    esac
5123    case "$d_quad" in
5124    "$define") ;;
5125    *) dflt='n' ;;
5126    esac
5127    cat <<EOM
5128
5129 Perl can be built to take advantage of 64-bit integer types
5130 on some systems.  To do so, Configure can be run with -Duse64bitint.
5131 Choosing this option will most probably introduce binary incompatibilities.
5132
5133 If this doesn't make any sense to you, just accept the default '$dflt'.
5134 (The default has been chosen based on your configuration.)
5135 EOM
5136    rp='Try to use 64-bit integers, if available?'
5137    . ./myread
5138    case "$ans" in
5139    [yY]*) val="$define" ;;
5140    *)     val="$undef"  ;;
5141    esac
5142    ;;
5143 esac
5144 set use64bitint
5145 eval $setvar
5146
5147 case "$use64bitall" in
5148 "$define"|true|[yY]*) dflt='y' ;;
5149 *) case "$longsize" in
5150    8) dflt='y' ;;
5151    *) dflt='n' ;;
5152    esac
5153    ;;
5154 esac    
5155 cat <<EOM
5156
5157 You may also choose to try maximal 64-bitness.  It means using as much
5158 64-bitness as possible on the platform.  This in turn means even more
5159 binary incompatibilities.  On the other hand, your platform may not
5160 have any more 64-bitness available than what you already have chosen.
5161
5162 If this doesn't make any sense to you, just accept the default '$dflt'.
5163 (The default has been chosen based on your configuration.)
5164 EOM
5165 rp='Try to use maximal 64-bit support, if available?'
5166 . ./myread
5167 case "$ans" in
5168 [yY]*) val="$define" ;;
5169 *)     val="$undef"  ;;
5170 esac
5171 set use64bitall
5172 eval $setvar
5173 case "$use64bitall" in
5174 "$define")
5175         case "$use64bitint" in
5176         "$undef")
5177                 cat <<EOM
5178
5179 Since you have chosen a maximally 64-bit build, I'm also turning on
5180 the use of 64-bit integers.
5181 EOM
5182                 use64bitint="$define" ;;
5183         esac
5184         ;;
5185 esac
5186
5187 case "$use64bitall" in
5188 "$define"|true|[yY]*)
5189         case "$ptrsize" in
5190         4)      cat <<EOM >&4
5191
5192 *** You have chosen a maximally 64-bit build, but your pointers
5193 *** are only 4 bytes wide, disabling maximal 64-bitness.
5194
5195 EOM
5196                 use64bitall="$undef"
5197                 case "$use64bitint" in
5198                 "$define"|true|[yY]*) ;;
5199                 *)      cat <<EOM >&4
5200
5201 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5202
5203 EOM
5204                         use64bitint="$define"
5205                         ;;
5206                 esac
5207                 ;;
5208         esac
5209         ;;
5210 esac
5211
5212 case "$use64bitint" in
5213 "$define"|true|[yY]*)
5214 : Look for a hint-file generated 'call-back-unit'.  If the
5215 : user has specified that a 64-bit perl is to be built,
5216 : we may need to set or change some other defaults.
5217         if $test -f use64bitint.cbu; then
5218                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5219                 . ./use64bitint.cbu
5220         fi
5221         case "$longsize" in
5222         4) case "$archname64" in
5223            '') archname64=64int ;;
5224            esac
5225            ;;
5226         esac
5227         ;;
5228 esac
5229
5230 case "$use64bitall" in
5231 "$define"|true|[yY]*)
5232 : Look for a hint-file generated 'call-back-unit'.  If the
5233 : user has specified that a maximally 64-bit perl is to be built,
5234 : we may need to set or change some other defaults.
5235         if $test -f use64bitall.cbu; then
5236                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5237                 . ./use64bitall.cbu
5238         fi
5239         case "$longsize" in
5240         4) case "$archname64" in
5241            ''|64int) archname64=64all ;;
5242            esac
5243            ;;
5244         esac
5245         ;;
5246 esac
5247
5248 echo " "
5249 echo "Checking for GNU C Library..." >&4
5250 cat >try.c <<EOM
5251 #include <stdio.h>
5252 int main()
5253 {
5254 #ifdef __GLIBC__
5255     exit(0);
5256 #else
5257     exit(1);
5258 #endif
5259 }
5260 EOM
5261 set try
5262 if eval $compile_ok && $run ./try; then
5263         val="$define"
5264         echo "You are using the GNU C Library"
5265 else
5266         val="$undef"
5267         echo "You are not using the GNU C Library"
5268 fi
5269 $rm -f try try.*
5270 set d_gnulibc
5271 eval $setvar
5272
5273 : see if nm is to be used to determine whether a symbol is defined or not
5274 case "$usenm" in
5275 '')
5276         dflt=''
5277         case "$d_gnulibc" in
5278         "$define")
5279                 echo " "
5280                 echo "nm probably won't work on the GNU C Library." >&4
5281                 dflt=n
5282                 ;;
5283         esac
5284         case "$dflt" in
5285         '') 
5286                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5287                         echo " "
5288                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5289                         echo "'nm' won't be sufficient on this sytem." >&4
5290                         dflt=n
5291                 fi
5292                 ;;
5293         esac
5294         case "$dflt" in
5295         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5296                 if $test $dflt -gt 20; then
5297                         dflt=y
5298                 else
5299                         dflt=n
5300                 fi
5301                 ;;
5302         esac
5303         ;;
5304 *)
5305         case "$usenm" in
5306         true|$define) dflt=y;;
5307         *) dflt=n;;
5308         esac
5309         ;;
5310 esac
5311 $cat <<EOM
5312
5313 I can use $nm to extract the symbols from your C libraries. This
5314 is a time consuming task which may generate huge output on the disk (up
5315 to 3 megabytes) but that should make the symbols extraction faster. The
5316 alternative is to skip the 'nm' extraction part and to compile a small
5317 test program instead to determine whether each symbol is present. If
5318 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5319 this may be the best solution.
5320
5321 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5322
5323 EOM
5324 rp="Shall I use $nm to extract C symbols from the libraries?"
5325 . ./myread
5326 case "$ans" in
5327 [Nn]*) usenm=false;;
5328 *) usenm=true;;
5329 esac
5330
5331 runnm=$usenm
5332 case "$reuseval" in
5333 true) runnm=false;;
5334 esac
5335
5336 : nm options which may be necessary
5337 case "$nm_opt" in
5338 '') if $test -f /mach_boot; then
5339                 nm_opt=''       # Mach
5340         elif $test -d /usr/ccs/lib; then
5341                 nm_opt='-p'     # Solaris (and SunOS?)
5342         elif $test -f /dgux; then
5343                 nm_opt='-p'     # DG-UX
5344         elif $test -f /lib64/rld; then
5345                 nm_opt='-p'     # 64-bit Irix
5346         else
5347                 nm_opt=''
5348         fi;;
5349 esac
5350
5351 : nm options which may be necessary for shared libraries but illegal
5352 : for archive libraries.  Thank you, Linux.
5353 case "$nm_so_opt" in
5354 '')     case "$myuname" in
5355         *linux*)
5356                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5357                         nm_so_opt='--dynamic'
5358                 fi
5359                 ;;
5360         esac
5361         ;;
5362 esac
5363
5364 case "$runnm" in
5365 true)
5366 : get list of predefined functions in a handy place
5367 echo " "
5368 case "$libc" in
5369 '') libc=unknown
5370         case "$libs" in
5371         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5372         esac
5373         ;;
5374 esac
5375 case "$libs" in
5376 '') ;;
5377 *)  for thislib in $libs; do
5378         case "$thislib" in
5379         -lc|-lc_s)
5380                 : Handle C library specially below.
5381                 ;;
5382         -l*)
5383                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5384                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5385                         :
5386                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5387                         :
5388                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5389                         :
5390                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5391                         :
5392                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5393                         :
5394                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5395                         :
5396                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5397                         :
5398                 else
5399                         try=''
5400                 fi
5401                 libnames="$libnames $try"
5402                 ;;
5403         *) libnames="$libnames $thislib" ;;
5404         esac
5405         done
5406         ;;
5407 esac
5408 xxx=normal
5409 case "$libc" in
5410 unknown)
5411         set /lib/libc.$so
5412         for xxx in $libpth; do
5413                 $test -r $1 || set $xxx/libc.$so
5414                 : The messy sed command sorts on library version numbers.
5415                 $test -r $1 || \
5416                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5417                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5418                                 h
5419                                 s/[0-9][0-9]*/0000&/g
5420                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5421                                 G
5422                                 s/\n/ /' | \
5423                          $sort | $sed -e 's/^.* //'`
5424                 eval set \$$#
5425         done
5426         $test -r $1 || set /usr/ccs/lib/libc.$so
5427         $test -r $1 || set /lib/libsys_s$_a
5428         ;;
5429 *)
5430         set blurfl
5431         ;;
5432 esac
5433 if $test -r "$1"; then
5434         echo "Your (shared) C library seems to be in $1."
5435         libc="$1"
5436 elif $test -r /lib/libc && $test -r /lib/clib; then
5437         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5438         xxx=apollo
5439         libc='/lib/clib /lib/libc'
5440         if $test -r /lib/syslib; then
5441                 echo "(Your math library is in /lib/syslib.)"
5442                 libc="$libc /lib/syslib"
5443         fi
5444 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5445         echo "Your C library seems to be in $libc, as you said before."
5446 elif $test -r $incpath/usr/lib/libc$_a; then
5447         libc=$incpath/usr/lib/libc$_a;
5448         echo "Your C library seems to be in $libc.  That's fine."
5449 elif $test -r /lib/libc$_a; then
5450         libc=/lib/libc$_a;
5451         echo "Your C library seems to be in $libc.  You're normal."
5452 else
5453         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5454                 :
5455         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5456                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5457         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5458                 :
5459         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5460                 :
5461         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5462                 :
5463         else
5464                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5465         fi
5466         if $test -r "$tans"; then
5467                 echo "Your C library seems to be in $tans, of all places."
5468                 libc=$tans
5469         else
5470                 libc='blurfl'
5471         fi
5472 fi
5473 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5474         dflt="$libc"
5475         cat <<EOM
5476
5477 If the guess above is wrong (which it might be if you're using a strange
5478 compiler, or your machine supports multiple models), you can override it here.
5479
5480 EOM
5481 else
5482         dflt=''
5483         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5484         cat >&4 <<EOM
5485 I can't seem to find your C library.  I've looked in the following places:
5486
5487 EOM
5488         $sed 's/^/      /' libpath
5489         cat <<EOM
5490
5491 None of these seems to contain your C library. I need to get its name...
5492
5493 EOM
5494 fi
5495 fn=f
5496 rp='Where is your C library?'
5497 . ./getfile
5498 libc="$ans"
5499
5500 echo " "
5501 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5502 set X `cat libnames`
5503 shift
5504 xxx=files
5505 case $# in 1) xxx=file; esac
5506 echo "Extracting names from the following $xxx for later perusal:" >&4
5507 echo " "
5508 $sed 's/^/      /' libnames >&4
5509 echo " "
5510 $echo $n "This may take a while...$c" >&4
5511
5512 for file in $*; do
5513         case $file in
5514         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5515         *) $nm $nm_opt $file 2>/dev/null;;
5516         esac
5517 done >libc.tmp
5518
5519 $echo $n ".$c"
5520 $grep fprintf libc.tmp > libc.ptf
5521 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5522 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5523 xxx='[ADTSIW]'
5524 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5525         eval $xscan;\
5526         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5527                 eval $xrun
5528 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5529         eval $xscan;\
5530         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5531                 eval $xrun
5532 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5533         eval $xscan;\
5534         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5535                 eval $xrun
5536 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5537         eval $xscan;\
5538         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5539                 eval $xrun
5540 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5541         eval $xscan;\
5542         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5543                 eval $xrun
5544 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5545         eval $xscan;\
5546         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5547                 eval $xrun
5548 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5549                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5550         eval $xscan;\
5551         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5552                 eval $xrun
5553 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5554         eval $xscan;\
5555         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5556                 eval $xrun
5557 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5558         eval $xscan;\
5559         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5560                 eval $xrun
5561 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5562         eval $xscan;\
5563         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5564                 eval $xrun
5565 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5566         eval $xscan;\
5567         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5568                 eval $xrun
5569 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5570         eval $xscan;\
5571         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5572                 eval $xrun
5573 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5574         eval $xscan;\
5575         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5576                 eval $xrun
5577 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5578         eval $xscan;\
5579         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5580                 eval $xrun
5581 else
5582         $nm -p $* 2>/dev/null >libc.tmp
5583         $grep fprintf libc.tmp > libc.ptf
5584         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5585                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5586         then
5587                 nm_opt='-p'
5588                 eval $xrun
5589         else
5590                 echo " "
5591                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5592                 com=''
5593                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5594                         for thisname in $libnames $libc; do
5595                                 $ar t $thisname >>libc.tmp
5596                         done
5597                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5598                         echo "Ok." >&4
5599                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5600                         # Repeat libc to extract forwarders to DLL entries too
5601                         for thisname in $libnames $libc; do
5602                                 $ar tv $thisname >>libc.tmp
5603                                 # Revision 50 of EMX has bug in $ar.
5604                                 # it will not extract forwarders to DLL entries
5605                                 # Use emximp which will extract exactly them.
5606                                 emximp -o tmp.imp $thisname \
5607                                     2>/dev/null && \
5608                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5609                                     < tmp.imp >>libc.tmp
5610                                 $rm tmp.imp
5611                         done
5612                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5613                         echo "Ok." >&4
5614                 else
5615                         echo "$ar didn't seem to work right." >&4
5616                         echo "Maybe this is a Cray...trying bld instead..." >&4
5617                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5618                         then
5619                                 for thisname in $libnames; do
5620                                         bld t $libnames | \
5621                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5622                                         $ar t $thisname >>libc.tmp
5623                                 done
5624                                 echo "Ok." >&4
5625                         else
5626                                 echo "That didn't work either.  Giving up." >&4
5627                                 exit 1
5628                         fi
5629                 fi
5630         fi
5631 fi
5632 nm_extract="$com"
5633 if $test -f /lib/syscalls.exp; then
5634         echo " "
5635         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5636         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5637 fi
5638 ;;
5639 esac
5640 $rm -f libnames libpath
5641
5642 : is a C symbol defined?
5643 csym='tlook=$1;
5644 case "$3" in
5645 -v) tf=libc.tmp; tc=""; tdc="";;
5646 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5647 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5648 esac;
5649 tx=yes;
5650 case "$reuseval-$4" in
5651 true-) ;;
5652 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5653 esac;
5654 case "$tx" in
5655 yes)
5656         case "$runnm" in
5657         true)
5658                 if $contains $tlook $tf >/dev/null 2>&1;
5659                 then tval=true;
5660                 else tval=false;
5661                 fi;;
5662         *)
5663                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5664                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5665                 then tval=true;
5666                 else tval=false;
5667                 fi;
5668                 $rm -f t t.c;;
5669         esac;;
5670 *)
5671         case "$tval" in
5672         $define) tval=true;;
5673         *) tval=false;;
5674         esac;;
5675 esac;
5676 eval "$2=$tval"'
5677
5678 : define an is-in-libc? function
5679 inlibc='echo " "; td=$define; tu=$undef;
5680 sym=$1; var=$2; eval "was=\$$2";
5681 tx=yes;
5682 case "$reuseval$was" in
5683 true) ;;
5684 true*) tx=no;;
5685 esac;
5686 case "$tx" in
5687 yes)
5688         set $sym tres -f;
5689         eval $csym;
5690         case "$tres" in
5691         true)
5692                 echo "$sym() found." >&4;
5693                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5694         *)
5695                 echo "$sym() NOT found." >&4;
5696                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5697         esac;;
5698 *)
5699         case "$was" in
5700         $define) echo "$sym() found." >&4;;
5701         *) echo "$sym() NOT found." >&4;;
5702         esac;;
5703 esac'
5704
5705 : see if sqrtl exists
5706 set sqrtl d_sqrtl
5707 eval $inlibc
5708
5709 case "$ccflags" in
5710 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5711 esac
5712
5713 case "$uselongdouble" in
5714 $define|true|[yY]*)     dflt='y';;
5715 *) dflt='n';;
5716 esac
5717 cat <<EOM
5718
5719 Perl can be built to take advantage of long doubles which
5720 (if available) may give more accuracy and range for floating point numbers.
5721
5722 If this doesn't make any sense to you, just accept the default '$dflt'.
5723 EOM
5724 rp='Try to use long doubles if available?'
5725 . ./myread
5726 case "$ans" in
5727 y|Y)    val="$define"   ;;
5728 *)      val="$undef"    ;;
5729 esac
5730 set uselongdouble
5731 eval $setvar
5732
5733 case "$uselongdouble" in
5734 true|[yY]*) uselongdouble="$define" ;;
5735 esac
5736
5737 case "$uselongdouble" in
5738 $define)
5739 : Look for a hint-file generated 'call-back-unit'.  If the
5740 : user has specified that long doubles should be used,
5741 : we may need to set or change some other defaults.
5742         if $test -f uselongdouble.cbu; then
5743                 echo "Your platform has some specific hints for long doubles, using them..."
5744                 . ./uselongdouble.cbu
5745         else
5746                 $cat <<EOM
5747 (Your platform doesn't have any specific hints for long doubles.)
5748 EOM
5749         fi
5750         ;;
5751 esac
5752
5753 case "$uselongdouble:$d_sqrtl" in
5754 $define:$undef)
5755                 $cat <<EOM >&4
5756
5757 *** You requested the use of long doubles but you do not seem to have
5758 *** the mathematic functions for long doubles.  I'm disabling the use
5759 *** of long doubles.
5760
5761 EOM
5762         uselongdouble=$undef
5763         ;;
5764 esac
5765
5766 : check for length of double
5767 echo " "
5768 case "$doublesize" in
5769 '')
5770         echo "Checking to see how big your double precision numbers are..." >&4
5771         $cat >try.c <<'EOCP'
5772 #include <stdio.h>
5773 int main()
5774 {
5775     printf("%d\n", (int)sizeof(double));
5776     exit(0);
5777 }
5778 EOCP
5779         set try
5780         if eval $compile_ok; then
5781                 doublesize=`$run ./try`
5782                 echo "Your double is $doublesize bytes long."
5783         else
5784                 dflt='8'
5785                 echo "(I can't seem to compile the test program.  Guessing...)"
5786                 rp="What is the size of a double precision number (in bytes)?"
5787                 . ./myread
5788                 doublesize="$ans"
5789         fi
5790         ;;
5791 esac
5792 $rm -f try.c try
5793
5794 : check for long doubles
5795 echo " "
5796 echo "Checking to see if you have long double..." >&4
5797 echo 'int main() { long double x = 7.0; }' > try.c
5798 set try
5799 if eval $compile; then
5800         val="$define"
5801         echo "You have long double."
5802 else
5803         val="$undef"
5804         echo "You do not have long double."
5805 fi
5806 $rm try.*
5807 set d_longdbl
5808 eval $setvar
5809
5810 : check for length of long double
5811 case "${d_longdbl}${longdblsize}" in
5812 $define)
5813         echo " "
5814         echo "Checking to see how big your long doubles are..." >&4
5815         $cat >try.c <<'EOCP'
5816 #include <stdio.h>
5817 int main()
5818 {
5819         printf("%d\n", sizeof(long double));
5820 }
5821 EOCP
5822         set try
5823         set try
5824         if eval $compile; then
5825                 longdblsize=`$run ./try`
5826                 echo "Your long doubles are $longdblsize bytes long."
5827         else
5828                 dflt='8'
5829                 echo " "
5830                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5831                 rp="What is the size of a long double (in bytes)?"
5832                 . ./myread
5833                 longdblsize="$ans"
5834         fi
5835         if $test "X$doublesize" = "X$longdblsize"; then
5836                 echo "(That isn't any different from an ordinary double.)"
5837         fi      
5838         ;;
5839 esac
5840 $rm -f try.* try
5841
5842 case "$useperlio" in
5843 $define|true|[yY]*|'')  dflt='y';;
5844 *) dflt='n';;
5845 esac
5846 cat <<EOM
5847
5848 Previous version of $package used the standard IO mechanisms as
5849 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5850 alternate IO mechanisms via the PerlIO abstraction layer, but the
5851 stdio mechanism is still available if needed.  The abstraction layer
5852 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5853 Using PerlIO with sfio may cause problems with some extension modules.
5854
5855 If this doesn't make any sense to you, just accept the default '$dflt'.
5856 EOM
5857 rp='Use the PerlIO abstraction layer?'
5858 . ./myread
5859 case "$ans" in
5860 y|Y) 
5861         val="$define"
5862         ;;
5863 *)      
5864         echo "Ok, doing things the stdio way."
5865         val="$undef"
5866         ;;
5867 esac
5868 set useperlio
5869 eval $setvar 
5870
5871 case "$usesocks" in
5872 $define|true|[yY]*)
5873         case "$useperlio" in
5874         $define|true|[yY]*) ;;
5875         *)      cat >&4 <<EOM
5876
5877 You are using the SOCKS proxy protocol library which means that you
5878 should also use the PerlIO layer.  You may be headed for trouble.
5879
5880 EOM
5881                 ;;
5882         esac
5883         ;;
5884 esac
5885
5886         
5887 : determine the architecture name
5888 echo " "
5889 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5890         tarch=`arch`"-$osname"
5891 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5892         if uname -m > tmparch 2>&1 ; then
5893                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5894                         -e 's/$/'"-$osname/" tmparch`
5895         else
5896                 tarch="$osname"
5897         fi
5898         $rm -f tmparch
5899 else
5900         tarch="$osname"
5901 fi
5902 case "$myarchname" in
5903 ''|"$tarch") ;;
5904 *)
5905         echo "(Your architecture name used to be $myarchname.)"
5906         archname=''
5907         ;;
5908 esac
5909 case "$targetarch" in
5910 '') ;;
5911 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5912 esac
5913 myarchname="$tarch"
5914 case "$archname" in
5915 '') dflt="$tarch";;
5916 *) dflt="$archname";;
5917 esac
5918 rp='What is your architecture name'
5919 . ./myread
5920 archname="$ans"
5921 case "$usethreads" in
5922 $define)
5923         echo "Threads selected." >&4
5924         case "$archname" in
5925         *-thread*) echo "...and architecture name already has -thread." >&4
5926                 ;;
5927         *)      archname="$archname-thread"
5928                 echo "...setting architecture name to $archname." >&4
5929                 ;;
5930         esac
5931         ;;
5932 esac
5933 case "$usemultiplicity" in
5934 $define)
5935         echo "Multiplicity selected." >&4
5936         case "$archname" in
5937         *-multi*) echo "...and architecture name already has -multi." >&4
5938                 ;;
5939         *)      archname="$archname-multi"
5940                 echo "...setting architecture name to $archname." >&4
5941                 ;;
5942         esac
5943         ;;
5944 esac
5945 case "$use64bitint$use64bitall" in
5946 *"$define"*)
5947         case "$archname64" in
5948         '')
5949                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5950                 ;;
5951         *)
5952                 case "$use64bitint" in
5953                 "$define") echo "64 bit integers selected." >&4 ;;
5954                 esac
5955                 case "$use64bitall" in
5956                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5957                 esac
5958                 case "$archname" in
5959                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5960                         ;;
5961                 *)      archname="$archname-$archname64"
5962                         echo "...setting architecture name to $archname." >&4
5963                         ;;
5964                 esac
5965                 ;;
5966         esac
5967 esac
5968 case "$uselongdouble" in
5969 $define)
5970         echo "Long doubles selected." >&4
5971         case "$longdblsize" in
5972         $doublesize)
5973                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5974                 ;;
5975         *)
5976                 case "$archname" in
5977                 *-ld*) echo "...and architecture name already has -ld." >&4
5978                         ;;
5979                 *)      archname="$archname-ld"
5980                         echo "...setting architecture name to $archname." >&4
5981                         ;;
5982                 esac
5983                 ;;
5984         esac
5985         ;;
5986 esac
5987 case "$useperlio" in
5988 $define)
5989         echo "Perlio selected." >&4
5990         ;;
5991 *)
5992         echo "Perlio not selected, using stdio." >&4
5993         case "$archname" in
5994         *-stdio*) echo "...and architecture name already has -stdio." >&4
5995                 ;;
5996         *)      archname="$archname-stdio"
5997                 echo "...setting architecture name to $archname." >&4
5998                 ;;
5999         esac
6000         ;;
6001 esac
6002
6003 : determine root of directory hierarchy where package will be installed.
6004 case "$prefix" in
6005 '')
6006         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6007         ;;
6008 *)
6009         dflt="$prefix"
6010         ;;
6011 esac
6012 $cat <<EOM
6013
6014 By default, $package will be installed in $dflt/bin, manual pages
6015 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6016 installation directories. Typically this is something like /usr/local.
6017 If you wish to have binaries under /usr/bin but other parts of the
6018 installation under /usr/local, that's ok: you will be prompted
6019 separately for each of the installation directories, the prefix being
6020 only used to set the defaults.
6021
6022 EOM
6023 fn=d~
6024 rp='Installation prefix to use?'
6025 . ./getfile
6026 oldprefix=''
6027 case "$prefix" in
6028 '') ;;
6029 *)
6030         case "$ans" in
6031         "$prefix") ;;
6032         *) oldprefix="$prefix";;
6033         esac
6034         ;;
6035 esac
6036 prefix="$ans"
6037 prefixexp="$ansexp"
6038
6039 case "$afsroot" in
6040 '')     afsroot=/afs ;;
6041 *)      afsroot=$afsroot ;;
6042 esac
6043
6044 : is AFS running?
6045 echo " "
6046 case "$afs" in
6047 $define|true)   afs=true ;;
6048 $undef|false)   afs=false ;;
6049 *)      if test -d $afsroot; then
6050                 afs=true
6051         else
6052                 afs=false
6053         fi
6054         ;;
6055 esac
6056 if $afs; then
6057         echo "AFS may be running... I'll be extra cautious then..." >&4
6058 else
6059         echo "AFS does not seem to be running..." >&4
6060 fi
6061
6062 : determine installation prefix for where package is to be installed.
6063 if $afs; then 
6064 $cat <<EOM
6065
6066 Since you are running AFS, I need to distinguish the directory in which
6067 files will reside from the directory in which they are installed (and from
6068 which they are presumably copied to the former directory by occult means).
6069
6070 EOM
6071         case "$installprefix" in
6072         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6073         *) dflt="$installprefix";;
6074         esac
6075 else
6076 $cat <<EOM
6077
6078 In some special cases, particularly when building $package for distribution,
6079 it is convenient to distinguish between the directory in which files should 
6080 be installed from the directory ($prefix) in which they 
6081 will eventually reside.  For most users, these two directories are the same.
6082
6083 EOM
6084         case "$installprefix" in
6085         '') dflt=$prefix ;;
6086         *) dflt=$installprefix;;
6087         esac
6088 fi
6089 fn=d~
6090 rp='What installation prefix should I use for installing files?'
6091 . ./getfile
6092 installprefix="$ans"
6093 installprefixexp="$ansexp"
6094
6095 : set the prefixit variable, to compute a suitable default value
6096 prefixit='case "$3" in
6097 ""|none)
6098         case "$oldprefix" in
6099         "") eval "$1=\"\$$2\"";;
6100         *)
6101                 case "$3" in
6102                 "") eval "$1=";;
6103                 none)
6104                         eval "tp=\"\$$2\"";
6105                         case "$tp" in
6106                         ""|" ") eval "$1=\"\$$2\"";;
6107                         *) eval "$1=";;
6108                         esac;;
6109                 esac;;
6110         esac;;
6111 *)
6112         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6113         case "$tp" in
6114         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6115         /*-$oldprefix/*|\~*-$oldprefix/*)
6116                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6117         *) eval "$1=\"\$$2\"";;
6118         esac;;
6119 esac'
6120
6121 : get the patchlevel
6122 echo " "
6123 echo "Getting the current patchlevel..." >&4
6124 if $test -r $rsrc/patchlevel.h;then
6125         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6126         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6127         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6128         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6129         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6130         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6131        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6132 else
6133         revision=0
6134         patchlevel=0
6135         subversion=0
6136         api_revision=0
6137         api_version=0
6138         api_subversion=0
6139         perl_patchlevel=0
6140         $echo "(You do not have patchlevel.h.  Eek.)"
6141 fi
6142 if $test -r $rsrc/.patch ; then  
6143         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6144                 perl_patchlevel=`cat $rsrc/.patch`
6145         fi
6146 fi
6147 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6148 version_patchlevel_string="version $patchlevel subversion $subversion"
6149 case "$perl_patchlevel" in
6150 0|'') ;;
6151 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6152 esac
6153
6154 $echo "(You have $package $version_patchlevel_string.)"
6155
6156 case "$osname" in
6157 dos|vms)
6158         : XXX Should be a Configure test for double-dots in filenames.
6159         version=`echo $revision $patchlevel $subversion | \
6160                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6161         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6162                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6163         ;;
6164 *)
6165         version=`echo $revision $patchlevel $subversion | \
6166                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6167         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6168                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6169         ;;
6170 esac
6171 : Special case the 5.005_xx maintenance series, which used 5.005
6172 : without any subversion label as a subdirectory in $sitelib
6173 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6174         api_versionstring='5.005'
6175 fi
6176
6177 : determine installation style
6178 : For now, try to deduce it from prefix unless it is already set.
6179 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6180 case "$installstyle" in
6181 '')     case "$prefix" in
6182                 *perl*) dflt='lib';;
6183                 *) dflt='lib/perl5' ;;
6184         esac
6185         ;;
6186 *)      dflt="$installstyle" ;;
6187 esac
6188 : Probably not worth prompting for this since we prompt for all
6189 : the directories individually, and the prompt would be too long and
6190 : confusing anyway.
6191 installstyle=$dflt
6192
6193 : determine where private library files go
6194 : Usual default is /usr/local/lib/perl5/$version.
6195 : Also allow things like /opt/perl/lib/$version, since 
6196 : /opt/perl/lib/perl5... would be redundant.
6197 : The default "style" setting is made in installstyle.U
6198 case "$installstyle" in
6199 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6200 *)       set dflt privlib lib/$version ;;
6201 esac
6202 eval $prefixit
6203 $cat <<EOM
6204
6205 There are some auxiliary files for $package that need to be put into a
6206 private library directory that is accessible by everyone.
6207
6208 EOM
6209 fn=d~+
6210 rp='Pathname where the private library files will reside?'
6211 . ./getfile
6212 privlib="$ans"
6213 privlibexp="$ansexp"
6214 : Change installation prefix, if necessary.
6215 if $test X"$prefix" != X"$installprefix"; then
6216         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6217 else
6218         installprivlib="$privlibexp"
6219 fi
6220
6221 : set the prefixup variable, to restore leading tilda escape
6222 prefixup='case "$prefixexp" in
6223 "$prefix") ;;
6224 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6225 esac'
6226
6227 : determine where public architecture dependent libraries go
6228 set archlib archlib
6229 eval $prefixit
6230 : privlib default is /usr/local/lib/$package/$version
6231 : archlib default is /usr/local/lib/$package/$version/$archname
6232 : privlib may have an optional trailing /share.
6233 tdflt=`echo $privlib | $sed 's,/share$,,'`
6234 tdflt=$tdflt/$archname
6235 case "$archlib" in
6236 '')     dflt=$tdflt
6237         ;;
6238 *)      dflt="$archlib"
6239     ;;
6240 esac
6241 $cat <<EOM
6242
6243 $spackage contains architecture-dependent library files.  If you are
6244 sharing libraries in a heterogeneous environment, you might store
6245 these files in a separate location.  Otherwise, you can just include
6246 them with the rest of the public library files.
6247
6248 EOM
6249 fn=d+~
6250 rp='Where do you want to put the public architecture-dependent libraries?'
6251 . ./getfile
6252 archlib="$ans"
6253 archlibexp="$ansexp"
6254 if $test X"$archlib" = X"$privlib"; then
6255         d_archlib="$undef"
6256 else
6257         d_archlib="$define"
6258 fi
6259 : Change installation prefix, if necessary.
6260 if $test X"$prefix" != X"$installprefix"; then
6261         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6262 else
6263         installarchlib="$archlibexp"
6264 fi
6265
6266
6267 : Binary compatibility with 5.005 is not possible for builds
6268 : with advanced features
6269 case "$usethreads$usemultiplicity" in
6270 *define*)
6271         bincompat5005="$undef"
6272         d_bincompat5005="$undef"
6273         ;;
6274 *)      $cat <<EOM
6275
6276 This version of Perl can be compiled for binary compatibility with 5.005.
6277 If you decide to do so, you will be able to continue using most of the
6278 extensions that were compiled for Perl 5.005.
6279
6280 EOM
6281         case "$bincompat5005$d_bincompat5005" in
6282         *"$undef"*) dflt=n ;;
6283         *) dflt=y ;;
6284         esac
6285         rp='Binary compatibility with Perl 5.005?'
6286         . ./myread
6287         case "$ans" in
6288         y*) val="$define" ;;
6289         *)  val="$undef" ;;
6290         esac
6291         set d_bincompat5005
6292         eval $setvar
6293         case "$d_bincompat5005" in
6294         "$define")
6295                 bincompat5005="$define"
6296                 ;;
6297         *)      bincompat5005="$undef"
6298                 d_bincompat5005="$undef"
6299                 ;;
6300         esac
6301         ;;
6302 esac
6303
6304
6305 : see if setuid scripts can be secure
6306 $cat <<EOM
6307
6308 Some kernels have a bug that prevents setuid #! scripts from being
6309 secure.  Some sites have disabled setuid #! scripts because of this.
6310
6311 First let's decide if your kernel supports secure setuid #! scripts.
6312 (If setuid #! scripts would be secure but have been disabled anyway,
6313 don't say that they are secure if asked.)
6314
6315 EOM
6316
6317 val="$undef"
6318 if $test -d /dev/fd; then
6319         echo "#!$ls" >reflect
6320         chmod +x,u+s reflect
6321         ./reflect >flect 2>&1
6322         if $contains "/dev/fd" flect >/dev/null; then
6323                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6324                 val="$define"
6325         else
6326                 $cat <<EOM
6327 If you are not sure if they are secure, I can check but I'll need a
6328 username and password different from the one you are using right now.
6329 If you don't have such a username or don't want me to test, simply
6330 enter 'none'.
6331
6332 EOM
6333                 rp='Other username to test security of setuid scripts with?'
6334                 dflt='none'
6335                 . ./myread
6336                 case "$ans" in
6337                 n|none)
6338                         case "$d_suidsafe" in
6339                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6340                                 dflt=n;;
6341                         "$undef")
6342                                 echo "Well, the $hint value is *not* secure." >&4
6343                                 dflt=n;;
6344                         *)      echo "Well, the $hint value *is* secure." >&4
6345                                 dflt=y;;
6346                         esac
6347                         ;;
6348                 *)
6349                         $rm -f reflect flect
6350                         echo "#!$ls" >reflect
6351                         chmod +x,u+s reflect
6352                         echo >flect
6353                         chmod a+w flect
6354                         echo '"su" will (probably) prompt you for '"$ans's password."
6355                         su $ans -c './reflect >flect'
6356                         if $contains "/dev/fd" flect >/dev/null; then
6357                                 echo "Okay, it looks like setuid scripts are secure." >&4
6358                                 dflt=y
6359                         else
6360                                 echo "I don't think setuid scripts are secure." >&4
6361                                 dflt=n
6362                         fi
6363                         ;;
6364                 esac
6365                 rp='Does your kernel have *secure* setuid scripts?'
6366                 . ./myread
6367                 case "$ans" in
6368                 [yY]*)  val="$define";;
6369                 *)      val="$undef";;
6370                 esac
6371         fi
6372 else
6373         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6374         echo "(That's for file descriptors, not floppy disks.)"
6375         val="$undef"
6376 fi
6377 set d_suidsafe
6378 eval $setvar
6379
6380 $rm -f reflect flect
6381
6382 : now see if they want to do setuid emulation
6383 echo " "
6384 val="$undef"
6385 case "$d_suidsafe" in
6386 "$define")
6387         val="$undef"
6388         echo "No need to emulate SUID scripts since they are secure here." >&4
6389         ;;
6390 *)
6391         $cat <<EOM
6392 Some systems have disabled setuid scripts, especially systems where
6393 setuid scripts cannot be secure.  On systems where setuid scripts have
6394 been disabled, the setuid/setgid bits on scripts are currently
6395 useless.  It is possible for $package to detect those bits and emulate
6396 setuid/setgid in a secure fashion.  This emulation will only work if
6397 setuid scripts have been disabled in your kernel.
6398
6399 EOM
6400         case "$d_dosuid" in
6401         "$define") dflt=y ;;
6402         *) dflt=n ;;
6403         esac
6404         rp="Do you want to do setuid/setgid emulation?"
6405         . ./myread
6406         case "$ans" in
6407         [yY]*)  val="$define";;
6408         *)      val="$undef";;
6409         esac
6410         ;;
6411 esac
6412 set d_dosuid
6413 eval $setvar
6414
6415 : see if this is a malloc.h system
6416 set malloc.h i_malloc
6417 eval $inhdr
6418
6419 : see if stdlib is available
6420 set stdlib.h i_stdlib
6421 eval $inhdr
6422
6423 : determine which malloc to compile in
6424 echo " "
6425 case "$usemymalloc" in
6426 [yY]*|true|$define)     dflt='y' ;;
6427 [nN]*|false|$undef)     dflt='n' ;;
6428 *)      case "$ptrsize" in
6429         4) dflt='y' ;;
6430         *) dflt='n' ;;
6431         esac
6432         ;;
6433 esac
6434 rp="Do you wish to attempt to use the malloc that comes with $package?"
6435 . ./myread
6436 usemymalloc="$ans"
6437 case "$ans" in
6438 y*|true)
6439         usemymalloc='y'
6440         mallocsrc='malloc.c'
6441         mallocobj="malloc$_o"
6442         d_mymalloc="$define"
6443         case "$libs" in
6444         *-lmalloc*)
6445                 : Remove malloc from list of libraries to use
6446                 echo "Removing unneeded -lmalloc from library list" >&4
6447                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6448                 shift
6449                 libs="$*"
6450                 echo "libs = $libs" >&4
6451                 ;;
6452         esac
6453         ;;
6454 *)
6455         usemymalloc='n'
6456         mallocsrc=''
6457         mallocobj=''
6458         d_mymalloc="$undef"
6459         ;;
6460 esac
6461
6462 : compute the return types of malloc and free
6463 echo " "
6464 $cat >malloc.c <<END
6465 #$i_malloc I_MALLOC
6466 #$i_stdlib I_STDLIB
6467 #include <stdio.h>
6468 #include <sys/types.h>
6469 #ifdef I_MALLOC
6470 #include <malloc.h>
6471 #endif
6472 #ifdef I_STDLIB
6473 #include <stdlib.h>
6474 #endif
6475 #ifdef TRY_MALLOC
6476 void *malloc();
6477 #endif
6478 #ifdef TRY_FREE
6479 void free();
6480 #endif
6481 END
6482 case "$malloctype" in
6483 '')
6484         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6485                 malloctype='void *'
6486         else
6487                 malloctype='char *'
6488         fi
6489         ;;
6490 esac
6491 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6492
6493 case "$freetype" in
6494 '')
6495         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6496                 freetype='void'
6497         else
6498                 freetype='int'
6499         fi
6500         ;;
6501 esac
6502 echo "Your system uses $freetype free(), it would seem." >&4
6503 $rm -f malloc.[co]
6504 $cat <<EOM
6505
6506 After $package is installed, you may wish to install various
6507 add-on modules and utilities.  Typically, these add-ons will
6508 be installed under $prefix with the rest
6509 of this package.  However, you may wish to install such add-ons
6510 elsewhere under a different prefix.
6511
6512 If you do not wish to put everything under a single prefix, that's
6513 ok.  You will be prompted for the individual locations; this siteprefix
6514 is only used to suggest the defaults.
6515
6516 The default should be fine for most people.
6517
6518 EOM
6519 fn=d~+
6520 rp='Installation prefix to use for add-on modules and utilities?'
6521 : XXX Here might be another good place for an installstyle setting.
6522 case "$siteprefix" in
6523 '') dflt=$prefix ;;
6524 *)  dflt=$siteprefix ;;
6525 esac
6526 . ./getfile
6527 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6528 oldsiteprefix=''
6529 case "$siteprefix" in
6530 '') ;;
6531 *)      case "$ans" in
6532         "$prefix") ;;
6533         *) oldsiteprefix="$prefix";;
6534         esac
6535         ;;
6536 esac
6537 siteprefix="$ans"
6538 siteprefixexp="$ansexp"
6539
6540 : determine where site specific libraries go.
6541 : Usual default is /usr/local/lib/perl5/site_perl/$version
6542 : The default "style" setting is made in installstyle.U
6543 : XXX No longer works with Prefixit stuff.
6544 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6545 case "$sitelib" in
6546 '') case "$installstyle" in
6547         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6548         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6549         esac
6550         ;;
6551 *)      dflt="$sitelib"
6552         ;;
6553 esac
6554 $cat <<EOM
6555
6556 The installation process will create a directory for
6557 site-specific extensions and modules.  Most users find it convenient
6558 to place all site-specific files in this directory rather than in the
6559 main distribution directory.
6560
6561 EOM
6562 fn=d~+
6563 rp='Pathname for the site-specific library files?'
6564 . ./getfile
6565 sitelib="$ans"
6566 sitelibexp="$ansexp"
6567 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6568 : Change installation prefix, if necessary.
6569 if $test X"$prefix" != X"$installprefix"; then
6570         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6571 else
6572         installsitelib="$sitelibexp"
6573 fi
6574
6575 : determine where site specific architecture-dependent libraries go.
6576 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6577 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6578 : sitelib may have an optional trailing /share.
6579 case "$sitearch" in
6580 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6581         dflt="$dflt/$archname"
6582         ;;
6583 *)      dflt="$sitearch"
6584         ;;
6585 esac
6586 set sitearch sitearch none
6587 eval $prefixit
6588 $cat <<EOM
6589
6590 The installation process will also create a directory for
6591 architecture-dependent site-specific extensions and modules.
6592
6593 EOM
6594 fn=d~+
6595 rp='Pathname for the site-specific architecture-dependent library files?'
6596 . ./getfile
6597 sitearch="$ans"
6598 sitearchexp="$ansexp"
6599 : Change installation prefix, if necessary.
6600 if $test X"$prefix" != X"$installprefix"; then
6601         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6602 else
6603         installsitearch="$sitearchexp"
6604 fi
6605
6606 $cat <<EOM
6607
6608 The installation process will also create a directory for
6609 vendor-supplied add-ons.  Vendors who supply perl with their system
6610 may find it convenient to place all vendor-supplied files in this
6611 directory rather than in the main distribution directory.  This will
6612 ease upgrades between binary-compatible maintenance versions of perl.
6613
6614 Of course you may also use these directories in whatever way you see
6615 fit.  For example, you might use them to access modules shared over a
6616 company-wide network.
6617
6618 The default answer should be fine for most people.
6619 This causes further questions about vendor add-ons to be skipped
6620 and no vendor-specific directories will be configured for perl.
6621
6622 EOM
6623 rp='Do you want to configure vendor-specific add-on directories?'
6624 case "$usevendorprefix" in
6625 define|true|[yY]*) dflt=y ;;
6626 *)      : User may have set vendorprefix directly on Configure command line.
6627         case "$vendorprefix" in
6628         ''|' ') dflt=n ;;
6629         *)      dflt=y ;;
6630         esac
6631         ;;
6632 esac
6633 . ./myread
6634 case "$ans" in
6635 [yY]*)  fn=d~+
6636         rp='Installation prefix to use for vendor-supplied add-ons?'
6637         case "$vendorprefix" in
6638         '') dflt='' ;;
6639         *)  dflt=$vendorprefix ;;
6640         esac
6641         . ./getfile
6642         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6643         oldvendorprefix=''
6644         case "$vendorprefix" in
6645         '') ;;
6646         *)      case "$ans" in
6647                 "$prefix") ;;
6648                 *) oldvendorprefix="$prefix";;
6649                 esac
6650                 ;;
6651         esac
6652         usevendorprefix="$define"
6653         vendorprefix="$ans"
6654         vendorprefixexp="$ansexp"
6655         ;;
6656 *)      usevendorprefix="$undef"
6657         vendorprefix=''
6658         vendorprefixexp=''
6659         ;;
6660 esac
6661
6662 case "$vendorprefix" in
6663 '')     d_vendorlib="$undef"
6664         vendorlib=''
6665         vendorlibexp=''
6666         ;;
6667 *)      d_vendorlib="$define"
6668         : determine where vendor-supplied modules go.
6669         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6670         case "$vendorlib" in
6671         '')
6672                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6673                 case "$installstyle" in
6674                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6675                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6676                 esac
6677                 ;;
6678         *)      dflt="$vendorlib"
6679                 ;;
6680         esac
6681         fn=d~+
6682         rp='Pathname for the vendor-supplied library files?'
6683         . ./getfile
6684         vendorlib="$ans"
6685         vendorlibexp="$ansexp"
6686         ;;
6687 esac
6688 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6689 : Change installation prefix, if necessary.
6690 if $test X"$prefix" != X"$installprefix"; then
6691         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6692 else
6693         installvendorlib="$vendorlibexp"
6694 fi
6695
6696 case "$vendorprefix" in
6697 '')     d_vendorarch="$undef"
6698         vendorarch=''
6699         vendorarchexp=''
6700         ;;
6701 *)      d_vendorarch="$define"
6702         : determine where vendor-supplied architecture-dependent libraries go.
6703         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6704         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6705         : vendorlib may have an optional trailing /share.
6706         case "$vendorarch" in
6707         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6708                 dflt="$dflt/$archname"
6709                 ;;
6710         *)      dflt="$vendorarch" ;;
6711         esac
6712         fn=d~+
6713         rp='Pathname for vendor-supplied architecture-dependent files?'
6714         . ./getfile
6715         vendorarch="$ans"
6716         vendorarchexp="$ansexp"
6717         ;;
6718 esac
6719 : Change installation prefix, if necessary.
6720 if $test X"$prefix" != X"$installprefix"; then
6721         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6722 else
6723         installvendorarch="$vendorarchexp"
6724 fi
6725
6726 : Final catch-all directories to search
6727 $cat <<EOM
6728
6729 Lastly, you can have perl look in other directories for extensions and
6730 modules in addition to those already specified.
6731 These directories will be searched after 
6732         $sitearch 
6733         $sitelib 
6734 EOM
6735 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6736 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6737 echo ' '
6738 case "$otherlibdirs" in
6739 ''|' ') dflt='none' ;;
6740 *)      dflt="$otherlibdirs" ;;
6741 esac
6742 $cat <<EOM
6743 Enter a colon-separated set of extra paths to include in perl's @INC
6744 search path, or enter 'none' for no extra paths.
6745
6746 EOM
6747
6748 rp='Colon-separated list of additional directories for perl to search?'
6749 . ./myread
6750 case "$ans" in
6751 ' '|''|none)    otherlibdirs=' ' ;;     
6752 *)      otherlibdirs="$ans" ;;
6753 esac
6754 case "$otherlibdirs" in
6755 ' ') val=$undef ;;
6756 *)      val=$define ;;
6757 esac
6758 set d_perl_otherlibdirs
6759 eval $setvar
6760
6761 : Cruising for prototypes
6762 echo " "
6763 echo "Checking out function prototypes..." >&4
6764 $cat >prototype.c <<'EOCP'
6765 int main(int argc, char *argv[]) {
6766         exit(0);}
6767 EOCP
6768 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6769         echo "Your C compiler appears to support function prototypes."
6770         val="$define"
6771 else
6772         echo "Your C compiler doesn't seem to understand function prototypes."
6773         val="$undef"
6774 fi
6775 set prototype
6776 eval $setvar
6777 $rm -f prototype*
6778
6779 case "$prototype" in
6780 "$define") ;;
6781 *)      ansi2knr='ansi2knr'
6782         echo " "
6783         cat <<EOM >&4
6784
6785 $me:  FATAL ERROR:
6786 This version of $package can only be compiled by a compiler that 
6787 understands function prototypes.  Unfortunately, your C compiler 
6788         $cc $ccflags
6789 doesn't seem to understand them.  Sorry about that.
6790
6791 If GNU cc is available for your system, perhaps you could try that instead.  
6792
6793 Eventually, we hope to support building Perl with pre-ANSI compilers.
6794 If you would like to help in that effort, please contact <perlbug@perl.org>.
6795
6796 Aborting Configure now.
6797 EOM
6798         exit 2
6799         ;;
6800 esac
6801
6802 : determine where public executables go
6803 echo " "
6804 set dflt bin bin
6805 eval $prefixit
6806 fn=d~
6807 rp='Pathname where the public executables will reside?'
6808 . ./getfile
6809 if $test "X$ansexp" != "X$binexp"; then
6810         installbin=''
6811 fi
6812 bin="$ans"
6813 binexp="$ansexp"
6814 : Change installation prefix, if necessary.
6815 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6816 if $test X"$prefix" != X"$installprefix"; then
6817         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6818 else
6819         installbin="$binexp"
6820 fi
6821
6822 echo " "
6823 case "$extras" in
6824 '') dflt='n';;
6825 *) dflt='y';;
6826 esac
6827 cat <<EOM
6828 Perl can be built with extra modules or bundles of modules which
6829 will be fetched from the CPAN and installed alongside Perl.
6830
6831 Notice that you will need access to the CPAN; either via the Internet,
6832 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6833 be asked later to configure the CPAN.pm module which will in turn do
6834 the installation of the rest of the extra modules or bundles.)
6835
6836 Notice also that if the modules require any external software such as
6837 libraries and headers (the libz library and the zlib.h header for the
6838 Compress::Zlib module, for example) you MUST have any such software
6839 already installed, this configuration process will NOT install such
6840 things for you.
6841
6842 If this doesn't make any sense to you, just accept the default '$dflt'.
6843 EOM
6844 rp='Install any extra modules (y or n)?'
6845 . ./myread
6846 case "$ans" in
6847 y|Y)
6848         cat <<EOM
6849
6850 Please list any extra modules or bundles to be installed from CPAN,
6851 with spaces between the names.  The names can be in any format the
6852 'install' command of CPAN.pm will understand.  (Answer 'none',
6853 without the quotes, to install no extra modules or bundles.)
6854 EOM
6855         rp='Extras?'
6856         dflt="$extras"
6857         . ./myread
6858         extras="$ans"
6859 esac
6860 case "$extras" in
6861 ''|'none')
6862         val=''
6863         $rm -f ../extras.lst
6864         ;;
6865 *)      echo "(Saving the list of extras for later...)"
6866         echo "$extras" > ../extras.lst
6867         val="'$extras'"
6868         ;;
6869 esac
6870 set extras
6871 eval $setvar
6872 echo " "
6873
6874 : Find perl5.005 or later.
6875 echo "Looking for a previously installed perl5.005 or later... "
6876 case "$perl5" in
6877 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6878                 : Check if this perl is recent and can load a simple module
6879                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6880                         perl5=$tdir/perl
6881                         break;
6882                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6883                         perl5=$tdir/perl5
6884                         break;
6885                 fi
6886         done
6887         ;;
6888 *)      perl5="$perl5"
6889         ;;
6890 esac
6891 case "$perl5" in
6892 '')     echo "None found.  That's ok.";;
6893 *)      echo "Using $perl5." ;;
6894 esac
6895
6896 : Determine list of previous versions to include in @INC
6897 $cat > getverlist <<EOPL
6898 #!$perl5 -w
6899 use File::Basename;
6900 \$api_versionstring = "$api_versionstring";
6901 \$version = "$version";
6902 \$stem = "$sitelib_stem";
6903 \$archname = "$archname";
6904 EOPL
6905         $cat >> getverlist <<'EOPL'
6906 # Can't have leading @ because metaconfig interprets it as a command!
6907 ;@inc_version_list=();
6908 # XXX Redo to do opendir/readdir? 
6909 if (-d $stem) {
6910     chdir($stem);
6911     ;@candidates = glob("5.*");
6912 }
6913 else {
6914     ;@candidates = ();
6915 }
6916
6917 # XXX ToDo:  These comparisons must be reworked when two-digit
6918 # subversions come along, so that 5.7.10 compares as greater than
6919 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6920 # widespread that we can use the built-in version vectors rather
6921 # than reinventing them here.  For 5.6.0, however, we must
6922 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6923 foreach $d (@candidates) {
6924     if ($d lt $version) {
6925         if ($d ge $api_versionstring) {
6926             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6927         }
6928         elsif ($d ge "5.005") {
6929             unshift(@inc_version_list, grep { -d } $d);
6930         }
6931     }
6932     else {
6933         # Skip newer version.  I.e. don't look in
6934         # 5.7.0 if we're installing 5.6.1.
6935     }
6936 }
6937
6938 if (@inc_version_list) {
6939     print join(' ', @inc_version_list);
6940 }
6941 else {
6942     # Blank space to preserve value for next Configure run.
6943     print " ";
6944 }
6945 EOPL
6946 chmod +x getverlist
6947 case "$inc_version_list" in
6948 '')     if test -x "$perl5$exe_ext"; then
6949                 dflt=`$perl5 getverlist`
6950         else
6951                 dflt='none'
6952         fi
6953         ;;
6954 $undef) dflt='none' ;;
6955 *)  eval dflt=\"$inc_version_list\" ;;
6956 esac
6957 case "$dflt" in
6958 ''|' ') dflt=none ;;
6959 esac
6960 case "$dflt" in
6961 5.005) case "$bincompat5005" in
6962        $define|true|[yY]*) ;;
6963        *) dflt=none ;;
6964        esac
6965        ;;
6966 esac
6967 $cat <<'EOM'
6968
6969 In order to ease the process of upgrading, this version of perl 
6970 can be configured to use modules built and installed with earlier 
6971 versions of perl that were installed under $prefix.  Specify here
6972 the list of earlier versions that this version of perl should check.
6973 If Configure detected no earlier versions of perl installed under
6974 $prefix, then the list will be empty.  Answer 'none' to tell perl
6975 to not search earlier versions.
6976
6977 The default should almost always be sensible, so if you're not sure,
6978 just accept the default.
6979 EOM
6980
6981 rp='List of earlier versions to include in @INC?'
6982 . ./myread
6983 case "$ans" in
6984 [Nn]one|''|' ') inc_version_list=' ' ;;
6985 *) inc_version_list="$ans" ;;
6986 esac
6987 case "$inc_version_list" in
6988 ''|' ') 
6989         inc_version_list_init='0';;
6990 *)      inc_version_list_init=`echo $inc_version_list |
6991                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6992         ;;
6993 esac
6994 $rm -f getverlist
6995
6996 : determine whether to install perl also as /usr/bin/perl
6997
6998 echo " "
6999 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7000         $cat <<EOM
7001 Many scripts expect perl to be installed as /usr/bin/perl.
7002 I can install the perl you are about to compile also as /usr/bin/perl
7003 (in addition to $installbin/perl).
7004 EOM
7005         case "$installusrbinperl" in
7006         "$undef"|[nN]*) dflt='n';;
7007         *)              dflt='y';;
7008         esac
7009         rp="Do you want to install perl as /usr/bin/perl?"
7010         . ./myread
7011         case "$ans" in
7012         [yY]*)  val="$define";;
7013         *)      val="$undef" ;;
7014         esac
7015 else
7016         val="$undef"
7017 fi
7018 set installusrbinperl
7019 eval $setvar
7020
7021 : see if dld is available
7022 set dld.h i_dld
7023 eval $inhdr
7024
7025 : see if dlopen exists
7026 xxx_runnm="$runnm"
7027 runnm=false
7028 set dlopen d_dlopen
7029 eval $inlibc
7030 runnm="$xxx_runnm"
7031
7032 : determine which dynamic loading, if any, to compile in
7033 echo " "
7034 dldir="ext/DynaLoader"
7035 case "$usedl" in
7036 $define|y|true)
7037         dflt='y'
7038         usedl="$define"
7039         ;;
7040 $undef|n|false)
7041         dflt='n'
7042         usedl="$undef"
7043         ;;
7044 *) 
7045         dflt='n'
7046         case "$d_dlopen" in
7047             $define) dflt='y' ;;
7048         esac
7049         case "$i_dld" in
7050             $define) dflt='y' ;;
7051         esac
7052         : Does a dl_xxx.xs file exist for this operating system
7053         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7054         ;;
7055 esac
7056 rp="Do you wish to use dynamic loading?"
7057 . ./myread
7058 usedl="$ans"
7059 case "$ans" in
7060 y*) usedl="$define"
7061         case "$dlsrc" in
7062         '')
7063                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7064                         dflt="$dldir/dl_${osname}.xs"
7065                 elif $test "$d_dlopen" = "$define" ; then
7066                         dflt="$dldir/dl_dlopen.xs"
7067                 elif $test "$i_dld" = "$define" ; then
7068                         dflt="$dldir/dl_dld.xs"
7069                 else
7070                         dflt=''
7071                 fi
7072                 ;;
7073         *)      dflt="$dldir/$dlsrc"
7074                 ;;
7075         esac
7076     echo "The following dynamic loading files are available:"
7077         : Can not go over to $dldir because getfile has path hard-coded in.
7078         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7079         rp="Source file to use for dynamic loading"
7080         fn="fne"
7081         gfpth="$src"
7082         . ./getfile
7083         usedl="$define"
7084         : emulate basename
7085         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7086
7087         $cat << EOM
7088
7089 Some systems may require passing special flags to $cc -c to
7090 compile modules that will be used to create a shared library.
7091 To use no flags, say "none".
7092
7093 EOM
7094     case "$cccdlflags" in
7095     '') case "$gccversion" in
7096                 '') case "$osname" in
7097                         hpux)   dflt='+z' ;;
7098                         next)   dflt='none' ;;
7099                         irix*)  dflt='-KPIC' ;;
7100                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7101                         sunos)  dflt='-pic' ;;
7102                         *)      dflt='none' ;;
7103                     esac
7104                         ;;
7105                 *)  case "$osname" in
7106                         darwin) dflt='none' ;;
7107                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7108                         *)      dflt='-fpic' ;;
7109                     esac ;;
7110             esac ;;
7111         ' ') dflt='none' ;;
7112     *)  dflt="$cccdlflags" ;;
7113     esac
7114     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7115     . ./myread
7116     case "$ans" in
7117     none) cccdlflags=' ' ;;
7118     *) cccdlflags="$ans" ;;
7119     esac
7120
7121     cat << EOM
7122
7123 Some systems use ld to create libraries that can be dynamically loaded,
7124 while other systems (such as those using ELF) use $cc.
7125
7126 EOM
7127         case "$ld" in
7128         '')     $cat >try.c <<'EOM'
7129 /* Test for whether ELF binaries are produced */
7130 #include <fcntl.h>
7131 #include <stdlib.h>
7132 int main() {
7133         char b[4];
7134         int i = open("a.out",O_RDONLY);
7135         if(i == -1) 
7136                 exit(1); /* fail */
7137         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7138                 exit(0); /* succeed (yes, it's ELF) */
7139         else
7140                 exit(1); /* fail */
7141 }
7142 EOM
7143                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7144                         cat <<EOM
7145 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7146 EOM
7147                         dflt="$cc"
7148                 else
7149                         echo "I'll use ld to build dynamic libraries."
7150                         dflt='ld'
7151                 fi
7152                 rm -f try.c a.out
7153                 ;;
7154         *)      dflt="$ld"
7155                 ;;
7156         esac
7157
7158     rp="What command should be used to create dynamic libraries?"
7159     . ./myread
7160         ld="$ans"
7161
7162     cat << EOM
7163
7164 Some systems may require passing special flags to $ld to create a
7165 library that can be dynamically loaded.  If your ld flags include
7166 -L/other/path options to locate libraries outside your loader's normal
7167 search path, you may need to specify those -L options here as well.  To
7168 use no flags, say "none".
7169
7170 EOM
7171     case "$lddlflags" in
7172     '') case "$osname" in
7173                         beos) dflt='-nostart' ;;
7174                         hpux) dflt='-b';
7175                               case "$gccversion" in
7176                               '') dflt="$dflt +vnocompatwarnings" ;;
7177                               esac
7178                               ;;        
7179                         linux|irix*)    dflt='-shared' ;;
7180                         next)  dflt='none' ;;
7181                         solaris) dflt='-G' ;;
7182                         sunos) dflt='-assert nodefinitions' ;;
7183                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7184                 *)     dflt='none' ;;
7185                         esac
7186                         ;;
7187     *) dflt="$lddlflags" ;;
7188     esac
7189
7190         : Try to guess additional flags to pick up local libraries.
7191         : Be careful not to append to a plain 'none'
7192         case "$dflt" in
7193         none) dflt='' ;;
7194         esac
7195         for thisflag in $ldflags; do
7196                 case "$thisflag" in
7197                 -L*|-R*|-Wl,-R*)
7198                         case " $dflt " in
7199                         *" $thisflag "*) ;;
7200                         *) dflt="$dflt $thisflag" ;;
7201                         esac
7202                         ;;
7203                 esac
7204         done
7205
7206         case "$dflt" in
7207         ''|' ') dflt='none' ;;
7208         esac
7209
7210     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7211     . ./myread
7212     case "$ans" in
7213     none) lddlflags=' ' ;;
7214     *) lddlflags="$ans" ;;
7215     esac
7216
7217         cat <<EOM
7218
7219 Some systems may require passing special flags to $cc to indicate that
7220 the resulting executable will use dynamic linking.  To use no flags,
7221 say "none".
7222
7223 EOM
7224     case "$ccdlflags" in
7225     '') case "$osname" in
7226                 hpux)   dflt='-Wl,-E' ;;
7227                 linux)  dflt='-rdynamic' ;;
7228                 next)   dflt='none' ;;
7229                 sunos)  dflt='none' ;;
7230                 *)      dflt='none' ;;
7231             esac ;;
7232     ' ')  dflt='none' ;;
7233     *)  dflt="$ccdlflags" ;;
7234     esac
7235     rp="Any special flags to pass to $cc to use dynamic linking?"
7236     . ./myread
7237     case "$ans" in
7238     none) ccdlflags=' ' ;;
7239     *) ccdlflags="$ans" ;;
7240     esac
7241     ;;
7242 *)  usedl="$undef"
7243         ld='ld'
7244     dlsrc='dl_none.xs'
7245     lddlflags=''
7246     ccdlflags=''
7247     ;;
7248 esac
7249
7250 also=''
7251 case "$usedl" in
7252 $undef)
7253         # No dynamic loading being used, so don't bother even to prompt.
7254         useshrplib='false'
7255         ;;
7256 *)      case "$useshrplib" in
7257         '')     case "$osname" in
7258                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7259                         dflt=y
7260                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7261                         ;;
7262                 next*)
7263                         case "$osvers" in
7264                         4*)     dflt=y
7265                                 also='Building a shared libperl is needed for MAB support.'
7266                                 ;;
7267                         *)      dflt=n
7268                                 ;;
7269                         esac
7270                         ;;
7271                 *)      dflt=n
7272                         ;;
7273                 esac
7274                 ;;
7275         $define|true|[Yy]*)
7276                 dflt=y
7277                 ;;
7278         *)      dflt=n
7279                 ;;
7280         esac
7281         $cat << EOM
7282
7283 The perl executable is normally obtained by linking perlmain.c with
7284 libperl${_a}, any static extensions (usually just DynaLoader), and
7285 any other libraries needed on this system (such as -lm, etc.).  Since
7286 your system supports dynamic loading, it is probably possible to build
7287 a shared libperl.$so.  If you will have more than one executable linked
7288 to libperl.$so, this will significantly reduce the size of each
7289 executable, but it may have a noticeable affect on performance.  The
7290 default is probably sensible for your system.
7291 $also
7292
7293 EOM
7294         rp="Build a shared libperl.$so (y/n)"
7295         . ./myread
7296         case "$ans" in
7297         true|$define|[Yy]*)
7298                 useshrplib='true'  ;;
7299         *)      useshrplib='false' ;;
7300         esac
7301         ;;
7302 esac
7303
7304 case "$useshrplib" in
7305 true)
7306         case "$libperl" in
7307         '')
7308                 # Figure out a good name for libperl.so.  Since it gets stored in
7309                 # a version-specific architecture-dependent library, the version
7310                 # number isn't really that important, except for making cc/ld happy.
7311                 #
7312                 # A name such as libperl.so.3.1
7313                 majmin="libperl.$so.$patchlevel.$subversion"
7314                 # A name such as libperl.so.301
7315                 majonly=`echo $patchlevel $subversion |
7316                         $awk '{printf "%d%02d", $1, $2}'`
7317                 majonly=libperl.$so.$majonly
7318                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7319                 # rely on figuring it out from the naming of libc.
7320                 case "${osname}${osvers}" in
7321                 next4*)
7322                         dflt=libperl.5.$so
7323                         # XXX How handle the --version stuff for MAB?
7324                         ;;
7325                 linux*)  # ld won't link with a bare -lperl otherwise.
7326                         dflt=libperl.$so
7327                         ;;
7328                 cygwin*) # include version
7329                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7330                         ;;
7331                 *)      # Try to guess based on whether libc has major.minor.
7332                         case "$libc" in
7333                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7334                         *libc.$so.[0-9]*) dflt=$majonly ;;
7335                         *)      dflt=libperl.$so ;;
7336                         esac
7337                         ;;
7338                 esac
7339                 ;;
7340         *)      dflt=$libperl
7341                 ;;
7342         esac
7343         cat << EOM
7344
7345 I need to select a good name for the shared libperl.  If your system uses
7346 library names with major and minor numbers, then you might want something
7347 like $majmin.  Alternatively, if your system uses a single version
7348 number for shared libraries, then you might want to use $majonly.
7349 Or, your system might be quite happy with a simple libperl.$so.
7350
7351 Since the shared libperl will get installed into a version-specific
7352 architecture-dependent directory, the version number of the shared perl
7353 library probably isn't important, so the default should be o.k.
7354
7355 EOM
7356         rp='What name do you want to give to the shared libperl?'
7357         . ./myread
7358         libperl=$ans
7359         echo "Ok, I'll use $libperl"
7360         ;;
7361 *)
7362         libperl="libperl${_a}"
7363         ;;
7364 esac
7365
7366 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7367 case "$shrpdir" in
7368 '') ;;
7369 *)      $cat >&4 <<EOM
7370 WARNING:  Use of the shrpdir variable for the installation location of
7371 the shared $libperl is not supported.  It was never documented and
7372 will not work in this version.  Let me (perlbug@perl.org)
7373 know of any problems this may cause.
7374
7375 EOM
7376         case "$shrpdir" in
7377         "$archlibexp/CORE")
7378                 $cat >&4 <<EOM
7379 But your current setting of $shrpdir is
7380 the default anyway, so it's harmless.
7381 EOM
7382                 ;;
7383         *)
7384                 $cat >&4 <<EOM
7385 Further, your current attempted setting of $shrpdir
7386 conflicts with the value of $archlibexp/CORE
7387 that installperl will use.
7388 EOM
7389                 ;;
7390         esac
7391         ;;
7392 esac
7393
7394 # How will the perl executable find the installed shared $libperl?
7395 # Add $xxx to ccdlflags.
7396 # If we can't figure out a command-line option, use $shrpenv to
7397 # set env LD_RUN_PATH.  The main perl makefile uses this.
7398 shrpdir=$archlibexp/CORE
7399 xxx=''
7400 tmp_shrpenv=''
7401 if "$useshrplib"; then
7402     case "$osname" in 
7403         aix)
7404                 # We'll set it in Makefile.SH...
7405                 ;;
7406         solaris)
7407                 xxx="-R $shrpdir"
7408                 ;;
7409         freebsd|netbsd)
7410                 xxx="-Wl,-R$shrpdir"
7411                 ;;
7412         linux|irix*|dec_osf)
7413                 xxx="-Wl,-rpath,$shrpdir"
7414                 ;;
7415         next)
7416                 # next doesn't like the default...
7417                 ;;
7418         beos)
7419                 # beos doesn't like the default, either.
7420                 ;;
7421         hpux*)
7422                 # hpux doesn't like the default, either.
7423                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7424                 ;;
7425         *)
7426                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7427                 ;;
7428         esac
7429         case "$xxx" in
7430         '') ;;
7431         *)      
7432                 # Only add $xxx if it isn't already in ccdlflags.
7433                 case " $ccdlflags " in
7434                 *" $xxx "*)     ;;
7435                 *)      ccdlflags="$ccdlflags $xxx"
7436                         cat <<EOM >&4
7437
7438 Adding $xxx to the flags
7439 passed to $ld so that the perl executable will find the 
7440 installed shared $libperl.
7441
7442 EOM
7443                         ;;
7444                 esac
7445                 ;;
7446         esac
7447 fi
7448 # Fix ccdlflags in AIX for building external extensions.
7449 # (For building Perl itself bare -bE:perl.exp is needed,
7450 #  Makefile.SH takes care of this.)
7451 case "$osname" in
7452 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7453 esac
7454 # Respect a hint or command-line value.
7455 case "$shrpenv" in
7456 '') shrpenv="$tmp_shrpenv" ;;
7457 esac
7458 case "$ldlibpthname" in
7459 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7460 none)   ldlibpthname='' ;;
7461 esac
7462
7463 : determine where manual pages are on this system
7464 echo " "
7465 case "$sysman" in
7466 '') 
7467         syspath='/usr/share/man/man1 /usr/man/man1'
7468         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7469         syspath="$syspath /usr/man/u_man/man1"
7470         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7471         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7472         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7473         sysman=`./loc . /usr/man/man1 $syspath`
7474         ;;
7475 esac
7476 if $test -d "$sysman"; then
7477         echo "System manual is in $sysman." >&4
7478 else
7479         echo "Could not find manual pages in source form." >&4
7480 fi
7481
7482 : determine where manual pages go
7483 set man1dir man1dir none
7484 eval $prefixit
7485 $cat <<EOM
7486
7487 $spackage has manual pages available in source form.
7488 EOM
7489 case "$nroff" in
7490 nroff)
7491         echo "However, you don't have nroff, so they're probably useless to you."
7492         case "$man1dir" in
7493         '') man1dir="none";;
7494         esac;;
7495 esac
7496 echo "If you don't want the manual sources installed, answer 'none'."
7497 case "$man1dir" in
7498 ' ') dflt=none
7499         ;;
7500 '')
7501         lookpath="$prefixexp/share/man/man1"
7502         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7503         lookpath="$lookpath $prefixexp/man/p_man/man1"
7504         lookpath="$lookpath $prefixexp/man/u_man/man1"
7505         lookpath="$lookpath $prefixexp/man/man.1"
7506         case "$sysman" in
7507         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7508         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7509         esac
7510         set dflt
7511         eval $prefixup
7512         ;;
7513 *)  dflt="$man1dir"
7514         ;;
7515 esac
7516 echo " "
7517 fn=dn+~
7518 rp="Where do the main $spackage manual pages (source) go?"
7519 . ./getfile
7520 if $test "X$man1direxp" != "X$ansexp"; then
7521         installman1dir=''
7522 fi
7523 man1dir="$ans"
7524 man1direxp="$ansexp"
7525 case "$man1dir" in
7526 '')     man1dir=' '
7527         installman1dir='';;
7528 esac
7529
7530 : Change installation prefix, if necessary.
7531 if $test X"$prefix" != X"$installprefix"; then
7532         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7533 else
7534         installman1dir="$man1direxp"
7535 fi
7536
7537 : What suffix to use on installed man pages
7538
7539 case "$man1dir" in
7540 ' ')
7541         man1ext='0'
7542         ;;
7543 *)
7544         rp="What suffix should be used for the main $spackage man pages?"
7545         case "$man1ext" in
7546         '')     case "$man1dir" in
7547                 *1)  dflt=1 ;;
7548                 *1p) dflt=1p ;;
7549                 *1pm) dflt=1pm ;;
7550                 *l) dflt=l;;
7551                 *n) dflt=n;;
7552                 *o) dflt=o;;
7553                 *p) dflt=p;;
7554                 *C) dflt=C;;
7555                 *L) dflt=L;;
7556                 *L1) dflt=L1;;
7557                 *) dflt=1;;
7558                 esac
7559                 ;;
7560         *)      dflt="$man1ext";;
7561         esac
7562         . ./myread
7563         man1ext="$ans"
7564         ;;
7565 esac
7566
7567 : see if we can have long filenames
7568 echo " "
7569 first=123456789abcdef
7570 $rm -f $first
7571 if (echo hi >$first) 2>/dev/null; then
7572         if $test -f 123456789abcde; then
7573                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7574                 val="$undef"
7575         else
7576                 echo 'You can have filenames longer than 14 characters.'>&4
7577                 val="$define"
7578         fi
7579 else
7580         $cat <<'EOM'
7581 You can't have filenames longer than 14 chars.
7582 You can't even think about them!
7583 EOM
7584         val="$undef"
7585 fi 
7586 set d_flexfnam
7587 eval $setvar
7588 $rm -rf 123456789abcde*
7589
7590 : determine where library module manual pages go
7591 set man3dir man3dir none
7592 eval $prefixit
7593 $cat <<EOM
7594
7595 $spackage has manual pages for many of the library modules.
7596 EOM
7597
7598 case "$nroff" in
7599 nroff)
7600         $cat <<'EOM'
7601 However, you don't have nroff, so they're probably useless to you.
7602 EOM
7603         case "$man3dir" in
7604         '') man3dir="none";;
7605         esac;;
7606 esac
7607
7608 case "$d_flexfnam" in
7609 undef)
7610         $cat <<'EOM'
7611 However, your system can't handle the long file names like File::Basename.3. 
7612 EOM
7613         case "$man3dir" in
7614         '') man3dir="none";;
7615         esac;;
7616 esac
7617
7618 echo "If you don't want the manual sources installed, answer 'none'."
7619 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7620 case "$man3dir" in
7621 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7622         if $test -d "$privlib/man/man3"; then
7623                 cat <<EOM >&4
7624
7625 WARNING:  Previous versions of perl installed man3 pages into
7626 $privlib/man/man3.  This version will suggest a 
7627 new default of $dflt.  
7628 EOM
7629                 tdflt=$dflt
7630                 dflt='n'
7631                 rp='Do you wish to preserve the old behavior?(y/n)'
7632                 . ./myread
7633                 case "$ans" in
7634                 y*) dflt="$privlib/man/man3" ;;
7635                 *)  dflt=$tdflt ;;
7636                 esac
7637     fi
7638         ;;
7639 *)      dflt="$man3dir" ;;
7640 esac
7641 case "$dflt" in
7642 ' ') dflt=none ;;
7643 esac
7644 echo " "
7645 fn=dn+~
7646 rp="Where do the $package library man pages (source) go?"
7647 . ./getfile
7648 man3dir="$ans"
7649 man3direxp="$ansexp"
7650 case "$man3dir" in
7651 '')     man3dir=' '
7652         installman3dir='';;
7653 esac
7654
7655 : Change installation prefix, if necessary.
7656 if $test X"$prefix" != X"$installprefix"; then
7657         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7658 else
7659         installman3dir="$man3direxp"
7660 fi
7661
7662 : What suffix to use on installed man pages
7663 case "$man3dir" in
7664 ' ')
7665         man3ext='0'
7666         ;;
7667 *)
7668         rp="What suffix should be used for the $package library man pages?"
7669         case "$man3ext" in
7670         '')     case "$man3dir" in
7671                 *3)  dflt=3 ;;
7672                 *3p) dflt=3p ;;
7673                 *3pm) dflt=3pm ;;
7674                 *l) dflt=l;;
7675                 *n) dflt=n;;
7676                 *o) dflt=o;;
7677                 *p) dflt=p;;
7678                 *C) dflt=C;;
7679                 *L) dflt=L;;
7680                 *L3) dflt=L3;;
7681                 *) dflt=3;;
7682                 esac
7683                 ;;
7684         *)      dflt="$man3ext";;
7685         esac
7686         . ./myread
7687         man3ext="$ans"
7688         ;;
7689 esac
7690
7691 : see if we have to deal with yellow pages, now NIS.
7692 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
7693         if $test -f /usr/etc/nibindd; then
7694                 echo " "
7695                 echo "I'm fairly confident you're on a NeXT."
7696                 echo " "
7697                 rp='Do you get the hosts file via NetInfo?'
7698                 dflt=y
7699                 case "$hostcat" in
7700                 nidump*) ;;
7701                 '') ;;
7702                 *) dflt=n;;
7703                 esac
7704                 . ./myread
7705                 case "$ans" in
7706                 y*) hostcat='nidump hosts .';;
7707                 *)      case "$hostcat" in
7708                         nidump*) hostcat='';;
7709                         esac
7710                         ;;
7711                 esac
7712         fi
7713         case "$hostcat" in
7714         nidump*) ;;
7715         *)
7716                 case "$hostcat" in
7717                 *ypcat*) dflt=y;;
7718                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7719                                 dflt=y
7720                         else
7721                                 dflt=n
7722                         fi;;
7723                 *) dflt=n;;
7724                 esac
7725                 echo " "
7726                 rp='Are you getting the hosts file via yellow pages?'
7727                 . ./myread
7728                 case "$ans" in
7729                 y*) hostcat='ypcat hosts';;
7730                 *) hostcat='cat /etc/hosts';;
7731                 esac
7732                 ;;
7733         esac
7734 fi
7735 case "$hostcat" in
7736 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7737 esac
7738 case "$groupcat" in
7739 '') test -f /etc/group && groupcat='cat /etc/group';;
7740 esac
7741 case "$passcat" in
7742 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7743 esac
7744
7745 : now get the host name
7746 echo " "
7747 echo "Figuring out host name..." >&4
7748 case "$myhostname" in
7749 '') cont=true
7750         echo 'Maybe "hostname" will work...'
7751         if tans=`sh -c hostname 2>&1` ; then
7752                 myhostname=$tans
7753                 phostname=hostname
7754                 cont=''
7755         fi
7756         ;;
7757 *) cont='';;
7758 esac
7759 if $test "$cont"; then
7760         if ./xenix; then
7761                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7762                 if tans=`cat /etc/systemid 2>&1` ; then
7763                         myhostname=$tans
7764                         phostname='cat /etc/systemid'
7765                         echo "Whadyaknow.  Xenix always was a bit strange..."
7766                         cont=''
7767                 fi
7768         elif $test -r /etc/systemid; then
7769                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7770         fi
7771 fi
7772 if $test "$cont"; then
7773         echo 'No, maybe "uuname -l" will work...'
7774         if tans=`sh -c 'uuname -l' 2>&1` ; then
7775                 myhostname=$tans
7776                 phostname='uuname -l'
7777         else
7778                 echo 'Strange.  Maybe "uname -n" will work...'
7779                 if tans=`sh -c 'uname -n' 2>&1` ; then
7780                         myhostname=$tans
7781                         phostname='uname -n'
7782                 else
7783                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7784                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7785                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7786                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7787                         else
7788                                 case "$myhostname" in
7789                                 '') echo "Does this machine have an identity crisis or something?"
7790                                         phostname='';;
7791                                 *)
7792                                         echo "Well, you said $myhostname before..."
7793                                         phostname='echo $myhostname';;
7794                                 esac
7795                         fi
7796                 fi
7797         fi
7798 fi
7799 : you do not want to know about this
7800 set $myhostname
7801 myhostname=$1
7802
7803 : verify guess
7804 if $test "$myhostname" ; then
7805         dflt=y
7806         rp='Your host name appears to be "'$myhostname'".'" Right?"
7807         . ./myread
7808         case "$ans" in
7809         y*) ;;
7810         *) myhostname='';;
7811         esac
7812 fi
7813
7814 : bad guess or no guess
7815 while $test "X$myhostname" = X ; do
7816         dflt=''
7817         rp="Please type the (one word) name of your host:"
7818         . ./myread
7819         myhostname="$ans"
7820 done
7821
7822 : translate upper to lower if necessary
7823 case "$myhostname" in
7824 *[A-Z]*)
7825         echo "(Normalizing case in your host name)"
7826         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7827         ;;
7828 esac
7829
7830 case "$myhostname" in
7831 *.*)
7832         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7833         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7834         echo "(Trimming domain name from host name--host name is now $myhostname)"
7835         ;;
7836 *) case "$mydomain" in
7837         '')
7838                 {
7839                         test "X$hostcat" = "Xypcat hosts" &&
7840                         ypmatch "$myhostname" hosts 2>/dev/null |\
7841                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7842                         $test -s hosts
7843                 } || {
7844                         test "X$hostcat" != "X" &&
7845                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7846                                         /[       ]$myhostname[  . ]/p" > hosts
7847                 }
7848                 tmp_re="[       . ]"
7849                 if $test -f hosts; then
7850                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7851                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7852                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7853                                 hosts | $sort | $uniq | \
7854                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7855                         case `$echo X$dflt` in
7856                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7857                                 dflt=.
7858                                 ;;
7859                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7860                                 ;;
7861                         esac
7862                 else
7863                         echo "(I cannot locate a hosts database anywhere)"
7864                         dflt=.
7865                 fi
7866                 case "$dflt" in
7867                 .)
7868                         tans=`./loc resolv.conf X /etc /usr/etc`
7869                         if $test -f "$tans"; then
7870                                 echo "(Attempting domain name extraction from $tans)"
7871                                 dflt=.`$sed -n -e 's/   / /g' \
7872                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7873                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7874                                 case "$dflt" in
7875                                 .) dflt=.`$sed -n -e 's/        / /g' \
7876                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7877                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7878                                         ;;
7879                                 esac
7880                         fi
7881                         ;;
7882                 esac
7883                 case "$dflt" in
7884                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7885                         dflt=.`sh -c domainname 2>/dev/null`
7886                         case "$dflt" in
7887                         '') dflt='.';;
7888                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7889                         esac
7890                         ;;
7891                 esac
7892                 case "$dflt$osname" in
7893                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7894                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7895                         ;;
7896                 esac
7897                 case "$dflt" in
7898                 .) echo "(Lost all hope -- silly guess then)"
7899                         dflt='.uucp'
7900                         ;;
7901                 esac
7902                 $rm -f hosts
7903                 ;;
7904         *) dflt="$mydomain";;
7905         esac;;
7906 esac
7907 echo " "
7908 rp="What is your domain name?"
7909 . ./myread
7910 tans="$ans"
7911 case "$ans" in
7912 '') ;;
7913 .*) ;;
7914 *) tans=".$tans";;
7915 esac
7916 mydomain="$tans"
7917
7918 : translate upper to lower if necessary
7919 case "$mydomain" in
7920 *[A-Z]*)
7921         echo "(Normalizing case in your domain name)"
7922         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7923         ;;
7924 esac
7925
7926 : a little sanity check here
7927 case "$phostname" in
7928 '') ;;
7929 *)
7930         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7931         $myhostname$mydomain|$myhostname) ;;
7932         *)
7933                 case "$phostname" in
7934                 sed*)
7935                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7936                         ;;
7937                 *)
7938                         echo "(That doesn't agree with your $phostname command, by the way.)"
7939                         ;;
7940                 esac
7941         ;;
7942         esac
7943         ;;
7944 esac
7945
7946 $cat <<EOM
7947
7948 I need to get your e-mail address in Internet format if possible, i.e.
7949 something like user@host.domain. Please answer accurately since I have
7950 no easy means to double check it. The default value provided below
7951 is most probably close to reality but may not be valid from outside
7952 your organization...
7953
7954 EOM
7955 cont=x
7956 while test "$cont"; do
7957         case "$cf_email" in
7958         '') dflt="$cf_by@$myhostname$mydomain";;
7959         *) dflt="$cf_email";;
7960         esac
7961         rp='What is your e-mail address?'
7962         . ./myread
7963         cf_email="$ans"
7964         case "$cf_email" in
7965         *@*.*) cont='' ;;
7966         *)
7967                 rp='Address does not look like an Internet one.  Use it anyway?'
7968                 case "$fastread" in
7969                 yes) dflt=y ;;
7970                 *) dflt=n ;;
7971                 esac
7972                 . ./myread
7973                 case "$ans" in
7974                 y*) cont='' ;;
7975                 *) echo " " ;;
7976                 esac
7977                 ;;
7978         esac
7979 done
7980
7981 $cat <<EOM
7982
7983 If you or somebody else will be maintaining perl at your site, please
7984 fill in the correct e-mail address here so that they may be contacted
7985 if necessary. Currently, the "perlbug" program included with perl
7986 will send mail to this address in addition to perlbug@perl.org. You may
7987 enter "none" for no administrator.
7988
7989 EOM
7990 case "$perladmin" in
7991 '') dflt="$cf_email";;
7992 *) dflt="$perladmin";;
7993 esac
7994 rp='Perl administrator e-mail address'
7995 . ./myread
7996 perladmin="$ans"
7997
7998 : determine whether to only install version-specific parts.
7999 echo " "
8000 $cat <<EOM
8001 Do you want to install only the version-specific parts of the perl
8002 distribution?  Usually you do *not* want to do this.
8003 EOM
8004 case "$versiononly" in
8005 "$define"|[Yy]*|true) dflt='y' ;;
8006 *) dflt='n';
8007 esac
8008 rp="Do you want to install only the version-specific parts of perl?"
8009 . ./myread
8010 case "$ans" in
8011 [yY]*)  val="$define";;
8012 *)      val="$undef" ;;
8013 esac
8014 set versiononly
8015 eval $setvar
8016
8017 : figure out how to guarantee perl startup
8018 case "$startperl" in
8019 '')
8020         case "$sharpbang" in
8021         *!)
8022                 $cat <<EOH
8023
8024 I can use the #! construct to start perl on your system. This will
8025 make startup of perl scripts faster, but may cause problems if you
8026 want to share those scripts and perl is not in a standard place
8027 ($binexp/perl) on all your platforms. The alternative is to force
8028 a shell by starting the script with a single ':' character.
8029
8030 EOH
8031                 case "$versiononly" in
8032                 "$define")      dflt="$binexp/perl$version";;  
8033                 *)              dflt="$binexp/perl";;
8034                 esac
8035                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8036                 . ./myread
8037                 case "$ans" in
8038                 none)   startperl=": # use perl";;
8039                 *)      startperl="#!$ans"
8040                         if $test 30 -lt `echo "$ans" | wc -c`; then
8041                                 $cat >&4 <<EOM
8042
8043 WARNING:  Some systems limit the #! command to 32 characters.
8044 If you experience difficulty running Perl scripts with #!, try
8045 installing Perl in a directory with a shorter pathname.
8046
8047 EOM
8048                         fi ;;
8049                 esac
8050                 ;;
8051         *) startperl=": # use perl"
8052                 ;;
8053         esac
8054         ;;
8055 esac
8056 echo "I'll use $startperl to start perl scripts."
8057
8058 : figure best path for perl in scripts
8059 case "$perlpath" in
8060 '')
8061         case "$versiononly" in
8062         "$define")      perlpath="$binexp/perl$version";;
8063         *)              perlpath="$binexp/perl";;
8064         esac
8065         case "$startperl" in
8066         *!*) ;;
8067         *)
8068                 $cat <<EOH
8069
8070 I will use the "eval 'exec'" idiom to start Perl on your system.
8071 I can use the full path of your Perl binary for this purpose, but
8072 doing so may cause problems if you want to share those scripts and
8073 Perl is not always in a standard place ($binexp/perl).
8074
8075 EOH
8076                 dflt="$binexp/perl"
8077                 rp="What path shall I use in \"eval 'exec'\"?"
8078                 . ./myread
8079                 perlpath="$ans"
8080                 ;;
8081         esac
8082         ;;
8083 esac
8084 case "$startperl" in
8085 *!*)    ;;
8086 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8087 esac
8088
8089 : determine where public executable scripts go
8090 set scriptdir scriptdir
8091 eval $prefixit
8092 case "$scriptdir" in
8093 '')
8094         dflt="$bin"
8095         : guess some guesses
8096         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8097         $test -d /usr/share/bin     && dflt=/usr/share/bin
8098         $test -d /usr/local/script  && dflt=/usr/local/script
8099         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8100         $test -d $prefixexp/script  && dflt=$prefixexp/script
8101         set dflt
8102         eval $prefixup
8103         ;;
8104 *)  dflt="$scriptdir"
8105         ;;
8106 esac
8107 $cat <<EOM
8108  
8109 Some installations have a separate directory just for executable scripts so
8110 that they can mount it across multiple architectures but keep the scripts in
8111 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8112 Or you might just lump your scripts in with all your other executables.
8113  
8114 EOM
8115 fn=d~
8116 rp='Where do you keep publicly executable scripts?'
8117 . ./getfile
8118 if $test "X$ansexp" != "X$scriptdirexp"; then
8119         installscript=''
8120 fi
8121 scriptdir="$ans"
8122 scriptdirexp="$ansexp"
8123 : Change installation prefix, if necessary.
8124 if $test X"$prefix" != X"$installprefix"; then
8125         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8126 else
8127         installscript="$scriptdirexp"
8128 fi
8129
8130 : determine where add-on public executables go
8131 case "$sitebin" in
8132 '')     dflt=$siteprefix/bin ;;
8133 *)      dflt=$sitebin ;;
8134 esac
8135 fn=d~
8136 rp='Pathname where the add-on public executables should be installed?'
8137 . ./getfile
8138 sitebin="$ans"
8139 sitebinexp="$ansexp"
8140 : Change installation prefix, if necessary.
8141 if $test X"$prefix" != X"$installprefix"; then
8142         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8143 else
8144         installsitebin="$sitebinexp"
8145 fi
8146
8147 : define an is-a-typedef? function
8148 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8149 case "$inclist" in
8150 "") inclist="sys/types.h";;
8151 esac;
8152 eval "varval=\$$var";
8153 case "$varval" in
8154 "")
8155         $rm -f temp.c;
8156         for inc in $inclist; do
8157                 echo "#include <$inc>" >>temp.c;
8158         done;
8159         echo "#ifdef $type" >> temp.c;
8160         echo "printf(\"We have $type\");" >> temp.c;
8161         echo "#endif" >> temp.c;
8162         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8163         if $contains $type temp.E >/dev/null 2>&1; then
8164                 eval "$var=\$type";
8165         else
8166                 eval "$var=\$def";
8167         fi;
8168         $rm -f temp.?;;
8169 *) eval "$var=\$varval";;
8170 esac'
8171
8172 : define an is-a-typedef? function that prompts if the type is not available.
8173 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8174 case "$inclist" in
8175 "") inclist="sys/types.h";;
8176 esac;
8177 eval "varval=\$$var";
8178 case "$varval" in
8179 "")
8180         $rm -f temp.c;
8181         for inc in $inclist; do
8182                 echo "#include <$inc>" >>temp.c;
8183         done;
8184         echo "#ifdef $type" >> temp.c;
8185         echo "printf(\"We have $type\");" >> temp.c;
8186         echo "#endif" >> temp.c;
8187         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8188         echo " " ;
8189         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8190         if $contains $type temp.E >/dev/null 2>&1; then
8191                 echo "$type found." >&4;
8192                 eval "$var=\$type";
8193         else
8194                 echo "$type NOT found." >&4;
8195                 dflt="$def";
8196                 . ./myread ;
8197                 eval "$var=\$ans";
8198         fi;
8199         $rm -f temp.?;;
8200 *) eval "$var=\$varval";;
8201 esac'
8202
8203 : see what type lseek is declared as in the kernel
8204 rp="What is the type used for lseek's offset on this system?"
8205 set off_t lseektype long stdio.h sys/types.h
8206 eval $typedef_ask
8207
8208 echo " "
8209 echo "Checking to see how big your file offsets are..." >&4
8210 $cat >try.c <<EOCP
8211 #include <sys/types.h>
8212 #include <stdio.h>
8213 int main()
8214 {
8215     printf("%d\n", (int)sizeof($lseektype));
8216     return(0); 
8217 }
8218 EOCP
8219 set try
8220 if eval $compile_ok; then
8221         lseeksize=`$run ./try`
8222         echo "Your file offsets are $lseeksize bytes long."
8223 else
8224         dflt=$longsize
8225         echo " "
8226         echo "(I can't seem to compile the test program.  Guessing...)"
8227         rp="What is the size of your file offsets (in bytes)?"
8228         . ./myread
8229         lseeksize="$ans"
8230 fi
8231 $rm -f try.c try
8232
8233 : see what type file positions are declared as in the library
8234 rp="What is the type for file position used by fsetpos()?"
8235 set fpos_t fpostype long stdio.h sys/types.h
8236 eval $typedef_ask
8237
8238 echo " "
8239 case "$fpostype" in
8240 *_t) zzz="$fpostype"    ;;
8241 *)   zzz="fpos_t"       ;;
8242 esac
8243 echo "Checking the size of $zzz..." >&4 
8244 cat > try.c <<EOCP
8245 #include <sys/types.h>
8246 #include <stdio.h>
8247 int main() {
8248     printf("%d\n", (int)sizeof($fpostype));
8249     exit(0);
8250 }
8251 EOCP
8252 set try
8253 if eval $compile_ok; then
8254         yyy=`$run ./try`
8255         case "$yyy" in
8256         '')     fpossize=4
8257                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8258                 ;;
8259         *)      fpossize=$yyy
8260                 echo "Your $zzz is $fpossize bytes long."
8261                 ;;
8262         esac
8263 else
8264         dflt="$longsize"
8265         echo " " >&4
8266         echo "(I can't compile the test program.  Guessing...)" >&4
8267         rp="What is the size of your file positions (in bytes)?"
8268         . ./myread
8269         fpossize="$ans"
8270 fi
8271
8272
8273
8274 # Backward compatibility (uselfs is deprecated).
8275 case "$uselfs" in
8276 "$define"|true|[yY]*)
8277         cat <<EOM >&4
8278
8279 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8280 EOM
8281         uselargefiles="$define"
8282         ;;
8283 esac                          
8284
8285 case "$lseeksize:$fpossize" in
8286 8:8) cat <<EOM
8287
8288 You can have files larger than 2 gigabytes.
8289 EOM
8290    val="$define" ;;
8291 *)    case "$uselargefiles" in
8292    "$undef"|false|[nN]*) dflt='n' ;;
8293    *)   dflt='y' ;;
8294    esac
8295    cat <<EOM
8296
8297 Perl can be built to understand large files (files larger than 2 gigabytes)
8298 on some systems.  To do so, Configure can be run with -Duselargefiles.
8299
8300 If this doesn't make any sense to you, just accept the default '$dflt'.
8301 EOM
8302    rp='Try to understand large files, if available?'
8303    . ./myread
8304    case "$ans" in
8305    y|Y)         val="$define" ;;
8306    *)           val="$undef"  ;;
8307    esac
8308    ;;
8309 esac
8310 set uselargefiles
8311 eval $setvar
8312 case "$uselargefiles" in
8313 "$define")
8314 : Look for a hint-file generated 'call-back-unit'.  If the
8315 : user has specified that a large files perl is to be built,
8316 : we may need to set or change some other defaults.
8317         if $test -f uselargefiles.cbu; then
8318                 echo "Your platform has some specific hints for large file builds, using them..."
8319                 . ./uselargefiles.cbu
8320                 echo " "
8321                 echo "Rechecking to see how big your file offsets are..." >&4
8322                 $cat >try.c <<EOCP
8323 #include <sys/types.h>
8324 #include <stdio.h>
8325 int main()
8326 {
8327     printf("%d\n", (int)sizeof($lseektype));
8328     return(0); 
8329 }
8330 EOCP
8331                 set try
8332                 if eval $compile_ok; then
8333                         lseeksize=`$run ./try`
8334                         $echo "Your file offsets are now $lseeksize bytes long."
8335                 else
8336                         dflt="$lseeksize"
8337                         echo " "
8338                         echo "(I can't seem to compile the test program.  Guessing...)"
8339                         rp="What is the size of your file offsets (in bytes)?"
8340                         . ./myread
8341                         lseeksize="$ans"
8342                 fi
8343                 case "$fpostype" in
8344                 *_t) zzz="$fpostype"    ;;
8345                 *)   zzz="fpos_t"       ;;
8346                 esac
8347                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8348                 $cat > try.c <<EOCP
8349 #include <sys/types.h>
8350 #include <stdio.h>
8351 int main() {
8352     printf("%d\n", (int)sizeof($fpostype));
8353     exit(0);
8354 }
8355 EOCP
8356                 set try
8357                 if eval $compile_ok; then
8358                         yyy=`$run ./try`
8359                         dflt="$lseeksize"
8360                         case "$yyy" in
8361                         '')     echo " "
8362                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8363                                 ;;
8364                         *)      fpossize=$yyy
8365                                 echo " $fpossize bytes." >&4
8366                                 ;;
8367                         esac
8368                 else
8369                         dflt="$fpossize"
8370                         echo " "
8371                         echo "(I can't compile the test program.  Guessing...)" >&4
8372                         rp="What is the size of your file positions (in bytes)?"
8373                         . ./myread
8374                         fpossize="$ans"
8375                 fi
8376                 $rm -f try.c try
8377         fi
8378         ;;
8379 esac
8380
8381 case "$vendorprefix" in
8382 '')     d_vendorbin="$undef"
8383         vendorbin=''
8384         vendorbinexp=''
8385         ;;
8386 *)      d_vendorbin="$define"
8387         : determine where vendor-supplied executables go.
8388         case "$vendorbin" in
8389         '') dflt=$vendorprefix/bin ;;
8390         *)      dflt="$vendorbin" ;;
8391         esac
8392         fn=d~+
8393         rp='Pathname for the vendor-supplied executables directory?'
8394         . ./getfile
8395         vendorbin="$ans"
8396         vendorbinexp="$ansexp"
8397         ;;
8398 esac
8399 : Change installation prefix, if necessary.
8400 if $test X"$prefix" != X"$installprefix"; then
8401         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8402 else
8403         installvendorbin="$vendorbinexp"
8404 fi
8405
8406 : see if qgcvt exists
8407 set qgcvt d_qgcvt
8408 eval $inlibc
8409
8410 echo " "
8411
8412 if $test X"$d_longdbl" = X"$define"; then
8413
8414 echo "Checking how to print long doubles..." >&4
8415
8416 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8417         $cat >try.c <<'EOCP'
8418 #include <sys/types.h>
8419 #include <stdio.h>
8420 int main() {
8421   double d = 123.456;
8422   printf("%.3f\n", d);
8423 }
8424 EOCP
8425         set try
8426         if eval $compile; then
8427                 yyy=`$run ./try`
8428                 case "$yyy" in
8429                 123.456)
8430                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8431                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8432                         echo "We will use %f."
8433                         ;;
8434                 esac
8435         fi
8436 fi
8437
8438 if $test X"$sPRIfldbl" = X; then
8439         $cat >try.c <<'EOCP'
8440 #include <sys/types.h>
8441 #include <stdio.h>
8442 int main() {
8443   long double d = 123.456;
8444   printf("%.3Lf\n", d);
8445 }
8446 EOCP
8447         set try
8448         if eval $compile; then
8449                 yyy=`$run ./try`
8450                 case "$yyy" in
8451                 123.456)
8452                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8453                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8454                         echo "We will use %Lf."
8455                         ;;
8456                 esac
8457         fi
8458 fi
8459
8460 if $test X"$sPRIfldbl" = X; then
8461         $cat >try.c <<'EOCP'
8462 #include <sys/types.h>
8463 #include <stdio.h>
8464 int main() {
8465   long double d = 123.456;
8466   printf("%.3llf\n", d);
8467 }
8468 EOCP
8469         set try
8470         if eval $compile; then
8471                 yyy=`$run ./try`
8472                 case "$yyy" in
8473                 123.456)
8474                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8475                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8476                         echo "We will use %llf."
8477                         ;;
8478                 esac
8479         fi
8480 fi
8481
8482 if $test X"$sPRIfldbl" = X; then
8483         $cat >try.c <<'EOCP'
8484 #include <sys/types.h>
8485 #include <stdio.h>
8486 int main() {
8487   long double d = 123.456;
8488   printf("%.3lf\n", d);
8489 }
8490 EOCP
8491         set try
8492         if eval $compile; then
8493                 yyy=`$run ./try`
8494                 case "$yyy" in
8495                 123.456)
8496                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8497                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8498                         echo "We will use %lf."
8499                         ;;
8500                 esac
8501         fi
8502 fi
8503
8504 if $test X"$sPRIfldbl" = X; then
8505         echo "Cannot figure out how to print long doubles." >&4
8506 else
8507         sSCNfldbl=$sPRIfldbl    # expect consistency
8508 fi
8509
8510 $rm -f try try.*
8511
8512 fi # d_longdbl
8513
8514 case "$sPRIfldbl" in
8515 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8516         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8517         d_SCNfldbl="$undef";
8518         ;;
8519 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8520         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8521         d_SCNfldbl="$define";
8522         ;;
8523 esac
8524
8525 : Check how to convert floats to strings.
8526 echo " "
8527 echo "Checking for an efficient way to convert floats to strings."
8528 echo " " > try.c
8529 case "$uselongdouble" in
8530 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8531 esac
8532 case "$d_longdbl" in
8533 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8534 esac
8535 case "$d_PRIgldbl" in
8536 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8537 esac
8538 $cat >>try.c <<EOP
8539 #ifdef TRY_gconvert
8540 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8541 char *myname = "gconvert";
8542 #endif
8543 #ifdef TRY_gcvt
8544 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8545 char *myname = "gcvt";
8546 #endif
8547 #ifdef TRY_qgcvt
8548 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8549 char *myname = "qgcvt";
8550 #define DOUBLETYPE long double
8551 #endif
8552 #ifdef TRY_sprintf
8553 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8554 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8555 #else
8556 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8557 #endif
8558 char *myname = "sprintf";
8559 #endif
8560
8561 #ifndef DOUBLETYPE
8562 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8563 #define DOUBLETYPE long double
8564 #else
8565 #define DOUBLETYPE double
8566 #endif
8567 #endif
8568
8569 #include <stdio.h>
8570
8571 #define I_STDLIB $i_stdlib
8572 #ifdef I_STDLIB
8573 #include <stdlib.h>
8574 #endif
8575
8576 int
8577 checkit(expect, got)
8578 char *expect;
8579 char *got;
8580 {
8581     if (strcmp(expect, got)) {
8582                 printf("%s oddity:  Expected %s, got %s\n",
8583                         myname, expect, got);
8584                 exit(1);
8585         }
8586 }
8587
8588 int main()
8589
8590         char buf[64]; 
8591         buf[63] = '\0';
8592
8593         /* This must be 1st test on (which?) platform */
8594         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8595         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8596         checkit("0.1", buf);
8597
8598         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8599         checkit("1", buf);
8600
8601         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8602         checkit("1.1", buf);
8603
8604         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8605         checkit("1.01", buf);
8606
8607         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8608         checkit("1.001", buf);
8609
8610         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8611         checkit("1.0001", buf);
8612
8613         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8614         checkit("1.00001", buf);
8615
8616         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8617         checkit("1.000001", buf);
8618
8619         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8620         checkit("0", buf);
8621
8622         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8623         checkit("-1", buf);
8624
8625         /* Some Linux gcvt's give 1.e+5 here. */
8626         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8627         checkit("100000", buf);
8628         
8629         /* Some Linux gcvt's give -1.e+5 here. */
8630         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8631         checkit("-100000", buf);
8632
8633         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8634         checkit("123.456", buf);
8635
8636         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8637         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8638         if (strlen(buf) > 5)
8639             checkit("1e+030", buf); /* for Microsoft */
8640         else
8641             checkit("1e+30", buf);
8642
8643         exit(0);
8644 }
8645 EOP
8646 case "$d_Gconvert" in
8647 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8648 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8649 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8650 *) xxx_list='gconvert gcvt sprintf' ;;
8651 esac
8652
8653 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8654 "$define$define$define")
8655     # for long doubles prefer first qgcvt, then sprintf
8656     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8657     xxx_list="sprintf $xxx_list"
8658     case "$d_qgcvt" in
8659     "$define") xxx_list="qgcvt $xxx_list" ;;
8660     esac
8661     ;;
8662 esac
8663
8664 for xxx_convert in $xxx_list; do
8665         echo "Trying $xxx_convert..."
8666         $rm -f try try$_o
8667         set try -DTRY_$xxx_convert
8668         if eval $compile; then
8669                 echo "$xxx_convert() found." >&4
8670                 if $run ./try; then
8671                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8672                         break;
8673                 else
8674                         echo "...But $xxx_convert didn't work as I expected."
8675                 fi
8676         else
8677                 echo "$xxx_convert NOT found." >&4
8678         fi
8679 done
8680         
8681 case "$xxx_convert" in
8682 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8683 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8684 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8685 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8686    "$define$define$define")
8687       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8688    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8689    esac
8690    ;;  
8691 esac
8692
8693 : see if _fwalk exists
8694 set fwalk d__fwalk
8695 eval $inlibc
8696
8697 : Initialize h_fcntl
8698 h_fcntl=false
8699
8700 : Initialize h_sysfile
8701 h_sysfile=false
8702
8703 : access call always available on UNIX
8704 set access d_access
8705 eval $inlibc
8706
8707 : locate the flags for 'access()'
8708 case "$d_access" in
8709 "$define")
8710         echo " "
8711         $cat >access.c <<'EOCP'
8712 #include <sys/types.h>
8713 #ifdef I_FCNTL
8714 #include <fcntl.h>
8715 #endif
8716 #ifdef I_SYS_FILE
8717 #include <sys/file.h>
8718 #endif
8719 #ifdef I_UNISTD
8720 #include <unistd.h>
8721 #endif
8722 int main() {
8723         exit(R_OK);
8724 }
8725 EOCP
8726         : check sys/file.h first, no particular reason here
8727         if $test `./findhdr sys/file.h` && \
8728                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8729                 h_sysfile=true;
8730                 echo "<sys/file.h> defines the *_OK access constants." >&4
8731         elif $test `./findhdr fcntl.h` && \
8732                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8733                 h_fcntl=true;
8734                 echo "<fcntl.h> defines the *_OK access constants." >&4
8735         elif $test `./findhdr unistd.h` && \
8736                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8737                 echo "<unistd.h> defines the *_OK access constants." >&4
8738         else
8739                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8740         fi
8741         ;;
8742 esac
8743 $rm -f access*
8744
8745 : see if accessx exists
8746 set accessx d_accessx
8747 eval $inlibc
8748
8749 : see if alarm exists
8750 set alarm d_alarm
8751 eval $inlibc
8752
8753 : see if atolf exists
8754 set atolf d_atolf
8755 eval $inlibc
8756
8757 : see if atoll exists
8758 set atoll d_atoll
8759 eval $inlibc
8760
8761 : Look for GNU-cc style attribute checking
8762 echo " "
8763 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8764 $cat >attrib.c <<'EOCP'
8765 #include <stdio.h>
8766 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8767 EOCP
8768 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8769         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8770                 echo "Your C compiler doesn't fully support __attribute__."
8771                 val="$undef"
8772         else
8773                 echo "Your C compiler supports __attribute__."
8774                 val="$define"
8775         fi
8776 else
8777         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8778         val="$undef"
8779 fi
8780 set d_attribut
8781 eval $setvar
8782 $rm -f attrib*
8783
8784 : see if bcmp exists
8785 set bcmp d_bcmp
8786 eval $inlibc
8787
8788 : see if bcopy exists
8789 set bcopy d_bcopy
8790 eval $inlibc
8791
8792 : see if this is a unistd.h system
8793 set unistd.h i_unistd
8794 eval $inhdr
8795
8796 : see if getpgrp exists
8797 set getpgrp d_getpgrp
8798 eval $inlibc
8799
8800 case "$d_getpgrp" in
8801 "$define")
8802         echo " "
8803         echo "Checking to see which flavor of getpgrp is in use..."
8804         $cat >try.c <<EOP
8805 #$i_unistd I_UNISTD
8806 #include <sys/types.h>
8807 #ifdef I_UNISTD
8808 #  include <unistd.h>
8809 #endif
8810 int main()
8811 {
8812         if (getuid() == 0) {
8813                 printf("(I see you are running Configure as super-user...)\n");
8814                 setuid(1);
8815         }
8816 #ifdef TRY_BSD_PGRP
8817         if (getpgrp(1) == 0)
8818                 exit(0);
8819 #else
8820         if (getpgrp() > 0)
8821                 exit(0);
8822 #endif
8823         exit(1);
8824 }
8825 EOP
8826         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8827                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8828                 val="$define"
8829         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8830                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8831                 val="$undef"
8832         else
8833                 echo "I can't seem to compile and run the test program."
8834                 if ./usg; then
8835                         xxx="a USG one, i.e. you use getpgrp()."
8836                 else
8837                         # SVR4 systems can appear rather BSD-ish.
8838                         case "$i_unistd" in
8839                         $undef)
8840                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8841                                 val="$define"
8842                                 ;;
8843                         $define)
8844                                 xxx="probably a USG one, i.e. you use getpgrp()."
8845                                 val="$undef"
8846                                 ;;
8847                         esac
8848                 fi
8849                 echo "Assuming your getpgrp is $xxx" >&4
8850         fi
8851         ;;
8852 *) val="$undef";;
8853 esac
8854 set d_bsdgetpgrp
8855 eval $setvar
8856 $rm -f try try.*
8857
8858 : see if setpgrp exists
8859 set setpgrp d_setpgrp
8860 eval $inlibc
8861
8862 case "$d_setpgrp" in
8863 "$define")
8864         echo " "
8865         echo "Checking to see which flavor of setpgrp is in use..."
8866         $cat >try.c <<EOP
8867 #$i_unistd I_UNISTD
8868 #include <sys/types.h>
8869 #ifdef I_UNISTD
8870 #  include <unistd.h>
8871 #endif
8872 int main()
8873 {
8874         if (getuid() == 0) {
8875                 printf("(I see you are running Configure as super-user...)\n");
8876                 setuid(1);
8877         }
8878 #ifdef TRY_BSD_PGRP
8879         if (-1 == setpgrp(1, 1))
8880                 exit(0);
8881 #else
8882         if (setpgrp() != -1)
8883                 exit(0);
8884 #endif
8885         exit(1);
8886 }
8887 EOP
8888         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8889                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8890                 val="$define"
8891         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8892                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8893                 val="$undef"
8894         else
8895                 echo "(I can't seem to compile and run the test program.)"
8896                 if ./usg; then
8897                         xxx="a USG one, i.e. you use setpgrp()."
8898                 else
8899                         # SVR4 systems can appear rather BSD-ish.
8900                         case "$i_unistd" in
8901                         $undef)
8902                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8903                                 val="$define"
8904                                 ;;
8905                         $define)
8906                                 xxx="probably a USG one, i.e. you use setpgrp()."
8907                                 val="$undef"
8908                                 ;;
8909                         esac
8910                 fi
8911                 echo "Assuming your setpgrp is $xxx" >&4
8912         fi
8913         ;;
8914 *) val="$undef";;
8915 esac
8916 set d_bsdsetpgrp
8917 eval $setvar
8918 $rm -f try try.*
8919 : see if bzero exists
8920 set bzero d_bzero
8921 eval $inlibc
8922
8923 : see if signal is declared as pointer to function returning int or void
8924 echo " "
8925 xxx=`./findhdr signal.h`
8926 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8927 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8928         echo "You have int (*signal())() instead of void." >&4
8929         val="$undef"
8930 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8931         echo "You have void (*signal())()." >&4
8932         val="$define"
8933 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8934         echo "You have int (*signal())() instead of void." >&4
8935         val="$undef"
8936 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8937         echo "You have void (*signal())()." >&4
8938         val="$define"
8939 else
8940         case "$d_voidsig" in
8941         '')
8942         echo "I can't determine whether signal handler returns void or int..." >&4
8943                 dflt=void
8944                 rp="What type does your signal handler return?"
8945                 . ./myread
8946                 case "$ans" in
8947                 v*) val="$define";;
8948                 *) val="$undef";;
8949                 esac;;
8950         "$define")
8951                 echo "As you already told me, signal handler returns void." >&4
8952                 val="$define"
8953                 ;;
8954         *)      echo "As you already told me, signal handler returns int." >&4
8955                 val="$undef"
8956                 ;;
8957         esac
8958 fi
8959 set d_voidsig
8960 eval $setvar
8961 case "$d_voidsig" in
8962 "$define") signal_t="void";;
8963 *) signal_t="int";;
8964 esac
8965 $rm -f $$.tmp
8966
8967 : check for ability to cast large floats to 32-bit ints.
8968 echo " "
8969 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8970 if $test "$intsize" -ge 4; then
8971         xxx=int
8972 else
8973         xxx=long
8974 fi
8975 $cat >try.c <<EOCP
8976 #include <stdio.h>
8977 #include <sys/types.h>
8978 #include <signal.h>
8979 $signal_t blech(s) int s; { exit(3); }
8980 int main()
8981 {
8982         $xxx i32;
8983         double f, g;
8984         int result = 0;
8985         char str[16];
8986         signal(SIGFPE, blech);
8987
8988         /* Don't let compiler optimize the test away.  Store the number 
8989            in a writable string for gcc to pass to sscanf under HP/UX.
8990         */
8991         sprintf(str, "2147483647");
8992         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8993         g = 10 * f;
8994         i32  = ($xxx) g;
8995
8996         /* x86 processors will probably give 0x8000 0000, which is a
8997        sign change.  We don't want that.  We want to mimic SPARC
8998            behavior here, which is to preserve the sign and give
8999            back 0x7fff ffff.
9000         */
9001         if (i32 != ($xxx) f)
9002                 result |= 1;
9003         exit(result);
9004 }
9005 EOCP
9006 set try
9007 if eval $compile_ok; then
9008         $run ./try
9009         yyy=$?
9010 else
9011         echo "(I can't seem to compile the test program--assuming it can't)"
9012         yyy=1
9013 fi
9014 case "$yyy" in
9015 0)      val="$define"
9016         echo "Yup, it can."
9017         ;;
9018 *)      val="$undef"
9019         echo "Nope, it can't."
9020         ;;
9021 esac
9022 set d_casti32
9023 eval $setvar
9024 $rm -f try try.*
9025
9026 : check for ability to cast negative floats to unsigned
9027 echo " "
9028 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
9029 $cat >try.c <<EOCP
9030 #include <stdio.h>
9031 #include <sys/types.h>
9032 #include <signal.h>
9033 $signal_t blech(s) int s; { exit(7); }
9034 $signal_t blech_in_list(s) int s; { exit(4); }
9035 unsigned long dummy_long(p) unsigned long p; { return p; }
9036 unsigned int dummy_int(p) unsigned int p; { return p; }
9037 unsigned short dummy_short(p) unsigned short p; { return p; }
9038 int main()
9039 {
9040         double f;
9041         unsigned long along;
9042         unsigned int aint;
9043         unsigned short ashort;
9044         int result = 0;
9045         char str[16];
9046         
9047         /* Frustrate gcc-2.7.2's optimizer which failed this test with
9048            a direct f = -123. assignment.  gcc-2.8.0 reportedly
9049            optimized the whole file away
9050         */
9051         /* Store the number in a writable string for gcc to pass to 
9052            sscanf under HP/UX.
9053         */
9054         sprintf(str, "-123");
9055         sscanf(str, "%lf", &f);  /* f = -123.; */
9056
9057         signal(SIGFPE, blech);
9058         along = (unsigned long)f;
9059         aint = (unsigned int)f;
9060         ashort = (unsigned short)f;
9061         if (along != (unsigned long)-123)
9062                 result |= 1;
9063         if (aint != (unsigned int)-123)
9064                 result |= 1;
9065         if (ashort != (unsigned short)-123)
9066                 result |= 1;
9067         sprintf(str, "1073741824.");
9068         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9069         f = f + f;
9070         along = 0;
9071         along = (unsigned long)f;
9072         if (along != 0x80000000)
9073                 result |= 2;
9074         f -= 1.;
9075         along = 0;
9076         along = (unsigned long)f;
9077         if (along != 0x7fffffff)
9078                 result |= 1;
9079         f += 2.;
9080         along = 0;
9081         along = (unsigned long)f;
9082         if (along != 0x80000001)
9083                 result |= 2;
9084         if (result)
9085                 exit(result);
9086         signal(SIGFPE, blech_in_list);
9087         sprintf(str, "123.");
9088         sscanf(str, "%lf", &f);  /* f = 123.; */
9089         along = dummy_long((unsigned long)f);
9090         aint = dummy_int((unsigned int)f);
9091         ashort = dummy_short((unsigned short)f);
9092         if (along != (unsigned long)123)
9093                 result |= 4;
9094         if (aint != (unsigned int)123)
9095                 result |= 4;
9096         if (ashort != (unsigned short)123)
9097                 result |= 4;
9098         exit(result);
9099
9100 }
9101 EOCP
9102 set try
9103 if eval $compile_ok; then
9104         $run ./try
9105         castflags=$?
9106 else
9107         echo "(I can't seem to compile the test program--assuming it can't)"
9108         castflags=7
9109 fi
9110 case "$castflags" in
9111 0)      val="$define"
9112         echo "Yup, it can."
9113         ;;
9114 *)      val="$undef"
9115         echo "Nope, it can't."
9116         ;;
9117 esac
9118 set d_castneg
9119 eval $setvar
9120 $rm -f try.*
9121
9122 : see if vprintf exists
9123 echo " "
9124 if set vprintf val -f d_vprintf; eval $csym; $val; then
9125         echo 'vprintf() found.' >&4
9126         val="$define"
9127         $cat >try.c <<'EOF'
9128 #include <varargs.h>
9129
9130 int main() { xxx("foo"); }
9131
9132 xxx(va_alist)
9133 va_dcl
9134 {
9135         va_list args;
9136         char buf[10];
9137
9138         va_start(args);
9139         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9140 }
9141 EOF
9142         set try
9143         if eval $compile && $run ./try; then
9144                 echo "Your vsprintf() returns (int)." >&4
9145                 val2="$undef"
9146         else
9147                 echo "Your vsprintf() returns (char*)." >&4
9148                 val2="$define"
9149         fi
9150 else
9151         echo 'vprintf() NOT found.' >&4
9152                 val="$undef"
9153                 val2="$undef"
9154 fi
9155 $rm -f try try.*
9156 set d_vprintf
9157 eval $setvar
9158 val=$val2
9159 set d_charvspr
9160 eval $setvar
9161
9162 : see if chown exists
9163 set chown d_chown
9164 eval $inlibc
9165
9166 : see if chroot exists
9167 set chroot d_chroot
9168 eval $inlibc
9169
9170 : see if chsize exists
9171 set chsize d_chsize
9172 eval $inlibc
9173
9174 : see if class exists
9175 set class d_class
9176 eval $inlibc
9177
9178 hasstruct='varname=$1; struct=$2; shift; shift;
9179 while $test $# -ge 2; do
9180         case "$1" in
9181         $define) echo "#include <$2>";;
9182         esac ;
9183     shift 2;
9184 done > try.c;
9185 echo "int main () { struct $struct foo; }" >> try.c;
9186 set try;
9187 if eval $compile; then
9188         val="$define";
9189 else
9190         val="$undef";
9191 fi;
9192 set $varname;
9193 eval $setvar;
9194 $rm -f try.c try.o'
9195
9196 : see if sys/types.h has to be included
9197 set sys/types.h i_systypes
9198 eval $inhdr
9199
9200 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9201 while $test $# -ge 2; do
9202         case "$1" in
9203         $define) echo "#include <$2>";;
9204         esac ;
9205     shift 2;
9206 done > try.c;
9207 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9208 set try;
9209 if eval $compile; then
9210         val="$define";
9211 else
9212         val="$undef";
9213 fi;
9214 set $varname;
9215 eval $setvar;
9216 $rm -f try.c try.o'
9217
9218 socketlib=''
9219 sockethdr=''
9220 : see whether socket exists
9221 echo " "
9222 $echo $n "Hmm... $c" >&4
9223 if set socket val -f d_socket; eval $csym; $val; then
9224         echo "Looks like you have Berkeley networking support." >&4
9225         d_socket="$define"
9226         if set setsockopt val -f; eval $csym; $val; then
9227                 d_oldsock="$undef"
9228         else
9229                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9230                 d_oldsock="$define"
9231         fi
9232 else
9233         if $contains socklib libc.list >/dev/null 2>&1; then
9234                 echo "Looks like you have Berkeley networking support." >&4
9235                 d_socket="$define"
9236                 : we will have to assume that it supports the 4.2 BSD interface
9237                 d_oldsock="$undef"
9238         else
9239                 echo "You don't have Berkeley networking in libc$_a..." >&4
9240                 if test "X$d_socket" = "X$define"; then
9241                    echo "...but you seem to believe that you have sockets." >&4
9242                 else
9243                         for net in net socket
9244                         do
9245                                 if test -f /usr/lib/lib$net$_a; then
9246                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9247                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9248                                         if $contains socket libc.list >/dev/null 2>&1; then
9249                                                 d_socket="$define"
9250                                                 socketlib="-l$net"
9251                                                 case "$net" in
9252                                                 net)
9253                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9254                                                         sockethdr="-I/usr/netinclude"
9255                                                         ;;
9256                                                 esac
9257                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
9258                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9259                                                         d_oldsock="$undef"
9260                                                 else
9261                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9262                                                         d_oldsock="$define"
9263                                                 fi
9264                                                 break
9265                                         fi
9266                                 fi
9267                         done
9268                         if test "X$d_socket" != "X$define"; then
9269                            echo "or anywhere else I see." >&4
9270                            d_socket="$undef"
9271                            d_oldsock="$undef"
9272                         fi
9273                 fi
9274         fi
9275 fi
9276
9277 : see if socketpair exists
9278 set socketpair d_sockpair
9279 eval $inlibc
9280
9281
9282 echo " "
9283 echo "Checking the availability of certain socket constants..." >&4
9284 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9285         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9286         $cat >try.c <<EOF
9287 #include <sys/types.h>
9288 #include <sys/socket.h>
9289 int main() {
9290     int i = $ENUM;
9291 }
9292 EOF
9293         val="$undef"
9294         set try; if eval $compile; then
9295                 val="$define"
9296         fi
9297         set d_${enum}; eval $setvar
9298         $rm -f try.c try
9299 done
9300
9301 : see if this is a sys/uio.h system
9302 set sys/uio.h i_sysuio
9303 eval $inhdr
9304
9305
9306 echo " "
9307 echo "Checking to see if your system supports struct cmsghdr..." >&4
9308 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9309 eval $hasstruct
9310 case "$d_cmsghdr_s" in
9311 "$define")      echo "Yes, it does."   ;;
9312 *)              echo "No, it doesn't." ;;
9313 esac
9314
9315
9316 : check for const keyword
9317 echo " "
9318 echo 'Checking to see if your C compiler knows about "const"...' >&4
9319 $cat >const.c <<'EOCP'
9320 typedef struct spug { int drokk; } spug;
9321 int main()
9322 {
9323         const char *foo;
9324         const spug y;
9325 }
9326 EOCP
9327 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9328         val="$define"
9329         echo "Yup, it does."
9330 else
9331         val="$undef"
9332         echo "Nope, it doesn't."
9333 fi
9334 set d_const
9335 eval $setvar
9336
9337 : see if crypt exists
9338 echo " "
9339 if set crypt val -f d_crypt; eval $csym; $val; then
9340         echo 'crypt() found.' >&4
9341         val="$define"
9342         cryptlib=''
9343 else
9344         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9345         if $test -z "$cryptlib"; then
9346                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9347         else
9348                 cryptlib=-lcrypt
9349         fi
9350         if $test -z "$cryptlib"; then
9351                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9352         else
9353                 cryptlib=-lcrypt
9354         fi
9355         if $test -z "$cryptlib"; then
9356                 cryptlib=`./loc libcrypt$_a "" $libpth`
9357         else
9358                 cryptlib=-lcrypt
9359         fi
9360         if $test -z "$cryptlib"; then
9361                 echo 'crypt() NOT found.' >&4
9362                 val="$undef"
9363         else
9364                 val="$define"
9365         fi
9366 fi
9367 set d_crypt
9368 eval $setvar
9369
9370 : get csh whereabouts
9371 case "$csh" in
9372 'csh') val="$undef" ;;
9373 *) val="$define" ;;
9374 esac
9375 set d_csh
9376 eval $setvar
9377 : Respect a hint or command line value for full_csh.
9378 case "$full_csh" in
9379 '') full_csh=$csh ;;
9380 esac
9381
9382 : see if cuserid exists
9383 set cuserid d_cuserid
9384 eval $inlibc
9385
9386 : see if this is a limits.h system
9387 set limits.h i_limits
9388 eval $inhdr
9389
9390 : see if this is a float.h system
9391 set float.h i_float
9392 eval $inhdr
9393
9394 : See if number of significant digits in a double precision number is known
9395 echo " "
9396 $cat >dbl_dig.c <<EOM
9397 #$i_limits I_LIMITS
9398 #$i_float I_FLOAT
9399 #ifdef I_LIMITS
9400 #include <limits.h>
9401 #endif
9402 #ifdef I_FLOAT
9403 #include <float.h>
9404 #endif
9405 #ifdef DBL_DIG
9406 printf("Contains DBL_DIG");
9407 #endif
9408 EOM
9409 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9410 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9411         echo "DBL_DIG found." >&4
9412         val="$define"
9413 else
9414         echo "DBL_DIG NOT found." >&4
9415         val="$undef"
9416 fi
9417 $rm -f dbl_dig.?
9418 set d_dbl_dig
9419 eval $setvar
9420
9421 hasproto='varname=$1; func=$2; shift; shift;
9422 while $test $# -ge 2; do
9423         case "$1" in
9424         $define) echo "#include <$2>";;
9425         esac ;
9426     shift 2;
9427 done > try.c;
9428 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9429 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9430         echo "$func() prototype found.";
9431         val="$define";
9432 else
9433         echo "$func() prototype NOT found.";
9434         val="$undef";
9435 fi;
9436 set $varname;
9437 eval $setvar;
9438 $rm -f try.c tryout.c'
9439
9440 : see if dbm.h is available
9441 : see if dbmclose exists
9442 set dbmclose d_dbmclose
9443 eval $inlibc
9444
9445 case "$d_dbmclose" in
9446 $define)
9447         set dbm.h i_dbm
9448         eval $inhdr
9449         case "$i_dbm" in
9450         $define)
9451                 val="$undef"
9452                 set i_rpcsvcdbm
9453                 eval $setvar
9454                 ;;
9455         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9456                 eval $inhdr
9457                 ;;
9458         esac
9459         ;;
9460 *)      echo "We won't be including <dbm.h>"
9461         val="$undef"
9462         set i_dbm
9463         eval $setvar
9464         val="$undef"
9465         set i_rpcsvcdbm
9466         eval $setvar
9467         ;;
9468 esac
9469
9470 : see if prototype for dbminit is available
9471 echo " "
9472 set d_dbminitproto dbminit $i_dbm dbm.h
9473 eval $hasproto
9474
9475 : see if difftime exists
9476 set difftime d_difftime
9477 eval $inlibc
9478
9479 : see if this is a dirent system
9480 echo " "
9481 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9482         val="$define"
9483         echo "<dirent.h> found." >&4
9484 else
9485         val="$undef"
9486         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9487                 echo "<sys/dir.h> found." >&4
9488                 echo " "
9489         else
9490                 xinc=`./findhdr sys/ndir.h`
9491         fi
9492         echo "<dirent.h> NOT found." >&4
9493 fi
9494 set i_dirent
9495 eval $setvar
9496
9497 : Look for type of directory structure.
9498 echo " "
9499 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9500
9501 case "$direntrytype" in
9502 ''|' ')
9503         case "$i_dirent" in
9504         $define) guess1='struct dirent' ;;
9505         *) guess1='struct direct'  ;;
9506         esac
9507         ;;
9508 *)      guess1="$direntrytype"
9509         ;;
9510 esac
9511
9512 case "$guess1" in
9513 'struct dirent') guess2='struct direct' ;;
9514 *) guess2='struct dirent' ;;
9515 esac
9516                 
9517 if $contains "$guess1" try.c >/dev/null 2>&1; then
9518         direntrytype="$guess1"
9519         echo "Your directory entries are $direntrytype." >&4
9520 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9521         direntrytype="$guess2"
9522         echo "Your directory entries seem to be $direntrytype." >&4
9523 else
9524         echo "I don't recognize your system's directory entries." >&4
9525         rp="What type is used for directory entries on this system?"
9526         dflt="$guess1"
9527         . ./myread
9528         direntrytype="$ans"
9529 fi
9530 $rm -f try.c
9531
9532
9533 : see if the directory entry stores field length
9534 echo " "
9535 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9536 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9537         echo "Good, your directory entry keeps length information in d_namlen." >&4
9538         val="$define"
9539 else
9540         echo "Your directory entry does not know about the d_namlen field." >&4
9541         val="$undef"
9542 fi
9543 set d_dirnamlen
9544 eval $setvar
9545 $rm -f try.c
9546
9547 : see if this is an sysdir system
9548 set sys/dir.h i_sysdir
9549 eval $inhdr
9550
9551 : see if this is an sysndir system
9552 set sys/ndir.h i_sysndir
9553 eval $inhdr
9554
9555 : Look for dirfd
9556 echo " "
9557 $cat >dirfd.c <<EOM
9558 #include <stdio.h>
9559 #$i_dirent I_DIRENT             /**/
9560 #$i_sysdir I_SYS_DIR            /**/
9561 #$i_sysndir I_SYS_NDIR          /**/
9562 #$i_systypes I_SYS_TYPES        /**/
9563 #if defined(I_SYS_TYPES)
9564 #include <sys/types.h>
9565 #endif
9566 #if defined(I_DIRENT)
9567 #include <dirent.h>
9568 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
9569 #include <sys/dir.h>
9570 #endif
9571 #else
9572 #ifdef I_SYS_NDIR
9573 #include <sys/ndir.h>
9574 #else
9575 #ifdef I_SYS_DIR
9576 #ifdef hp9000s500
9577 #include <ndir.h>       /* may be wrong in the future */
9578 #else
9579 #include <sys/dir.h>
9580 #endif
9581 #endif
9582 #endif
9583 #endif 
9584 int main() {
9585         DIR *dirp = opendir(".");
9586         if (dirfd(dirp) >= 0)
9587                 exit(0);
9588         else
9589                 exit(1);
9590 }
9591 EOM
9592 set dirfd
9593 if eval $compile; then
9594         val="$define"
9595 fi
9596 case "$val" in
9597 $define)        echo "dirfd() found." >&4       ;;
9598 *)              echo "dirfd() NOT found." >&4   ;;
9599 esac
9600 set d_dirfd
9601 eval $setvar
9602 $rm -f dirfd*
9603
9604 : see if dlerror exists
9605 xxx_runnm="$runnm"
9606 runnm=false
9607 set dlerror d_dlerror
9608 eval $inlibc
9609 runnm="$xxx_runnm"
9610
9611 : see if dlfcn is available
9612 set dlfcn.h i_dlfcn
9613 eval $inhdr
9614
9615 case "$usedl" in
9616 $define|y|true)
9617         $cat << EOM
9618
9619 On a few systems, the dynamically loaded modules that perl generates and uses
9620 will need a different extension than shared libs. The default will probably
9621 be appropriate.
9622
9623 EOM
9624         case "$dlext" in
9625         '')     dflt="$so" ;;
9626         *)      dflt="$dlext" ;;
9627         esac
9628         rp='What is the extension of dynamically loaded modules'
9629         . ./myread
9630         dlext="$ans"
9631         ;;
9632 *)
9633         dlext="none"
9634         ;;
9635 esac
9636
9637 : Check if dlsym need a leading underscore
9638 echo " "
9639 val="$undef"
9640
9641 case "$dlsrc" in
9642 dl_dlopen.xs)
9643         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9644         $cat >dyna.c <<'EOM'
9645 fred () { }
9646 EOM
9647
9648 $cat >fred.c<<EOM
9649
9650 #include <stdio.h>
9651 #$i_dlfcn I_DLFCN
9652 #ifdef I_DLFCN
9653 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9654 #else
9655 #include <sys/types.h>
9656 #include <nlist.h>
9657 #include <link.h>
9658 #endif
9659
9660 extern int fred() ;
9661
9662 int main()
9663 {
9664     void * handle ;
9665     void * symbol ;
9666 #ifndef RTLD_LAZY
9667     int mode = 1 ;
9668 #else
9669     int mode = RTLD_LAZY ;
9670 #endif
9671     handle = dlopen("./dyna.$dlext", mode) ;
9672     if (handle == NULL) {
9673         printf ("1\n") ;
9674         fflush (stdout) ;
9675         exit(0);
9676     }
9677     symbol = dlsym(handle, "fred") ;
9678     if (symbol == NULL) {
9679         /* try putting a leading underscore */
9680         symbol = dlsym(handle, "_fred") ;
9681         if (symbol == NULL) {
9682             printf ("2\n") ;
9683             fflush (stdout) ;
9684             exit(0);
9685         }
9686         printf ("3\n") ;
9687     }
9688     else
9689         printf ("4\n") ;
9690     fflush (stdout) ;
9691     exit(0);
9692 }
9693 EOM
9694         : Call the object file tmp-dyna.o in case dlext=o.
9695         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9696                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9697                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9698                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9699                 xxx=`$run ./fred`
9700                 case $xxx in
9701                 1)      echo "Test program failed using dlopen." >&4
9702                         echo "Perhaps you should not use dynamic loading." >&4;;
9703                 2)      echo "Test program failed using dlsym." >&4
9704                         echo "Perhaps you should not use dynamic loading." >&4;;
9705                 3)      echo "dlsym needs a leading underscore" >&4
9706                         val="$define" ;;
9707                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9708                 esac
9709         else
9710                 echo "I can't compile and run the test program." >&4
9711                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9712         fi
9713         ;;
9714 esac
9715                 
9716 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
9717
9718 set d_dlsymun
9719 eval $setvar
9720
9721 : see if prototype for drand48 is available
9722 echo " "
9723 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9724 eval $hasproto
9725
9726 : see if dup2 exists
9727 set dup2 d_dup2
9728 eval $inlibc
9729
9730 : see if eaccess exists
9731 set eaccess d_eaccess
9732 eval $inlibc
9733
9734 : see if endgrent exists
9735 set endgrent d_endgrent
9736 eval $inlibc
9737
9738 : see if endhostent exists
9739 set endhostent d_endhent
9740 eval $inlibc
9741
9742 : see if endnetent exists
9743 set endnetent d_endnent
9744 eval $inlibc
9745
9746 : see if endprotoent exists
9747 set endprotoent d_endpent
9748 eval $inlibc
9749
9750 : see if endpwent exists
9751 set endpwent d_endpwent
9752 eval $inlibc
9753
9754 : see if endservent exists
9755 set endservent d_endsent
9756 eval $inlibc
9757
9758 : Locate the flags for 'open()'
9759 echo " "
9760 $cat >try.c <<'EOCP'
9761 #include <sys/types.h>
9762 #ifdef I_FCNTL
9763 #include <fcntl.h>
9764 #endif
9765 #ifdef I_SYS_FILE
9766 #include <sys/file.h>
9767 #endif
9768 int main() {
9769         if(O_RDONLY);
9770 #ifdef O_TRUNC
9771         exit(0);
9772 #else
9773         exit(1);
9774 #endif
9775 }
9776 EOCP
9777 : check sys/file.h first to get FREAD on Sun
9778 if $test `./findhdr sys/file.h` && \
9779                 set try -DI_SYS_FILE && eval $compile; then
9780         h_sysfile=true;
9781         echo "<sys/file.h> defines the O_* constants..." >&4
9782         if $run ./try; then
9783                 echo "and you have the 3 argument form of open()." >&4
9784                 val="$define"
9785         else
9786                 echo "but not the 3 argument form of open().  Oh, well." >&4
9787                 val="$undef"
9788         fi
9789 elif $test `./findhdr fcntl.h` && \
9790                 set try -DI_FCNTL && eval $compile; then
9791         h_fcntl=true;
9792         echo "<fcntl.h> defines the O_* constants..." >&4
9793         if $run ./try; then
9794                 echo "and you have the 3 argument form of open()." >&4
9795                 val="$define"
9796         else
9797                 echo "but not the 3 argument form of open().  Oh, well." >&4
9798                 val="$undef"
9799         fi
9800 else
9801         val="$undef"
9802         echo "I can't find the O_* constant definitions!  You got problems." >&4
9803 fi
9804 set d_open3
9805 eval $setvar
9806 $rm -f try try.*
9807
9808 : see which of string.h or strings.h is needed
9809 echo " "
9810 strings=`./findhdr string.h`
9811 if $test "$strings" && $test -r "$strings"; then
9812         echo "Using <string.h> instead of <strings.h>." >&4
9813         val="$define"
9814 else
9815         val="$undef"
9816         strings=`./findhdr strings.h`
9817         if $test "$strings" && $test -r "$strings"; then
9818                 echo "Using <strings.h> instead of <string.h>." >&4
9819         else
9820                 echo "No string header found -- You'll surely have problems." >&4
9821         fi
9822 fi
9823 set i_string
9824 eval $setvar
9825 case "$i_string" in
9826 "$undef") strings=`./findhdr strings.h`;;
9827 *)        strings=`./findhdr string.h`;;
9828 esac
9829
9830 : see if this is a sys/file.h system
9831 val=''
9832 set sys/file.h val
9833 eval $inhdr
9834
9835 : do we need to include sys/file.h ?
9836 case "$val" in
9837 "$define")
9838         echo " "
9839         if $h_sysfile; then
9840                 val="$define"
9841                 echo "We'll be including <sys/file.h>." >&4
9842         else
9843                 val="$undef"
9844                 echo "We won't be including <sys/file.h>." >&4
9845         fi
9846         ;;
9847 *)
9848         h_sysfile=false
9849         ;;
9850 esac
9851 set i_sysfile
9852 eval $setvar
9853
9854 : see if fcntl.h is there
9855 val=''
9856 set fcntl.h val
9857 eval $inhdr
9858
9859 : see if we can include fcntl.h
9860 case "$val" in
9861 "$define")
9862         echo " "
9863         if $h_fcntl; then
9864                 val="$define"
9865                 echo "We'll be including <fcntl.h>." >&4
9866         else
9867                 val="$undef"
9868                 if $h_sysfile; then
9869         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
9870                 else
9871                         echo "We won't be including <fcntl.h>." >&4
9872                 fi
9873         fi
9874         ;;
9875 *)
9876         h_fcntl=false
9877         val="$undef"
9878         ;;
9879 esac
9880 set i_fcntl
9881 eval $setvar
9882
9883 : check for non-blocking I/O stuff
9884 case "$h_sysfile" in
9885 true) echo "#include <sys/file.h>" > head.c;;
9886 *)
9887        case "$h_fcntl" in
9888        true) echo "#include <fcntl.h>" > head.c;;
9889        *) echo "#include <sys/fcntl.h>" > head.c;;
9890        esac
9891        ;;
9892 esac
9893 echo " "
9894 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9895 case "$o_nonblock" in
9896 '')
9897         $cat head.c > try.c
9898         $cat >>try.c <<EOCP
9899 #include <stdio.h>
9900 #include <stdlib.h>
9901 #$i_fcntl I_FCNTL
9902 #ifdef I_FCNTL
9903 #include <fcntl.h>
9904 #endif
9905 int main() {
9906 #ifdef O_NONBLOCK
9907         printf("O_NONBLOCK\n");
9908         exit(0);
9909 #endif
9910 #ifdef O_NDELAY
9911         printf("O_NDELAY\n");
9912         exit(0);
9913 #endif
9914 #ifdef FNDELAY
9915         printf("FNDELAY\n");
9916         exit(0);
9917 #endif
9918         exit(0);
9919 }
9920 EOCP
9921         set try
9922         if eval $compile_ok; then
9923                 o_nonblock=`$run ./try`
9924                 case "$o_nonblock" in
9925                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9926                 *) echo "Seems like we can use $o_nonblock.";;
9927                 esac
9928         else
9929                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9930         fi
9931         ;;
9932 *) echo "Using $hint value $o_nonblock.";;
9933 esac
9934 $rm -f try try.* .out core
9935
9936 echo " "
9937 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9938 case "$eagain" in
9939 '')
9940         $cat head.c > try.c
9941         $cat >>try.c <<EOCP
9942 #include <errno.h>
9943 #include <sys/types.h>
9944 #include <signal.h>
9945 #include <stdio.h> 
9946 #include <stdlib.h> 
9947 #define MY_O_NONBLOCK $o_nonblock
9948 #ifndef errno  /* XXX need better Configure test */
9949 extern int errno;
9950 #endif
9951 #$i_unistd I_UNISTD
9952 #ifdef I_UNISTD
9953 #include <unistd.h>
9954 #endif
9955 #$i_string I_STRING
9956 #ifdef I_STRING
9957 #include <string.h>
9958 #else
9959 #include <strings.h>
9960 #endif
9961 $signal_t blech(x) int x; { exit(3); }
9962 EOCP
9963         $cat >> try.c <<'EOCP'
9964 int main()
9965 {
9966         int pd[2];
9967         int pu[2];
9968         char buf[1];
9969         char string[100];
9970
9971         pipe(pd);       /* Down: child -> parent */
9972         pipe(pu);       /* Up: parent -> child */
9973         if (0 != fork()) {
9974                 int ret;
9975                 close(pd[1]);   /* Parent reads from pd[0] */
9976                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9977 #ifdef F_SETFL
9978                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9979                         exit(1);
9980 #else
9981                 exit(4);
9982 #endif
9983                 signal(SIGALRM, blech);
9984                 alarm(5);
9985                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9986                         exit(2);
9987                 sprintf(string, "%d\n", ret);
9988                 write(2, string, strlen(string));
9989                 alarm(0);
9990 #ifdef EAGAIN
9991                 if (errno == EAGAIN) {
9992                         printf("EAGAIN\n");
9993                         goto ok;
9994                 }
9995 #endif
9996 #ifdef EWOULDBLOCK
9997                 if (errno == EWOULDBLOCK)
9998                         printf("EWOULDBLOCK\n");
9999 #endif
10000         ok:
10001                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
10002                 sleep(2);                               /* Give it time to close our pipe */
10003                 alarm(5);
10004                 ret = read(pd[0], buf, 1);      /* Should read EOF */
10005                 alarm(0);
10006                 sprintf(string, "%d\n", ret);
10007                 write(3, string, strlen(string));
10008                 exit(0);
10009         }
10010
10011         close(pd[0]);                   /* We write to pd[1] */
10012         close(pu[1]);                   /* We read from pu[0] */
10013         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
10014         close(pd[1]);                   /* Pipe pd is now fully closed! */
10015         exit(0);                                /* Bye bye, thank you for playing! */
10016 }
10017 EOCP
10018         set try
10019         if eval $compile_ok; then
10020                 echo "$startsh" >mtry
10021                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
10022                 chmod +x mtry
10023                 ./mtry >/dev/null 2>&1
10024                 case $? in
10025                 0) eagain=`$cat try.out`;;
10026                 1) echo "Could not perform non-blocking setting!";;
10027                 2) echo "I did a successful read() for something that was not there!";;
10028                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
10029                 4) echo "Could not find F_SETFL!";;
10030                 *) echo "Something terribly wrong happened during testing.";;
10031                 esac
10032                 rd_nodata=`$cat try.ret`
10033                 echo "A read() system call with no data present returns $rd_nodata."
10034                 case "$rd_nodata" in
10035                 0|-1) ;;
10036                 *)
10037                         echo "(That's peculiar, fixing that to be -1.)"
10038                         rd_nodata=-1
10039                         ;;
10040                 esac
10041                 case "$eagain" in
10042                 '')
10043                         echo "Forcing errno EAGAIN on read() with no data available."
10044                         eagain=EAGAIN
10045                         ;;
10046                 *)
10047                         echo "Your read() sets errno to $eagain when no data is available."
10048                         ;;
10049                 esac
10050                 status=`$cat try.err`
10051                 case "$status" in
10052                 0) echo "And it correctly returns 0 to signal EOF.";;
10053                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
10054                 *) echo "However, your read() returns '$status' on EOF??";;
10055                 esac
10056                 val="$define"
10057                 if test "$status" = "$rd_nodata"; then
10058                         echo "WARNING: you can't distinguish between EOF and no data!"
10059                         val="$undef"
10060                 fi
10061         else
10062                 echo "I can't compile the test program--assuming errno EAGAIN will do."
10063                 eagain=EAGAIN
10064         fi
10065         set d_eofnblk
10066         eval $setvar
10067         ;;
10068 *)
10069         echo "Using $hint value $eagain."
10070         echo "Your read() returns $rd_nodata when no data is present."
10071         case "$d_eofnblk" in
10072         "$define") echo "And you can see EOF because read() returns 0.";;
10073         "$undef") echo "But you can't see EOF status from read() returned value.";;
10074         *)
10075                 echo "(Assuming you can't see EOF status from read anyway.)"
10076                 d_eofnblk=$undef
10077                 ;;
10078         esac
10079         ;;
10080 esac
10081 $rm -f try try.* .out core head.c mtry
10082
10083 : see if fchdir exists
10084 set fchdir d_fchdir
10085 eval $inlibc
10086
10087 : see if fchmod exists
10088 set fchmod d_fchmod
10089 eval $inlibc
10090
10091 : see if fchown exists
10092 set fchown d_fchown
10093 eval $inlibc
10094
10095 : see if this is an fcntl system
10096 set fcntl d_fcntl
10097 eval $inlibc
10098
10099 echo " "
10100 : See if fcntl-based locking works.
10101 $cat >try.c <<EOCP
10102 #include <stdlib.h>
10103 #include <unistd.h>
10104 #include <fcntl.h>
10105 #include <signal.h>
10106 $signal_t blech(x) int x; { exit(3); }
10107 int main() {
10108 #if defined(F_SETLK) && defined(F_SETLKW)
10109      struct flock flock;
10110      int retval, fd;
10111      fd = open("try.c", O_RDONLY);
10112      flock.l_type = F_RDLCK;
10113      flock.l_whence = SEEK_SET;
10114      flock.l_start = flock.l_len = 0;
10115      signal(SIGALRM, blech);
10116      alarm(10);
10117      retval = fcntl(fd, F_SETLK, &flock);
10118      close(fd);
10119      (retval < 0 ? exit(2) : exit(0));
10120 #else
10121      exit(2);
10122 #endif
10123 }
10124 EOCP
10125 echo "Checking if fcntl-based file locking works... "
10126 case "$d_fcntl" in
10127 "$define")
10128         set try
10129         if eval $compile_ok; then
10130                 if $run ./try; then
10131                         echo "Yes, it seems to work."
10132                         val="$define"
10133                 else
10134                         echo "Nope, it didn't work."
10135                         val="$undef"
10136                         case "$?" in
10137                         3) $cat >&4 <<EOM
10138 ***
10139 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
10140 *** This is (almost) impossible.
10141 *** If your NFS lock daemons are not feeling well, something like
10142 *** this may happen, please investigate.  Cannot continue, aborting.
10143 ***
10144 EOM
10145                                 exit 1
10146                                 ;;
10147                         esac
10148                 fi
10149         else
10150                 echo "I'm unable to compile the test program, so I'll assume not."
10151                 val="$undef"
10152         fi
10153         ;;
10154 *) val="$undef";
10155         echo "Nope, since you don't even have fcntl()."
10156         ;;
10157 esac
10158 set d_fcntl_can_lock
10159 eval $setvar
10160 $rm -f try*
10161
10162
10163 : see if sys/select.h has to be included
10164 set sys/select.h i_sysselct
10165 eval $inhdr
10166
10167 : see if we should include time.h, sys/time.h, or both
10168 echo " "
10169 if test "X$timeincl" = X; then
10170         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10171         $echo $n "I'm now running the test program...$c"
10172         $cat >try.c <<'EOCP'
10173 #include <sys/types.h>
10174 #ifdef I_TIME
10175 #include <time.h>
10176 #endif
10177 #ifdef I_SYSTIME
10178 #ifdef SYSTIMEKERNEL
10179 #define KERNEL
10180 #endif
10181 #include <sys/time.h>
10182 #endif
10183 #ifdef I_SYSSELECT
10184 #include <sys/select.h>
10185 #endif
10186 int main()
10187 {
10188         struct tm foo;
10189 #ifdef S_TIMEVAL
10190         struct timeval bar;
10191 #endif
10192 #ifdef S_TIMEZONE
10193         struct timezone tzp;
10194 #endif
10195         if (foo.tm_sec == foo.tm_sec)
10196                 exit(0);
10197 #ifdef S_TIMEVAL
10198         if (bar.tv_sec == bar.tv_sec)
10199                 exit(0);
10200 #endif
10201         exit(1);
10202 }
10203 EOCP
10204         flags=''
10205         for s_timezone in '-DS_TIMEZONE' ''; do
10206         sysselect=''
10207         for s_timeval in '-DS_TIMEVAL' ''; do
10208         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10209         for i_time in '' '-DI_TIME'; do
10210         for i_systime in '-DI_SYSTIME' ''; do
10211                 case "$flags" in
10212                 '') $echo $n ".$c"
10213                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10214                         if eval $compile; then
10215                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10216                                 shift
10217                                 flags="$*"
10218                                 echo " "
10219                                 $echo $n "Succeeded with $flags$c"
10220                         fi
10221                         ;;
10222                 esac
10223         done
10224         done
10225         done
10226         done
10227         done
10228         timeincl=''
10229         echo " "
10230         case "$flags" in
10231         *SYSTIMEKERNEL*) i_systimek="$define"
10232                 timeincl=`./findhdr sys/time.h`
10233                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10234         *) i_systimek="$undef";;
10235         esac
10236         case "$flags" in
10237         *I_TIME*) i_time="$define"
10238                 timeincl=`./findhdr time.h`" $timeincl"
10239                 echo "We'll include <time.h>." >&4;;
10240         *) i_time="$undef";;
10241         esac
10242         case "$flags" in
10243         *I_SYSTIME*) i_systime="$define"
10244                 timeincl=`./findhdr sys/time.h`" $timeincl"
10245                 echo "We'll include <sys/time.h>." >&4;;
10246         *) i_systime="$undef";;
10247         esac
10248         $rm -f try.c try
10249 fi
10250
10251 : check for fd_set items
10252 $cat <<EOM
10253
10254 Checking to see how well your C compiler handles fd_set and friends ...
10255 EOM
10256 $cat >try.c <<EOCP
10257 #$i_systime I_SYS_TIME
10258 #$i_sysselct I_SYS_SELECT
10259 #$d_socket HAS_SOCKET
10260 #include <sys/types.h>
10261 #ifdef HAS_SOCKET
10262 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10263 #endif
10264 #ifdef I_SYS_TIME
10265 #include <sys/time.h>
10266 #endif
10267 #ifdef I_SYS_SELECT
10268 #include <sys/select.h>
10269 #endif
10270 int main() {
10271         fd_set fds;
10272
10273 #ifdef TRYBITS
10274         if(fds.fds_bits);
10275 #endif
10276
10277 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10278         exit(0);
10279 #else
10280         exit(1);
10281 #endif
10282 }
10283 EOCP
10284 set try -DTRYBITS
10285 if eval $compile; then
10286         d_fds_bits="$define"
10287         d_fd_set="$define"
10288         echo "Well, your system knows about the normal fd_set typedef..." >&4
10289         if $run ./try; then
10290                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10291                 d_fd_macros="$define"
10292         else
10293                 $cat >&4 <<'EOM'
10294 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10295 EOM
10296                 d_fd_macros="$undef"
10297         fi
10298 else
10299         $cat <<'EOM'
10300 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10301 EOM
10302         set try
10303         if eval $compile; then
10304                 d_fds_bits="$undef"
10305                 d_fd_set="$define"
10306                 echo "Well, your system has some sort of fd_set available..." >&4
10307                 if $run ./try; then
10308                         echo "and you have the normal fd_set macros." >&4
10309                         d_fd_macros="$define"
10310                 else
10311                         $cat <<'EOM'
10312 but not the normal fd_set macros!  Gross!  More work for me...
10313 EOM
10314                         d_fd_macros="$undef"
10315                 fi
10316         else
10317         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10318                 d_fd_set="$undef"
10319                 d_fds_bits="$undef"
10320                 d_fd_macros="$undef"
10321         fi
10322 fi
10323 $rm -f try try.*
10324
10325 : see if fgetpos exists
10326 set fgetpos d_fgetpos
10327 eval $inlibc
10328
10329 : see if finite exists
10330 set finite d_finite
10331 eval $inlibc
10332
10333 : see if finitel exists
10334 set finitel d_finitel
10335 eval $inlibc
10336
10337 : see if flock exists
10338 set flock d_flock
10339 eval $inlibc
10340
10341 : see if prototype for flock is available
10342 echo " "
10343 set d_flockproto flock $i_sysfile sys/file.h
10344 eval $hasproto
10345
10346 : see if fork exists
10347 set fork d_fork
10348 eval $inlibc
10349
10350 : see if fp_class exists
10351 set fp_class d_fp_class
10352 eval $inlibc
10353
10354 : see if pathconf exists
10355 set pathconf d_pathconf
10356 eval $inlibc
10357
10358 : see if fpathconf exists
10359 set fpathconf d_fpathconf
10360 eval $inlibc
10361
10362 : see if fpclass exists
10363 set fpclass d_fpclass
10364 eval $inlibc
10365
10366 : see if fpclassify exists
10367 set fpclassify d_fpclassify
10368 eval $inlibc
10369
10370 : see if fpclassl exists
10371 set fpclassl d_fpclassl
10372 eval $inlibc
10373
10374
10375 : check for fpos64_t
10376 echo " "
10377 echo "Checking to see if you have fpos64_t..." >&4
10378 $cat >try.c <<EOCP
10379 #include <stdio.h>
10380 int main() { fpos64_t x = 7; }
10381 EOCP
10382 set try
10383 if eval $compile; then
10384         val="$define"
10385         echo "You have fpos64_t."
10386 else
10387         val="$undef"
10388         echo "You do not have fpos64_t."
10389         case "$fpossize" in
10390         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10391         esac
10392 fi
10393 $rm -f try.* try
10394 set d_fpos64_t
10395 eval $setvar
10396
10397 : see if frexpl exists
10398 set frexpl d_frexpl
10399 eval $inlibc
10400
10401 : see if this is a sys/param system
10402 set sys/param.h i_sysparam
10403 eval $inhdr
10404
10405 : see if this is a sys/mount.h system
10406 set sys/mount.h i_sysmount
10407 eval $inhdr
10408
10409
10410 echo " "
10411 echo "Checking to see if your system supports struct fs_data..." >&4
10412 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10413 eval $hasstruct
10414 case "$d_fs_data_s" in
10415 "$define")      echo "Yes, it does."   ;;
10416 *)              echo "No, it doesn't." ;;
10417 esac
10418
10419 : see if fseeko exists
10420 set fseeko d_fseeko
10421 eval $inlibc
10422 case "$longsize" in
10423 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10424 esac
10425
10426 : see if fsetpos exists
10427 set fsetpos d_fsetpos
10428 eval $inlibc
10429
10430
10431 : see if fstatfs exists
10432 set fstatfs d_fstatfs
10433 eval $inlibc
10434
10435
10436 : see if statvfs exists
10437 set statvfs d_statvfs
10438 eval $inlibc
10439
10440 : see if fstatvfs exists
10441 set fstatvfs d_fstatvfs
10442 eval $inlibc
10443
10444
10445 : see if fsync exists
10446 set fsync d_fsync
10447 eval $inlibc
10448
10449 : see if ftello exists
10450 set ftello d_ftello
10451 eval $inlibc
10452 case "$longsize" in
10453 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10454 esac
10455
10456 : see if getcwd exists
10457 set getcwd d_getcwd
10458 eval $inlibc
10459
10460 : see if getespwnam exists
10461 set getespwnam d_getespwnam
10462 eval $inlibc
10463
10464
10465 : see if getfsstat exists
10466 set getfsstat d_getfsstat
10467 eval $inlibc
10468
10469 : see if getgrent exists
10470 set getgrent d_getgrent
10471 eval $inlibc
10472
10473 : see if gethostbyaddr exists
10474 set gethostbyaddr d_gethbyaddr
10475 eval $inlibc
10476
10477 : see if gethostbyname exists
10478 set gethostbyname d_gethbyname
10479 eval $inlibc
10480
10481 : see if gethostent exists
10482 set gethostent d_gethent
10483 eval $inlibc
10484
10485 : see how we will look up host name
10486 echo " "
10487 call=''
10488 if set gethostname val -f d_gethname; eval $csym; $val; then
10489         echo 'gethostname() found.' >&4
10490         d_gethname="$define"
10491         call=gethostname
10492 fi
10493 if set uname val -f d_uname; eval $csym; $val; then
10494         if ./xenix; then
10495                 $cat <<'EOM'
10496 uname() was found, but you're running xenix, and older versions of xenix
10497 have a broken uname(). If you don't really know whether your xenix is old
10498 enough to have a broken system call, use the default answer.
10499
10500 EOM
10501                 dflt=y
10502                 case "$d_uname" in
10503                 "$define") dflt=n;;
10504                 esac
10505                 rp='Is your uname() broken?'
10506                 . ./myread
10507                 case "$ans" in
10508                 n*) d_uname="$define"; call=uname;;
10509                 esac
10510         else
10511                 echo 'uname() found.' >&4
10512                 d_uname="$define"
10513                 case "$call" in
10514                 '') call=uname ;;
10515                 esac
10516         fi
10517 fi
10518 case "$d_gethname" in
10519 '') d_gethname="$undef";;
10520 esac
10521 case "$d_uname" in
10522 '') d_uname="$undef";;
10523 esac
10524 case "$d_uname$d_gethname" in
10525 *define*)
10526         dflt=n
10527         cat <<EOM
10528  
10529 Every now and then someone has a $call() that lies about the hostname
10530 but can't be fixed for political or economic reasons.  If you wish, I can
10531 pretend $call() isn't there and maybe compute hostname at run-time
10532 thanks to the '$phostname' command.
10533
10534 EOM
10535         rp="Shall I ignore $call() from now on?"
10536         . ./myread
10537         case "$ans" in
10538         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10539         esac;;
10540 esac
10541 case "$phostname" in
10542 '') aphostname='';;
10543 *) case "$aphostname" in
10544         /*) ;;
10545         *) set X $phostname
10546                 shift
10547                 file=$1
10548                 shift
10549                 file=`./loc $file $file $pth`
10550                 aphostname=`echo $file $*`
10551                 ;;
10552         esac
10553         ;;
10554 esac
10555 case "$d_uname$d_gethname" in
10556 *define*) ;;
10557 *)
10558         case "$phostname" in
10559         '')
10560                 echo "There will be no way for $package to get your hostname." >&4;;
10561         *)
10562         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10563                 ;;
10564         esac;;
10565 esac
10566 case "$d_phostname" in
10567 '') d_phostname="$undef";;
10568 esac
10569
10570 : see if this is a netdb.h system
10571 set netdb.h i_netdb
10572 eval $inhdr
10573
10574 : see if prototypes for various gethostxxx netdb.h functions are available
10575 echo " "
10576 set d_gethostprotos gethostent $i_netdb netdb.h
10577 eval $hasproto
10578
10579 : see if getitimer exists
10580 set getitimer d_getitimer
10581 eval $inlibc
10582
10583 : see if getlogin exists
10584 set getlogin d_getlogin
10585 eval $inlibc
10586
10587 : see if getmnt exists
10588 set getmnt d_getmnt
10589 eval $inlibc
10590
10591 : see if getmntent exists
10592 set getmntent d_getmntent
10593 eval $inlibc
10594
10595 : see if getnetbyaddr exists
10596 set getnetbyaddr d_getnbyaddr
10597 eval $inlibc
10598
10599 : see if getnetbyname exists
10600 set getnetbyname d_getnbyname
10601 eval $inlibc
10602
10603 : see if getnetent exists
10604 set getnetent d_getnent
10605 eval $inlibc
10606
10607 : see if prototypes for various getnetxxx netdb.h functions are available
10608 echo " "
10609 set d_getnetprotos getnetent $i_netdb netdb.h
10610 eval $hasproto
10611
10612 : see if getpagesize exists
10613 set getpagesize d_getpagsz
10614 eval $inlibc
10615
10616
10617 : see if getprotobyname exists
10618 set getprotobyname d_getpbyname
10619 eval $inlibc
10620
10621 : see if getprotobynumber exists
10622 set getprotobynumber d_getpbynumber
10623 eval $inlibc
10624
10625 : see if getprotoent exists
10626 set getprotoent d_getpent
10627 eval $inlibc
10628
10629 : see if getpgid exists
10630 set getpgid d_getpgid
10631 eval $inlibc
10632
10633 : see if getpgrp2 exists
10634 set getpgrp2 d_getpgrp2
10635 eval $inlibc
10636
10637 : see if getppid exists
10638 set getppid d_getppid
10639 eval $inlibc
10640
10641 : see if getpriority exists
10642 set getpriority d_getprior
10643 eval $inlibc
10644
10645 : see if prototypes for various getprotoxxx netdb.h functions are available
10646 echo " "
10647 set d_getprotoprotos getprotoent $i_netdb netdb.h
10648 eval $hasproto
10649
10650 : see if getprpwnam exists
10651 set getprpwnam d_getprpwnam
10652 eval $inlibc
10653
10654 : see if getpwent exists
10655 set getpwent d_getpwent
10656 eval $inlibc
10657
10658
10659 : see if getservbyname exists
10660 set getservbyname d_getsbyname
10661 eval $inlibc
10662
10663 : see if getservbyport exists
10664 set getservbyport d_getsbyport
10665 eval $inlibc
10666
10667 : see if getservent exists
10668 set getservent d_getsent
10669 eval $inlibc
10670
10671 : see if prototypes for various getservxxx netdb.h functions are available
10672 echo " "
10673 set d_getservprotos getservent $i_netdb netdb.h
10674 eval $hasproto
10675
10676 : see if getspnam exists
10677 set getspnam d_getspnam
10678 eval $inlibc
10679
10680 : see if gettimeofday or ftime exists
10681 set gettimeofday d_gettimeod
10682 eval $inlibc
10683 case "$d_gettimeod" in
10684 "$undef")
10685         set ftime d_ftime 
10686         eval $inlibc
10687         ;;
10688 *)
10689         val="$undef"; set d_ftime; eval $setvar
10690         ;;
10691 esac
10692 case "$d_gettimeod$d_ftime" in
10693 "$undef$undef")
10694         echo " "
10695         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10696         ;;
10697 esac
10698
10699 : see if this is an grp system
10700 set grp.h i_grp
10701 eval $inhdr
10702
10703 case "$i_grp" in
10704 $define)
10705         xxx=`./findhdr grp.h`
10706         $cppstdin $cppflags $cppminus < $xxx >$$.h
10707
10708         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10709                 val="$define"
10710         else
10711                 val="$undef"
10712         fi
10713         set d_grpasswd
10714         eval $setvar
10715
10716         $rm -f $$.h
10717         ;;
10718 *)
10719         val="$undef";
10720         set d_grpasswd; eval $setvar
10721         ;;
10722 esac
10723
10724 : see if hasmntopt exists
10725 set hasmntopt d_hasmntopt
10726 eval $inlibc
10727
10728 : see if this is a netinet/in.h or sys/in.h system
10729 set netinet/in.h i_niin sys/in.h i_sysin
10730 eval $inhdr
10731
10732 : see if arpa/inet.h has to be included
10733 set arpa/inet.h i_arpainet
10734 eval $inhdr
10735
10736 : see if htonl --and friends-- exists
10737 val=''
10738 set htonl val
10739 eval $inlibc
10740
10741 : Maybe they are macros.
10742 case "$val" in
10743 $undef)
10744         $cat >htonl.c <<EOM
10745 #include <stdio.h>
10746 #include <sys/types.h>
10747 #$i_niin I_NETINET_IN
10748 #$i_sysin I_SYS_IN
10749 #$i_arpainet I_ARPA_INET
10750 #ifdef I_NETINET_IN
10751 #include <netinet/in.h>
10752 #endif
10753 #ifdef I_SYS_IN
10754 #include <sys/in.h>
10755 #endif
10756 #ifdef I_ARPA_INET
10757 #include <arpa/inet.h>
10758 #endif
10759 #ifdef htonl
10760 printf("Defined as a macro.");
10761 #endif
10762 EOM
10763         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10764         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10765                 val="$define"
10766                 echo "But it seems to be defined as a macro." >&4
10767         fi
10768         $rm -f htonl.?
10769         ;;
10770 esac
10771 set d_htonl
10772 eval $setvar
10773
10774 : index or strchr
10775 echo " "
10776 if set index val -f; eval $csym; $val; then
10777         if set strchr val -f d_strchr; eval $csym; $val; then
10778                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10779                         val="$define"
10780                         vali="$undef"
10781                         echo "strchr() found." >&4
10782                 else
10783                         val="$undef"
10784                         vali="$define"
10785                         echo "index() found." >&4
10786                 fi
10787         else
10788                 val="$undef"
10789                 vali="$define"
10790                 echo "index() found." >&4
10791         fi
10792 else
10793         if set strchr val -f d_strchr; eval $csym; $val; then
10794                 val="$define"
10795                 vali="$undef"
10796                 echo "strchr() found." >&4
10797         else
10798                 echo "No index() or strchr() found!" >&4
10799                 val="$undef"
10800                 vali="$undef"
10801         fi
10802 fi
10803 set d_strchr; eval $setvar
10804 val="$vali"
10805 set d_index; eval $setvar
10806
10807 : check whether inet_aton exists
10808 set inet_aton d_inetaton
10809 eval $inlibc
10810
10811 : Look for isascii
10812 echo " "
10813 $cat >isascii.c <<'EOCP'
10814 #include <stdio.h>
10815 #include <ctype.h>
10816 int main() {
10817         int c = 'A';
10818         if (isascii(c))
10819                 exit(0);
10820         else
10821                 exit(1);
10822 }
10823 EOCP
10824 set isascii
10825 if eval $compile; then
10826         echo "isascii() found." >&4
10827         val="$define"
10828 else
10829         echo "isascii() NOT found." >&4
10830         val="$undef"
10831 fi
10832 set d_isascii
10833 eval $setvar
10834 $rm -f isascii*
10835
10836 : see if isfinite exists
10837 set isfinite d_isfinite
10838 eval $inlibc
10839
10840 : see if isinf exists
10841 set isinf d_isinf
10842 eval $inlibc
10843
10844 : see if isnan exists
10845 set isnan d_isnan
10846 eval $inlibc
10847
10848 : see if isnanl exists
10849 set isnanl d_isnanl
10850 eval $inlibc
10851
10852 : see if killpg exists
10853 set killpg d_killpg
10854 eval $inlibc
10855
10856 : see if lchown exists
10857 echo " "
10858 $cat > try.c <<'EOCP'
10859 /* System header to define __stub macros and hopefully few prototypes,
10860     which can conflict with char lchown(); below.  */
10861 #include <assert.h>
10862 /* Override any gcc2 internal prototype to avoid an error.  */
10863 /* We use char because int might match the return type of a gcc2
10864    builtin and then its argument prototype would still apply.  */
10865 char lchown();
10866 int main() {
10867     /*  The GNU C library defines this for functions which it implements
10868         to always fail with ENOSYS.  Some functions are actually named
10869         something starting with __ and the normal name is an alias.  */
10870 #if defined (__stub_lchown) || defined (__stub___lchown)
10871 choke me
10872 #else
10873 lchown();
10874 #endif
10875 ; return 0; }
10876 EOCP
10877 set try
10878 if eval $compile; then
10879     $echo "lchown() found." >&4
10880     val="$define"
10881 else
10882     $echo "lchown() NOT found." >&4
10883     val="$undef"
10884 fi
10885 set d_lchown
10886 eval $setvar
10887
10888 : See if number of significant digits in a double precision number is known
10889 echo " "
10890 $cat >ldbl_dig.c <<EOM
10891 #$i_limits I_LIMITS
10892 #$i_float I_FLOAT
10893 #ifdef I_LIMITS
10894 #include <limits.h>
10895 #endif
10896 #ifdef I_FLOAT
10897 #include <float.h>
10898 #endif
10899 #ifdef LDBL_DIG
10900 printf("Contains LDBL_DIG");
10901 #endif
10902 EOM
10903 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10904 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10905         echo "LDBL_DIG found." >&4
10906         val="$define"
10907 else
10908         echo "LDBL_DIG NOT found." >&4
10909         val="$undef"
10910 fi
10911 $rm -f ldbl_dig.?
10912 set d_ldbl_dig
10913 eval $setvar
10914
10915 : see if link exists
10916 set link d_link
10917 eval $inlibc
10918
10919 : see if localeconv exists
10920 set localeconv d_locconv
10921 eval $inlibc
10922
10923 : see if lockf exists
10924 set lockf d_lockf
10925 eval $inlibc
10926
10927 : see if prototype for lseek is available
10928 echo " "
10929 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10930 eval $hasproto
10931
10932 : see if lstat exists
10933 set lstat d_lstat
10934 eval $inlibc
10935
10936 : see if madvise exists
10937 set madvise d_madvise
10938 eval $inlibc
10939
10940 : see if mblen exists
10941 set mblen d_mblen
10942 eval $inlibc
10943
10944 : see if mbstowcs exists
10945 set mbstowcs d_mbstowcs
10946 eval $inlibc
10947
10948 : see if mbtowc exists
10949 set mbtowc d_mbtowc
10950 eval $inlibc
10951
10952 : see if memchr exists
10953 set memchr d_memchr
10954 eval $inlibc
10955
10956 : see if memcmp exists
10957 set memcmp d_memcmp
10958 eval $inlibc
10959
10960 : see if memcpy exists
10961 set memcpy d_memcpy
10962 eval $inlibc
10963
10964 : see if memmove exists
10965 set memmove d_memmove
10966 eval $inlibc
10967
10968 : see if memset exists
10969 set memset d_memset
10970 eval $inlibc
10971
10972 : see if mkdir exists
10973 set mkdir d_mkdir
10974 eval $inlibc
10975
10976 : see if mkdtemp exists
10977 set mkdtemp d_mkdtemp
10978 eval $inlibc
10979
10980 : see if mkfifo exists
10981 set mkfifo d_mkfifo
10982 eval $inlibc
10983
10984 : see if mkstemp exists
10985 set mkstemp d_mkstemp
10986 eval $inlibc
10987
10988 : see if mkstemps exists
10989 set mkstemps d_mkstemps
10990 eval $inlibc
10991
10992 : see if mktime exists
10993 set mktime d_mktime
10994 eval $inlibc
10995
10996 : see if this is a sys/mman.h system
10997 set sys/mman.h i_sysmman
10998 eval $inhdr
10999
11000 : see if mmap exists
11001 set mmap d_mmap
11002 eval $inlibc
11003 : see what shmat returns
11004 : default to something harmless
11005 mmaptype='void *'
11006 case "$i_sysmman$d_mmap" in
11007 "$define$define")
11008         $cat >mmap.c <<'END'
11009 #include <sys/mman.h>
11010 void *mmap();
11011 END
11012         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
11013                 mmaptype='void *'
11014         else
11015                 mmaptype='caddr_t'
11016         fi
11017         echo "and it returns ($mmaptype)." >&4
11018         ;;
11019 esac
11020
11021
11022
11023 : see if modfl exists
11024 set modfl d_modfl
11025 eval $inlibc
11026
11027 d_modfl_pow32_bug="$undef"
11028
11029 case "$d_longdbl$d_modfl" in
11030 $define$define)
11031         $cat <<EOM
11032 Checking to see whether your modfl() is okay for large values...
11033 EOM
11034 $cat >try.c <<EOCP
11035 #include <math.h> 
11036 #include <stdio.h>
11037 int main() {
11038     long double nv = 4294967303.15;
11039     long double v, w;
11040     v = modfl(nv, &w);         
11041 #ifdef __GLIBC__
11042     printf("glibc");
11043 #endif
11044     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
11045     return 0;
11046 }
11047 EOCP
11048         case "$osname:$gccversion" in
11049         aix:)   saveccflags="$ccflags"
11050                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
11051         esac
11052         set try
11053         if eval $compile; then
11054                 foo=`$run ./try`
11055                 case "$foo" in
11056                 *" 4294967303.150000 1.150000 4294967302.000000")
11057                         echo >&4 "Your modfl() is broken for large values."
11058                         d_modfl_pow32_bug="$define"
11059                         case "$foo" in
11060                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
11061                         ;;
11062                         esac
11063                         ;;
11064                 *" 4294967303.150000 0.150000 4294967303.000000")
11065                         echo >&4 "Your modfl() seems okay for large values."
11066                         ;;
11067                 *)      echo >&4 "I don't understand your modfl() at all."
11068                         d_modfl="$undef"
11069                         ;;
11070                 esac
11071                 $rm -f try.* try core core.try.*
11072         else
11073                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
11074                 d_modfl="$undef"
11075         fi
11076         case "$osname:$gccversion" in
11077         aix:)   ccflags="$saveccflags" ;; # restore
11078         esac
11079         ;;
11080 esac
11081
11082 : see if mprotect exists
11083 set mprotect d_mprotect
11084 eval $inlibc
11085
11086 : see if msgctl exists
11087 set msgctl d_msgctl
11088 eval $inlibc
11089
11090 : see if msgget exists
11091 set msgget d_msgget
11092 eval $inlibc
11093
11094 : see if msgsnd exists
11095 set msgsnd d_msgsnd
11096 eval $inlibc
11097
11098 : see if msgrcv exists
11099 set msgrcv d_msgrcv
11100 eval $inlibc
11101
11102 : see how much of the 'msg*(2)' library is present.
11103 h_msg=true
11104 echo " "
11105 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
11106 *"$undef"*) h_msg=false;;
11107 esac
11108 case "$osname" in
11109 freebsd)
11110     case "`ipcs 2>&1`" in
11111     "SVID messages"*"not configured"*)
11112         echo "Your $osname does not have the msg*(2) configured." >&4
11113         h_msg=false
11114         val="$undef"
11115         set msgctl d_msgctl
11116         eval $setvar
11117         set msgget d_msgget
11118         eval $setvar
11119         set msgsnd d_msgsnd
11120         eval $setvar
11121         set msgrcv d_msgrcv
11122         eval $setvar
11123         ;;
11124     esac
11125     ;;
11126 esac
11127 : we could also check for sys/ipc.h ...
11128 if $h_msg && $test `./findhdr sys/msg.h`; then
11129         echo "You have the full msg*(2) library." >&4
11130         val="$define"
11131 else
11132         echo "You don't have the full msg*(2) library." >&4
11133         val="$undef"
11134 fi
11135 set d_msg
11136 eval $setvar
11137
11138
11139 echo " "
11140 echo "Checking to see if your system supports struct msghdr..." >&4
11141 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11142 eval $hasstruct
11143 case "$d_msghdr_s" in
11144 "$define")      echo "Yes, it does."   ;;
11145 *)              echo "No, it doesn't." ;;
11146 esac
11147
11148
11149 : see if msync exists
11150 set msync d_msync
11151 eval $inlibc
11152
11153 : see if munmap exists
11154 set munmap d_munmap
11155 eval $inlibc
11156
11157 : see if nice exists
11158 set nice d_nice
11159 eval $inlibc
11160
11161 : see if this is a langinfo.h system
11162 set langinfo.h i_langinfo
11163 eval $inhdr
11164
11165 : see if nl_langinfo exists
11166 set nl_langinfo d_nl_langinfo
11167 eval $inlibc
11168
11169 : check for length of character
11170 echo " "
11171 case "$charsize" in
11172 '')
11173         echo "Checking to see how big your characters are (hey, you never know)..." >&4
11174         $cat >try.c <<'EOCP'
11175 #include <stdio.h>
11176 int main()
11177 {
11178     printf("%d\n", (int)sizeof(char));
11179     exit(0);
11180 }
11181 EOCP
11182         set try
11183         if eval $compile_ok; then
11184                 dflt=`$run ./try`
11185         else
11186                 dflt='1'
11187                 echo "(I can't seem to compile the test program.  Guessing...)"
11188         fi
11189         ;;
11190 *)
11191         dflt="$charsize"
11192         ;;
11193 esac
11194 rp="What is the size of a character (in bytes)?"
11195 . ./myread
11196 charsize="$ans"
11197 $rm -f try.c try
11198
11199 : check for volatile keyword
11200 echo " "
11201 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11202 $cat >try.c <<'EOCP'
11203 int main()
11204 {
11205         typedef struct _goo_struct goo_struct;
11206         goo_struct * volatile goo = ((goo_struct *)0);
11207         struct _goo_struct {
11208                 long long_int;
11209                 int reg_int;
11210                 char char_var;
11211         };
11212         typedef unsigned short foo_t;
11213         char *volatile foo;
11214         volatile int bar;
11215         volatile foo_t blech;
11216         foo = foo;
11217 }
11218 EOCP
11219 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11220         val="$define"
11221         echo "Yup, it does."
11222 else
11223         val="$undef"
11224         echo "Nope, it doesn't."
11225 fi
11226 set d_volatile
11227 eval $setvar
11228 $rm -f try.*
11229
11230
11231 echo " "
11232 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11233
11234 case "$use64bitint:$d_quad:$quadtype" in
11235 define:define:?*)
11236         ivtype="$quadtype"
11237         uvtype="$uquadtype"
11238         ivsize=8
11239         uvsize=8
11240         ;;
11241 *)      ivtype="long"
11242         uvtype="unsigned long"
11243         ivsize=$longsize
11244         uvsize=$longsize
11245         ;;
11246 esac
11247
11248 case "$uselongdouble:$d_longdbl" in
11249 define:define)
11250         nvtype="long double"
11251         nvsize=$longdblsize
11252         ;;
11253 *)      nvtype=double
11254         nvsize=$doublesize
11255         ;;
11256 esac
11257
11258 $echo "(IV will be "$ivtype", $ivsize bytes)"
11259 $echo "(UV will be "$uvtype", $uvsize bytes)"
11260 $echo "(NV will be "$nvtype", $nvsize bytes)"
11261
11262 $cat >try.c <<EOCP
11263 #$i_inttypes I_INTTYPES
11264 #ifdef I_INTTYPES
11265 #include <inttypes.h>
11266 #endif
11267 #include <stdio.h>
11268 int main() {
11269 #ifdef INT8
11270    int8_t i =  INT8_MAX;
11271   uint8_t u = UINT8_MAX;
11272   printf("int8_t\n");
11273 #endif
11274 #ifdef INT16
11275    int16_t i =  INT16_MAX;
11276   uint16_t i = UINT16_MAX;
11277   printf("int16_t\n");
11278 #endif
11279 #ifdef INT32
11280    int32_t i =  INT32_MAX;
11281   uint32_t u = UINT32_MAX;
11282   printf("int32_t\n");
11283 #endif
11284 }
11285 EOCP
11286
11287 case "$i8type" in
11288 '')     case "$charsize" in
11289         1)      i8type=char
11290                 u8type="unsigned char"
11291                 i8size=$charsize
11292                 u8size=$charsize
11293                 ;;
11294         esac
11295         ;;
11296 esac
11297 case "$i8type" in
11298 '')     set try -DINT8
11299         if eval $compile; then
11300                 case "`$run ./try`" in
11301                 int8_t) i8type=int8_t
11302                         u8type=uint8_t
11303                         i8size=1
11304                         u8size=1
11305                         ;;
11306                 esac
11307         fi
11308         ;;
11309 esac
11310 case "$i8type" in
11311 '')     if $test $charsize -ge 1; then
11312                 i8type=char
11313                 u8type="unsigned char"
11314                 i8size=$charsize
11315                 u8size=$charsize
11316         fi
11317         ;;
11318 esac
11319
11320 case "$i16type" in
11321 '')     case "$shortsize" in
11322         2)      i16type=short
11323                 u16type="unsigned short"
11324                 i16size=$shortsize
11325                 u16size=$shortsize
11326                 ;;
11327         esac
11328         ;;
11329 esac
11330 case "$i16type" in
11331 '')     set try -DINT16
11332         if eval $compile; then
11333                 case "`$run ./try`" in
11334                 int16_t)
11335                         i16type=int16_t
11336                         u16type=uint16_t
11337                         i16size=2
11338                         u16size=2
11339                         ;;
11340                 esac
11341         fi
11342         ;;
11343 esac
11344 case "$i16type" in
11345 '')     if $test $shortsize -ge 2; then
11346                 i16type=short
11347                 u16type="unsigned short"
11348                 i16size=$shortsize
11349                 u16size=$shortsize
11350         fi
11351         ;;
11352 esac
11353
11354 case "$i32type" in
11355 '')     case "$longsize" in
11356         4)      i32type=long
11357                 u32type="unsigned long"
11358                 i32size=$longsize
11359                 u32size=$longsize
11360                 ;;
11361         *)      case "$intsize" in
11362                 4)      i32type=int
11363                         u32type="unsigned int"
11364                         i32size=$intsize
11365                         u32size=$intsize
11366                         ;;
11367                 esac
11368                 ;;
11369         esac
11370         ;;
11371 esac
11372 case "$i32type" in
11373 '')     set try -DINT32
11374         if eval $compile; then
11375                 case "`$run ./try`" in
11376                 int32_t)
11377                         i32type=int32_t
11378                         u32type=uint32_t
11379                         i32size=4
11380                         u32size=4
11381                         ;;
11382                 esac
11383         fi
11384         ;;
11385 esac
11386 case "$i32type" in
11387 '')     if $test $intsize -ge 4; then
11388                 i32type=int
11389                 u32type="unsigned int"
11390                 i32size=$intsize
11391                 u32size=$intsize
11392         fi
11393         ;;
11394 esac
11395
11396 case "$i64type" in
11397 '')     case "$d_quad:$quadtype" in
11398         define:?*)
11399                 i64type="$quadtype"
11400                 u64type="$uquadtype"
11401                 i64size=8
11402                 u64size=8
11403                 ;;
11404         esac
11405         ;;
11406 esac
11407
11408 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11409 : volatile so that the compiler has to store it out to memory.
11410 if test X"$d_volatile" = X"$define"; then
11411         volatile=volatile
11412 fi
11413 $cat <<EOP >try.c
11414 #include <stdio.h>
11415 #include <sys/types.h>
11416 #include <signal.h>
11417 #ifdef SIGFPE
11418 $volatile int bletched = 0;
11419 $signal_t blech(s) int s; { bletched = 1; }
11420 #endif
11421 int main() {
11422     $uvtype u = 0;
11423     $nvtype d;
11424     int     n = 8 * $uvsize;
11425     int     i;
11426 #ifdef SIGFPE
11427     signal(SIGFPE, blech);
11428 #endif
11429
11430     for (i = 0; i < n; i++) {
11431       u = u << 1 | ($uvtype)1;
11432       d = ($nvtype)u;
11433       if (($uvtype)d != u)
11434         break;
11435       if (d <= 0)
11436         break;
11437       d = ($nvtype)(u - 1);
11438       if (($uvtype)d != (u - 1))
11439         break;
11440 #ifdef SIGFPE
11441       if (bletched) {
11442         break;
11443 #endif
11444       } 
11445     }
11446     printf("%d\n", ((i == n) ? -n : i));
11447     exit(0);
11448 }
11449 EOP
11450 set try
11451
11452 d_nv_preserves_uv="$undef"
11453 if eval $compile; then
11454         d_nv_preserves_uv_bits="`$run ./try`"
11455 fi
11456 case "$d_nv_preserves_uv_bits" in
11457 \-[1-9]*)       
11458         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11459         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11460         d_nv_preserves_uv="$define"
11461         ;;
11462 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11463         d_nv_preserves_uv="$undef" ;;
11464 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11465         d_nv_preserves_uv_bits="$undef" ;;
11466 esac
11467
11468 $rm -f try.* try
11469
11470
11471 : check for off64_t
11472 echo " "
11473 echo "Checking to see if you have off64_t..." >&4
11474 $cat >try.c <<EOCP
11475 #include <sys/types.h>
11476 #include <unistd.h>
11477 int main() { off64_t x = 7; }
11478 EOCP
11479 set try
11480 if eval $compile; then
11481         val="$define"
11482         echo "You have off64_t."
11483 else
11484         val="$undef"
11485         echo "You do not have off64_t."
11486         case "$lseeksize" in
11487         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11488         esac
11489 fi
11490 $rm -f try.* try
11491 set d_off64_t
11492 eval $setvar
11493
11494 : see if POSIX threads are available
11495 set pthread.h i_pthread
11496 eval $inhdr
11497
11498
11499
11500
11501 : how to create joinable pthreads
11502 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11503         echo " "
11504         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11505         $cat >try.c <<'EOCP'
11506 #include <pthread.h>
11507 int main() {
11508     int detachstate = JOINABLE;
11509 }
11510 EOCP
11511         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11512         if eval $compile; then
11513                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11514                 val="$undef" # Yes, undef.
11515                 set d_old_pthread_create_joinable
11516                 eval $setvar
11517                 val=""
11518                 set old_pthread_create_joinable
11519                 eval $setvar
11520         else
11521                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11522                 if eval $compile; then
11523                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11524                         val="$define"
11525                         set d_old_pthread_create_joinable
11526                         eval $setvar
11527                         val=PTHREAD_CREATE_UNDETACHED
11528                         set old_pthread_create_joinable
11529                         eval $setvar
11530                 else            
11531                         set try -DJOINABLE=__UNDETACHED
11532                         if eval $compile; then
11533                                 echo "You seem to use __UNDETACHED." >&4
11534                                 val="$define"
11535                                 set d_old_pthread_create_joinable
11536                                 eval $setvar
11537                                 val=__UNDETACHED
11538                                 set old_pthread_create_joinable
11539                                 eval $setvar
11540                         else
11541                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11542                                 val="$define"
11543                                 set d_old_pthread_create_joinable
11544                                 eval $setvar
11545                                 val=0
11546                                 set old_pthread_create_joinable
11547                                 eval $setvar
11548                         fi
11549                 fi
11550         fi
11551         $rm -f try try.*
11552 else
11553     d_old_pthread_create_joinable="$undef"
11554     old_pthread_create_joinable=""
11555 fi
11556
11557 : see if pause exists
11558 set pause d_pause
11559 eval $inlibc
11560
11561 : see if pipe exists
11562 set pipe d_pipe
11563 eval $inlibc
11564
11565 : see if poll exists
11566 set poll d_poll
11567 eval $inlibc
11568
11569 : see if readlink exists
11570 set readlink d_readlink
11571 eval $inlibc
11572
11573 echo " "
11574 procselfexe=''
11575 val="$undef"
11576 case "$d_readlink" in
11577 "$define")
11578         if $issymlink /proc/self/exe ; then
11579                 $ls -l /proc/self/exe > reflect
11580                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
11581                         echo "You have Linux-like /proc/self/exe."
11582                         procselfexe='"/proc/self/exe"'
11583                         val="$define"
11584                 fi
11585         fi
11586         if $issymlink /proc/curproc/file ; then
11587                 $ls -l /proc/curproc/file > reflect
11588                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
11589                         echo "You have BSD-like /proc/curproc/file."
11590                         procselfexe='"/proc/curproc/file"'
11591                         val="$define"
11592                 fi
11593         fi
11594         ;;
11595 esac
11596 $rm -f reflect
11597 set d_procselfexe
11598 eval $setvar
11599
11600 : see if pthread_atfork exists
11601 set pthread_atfork d_pthread_atfork
11602 eval $inlibc
11603
11604
11605 : see whether the various POSIXish _yields exist
11606 $cat >try.c <<EOP
11607 #include <pthread.h>
11608 #include <stdio.h>
11609 int main() {
11610 #ifdef SCHED_YIELD
11611         sched_yield();
11612 #else
11613 #ifdef PTHREAD_YIELD
11614         pthread_yield();
11615 #else
11616 #ifdef PTHREAD_YIELD_NULL
11617         pthread_yield(NULL);
11618 #endif
11619 #endif
11620 #endif
11621 }
11622 EOP
11623 : see if sched_yield exists
11624 set try -DSCHED_YIELD
11625 if eval $compile; then
11626     val="$define"
11627     sched_yield='sched_yield()'
11628 else
11629     val="$undef"
11630 fi
11631 case "$usethreads" in
11632 $define)
11633         case "$val" in
11634         $define) echo 'sched_yield() found.' >&4        ;;
11635         *)       echo 'sched_yield() NOT found.' >&4    ;;
11636         esac
11637 esac
11638 set d_sched_yield
11639 eval $setvar
11640
11641 : see if pthread_yield exists
11642 set try -DPTHREAD_YIELD
11643 if eval $compile; then
11644     val="$define"
11645     case "$sched_yield" in
11646     '') sched_yield='pthread_yield()' ;;
11647     esac
11648 else
11649     set try -DPTHREAD_YIELD_NULL
11650     if eval $compile; then
11651         val="$define"
11652         case "$sched_yield" in
11653         '') sched_yield='pthread_yield(NULL)' ;;
11654         esac
11655     else
11656         val="$undef"
11657     fi
11658 fi
11659 case "$usethreads" in
11660 $define)
11661         case "$val" in
11662         $define) echo 'pthread_yield() found.' >&4      ;;
11663         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11664         esac
11665         ;;
11666 esac
11667 set d_pthread_yield
11668 eval $setvar
11669
11670 case "$sched_yield" in
11671 '') sched_yield=undef ;;
11672 esac
11673
11674 $rm -f try try.*
11675
11676 : see if this is a pwd.h system
11677 set pwd.h i_pwd
11678 eval $inhdr
11679
11680 case "$i_pwd" in
11681 $define)
11682         xxx=`./findhdr pwd.h`
11683         $cppstdin $cppflags $cppminus < $xxx >$$.h
11684
11685         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11686                 val="$define"
11687         else
11688                 val="$undef"
11689         fi
11690         set d_pwquota
11691         eval $setvar
11692
11693         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11694                 val="$define"
11695         else
11696                 val="$undef"
11697         fi
11698         set d_pwage
11699         eval $setvar
11700
11701         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11702                 val="$define"
11703         else
11704                 val="$undef"
11705         fi
11706         set d_pwchange
11707         eval $setvar
11708
11709         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11710                 val="$define"
11711         else
11712                 val="$undef"
11713         fi
11714         set d_pwclass
11715         eval $setvar
11716
11717         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11718                 val="$define"
11719         else
11720                 val="$undef"
11721         fi
11722         set d_pwexpire
11723         eval $setvar
11724
11725         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11726                 val="$define"
11727         else
11728                 val="$undef"
11729         fi
11730         set d_pwcomment
11731         eval $setvar
11732
11733         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11734                 val="$define"
11735         else
11736                 val="$undef"
11737         fi
11738         set d_pwgecos
11739         eval $setvar
11740
11741         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11742                 val="$define"
11743         else
11744                 val="$undef"
11745         fi
11746         set d_pwpasswd
11747         eval $setvar
11748
11749         $rm -f $$.h
11750         ;;
11751 *)
11752         val="$undef"; 
11753         set d_pwquota; eval $setvar
11754         set d_pwage; eval $setvar
11755         set d_pwchange; eval $setvar
11756         set d_pwclass; eval $setvar
11757         set d_pwexpire; eval $setvar
11758         set d_pwcomment; eval $setvar
11759         set d_pwgecos; eval $setvar
11760         set d_pwpasswd; eval $setvar
11761         ;;
11762 esac
11763
11764 : see if readdir and friends exist
11765 set readdir d_readdir
11766 eval $inlibc
11767 set seekdir d_seekdir
11768 eval $inlibc
11769 set telldir d_telldir
11770 eval $inlibc
11771 set rewinddir d_rewinddir
11772 eval $inlibc
11773
11774 : see if readv exists
11775 set readv d_readv
11776 eval $inlibc
11777
11778 : see if recvmsg exists
11779 set recvmsg d_recvmsg
11780 eval $inlibc
11781
11782 : see if rename exists
11783 set rename d_rename
11784 eval $inlibc
11785
11786 : see if rmdir exists
11787 set rmdir d_rmdir
11788 eval $inlibc
11789
11790 : see if memory.h is available.
11791 val=''
11792 set memory.h val
11793 eval $inhdr
11794
11795 : See if it conflicts with string.h
11796 case "$val" in
11797 $define)
11798         case "$strings" in
11799         '') ;;
11800         *)
11801                 $cppstdin $cppflags $cppminus < $strings > mem.h
11802                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11803                         echo " "
11804                         echo "We won't be including <memory.h>."
11805                         val="$undef"
11806                 fi
11807                 $rm -f mem.h
11808                 ;;
11809         esac
11810 esac
11811 set i_memory
11812 eval $setvar
11813
11814 : can bcopy handle overlapping blocks?
11815 echo " "
11816 val="$undef"
11817 case "$d_memmove" in
11818 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11819 *)      case "$d_bcopy" in
11820         "$define")
11821                 echo "Checking to see if bcopy() can do overlapping copies..." >&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 buf[128], abc[128];
11847 char *b;
11848 int len;
11849 int off;
11850 int align;
11851
11852 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11853    try to store the string in read-only memory. */
11854 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11855
11856 for (align = 7; align >= 0; align--) {
11857         for (len = 36; len; len--) {
11858                 b = buf+align;
11859                 bcopy(abc, b, len);
11860                 for (off = 1; off <= len; off++) {
11861                         bcopy(b, b+off, len);
11862                         bcopy(b+off, b, len);
11863                         if (bcmp(b, abc, len))
11864                                 exit(1);
11865                 }
11866         }
11867 }
11868 exit(0);
11869 }
11870 EOCP
11871                 set try
11872                 if eval $compile_ok; then
11873                         if ./try 2>/dev/null; then
11874                                 echo "Yes, it can."
11875                                 val="$define"
11876                         else
11877                                 echo "It can't, sorry."
11878                         fi
11879                 else
11880                         echo "(I can't compile the test program, so we'll assume not...)"
11881                 fi
11882                 ;;
11883         esac
11884         $rm -f try.* try core
11885         ;;
11886 esac
11887 set d_safebcpy
11888 eval $setvar
11889
11890 : can memcpy handle overlapping blocks?
11891 echo " "
11892 val="$undef"
11893 case "$d_memmove" in
11894 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11895 *)      case "$d_memcpy" in
11896         "$define")
11897                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11898                 $cat >try.c <<EOCP
11899 #$i_memory I_MEMORY
11900 #$i_stdlib I_STDLIB
11901 #$i_string I_STRING
11902 #$i_unistd I_UNISTD
11903 EOCP
11904         $cat >>try.c <<'EOCP'
11905 #include <stdio.h>
11906 #ifdef I_MEMORY
11907 #  include <memory.h>
11908 #endif
11909 #ifdef I_STDLIB
11910 #  include <stdlib.h>
11911 #endif
11912 #ifdef I_STRING
11913 #  include <string.h>
11914 #else
11915 #  include <strings.h>
11916 #endif
11917 #ifdef I_UNISTD
11918 #  include <unistd.h>  /* Needed for NetBSD */
11919 #endif
11920 int main()
11921 {
11922 char buf[128], abc[128];
11923 char *b;
11924 int len;
11925 int off;
11926 int align;
11927
11928 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11929    try to store the string in read-only memory. */
11930 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11931
11932 for (align = 7; align >= 0; align--) {
11933         for (len = 36; len; len--) {
11934                 b = buf+align;
11935                 memcpy(b, abc, len);
11936                 for (off = 1; off <= len; off++) {
11937                         memcpy(b+off, b, len);
11938                         memcpy(b, b+off, len);
11939                         if (memcmp(b, abc, len))
11940                                 exit(1);
11941                 }
11942         }
11943 }
11944 exit(0);
11945 }
11946 EOCP
11947                 set try
11948                 if eval $compile_ok; then
11949                         if ./try 2>/dev/null; then
11950                                 echo "Yes, it can."
11951                                 val="$define"
11952                         else
11953                                 echo "It can't, sorry."
11954                         fi
11955                 else
11956                         echo "(I can't compile the test program, so we'll assume not...)"
11957                 fi
11958                 ;;
11959         esac
11960         $rm -f try.* try core
11961         ;;
11962 esac
11963 set d_safemcpy
11964 eval $setvar
11965
11966 : can memcmp be trusted to compare relative magnitude?
11967 val="$undef"
11968 case "$d_memcmp" in
11969 "$define")
11970         echo " "
11971         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11972         $cat >try.c <<EOCP
11973 #$i_memory I_MEMORY
11974 #$i_stdlib I_STDLIB
11975 #$i_string I_STRING
11976 #$i_unistd I_UNISTD
11977 EOCP
11978         $cat >>try.c <<'EOCP'
11979 #include <stdio.h>
11980 #ifdef I_MEMORY
11981 #  include <memory.h>
11982 #endif
11983 #ifdef I_STDLIB
11984 #  include <stdlib.h>
11985 #endif
11986 #ifdef I_STRING
11987 #  include <string.h>
11988 #else
11989 #  include <strings.h>
11990 #endif
11991 #ifdef I_UNISTD
11992 #  include <unistd.h>  /* Needed for NetBSD */
11993 #endif
11994 int main()
11995 {
11996 char a = -1;
11997 char b = 0;
11998 if ((a < b) && memcmp(&a, &b, 1) < 0)
11999         exit(1);
12000 exit(0);
12001 }
12002 EOCP
12003         set try
12004         if eval $compile_ok; then
12005                 if $run ./try 2>/dev/null; then
12006                         echo "Yes, it can."
12007                         val="$define"
12008                 else
12009                         echo "No, it can't (it uses signed chars)."
12010                 fi
12011         else
12012                 echo "(I can't compile the test program, so we'll assume not...)"
12013         fi
12014         ;;
12015 esac
12016 $rm -f try.* try core
12017 set d_sanemcmp
12018 eval $setvar
12019
12020 : see if prototype for sbrk is available
12021 echo " "
12022 set d_sbrkproto sbrk $i_unistd unistd.h
12023 eval $hasproto
12024
12025 : see if select exists
12026 set select d_select
12027 eval $inlibc
12028
12029 : see if semctl exists
12030 set semctl d_semctl
12031 eval $inlibc
12032
12033 : see if semget exists
12034 set semget d_semget
12035 eval $inlibc
12036
12037 : see if semop exists
12038 set semop d_semop
12039 eval $inlibc
12040
12041 : see how much of the 'sem*(2)' library is present.
12042 h_sem=true
12043 echo " "
12044 case "$d_semctl$d_semget$d_semop" in
12045 *"$undef"*) h_sem=false;;
12046 esac
12047 case "$osname" in
12048 freebsd)
12049     case "`ipcs 2>&1`" in
12050     "SVID messages"*"not configured"*)
12051         echo "Your $osname does not have the sem*(2) configured." >&4
12052         h_sem=false
12053         val="$undef"
12054         set semctl d_semctl
12055         eval $setvar
12056         set semget d_semget
12057         eval $setvar
12058         set semop d_semop
12059         eval $setvar
12060         ;;
12061     esac
12062     ;;
12063 esac
12064 : we could also check for sys/ipc.h ...
12065 if $h_sem && $test `./findhdr sys/sem.h`; then
12066         echo "You have the full sem*(2) library." >&4
12067         val="$define"
12068 else
12069         echo "You don't have the full sem*(2) library." >&4
12070         val="$undef"
12071 fi
12072 set d_sem
12073 eval $setvar
12074
12075 : see whether sys/sem.h defines union semun
12076 echo " "
12077 $cat > try.c <<'END'
12078 #include <sys/types.h>
12079 #include <sys/ipc.h>
12080 #include <sys/sem.h>
12081 int main () { union semun semun; semun.buf = 0; }
12082 END
12083 set try
12084 if eval $compile; then
12085     echo "You have union semun in <sys/sem.h>." >&4
12086     val="$define"
12087 else
12088     echo "You do not have union semun in <sys/sem.h>." >&4
12089     val="$undef"
12090 fi
12091 $rm -f try try.c try.h
12092 set d_union_semun
12093 eval $setvar
12094
12095 : see how to do semctl IPC_STAT
12096 case "$d_sem" in
12097 $define)
12098     : see whether semctl IPC_STAT can use union semun
12099     echo " "
12100     $cat > try.h <<END
12101 #ifndef S_IRUSR
12102 #   ifdef S_IREAD
12103 #       define S_IRUSR S_IREAD
12104 #       define S_IWUSR S_IWRITE
12105 #       define S_IXUSR S_IEXEC
12106 #   else
12107 #       define S_IRUSR 0400
12108 #       define S_IWUSR 0200
12109 #       define S_IXUSR 0100
12110 #   endif
12111 #   define S_IRGRP (S_IRUSR>>3)
12112 #   define S_IWGRP (S_IWUSR>>3)
12113 #   define S_IXGRP (S_IXUSR>>3)
12114 #   define S_IROTH (S_IRUSR>>6)
12115 #   define S_IWOTH (S_IWUSR>>6)
12116 #   define S_IXOTH (S_IXUSR>>6)
12117 #endif
12118 #ifndef S_IRWXU
12119 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
12120 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
12121 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
12122 #endif
12123 END
12124
12125     $cat > try.c <<END
12126 #include <sys/types.h>
12127 #include <sys/ipc.h>
12128 #include <sys/sem.h>
12129 #include <sys/stat.h>
12130 #include <stdio.h>
12131 #include <errno.h>
12132 #include "try.h"
12133 #ifndef errno
12134 extern int errno;
12135 #endif
12136 #$d_union_semun HAS_UNION_SEMUN
12137 int main() {
12138     union semun
12139 #ifndef HAS_UNION_SEMUN
12140     {
12141         int val;
12142         struct semid_ds *buf;
12143         unsigned short *array;
12144     }
12145 #endif
12146     arg;
12147     int sem, st;
12148
12149 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12150     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12151     if (sem > -1) {
12152         struct semid_ds argbuf;
12153         arg.buf = &argbuf;
12154 #       ifdef IPC_STAT
12155         st = semctl(sem, 0, IPC_STAT, arg);
12156         if (st == 0)
12157             printf("semun\n");
12158         else
12159 #       endif /* IPC_STAT */
12160             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12161 #       ifdef IPC_RMID
12162         if (semctl(sem, 0, IPC_RMID, arg) != 0)
12163 #       endif /* IPC_RMID */
12164             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12165     } else
12166 #endif /* IPC_PRIVATE && ... */
12167         printf("semget failed: errno = %d\n", errno);
12168   return 0;
12169 }
12170 END
12171     val="$undef"
12172     set try
12173     if eval $compile; then
12174         xxx=`$run ./try`
12175         case "$xxx" in
12176         semun) val="$define" ;;
12177         esac
12178     fi
12179     $rm -f try try.c
12180     set d_semctl_semun
12181     eval $setvar
12182     case "$d_semctl_semun" in
12183     $define)
12184         echo "You can use union semun for semctl IPC_STAT." >&4
12185         also='also'
12186         ;;
12187     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
12188         also=''
12189         ;;
12190     esac
12191
12192     : see whether semctl IPC_STAT can use struct semid_ds pointer
12193     $cat > try.c <<'END'
12194 #include <sys/types.h>
12195 #include <sys/ipc.h>
12196 #include <sys/sem.h>
12197 #include <sys/stat.h>
12198 #include "try.h"
12199 #include <stdio.h>
12200 #include <errno.h>
12201 #ifndef errno
12202 extern int errno;
12203 #endif
12204 int main() {
12205     struct semid_ds arg;
12206     int sem, st;
12207
12208 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
12209     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12210     if (sem > -1) {
12211 #       ifdef IPC_STAT
12212         st = semctl(sem, 0, IPC_STAT, &arg);
12213         if (st == 0)
12214             printf("semid_ds\n");
12215         else
12216 #       endif /* IPC_STAT */
12217             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12218 #       ifdef IPC_RMID
12219         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12220 #       endif /* IPC_RMID */
12221             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12222     } else
12223 #endif /* IPC_PRIVATE && ... */
12224         printf("semget failed: errno = %d\n", errno);
12225
12226     return 0;
12227 }
12228 END
12229     val="$undef"
12230     set try
12231     if eval $compile; then
12232         xxx=`$run ./try`
12233         case "$xxx" in
12234         semid_ds) val="$define" ;;
12235         esac
12236     fi
12237     $rm -f try try.c
12238     set d_semctl_semid_ds
12239     eval $setvar
12240     case "$d_semctl_semid_ds" in
12241     $define)
12242         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12243         ;;
12244     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12245         ;;
12246     esac
12247     $rm -f try.h
12248     ;;
12249 *)  val="$undef"
12250
12251     # We do not have the full sem*(2) library, so assume we can not
12252     # use either.
12253
12254     set d_semctl_semun
12255     eval $setvar
12256
12257     set d_semctl_semid_ds
12258     eval $setvar
12259     ;;
12260 esac
12261
12262 : see if sendmsg exists
12263 set sendmsg d_sendmsg
12264 eval $inlibc
12265
12266 : see if setegid exists
12267 set setegid d_setegid
12268 eval $inlibc
12269
12270 : see if seteuid exists
12271 set seteuid d_seteuid
12272 eval $inlibc
12273
12274 : see if setgrent exists
12275 set setgrent d_setgrent
12276 eval $inlibc
12277
12278 : see if sethostent exists
12279 set sethostent d_sethent
12280 eval $inlibc
12281
12282 : see if setitimer exists
12283 set setitimer d_setitimer
12284 eval $inlibc
12285
12286 : see if setlinebuf exists
12287 set setlinebuf d_setlinebuf
12288 eval $inlibc
12289
12290 : see if setlocale exists
12291 set setlocale d_setlocale
12292 eval $inlibc
12293
12294 : see if setnetent exists
12295 set setnetent d_setnent
12296 eval $inlibc
12297
12298 : see if setprotoent exists
12299 set setprotoent d_setpent
12300 eval $inlibc
12301
12302 : see if setpgid exists
12303 set setpgid d_setpgid
12304 eval $inlibc
12305
12306 : see if setpgrp2 exists
12307 set setpgrp2 d_setpgrp2
12308 eval $inlibc
12309
12310 : see if setpriority exists
12311 set setpriority d_setprior
12312 eval $inlibc
12313
12314 : see if setproctitle exists
12315 set setproctitle d_setproctitle
12316 eval $inlibc
12317
12318 : see if setpwent exists
12319 set setpwent d_setpwent
12320 eval $inlibc
12321
12322 : see if setregid exists
12323 set setregid d_setregid
12324 eval $inlibc
12325 set setresgid d_setresgid
12326 eval $inlibc
12327
12328 : see if setreuid exists
12329 set setreuid d_setreuid
12330 eval $inlibc
12331 set setresuid d_setresuid
12332 eval $inlibc
12333
12334 : see if setrgid exists
12335 set setrgid d_setrgid
12336 eval $inlibc
12337
12338 : see if setruid exists
12339 set setruid d_setruid
12340 eval $inlibc
12341
12342 : see if setservent exists
12343 set setservent d_setsent
12344 eval $inlibc
12345
12346 : see if setsid exists
12347 set setsid d_setsid
12348 eval $inlibc
12349
12350 : see if setvbuf exists
12351 set setvbuf d_setvbuf
12352 eval $inlibc
12353
12354 : see if sfio.h is available
12355 set sfio.h i_sfio
12356 eval $inhdr
12357
12358
12359 : see if sfio library is available
12360 case "$i_sfio" in
12361 $define)
12362         val=''
12363         set sfreserve val
12364         eval $inlibc
12365         ;;
12366 *)
12367         val="$undef"
12368         ;;
12369 esac
12370 : Ok, but do we want to use it.
12371 case "$val" in
12372 $define)
12373         case "$usesfio" in
12374         true|$define|[yY]*) dflt='y';;
12375         *) dflt='n';;
12376         esac
12377         echo "$package can use the sfio library, but it is experimental."
12378         case "$useperlio" in
12379         "$undef")
12380             echo "For sfio also the PerlIO abstraction layer is needed."
12381             echo "Earlier you said you wouldn't want that."
12382             ;;
12383         esac
12384         rp="You seem to have sfio available, do you want to try using it?"
12385         . ./myread
12386         case "$ans" in
12387         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12388                 useperlio="$define"
12389                 val="$define"
12390                 ;;
12391         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12392                 val="$undef"
12393                 ;;
12394         esac
12395         ;;
12396 *)      case "$usesfio" in
12397         true|$define|[yY]*)
12398                 echo "Sorry, cannot find sfio on this machine." >&4
12399                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12400                 val="$undef"
12401                 ;;
12402         esac
12403         ;;
12404 esac
12405 set d_sfio
12406 eval $setvar
12407 case "$d_sfio" in
12408 $define) usesfio='true';;
12409 *) usesfio='false';;
12410 esac
12411 case "$d_sfio" in
12412 $define) ;;
12413 *)      : Remove sfio from list of libraries to use
12414         case "$libs" in
12415         *-lsfio*)
12416                 echo "Removing unneeded -lsfio from library list" >&4
12417                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12418                 shift
12419                 libs="$*"
12420                 echo "libs = $libs" >&4
12421                 ;;
12422         esac
12423 ;;
12424 esac
12425
12426
12427 : see if shmctl exists
12428 set shmctl d_shmctl
12429 eval $inlibc
12430
12431 : see if shmget exists
12432 set shmget d_shmget
12433 eval $inlibc
12434
12435 : see if shmat exists
12436 set shmat d_shmat
12437 eval $inlibc
12438 : see what shmat returns
12439 case "$d_shmat" in
12440 "$define")
12441         $cat >shmat.c <<'END'
12442 #include <sys/shm.h>
12443 void *shmat();
12444 END
12445         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12446                 shmattype='void *'
12447         else
12448                 shmattype='char *'
12449         fi
12450         echo "and it returns ($shmattype)." >&4
12451         : see if a prototype for shmat is available
12452         xxx=`./findhdr sys/shm.h`
12453         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12454         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12455                 val="$define"
12456         else
12457                 val="$undef"
12458         fi
12459         $rm -f shmat.[co]
12460         ;;
12461 *)
12462         val="$undef"
12463         ;;
12464 esac
12465 set d_shmatprototype
12466 eval $setvar
12467
12468 : see if shmdt exists
12469 set shmdt d_shmdt
12470 eval $inlibc
12471
12472 : see how much of the 'shm*(2)' library is present.
12473 h_shm=true
12474 echo " "
12475 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12476 *"$undef"*) h_shm=false;;
12477 esac
12478 case "$osname" in
12479 freebsd)
12480     case "`ipcs 2>&1`" in
12481     "SVID shared memory"*"not configured"*)
12482         echo "Your $osname does not have the shm*(2) configured." >&4
12483         h_shm=false
12484         val="$undef"
12485         set shmctl d_shmctl
12486         evat $setvar
12487         set shmget d_shmget
12488         evat $setvar
12489         set shmat d_shmat
12490         evat $setvar
12491         set shmdt d_shmdt
12492         evat $setvar
12493         ;;
12494     esac
12495     ;;
12496 esac
12497 : we could also check for sys/ipc.h ...
12498 if $h_shm && $test `./findhdr sys/shm.h`; then
12499         echo "You have the full shm*(2) library." >&4
12500         val="$define"
12501 else
12502         echo "You don't have the full shm*(2) library." >&4
12503         val="$undef"
12504 fi
12505 set d_shm
12506 eval $setvar
12507
12508 echo " "
12509 : see if we have sigaction
12510 if set sigaction val -f d_sigaction; eval $csym; $val; then
12511         echo 'sigaction() found.' >&4
12512         $cat > try.c <<'EOP'
12513 #include <stdio.h>
12514 #include <sys/types.h>
12515 #include <signal.h>
12516 int main()
12517 {
12518     struct sigaction act, oact;
12519     act.sa_flags = 0;
12520     oact.sa_handler = 0;
12521     /* so that act and oact are used */
12522     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12523 }
12524 EOP
12525         set try
12526         if eval $compile_ok; then
12527                 val="$define"
12528         else
12529                 echo "But you don't seem to have a useable struct sigaction." >&4
12530                 val="$undef"
12531         fi
12532 else
12533         echo 'sigaction NOT found.' >&4
12534         val="$undef"
12535 fi
12536 set d_sigaction; eval $setvar
12537 $rm -f try try$_o try.c
12538
12539 : see if sigprocmask exists
12540 set sigprocmask d_sigprocmask
12541 eval $inlibc
12542
12543 : see if sigsetjmp exists
12544 echo " "
12545 case "$d_sigsetjmp" in
12546 '')
12547         $cat >try.c <<'EOP'
12548 #include <setjmp.h>
12549 sigjmp_buf env;
12550 int set = 1;
12551 int main()
12552 {
12553         if (sigsetjmp(env,1))
12554                 exit(set);
12555         set = 0;
12556         siglongjmp(env, 1);
12557         exit(1);
12558 }
12559 EOP
12560         set try
12561         if eval $compile; then
12562                 if $run ./try >/dev/null 2>&1; then
12563                         echo "POSIX sigsetjmp found." >&4
12564                         val="$define"
12565                 else
12566                         $cat >&4 <<EOM
12567 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12568 I'll ignore them.
12569 EOM
12570                         val="$undef"
12571                 fi
12572         else
12573                 echo "sigsetjmp not found." >&4
12574                 val="$undef"
12575         fi
12576         ;;
12577 *) val="$d_sigsetjmp"
12578         case "$d_sigsetjmp" in
12579         $define) echo "POSIX sigsetjmp found." >&4;;
12580         $undef) echo "sigsetjmp not found." >&4;;
12581         esac
12582         ;;
12583 esac
12584 set d_sigsetjmp
12585 eval $setvar
12586 $rm -f try.c try
12587
12588 : see if sockatmark exists
12589 set sockatmark d_sockatmark
12590 eval $inlibc
12591
12592 : see if prototype for sockatmark is available
12593 echo " "
12594 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12595 eval $hasproto
12596
12597 : see if socks5_init exists
12598 set socks5_init d_socks5_init
12599 eval $inlibc
12600
12601 : see if prototype for setresgid is available
12602 echo " "
12603 set d_sresgproto setresgid $i_unistd unistd.h
12604 eval $hasproto
12605
12606 : see if prototype for setresuid is available
12607 echo " "
12608 set d_sresuproto setresuid $i_unistd unistd.h
12609 eval $hasproto
12610
12611 : see if sys/stat.h is available
12612 set sys/stat.h i_sysstat
12613 eval $inhdr
12614
12615
12616 : see if stat knows about block sizes
12617 echo " "
12618 echo "Checking to see if your struct stat has st_blocks field..." >&4
12619 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12620 eval $hasfield
12621
12622
12623 : see if this is a sys/vfs.h system
12624 set sys/vfs.h i_sysvfs
12625 eval $inhdr
12626
12627
12628 : see if this is a sys/statfs.h system
12629 set sys/statfs.h i_sysstatfs
12630 eval $inhdr
12631
12632
12633 echo " "
12634 echo "Checking to see if your system supports struct statfs..." >&4
12635 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
12636 eval $hasstruct
12637 case "$d_statfs_s" in
12638 "$define")      echo "Yes, it does."   ;;
12639 *)              echo "No, it doesn't." ;;
12640 esac
12641
12642
12643
12644 : see if struct statfs knows about f_flags
12645 case "$d_statfs_s" in
12646 define) 
12647         echo " "
12648         echo "Checking to see if your struct statfs has f_flags field..." >&4
12649         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
12650         eval $hasfield
12651         ;;
12652 *)      val="$undef"
12653         set d_statfs_f_flags
12654         eval $setvar
12655         ;;
12656 esac
12657 case "$d_statfs_f_flags" in
12658 "$define")      echo "Yes, it does."   ;;
12659 *)              echo "No, it doesn't." ;;
12660 esac
12661
12662 : see if _ptr and _cnt from stdio act std
12663 echo " "
12664
12665 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12666         echo "(Looks like you have stdio.h from BSD.)"
12667         case "$stdio_ptr" in
12668         '') stdio_ptr='((fp)->_p)'
12669                 ptr_lval=$define
12670                 ;;
12671         *)      ptr_lval=$d_stdio_ptr_lval;;
12672         esac
12673         case "$stdio_cnt" in
12674         '') stdio_cnt='((fp)->_r)'
12675                 cnt_lval=$define
12676                 ;;
12677         *)      cnt_lval=$d_stdio_cnt_lval;;
12678         esac
12679         case "$stdio_base" in
12680         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12681         esac
12682         case "$stdio_bufsiz" in
12683         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12684         esac
12685 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12686         echo "(Looks like you have stdio.h from Linux.)"
12687         case "$stdio_ptr" in
12688         '') stdio_ptr='((fp)->_IO_read_ptr)'
12689                 ptr_lval=$define
12690                 ;;
12691         *)      ptr_lval=$d_stdio_ptr_lval;;
12692         esac
12693         case "$stdio_cnt" in
12694         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12695                 cnt_lval=$undef
12696                 ;;
12697         *)      cnt_lval=$d_stdio_cnt_lval;;
12698         esac
12699         case "$stdio_base" in
12700         '') stdio_base='((fp)->_IO_read_base)';;
12701         esac
12702         case "$stdio_bufsiz" in
12703         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12704         esac
12705 else
12706         case "$stdio_ptr" in
12707         '') stdio_ptr='((fp)->_ptr)'
12708                 ptr_lval=$define
12709                 ;;
12710         *)      ptr_lval=$d_stdio_ptr_lval;;
12711         esac
12712         case "$stdio_cnt" in
12713         '') stdio_cnt='((fp)->_cnt)'
12714                 cnt_lval=$define
12715                 ;;
12716         *)      cnt_lval=$d_stdio_cnt_lval;;
12717         esac
12718         case "$stdio_base" in
12719         '') stdio_base='((fp)->_base)';;
12720         esac
12721         case "$stdio_bufsiz" in
12722         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12723         esac
12724 fi
12725
12726 : test whether _ptr and _cnt really work
12727 echo "Checking how std your stdio is..." >&4
12728 $cat >try.c <<EOP
12729 #include <stdio.h>
12730 #define FILE_ptr(fp)    $stdio_ptr
12731 #define FILE_cnt(fp)    $stdio_cnt
12732 int main() {
12733         FILE *fp = fopen("try.c", "r");
12734         char c = getc(fp);
12735         if (
12736                 18 <= FILE_cnt(fp) &&
12737                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12738         )
12739                 exit(0);
12740         exit(1);
12741 }
12742 EOP
12743 val="$undef"
12744 set try
12745 if eval $compile && $to try.c; then
12746         if $run ./try; then
12747                 echo "Your stdio acts pretty std."
12748                 val="$define"
12749         else
12750                 echo "Your stdio isn't very std."
12751         fi
12752 else
12753         echo "Your stdio doesn't appear very std."
12754 fi
12755 $rm -f try.c try
12756 set d_stdstdio
12757 eval $setvar
12758
12759 : Can _ptr be used as an lvalue?
12760 case "$d_stdstdio$ptr_lval" in
12761 $define$define) val=$define ;;
12762 *) val=$undef ;;
12763 esac
12764 set d_stdio_ptr_lval
12765 eval $setvar
12766
12767 : Can _cnt be used as an lvalue?
12768 case "$d_stdstdio$cnt_lval" in
12769 $define$define) val=$define ;;
12770 *) val=$undef ;;
12771 esac
12772 set d_stdio_cnt_lval
12773 eval $setvar
12774
12775
12776 : test whether setting _ptr sets _cnt as a side effect
12777 d_stdio_ptr_lval_sets_cnt="$undef"
12778 d_stdio_ptr_lval_nochange_cnt="$undef"
12779 case "$d_stdio_ptr_lval$d_stdstdio" in
12780 $define$define)
12781         echo "Checking to see what happens if we set the stdio ptr..." >&4
12782 $cat >try.c <<EOP
12783 #include <stdio.h>
12784 /* Can we scream? */
12785 /* Eat dust sed :-) */
12786 /* In the buffer space, no one can hear you scream. */
12787 #define FILE_ptr(fp)    $stdio_ptr
12788 #define FILE_cnt(fp)    $stdio_cnt
12789 #include <sys/types.h>
12790 int main() {
12791         FILE *fp = fopen("try.c", "r");
12792         int c;
12793         char *ptr;
12794         size_t cnt;
12795         if (!fp) {
12796             puts("Fail even to read");
12797             exit(1);
12798         }
12799         c = getc(fp); /* Read away the first # */
12800         if (c == EOF) {
12801             puts("Fail even to read");
12802             exit(1);
12803         }
12804         if (!(
12805                 18 <= FILE_cnt(fp) &&
12806                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12807         )) {
12808                 puts("Fail even to read");
12809                 exit (1);
12810         }
12811         ptr = (char*) FILE_ptr(fp);
12812         cnt = (size_t)FILE_cnt(fp);
12813
12814         FILE_ptr(fp) += 42;
12815
12816         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12817                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12818                 exit (1);
12819         }
12820         if (FILE_cnt(fp) <= 20) {
12821                 printf ("Fail (<20 chars to test)");
12822                 exit (1);
12823         }
12824         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12825                 puts("Fail compare");
12826                 exit (1);
12827         }
12828         if (cnt == FILE_cnt(fp)) {
12829                 puts("Pass_unchanged");
12830                 exit (0);
12831         }       
12832         if (FILE_cnt(fp) == (cnt - 42)) {
12833                 puts("Pass_changed");
12834                 exit (0);
12835         }
12836         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12837         return 1;
12838
12839 }
12840 EOP
12841         set try
12842         if eval $compile && $to try.c; then
12843                 case `$run ./try` in
12844                 Pass_changed)
12845                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12846                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12847                 Pass_unchanged)
12848                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12849                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12850                 Fail*)
12851                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12852                 *)
12853                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12854         esac
12855         else
12856                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12857         fi
12858         $rm -f try.c try
12859         ;;
12860 esac
12861
12862 : see if _base is also standard
12863 val="$undef"
12864 case "$d_stdstdio" in
12865 $define)
12866         $cat >try.c <<EOP
12867 #include <stdio.h>
12868 #define FILE_base(fp)   $stdio_base
12869 #define FILE_bufsiz(fp) $stdio_bufsiz
12870 int main() {
12871         FILE *fp = fopen("try.c", "r");
12872         char c = getc(fp);
12873         if (
12874                 19 <= FILE_bufsiz(fp) &&
12875                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12876         )
12877                 exit(0);
12878         exit(1);
12879 }
12880 EOP
12881         set try
12882         if eval $compile && $to try.c; then
12883                 if $run ./try; then
12884                         echo "And its _base field acts std."
12885                         val="$define"
12886                 else
12887                         echo "But its _base field isn't std."
12888                 fi
12889         else
12890                 echo "However, it seems to be lacking the _base field."
12891         fi
12892         $rm -f try.c try
12893         ;;
12894 esac
12895 set d_stdiobase
12896 eval $setvar
12897
12898 $cat >&4 <<EOM
12899 Checking how to access stdio streams by file descriptor number...
12900 EOM
12901 case "$stdio_stream_array" in
12902 '')     $cat >try.c <<EOCP
12903 #include <stdio.h>
12904 int main() {
12905   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12906     printf("yes\n");
12907 }
12908 EOCP
12909         for s in _iob __iob __sF
12910         do
12911                 set try -DSTDIO_STREAM_ARRAY=$s
12912                 if eval $compile; then
12913                         case "`$run ./try`" in
12914                         yes)    stdio_stream_array=$s; break ;;
12915                         esac
12916                 fi
12917         done
12918         $rm -f try.* try$exe_ext
12919 esac
12920 case "$stdio_stream_array" in
12921 '')     $cat >&4 <<EOM
12922 I can't figure out how to access stdio streams by file descriptor number.
12923 EOM
12924         d_stdio_stream_array="$undef"
12925         ;;
12926 *)      $cat >&4 <<EOM
12927 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12928 EOM
12929         d_stdio_stream_array="$define"
12930         ;;
12931 esac
12932
12933 : see if strcoll exists
12934 set strcoll d_strcoll
12935 eval $inlibc
12936
12937 : check for structure copying
12938 echo " "
12939 echo "Checking to see if your C compiler can copy structs..." >&4
12940 $cat >try.c <<'EOCP'
12941 int main()
12942 {
12943         struct blurfl {
12944                 int dyick;
12945         } foo, bar;
12946
12947         foo = bar;
12948 }
12949 EOCP
12950 if $cc -c try.c >/dev/null 2>&1 ; then
12951         val="$define"
12952         echo "Yup, it can."
12953 else
12954         val="$undef"
12955         echo "Nope, it can't."
12956 fi
12957 set d_strctcpy
12958 eval $setvar
12959 $rm -f try.*
12960
12961 : see if strerror and/or sys_errlist[] exist
12962 echo " "
12963 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12964     if set strerror val -f d_strerror; eval $csym; $val; then
12965                 echo 'strerror() found.' >&4
12966                 d_strerror="$define"
12967                 d_strerrm='strerror(e)'
12968                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12969                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12970                         d_syserrlst="$define"
12971                 else
12972                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12973                         d_syserrlst="$undef"
12974                 fi
12975     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12976                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12977                 echo 'strerror() found in string header.' >&4
12978                 d_strerror="$define"
12979                 d_strerrm='strerror(e)'
12980                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12981                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12982                                 d_syserrlst="$define"
12983                 else
12984                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12985                         d_syserrlst="$undef"
12986                 fi
12987     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12988                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12989                 d_strerror="$undef"
12990                 d_syserrlst="$define"
12991                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12992     else
12993                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12994                 d_strerror="$undef"
12995                 d_syserrlst="$undef"
12996                 d_strerrm='"unknown"'
12997     fi
12998 fi
12999
13000 : see if strftime exists
13001 set strftime d_strftime
13002 eval $inlibc
13003
13004 : see if strtod exists
13005 set strtod d_strtod
13006 eval $inlibc
13007
13008 : see if strtol exists
13009 set strtol d_strtol
13010 eval $inlibc
13011
13012 : see if strtold exists
13013 set strtold d_strtold
13014 eval $inlibc
13015
13016 : see if strtoll exists
13017 set strtoll d_strtoll
13018 eval $inlibc
13019
13020 case "$d_longlong-$d_strtoll" in
13021 "$define-$define")
13022         $cat <<EOM
13023 Checking whether your strtoll() works okay...
13024 EOM
13025         $cat >try.c <<'EOCP'
13026 #include <errno.h>
13027 #ifdef __hpux
13028 #define strtoll __strtoll
13029 #endif
13030 #ifdef __EMX__
13031 #define strtoll _strtoll
13032 #endif
13033 #include <stdio.h>
13034 extern long long int strtoll(char *s, char **, int); 
13035 static int bad = 0;
13036 int check(char *s, long long ell, int een) {
13037         long long gll;
13038         errno = 0;
13039         gll = strtoll(s, 0, 10);
13040         if (!((gll == ell) && (errno == een)))
13041                 bad++;
13042 }
13043 int main() {
13044         check(" 1",                                      1LL, 0);
13045         check(" 0",                                      0LL, 0);
13046         check("-1",                                     -1LL, 0);
13047         check("-9223372036854775808", -9223372036854775808LL, 0);
13048         check("-9223372036854775808", -9223372036854775808LL, 0);
13049         check(" 9223372036854775807",  9223372036854775807LL, 0);
13050         check("-9223372036854775808", -9223372036854775808LL, 0);
13051         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
13052         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
13053         if (!bad)
13054                 printf("ok\n");
13055 }
13056 EOCP
13057         set try
13058         if eval $compile; then
13059                 yyy=`$run ./try`
13060                 case "$yyy" in
13061                 ok) echo "Your strtoll() seems to be working okay." ;;
13062                 *) cat <<EOM >&4
13063 Your strtoll() doesn't seem to be working okay.
13064 EOM
13065                    d_strtoll="$undef"
13066                    ;;
13067                 esac
13068         else
13069                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13070                 d_strtoll="$undef"
13071         fi
13072         ;;
13073 esac
13074
13075 : see if strtoq exists
13076 set strtoq d_strtoq
13077 eval $inlibc
13078
13079 : see if strtoul exists
13080 set strtoul d_strtoul
13081 eval $inlibc
13082
13083 case "$d_strtoul" in
13084 "$define")
13085         $cat <<EOM
13086 Checking whether your strtoul() works okay...
13087 EOM
13088         $cat >try.c <<'EOCP'
13089 #include <errno.h>
13090 #include <stdio.h>
13091 extern unsigned long int strtoul(char *s, char **, int); 
13092 static int bad = 0;
13093 void check(char *s, unsigned long eul, int een) {
13094         unsigned long gul;
13095         errno = 0;
13096         gul = strtoul(s, 0, 10);
13097         if (!((gul == eul) && (errno == een)))
13098                 bad++;
13099 }
13100 int main() {
13101         check(" 1", 1L, 0);
13102         check(" 0", 0L, 0);
13103 EOCP
13104         case "$longsize" in
13105         8)
13106             $cat >>try.c <<'EOCP'
13107         check("18446744073709551615", 18446744073709551615UL, 0);
13108         check("18446744073709551616", 18446744073709551615UL, ERANGE);
13109 #if 0 /* strtoul() for /^-/ strings is undefined. */
13110         check("-1", 18446744073709551615UL, 0);
13111         check("-18446744073709551614", 2, 0);
13112         check("-18446744073709551615", 1, 0);
13113         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
13114         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
13115 #endif
13116 EOCP
13117                 ;;
13118         4)
13119                     $cat >>try.c <<'EOCP'
13120         check("4294967295", 4294967295UL, 0);
13121         check("4294967296", 4294967295UL, ERANGE);
13122 #if 0 /* strtoul() for /^-/ strings is undefined. */
13123         check("-1", 4294967295UL, 0);
13124         check("-4294967294", 2, 0);
13125         check("-4294967295", 1, 0);
13126         check("-4294967296", 4294967295UL, ERANGE);
13127         check("-4294967297", 4294967295UL, ERANGE);
13128 #endif
13129 EOCP
13130                 ;;
13131         *)
13132 : Should we write these tests to be more portable by sprintf-ing
13133 : ~0 and then manipulating that char string as input for strtol?
13134                 ;;
13135         esac
13136         $cat >>try.c <<'EOCP'
13137         if (!bad)
13138                 printf("ok\n");
13139         return 0;
13140 }
13141 EOCP
13142         set try
13143         if eval $compile; then
13144                 case "`$run ./try`" in
13145                 ok) echo "Your strtoul() seems to be working okay." ;;
13146                 *) cat <<EOM >&4
13147 Your strtoul() doesn't seem to be working okay.
13148 EOM
13149                    d_strtoul="$undef"
13150                    ;;
13151                 esac
13152         fi
13153         ;;
13154 esac
13155
13156 : see if strtoull exists
13157 set strtoull d_strtoull
13158 eval $inlibc
13159
13160 case "$d_longlong-$d_strtoull" in
13161 "$define-$define")
13162         $cat <<EOM
13163 Checking whether your strtoull() works okay...
13164 EOM
13165         $cat >try.c <<'EOCP'
13166 #include <errno.h>
13167 #ifdef __hpux
13168 #define strtoull __strtoull
13169 #endif
13170 #include <stdio.h>
13171 extern unsigned long long int strtoull(char *s, char **, int); 
13172 static int bad = 0;
13173 int check(char *s, long long eull, int een) {
13174         long long gull;
13175         errno = 0;
13176         gull = strtoull(s, 0, 10);
13177         if (!((gull == eull) && (errno == een)))
13178                 bad++;
13179 }
13180 int main() {
13181         check(" 1",                                        1LL, 0);
13182         check(" 0",                                        0LL, 0);
13183         check("18446744073709551615",  18446744073709551615ULL, 0);
13184         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13185 #if 0 /* strtoull() for /^-/ strings is undefined. */
13186         check("-1",                    18446744073709551615ULL, 0);
13187         check("-18446744073709551614",                     2LL, 0);
13188         check("-18446744073709551615",                     1LL, 0);
13189         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13190         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13191 #endif
13192         if (!bad)
13193                 printf("ok\n");
13194 }
13195 EOCP
13196         set try
13197         if eval $compile; then
13198                 case "`$run ./try`" in
13199                 ok) echo "Your strtoull() seems to be working okay." ;;
13200                 *) cat <<EOM >&4
13201 Your strtoull() doesn't seem to be working okay.
13202 EOM
13203                    d_strtoull="$undef"
13204                    ;;
13205                 esac
13206         fi
13207         ;;
13208 esac
13209
13210 : see if strtouq exists
13211 set strtouq d_strtouq
13212 eval $inlibc
13213
13214 case "$d_strtouq" in
13215 "$define")
13216         $cat <<EOM
13217 Checking whether your strtouq() works okay...
13218 EOM
13219         $cat >try.c <<'EOCP'
13220 #include <errno.h>
13221 #include <stdio.h>
13222 extern unsigned long long int strtouq(char *s, char **, int); 
13223 static int bad = 0;
13224 void check(char *s, unsigned long long eull, int een) {
13225         unsigned long long gull;
13226         errno = 0;
13227         gull = strtouq(s, 0, 10);
13228         if (!((gull == eull) && (errno == een)))
13229                 bad++;
13230 }
13231 int main() {
13232         check(" 1",                                        1LL, 0);
13233         check(" 0",                                        0LL, 0);
13234         check("18446744073709551615",  18446744073709551615ULL, 0);
13235         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13236 #if 0 /* strtouq() for /^-/ strings is undefined. */
13237         check("-1",                    18446744073709551615ULL, 0);
13238         check("-18446744073709551614",                     2LL, 0);
13239         check("-18446744073709551615",                     1LL, 0);
13240         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13241         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13242 #endif
13243         if (!bad)
13244                 printf("ok\n");
13245         return 0;
13246 }
13247 EOCP
13248         set try
13249         if eval $compile; then
13250                 case "`$run ./try`" in
13251                 ok) echo "Your strtouq() seems to be working okay." ;;
13252                 *) cat <<EOM >&4
13253 Your strtouq() doesn't seem to be working okay.
13254 EOM
13255                    d_strtouq="$undef"
13256                    ;;
13257                 esac
13258         fi
13259         ;;
13260 esac
13261
13262 : see if strxfrm exists
13263 set strxfrm d_strxfrm
13264 eval $inlibc
13265
13266 : see if symlink exists
13267 set symlink d_symlink
13268 eval $inlibc
13269
13270 : see if syscall exists
13271 set syscall d_syscall
13272 eval $inlibc
13273
13274 : see if prototype for syscall is available
13275 echo " "
13276 set d_syscallproto syscall $i_unistd unistd.h
13277 eval $hasproto
13278
13279 : see if sysconf exists
13280 set sysconf d_sysconf
13281 eval $inlibc
13282
13283 : see if system exists
13284 set system d_system
13285 eval $inlibc
13286
13287 : see if tcgetpgrp exists
13288 set tcgetpgrp d_tcgetpgrp
13289 eval $inlibc
13290
13291 : see if tcsetpgrp exists
13292 set tcsetpgrp d_tcsetpgrp
13293 eval $inlibc
13294
13295 : see if prototype for telldir is available
13296 echo " "
13297 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13298 eval $hasproto
13299
13300 : see if this is a sys/times.h system
13301 set sys/times.h i_systimes
13302 eval $inhdr
13303
13304 : see if times exists
13305 echo " "
13306 if set times val -f d_times; eval $csym; $val; then
13307         echo 'times() found.' >&4
13308         d_times="$define"
13309         inc=''
13310         case "$i_systimes" in
13311         "$define") inc='sys/times.h';;
13312         esac
13313         rp="What is the type returned by times() on this system?"
13314         set clock_t clocktype long stdio.h sys/types.h $inc
13315         eval $typedef_ask
13316 else
13317         echo 'times() NOT found, hope that will do.' >&4
13318         d_times="$undef"
13319         clocktype='int'
13320 fi
13321
13322 : see if truncate exists
13323 set truncate d_truncate
13324 eval $inlibc
13325
13326 : see if tzname[] exists
13327 echo " "
13328 if set tzname val -a d_tzname; eval $csym; $val; then
13329         val="$define"
13330         echo 'tzname[] found.' >&4
13331 else
13332         val="$undef"
13333         echo 'tzname[] NOT found.' >&4
13334 fi
13335 set d_tzname
13336 eval $setvar
13337
13338 case "$osname" in
13339 next|rhapsody|darwin) multiarch="$define" ;;
13340 esac
13341 case "$multiarch" in
13342 ''|[nN]*) multiarch="$undef" ;;
13343 esac
13344
13345 : check for ordering of bytes in a long
13346 echo " "
13347 case "$usecrosscompile$multiarch" in
13348 *$define*)
13349         $cat <<EOM
13350 You seem to be either cross-compiling or doing a multiarchitecture build,
13351 skipping the byteorder check.
13352
13353 EOM
13354         byteorder='ffff'
13355         ;;
13356 *)
13357         case "$byteorder" in
13358         '')
13359                 $cat <<'EOM'
13360 In the following, larger digits indicate more significance.  A big-endian
13361 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13362 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13363 machines may have weird orders like 3412.  A Cray will report 87654321,
13364 an Alpha will report 12345678. If the test program works the default is
13365 probably right.
13366 I'm now running the test program...
13367 EOM
13368                 $cat >try.c <<'EOCP'
13369 #include <stdio.h>
13370 int main()
13371 {
13372         int i;
13373         union {
13374                 unsigned long l;
13375                 char c[sizeof(long)];
13376         } u;
13377
13378         if (sizeof(long) > 4)
13379                 u.l = (0x08070605L << 32) | 0x04030201L;
13380         else
13381                 u.l = 0x04030201L;
13382         for (i = 0; i < sizeof(long); i++)
13383                 printf("%c", u.c[i]+'0');
13384         printf("\n");
13385         exit(0);
13386 }
13387 EOCP
13388                 xxx_prompt=y
13389                 set try
13390                 if eval $compile && ./try > /dev/null; then
13391                         dflt=`$run ./try`
13392                         case "$dflt" in
13393                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13394                                 echo "(The test program ran ok.)"
13395                                 echo "byteorder=$dflt"
13396                                 xxx_prompt=n
13397                         ;;
13398                         ????|????????) echo "(The test program ran ok.)" ;;
13399                         *) echo "(The test program didn't run right for some reason.)" ;;
13400                         esac
13401                 else
13402                         dflt='4321'
13403                         cat <<'EOM'
13404 (I can't seem to compile the test program.  Guessing big-endian...)
13405 EOM
13406                 fi
13407                 case "$xxx_prompt" in
13408                 y)
13409                         rp="What is the order of bytes in a long?"
13410                         . ./myread
13411                         byteorder="$ans"
13412                         ;;
13413                 *)      byteorder=$dflt
13414                         ;;
13415                 esac
13416                 ;;
13417         esac
13418         $rm -f try.c try
13419         ;;
13420 esac
13421
13422
13423 $cat <<EOM
13424
13425 Checking to see whether you can access character data unalignedly...
13426 EOM
13427 $cat >try.c <<EOCP
13428 #include <stdio.h>
13429 #define U32 $u32type
13430 #define BYTEORDER $byteorder
13431 int main() {
13432 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13433     U8 buf[] = "\0\0\0\1\0\0\0\0";
13434     U32 *up;
13435     int i;
13436
13437     if (sizeof(U32) != 4) {
13438         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13439         exit(1);
13440     }
13441
13442     fflush(stdout);
13443
13444     for (i = 0; i < 4; i++) {
13445         up = (U32*)(buf + i);
13446         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13447                (*up == 1 << (8*(3-i)))  /* little-endian */
13448               )
13449            )
13450         {
13451             printf("read failed (%x)\n", *up);
13452             exit(2);
13453         }
13454     }
13455
13456     /* write test */
13457     for (i = 0; i < 4; i++) {
13458         up = (U32*)(buf + i);
13459         *up = 0xBeef;
13460         if (*up != 0xBeef) {
13461             printf("write failed (%x)\n", *up);
13462             exit(3);
13463         }
13464     }
13465
13466     exit(0);
13467 #else
13468     printf("1\n");
13469     exit(1);
13470 #endif
13471     return 0;
13472 }
13473 EOCP
13474 set try
13475 if eval $compile_ok; then
13476         echo "(Testing for character data alignment may dump core.)" >&4
13477         $run ./try 2>&1 >/dev/null
13478         case "$?" in
13479         0)      cat >&4 <<EOM
13480 You can access character data pretty unalignedly.
13481 EOM
13482                 d_u32align="$undef"
13483                 ;;
13484         *)      cat >&4 <<EOM
13485 It seems that you must access character data in an aligned manner.
13486 EOM
13487                 d_u32align="$define"
13488                 ;;
13489         esac
13490         $rm -f core core.try.* try.core
13491 else
13492         rp='Can you access character data at unaligned addresses?'
13493         dflt='n'
13494         . ./myread
13495         case "$ans" in
13496         [yY]*)  d_u32align="$undef"  ;;
13497         *)      d_u32align="$define" ;;
13498         esac
13499 fi
13500
13501 : see if ualarm exists
13502 set ualarm d_ualarm
13503 eval $inlibc
13504
13505 : see if umask exists
13506 set umask d_umask
13507 eval $inlibc
13508
13509 : see if unordered exists
13510 set unordered d_unordered
13511 eval $inlibc
13512
13513 : see if usleep exists
13514 set usleep d_usleep
13515 eval $inlibc
13516
13517 : see if prototype for usleep is available
13518 echo " "
13519 set d_usleepproto usleep $i_unistd unistd.h
13520 eval $hasproto
13521
13522 : see if ustat exists
13523 set ustat d_ustat
13524 eval $inlibc
13525
13526 : backward compatibility for d_hvfork
13527 if test X$d_hvfork != X; then
13528         d_vfork="$d_hvfork"
13529         d_hvfork=''
13530 fi
13531 : see if there is a vfork
13532 val=''
13533 set vfork val
13534 eval $inlibc
13535
13536 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13537 : perl on Solaris 2.x, and probably elsewhere.
13538 case "$val" in
13539 $define)
13540         echo " "
13541         case "$usevfork" in
13542         false) dflt='n';;
13543         *) dflt='y';;
13544         esac
13545         cat <<'EOM'
13546  
13547 Perl can only use a vfork() that doesn't suffer from strict
13548 restrictions on calling functions or modifying global data in
13549 the child.  For example, glibc-2.1 contains such a vfork()
13550 that is unsuitable.  If your system provides a proper fork()
13551 call, chances are that you do NOT want perl to use vfork().
13552
13553 EOM
13554         rp="Do you still want to use vfork()?"
13555         . ./myread
13556         case "$ans" in
13557         y|Y) ;;
13558         *)
13559                 echo "Ok, we won't use vfork()."
13560                 val="$undef"
13561                 ;;
13562         esac
13563         ;;
13564 esac
13565 set d_vfork
13566 eval $setvar
13567 case "$d_vfork" in
13568 $define) usevfork='true';;
13569 *) usevfork='false';;
13570 esac
13571
13572 : see if closedir exists
13573 set closedir d_closedir
13574 eval $inlibc
13575
13576 case "$d_closedir" in
13577 "$define")
13578         echo " "
13579         echo "Checking whether closedir() returns a status..." >&4
13580         cat > try.c <<EOM
13581 #$i_dirent I_DIRENT             /**/
13582 #$i_sysdir I_SYS_DIR            /**/
13583 #$i_sysndir I_SYS_NDIR          /**/
13584 #$i_systypes I_SYS_TYPES        /**/
13585
13586 #if defined(I_SYS_TYPES)
13587 #include <sys/types.h>
13588 #endif
13589 #if defined(I_DIRENT)
13590 #include <dirent.h>
13591 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13592 #include <sys/dir.h>
13593 #endif
13594 #else
13595 #ifdef I_SYS_NDIR
13596 #include <sys/ndir.h>
13597 #else
13598 #ifdef I_SYS_DIR
13599 #ifdef hp9000s500
13600 #include <ndir.h>       /* may be wrong in the future */
13601 #else
13602 #include <sys/dir.h>
13603 #endif
13604 #endif
13605 #endif
13606 #endif 
13607 int main() { return closedir(opendir(".")); }
13608 EOM
13609         set try
13610         if eval $compile_ok; then
13611                 if $run ./try > /dev/null 2>&1 ; then
13612                         echo "Yes, it does."
13613                         val="$undef"
13614                 else
13615                         echo "No, it doesn't."
13616                         val="$define"
13617                 fi
13618         else
13619                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13620                 val="$define"
13621         fi
13622         ;;
13623 *)
13624         val="$undef";
13625         ;;
13626 esac
13627 set d_void_closedir
13628 eval $setvar
13629 $rm -f try try.*
13630 : see if there is a wait4
13631 set wait4 d_wait4
13632 eval $inlibc
13633
13634 : see if waitpid exists
13635 set waitpid d_waitpid
13636 eval $inlibc
13637
13638 : see if wcstombs exists
13639 set wcstombs d_wcstombs
13640 eval $inlibc
13641
13642 : see if wctomb exists
13643 set wctomb d_wctomb
13644 eval $inlibc
13645
13646 : see if writev exists
13647 set writev d_writev
13648 eval $inlibc
13649
13650 : preserve RCS keywords in files with variable substitution, grrr
13651 Date='$Date'
13652 Id='$Id'
13653 Log='$Log'
13654 RCSfile='$RCSfile'
13655 Revision='$Revision'
13656
13657 : check for alignment requirements
13658 echo " "
13659 case "$usecrosscompile$multiarch" in
13660 *$define*)
13661         $cat <<EOM
13662 You seem to be either cross-compiling or doing a multiarchitecture build,
13663 skipping the memory alignment check.
13664
13665 EOM
13666         case "$alignbytes" in
13667         '') alignbytes=8 ;;
13668         esac
13669         ;;
13670 *)
13671         case "$alignbytes" in
13672         '') echo "Checking alignment constraints..." >&4
13673                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13674                         $cat >try.c <<'EOCP'
13675 typedef long double NV;
13676 EOCP
13677                 else
13678                         $cat >try.c <<'EOCP'
13679 typedef double NV;
13680 EOCP
13681                 fi
13682                 $cat >>try.c <<'EOCP'
13683 #include <stdio.h>
13684 struct foobar {
13685         char foo;
13686         NV bar;
13687 } try_algn;
13688 int main()
13689 {
13690     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13691     return(0);
13692 }
13693 EOCP
13694                 set try
13695                 if eval $compile_ok; then
13696                         dflt=`$run ./try`
13697                 else
13698                         dflt='8'
13699                         echo "(I can't seem to compile the test program...)"
13700                 fi
13701                 ;;
13702         *) dflt="$alignbytes"
13703                 ;;
13704         esac
13705         rp="Doubles must be aligned on a how-many-byte boundary?"
13706         . ./myread
13707         alignbytes="$ans"
13708         $rm -f try.c try
13709         ;;
13710 esac
13711
13712
13713 : set the base revision
13714 baserev=5.0
13715
13716 : how do we catenate cpp tokens here?
13717 echo " "
13718 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13719 $cat >cpp_stuff.c <<'EOCP'
13720 #define RCAT(a,b)a/**/b
13721 #define ACAT(a,b)a ## b
13722 RCAT(Rei,ser)
13723 ACAT(Cir,cus)
13724 EOCP
13725 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13726 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13727         echo "Oh!  Smells like ANSI's been here." >&4
13728         echo "We can catify or stringify, separately or together!"
13729         cpp_stuff=42
13730 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13731         echo "Ah, yes!  The good old days!" >&4
13732         echo "However, in the good old days we don't know how to stringify and"
13733         echo "catify at the same time."
13734         cpp_stuff=1
13735 else
13736         $cat >&4 <<EOM
13737 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13738 to have to edit the values of CAT[2-5] in config.h...
13739 EOM
13740         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13741 fi
13742 $rm -f cpp_stuff.*
13743
13744 : see if this is a db.h system
13745 set db.h i_db
13746 eval $inhdr
13747
13748 case "$i_db" in
13749 $define)
13750         : Check db version.
13751         echo " "
13752         echo "Checking Berkeley DB version ..." >&4
13753         $cat >try.c <<EOCP
13754 #$d_const HASCONST
13755 #ifndef HASCONST
13756 #define const
13757 #endif
13758 #include <sys/types.h>
13759 #include <stdio.h>
13760 #include <db.h>
13761 int main(int argc, char *argv[])
13762 {
13763 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13764     int Major, Minor, Patch ;
13765     unsigned long Version ;
13766     (void)db_version(&Major, &Minor, &Patch) ;
13767     if (argc == 2) {
13768         printf("%d %d %d %d %d %d\n",
13769                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13770                Major, Minor, Patch);
13771         exit(0);
13772     }
13773     printf("You have Berkeley DB Version 2 or greater.\n");
13774
13775     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13776                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13777     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13778                 Major, Minor, Patch) ;
13779
13780     /* check that db.h & libdb are compatible */
13781     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13782         printf("db.h and libdb are incompatible.\n") ;
13783         exit(3);        
13784     }
13785
13786     printf("db.h and libdb are compatible.\n") ;
13787
13788     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13789                 + DB_VERSION_PATCH ;
13790
13791     /* needs to be >= 2.3.4 */
13792     if (Version < 2003004) {
13793     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13794         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13795         exit(2);        
13796     }
13797
13798     exit(0);
13799 #else
13800 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13801     if (argc == 2) {
13802         printf("1 0 0\n");
13803         exit(0);
13804     }
13805     printf("You have Berkeley DB Version 1.\n");
13806     exit(0);    /* DB version < 2: the coast is clear. */
13807 #else
13808     exit(1);    /* <db.h> not Berkeley DB? */
13809 #endif
13810 #endif
13811 }
13812 EOCP
13813         set try
13814         if eval $compile_ok && $run ./try; then
13815                 echo 'Looks OK.' >&4
13816                 set `$run ./try 1`
13817                 db_version_major=$1
13818                 db_version_minor=$2
13819                 db_version_patch=$3
13820         else
13821                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13822                 i_db=$undef
13823                 case " $libs " in
13824                 *"-ldb "*)
13825                         : Remove db from list of libraries to use
13826                         echo "Removing unusable -ldb from library list" >&4
13827                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13828                         shift
13829                         libs="$*"
13830                         echo "libs = $libs" >&4
13831                         ;;
13832                 esac
13833         fi
13834         $rm -f try.*
13835         ;;
13836 esac
13837
13838 case "$i_db" in
13839 define)
13840         : Check the return type needed for hash 
13841         echo " "
13842         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13843         $cat >try.c <<EOCP
13844 #$d_const HASCONST
13845 #ifndef HASCONST
13846 #define const
13847 #endif
13848 #include <sys/types.h>
13849 #include <db.h>
13850
13851 #ifndef DB_VERSION_MAJOR
13852 u_int32_t hash_cb (ptr, size)
13853 const void *ptr;
13854 size_t size;
13855 {
13856 }
13857 HASHINFO info;
13858 int main()
13859 {
13860         info.hash = hash_cb;
13861 }
13862 #endif
13863 EOCP
13864         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13865                 if $contains warning try.out >>/dev/null 2>&1 ; then
13866                         db_hashtype='int'
13867                 else
13868                         db_hashtype='u_int32_t'
13869                 fi
13870         else
13871                 : XXX Maybe we should just give up here.
13872                 db_hashtype=u_int32_t
13873                 $cat try.out >&4
13874                 echo "Help:  I can't seem to compile the db test program." >&4
13875                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13876         fi
13877         $rm -f try.*
13878         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13879         ;;
13880 *)      db_hashtype=u_int32_t
13881         ;;
13882 esac
13883 case "$i_db" in
13884 define)
13885         : Check the return type needed for prefix 
13886         echo " "
13887         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13888         cat >try.c <<EOCP
13889 #$d_const HASCONST
13890 #ifndef HASCONST
13891 #define const
13892 #endif
13893 #include <sys/types.h>
13894 #include <db.h>
13895
13896 #ifndef DB_VERSION_MAJOR
13897 size_t prefix_cb (key1, key2)
13898 const DBT *key1;
13899 const DBT *key2;
13900 {
13901 }
13902 BTREEINFO info;
13903 int main()
13904 {
13905         info.prefix = prefix_cb;
13906 }
13907 #endif
13908 EOCP
13909         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13910                 if $contains warning try.out >>/dev/null 2>&1 ; then
13911                         db_prefixtype='int'
13912                 else
13913                         db_prefixtype='size_t'
13914                 fi
13915         else
13916                 db_prefixtype='size_t'
13917                 : XXX Maybe we should just give up here.
13918                 $cat try.out >&4
13919                 echo "Help:  I can't seem to compile the db test program." >&4
13920                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13921         fi
13922         $rm -f try.*
13923         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13924         ;;
13925 *)      db_prefixtype='size_t'
13926         ;;
13927 esac
13928
13929
13930 : How can we generate normalized random numbers ?
13931 echo " "
13932 echo "Looking for a random number function..." >&4
13933 case "$randfunc" in
13934 '')
13935         if set drand48 val -f; eval $csym; $val; then
13936                 dflt="drand48"
13937                 echo "Good, found drand48()." >&4
13938         elif set random val -f; eval $csym; $val; then
13939                 dflt="random"
13940                 echo "OK, found random()." >&4
13941         else
13942                 dflt="rand"
13943                 echo "Yick, looks like I have to use rand()." >&4
13944         fi
13945         echo " "
13946         ;;
13947 *)
13948         dflt="$randfunc"
13949         ;;
13950 esac
13951 cont=true
13952
13953 case "$ccflags" in
13954 *-Dmy_rand=*|*-Dmy_srand=*)
13955         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13956         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13957         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13958         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13959         ;;
13960 esac
13961
13962 while $test "$cont"; do
13963         rp="Use which function to generate random numbers?"
13964         . ./myread
13965         if $test "$ans" = "$dflt"; then
13966                 : null
13967         else
13968                 randbits=''
13969         fi
13970         randfunc="$ans"
13971         if set $ans val -f; eval $csym; $val; then
13972                 cont=''
13973         else
13974                 dflt=y
13975                 rp="I cannot find function $ans. Use that name anyway?"
13976                 . ./myread
13977                 dflt=rand
13978                 case "$ans" in
13979                         [yY]*) cont='';;
13980                 esac
13981         fi
13982         case "$cont" in
13983         '')
13984                 case "$randfunc" in
13985                 drand48)
13986                         drand01="drand48()"
13987                         seedfunc="srand48"
13988                         randbits=48
13989                         randseedtype=long
13990                         ;;
13991                 rand|random)
13992                         case "$randbits" in
13993                         '')
13994 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13995                                 $cat >try.c <<EOCP
13996 #$i_unistd I_UNISTD
13997 #$i_stdlib I_STDLIB
13998 #include <stdio.h>
13999 #ifdef I_UNISTD
14000 #  include <unistd.h>
14001 #endif
14002 #ifdef I_STDLIB
14003 #  include <stdlib.h>
14004 #endif
14005 int main()
14006 {
14007         register int i;
14008         register unsigned long tmp;
14009         register unsigned long max = 0L;
14010
14011         for (i = 1000; i; i--) {
14012                 tmp = (unsigned long) $randfunc();
14013                 if (tmp > max) max = tmp;
14014         }
14015         for (i = 0; max; i++)
14016                 max /= 2;
14017         printf("%d\n",i);
14018 }
14019 EOCP
14020                                 set try
14021                                 if eval $compile_ok; then
14022                                         dflt=`try`
14023                                 else
14024                                         dflt='?'
14025                                         echo "(I can't seem to compile the test program...)"
14026                                 fi
14027                                 ;;
14028                         *)
14029                                 dflt="$randbits"
14030                                 ;;
14031                         esac
14032                         rp="How many bits does your $randfunc() function produce?"
14033                         . ./myread
14034                         randbits="$ans"
14035                         $rm -f try.c try
14036                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
14037                         seedfunc="s$randfunc"
14038                         randseedtype=unsigned
14039                         ;;
14040                 *)
14041                         dflt="31"
14042                         rp="How many bits does your $randfunc() function produce?"
14043                         . ./myread
14044                         randbits="$ans"
14045                         seedfunc="s$randfunc"
14046                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
14047                         if set $seedfunc val -f; eval $csym; $val; then
14048                                 echo "(Using $seedfunc() to seed random generator)"
14049                         else
14050                                 echo "(Warning: no $seedfunc() to seed random generator)"
14051                                 seedfunc=rand
14052                         fi
14053                         randseedtype=unsigned
14054                         ;;
14055                 esac
14056                 ;;
14057         esac
14058 done
14059
14060 echo " "
14061 echo "Determining whether or not we are on an EBCDIC system..." >&4
14062 $cat >try.c <<'EOM'
14063 int main()
14064 {
14065   if ('M'==0xd4) return 0;
14066   return 1;
14067 }
14068 EOM
14069
14070 val=$undef
14071 set try
14072 if eval $compile_ok; then
14073         if $run ./try; then
14074                 echo "You seem to speak EBCDIC." >&4
14075                 val="$define"
14076         else
14077                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
14078         fi
14079 else
14080         echo "I'm unable to compile the test program." >&4
14081         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
14082 fi
14083 $rm -f try try.*
14084 set ebcdic
14085 eval $setvar
14086
14087 echo " "
14088 $cat >&4 <<EOM
14089 Checking how to flush all pending stdio output...
14090 EOM
14091 # I only know how to find the first 32 possibly open files on SunOS.
14092 # See also hints/sunos_4_1.sh and util.c  --AD
14093 case "$osname" in
14094 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
14095 esac
14096 $cat >>try.c <<EOCP
14097 #include <stdio.h>
14098 #$i_unistd I_UNISTD
14099 #ifdef I_UNISTD
14100 # include <unistd.h>
14101 #endif
14102 #$d_sysconf HAS_SYSCONF
14103 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
14104 #ifdef HAS_STDIO_STREAM_ARRAY
14105 # define STDIO_STREAM_ARRAY $stdio_stream_array
14106 #endif
14107 int main() {
14108   FILE* p;
14109   unlink("try.out");
14110   p = fopen("try.out", "w");
14111 #ifdef TRY_FPUTC
14112   fputc('x', p);
14113 #else
14114 # ifdef TRY_FPRINTF
14115   fprintf(p, "x");
14116 # endif
14117 #endif
14118 #ifdef TRY_FFLUSH_NULL
14119   fflush(NULL);
14120 #endif
14121 #ifdef TRY_FFLUSH_ALL
14122   {
14123     long open_max = -1;
14124 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
14125     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
14126 # else
14127 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
14128     open_max = sysconf(_SC_OPEN_MAX);
14129 #  else
14130 #   ifdef FOPEN_MAX
14131     open_max = FOPEN_MAX;
14132 #   else
14133 #    ifdef OPEN_MAX
14134     open_max = OPEN_MAX;
14135 #    else
14136 #     ifdef _NFILE
14137     open_max = _NFILE;
14138 #     endif
14139 #    endif
14140 #   endif
14141 #  endif
14142 # endif 
14143 # ifdef HAS_STDIO_STREAM_ARRAY
14144     if (open_max > 0) {
14145       long i;
14146       for (i = 0; i < open_max; i++)
14147             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
14148                 STDIO_STREAM_ARRAY[i]._file < open_max &&
14149                 STDIO_STREAM_ARRAY[i]._flag)
14150                 fflush(&STDIO_STREAM_ARRAY[i]);
14151     }   
14152   }
14153 # endif
14154 #endif
14155   _exit(42);
14156 }
14157 EOCP
14158 : first we have to find out how _not_ to flush
14159 $to try.c
14160 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
14161     output=''
14162     set try -DTRY_FPUTC
14163     if eval $compile; then
14164             $run ./try 2>/dev/null
14165             code="$?"
14166             $from try.out
14167             if $test ! -s try.out -a "X$code" = X42; then
14168                 output=-DTRY_FPUTC
14169             fi
14170     fi
14171     case "$output" in
14172     '')
14173             set try -DTRY_FPRINTF
14174             if eval $compile; then
14175                     $run ./try 2>/dev/null
14176                     code="$?"
14177                     $from try.out
14178                     if $test ! -s try.out -a "X$code" = X42; then
14179                         output=-DTRY_FPRINTF
14180                     fi
14181             fi
14182         ;;
14183     esac
14184 fi
14185 : check for fflush NULL behaviour
14186 case "$fflushNULL" in
14187 '')     set try -DTRY_FFLUSH_NULL $output
14188         if eval $compile; then
14189                 $run ./try 2>/dev/null
14190                 code="$?"
14191                 $from try.out
14192                 if $test -s try.out -a "X$code" = X42; then
14193                         fflushNULL="`$cat try.out`"
14194                 else
14195                         if $test "X$code" != X42; then
14196                                 $cat >&4 <<EOM
14197 (If this test failed, don't worry, we'll try another method shortly.)
14198 EOM
14199                         fi
14200                 fi
14201         fi
14202         $rm -f core try.core core.try.*
14203         case "$fflushNULL" in
14204         x)      $cat >&4 <<EOM
14205 Your fflush(NULL) works okay for output streams.
14206 Let's see if it clobbers input pipes...
14207 EOM
14208 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14209 # bug that improperly flushes the input end of pipes.  So we avoid the
14210 # autoflush on fork/system/exec support for now. :-(
14211 $cat >tryp.c <<EOCP
14212 #include <stdio.h>
14213 int
14214 main(int argc, char **argv)
14215 {
14216     char buf[1024];
14217     int i;
14218     char *bp = buf;
14219     while (1) {
14220         while ((i = getc(stdin)) != -1
14221                && (*bp++ = i) != '\n'
14222                && bp < &buf[1024])
14223         /* DO NOTHING */ ;
14224         *bp = '\0';
14225         fprintf(stdout, "%s", buf);
14226         fflush(NULL);
14227         if (i == -1)
14228             return 0;
14229         bp = buf;
14230     }
14231 }
14232 EOCP
14233                 fflushNULL="$define"
14234                 set tryp
14235                 if eval $compile; then
14236                     $rm -f tryp.out
14237                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14238                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
14239                        $cat >&4 <<EOM
14240 fflush(NULL) seems to behave okay with input streams.
14241 EOM
14242                         fflushNULL="$define"
14243                     else
14244                         $cat >&4 <<EOM
14245 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
14246 EOM
14247                         fflushNULL="$undef"
14248                     fi
14249                 fi
14250                 $rm -f core tryp.c tryp.core core.tryp.*
14251                 ;;
14252         '')     $cat >&4 <<EOM
14253 Your fflush(NULL) isn't working (contrary to ANSI C).
14254 EOM
14255                 fflushNULL="$undef"
14256                 ;;
14257         *)      $cat >&4 <<EOM
14258 Cannot figure out whether your fflush(NULL) works or not.
14259 I'm assuming it doesn't (contrary to ANSI C).
14260 EOM
14261                 fflushNULL="$undef"
14262                 ;;
14263         esac
14264         ;;
14265 $define|true|[yY]*)
14266         fflushNULL="$define"
14267         ;;
14268 *)
14269         fflushNULL="$undef"
14270         ;;
14271 esac
14272 : check explicit looping only if NULL did not work, and if the pipe
14273 : bug does not show up on an explicit flush too
14274 case "$fflushNULL" in
14275 "$undef")
14276         $cat >tryp.c <<EOCP
14277 #include <stdio.h>
14278 int
14279 main(int argc, char **argv)
14280 {
14281     char buf[1024];
14282     int i;
14283     char *bp = buf;
14284     while (1) {
14285         while ((i = getc(stdin)) != -1
14286                && (*bp++ = i) != '\n'
14287                && bp < &buf[1024])
14288         /* DO NOTHING */ ;
14289         *bp = '\0';
14290         fprintf(stdout, "%s", buf);
14291         fflush(stdin);
14292         if (i == -1)
14293             return 0;
14294         bp = buf;
14295     }
14296 }
14297 EOCP
14298         set tryp
14299         if eval $compile; then
14300             $rm -f tryp.out
14301             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14302             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14303                $cat >&4 <<EOM
14304 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14305 EOM
14306                 : now check for fflushall behaviour
14307                 case "$fflushall" in
14308                 '')     set try -DTRY_FFLUSH_ALL $output
14309                         if eval $compile; then
14310                                 $cat >&4 <<EOM
14311 (Now testing the other method--but note that this also may fail.)
14312 EOM
14313                                 $run ./try 2>/dev/null
14314                                 code=$?
14315                                 $from try.out
14316                                 if $test -s try.out -a "X$code" = X42; then
14317                                         fflushall="`$cat try.out`"
14318                                 fi
14319                         fi
14320                         $rm -f core try.core core.try.*
14321                         case "$fflushall" in
14322                         x)      $cat >&4 <<EOM
14323 Whew. Flushing explicitly all the stdio streams works.
14324 EOM
14325                                 fflushall="$define"
14326                                 ;;
14327                         '')     $cat >&4 <<EOM
14328 Sigh. Flushing explicitly all the stdio streams doesn't work.
14329 EOM
14330                                 fflushall="$undef"
14331                                 ;;
14332                         *)      $cat >&4 <<EOM
14333 Cannot figure out whether flushing stdio streams explicitly works or not.
14334 I'm assuming it doesn't.
14335 EOM
14336                                 fflushall="$undef"
14337                                 ;;
14338                         esac
14339                         ;;
14340                 "$define"|true|[yY]*)
14341                         fflushall="$define"
14342                         ;;
14343                 *)
14344                         fflushall="$undef"
14345                         ;;
14346                 esac
14347             else
14348                 $cat >&4 <<EOM
14349 All is futile.  Even fflush(stdin) clobbers input pipes!
14350 EOM
14351                 fflushall="$undef"
14352             fi
14353         else
14354             fflushall="$undef"
14355         fi
14356         $rm -f core tryp.c tryp.core core.tryp.*
14357         ;;
14358 *)      fflushall="$undef"
14359         ;;
14360 esac
14361
14362 case "$fflushNULL$fflushall" in
14363 undefundef)
14364         $cat <<EOM
14365 OK, I give up.  I cannot figure out how to flush pending stdio output.
14366 We won't be flushing handles at all before fork/exec/popen.
14367 EOM
14368         ;;
14369 esac
14370 $rm -f try.* try$exe_ext
14371
14372 : Store the full pathname to the ar program for use in the C program
14373 : Respect a hint or command line value for full_ar.
14374 case "$full_ar" in
14375 '') full_ar=$ar ;;
14376 esac
14377
14378 : Store the full pathname to the sed program for use in the C program
14379 full_sed=$sed
14380
14381 : see what type gids are declared as in the kernel
14382 echo " "
14383 echo "Looking for the type for group ids returned by getgid()."
14384 set gid_t gidtype xxx stdio.h sys/types.h
14385 eval $typedef
14386 case "$gidtype" in
14387 xxx)
14388         xxx=`./findhdr sys/user.h`
14389         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14390         case $1 in
14391         unsigned) dflt="$1 $2" ;;
14392         *) dflt="$1" ;;
14393         esac
14394         ;;
14395 *) dflt="$gidtype";;
14396 esac
14397 case "$gidtype" in
14398 gid_t) echo "gid_t found." ;;
14399 *)      rp="What is the type for group ids returned by getgid()?"
14400         . ./myread
14401         gidtype="$ans"
14402         ;;
14403 esac
14404
14405 echo " "
14406 case "$gidtype" in
14407 *_t) zzz="$gidtype"     ;;
14408 *)   zzz="gid"          ;;
14409 esac
14410 echo "Checking the size of $zzz..." >&4 
14411 cat > try.c <<EOCP
14412 #include <sys/types.h>
14413 #include <stdio.h>
14414 int main() {
14415     printf("%d\n", (int)sizeof($gidtype));
14416     exit(0);
14417 }
14418 EOCP
14419 set try
14420 if eval $compile_ok; then
14421         yyy=`$run ./try`
14422         case "$yyy" in
14423         '')     gidsize=4
14424                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14425                 ;;
14426         *)      gidsize=$yyy
14427                 echo "Your $zzz is $gidsize bytes long."
14428                 ;;
14429         esac
14430 else
14431         gidsize=4
14432         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14433 fi
14434
14435
14436 echo " "
14437 case "$gidtype" in
14438 *_t) zzz="$gidtype"     ;;
14439 *)   zzz="gid"          ;;
14440 esac
14441 echo "Checking the sign of $zzz..." >&4 
14442 cat > try.c <<EOCP
14443 #include <sys/types.h>
14444 #include <stdio.h>
14445 int main() {
14446         $gidtype foo = -1;
14447         if (foo < 0)
14448                 printf("-1\n");
14449         else
14450                 printf("1\n");
14451 }
14452 EOCP
14453 set try
14454 if eval $compile; then
14455         yyy=`$run ./try`
14456         case "$yyy" in
14457         '')     gidsign=1
14458                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14459                 ;;
14460         *)      gidsign=$yyy
14461                 case "$gidsign" in
14462                  1) echo "Your $zzz is unsigned." ;;
14463                 -1) echo "Your $zzz is signed."   ;;
14464                 esac
14465                 ;;
14466         esac
14467 else
14468         gidsign=1
14469         echo "(I can't compile the test program--guessing unsigned.)" >&4
14470 fi
14471
14472
14473 echo " "
14474
14475 if $test X"$quadtype" != X; then
14476
14477 echo "Checking how to print 64-bit integers..." >&4
14478
14479 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14480         $cat >try.c <<'EOCP'
14481 #include <sys/types.h>
14482 #include <stdio.h>
14483 int main() {
14484   int q = 12345678901;
14485   printf("%ld\n", q);
14486 }
14487 EOCP
14488         set try
14489         if eval $compile; then
14490                 yyy=`$run ./try`
14491                 case "$yyy" in
14492                 12345678901)
14493                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14494                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14495                         echo "We will use %d."
14496                         ;;
14497                 esac
14498         fi
14499 fi
14500
14501 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14502         $cat >try.c <<'EOCP'
14503 #include <sys/types.h>
14504 #include <stdio.h>
14505 int main() {
14506   long q = 12345678901;
14507   printf("%ld\n", q);
14508 }
14509 EOCP
14510         set try
14511         if eval $compile; then
14512                 yyy=`$run ./try`
14513                 case "$yyy" in
14514                 12345678901)
14515                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14516                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14517                         echo "We will use %ld."
14518                         ;;
14519                 esac
14520         fi
14521 fi
14522
14523 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14524         $cat >try.c <<'EOCP'
14525 #include <sys/types.h>
14526 #include <inttypes.h>
14527 #include <stdio.h>
14528 int main() {
14529   int64_t q = 12345678901;
14530   printf("%" PRId64 "\n", q);
14531 }
14532 EOCP
14533         set try
14534         if eval $compile; then
14535                 yyy=`$run ./try`
14536                 case "$yyy" in
14537                 12345678901)
14538                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14539                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14540                         echo "We will use the C9X style."
14541                         ;;
14542                 esac
14543         fi
14544 fi
14545
14546 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14547         $cat >try.c <<EOCP
14548 #include <sys/types.h>
14549 #include <stdio.h>
14550 int main() {
14551   $quadtype q = 12345678901;
14552   printf("%Ld\n", q);
14553 }
14554 EOCP
14555         set try
14556         if eval $compile; then
14557                 yyy=`$run ./try`
14558                 case "$yyy" in
14559                 12345678901)
14560                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14561                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14562                         echo "We will use %Ld."
14563                         ;;
14564                 esac
14565         fi
14566 fi
14567
14568 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14569         $cat >try.c <<'EOCP'
14570 #include <sys/types.h>
14571 #include <stdio.h>
14572 int main() {
14573   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14574   printf("%lld\n", q);
14575 }
14576 EOCP
14577         set try
14578         if eval $compile; then
14579                 yyy=`$run ./try`
14580                 case "$yyy" in
14581                 12345678901)
14582                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14583                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14584                         echo "We will use the %lld style."
14585                         ;;
14586                 esac
14587         fi
14588 fi
14589
14590 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14591         $cat >try.c <<EOCP
14592 #include <sys/types.h>
14593 #include <stdio.h>
14594 int main() {
14595   $quadtype q = 12345678901;
14596   printf("%qd\n", q);
14597 }
14598 EOCP
14599         set try
14600         if eval $compile; then
14601                 yyy=`$run ./try`
14602                 case "$yyy" in
14603                 12345678901)
14604                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14605                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14606                         echo "We will use %qd."
14607                         ;;
14608                 esac
14609         fi
14610 fi
14611
14612 if $test X"$sPRId64" = X; then
14613         echo "Cannot figure out how to print 64-bit integers." >&4
14614 fi
14615
14616 $rm -f try try.*
14617
14618 fi
14619
14620 case "$sPRId64" in
14621 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14622         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14623         ;;
14624 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14625         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14626         ;;
14627 esac
14628
14629
14630 echo " "
14631 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14632
14633 if $test X"$ivsize" = X8; then
14634         ivdformat="$sPRId64"
14635         uvuformat="$sPRIu64"
14636         uvoformat="$sPRIo64"
14637         uvxformat="$sPRIx64"
14638         uvXUformat="$sPRIXU64"
14639 else
14640         if $test X"$ivsize" = X"$longsize"; then
14641                 ivdformat='"ld"'
14642                 uvuformat='"lu"'
14643                 uvoformat='"lo"'
14644                 uvxformat='"lx"'
14645                 uvXUformat='"lX"'
14646         else
14647                 if $test X"$ivsize" = X"$intsize"; then
14648                         ivdformat='"d"'
14649                         uvuformat='"u"'
14650                         uvoformat='"o"'
14651                         uvxformat='"x"'
14652                         uvXUformat='"X"'
14653                 else
14654                         : far out
14655                         if $test X"$ivsize" = X"$shortsize"; then
14656                                 ivdformat='"hd"'
14657                                 uvuformat='"hu"'
14658                                 uvoformat='"ho"'
14659                                 uvxformat='"hx"'
14660                                 uvXUformat='"hX"'
14661                         fi
14662                 fi
14663         fi
14664 fi
14665
14666 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14667         nveformat="$sPRIeldbl"
14668         nvfformat="$sPRIfldbl"
14669         nvgformat="$sPRIgldbl"
14670         nvEUformat="$sPRIEUldbl"
14671         nvFUformat="$sPRIFUldbl"
14672         nvGUformat="$sPRIGUldbl"
14673 else
14674         nveformat='"e"'
14675         nvfformat='"f"'
14676         nvgformat='"g"'
14677         nvEUformat='"E"'
14678         nvFUformat='"F"'
14679         nvGUformat='"G"'
14680 fi
14681
14682 case "$ivdformat" in
14683 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
14684     exit 1
14685     ;;
14686 esac
14687
14688
14689 echo " "
14690 $echo "Checking the format string to be used for gids..." >&4
14691
14692 case "$gidsign" in
14693 -1)     if $test X"$gidsize" = X"$ivsize"; then
14694                 gidformat="$ivdformat"
14695         else
14696                 if $test X"$gidsize" = X"$longsize"; then
14697                         gidformat='"ld"'
14698                 else
14699                         if $test X"$gidsize" = X"$intsize"; then
14700                                 gidformat='"d"'
14701                         else
14702                                 if $test X"$gidsize" = X"$shortsize"; then
14703                                         gidformat='"hd"'
14704                                 fi
14705                         fi
14706                 fi
14707         fi
14708         ;;
14709 *)      if $test X"$gidsize" = X"$uvsize"; then
14710                 gidformat="$uvuformat"
14711         else
14712                 if $test X"$gidsize" = X"$longsize"; then
14713                         gidformat='"lu"'
14714                 else
14715                         if $test X"$gidsize" = X"$intsize"; then
14716                                 gidformat='"u"'
14717                         else
14718                                 if $test X"$gidsize" = X"$shortsize"; then
14719                                         gidformat='"hu"'
14720                                 fi
14721                         fi
14722                 fi
14723         fi
14724         ;;
14725 esac
14726
14727 : see if getgroups exists
14728 set getgroups d_getgrps
14729 eval $inlibc
14730
14731 : see if setgroups exists
14732 set setgroups d_setgrps
14733 eval $inlibc
14734
14735
14736 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14737 echo " "
14738 case "$d_getgrps$d_setgrps" in
14739 *define*)
14740         case "$groupstype" in
14741         '') dflt="$gidtype" ;;
14742         *)  dflt="$groupstype" ;;
14743         esac
14744         $cat <<EOM
14745 What type of pointer is the second argument to getgroups() and setgroups()?
14746 Usually this is the same as group ids, $gidtype, but not always.
14747
14748 EOM
14749         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14750         . ./myread
14751         groupstype="$ans"
14752         ;;
14753 *)  groupstype="$gidtype";;
14754 esac
14755
14756 echo " "
14757 echo "Checking if your $make program sets \$(MAKE)..." >&4
14758 case "$make_set_make" in
14759 '')
14760         $sed 's/^X //' > testmake.mak << 'EOF'
14761 Xall:
14762 X       @echo 'maketemp="$(MAKE)"'
14763 EOF
14764         case "`$make -f testmake.mak 2>/dev/null`" in
14765         *maketemp=*) make_set_make='#' ;;
14766         *)      make_set_make="MAKE=$make" ;;
14767         esac
14768         $rm -f testmake.mak
14769         ;;
14770 esac
14771 case "$make_set_make" in
14772 '#') echo "Yup, it does.";;
14773 *) echo "Nope, it doesn't.";;
14774 esac
14775
14776 : see what type is used for mode_t
14777 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14778 set mode_t modetype int stdio.h sys/types.h
14779 eval $typedef_ask
14780
14781 : see if stdarg is available
14782 echo " "
14783 if $test `./findhdr stdarg.h`; then
14784         echo "<stdarg.h> found." >&4
14785         valstd="$define"
14786 else
14787         echo "<stdarg.h> NOT found." >&4
14788         valstd="$undef"
14789 fi
14790
14791 : see if varags is available
14792 echo " "
14793 if $test `./findhdr varargs.h`; then
14794         echo "<varargs.h> found." >&4
14795 else
14796         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14797 fi
14798
14799 : set up the varargs testing programs
14800 $cat > varargs.c <<EOP
14801 #ifdef I_STDARG
14802 #include <stdarg.h>
14803 #endif
14804 #ifdef I_VARARGS
14805 #include <varargs.h>
14806 #endif
14807
14808 #ifdef I_STDARG
14809 int f(char *p, ...)
14810 #else
14811 int f(va_alist)
14812 va_dcl
14813 #endif
14814 {
14815         va_list ap;
14816 #ifndef I_STDARG
14817         char *p;
14818 #endif
14819 #ifdef I_STDARG
14820         va_start(ap,p);
14821 #else
14822         va_start(ap);
14823         p = va_arg(ap, char *);
14824 #endif
14825         va_end(ap);
14826 }
14827 EOP
14828 $cat > varargs <<EOP
14829 $startsh
14830 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14831         echo "true"
14832 else
14833         echo "false"
14834 fi
14835 $rm -f varargs$_o
14836 EOP
14837 chmod +x varargs
14838
14839 : now check which varargs header should be included
14840 echo " "
14841 i_varhdr=''
14842 case "$valstd" in
14843 "$define")
14844         if `./varargs I_STDARG`; then
14845                 val='stdarg.h'
14846         elif `./varargs I_VARARGS`; then
14847                 val='varargs.h'
14848         fi
14849         ;;
14850 *)
14851         if `./varargs I_VARARGS`; then
14852                 val='varargs.h'
14853         fi
14854         ;;
14855 esac
14856 case "$val" in
14857 '')
14858 echo "I could not find the definition for va_dcl... You have problems..." >&4
14859         val="$undef"; set i_stdarg; eval $setvar
14860         val="$undef"; set i_varargs; eval $setvar
14861         ;;
14862 *) 
14863         set i_varhdr
14864         eval $setvar
14865         case "$i_varhdr" in
14866         stdarg.h)
14867                 val="$define"; set i_stdarg; eval $setvar
14868                 val="$undef"; set i_varargs; eval $setvar
14869                 ;;
14870         varargs.h)
14871                 val="$undef"; set i_stdarg; eval $setvar
14872                 val="$define"; set i_varargs; eval $setvar
14873                 ;;
14874         esac
14875         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14876 esac
14877 $rm -f varargs*
14878
14879 : see if we need va_copy
14880 echo " "
14881 case "$i_stdarg" in
14882 "$define")
14883         $cat >try.c <<EOCP
14884 #include <stdarg.h>
14885 #include <stdio.h>
14886 #$i_stdlib I_STDLIB
14887 #ifdef I_STDLIB
14888 #include <stdlib.h>
14889 #endif
14890 #include <signal.h>
14891
14892 int
14893 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14894 {
14895   return vfprintf(f, fmt, *valp);
14896 }
14897  
14898 int    
14899 myvfprintf(FILE *f, const  char *fmt, va_list val)
14900 {
14901   return ivfprintf(f, fmt, &val);
14902 }
14903       
14904 int
14905 myprintf(char *fmt, ...) 
14906 {
14907   va_list val;
14908   va_start(val, fmt);
14909   return myvfprintf(stdout, fmt, val); 
14910 }         
14911
14912 int
14913 main(int ac, char **av)
14914 {
14915   signal(SIGSEGV, exit);
14916
14917   myprintf("%s%cs all right, then\n", "that", '\'');                            
14918   exit(0);      
14919 }
14920 EOCP
14921         set try
14922         if eval $compile && $run ./try 2>&1 >/dev/null; then
14923                 case "`$run ./try`" in
14924                 "that's all right, then")
14925                         okay=yes
14926                         ;;
14927                 esac
14928         fi
14929         case "$okay" in
14930         yes)    echo "It seems that you don't need va_copy()." >&4
14931                 need_va_copy="$undef"
14932                 ;;
14933         *)      echo "It seems that va_copy() or similar will be needed." >&4
14934                 need_va_copy="$define"
14935                 ;;
14936         esac
14937         $rm -f try.* core core.* *.core *.core.*
14938         ;;
14939 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14940         ;;
14941 esac
14942
14943 : define a fucntion to check prototypes
14944 $cat > protochk <<EOSH
14945 $startsh
14946 cc="$cc"
14947 optimize="$optimize"
14948 ccflags="$ccflags"
14949 prototype="$prototype"
14950 define="$define"
14951 rm=$rm
14952 EOSH
14953
14954 $cat >> protochk <<'EOSH'
14955
14956 $rm -f try.c
14957 foo="$1"
14958 shift
14959 while test $# -ge 2; do
14960         case "$1" in
14961                 $define) echo "#include <$2>" >> try.c ;;
14962                 literal) echo "$2" >> try.c ;;
14963         esac
14964     shift 2
14965 done
14966 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14967 cat >> try.c <<'EOCP'
14968 #ifdef CAN_PROTOTYPE
14969 #define _(args) args
14970 #else
14971 #define _(args) ()
14972 #endif
14973 EOCP
14974 echo "$foo" >> try.c
14975 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14976 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14977 status=$?
14978 $rm -f try.[co]
14979 exit $status
14980 EOSH
14981 chmod +x protochk
14982 $eunicefix protochk
14983
14984 : see what type is used for size_t
14985 rp="What is the type used for the length parameter for string functions?"
14986 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14987 eval $typedef_ask
14988
14989 : check for type of arguments to gethostbyaddr. 
14990 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14991         case "$d_gethbyaddr" in
14992         $define)
14993                 $cat <<EOM
14994
14995 Checking to see what type of arguments are accepted by gethostbyaddr().
14996 EOM
14997                 hdrs="$define sys/types.h
14998                         $d_socket sys/socket.h 
14999                         $i_niin netinet/in.h 
15000                         $i_netdb netdb.h
15001                         $i_unistd unistd.h"
15002                 : The first arg can 'char *' or 'void *'
15003                 : The second arg is some of integral type
15004                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
15005                         for yyy in size_t long int; do
15006                                 case "$netdb_host_type" in
15007                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
15008                                         if ./protochk "$try" $hdrs; then
15009                                                 echo "Your system accepts $xxx for the first arg."
15010                                                 echo "...and $yyy for the second arg."
15011                                                 netdb_host_type="$xxx"
15012                                                 netdb_hlen_type="$yyy"
15013                                         fi
15014                                         ;;
15015                                 esac
15016                         done
15017                 done
15018                 : In case none of those worked, prompt the user.
15019                 case "$netdb_host_type" in
15020                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
15021                         dflt='char *'
15022                         . ./myread
15023                         netdb_host_type=$ans
15024                         rp='What is the type for the 2nd argument to gethostbyaddr?'
15025                         dflt="$sizetype"
15026                         . ./myread
15027                         netdb_hlen_type=$ans
15028                         ;;
15029                 esac
15030                 ;;
15031         *)      : no gethostbyaddr, so pick harmless defaults
15032                 netdb_host_type='char *'
15033                 netdb_hlen_type="$sizetype"
15034                 ;;
15035         esac
15036         # Remove the "const" if needed. -- but then we'll have a 
15037         # prototype clash!
15038         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
15039 fi
15040
15041 : check for type of argument to gethostbyname. 
15042 if test "X$netdb_name_type" = X ; then
15043         case "$d_gethbyname" in
15044         $define)
15045                 $cat <<EOM
15046
15047 Checking to see what type of argument is accepted by gethostbyname().
15048 EOM
15049                 hdrs="$define sys/types.h
15050                         $d_socket sys/socket.h 
15051                         $i_niin netinet/in.h 
15052                         $i_netdb netdb.h
15053                         $i_unistd unistd.h"
15054                 for xxx in "const char *" "char *"; do
15055                         case "$netdb_name_type" in
15056                         '')     try="extern struct hostent *gethostbyname($xxx);"
15057                                 if ./protochk "$try" $hdrs; then
15058                                         echo "Your system accepts $xxx."
15059                                         netdb_name_type="$xxx"
15060                                 fi
15061                                 ;;
15062                         esac
15063                 done
15064                 : In case none of those worked, prompt the user.
15065                 case "$netdb_name_type" in
15066                 '')     rp='What is the type for the 1st argument to gethostbyname?'
15067                         dflt='char *'
15068                         . ./myread
15069                         netdb_name_type=$ans
15070                         ;;
15071                 esac
15072                 ;;
15073         *)      : no gethostbyname, so pick harmless default
15074                 netdb_name_type='char *'
15075                 ;;
15076         esac
15077 fi
15078
15079 : check for type of 1st argument to getnetbyaddr. 
15080 if test "X$netdb_net_type" = X ; then
15081         case "$d_getnbyaddr" in
15082         $define)
15083                 $cat <<EOM
15084
15085 Checking to see what type of 1st argument is accepted by getnetbyaddr().
15086 EOM
15087                 hdrs="$define sys/types.h
15088                         $d_socket sys/socket.h 
15089                         $i_niin netinet/in.h 
15090                         $i_netdb netdb.h
15091                         $i_unistd unistd.h"
15092                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
15093                         case "$netdb_net_type" in
15094                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
15095                                 if ./protochk "$try" $hdrs; then
15096                                         echo "Your system accepts $xxx."
15097                                         netdb_net_type="$xxx"
15098                                 fi
15099                                 ;;
15100                         esac
15101                 done
15102                 : In case none of those worked, prompt the user.
15103                 case "$netdb_net_type" in
15104                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
15105                         dflt='long'
15106                         . ./myread
15107                         netdb_net_type=$ans
15108                         ;;
15109                 esac
15110                 ;;
15111         *)      : no getnetbyaddr, so pick harmless default
15112                 netdb_net_type='long'
15113                 ;;
15114         esac
15115 fi
15116 : locate the preferred pager for this system
15117 case "$pager" in
15118 '')
15119         dflt=''
15120         case "$pg" in
15121         /*) dflt=$pg;;
15122         [a-zA-Z]:/*) dflt=$pg;;
15123         esac
15124         case "$more" in
15125         /*) dflt=$more;;
15126         [a-zA-Z]:/*) dflt=$more;;
15127         esac
15128         case "$less" in
15129         /*) dflt=$less;;
15130         [a-zA-Z]:/*) dflt=$less;;
15131         esac
15132         case "$dflt" in
15133         '') dflt=/usr/ucb/more;;
15134         esac
15135         ;;
15136 *) dflt="$pager";;
15137 esac
15138 echo " "
15139 fn=f/
15140 rp='What pager is used on your system?'
15141 . ./getfile
15142 pager="$ans"
15143
15144 : see what type pids are declared as in the kernel
15145 rp="What is the type of process ids on this system?"
15146 set pid_t pidtype int stdio.h sys/types.h
15147 eval $typedef_ask
15148
15149 : Find earliest binary compatible site_perl subdirectory perl can use.
15150 case "$bincompat5005" in
15151 "$define") xs_apiversion='5.005' ;;
15152 *) xs_apiversion=$version ;;   # The current site_perl version.
15153 esac
15154 : Find earliest pure perl site_perl subdirectory perl can use.
15155 : The versioned directories started at 5.005.
15156 pm_apiversion='5.005'
15157
15158 : see if ar generates random libraries by itself
15159 echo " "
15160 echo "Checking how to generate random libraries on your machine..." >&4
15161 echo 'int bar1() { return bar2(); }' > bar1.c
15162 echo 'int bar2() { return 2; }' > bar2.c
15163 $cat > foo.c <<'EOP'
15164 int main() { printf("%d\n", bar1()); exit(0); }
15165 EOP
15166 $cc $ccflags -c bar1.c >/dev/null 2>&1
15167 $cc $ccflags -c bar2.c >/dev/null 2>&1
15168 $cc $ccflags -c foo.c >/dev/null 2>&1
15169 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
15170 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15171         $run ./foobar >/dev/null 2>&1; then
15172         echo "$ar appears to generate random libraries itself."
15173         orderlib=false
15174         ranlib=":"
15175 elif $ar ts bar$_a >/dev/null 2>&1 &&
15176         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15177         $run ./foobar >/dev/null 2>&1; then
15178                 echo "a table of contents needs to be added with '$ar ts'."
15179                 orderlib=false
15180                 ranlib="$ar ts"
15181 else
15182         case "$ranlib" in
15183         :) ranlib='';;
15184         '')
15185                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15186                 $test -f $ranlib || ranlib=''
15187                 ;;
15188         esac
15189         if $test -n "$ranlib"; then
15190                 echo "your system has '$ranlib'; we'll use that."
15191                 orderlib=false
15192         else
15193                 echo "your system doesn't seem to support random libraries"
15194                 echo "so we'll use lorder and tsort to order the libraries."
15195                 orderlib=true
15196                 ranlib=":"
15197         fi
15198 fi
15199 $rm -f foo* bar* 
15200
15201 : check for type of arguments to select. 
15202 case "$selecttype" in
15203 '') case "$d_select" in
15204         $define)
15205                 echo " "
15206                 $cat <<EOM
15207 Checking to see what type of arguments are accepted by select().
15208 EOM
15209                 hdrs="$define sys/types.h
15210                         $i_systime sys/time.h 
15211                         $i_sysselct sys/select.h
15212                         $d_socket sys/socket.h"
15213                 : The first arg can be int, unsigned, or size_t
15214                 : The last arg may or may not be 'const'
15215                 val=''
15216                 : void pointer has been seen but using that
15217                 : breaks the selectminbits test
15218                 for xxx in 'fd_set *' 'int *'; do
15219                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15220                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
15221                                         case "$val" in
15222                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15223                                                 if ./protochk "$try" $hdrs; then
15224                                                         echo "Your system accepts $xxx."
15225                                                         val="$xxx"
15226                                                 fi
15227                                                 ;;
15228                                         esac
15229                                 done
15230                         done
15231                 done
15232                 case "$val" in
15233                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15234                         case "$d_fd_set" in
15235                                 $define) dflt="fd_set *" ;;
15236                                 *)              dflt="int *" ;;
15237                         esac
15238                         . ./myread
15239                         val=$ans
15240                         ;;
15241                 esac
15242                 selecttype="$val"
15243                 ;;
15244         *)      : no select, so pick a harmless default
15245                 selecttype='int *'
15246                 ;;
15247         esac
15248         ;;
15249 esac
15250
15251 : check for the select 'width'
15252 case "$selectminbits" in
15253 '') case "$d_select" in
15254         $define)
15255                 $cat <<EOM
15256
15257 Checking to see on how many bits at a time your select() operates...
15258 EOM
15259                 $cat >try.c <<EOCP
15260 #include <sys/types.h>
15261 #$i_time I_TIME
15262 #$i_systime I_SYS_TIME
15263 #$i_systimek I_SYS_TIME_KERNEL
15264 #ifdef I_TIME
15265 #   include <time.h>
15266 #endif
15267 #ifdef I_SYS_TIME
15268 #   ifdef I_SYS_TIME_KERNEL
15269 #       define KERNEL
15270 #   endif
15271 #   include <sys/time.h>
15272 #   ifdef I_SYS_TIME_KERNEL
15273 #       undef KERNEL
15274 #   endif
15275 #endif
15276 #$i_sysselct I_SYS_SELECT
15277 #ifdef I_SYS_SELECT
15278 #include <sys/select.h>
15279 #endif
15280 #$d_socket HAS_SOCKET
15281 #ifdef HAS_SOCKET
15282 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15283 #endif
15284 #include <stdio.h>
15285 $selecttype b;
15286 #define S sizeof(*(b))
15287 #define MINBITS 64
15288 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15289 #define NBITS  (NBYTES * 8)
15290 int main() {
15291     char s[NBYTES];
15292     struct timeval t;
15293     int i;
15294     FILE* fp;
15295     int fd;
15296
15297     fclose(stdin);
15298     fp = fopen("try.c", "r");
15299     if (fp == 0)
15300       exit(1);
15301     fd = fileno(fp);
15302     if (fd < 0)
15303       exit(2);
15304     b = ($selecttype)s;
15305     for (i = 0; i < NBITS; i++)
15306         FD_SET(i, b);
15307     t.tv_sec  = 0;
15308     t.tv_usec = 0;
15309     select(fd + 1, b, 0, 0, &t);
15310     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15311     printf("%d\n", i + 1);
15312     return 0;
15313 }
15314 EOCP
15315                 set try
15316                 if eval $compile_ok; then
15317                         selectminbits=`$run ./try`
15318                         case "$selectminbits" in
15319                         '')     cat >&4 <<EOM
15320 Cannot figure out on how many bits at a time your select() operates.
15321 I'll play safe and guess it is 32 bits.
15322 EOM
15323                                 selectminbits=32
15324                                 bits="32 bits"
15325                                 ;;
15326                         1)      bits="1 bit" ;;
15327                         *)      bits="$selectminbits bits" ;;
15328                         esac
15329                         echo "Your select() operates on $bits at a time." >&4
15330                 else
15331                         rp='What is the minimum number of bits your select() operates on?'
15332                         case "$byteorder" in
15333                         1234|12345678)  dflt=32 ;;
15334                         *)              dflt=1  ;;
15335                         esac
15336                         . ./myread
15337                         val=$ans
15338                         selectminbits="$val"
15339                 fi
15340                 $rm -f try.* try
15341                 ;;
15342         *)      : no select, so pick a harmless default
15343                 selectminbits='32'
15344                 ;;
15345         esac
15346         ;;
15347 esac
15348
15349 : Trace out the files included by signal.h, then look for SIGxxx names.
15350 : Remove SIGARRAYSIZE used by HPUX.
15351 : Remove SIGSTKSIZE used by Linux.
15352 : Remove SIGSTKSZ used by Posix.
15353 : Remove SIGTYP void lines used by OS2.
15354 : Some cpps, like os390, dont give the file name anywhere
15355 if [ "X$fieldn" = X ]; then
15356         : Just make some guesses.  We check them later.
15357         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15358 else
15359         xxx=`echo '#include <signal.h>' |
15360         $cppstdin $cppminus $cppflags 2>/dev/null |
15361         $grep '^[       ]*#.*include' | 
15362         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15363 fi
15364 : Check this list of files to be sure we have parsed the cpp output ok.
15365 : This will also avoid potentially non-existent files, such 
15366 : as ../foo/bar.h
15367 xxxfiles=''
15368 for xx in $xxx /dev/null ; do
15369         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15370 done
15371 : If we have found no files, at least try signal.h
15372 case "$xxxfiles" in
15373 '')     xxxfiles=`./findhdr signal.h` ;;
15374 esac
15375 xxx=`awk '
15376 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15377         print substr($2, 4, 20)
15378 }
15379 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15380         print substr($3, 4, 20)
15381 }' $xxxfiles`
15382 : Append some common names just in case the awk scan failed.
15383 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15384 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15385 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15386 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15387 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15388
15389 : generate a few handy files for later
15390 $cat > signal.c <<'EOCP'
15391 #include <sys/types.h>
15392 #include <signal.h>
15393 #include <stdio.h>
15394 int main() {
15395
15396 /* Strange style to avoid deeply-nested #if/#else/#endif */
15397 #ifndef NSIG
15398 #  ifdef _NSIG
15399 #    define NSIG (_NSIG)
15400 #  endif
15401 #endif
15402
15403 #ifndef NSIG
15404 #  ifdef SIGMAX
15405 #    define NSIG (SIGMAX+1)
15406 #  endif
15407 #endif
15408
15409 #ifndef NSIG
15410 #  ifdef SIG_MAX
15411 #    define NSIG (SIG_MAX+1)
15412 #  endif
15413 #endif
15414
15415 #ifndef NSIG
15416 #  ifdef MAXSIG
15417 #    define NSIG (MAXSIG+1)
15418 #  endif
15419 #endif
15420
15421 #ifndef NSIG
15422 #  ifdef MAX_SIG
15423 #    define NSIG (MAX_SIG+1)
15424 #  endif
15425 #endif
15426
15427 #ifndef NSIG
15428 #  ifdef SIGARRAYSIZE
15429 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15430 #  endif
15431 #endif
15432
15433 #ifndef NSIG
15434 #  ifdef _sys_nsig
15435 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15436 #  endif
15437 #endif
15438
15439 /* Default to some arbitrary number that's big enough to get most
15440    of the common signals.
15441 */
15442 #ifndef NSIG
15443 #    define NSIG 50
15444 #endif
15445
15446 printf("NSIG %d\n", NSIG);
15447
15448 #ifndef JUST_NSIG
15449
15450 EOCP
15451
15452 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15453 {
15454         printf "#ifdef SIG"; printf $1; printf "\n"
15455         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15456         printf $1; printf ");\n"
15457         printf "#endif\n"
15458 }
15459 END {
15460         printf "#endif /* JUST_NSIG */\n";
15461         printf "exit(0);\n}\n";
15462 }
15463 ' >>signal.c
15464 $cat >signal.awk <<'EOP'
15465 BEGIN { ndups = 0 }
15466 $1 ~ /^NSIG$/ { nsig = $2 }
15467 ($1 !~ /^NSIG$/) && (NF == 2) {
15468     if ($2 > maxsig) { maxsig = $2 }
15469     if (sig_name[$2]) {
15470         dup_name[ndups] = $1
15471         dup_num[ndups] = $2
15472         ndups++ 
15473     }
15474     else {
15475         sig_name[$2] = $1
15476         sig_num[$2] = $2
15477     }
15478 }
15479 END { 
15480     if (nsig == 0) {
15481         nsig = maxsig + 1
15482     }
15483     printf("NSIG %d\n", nsig);
15484     for (n = 1; n < nsig; n++) {
15485         if (sig_name[n]) {
15486             printf("%s %d\n", sig_name[n], sig_num[n])
15487         }
15488         else {
15489             printf("NUM%d %d\n", n, n) 
15490         }
15491     }
15492     for (n = 0; n < ndups; n++) {
15493         printf("%s %d\n", dup_name[n], dup_num[n])
15494     }
15495 }
15496 EOP
15497 $cat >signal_cmd <<EOS
15498 $startsh
15499 if $test -s signal.lst; then
15500     echo "Using your existing signal.lst file"
15501         exit 0
15502 fi
15503 xxx="$xxx"
15504 EOS
15505 $cat >>signal_cmd <<'EOS'
15506
15507 set signal
15508 if eval $compile_ok; then
15509         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15510 else
15511         echo "(I can't seem be able to compile the whole test program)" >&4
15512         echo "(I'll try it in little pieces.)" >&4
15513         set signal -DJUST_NSIG
15514         if eval $compile_ok; then
15515                 $run ./signal$_exe > signal.nsg
15516                 $cat signal.nsg
15517         else
15518                 echo "I can't seem to figure out how many signals you have." >&4
15519                 echo "Guessing 50." >&4
15520                 echo 'NSIG 50' > signal.nsg
15521         fi
15522         : Now look at all the signal names, one at a time.
15523         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15524                 $cat > signal.c <<EOCP
15525 #include <sys/types.h>
15526 #include <signal.h>
15527 #include <stdio.h>
15528 int main() {
15529 printf("$xx %d\n", SIG${xx});
15530 return 0;
15531 }
15532 EOCP
15533                 set signal
15534                 if eval $compile; then
15535                         echo "SIG${xx} found."
15536                         $run ./signal$_exe  >> signal.ls1
15537                 else
15538                         echo "SIG${xx} NOT found."
15539                 fi
15540         done
15541         if $test -s signal.ls1; then
15542                 $cat signal.nsg signal.ls1 |
15543                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15544         fi
15545
15546 fi
15547 if $test -s signal.lst; then
15548         :
15549 else
15550         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15551         echo 'kill -l' >signal
15552         set X `csh -f <signal`
15553         $rm -f signal
15554         shift
15555         case $# in
15556         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15557         esac
15558         echo $@ | $tr ' ' $trnl | \
15559             $awk '{ printf "%s %d\n", $1, ++s; }
15560                   END { printf "NSIG %d\n", ++s }' >signal.lst
15561 fi
15562 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15563 EOS
15564 chmod a+x signal_cmd
15565 $eunicefix signal_cmd
15566
15567 : generate list of signal names
15568 echo " "
15569 case "$sig_name_init" in
15570 '') doinit=yes ;;
15571 *)  case "$sig_num_init" in
15572     ''|*,*) doinit=yes ;;
15573     esac ;;
15574 esac
15575 case "$doinit" in
15576 yes)
15577         echo "Generating a list of signal names and numbers..." >&4
15578         . ./signal_cmd
15579         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15580         sig_name=`$awk 'BEGIN { printf "ZERO " }
15581                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15582         sig_num=`$awk  'BEGIN { printf "0 " }
15583                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15584         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15585                              !/^NSIG/   { printf "\"%s\", ", $1 }
15586                              END        { printf "0\n" }' signal.lst`
15587         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15588                              !/^NSIG/   { printf "%d, ", $2}
15589                              END        { printf "0\n"}' signal.lst`
15590         ;;
15591 esac
15592 echo "The following $sig_count signals are available:"
15593 echo " "
15594 echo $sig_name | $awk \
15595 'BEGIN { linelen = 0 }
15596 {
15597         for (i = 1; i <= NF; i++) {
15598                 name = "SIG" $i " "
15599                 linelen = linelen + length(name)
15600                 if (linelen > 70) {
15601                         printf "\n"
15602                         linelen = length(name)
15603                 }
15604                 printf "%s", name
15605         }
15606         printf "\n"
15607 }'
15608 sig_size=`echo $sig_name | awk '{print NF}'`
15609 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15610
15611 echo " "
15612 case "$sizetype" in
15613 *_t) zzz="$sizetype"    ;;
15614 *)   zzz="filesize"     ;;
15615 esac
15616 echo "Checking the size of $zzz..." >&4 
15617 cat > try.c <<EOCP
15618 #include <sys/types.h>
15619 #include <stdio.h>
15620 int main() {
15621     printf("%d\n", (int)sizeof($sizetype));
15622     exit(0);
15623 }
15624 EOCP
15625 set try
15626 if eval $compile_ok; then
15627         yyy=`$run ./try`
15628         case "$yyy" in
15629         '')     sizesize=4
15630                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15631                 ;;
15632         *)      sizesize=$yyy
15633                 echo "Your $zzz size is $sizesize bytes."
15634                 ;;
15635         esac
15636 else
15637         sizesize=4
15638         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15639 fi
15640
15641
15642 : check for socklen_t
15643 echo " "
15644 echo "Checking to see if you have socklen_t..." >&4
15645 $cat >try.c <<EOCP
15646 #include <sys/types.h>
15647 #$d_socket HAS_SOCKET
15648 #ifdef HAS_SOCKET
15649 #include <sys/socket.h>
15650 #endif
15651 int main() { socklen_t x = 16; }
15652 EOCP
15653 set try
15654 if eval $compile; then
15655         val="$define"
15656         echo "You have socklen_t."
15657 else
15658         val="$undef"
15659         echo "You do not have socklen_t."
15660         case "$sizetype" in
15661         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15662         esac
15663 fi
15664 $rm -f try try.*
15665 set d_socklen_t
15666 eval $setvar
15667
15668 : see if this is a socks.h system
15669 set socks.h i_socks
15670 eval $inhdr
15671
15672 : check for type of the size argument to socket calls
15673 case "$d_socket" in
15674 "$define")
15675         $cat <<EOM
15676
15677 Checking to see what type is the last argument of accept().
15678 EOM
15679         yyy=''
15680         case "$d_socklen_t" in
15681         "$define") yyy="$yyy socklen_t"
15682         esac
15683         yyy="$yyy $sizetype int long unsigned"
15684         for xxx in $yyy; do
15685                 case "$socksizetype" in
15686                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15687                         case "$usesocks" in
15688                         "$define")
15689                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15690                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15691                                         socksizetype="$xxx"
15692                                 fi
15693                                 ;;
15694                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15695                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15696                                         socksizetype="$xxx"
15697                                 fi
15698                                 ;;
15699                         esac
15700                         ;;
15701                 esac
15702         done
15703 : In case none of those worked, prompt the user.
15704         case "$socksizetype" in
15705         '')     rp='What is the type for socket address structure sizes?'
15706                 dflt='int'
15707                 . ./myread
15708                 socksizetype=$ans
15709                 ;;
15710         esac
15711         ;;
15712 *)      : no sockets, so pick relatively harmless default
15713         socksizetype='int'
15714         ;;
15715 esac
15716
15717 : see what type is used for signed size_t
15718 set ssize_t ssizetype int stdio.h sys/types.h
15719 eval $typedef
15720 dflt="$ssizetype"
15721 $cat > try.c <<EOM
15722 #include <stdio.h>
15723 #include <sys/types.h>
15724 #define Size_t $sizetype
15725 #define SSize_t $dflt
15726 int main()
15727 {
15728         if (sizeof(Size_t) == sizeof(SSize_t))
15729                 printf("$dflt\n");
15730         else if (sizeof(Size_t) == sizeof(int))
15731                 printf("int\n");
15732         else 
15733                 printf("long\n");
15734         exit(0);
15735 }
15736 EOM
15737 echo " "
15738 set try
15739 if eval $compile_ok && $run ./try > /dev/null; then
15740         ssizetype=`$run ./try`
15741         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15742 else
15743         $cat >&4 <<EOM
15744 Help! I can't compile and run the ssize_t test program: please enlighten me!
15745 (This is probably a misconfiguration in your system or libraries, and
15746 you really ought to fix it.  Still, I'll try anyway.)
15747
15748 I need a type that is the same size as $sizetype, but is guaranteed to
15749 be signed.  Common values are ssize_t, int and long.
15750
15751 EOM
15752         rp="What signed type is the same size as $sizetype?"
15753         . ./myread
15754         ssizetype="$ans"
15755 fi
15756 $rm -f try try.*
15757
15758 : see what type of char stdio uses.
15759 echo " "
15760 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15761 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15762         echo "Your stdio uses unsigned chars." >&4
15763         stdchar="unsigned char"
15764 else
15765         echo "Your stdio uses signed chars." >&4
15766         stdchar="char"
15767 fi
15768 $rm -f stdioh
15769
15770
15771
15772 : see if time exists
15773 echo " "
15774 if test "X$d_time" = X -o X"$timetype" = X; then
15775     if set time val -f d_time; eval $csym; $val; then
15776                 echo 'time() found.' >&4
15777                 val="$define"
15778                 rp="What is the type returned by time() on this system?"
15779                 set time_t timetype long stdio.h sys/types.h
15780                 eval $typedef_ask
15781     else
15782                 echo 'time() not found, hope that will do.' >&4
15783                 val="$undef"
15784                 timetype='int';
15785     fi
15786     set d_time
15787     eval $setvar
15788 fi
15789
15790 : see what type uids are declared as in the kernel
15791 echo " "
15792 echo "Looking for the type for user ids returned by getuid()."
15793 set uid_t uidtype xxx stdio.h sys/types.h
15794 eval $typedef
15795 case "$uidtype" in
15796 xxx)
15797         xxx=`./findhdr sys/user.h`
15798         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15799         case $1 in
15800         unsigned) dflt="$1 $2" ;;
15801         *) dflt="$1" ;;
15802         esac
15803         ;;
15804 *) dflt="$uidtype";;
15805 esac
15806 case "$uidtype" in
15807 uid_t)  echo "uid_t found." ;;
15808 *)      rp="What is the type for user ids returned by getuid()?"
15809         . ./myread
15810         uidtype="$ans"
15811         ;;
15812 esac
15813
15814 echo " "
15815 case "$uidtype" in
15816 *_t) zzz="$uidtype"     ;;
15817 *)   zzz="uid"          ;;
15818 esac
15819 echo "Checking the size of $zzz..." >&4 
15820 cat > try.c <<EOCP
15821 #include <sys/types.h>
15822 #include <stdio.h>
15823 int main() {
15824     printf("%d\n", (int)sizeof($uidtype));
15825     exit(0);
15826 }
15827 EOCP
15828 set try
15829 if eval $compile_ok; then
15830         yyy=`$run ./try`
15831         case "$yyy" in
15832         '')     uidsize=4
15833                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15834                 ;;
15835         *)      uidsize=$yyy
15836                 echo "Your $zzz is $uidsize bytes long."
15837                 ;;
15838         esac
15839 else
15840         uidsize=4
15841         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15842 fi
15843
15844 echo " "
15845 case "$uidtype" in
15846 *_t) zzz="$uidtype"     ;;
15847 *)   zzz="uid"          ;;
15848 esac
15849 echo "Checking the sign of $zzz..." >&4
15850 cat > try.c <<EOCP
15851 #include <sys/types.h>
15852 #include <stdio.h>
15853 int main() {
15854         $uidtype foo = -1;
15855         if (foo < 0)
15856                 printf("-1\n");
15857         else
15858                 printf("1\n");
15859 }
15860 EOCP
15861 set try
15862 if eval $compile; then
15863         yyy=`$run ./try`
15864         case "$yyy" in
15865         '')     uidsign=1
15866                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15867                 ;;
15868         *)      uidsign=$yyy
15869                 case "$uidsign" in
15870                  1) echo "Your $zzz is unsigned." ;;
15871                 -1) echo "Your $zzz is signed."   ;;
15872                 esac
15873                 ;;
15874         esac
15875 else
15876         uidsign=1
15877         echo "(I can't compile the test program--guessing unsigned.)" >&4
15878 fi
15879
15880
15881
15882 echo " "
15883 $echo "Checking the format string to be used for uids..." >&4
15884
15885 case "$uidsign" in
15886 -1)     if $test X"$uidsize" = X"$ivsize"; then
15887                 uidformat="$ivdformat"
15888         else
15889                 if $test X"$uidsize" = X"$longsize"; then
15890                         uidformat='"ld"'
15891                 else
15892                         if $test X"$uidsize" = X"$intsize"; then
15893                                 uidformat='"d"'
15894                         else
15895                                 if $test X"$uidsize" = X"$shortsize"; then
15896                                         uidformat='"hd"'
15897                                 fi
15898                         fi
15899                 fi
15900         fi
15901         ;;
15902 *)      if $test X"$uidsize" = X"$uvsize"; then
15903                 uidformat="$uvuformat"
15904         else
15905                 if $test X"$uidsize" = X"$longsize"; then
15906                         uidformat='"lu"'
15907                 else
15908                         if $test X"$uidsize" = X"$intsize"; then
15909                                 uidformat='"u"'
15910                         else
15911                                 if $test X"$uidsize" = X"$shortsize"; then
15912                                         uidformat='"hu"'
15913                                 fi
15914                         fi
15915                 fi
15916         fi
15917         ;;
15918 esac
15919
15920 : determine compiler compiler
15921 case "$yacc" in
15922 '')
15923         dflt=yacc;;
15924 *)
15925         dflt="$yacc";;
15926 esac
15927 echo " "
15928 comp='yacc'
15929 if $test -f "$byacc$_exe"; then
15930         dflt="$byacc"
15931         comp="byacc or $comp"
15932 fi
15933 if $test -f "$bison$_exe"; then
15934         comp="$comp or bison -y"
15935 fi
15936 rp="Which compiler compiler ($comp) shall I use?"
15937 . ./myread
15938 yacc="$ans"
15939 case "$yacc" in
15940 *bis*)
15941         case "$yacc" in
15942         *-y*) ;;
15943         *)
15944                 yacc="$yacc -y"
15945                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15946                 ;;
15947         esac
15948         ;;
15949 esac
15950
15951 : see if this is a fp.h system
15952 set fp.h i_fp
15953 eval $inhdr
15954
15955 : see if this is a fp_class.h system
15956 set fp_class.h i_fp_class
15957 eval $inhdr
15958
15959 : see if this is a ieeefp.h system
15960 case "$i_ieeefp" in
15961 '' ) set ieeefp.h i_ieeefp
15962      eval $inhdr
15963      ;;
15964 esac
15965
15966 : see if this is a libutil.h system
15967 set libutil.h i_libutil
15968 eval $inhdr
15969
15970 : see if locale.h is available
15971 set locale.h i_locale
15972 eval $inhdr
15973
15974 : see if mach cthreads are available
15975 if test "X$usethreads" = "X$define"; then
15976         set mach/cthreads.h i_machcthr
15977         eval $inhdr
15978 else
15979         i_machcthr="$undef"
15980 fi
15981
15982
15983
15984 : see if this is a math.h system
15985 set math.h i_math
15986 eval $inhdr
15987
15988 : see if this is a mntent.h system
15989 set mntent.h i_mntent
15990 eval $inhdr
15991
15992 : see if ndbm.h is available
15993 set ndbm.h t_ndbm
15994 eval $inhdr
15995 case "$t_ndbm" in
15996 $define)
15997         : see if dbm_open exists
15998         set dbm_open d_dbm_open
15999         eval $inlibc
16000         case "$d_dbm_open" in
16001         $undef)
16002                 t_ndbm="$undef"
16003                 echo "We won't be including <ndbm.h>"
16004                 ;;
16005         esac
16006         ;;
16007 esac
16008 val="$t_ndbm"
16009 set i_ndbm
16010 eval $setvar
16011
16012 : see if net/errno.h is available
16013 val=''
16014 set net/errno.h val
16015 eval $inhdr
16016
16017 : Unfortunately, it causes problems on some systems.  Arrgh.
16018 case "$val" in
16019 $define)
16020         cat > try.c <<'EOM'
16021 #include <stdio.h>
16022 #include <errno.h>
16023 #include <net/errno.h>
16024 int func()
16025 {
16026         return ENOTSOCK;
16027 }
16028 EOM
16029         if $cc $ccflags -c try.c >/dev/null 2>&1; then
16030                 echo "We'll be including <net/errno.h>." >&4
16031         else
16032                 echo "We won't be including <net/errno.h>." >&4
16033                 val="$undef"
16034         fi
16035         $rm -f try.* try
16036         ;;
16037 esac
16038 set i_neterrno
16039 eval $setvar
16040
16041 : see if netinet/tcp.h is available
16042 set netinet/tcp.h i_netinettcp
16043 eval $inhdr
16044
16045 : see if this is a poll.h system
16046 set poll.h i_poll
16047 eval $inhdr
16048
16049 : see if this is a prot.h system
16050 set prot.h i_prot
16051 eval $inhdr
16052
16053 echo " "
16054 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
16055 $cat <<'EOSH' > Cppsym.know
16056 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
16057 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
16058 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
16059 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
16060 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
16061 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
16062 bull c cadmus clipper CMU COFF COMPILER_VERSION
16063 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
16064 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
16065 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
16066 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
16067 GLIBC GLIBC_MINOR
16068 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
16069 H3050R H3050RX hbullx20 hcx host_mips
16070 hp200 hp300 hp700 HP700 hp800 hp9000
16071 hp9000s200 hp9000s300 hp9000s400 hp9000s500
16072 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
16073 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
16074 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
16075 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
16076 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
16077 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
16078 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
16079 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
16080 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
16081 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
16082 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
16083 MATH_HAS_NO_SIDE_EFFECTS
16084 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
16085 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
16086 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
16087 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
16088 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
16089 NetBSD news1500 news1700 news1800 news1900 news3700
16090 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
16091 ns32016 ns32332 ns32k nsc32000
16092 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
16093 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
16094 pc532 pdp11 PGC PIC plexus PORTAR posix
16095 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
16096 POSIX_C_SOURCE POSIX_SOURCE POWER
16097 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
16098 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
16099 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
16100 sony sony_news sonyrisc sparc sparclite spectrum
16101 stardent stdc STDC_EXT stratos sun sun3 sun386
16102 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
16103 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
16104 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
16105 sysV68 sysV88 Tek4132 Tek4300 titan
16106 TM3200 TM5400 TM5600
16107 tower tower32 tower32_200 tower32_600 tower32_700
16108 tower32_800 tower32_850 tss
16109 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
16110 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
16111 unix UNIX95 UNIX99 unixpc unos
16112 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
16113 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
16114 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
16115 USGr4 USGr4_2
16116 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
16117 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
16118 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
16119 z8000
16120 EOSH
16121 # Maybe put other stuff here too.
16122 cat <<EOSH >>Cppsym.know
16123 $osname
16124 EOSH
16125 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
16126 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
16127 $cat Cppsym.know > Cppsym.c
16128 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
16129 $rm -f Cppsym.a Cppsym.b Cppsym.c
16130 cat <<EOSH > Cppsym
16131 $startsh
16132 if $test \$# -gt 0; then
16133     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
16134     if $test -s Cppsym.got; then
16135         $rm -f Cppsym.got
16136         exit 0
16137     fi
16138     $rm -f Cppsym.got
16139     exit 1
16140 else
16141     $tr " " "$trnl" | ./Cppsym.try
16142     exit 0
16143 fi
16144 EOSH
16145 chmod +x Cppsym
16146 $eunicefix Cppsym
16147 cat <<EOSH > Cppsym.try
16148 $startsh
16149 cat <<'EOCP' > try.c
16150 #include <stdio.h>
16151 int main() {
16152 EOCP
16153 $awk \\
16154 EOSH
16155 cat <<'EOSH' >> Cppsym.try
16156 'length($1) > 0 {
16157     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
16158     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
16159     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
16160     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
16161 }'       >> try.c
16162 echo 'return 0;}' >> try.c
16163 EOSH
16164 cat <<EOSH >> Cppsym.try
16165 ccflags="$ccflags"
16166 case "$osname-$gccversion" in
16167 irix-) ccflags="\$ccflags -woff 1178" ;;
16168 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16169 esac
16170 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
16171 EOSH
16172 chmod +x Cppsym.try
16173 $eunicefix Cppsym.try
16174 ./Cppsym < Cppsym.know > Cppsym.true
16175 : now check the C compiler for additional symbols
16176 postprocess_cc_v=''
16177 case "$osname" in
16178 aix) postprocess_cc_v="|$tr , ' '" ;;
16179 esac
16180 $cat >ccsym <<EOS
16181 $startsh
16182 $cat >tmp.c <<EOF
16183 extern int foo;
16184 EOF
16185 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16186 do
16187         case "\$i" in
16188         -D*) echo "\$i" | $sed 's/^-D//';;
16189         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16190         esac
16191 done
16192 $rm -f try.c
16193 EOS
16194 postprocess_cc_v=''
16195 chmod +x ccsym
16196 $eunicefix ccsym
16197 ./ccsym > ccsym1.raw
16198 if $test -s ccsym1.raw; then
16199        $sort ccsym1.raw | $uniq >ccsym.raw
16200 else
16201        mv ccsym1.raw ccsym.raw
16202 fi
16203
16204 $awk '/\=/ { print $0; next }
16205         { print $0"=1" }' ccsym.raw >ccsym.list
16206 $awk '/\=/ { print $0; next }
16207         { print $0"=1" }' Cppsym.true >ccsym.true
16208 $comm -13 ccsym.true ccsym.list >ccsym.own
16209 $comm -12 ccsym.true ccsym.list >ccsym.com
16210 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16211 also=''
16212 if $test -z ccsym.raw; then
16213         echo "Your C compiler doesn't seem to define any symbols!" >&4
16214         echo " "
16215         echo "However, your C preprocessor defines the following symbols:"
16216         $cat Cppsym.true
16217         ccsymbols=''
16218         cppsymbols=`$cat Cppsym.true`
16219         cppsymbols=`echo $cppsymbols`
16220         cppccsymbols="$cppsymbols"
16221 else
16222         if $test -s ccsym.com; then
16223                 echo "Your C compiler and pre-processor define these symbols:"
16224                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16225                 also='also '
16226                 symbols='ones'
16227                 cppccsymbols=`$cat ccsym.com`
16228                 cppccsymbols=`echo $cppccsymbols`
16229                 $test "$silent" || sleep 1
16230         fi
16231         if $test -s ccsym.cpp; then
16232                 $test "$also" && echo " "
16233                 echo "Your C pre-processor ${also}defines the following symbols:"
16234                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16235                 also='further '
16236                 cppsymbols=`$cat ccsym.cpp`
16237                 cppsymbols=`echo $cppsymbols`
16238                 $test "$silent" || sleep 1
16239         fi
16240         if $test -s ccsym.own; then
16241                 $test "$also" && echo " "
16242                 echo "Your C compiler ${also}defines the following cpp symbols:"
16243                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16244                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16245                 ccsymbols=`$cat ccsym.own`
16246                 ccsymbols=`echo $ccsymbols`
16247                 $test "$silent" || sleep 1
16248         fi
16249 fi
16250
16251 : see if this is a termio system
16252 val="$undef"
16253 val2="$undef"
16254 val3="$undef"
16255 if $test `./findhdr termios.h`; then
16256         set tcsetattr i_termios
16257         eval $inlibc
16258         val3="$i_termios"
16259 fi
16260 echo " "
16261 case "$val3" in
16262 "$define") echo "You have POSIX termios.h... good!" >&4;;
16263 *) if ./Cppsym pyr; then
16264                 case "`/bin/universe`" in
16265                 ucb) if $test `./findhdr sgtty.h`; then
16266                                 val2="$define"
16267                                 echo "<sgtty.h> found." >&4
16268                         else
16269                                 echo "System is pyramid with BSD universe."
16270                                 echo "<sgtty.h> not found--you could have problems." >&4
16271                         fi;;
16272                 *) if $test `./findhdr termio.h`; then
16273                                 val="$define"
16274                                 echo "<termio.h> found." >&4
16275                         else
16276                                 echo "System is pyramid with USG universe."
16277                                 echo "<termio.h> not found--you could have problems." >&4
16278                         fi;;
16279                 esac
16280         elif ./usg; then
16281                 if $test `./findhdr termio.h`; then
16282                         echo "<termio.h> found." >&4
16283                         val="$define"
16284                 elif $test `./findhdr sgtty.h`; then
16285                         echo "<sgtty.h> found." >&4
16286                         val2="$define"
16287                 else
16288 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16289                 fi
16290         else
16291                 if $test `./findhdr sgtty.h`; then
16292                         echo "<sgtty.h> found." >&4
16293                         val2="$define"
16294                 elif $test `./findhdr termio.h`; then
16295                         echo "<termio.h> found." >&4
16296                         val="$define"
16297                 else
16298 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16299                 fi
16300         fi;;
16301 esac
16302 set i_termio; eval $setvar
16303 val=$val2; set i_sgtty; eval $setvar
16304 val=$val3; set i_termios; eval $setvar
16305
16306 : see if this is a shadow.h system
16307 set shadow.h i_shadow
16308 eval $inhdr
16309
16310 : see if stddef is available
16311 set stddef.h i_stddef
16312 eval $inhdr
16313
16314 : see if this is a sunmath.h system
16315 set sunmath.h i_sunmath
16316 eval $inhdr
16317
16318 : see if sys/access.h is available
16319 set sys/access.h i_sysaccess
16320 eval $inhdr
16321
16322 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16323 set sys/filio.h i_sysfilio
16324 eval $inhdr
16325 echo " "
16326 if $test `./findhdr sys/ioctl.h`; then
16327         val="$define"
16328         echo '<sys/ioctl.h> found.' >&4
16329 else
16330         val="$undef"
16331         if $test $i_sysfilio = "$define"; then
16332             echo '<sys/ioctl.h> NOT found.' >&4
16333         else
16334                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16335                 $test $i_termio = "$define" && xxx="termio.h"
16336                 $test $i_termios = "$define" && xxx="termios.h"
16337 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16338         fi
16339 fi
16340 set i_sysioctl
16341 eval $setvar
16342
16343 : see if socket ioctl defs are in sys/sockio.h
16344 echo " "
16345 xxx=`./findhdr sys/sockio.h`
16346 if $test "$xxx"; then
16347         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16348                 val="$define"
16349                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16350         else
16351                 val="$undef"
16352                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16353         fi
16354 else
16355         val="$undef"
16356         $cat <<EOM
16357 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16358 EOM
16359 fi
16360 set i_syssockio
16361 eval $setvar
16362
16363
16364 : see if this is a syslog.h system
16365 set syslog.h i_syslog
16366 eval $inhdr
16367
16368
16369 : see if this is a sys/mode.h system
16370 set sys/mode.h i_sysmode
16371 eval $inhdr
16372
16373 : see if sys/resource.h has to be included
16374 set sys/resource.h i_sysresrc
16375 eval $inhdr
16376
16377 : see if sys/security.h is available
16378 set sys/security.h i_syssecrt
16379 eval $inhdr
16380
16381 : see if this is a sys/statvfs.h system
16382 set sys/statvfs.h i_sysstatvfs
16383 eval $inhdr
16384
16385 : see if this is a sys/un.h system
16386 set sys/un.h i_sysun
16387 eval $inhdr
16388
16389
16390 : see if this is a sys/utsname.h system
16391 set sys/utsname.h i_sysutsname
16392 eval $inhdr
16393
16394 : see if this is a syswait system
16395 set sys/wait.h i_syswait
16396 eval $inhdr
16397
16398 : see if this is a ustat.h system
16399 set ustat.h i_ustat
16400 eval $inhdr
16401
16402 : see if this is an utime system
16403 set utime.h i_utime
16404 eval $inhdr
16405
16406 : see if this is a values.h system
16407 set values.h i_values
16408 eval $inhdr
16409
16410 : see if this is a vfork system
16411 case "$d_vfork" in
16412 "$define")
16413         set vfork.h i_vfork
16414         eval $inhdr
16415         ;;
16416 *)
16417         i_vfork="$undef"
16418         ;;
16419 esac
16420
16421 : see if gdbm.h is available
16422 set gdbm.h t_gdbm
16423 eval $inhdr
16424 case "$t_gdbm" in
16425 $define)
16426         : see if gdbm_open exists
16427         set gdbm_open d_gdbm_open
16428         eval $inlibc
16429         case "$d_gdbm_open" in
16430         $undef)
16431                 t_gdbm="$undef"
16432                 echo "We won't be including <gdbm.h>"
16433                 ;;
16434         esac
16435         ;;
16436 esac
16437 val="$t_gdbm"
16438 set i_gdbm
16439 eval $setvar
16440
16441 echo " "
16442 echo "Looking for extensions..." >&4
16443 : If we are using the old config.sh, known_extensions may contain
16444 : old or inaccurate or duplicate values.
16445 known_extensions=''
16446 nonxs_extensions=''
16447 : We do not use find because it might not be available.
16448 : We do not just use MANIFEST because the user may have dropped
16449 : some additional extensions into the source tree and expect them
16450 : to be built.
16451
16452 : Function to recursively find available extensions, ignoring DynaLoader
16453 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16454 find_extensions='
16455     for xxx in *; do
16456        case "$xxx" in
16457            DynaLoader|dynaload) ;;
16458            *)
16459            if $test -f $xxx/$xxx.xs; then
16460                known_extensions="$known_extensions $1$xxx";
16461            elif $test -f $xxx/Makefile.PL; then
16462                nonxs_extensions="$nonxs_extensions $1$xxx";
16463            else
16464                if $test -d $xxx -a $# -lt 10; then
16465                    set $1$xxx/ $*;
16466                    cd $xxx;
16467                    eval $find_extensions;
16468                    cd ..;
16469                    shift;
16470                fi;
16471            fi
16472            ;;
16473        esac;
16474     done'
16475 tdir=`pwd`
16476 cd $rsrc/ext
16477 set X
16478 shift
16479 eval $find_extensions
16480 # Special case:  Add in threads/shared since it is not picked up by the
16481 # recursive find above (and adding in general recursive finding breaks
16482 # SDBM_File/sdbm).  A.D.  10/25/2001.
16483 known_extensions="$known_extensions threads/shared"
16484 set X $nonxs_extensions
16485 shift
16486 nonxs_extensions="$*"
16487 set X $known_extensions
16488 shift
16489 known_extensions="$*"
16490 cd $tdir
16491
16492 : Now see which are supported on this system.
16493 avail_ext=''
16494 for xxx in $known_extensions ; do
16495         case "$xxx" in
16496         DB_File|db_file)
16497                 case "$i_db" in
16498                 $define) avail_ext="$avail_ext $xxx" ;;
16499                 esac
16500                 ;;
16501         GDBM_File|gdbm_fil)
16502                 case "$i_gdbm" in 
16503                 $define) avail_ext="$avail_ext $xxx" ;;
16504                 esac
16505                 ;;
16506         I18N/Langinfo|i18n_lan)
16507                 case "$i_langinfo$d_nl_langinfo" in 
16508                 $define$define) avail_ext="$avail_ext $xxx" ;;
16509                 esac
16510                 ;;
16511         NDBM_File|ndbm_fil)
16512                 case "$i_ndbm" in
16513                 $define)
16514                     case "$osname-$use64bitint" in
16515                     cygwin-*|hpux-define)
16516                         case "$libs" in
16517                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16518                         esac
16519                         ;;
16520                     *) avail_ext="$avail_ext $xxx" ;;
16521                     esac
16522                     ;;
16523                 esac
16524                 ;;
16525         ODBM_File|odbm_fil) 
16526                 case "${i_dbm}${i_rpcsvcdbm}" in
16527                 *"${define}"*)
16528                     case "$osname-$use64bitint" in
16529                     cygwin-*|hpux-define)
16530                         case "$libs" in
16531                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16532                         esac
16533                         ;;
16534                     *) avail_ext="$avail_ext $xxx" ;;
16535                     esac
16536                     ;;
16537                 esac
16538                 ;;
16539         POSIX|posix)
16540                 case "$useposix" in
16541                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16542                 esac
16543                 ;;
16544         Opcode|opcode)
16545                 case "$useopcode" in
16546                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16547                 esac
16548                 ;;
16549         Socket|socket)
16550                 case "$d_socket" in 
16551                 true|$define|y)
16552                     case "$osname" in
16553                     beos) ;; # not unless BONE
16554                     *) avail_ext="$avail_ext $xxx" ;;
16555                     esac
16556                     ;;
16557                 esac
16558                 ;;
16559         Sys/Syslog|sys/syslog)
16560                 : XXX syslog requires socket
16561                 case "$d_socket" in 
16562                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16563                 esac
16564                 ;;
16565         Thread|thread)
16566                 case "$usethreads" in
16567                 true|$define|y)
16568                         case "$useithreads" in
16569                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16570                         esac
16571                 esac
16572                 ;;
16573         threads|threads/shared)
16574                 case "$usethreads" in
16575                 true|$define|y)
16576                         case "$useithreads" in
16577                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16578                         esac
16579                 esac
16580                 ;;
16581         IPC/SysV|ipc/sysv)
16582                 : XXX Do we need a useipcsysv variable here
16583                 case "${d_msg}${d_sem}${d_shm}" in 
16584                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16585                 esac
16586                 ;;
16587         *)      avail_ext="$avail_ext $xxx"
16588                 ;;
16589         esac
16590 done
16591
16592 set X $avail_ext
16593 shift
16594 avail_ext="$*"
16595
16596 : Now see which nonxs extensions are supported on this system.
16597 : For now assume all are.
16598 nonxs_ext=''
16599 for xxx in $nonxs_extensions ; do
16600         case "$xxx" in
16601         *)      nonxs_ext="$nonxs_ext $xxx"
16602                 ;;
16603         esac
16604 done
16605
16606 set X $nonxs_ext
16607 shift
16608 nonxs_ext="$*"
16609
16610 case $usedl in
16611 $define)
16612         $cat <<EOM
16613 A number of extensions are supplied with $package.  You may choose to
16614 compile these extensions for dynamic loading (the default), compile
16615 them into the $package executable (static loading), or not include
16616 them at all.  Answer "none" to include no extensions.
16617 Note that DynaLoader is always built and need not be mentioned here.
16618
16619 EOM
16620         case "$dynamic_ext" in
16621         '') dflt="$avail_ext" ;;
16622         *)      dflt="$dynamic_ext"
16623                 # Perhaps we are reusing an old out-of-date config.sh.
16624                 case "$hint" in
16625                 previous)
16626                         if test X"$dynamic_ext" != X"$avail_ext"; then
16627                                 $cat <<EOM
16628 NOTICE:  Your previous config.sh list may be incorrect. 
16629 The extensions now available to you are 
16630         ${avail_ext}
16631 but the default list from your previous config.sh is
16632         ${dynamic_ext} 
16633
16634 EOM
16635                         fi
16636                         ;;
16637                 esac
16638                 ;;
16639         esac
16640         case "$dflt" in
16641         '')     dflt=none;;
16642         esac
16643         rp="What extensions do you wish to load dynamically?"
16644         . ./myread
16645         case "$ans" in
16646         none) dynamic_ext=' ' ;;
16647         *) dynamic_ext="$ans" ;;
16648         esac
16649
16650         case "$static_ext" in
16651         '')
16652                 : Exclude those already listed in dynamic linking
16653                 dflt=''
16654                 for xxx in $avail_ext; do
16655                         case " $dynamic_ext " in
16656                         *" $xxx "*) ;;
16657                         *) dflt="$dflt $xxx" ;;
16658                         esac
16659                 done
16660                 set X $dflt
16661                 shift
16662                 dflt="$*"
16663                 ;;
16664         *)  dflt="$static_ext" 
16665                 ;;
16666         esac
16667
16668         case "$dflt" in
16669         '')     dflt=none;;
16670         esac
16671         rp="What extensions do you wish to load statically?"
16672         . ./myread
16673         case "$ans" in
16674         none) static_ext=' ' ;;
16675         *) static_ext="$ans" ;;
16676         esac
16677         ;;
16678 *)
16679         $cat <<EOM
16680 A number of extensions are supplied with $package.  Answer "none" 
16681 to include no extensions. 
16682 Note that DynaLoader is always built and need not be mentioned here.
16683
16684 EOM
16685         case "$static_ext" in
16686         '') dflt="$avail_ext" ;;
16687         *)      dflt="$static_ext"
16688                 # Perhaps we are reusing an old out-of-date config.sh.
16689                 case "$hint" in
16690                 previous)
16691                         if test X"$static_ext" != X"$avail_ext"; then
16692                                 $cat <<EOM
16693 NOTICE:  Your previous config.sh list may be incorrect. 
16694 The extensions now available to you are 
16695         ${avail_ext}
16696 but the default list from your previous config.sh is
16697         ${static_ext} 
16698
16699 EOM
16700                         fi
16701                         ;;
16702                 esac
16703                 ;;
16704         esac
16705         : Exclude those that are not xs extensions
16706         case "$dflt" in
16707         '')     dflt=none;;
16708         esac
16709         rp="What extensions do you wish to include?"
16710         . ./myread
16711         case "$ans" in
16712         none) static_ext=' ' ;;
16713         *) static_ext="$ans" ;;
16714         esac
16715         ;;
16716 esac
16717
16718 set X $dynamic_ext $static_ext $nonxs_ext
16719 shift
16720 extensions="$*"
16721
16722 : Remove libraries needed only for extensions
16723 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16724 : The exception is SunOS 4.x, which needs them.
16725 case "${osname}X${osvers}" in
16726 sunos*X4*)
16727     perllibs="$libs"
16728     ;;
16729 *) case "$usedl" in
16730     $define|true|[yY]*)
16731             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16732             shift
16733             perllibs="$*"
16734             ;;
16735     *)  perllibs="$libs"
16736             ;;
16737     esac
16738     ;;
16739 esac
16740
16741 : Remove build directory name from cppstdin so it can be used from
16742 : either the present location or the final installed location.
16743 echo " "
16744 : Get out of the UU directory to get correct path name.
16745 cd ..
16746 case "$cppstdin" in
16747 `pwd`/cppstdin)
16748         echo "Stripping down cppstdin path name"
16749         cppstdin=cppstdin
16750         ;;
16751 esac
16752 cd UU
16753
16754 : end of configuration questions
16755 echo " "
16756 echo "End of configuration questions."
16757 echo " "
16758
16759 : back to where it started
16760 if test -d ../UU; then
16761         cd ..
16762 fi
16763
16764 : configuration may be patched via a 'config.arch' file
16765 if $test -f config.arch; then
16766         echo "I see a config.arch file, loading it."
16767         . ./config.arch
16768 fi
16769
16770 : configuration may be patched via a 'config.over' file
16771 if $test -f config.over; then
16772         echo " "
16773         dflt=y
16774         rp='I see a config.over file.  Do you wish to load it?'
16775         . UU/myread
16776         case "$ans" in
16777         n*) echo "OK, I'll ignore it.";;
16778         *)      . ./config.over
16779                 echo "Configuration override changes have been loaded."
16780                 ;;
16781         esac
16782 fi
16783
16784 : in case they want portability, strip down executable paths
16785 case "$d_portable" in
16786 "$define")
16787         echo " "
16788         echo "Stripping down executable paths..." >&4
16789         for file in $loclist $trylist; do
16790                 eval temp=\$$file
16791                 eval $file=`basename $temp`
16792         done
16793         ;;
16794 esac
16795
16796 : create config.sh file
16797 echo " "
16798 echo "Creating config.sh..." >&4
16799 $spitshell <<EOT >config.sh
16800 $startsh
16801 #
16802 # This file was produced by running the Configure script. It holds all the
16803 # definitions figured out by Configure. Should you modify one of these values,
16804 # do not forget to propagate your changes by running "Configure -der". You may
16805 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16806 #
16807
16808 # Package name      : $package
16809 # Source directory  : $src
16810 # Configuration time: $cf_time
16811 # Configured by     : $cf_by
16812 # Target system     : $myuname
16813
16814 Author='$Author'
16815 Date='$Date'
16816 Header='$Header'
16817 Id='$Id'
16818 Locker='$Locker'
16819 Log='$Log'
16820 Mcc='$Mcc'
16821 RCSfile='$RCSfile'
16822 Revision='$Revision'
16823 Source='$Source'
16824 State='$State'
16825 _a='$_a'
16826 _exe='$_exe'
16827 _o='$_o'
16828 afs='$afs'
16829 afsroot='$afsroot'
16830 alignbytes='$alignbytes'
16831 ansi2knr='$ansi2knr'
16832 aphostname='$aphostname'
16833 api_revision='$api_revision'
16834 api_subversion='$api_subversion'
16835 api_version='$api_version'
16836 api_versionstring='$api_versionstring'
16837 ar='$ar'
16838 archlib='$archlib'
16839 archlibexp='$archlibexp'
16840 archname64='$archname64'
16841 archname='$archname'
16842 archobjs='$archobjs'
16843 awk='$awk'
16844 baserev='$baserev'
16845 bash='$bash'
16846 bin='$bin'
16847 bincompat5005='$bincompat5005'
16848 binexp='$binexp'
16849 bison='$bison'
16850 byacc='$byacc'
16851 byteorder='$byteorder'
16852 c='$c'
16853 castflags='$castflags'
16854 cat='$cat'
16855 cc='$cc'
16856 cccdlflags='$cccdlflags'
16857 ccdlflags='$ccdlflags'
16858 ccflags='$ccflags'
16859 ccflags_uselargefiles='$ccflags_uselargefiles'
16860 ccname='$ccname'
16861 ccsymbols='$ccsymbols'
16862 ccversion='$ccversion'
16863 cf_by='$cf_by'
16864 cf_email='$cf_email'
16865 cf_time='$cf_time'
16866 charsize='$charsize'
16867 chgrp='$chgrp'
16868 chmod='$chmod'
16869 chown='$chown'
16870 clocktype='$clocktype'
16871 comm='$comm'
16872 compress='$compress'
16873 contains='$contains'
16874 cp='$cp'
16875 cpio='$cpio'
16876 cpp='$cpp'
16877 cpp_stuff='$cpp_stuff'
16878 cppccsymbols='$cppccsymbols'
16879 cppflags='$cppflags'
16880 cpplast='$cpplast'
16881 cppminus='$cppminus'
16882 cpprun='$cpprun'
16883 cppstdin='$cppstdin'
16884 cppsymbols='$cppsymbols'
16885 cryptlib='$cryptlib'
16886 csh='$csh'
16887 d_Gconvert='$d_Gconvert'
16888 d_PRIEUldbl='$d_PRIEUldbl'
16889 d_PRIFUldbl='$d_PRIFUldbl'
16890 d_PRIGUldbl='$d_PRIGUldbl'
16891 d_PRIXU64='$d_PRIXU64'
16892 d_PRId64='$d_PRId64'
16893 d_PRIeldbl='$d_PRIeldbl'
16894 d_PRIfldbl='$d_PRIfldbl'
16895 d_PRIgldbl='$d_PRIgldbl'
16896 d_PRIi64='$d_PRIi64'
16897 d_PRIo64='$d_PRIo64'
16898 d_PRIu64='$d_PRIu64'
16899 d_PRIx64='$d_PRIx64'
16900 d_SCNfldbl='$d_SCNfldbl'
16901 d__fwalk='$d__fwalk'
16902 d_access='$d_access'
16903 d_accessx='$d_accessx'
16904 d_alarm='$d_alarm'
16905 d_archlib='$d_archlib'
16906 d_atolf='$d_atolf'
16907 d_atoll='$d_atoll'
16908 d_attribut='$d_attribut'
16909 d_bcmp='$d_bcmp'
16910 d_bcopy='$d_bcopy'
16911 d_bincompat5005='$d_bincompat5005'
16912 d_bsd='$d_bsd'
16913 d_bsdgetpgrp='$d_bsdgetpgrp'
16914 d_bsdsetpgrp='$d_bsdsetpgrp'
16915 d_bzero='$d_bzero'
16916 d_casti32='$d_casti32'
16917 d_castneg='$d_castneg'
16918 d_charvspr='$d_charvspr'
16919 d_chown='$d_chown'
16920 d_chroot='$d_chroot'
16921 d_chsize='$d_chsize'
16922 d_class='$d_class'
16923 d_closedir='$d_closedir'
16924 d_cmsghdr_s='$d_cmsghdr_s'
16925 d_const='$d_const'
16926 d_crypt='$d_crypt'
16927 d_csh='$d_csh'
16928 d_cuserid='$d_cuserid'
16929 d_dbl_dig='$d_dbl_dig'
16930 d_dbminitproto='$d_dbminitproto'
16931 d_difftime='$d_difftime'
16932 d_dirfd='$d_dirfd'
16933 d_dirnamlen='$d_dirnamlen'
16934 d_dlerror='$d_dlerror'
16935 d_dlopen='$d_dlopen'
16936 d_dlsymun='$d_dlsymun'
16937 d_dosuid='$d_dosuid'
16938 d_drand48proto='$d_drand48proto'
16939 d_dup2='$d_dup2'
16940 d_eaccess='$d_eaccess'
16941 d_endgrent='$d_endgrent'
16942 d_endhent='$d_endhent'
16943 d_endnent='$d_endnent'
16944 d_endpent='$d_endpent'
16945 d_endpwent='$d_endpwent'
16946 d_endsent='$d_endsent'
16947 d_eofnblk='$d_eofnblk'
16948 d_eunice='$d_eunice'
16949 d_fchdir='$d_fchdir'
16950 d_fchmod='$d_fchmod'
16951 d_fchown='$d_fchown'
16952 d_fcntl='$d_fcntl'
16953 d_fcntl_can_lock='$d_fcntl_can_lock'
16954 d_fd_macros='$d_fd_macros'
16955 d_fd_set='$d_fd_set'
16956 d_fds_bits='$d_fds_bits'
16957 d_fgetpos='$d_fgetpos'
16958 d_finite='$d_finite'
16959 d_finitel='$d_finitel'
16960 d_flexfnam='$d_flexfnam'
16961 d_flock='$d_flock'
16962 d_flockproto='$d_flockproto'
16963 d_fork='$d_fork'
16964 d_fp_class='$d_fp_class'
16965 d_fpathconf='$d_fpathconf'
16966 d_fpclass='$d_fpclass'
16967 d_fpclassify='$d_fpclassify'
16968 d_fpclassl='$d_fpclassl'
16969 d_fpos64_t='$d_fpos64_t'
16970 d_frexpl='$d_frexpl'
16971 d_fs_data_s='$d_fs_data_s'
16972 d_fseeko='$d_fseeko'
16973 d_fsetpos='$d_fsetpos'
16974 d_fstatfs='$d_fstatfs'
16975 d_fstatvfs='$d_fstatvfs'
16976 d_fsync='$d_fsync'
16977 d_ftello='$d_ftello'
16978 d_ftime='$d_ftime'
16979 d_getcwd='$d_getcwd'
16980 d_getespwnam='$d_getespwnam'
16981 d_getfsstat='$d_getfsstat'
16982 d_getgrent='$d_getgrent'
16983 d_getgrps='$d_getgrps'
16984 d_gethbyaddr='$d_gethbyaddr'
16985 d_gethbyname='$d_gethbyname'
16986 d_gethent='$d_gethent'
16987 d_gethname='$d_gethname'
16988 d_gethostprotos='$d_gethostprotos'
16989 d_getitimer='$d_getitimer'
16990 d_getlogin='$d_getlogin'
16991 d_getmnt='$d_getmnt'
16992 d_getmntent='$d_getmntent'
16993 d_getnbyaddr='$d_getnbyaddr'
16994 d_getnbyname='$d_getnbyname'
16995 d_getnent='$d_getnent'
16996 d_getnetprotos='$d_getnetprotos'
16997 d_getpagsz='$d_getpagsz'
16998 d_getpbyname='$d_getpbyname'
16999 d_getpbynumber='$d_getpbynumber'
17000 d_getpent='$d_getpent'
17001 d_getpgid='$d_getpgid'
17002 d_getpgrp2='$d_getpgrp2'
17003 d_getpgrp='$d_getpgrp'
17004 d_getppid='$d_getppid'
17005 d_getprior='$d_getprior'
17006 d_getprotoprotos='$d_getprotoprotos'
17007 d_getprpwnam='$d_getprpwnam'
17008 d_getpwent='$d_getpwent'
17009 d_getsbyname='$d_getsbyname'
17010 d_getsbyport='$d_getsbyport'
17011 d_getsent='$d_getsent'
17012 d_getservprotos='$d_getservprotos'
17013 d_getspnam='$d_getspnam'
17014 d_gettimeod='$d_gettimeod'
17015 d_gnulibc='$d_gnulibc'
17016 d_grpasswd='$d_grpasswd'
17017 d_hasmntopt='$d_hasmntopt'
17018 d_htonl='$d_htonl'
17019 d_index='$d_index'
17020 d_inetaton='$d_inetaton'
17021 d_int64_t='$d_int64_t'
17022 d_isascii='$d_isascii'
17023 d_isfinite='$d_isfinite'
17024 d_isinf='$d_isinf'
17025 d_isnan='$d_isnan'
17026 d_isnanl='$d_isnanl'
17027 d_killpg='$d_killpg'
17028 d_lchown='$d_lchown'
17029 d_ldbl_dig='$d_ldbl_dig'
17030 d_link='$d_link'
17031 d_locconv='$d_locconv'
17032 d_lockf='$d_lockf'
17033 d_longdbl='$d_longdbl'
17034 d_longlong='$d_longlong'
17035 d_lseekproto='$d_lseekproto'
17036 d_lstat='$d_lstat'
17037 d_madvise='$d_madvise'
17038 d_mblen='$d_mblen'
17039 d_mbstowcs='$d_mbstowcs'
17040 d_mbtowc='$d_mbtowc'
17041 d_memchr='$d_memchr'
17042 d_memcmp='$d_memcmp'
17043 d_memcpy='$d_memcpy'
17044 d_memmove='$d_memmove'
17045 d_memset='$d_memset'
17046 d_mkdir='$d_mkdir'
17047 d_mkdtemp='$d_mkdtemp'
17048 d_mkfifo='$d_mkfifo'
17049 d_mkstemp='$d_mkstemp'
17050 d_mkstemps='$d_mkstemps'
17051 d_mktime='$d_mktime'
17052 d_mmap='$d_mmap'
17053 d_modfl='$d_modfl'
17054 d_modfl_pow32_bug='$d_modfl_pow32_bug'
17055 d_mprotect='$d_mprotect'
17056 d_msg='$d_msg'
17057 d_msg_ctrunc='$d_msg_ctrunc'
17058 d_msg_dontroute='$d_msg_dontroute'
17059 d_msg_oob='$d_msg_oob'
17060 d_msg_peek='$d_msg_peek'
17061 d_msg_proxy='$d_msg_proxy'
17062 d_msgctl='$d_msgctl'
17063 d_msgget='$d_msgget'
17064 d_msghdr_s='$d_msghdr_s'
17065 d_msgrcv='$d_msgrcv'
17066 d_msgsnd='$d_msgsnd'
17067 d_msync='$d_msync'
17068 d_munmap='$d_munmap'
17069 d_mymalloc='$d_mymalloc'
17070 d_nice='$d_nice'
17071 d_nl_langinfo='$d_nl_langinfo'
17072 d_nv_preserves_uv='$d_nv_preserves_uv'
17073 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
17074 d_off64_t='$d_off64_t'
17075 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
17076 d_oldpthreads='$d_oldpthreads'
17077 d_oldsock='$d_oldsock'
17078 d_open3='$d_open3'
17079 d_pathconf='$d_pathconf'
17080 d_pause='$d_pause'
17081 d_perl_otherlibdirs='$d_perl_otherlibdirs'
17082 d_phostname='$d_phostname'
17083 d_pipe='$d_pipe'
17084 d_poll='$d_poll'
17085 d_portable='$d_portable'
17086 d_procselfexe='$d_procselfexe'
17087 d_pthread_atfork='$d_pthread_atfork'
17088 d_pthread_yield='$d_pthread_yield'
17089 d_pwage='$d_pwage'
17090 d_pwchange='$d_pwchange'
17091 d_pwclass='$d_pwclass'
17092 d_pwcomment='$d_pwcomment'
17093 d_pwexpire='$d_pwexpire'
17094 d_pwgecos='$d_pwgecos'
17095 d_pwpasswd='$d_pwpasswd'
17096 d_pwquota='$d_pwquota'
17097 d_qgcvt='$d_qgcvt'
17098 d_quad='$d_quad'
17099 d_readdir='$d_readdir'
17100 d_readlink='$d_readlink'
17101 d_readv='$d_readv'
17102 d_recvmsg='$d_recvmsg'
17103 d_rename='$d_rename'
17104 d_rewinddir='$d_rewinddir'
17105 d_rmdir='$d_rmdir'
17106 d_safebcpy='$d_safebcpy'
17107 d_safemcpy='$d_safemcpy'
17108 d_sanemcmp='$d_sanemcmp'
17109 d_sbrkproto='$d_sbrkproto'
17110 d_sched_yield='$d_sched_yield'
17111 d_scm_rights='$d_scm_rights'
17112 d_seekdir='$d_seekdir'
17113 d_select='$d_select'
17114 d_sem='$d_sem'
17115 d_semctl='$d_semctl'
17116 d_semctl_semid_ds='$d_semctl_semid_ds'
17117 d_semctl_semun='$d_semctl_semun'
17118 d_semget='$d_semget'
17119 d_semop='$d_semop'
17120 d_sendmsg='$d_sendmsg'
17121 d_setegid='$d_setegid'
17122 d_seteuid='$d_seteuid'
17123 d_setgrent='$d_setgrent'
17124 d_setgrps='$d_setgrps'
17125 d_sethent='$d_sethent'
17126 d_setitimer='$d_setitimer'
17127 d_setlinebuf='$d_setlinebuf'
17128 d_setlocale='$d_setlocale'
17129 d_setnent='$d_setnent'
17130 d_setpent='$d_setpent'
17131 d_setpgid='$d_setpgid'
17132 d_setpgrp2='$d_setpgrp2'
17133 d_setpgrp='$d_setpgrp'
17134 d_setprior='$d_setprior'
17135 d_setproctitle='$d_setproctitle'
17136 d_setpwent='$d_setpwent'
17137 d_setregid='$d_setregid'
17138 d_setresgid='$d_setresgid'
17139 d_setresuid='$d_setresuid'
17140 d_setreuid='$d_setreuid'
17141 d_setrgid='$d_setrgid'
17142 d_setruid='$d_setruid'
17143 d_setsent='$d_setsent'
17144 d_setsid='$d_setsid'
17145 d_setvbuf='$d_setvbuf'
17146 d_sfio='$d_sfio'
17147 d_shm='$d_shm'
17148 d_shmat='$d_shmat'
17149 d_shmatprototype='$d_shmatprototype'
17150 d_shmctl='$d_shmctl'
17151 d_shmdt='$d_shmdt'
17152 d_shmget='$d_shmget'
17153 d_sigaction='$d_sigaction'
17154 d_sigprocmask='$d_sigprocmask'
17155 d_sigsetjmp='$d_sigsetjmp'
17156 d_sockatmark='$d_sockatmark'
17157 d_sockatmarkproto='$d_sockatmarkproto'
17158 d_socket='$d_socket'
17159 d_socklen_t='$d_socklen_t'
17160 d_sockpair='$d_sockpair'
17161 d_socks5_init='$d_socks5_init'
17162 d_sqrtl='$d_sqrtl'
17163 d_sresgproto='$d_sresgproto'
17164 d_sresuproto='$d_sresuproto'
17165 d_statblks='$d_statblks'
17166 d_statfs_f_flags='$d_statfs_f_flags'
17167 d_statfs_s='$d_statfs_s'
17168 d_statvfs='$d_statvfs'
17169 d_stdio_cnt_lval='$d_stdio_cnt_lval'
17170 d_stdio_ptr_lval='$d_stdio_ptr_lval'
17171 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17172 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
17173 d_stdio_stream_array='$d_stdio_stream_array'
17174 d_stdiobase='$d_stdiobase'
17175 d_stdstdio='$d_stdstdio'
17176 d_strchr='$d_strchr'
17177 d_strcoll='$d_strcoll'
17178 d_strctcpy='$d_strctcpy'
17179 d_strerrm='$d_strerrm'
17180 d_strerror='$d_strerror'
17181 d_strftime='$d_strftime'
17182 d_strtod='$d_strtod'
17183 d_strtol='$d_strtol'
17184 d_strtold='$d_strtold'
17185 d_strtoll='$d_strtoll'
17186 d_strtoq='$d_strtoq'
17187 d_strtoul='$d_strtoul'
17188 d_strtoull='$d_strtoull'
17189 d_strtouq='$d_strtouq'
17190 d_strxfrm='$d_strxfrm'
17191 d_suidsafe='$d_suidsafe'
17192 d_symlink='$d_symlink'
17193 d_syscall='$d_syscall'
17194 d_syscallproto='$d_syscallproto'
17195 d_sysconf='$d_sysconf'
17196 d_sysernlst='$d_sysernlst'
17197 d_syserrlst='$d_syserrlst'
17198 d_system='$d_system'
17199 d_tcgetpgrp='$d_tcgetpgrp'
17200 d_tcsetpgrp='$d_tcsetpgrp'
17201 d_telldir='$d_telldir'
17202 d_telldirproto='$d_telldirproto'
17203 d_time='$d_time'
17204 d_times='$d_times'
17205 d_truncate='$d_truncate'
17206 d_tzname='$d_tzname'
17207 d_u32align='$d_u32align'
17208 d_ualarm='$d_ualarm'
17209 d_umask='$d_umask'
17210 d_uname='$d_uname'
17211 d_union_semun='$d_union_semun'
17212 d_unordered='$d_unordered'
17213 d_usleep='$d_usleep'
17214 d_usleepproto='$d_usleepproto'
17215 d_ustat='$d_ustat'
17216 d_vendorarch='$d_vendorarch'
17217 d_vendorbin='$d_vendorbin'
17218 d_vendorlib='$d_vendorlib'
17219 d_vfork='$d_vfork'
17220 d_void_closedir='$d_void_closedir'
17221 d_voidsig='$d_voidsig'
17222 d_voidtty='$d_voidtty'
17223 d_volatile='$d_volatile'
17224 d_vprintf='$d_vprintf'
17225 d_wait4='$d_wait4'
17226 d_waitpid='$d_waitpid'
17227 d_wcstombs='$d_wcstombs'
17228 d_wctomb='$d_wctomb'
17229 d_writev='$d_writev'
17230 d_xenix='$d_xenix'
17231 date='$date'
17232 db_hashtype='$db_hashtype'
17233 db_prefixtype='$db_prefixtype'
17234 db_version_major='$db_version_major'
17235 db_version_minor='$db_version_minor'
17236 db_version_patch='$db_version_patch'
17237 defvoidused='$defvoidused'
17238 direntrytype='$direntrytype'
17239 dlext='$dlext'
17240 dlsrc='$dlsrc'
17241 doublesize='$doublesize'
17242 drand01='$drand01'
17243 dynamic_ext='$dynamic_ext'
17244 eagain='$eagain'
17245 ebcdic='$ebcdic'
17246 echo='$echo'
17247 egrep='$egrep'
17248 emacs='$emacs'
17249 eunicefix='$eunicefix'
17250 exe_ext='$exe_ext'
17251 expr='$expr'
17252 extensions='$extensions'
17253 extras='$extras'
17254 fflushNULL='$fflushNULL'
17255 fflushall='$fflushall'
17256 find='$find'
17257 firstmakefile='$firstmakefile'
17258 flex='$flex'
17259 fpossize='$fpossize'
17260 fpostype='$fpostype'
17261 freetype='$freetype'
17262 from='$from'
17263 full_ar='$full_ar'
17264 full_csh='$full_csh'
17265 full_sed='$full_sed'
17266 gccosandvers='$gccosandvers'
17267 gccversion='$gccversion'
17268 gidformat='$gidformat'
17269 gidsign='$gidsign'
17270 gidsize='$gidsize'
17271 gidtype='$gidtype'
17272 glibpth='$glibpth'
17273 gmake='$gmake'
17274 grep='$grep'
17275 groupcat='$groupcat'
17276 groupstype='$groupstype'
17277 gzip='$gzip'
17278 h_fcntl='$h_fcntl'
17279 h_sysfile='$h_sysfile'
17280 hint='$hint'
17281 hostcat='$hostcat'
17282 i16size='$i16size'
17283 i16type='$i16type'
17284 i32size='$i32size'
17285 i32type='$i32type'
17286 i64size='$i64size'
17287 i64type='$i64type'
17288 i8size='$i8size'
17289 i8type='$i8type'
17290 i_arpainet='$i_arpainet'
17291 i_bsdioctl='$i_bsdioctl'
17292 i_db='$i_db'
17293 i_dbm='$i_dbm'
17294 i_dirent='$i_dirent'
17295 i_dld='$i_dld'
17296 i_dlfcn='$i_dlfcn'
17297 i_fcntl='$i_fcntl'
17298 i_float='$i_float'
17299 i_fp='$i_fp'
17300 i_fp_class='$i_fp_class'
17301 i_gdbm='$i_gdbm'
17302 i_grp='$i_grp'
17303 i_ieeefp='$i_ieeefp'
17304 i_inttypes='$i_inttypes'
17305 i_langinfo='$i_langinfo'
17306 i_libutil='$i_libutil'
17307 i_limits='$i_limits'
17308 i_locale='$i_locale'
17309 i_machcthr='$i_machcthr'
17310 i_malloc='$i_malloc'
17311 i_math='$i_math'
17312 i_memory='$i_memory'
17313 i_mntent='$i_mntent'
17314 i_ndbm='$i_ndbm'
17315 i_netdb='$i_netdb'
17316 i_neterrno='$i_neterrno'
17317 i_netinettcp='$i_netinettcp'
17318 i_niin='$i_niin'
17319 i_poll='$i_poll'
17320 i_prot='$i_prot'
17321 i_pthread='$i_pthread'
17322 i_pwd='$i_pwd'
17323 i_rpcsvcdbm='$i_rpcsvcdbm'
17324 i_sfio='$i_sfio'
17325 i_sgtty='$i_sgtty'
17326 i_shadow='$i_shadow'
17327 i_socks='$i_socks'
17328 i_stdarg='$i_stdarg'
17329 i_stddef='$i_stddef'
17330 i_stdlib='$i_stdlib'
17331 i_string='$i_string'
17332 i_sunmath='$i_sunmath'
17333 i_sysaccess='$i_sysaccess'
17334 i_sysdir='$i_sysdir'
17335 i_sysfile='$i_sysfile'
17336 i_sysfilio='$i_sysfilio'
17337 i_sysin='$i_sysin'
17338 i_sysioctl='$i_sysioctl'
17339 i_syslog='$i_syslog'
17340 i_sysmman='$i_sysmman'
17341 i_sysmode='$i_sysmode'
17342 i_sysmount='$i_sysmount'
17343 i_sysndir='$i_sysndir'
17344 i_sysparam='$i_sysparam'
17345 i_sysresrc='$i_sysresrc'
17346 i_syssecrt='$i_syssecrt'
17347 i_sysselct='$i_sysselct'
17348 i_syssockio='$i_syssockio'
17349 i_sysstat='$i_sysstat'
17350 i_sysstatfs='$i_sysstatfs'
17351 i_sysstatvfs='$i_sysstatvfs'
17352 i_systime='$i_systime'
17353 i_systimek='$i_systimek'
17354 i_systimes='$i_systimes'
17355 i_systypes='$i_systypes'
17356 i_sysuio='$i_sysuio'
17357 i_sysun='$i_sysun'
17358 i_sysutsname='$i_sysutsname'
17359 i_sysvfs='$i_sysvfs'
17360 i_syswait='$i_syswait'
17361 i_termio='$i_termio'
17362 i_termios='$i_termios'
17363 i_time='$i_time'
17364 i_unistd='$i_unistd'
17365 i_ustat='$i_ustat'
17366 i_utime='$i_utime'
17367 i_values='$i_values'
17368 i_varargs='$i_varargs'
17369 i_varhdr='$i_varhdr'
17370 i_vfork='$i_vfork'
17371 ignore_versioned_solibs='$ignore_versioned_solibs'
17372 inc_version_list='$inc_version_list'
17373 inc_version_list_init='$inc_version_list_init'
17374 incpath='$incpath'
17375 inews='$inews'
17376 installarchlib='$installarchlib'
17377 installbin='$installbin'
17378 installman1dir='$installman1dir'
17379 installman3dir='$installman3dir'
17380 installprefix='$installprefix'
17381 installprefixexp='$installprefixexp'
17382 installprivlib='$installprivlib'
17383 installscript='$installscript'
17384 installsitearch='$installsitearch'
17385 installsitebin='$installsitebin'
17386 installsitelib='$installsitelib'
17387 installstyle='$installstyle'
17388 installusrbinperl='$installusrbinperl'
17389 installvendorarch='$installvendorarch'
17390 installvendorbin='$installvendorbin'
17391 installvendorlib='$installvendorlib'
17392 intsize='$intsize'
17393 issymlink='$issymlink'
17394 ivdformat='$ivdformat'
17395 ivsize='$ivsize'
17396 ivtype='$ivtype'
17397 known_extensions='$known_extensions'
17398 ksh='$ksh'
17399 ld='$ld'
17400 lddlflags='$lddlflags'
17401 ldflags='$ldflags'
17402 ldflags_uselargefiles='$ldflags_uselargefiles'
17403 ldlibpthname='$ldlibpthname'
17404 less='$less'
17405 lib_ext='$lib_ext'
17406 libc='$libc'
17407 libperl='$libperl'
17408 libpth='$libpth'
17409 libs='$libs'
17410 libsdirs='$libsdirs'
17411 libsfiles='$libsfiles'
17412 libsfound='$libsfound'
17413 libspath='$libspath'
17414 libswanted='$libswanted'
17415 libswanted_uselargefiles='$libswanted_uselargefiles'
17416 line='$line'
17417 lint='$lint'
17418 lkflags='$lkflags'
17419 ln='$ln'
17420 lns='$lns'
17421 locincpth='$locincpth'
17422 loclibpth='$loclibpth'
17423 longdblsize='$longdblsize'
17424 longlongsize='$longlongsize'
17425 longsize='$longsize'
17426 lp='$lp'
17427 lpr='$lpr'
17428 ls='$ls'
17429 lseeksize='$lseeksize'
17430 lseektype='$lseektype'
17431 mail='$mail'
17432 mailx='$mailx'
17433 make='$make'
17434 make_set_make='$make_set_make'
17435 mallocobj='$mallocobj'
17436 mallocsrc='$mallocsrc'
17437 malloctype='$malloctype'
17438 man1dir='$man1dir'
17439 man1direxp='$man1direxp'
17440 man1ext='$man1ext'
17441 man3dir='$man3dir'
17442 man3direxp='$man3direxp'
17443 man3ext='$man3ext'
17444 mips_type='$mips_type'
17445 mkdir='$mkdir'
17446 mmaptype='$mmaptype'
17447 modetype='$modetype'
17448 more='$more'
17449 multiarch='$multiarch'
17450 mv='$mv'
17451 myarchname='$myarchname'
17452 mydomain='$mydomain'
17453 myhostname='$myhostname'
17454 myuname='$myuname'
17455 n='$n'
17456 need_va_copy='$need_va_copy'
17457 netdb_hlen_type='$netdb_hlen_type'
17458 netdb_host_type='$netdb_host_type'
17459 netdb_name_type='$netdb_name_type'
17460 netdb_net_type='$netdb_net_type'
17461 nm='$nm'
17462 nm_opt='$nm_opt'
17463 nm_so_opt='$nm_so_opt'
17464 nonxs_ext='$nonxs_ext'
17465 nroff='$nroff'
17466 nvEUformat='$nvEUformat'
17467 nvFUformat='$nvFUformat'
17468 nvGUformat='$nvGUformat'
17469 nveformat='$nveformat'
17470 nvfformat='$nvfformat'
17471 nvgformat='$nvgformat'
17472 nvsize='$nvsize'
17473 nvtype='$nvtype'
17474 o_nonblock='$o_nonblock'
17475 obj_ext='$obj_ext'
17476 old_pthread_create_joinable='$old_pthread_create_joinable'
17477 optimize='$optimize'
17478 orderlib='$orderlib'
17479 osname='$osname'
17480 osvers='$osvers'
17481 otherlibdirs='$otherlibdirs'
17482 package='$package'
17483 pager='$pager'
17484 passcat='$passcat'
17485 patchlevel='$patchlevel'
17486 path_sep='$path_sep'
17487 perl5='$perl5'
17488 perl='$perl'
17489 perl_patchlevel='$perl_patchlevel'
17490 perladmin='$perladmin'
17491 perllibs='$perllibs'
17492 perlpath='$perlpath'
17493 pg='$pg'
17494 phostname='$phostname'
17495 pidtype='$pidtype'
17496 plibpth='$plibpth'
17497 pm_apiversion='$pm_apiversion'
17498 pmake='$pmake'
17499 pr='$pr'
17500 prefix='$prefix'
17501 prefixexp='$prefixexp'
17502 privlib='$privlib'
17503 privlibexp='$privlibexp'
17504 procselfexe='$procselfexe'
17505 prototype='$prototype'
17506 ptrsize='$ptrsize'
17507 quadkind='$quadkind'
17508 quadtype='$quadtype'
17509 randbits='$randbits'
17510 randfunc='$randfunc'
17511 randseedtype='$randseedtype'
17512 ranlib='$ranlib'
17513 rd_nodata='$rd_nodata'
17514 revision='$revision'
17515 rm='$rm'
17516 rmail='$rmail'
17517 run='$run'
17518 runnm='$runnm'
17519 sPRIEUldbl='$sPRIEUldbl'
17520 sPRIFUldbl='$sPRIFUldbl'
17521 sPRIGUldbl='$sPRIGUldbl'
17522 sPRIXU64='$sPRIXU64'
17523 sPRId64='$sPRId64'
17524 sPRIeldbl='$sPRIeldbl'
17525 sPRIfldbl='$sPRIfldbl'
17526 sPRIgldbl='$sPRIgldbl'
17527 sPRIi64='$sPRIi64'
17528 sPRIo64='$sPRIo64'
17529 sPRIu64='$sPRIu64'
17530 sPRIx64='$sPRIx64'
17531 sSCNfldbl='$sSCNfldbl'
17532 sched_yield='$sched_yield'
17533 scriptdir='$scriptdir'
17534 scriptdirexp='$scriptdirexp'
17535 sed='$sed'
17536 seedfunc='$seedfunc'
17537 selectminbits='$selectminbits'
17538 selecttype='$selecttype'
17539 sendmail='$sendmail'
17540 sh='$sh'
17541 shar='$shar'
17542 sharpbang='$sharpbang'
17543 shmattype='$shmattype'
17544 shortsize='$shortsize'
17545 shrpenv='$shrpenv'
17546 shsharp='$shsharp'
17547 sig_count='$sig_count'
17548 sig_name='$sig_name'
17549 sig_name_init='$sig_name_init'
17550 sig_num='$sig_num'
17551 sig_num_init='$sig_num_init'
17552 sig_size='$sig_size'
17553 signal_t='$signal_t'
17554 sitearch='$sitearch'
17555 sitearchexp='$sitearchexp'
17556 sitebin='$sitebin'
17557 sitebinexp='$sitebinexp'
17558 sitelib='$sitelib'
17559 sitelib_stem='$sitelib_stem'
17560 sitelibexp='$sitelibexp'
17561 siteprefix='$siteprefix'
17562 siteprefixexp='$siteprefixexp'
17563 sizesize='$sizesize'
17564 sizetype='$sizetype'
17565 sleep='$sleep'
17566 smail='$smail'
17567 so='$so'
17568 sockethdr='$sockethdr'
17569 socketlib='$socketlib'
17570 socksizetype='$socksizetype'
17571 sort='$sort'
17572 spackage='$spackage'
17573 spitshell='$spitshell'
17574 src='$src'
17575 ssizetype='$ssizetype'
17576 startperl='$startperl'
17577 startsh='$startsh'
17578 static_ext='$static_ext'
17579 stdchar='$stdchar'
17580 stdio_base='$stdio_base'
17581 stdio_bufsiz='$stdio_bufsiz'
17582 stdio_cnt='$stdio_cnt'
17583 stdio_filbuf='$stdio_filbuf'
17584 stdio_ptr='$stdio_ptr'
17585 stdio_stream_array='$stdio_stream_array'
17586 strings='$strings'
17587 submit='$submit'
17588 subversion='$subversion'
17589 sysman='$sysman'
17590 tail='$tail'
17591 tar='$tar'
17592 targetarch='$targetarch'
17593 tbl='$tbl'
17594 tee='$tee'
17595 test='$test'
17596 timeincl='$timeincl'
17597 timetype='$timetype'
17598 to='$to'
17599 touch='$touch'
17600 tr='$tr'
17601 trnl='$trnl'
17602 troff='$troff'
17603 u16size='$u16size'
17604 u16type='$u16type'
17605 u32size='$u32size'
17606 u32type='$u32type'
17607 u64size='$u64size'
17608 u64type='$u64type'
17609 u8size='$u8size'
17610 u8type='$u8type'
17611 uidformat='$uidformat'
17612 uidsign='$uidsign'
17613 uidsize='$uidsize'
17614 uidtype='$uidtype'
17615 uname='$uname'
17616 uniq='$uniq'
17617 uquadtype='$uquadtype'
17618 use5005threads='$use5005threads'
17619 use64bitall='$use64bitall'
17620 use64bitint='$use64bitint'
17621 usecrosscompile='$usecrosscompile'
17622 usedl='$usedl'
17623 useithreads='$useithreads'
17624 uselargefiles='$uselargefiles'
17625 uselongdouble='$uselongdouble'
17626 usemorebits='$usemorebits'
17627 usemultiplicity='$usemultiplicity'
17628 usemymalloc='$usemymalloc'
17629 usenm='$usenm'
17630 useopcode='$useopcode'
17631 useperlio='$useperlio'
17632 useposix='$useposix'
17633 usereentrant='$usereentrant'
17634 usesfio='$usesfio'
17635 useshrplib='$useshrplib'
17636 usesocks='$usesocks'
17637 usethreads='$usethreads'
17638 usevendorprefix='$usevendorprefix'
17639 usevfork='$usevfork'
17640 usrinc='$usrinc'
17641 uuname='$uuname'
17642 uvXUformat='$uvXUformat'
17643 uvoformat='$uvoformat'
17644 uvsize='$uvsize'
17645 uvtype='$uvtype'
17646 uvuformat='$uvuformat'
17647 uvxformat='$uvxformat'
17648 vendorarch='$vendorarch'
17649 vendorarchexp='$vendorarchexp'
17650 vendorbin='$vendorbin'
17651 vendorbinexp='$vendorbinexp'
17652 vendorlib='$vendorlib'
17653 vendorlib_stem='$vendorlib_stem'
17654 vendorlibexp='$vendorlibexp'
17655 vendorprefix='$vendorprefix'
17656 vendorprefixexp='$vendorprefixexp'
17657 version='$version'
17658 version_patchlevel_string='$version_patchlevel_string'
17659 versiononly='$versiononly'
17660 vi='$vi'
17661 voidflags='$voidflags'
17662 xlibpth='$xlibpth'
17663 xs_apiversion='$xs_apiversion'
17664 yacc='$yacc'
17665 yaccflags='$yaccflags'
17666 zcat='$zcat'
17667 zip='$zip'
17668 EOT
17669
17670 : Add in command line options if available
17671 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17672
17673 : add special variables
17674 $test -f $src/patchlevel.h && \
17675 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17676 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17677 echo "PERL_CONFIG_SH=true" >>config.sh
17678
17679 : propagate old symbols
17680 if $test -f UU/config.sh; then
17681         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17682         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17683         $sort | $uniq -u >UU/oldsyms
17684         set X `cat UU/oldsyms`
17685         shift
17686         case $# in
17687         0) ;;
17688         *)
17689                 cat <<EOM
17690 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17691 EOM
17692                 echo "# Variables propagated from previous config.sh file." >>config.sh
17693                 for sym in `cat UU/oldsyms`; do
17694                         echo "    Propagating $hint variable "'$'"$sym..."
17695                         eval 'tmp="$'"${sym}"'"'
17696                         echo "$tmp" | \
17697                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17698                 done
17699                 ;;
17700         esac
17701 fi
17702
17703 : Finish up by extracting the .SH files
17704 case "$alldone" in
17705 exit)
17706         $rm -rf UU
17707         echo "Extraction done."
17708         exit 0
17709         ;;
17710 cont)
17711         ;;
17712 '')
17713         dflt=''
17714         nostick=true
17715         $cat <<EOM
17716
17717 If you'd like to make any changes to the config.sh file before I begin
17718 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17719
17720 EOM
17721         rp="Press return or use a shell escape to edit config.sh:"
17722         . UU/myread
17723         nostick=''
17724         case "$ans" in
17725         '') ;;
17726         *) : in case they cannot read
17727                 sh 1>&4 -c "$ans";;
17728         esac
17729         ;;
17730 esac
17731
17732 : if this fails, just run all the .SH files by hand
17733 . ./config.sh
17734
17735 echo " "
17736 exec 1>&4
17737 pwd=`pwd`
17738 . ./UU/extract
17739 cd $pwd
17740
17741 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17742         dflt=y
17743         case "$silent" in
17744         true) ;;
17745         *)
17746                 $cat <<EOM
17747
17748 Now you need to generate make dependencies by running "$make depend".
17749 You might prefer to run it in background: "$make depend > makedepend.out &"
17750 It can take a while, so you might not want to run it right now.
17751
17752 EOM
17753                 ;;
17754         esac
17755         rp="Run $make depend now?"
17756         . UU/myread
17757         case "$ans" in
17758         y*)
17759                 $make depend && echo "Now you must run '$make'."
17760                 ;;
17761         *)
17762                 echo "You must run '$make depend' then '$make'."
17763                 ;;
17764         esac
17765 elif test -f [Mm]akefile; then
17766         echo " "
17767         echo "Now you must run a $make."
17768 else
17769         echo "Configure done."
17770 fi
17771
17772 if $test -f Policy.sh; then
17773     $cat <<EOM
17774
17775 If you compile $package on a different machine or from a different object
17776 directory, copy the Policy.sh file from this object directory to the
17777 new one before you run Configure -- this will help you with most of
17778 the policy defaults.
17779
17780 EOM
17781 fi
17782 if $test -f config.msg; then
17783     echo "Hmm.  I also noted the following information while running:"
17784     echo " "
17785     $cat config.msg >&4
17786     $rm -f config.msg
17787 fi
17788 $rm -f kit*isdone ark*isdone
17789 $rm -rf UU
17790
17791 : End of Configure
17792