This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Clearing up to_utf8_case() continues: this time use
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Sat Feb 16 18:18:46 EET 2002 [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
169 ccname=''
170 ccversion=''
171 ccsymbols=''
172 cppccsymbols=''
173 cppsymbols=''
174 from=''
175 run=''
176 targetarch=''
177 to=''
178 usecrosscompile=''
179 perllibs=''
180 dynamic_ext=''
181 extensions=''
182 known_extensions=''
183 nonxs_ext=''
184 static_ext=''
185 useopcode=''
186 useposix=''
187 extras=''
188 d_bsd=''
189 d_eunice=''
190 d_xenix=''
191 eunicefix=''
192 Mcc=''
193 ar=''
194 awk=''
195 bash=''
196 bison=''
197 byacc=''
198 cat=''
199 chgrp=''
200 chmod=''
201 chown=''
202 comm=''
203 compress=''
204 cp=''
205 cpio=''
206 cpp=''
207 csh=''
208 date=''
209 echo=''
210 egrep=''
211 emacs=''
212 expr=''
213 find=''
214 flex=''
215 gmake=''
216 grep=''
217 gzip=''
218 inews=''
219 ksh=''
220 less=''
221 line=''
222 lint=''
223 ln=''
224 lp=''
225 lpr=''
226 ls=''
227 mail=''
228 mailx=''
229 make=''
230 mkdir=''
231 more=''
232 mv=''
233 nm=''
234 nroff=''
235 perl=''
236 pg=''
237 pmake=''
238 pr=''
239 rm=''
240 rmail=''
241 sed=''
242 sendmail=''
243 shar=''
244 sleep=''
245 smail=''
246 sort=''
247 submit=''
248 tail=''
249 tar=''
250 tbl=''
251 tee=''
252 test=''
253 touch=''
254 tr=''
255 troff=''
256 uname=''
257 uniq=''
258 uuname=''
259 vi=''
260 zcat=''
261 zip=''
262 full_ar=''
263 full_sed=''
264 libswanted=''
265 hint=''
266 myuname=''
267 osname=''
268 osvers=''
269 Author=''
270 Date=''
271 Header=''
272 Id=''
273 Locker=''
274 Log=''
275 RCSfile=''
276 Revision=''
277 Source=''
278 State=''
279 _a=''
280 _exe=''
281 _o=''
282 archobjs=''
283 exe_ext=''
284 firstmakefile=''
285 lib_ext=''
286 obj_ext=''
287 path_sep=''
288 afs=''
289 afsroot=''
290 alignbytes=''
291 ansi2knr=''
292 archlib=''
293 archlibexp=''
294 d_archlib=''
295 installarchlib=''
296 archname=''
297 myarchname=''
298 d_atolf=''
299 d_atoll=''
300 baserev=''
301 bin=''
302 binexp=''
303 installbin=''
304 bincompat5005=''
305 d_bincompat5005=''
306 byteorder=''
307 cc=''
308 ccflags=''
309 cppflags=''
310 ldflags=''
311 lkflags=''
312 locincpth=''
313 optimize=''
314 cf_email=''
315 cf_by=''
316 cf_time=''
317 charsize=''
318 contains=''
319 cpp_stuff=''
320 cpplast=''
321 cppminus=''
322 cpprun=''
323 cppstdin=''
324 d__fwalk=''
325 d_access=''
326 d_accessx=''
327 d_alarm=''
328 d_attribut=''
329 d_bcmp=''
330 d_bcopy=''
331 d_bzero=''
332 d_casti32=''
333 castflags=''
334 d_castneg=''
335 d_chown=''
336 d_chroot=''
337 d_chsize=''
338 d_class=''
339 d_closedir=''
340 d_void_closedir=''
341 d_cmsghdr_s=''
342 d_const=''
343 cryptlib=''
344 d_crypt=''
345 d_csh=''
346 full_csh=''
347 d_cuserid=''
348 d_dbl_dig=''
349 d_dbminitproto=''
350 d_difftime=''
351 d_dirfd=''
352 d_dlerror=''
353 d_dlopen=''
354 d_dlsymun=''
355 d_dosuid=''
356 d_suidsafe=''
357 d_drand48proto=''
358 d_dup2=''
359 d_eaccess=''
360 d_endgrent=''
361 d_endhent=''
362 d_endnent=''
363 d_endpent=''
364 d_endpwent=''
365 d_endsent=''
366 d_fchdir=''
367 d_fchmod=''
368 d_fchown=''
369 d_fcntl=''
370 d_fcntl_can_lock=''
371 d_fd_macros=''
372 d_fd_set=''
373 d_fds_bits=''
374 d_fgetpos=''
375 d_finite=''
376 d_finitel=''
377 d_flexfnam=''
378 d_flock=''
379 d_flockproto=''
380 d_fork=''
381 d_fp_class=''
382 d_fpclass=''
383 d_fpclassify=''
384 d_fpclassl=''
385 d_fpos64_t=''
386 d_frexpl=''
387 d_fs_data_s=''
388 d_fseeko=''
389 d_fsetpos=''
390 d_fstatfs=''
391 d_fsync=''
392 d_ftello=''
393 d_ftime=''
394 d_gettimeod=''
395 d_Gconvert=''
396 d_getcwd=''
397 d_getespwnam=''
398 d_getfsstat=''
399 d_getgrent=''
400 d_getgrps=''
401 d_gethbyaddr=''
402 d_gethbyname=''
403 d_gethent=''
404 aphostname=''
405 d_gethname=''
406 d_phostname=''
407 d_uname=''
408 d_gethostprotos=''
409 d_getitimer=''
410 d_getlogin=''
411 d_getmnt=''
412 d_getmntent=''
413 d_getnbyaddr=''
414 d_getnbyname=''
415 d_getnent=''
416 d_getnetprotos=''
417 d_getpagsz=''
418 d_getpent=''
419 d_getpgid=''
420 d_getpgrp2=''
421 d_bsdgetpgrp=''
422 d_getpgrp=''
423 d_getppid=''
424 d_getprior=''
425 d_getpbyname=''
426 d_getpbynumber=''
427 d_getprotoprotos=''
428 d_getprpwnam=''
429 d_getpwent=''
430 d_getsent=''
431 d_getservprotos=''
432 d_getspnam=''
433 d_getsbyname=''
434 d_getsbyport=''
435 d_gnulibc=''
436 d_hasmntopt=''
437 d_htonl=''
438 d_inetaton=''
439 d_int64_t=''
440 d_isascii=''
441 d_isfinite=''
442 d_isinf=''
443 d_isnan=''
444 d_isnanl=''
445 d_killpg=''
446 d_lchown=''
447 d_ldbl_dig=''
448 d_link=''
449 d_locconv=''
450 d_lockf=''
451 d_longdbl=''
452 longdblsize=''
453 d_longlong=''
454 longlongsize=''
455 d_lseekproto=''
456 d_lstat=''
457 d_madvise=''
458 d_mblen=''
459 d_mbstowcs=''
460 d_mbtowc=''
461 d_memchr=''
462 d_memcmp=''
463 d_memcpy=''
464 d_memmove=''
465 d_memset=''
466 d_mkdir=''
467 d_mkdtemp=''
468 d_mkfifo=''
469 d_mkstemp=''
470 d_mkstemps=''
471 d_mktime=''
472 d_mmap=''
473 mmaptype=''
474 d_modfl=''
475 d_modfl_pow32_bug=''
476 d_mprotect=''
477 d_msg=''
478 d_msgctl=''
479 d_msgget=''
480 d_msghdr_s=''
481 d_msgrcv=''
482 d_msgsnd=''
483 d_msync=''
484 d_munmap=''
485 d_nice=''
486 d_nl_langinfo=''
487 d_off64_t=''
488 d_open3=''
489 d_fpathconf=''
490 d_pathconf=''
491 d_pause=''
492 d_pipe=''
493 d_poll=''
494 d_portable=''
495 d_procselfexe=''
496 procselfexe=''
497 d_old_pthread_create_joinable=''
498 old_pthread_create_joinable=''
499 d_pthread_atfork=''
500 d_pthread_yield=''
501 d_sched_yield=''
502 sched_yield=''
503 d_qgcvt=''
504 d_readdir=''
505 d_rewinddir=''
506 d_seekdir=''
507 d_telldir=''
508 d_readlink=''
509 d_readv=''
510 d_recvmsg=''
511 d_rename=''
512 d_rmdir=''
513 d_safebcpy=''
514 d_safemcpy=''
515 d_sanemcmp=''
516 d_sbrkproto=''
517 d_select=''
518 d_sem=''
519 d_semctl=''
520 d_semget=''
521 d_semop=''
522 d_sendmsg=''
523 d_setegid=''
524 d_seteuid=''
525 d_setgrent=''
526 d_setgrps=''
527 d_sethent=''
528 d_setitimer=''
529 d_setlinebuf=''
530 d_setlocale=''
531 d_setnent=''
532 d_setpent=''
533 d_setpgid=''
534 d_setpgrp2=''
535 d_bsdsetpgrp=''
536 d_setpgrp=''
537 d_setprior=''
538 d_setproctitle=''
539 d_setpwent=''
540 d_setregid=''
541 d_setresgid=''
542 d_setresuid=''
543 d_setreuid=''
544 d_setrgid=''
545 d_setruid=''
546 d_setsent=''
547 d_setsid=''
548 d_setvbuf=''
549 d_sfio=''
550 usesfio=''
551 d_shm=''
552 d_shmat=''
553 d_shmatprototype=''
554 shmattype=''
555 d_shmctl=''
556 d_shmdt=''
557 d_shmget=''
558 d_sigaction=''
559 d_sigprocmask=''
560 d_sigsetjmp=''
561 d_sockatmark=''
562 d_sockatmarkproto=''
563 d_msg_ctrunc=''
564 d_msg_dontroute=''
565 d_msg_oob=''
566 d_msg_peek=''
567 d_msg_proxy=''
568 d_oldsock=''
569 d_scm_rights=''
570 d_socket=''
571 d_sockpair=''
572 sockethdr=''
573 socketlib=''
574 d_socklen_t=''
575 d_socks5_init=''
576 d_sqrtl=''
577 d_sresgproto=''
578 d_sresuproto=''
579 d_statblks=''
580 d_statfs_f_flags=''
581 d_statfs_s=''
582 d_fstatvfs=''
583 d_statvfs=''
584 d_stdio_cnt_lval=''
585 d_stdio_ptr_lval=''
586 d_stdio_ptr_lval_nochange_cnt=''
587 d_stdio_ptr_lval_sets_cnt=''
588 d_stdiobase=''
589 d_stdstdio=''
590 stdio_base=''
591 stdio_bufsiz=''
592 stdio_cnt=''
593 stdio_filbuf=''
594 stdio_ptr=''
595 d_index=''
596 d_strchr=''
597 d_strcoll=''
598 d_strctcpy=''
599 d_strerrm=''
600 d_strerror=''
601 d_sysernlst=''
602 d_syserrlst=''
603 d_strftime=''
604 d_strtod=''
605 d_strtol=''
606 d_strtold=''
607 d_strtoll=''
608 d_strtoq=''
609 d_strtoul=''
610 d_strtoull=''
611 d_strtouq=''
612 d_strxfrm=''
613 d_symlink=''
614 d_syscall=''
615 d_syscallproto=''
616 d_sysconf=''
617 d_system=''
618 d_tcgetpgrp=''
619 d_tcsetpgrp=''
620 d_telldirproto=''
621 d_time=''
622 timetype=''
623 clocktype=''
624 d_times=''
625 d_truncate=''
626 d_tzname=''
627 d_u32align=''
628 d_ualarm=''
629 d_umask=''
630 d_semctl_semid_ds=''
631 d_semctl_semun=''
632 d_union_semun=''
633 d_unordered=''
634 d_usleep=''
635 d_usleepproto=''
636 d_ustat=''
637 d_vfork=''
638 usevfork=''
639 d_voidsig=''
640 signal_t=''
641 d_volatile=''
642 d_charvspr=''
643 d_vprintf=''
644 d_wait4=''
645 d_waitpid=''
646 d_wcstombs=''
647 d_wctomb=''
648 d_writev=''
649 dlext=''
650 cccdlflags=''
651 ccdlflags=''
652 dlsrc=''
653 ld=''
654 lddlflags=''
655 usedl=''
656 doublesize=''
657 ebcdic=''
658 fflushNULL=''
659 fflushall=''
660 fpossize=''
661 fpostype=''
662 gccosandvers=''
663 gccversion=''
664 gidformat=''
665 gidsign=''
666 gidsize=''
667 gidtype=''
668 groupstype=''
669 h_fcntl=''
670 h_sysfile=''
671 i_arpainet=''
672 db_hashtype=''
673 db_prefixtype=''
674 db_version_major=''
675 db_version_minor=''
676 db_version_patch=''
677 i_db=''
678 i_dbm=''
679 i_rpcsvcdbm=''
680 d_dirnamlen=''
681 direntrytype=''
682 i_dirent=''
683 i_dld=''
684 i_dlfcn=''
685 i_fcntl=''
686 i_float=''
687 i_fp=''
688 i_fp_class=''
689 i_gdbm=''
690 d_grpasswd=''
691 i_grp=''
692 i_ieeefp=''
693 i_inttypes=''
694 i_langinfo=''
695 i_libutil=''
696 i_limits=''
697 i_locale=''
698 i_machcthr=''
699 i_malloc=''
700 i_math=''
701 i_memory=''
702 i_mntent=''
703 i_ndbm=''
704 i_netdb=''
705 i_neterrno=''
706 i_netinettcp=''
707 i_niin=''
708 i_sysin=''
709 i_poll=''
710 i_prot=''
711 i_pthread=''
712 d_pwage=''
713 d_pwchange=''
714 d_pwclass=''
715 d_pwcomment=''
716 d_pwexpire=''
717 d_pwgecos=''
718 d_pwpasswd=''
719 d_pwquota=''
720 i_pwd=''
721 i_sfio=''
722 i_shadow=''
723 i_socks=''
724 i_stddef=''
725 i_stdlib=''
726 i_string=''
727 strings=''
728 i_sunmath=''
729 i_sysaccess=''
730 i_sysdir=''
731 i_sysfile=''
732 d_voidtty=''
733 i_bsdioctl=''
734 i_sysfilio=''
735 i_sysioctl=''
736 i_syssockio=''
737 i_syslog=''
738 i_sysmman=''
739 i_sysmode=''
740 i_sysmount=''
741 i_sysndir=''
742 i_sysparam=''
743 i_sysresrc=''
744 i_syssecrt=''
745 i_sysselct=''
746 i_sysstat=''
747 i_sysstatfs=''
748 i_sysstatvfs=''
749 i_systimes=''
750 i_systypes=''
751 i_sysuio=''
752 i_sysun=''
753 i_sysutsname=''
754 i_sysvfs=''
755 i_syswait=''
756 i_sgtty=''
757 i_termio=''
758 i_termios=''
759 i_systime=''
760 i_systimek=''
761 i_time=''
762 timeincl=''
763 i_unistd=''
764 i_ustat=''
765 i_utime=''
766 i_values=''
767 i_stdarg=''
768 i_varargs=''
769 i_varhdr=''
770 i_vfork=''
771 inc_version_list=''
772 inc_version_list_init=''
773 installprefix=''
774 installprefixexp=''
775 installstyle=''
776 installusrbinperl=''
777 intsize=''
778 longsize=''
779 shortsize=''
780 issymlink=''
781 libc=''
782 ldlibpthname=''
783 libperl=''
784 shrpenv=''
785 useshrplib=''
786 glibpth=''
787 libpth=''
788 loclibpth=''
789 plibpth=''
790 xlibpth=''
791 ignore_versioned_solibs=''
792 libs=''
793 libsdirs=''
794 libsfiles=''
795 libsfound=''
796 libspath=''
797 lns=''
798 d_PRIEUldbl=''
799 d_PRIFUldbl=''
800 d_PRIGUldbl=''
801 d_PRIeldbl=''
802 d_PRIfldbl=''
803 d_PRIgldbl=''
804 d_SCNfldbl=''
805 sPRIEUldbl=''
806 sPRIFUldbl=''
807 sPRIGUldbl=''
808 sPRIeldbl=''
809 sPRIfldbl=''
810 sPRIgldbl=''
811 sSCNfldbl=''
812 lseeksize=''
813 lseektype=''
814 make_set_make=''
815 d_mymalloc=''
816 freetype=''
817 mallocobj=''
818 mallocsrc=''
819 malloctype=''
820 usemymalloc=''
821 installman1dir=''
822 man1dir=''
823 man1direxp=''
824 man1ext=''
825 installman3dir=''
826 man3dir=''
827 man3direxp=''
828 man3ext=''
829 modetype=''
830 multiarch=''
831 mydomain=''
832 myhostname=''
833 phostname=''
834 c=''
835 n=''
836 d_eofnblk=''
837 eagain=''
838 o_nonblock=''
839 rd_nodata=''
840 need_va_copy=''
841 netdb_hlen_type=''
842 netdb_host_type=''
843 netdb_name_type=''
844 netdb_net_type=''
845 groupcat=''
846 hostcat=''
847 passcat=''
848 orderlib=''
849 ranlib=''
850 d_perl_otherlibdirs=''
851 otherlibdirs=''
852 package=''
853 spackage=''
854 pager=''
855 api_revision=''
856 api_subversion=''
857 api_version=''
858 api_versionstring=''
859 patchlevel=''
860 perl_patchlevel=''
861 revision=''
862 subversion=''
863 version=''
864 version_patchlevel_string=''
865 perl5=''
866 perladmin=''
867 perlpath=''
868 d_nv_preserves_uv=''
869 d_nv_preserves_uv_bits=''
870 i16size=''
871 i16type=''
872 i32size=''
873 i32type=''
874 i64size=''
875 i64type=''
876 i8size=''
877 i8type=''
878 ivsize=''
879 ivtype=''
880 nvsize=''
881 nvtype=''
882 u16size=''
883 u16type=''
884 u32size=''
885 u32type=''
886 u64size=''
887 u64type=''
888 u8size=''
889 u8type=''
890 uvsize=''
891 uvtype=''
892 ivdformat=''
893 nvEUformat=''
894 nvFUformat=''
895 nvGUformat=''
896 nveformat=''
897 nvfformat=''
898 nvgformat=''
899 uvXUformat=''
900 uvoformat=''
901 uvuformat=''
902 uvxformat=''
903 pidtype=''
904 prefix=''
905 prefixexp=''
906 installprivlib=''
907 privlib=''
908 privlibexp=''
909 prototype=''
910 ptrsize=''
911 d_PRIXU64=''
912 d_PRId64=''
913 d_PRIi64=''
914 d_PRIo64=''
915 d_PRIu64=''
916 d_PRIx64=''
917 sPRIXU64=''
918 sPRId64=''
919 sPRIi64=''
920 sPRIo64=''
921 sPRIu64=''
922 sPRIx64=''
923 d_quad=''
924 quadkind=''
925 quadtype=''
926 uquadtype=''
927 drand01=''
928 randbits=''
929 randfunc=''
930 randseedtype=''
931 seedfunc=''
932 installscript=''
933 scriptdir=''
934 scriptdirexp=''
935 selectminbits=''
936 selecttype=''
937 sh=''
938 sig_count=''
939 sig_name=''
940 sig_name_init=''
941 sig_num=''
942 sig_num_init=''
943 sig_size=''
944 installsitearch=''
945 sitearch=''
946 sitearchexp=''
947 installsitebin=''
948 sitebin=''
949 sitebinexp=''
950 installsitelib=''
951 sitelib=''
952 sitelib_stem=''
953 sitelibexp=''
954 siteprefix=''
955 siteprefixexp=''
956 sizesize=''
957 sizetype=''
958 so=''
959 socksizetype=''
960 sharpbang=''
961 shsharp=''
962 spitshell=''
963 src=''
964 ssizetype=''
965 startperl=''
966 startsh=''
967 stdchar=''
968 d_stdio_stream_array=''
969 stdio_stream_array=''
970 sysman=''
971 trnl=''
972 uidformat=''
973 uidsign=''
974 uidsize=''
975 uidtype=''
976 archname64=''
977 use64bitall=''
978 use64bitint=''
979 ccflags_uselargefiles=''
980 ldflags_uselargefiles=''
981 libswanted_uselargefiles=''
982 uselargefiles=''
983 uselongdouble=''
984 usemorebits=''
985 usemultiplicity=''
986 nm_opt=''
987 nm_so_opt=''
988 runnm=''
989 usenm=''
990 useperlio=''
991 usesocks=''
992 d_oldpthreads=''
993 use5005threads=''
994 useithreads=''
995 usereentrant=''
996 usethreads=''
997 incpath=''
998 mips_type=''
999 usrinc=''
1000 d_vendorarch=''
1001 installvendorarch=''
1002 vendorarch=''
1003 vendorarchexp=''
1004 d_vendorbin=''
1005 installvendorbin=''
1006 vendorbin=''
1007 vendorbinexp=''
1008 d_vendorlib=''
1009 installvendorlib=''
1010 vendorlib=''
1011 vendorlib_stem=''
1012 vendorlibexp=''
1013 usevendorprefix=''
1014 vendorprefix=''
1015 vendorprefixexp=''
1016 versiononly=''
1017 defvoidused=''
1018 voidflags=''
1019 pm_apiversion=''
1020 xs_apiversion=''
1021 yacc=''
1022 yaccflags=''
1023 CONFIG=''
1024
1025 define='define'
1026 undef='undef'
1027 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1028 rmlist=''
1029
1030 : We must find out about Eunice early
1031 eunicefix=':'
1032 if test -f /etc/unixtovms; then
1033         eunicefix=/etc/unixtovms
1034 fi
1035 if test -f /etc/unixtovms.exe; then
1036         eunicefix=/etc/unixtovms.exe
1037 fi
1038
1039 : Set executable suffix now -- needed before hints available
1040 : maybe Stratus VOS
1041 if test -f "/system/gnu_library/bin/ar.pm"; then
1042     _exe=".pm"
1043 fi
1044 : maybe dos djgpp
1045 if test -n "$DJGPP"; then
1046     _exe=".exe"
1047 fi
1048 : maybe os/2
1049 if test -d c:/. ; then
1050     _exe=".exe"
1051 fi
1052
1053 i_whoami=''
1054 ccname=''
1055 ccversion=''
1056 perllibs=''
1057 : set useposix=false in your hint file to disable the POSIX extension.
1058 useposix=true
1059 : set useopcode=false in your hint file to disable the Opcode extension.
1060 useopcode=true
1061 : Trailing extension.  Override this in a hint file, if needed.
1062 : Extra object files, if any, needed on this platform.
1063 archobjs=''
1064 archname=''
1065 : Possible local include directories to search.
1066 : Set locincpth to "" in a hint file to defeat local include searches.
1067 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1068 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1069 :
1070 : no include file wanted by default
1071 inclwanted=''
1072
1073 groupstype=''
1074 libnames=''
1075 : change the next line if compiling for Xenix/286 on Xenix/386
1076 xlibpth='/usr/lib/386 /lib/386'
1077 : Possible local library directories to search.
1078 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1079 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1080
1081 : general looking path for locating libraries
1082 glibpth="/lib /usr/lib $xlibpth"
1083 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1084 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1085 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1086
1087 : Private path used by Configure to find libraries.  Its value
1088 : is prepended to libpth. This variable takes care of special
1089 : machines, like the mips.  Usually, it should be empty.
1090 plibpth=''
1091
1092 : default library list
1093 libswanted=''
1094 : some systems want to use only the non-versioned libso:s
1095 ignore_versioned_solibs=''
1096 archname64=''
1097 ccflags_uselargefiles=''
1098 ldflags_uselargefiles=''
1099 libswanted_uselargefiles=''
1100 : set usemultiplicity on the Configure command line to enable multiplicity.
1101 : set usesocks on the Configure command line to enable socks.
1102 : set usethreads on the Configure command line to enable threads.
1103 usereentrant='undef'
1104 : full support for void wanted by default
1105 defvoidused=15
1106
1107 : List of libraries we want.
1108 : If anyone needs -lnet, put it in a hint file.
1109 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1110 libswanted="$libswanted dld ld sun m c cposix posix"
1111 libswanted="$libswanted ndir dir crypt sec"
1112 libswanted="$libswanted ucb bsd BSD PW x util"
1113 : We probably want to search /usr/shlib before most other libraries.
1114 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1115 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1116 glibpth="/usr/shlib $glibpth"
1117 : Do not use vfork unless overridden by a hint file.
1118 usevfork=false
1119
1120 : Find the basic shell for Bourne shell scripts
1121 case "$sh" in
1122 '')
1123         case "$SYSTYPE" in
1124         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1125         *) xxx='/bin/sh';;
1126         esac
1127         if test -f "$xxx"; then
1128                 sh="$xxx"
1129         else
1130                 : Build up a list and do a single loop so we can 'break' out.
1131                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1132                 for xxx in sh bash ksh pdksh ash; do
1133                         for p in $pth; do
1134                                 try="$try ${p}/${xxx}"
1135                         done
1136                 done
1137                 for xxx in $try; do
1138                         if test -f "$xxx"; then
1139                                 sh="$xxx";
1140                                 break
1141                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1142                                 sh="$xxx";
1143                                 break
1144                         elif test -f "$xxx.exe"; then
1145                                 sh="$xxx";
1146                                 break
1147                         fi
1148                 done
1149         fi
1150         ;;
1151 esac
1152
1153 case "$sh" in
1154 '')     cat >&2 <<EOM
1155 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1156
1157 Usually it's in /bin/sh.  How did you even get this far?
1158 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1159 we'll try to straighten this all out.
1160 EOM
1161         exit 1
1162         ;;
1163 esac
1164
1165 : see if sh knows # comments
1166 if `$sh -c '#' >/dev/null 2>&1`; then
1167         shsharp=true
1168         spitshell=cat
1169         xcat=/bin/cat
1170         test -f $xcat$_exe || xcat=/usr/bin/cat
1171         if test ! -f $xcat$_exe; then
1172                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1173                         if test -f $p/cat$_exe; then
1174                                 xcat=$p/cat
1175                                 break
1176                         fi
1177                 done
1178                 if test ! -f $xcat$_exe; then
1179                         echo "Can't find cat anywhere!"
1180                         exit 1
1181                 fi
1182         fi
1183         echo "#!$xcat" >sharp
1184         $eunicefix sharp
1185         chmod +x sharp
1186         ./sharp > today
1187         if test -s today; then
1188                 sharpbang='#!'
1189         else
1190                 echo "#! $xcat" > sharp
1191                 $eunicefix sharp
1192                 chmod +x sharp
1193                 ./sharp > today
1194                 if test -s today; then
1195                         sharpbang='#! '
1196                 else
1197                         sharpbang=': use '
1198                 fi
1199         fi
1200 else
1201         echo " "
1202         echo "Your $sh doesn't grok # comments--I will strip them later on."
1203         shsharp=false
1204         cd ..
1205         echo "exec grep -v '^[  ]*#'" >spitshell
1206         chmod +x spitshell
1207         $eunicefix spitshell
1208         spitshell=`pwd`/spitshell
1209         cd UU
1210         echo "I presume that if # doesn't work, #! won't work either!"
1211         sharpbang=': use '
1212 fi
1213 rm -f sharp today
1214
1215 : figure out how to guarantee sh startup
1216 case "$startsh" in
1217 '') startsh=${sharpbang}${sh} ;;
1218 *)
1219 esac
1220 cat >sharp <<EOSS
1221 $startsh
1222 set abc
1223 test "$?abc" != 1
1224 EOSS
1225
1226 chmod +x sharp
1227 $eunicefix sharp
1228 if ./sharp; then
1229         : echo "Yup, it does."
1230 else
1231         echo "Hmm... '$startsh' does not guarantee sh startup..."
1232         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1233 fi
1234 rm -f sharp
1235
1236
1237 : Save command line options in file UU/cmdline.opt for later use in
1238 : generating config.sh.
1239 cat > cmdline.opt <<EOSH
1240 # Configure command line arguments.
1241 config_arg0='$0'
1242 config_args='$*'
1243 config_argc=$#
1244 EOSH
1245 argn=1
1246 args_exp=''
1247 args_sep=''
1248 for arg in "$@"; do
1249         cat >>cmdline.opt <<EOSH
1250 config_arg$argn='$arg'
1251 EOSH
1252         # Extreme backslashitis: replace each ' by '"'"'
1253         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1254 $arg
1255 EOC
1256         arg_exp=`cat cmdl.opt`
1257         args_exp="$args_exp$args_sep'$arg_exp'"
1258         argn=`expr $argn + 1`
1259         args_sep=' '
1260 done
1261 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1262 # used by ./hints/os2.sh
1263 rm -f cmdl.opt
1264
1265 : produce awk script to parse command line options
1266 cat >options.awk <<'EOF'
1267 BEGIN {
1268         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1269
1270         len = length(optstr);
1271         for (i = 1; i <= len; i++) {
1272                 c = substr(optstr, i, 1);
1273                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1274                 if (a == ":") {
1275                         arg[c] = 1;
1276                         i++;
1277                 }
1278                 opt[c] = 1;
1279         }
1280 }
1281 {
1282         expect = 0;
1283         str = $0;
1284         if (substr(str, 1, 1) != "-") {
1285                 printf("'%s'\n", str);
1286                 next;
1287         }
1288         len = length($0);
1289         for (i = 2; i <= len; i++) {
1290                 c = substr(str, i, 1);
1291                 if (!opt[c]) {
1292                         printf("-%s\n", substr(str, i));
1293                         next;
1294                 }
1295                 printf("-%s\n", c);
1296                 if (arg[c]) {
1297                         if (i < len)
1298                                 printf("'%s'\n", substr(str, i + 1));
1299                         else
1300                                 expect = 1;
1301                         next;
1302                 }
1303         }
1304 }
1305 END {
1306         if (expect)
1307                 print "?";
1308 }
1309 EOF
1310
1311 : process the command line options
1312 set X `for arg in "$@"; do echo "X$arg"; done |
1313         sed -e s/X// | awk -f options.awk`
1314 eval "set $*"
1315 shift
1316 rm -f options.awk
1317
1318 : set up default values
1319 fastread=''
1320 reuseval=false
1321 config_sh=''
1322 alldone=''
1323 error=''
1324 silent=''
1325 extractsh=''
1326 override=''
1327 knowitall=''
1328 rm -f optdef.sh posthint.sh
1329 cat >optdef.sh <<EOS
1330 $startsh
1331 EOS
1332
1333
1334 : option parsing
1335 while test $# -gt 0; do
1336         case "$1" in
1337         -d) shift; fastread=yes;;
1338         -e) shift; alldone=cont;;
1339         -f)
1340                 shift
1341                 cd ..
1342                 if test -r "$1"; then
1343                         config_sh="$1"
1344                 else
1345                         echo "$me: cannot read config file $1." >&2
1346                         error=true
1347                 fi
1348                 cd UU
1349                 shift;;
1350         -h) shift; error=true;;
1351         -r) shift; reuseval=true;;
1352         -s) shift; silent=true; realsilent=true;;
1353         -E) shift; alldone=exit;;
1354         -K) shift; knowitall=true;;
1355         -O) shift; override=true;;
1356         -S) shift; silent=true; extractsh=true;;
1357         -D)
1358                 shift
1359                 case "$1" in
1360                 *=)
1361                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1362                         echo "$me: ignoring -D $1" >&2
1363                         ;;
1364                 *=*) echo "$1" | \
1365                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1366                 *) echo "$1='define'" >> optdef.sh;;
1367                 esac
1368                 shift
1369                 ;;
1370         -U)
1371                 shift
1372                 case "$1" in
1373                 *=) echo "$1" >> optdef.sh;;
1374                 *=*)
1375                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1376                         echo "$me: ignoring -U $1" >&2
1377                         ;;
1378                 *) echo "$1='undef'" >> optdef.sh;;
1379                 esac
1380                 shift
1381                 ;;
1382         -A)
1383             shift
1384             xxx=''
1385             yyy="$1"
1386             zzz=''
1387             uuu=undef
1388             case "$yyy" in
1389             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1390                  case "$zzz" in
1391                  *:*) zzz='' ;;
1392                  *)   xxx=append
1393                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1394                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1395                  esac
1396                  ;;
1397             esac
1398             case "$xxx" in
1399             '')  case "$yyy" in
1400                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1401                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1402                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1403                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1404                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1405                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1406                  esac
1407                  ;;       
1408             esac
1409             case "$xxx" in
1410             append)
1411                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1412             clear)
1413                 echo "$yyy=''"                  >> posthint.sh ;;
1414             define)
1415                 case "$zzz" in
1416                 '') zzz=define ;;
1417                 esac
1418                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1419             eval)
1420                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1421             prepend)
1422                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1423             undef)
1424                 case "$zzz" in
1425                 '') zzz="$uuu" ;;
1426                 esac
1427                 echo "$yyy=$zzz"                >> posthint.sh ;;
1428             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1429             esac
1430             shift
1431             ;;
1432         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1433             exit 0;;
1434         --) break;;
1435         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1436         *) break;;
1437         esac
1438 done
1439
1440 case "$error" in
1441 true)
1442         cat >&2 <<EOM
1443 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1444                  [-U symbol] [-U symbol=] [-A command:symbol...]
1445   -d : use defaults for all answers.
1446   -e : go on without questioning past the production of config.sh.
1447   -f : specify an alternate default configuration file.
1448   -h : print this help message and exit (with an error status).
1449   -r : reuse C symbols value if possible (skips costly nm extraction).
1450   -s : silent mode, only echoes questions and essential information.
1451   -D : define symbol to have some value:
1452          -D symbol         symbol gets the value 'define'
1453          -D symbol=value   symbol gets the value 'value'
1454   -E : stop at the end of questions, after having produced config.sh.
1455   -K : do not use unless you know what you are doing.
1456   -O : let -D and -U override definitions from loaded configuration file.
1457   -S : perform variable substitutions on all .SH files (can mix with -f)
1458   -U : undefine symbol:
1459          -U symbol    symbol gets the value 'undef'
1460          -U symbol=   symbol gets completely empty
1461   -A : manipulate symbol after the platform specific hints have been applied:
1462          -A symbol=value                append " "value to symbol
1463          -A append:symbol=value         append value to symbol
1464          -A define:symbol=value         define symbol to have value
1465          -A clear:symbol                define symbol to be ''
1466          -A define:symbol               define symbol to be 'define'
1467          -A eval:symbol=value           define symbol to be eval of value
1468          -A prepend:symbol=value        prepend value to symbol
1469          -A undef:symbol                define symbol to be 'undef'
1470          -A undef:symbol=               define symbol to be ''
1471   -V : print version number and exit (with a zero status).
1472 EOM
1473         exit 1
1474         ;;
1475 esac
1476
1477 : Sanity checks
1478 case "$fastread$alldone" in
1479 yescont|yesexit) ;;
1480 *)
1481         case "$extractsh" in
1482         true) ;;
1483         *)
1484                 if test ! -t 0; then
1485                         echo "Say 'sh Configure', not 'sh <Configure'"
1486                         exit 1
1487                 fi
1488                 ;;
1489         esac
1490         ;;
1491 esac
1492
1493 exec 4>&1
1494 case "$silent" in
1495 true) exec 1>/dev/null;;
1496 esac
1497
1498 : run the defines and the undefines, if any, but leave the file out there...
1499 touch optdef.sh
1500 . ./optdef.sh
1501 : create the posthint manipulation script and leave the file out there...
1502 touch posthint.sh
1503
1504 : set package name
1505 package=perl5
1506 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1507 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1508 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1509 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1510 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1511 esac
1512
1513 : Some greps do not return status, grrr.
1514 echo "grimblepritz" >grimble
1515 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1516         contains=contains
1517 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1518         contains=grep
1519 else
1520         contains=contains
1521 fi
1522 rm -f grimble
1523 : the following should work in any shell
1524 case "$contains" in
1525 contains*)
1526         echo " "
1527         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1528         cat >contains <<'EOSS'
1529 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1530 EOSS
1531 chmod +x contains
1532 esac
1533
1534 : Find the path to the source tree
1535 case "$src" in
1536 '') case "$0" in
1537     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1538          case "$src" in
1539          /*)    ;;
1540          .)     ;;
1541          *)     src=`cd ../$src && pwd` ;;
1542          esac
1543          ;;
1544     *)   src='.';;
1545     esac;;
1546 esac
1547 case "$src" in
1548 '')     src=/
1549         rsrc=/
1550         ;;
1551 /*) rsrc="$src";;
1552 *) rsrc="../$src";;
1553 esac
1554 if test -f $rsrc/Configure && \
1555         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1556 then
1557    : found it, so we are ok.
1558 else
1559         rsrc=''
1560         for src in . .. ../.. ../../.. ../../../..; do
1561                 if test -f ../$src/Configure && \
1562                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1563                 then
1564                         rsrc=../$src
1565                         break
1566                 fi
1567         done
1568 fi
1569 case "$rsrc" in
1570 '')
1571         cat <<EOM >&4
1572
1573 Sorry, I can't seem to locate the source dir for $package.  Please start
1574 Configure with an explicit path -- i.e. /some/path/Configure.
1575
1576 EOM
1577         exit 1
1578         ;;
1579 ../.)   rsrc='..';;
1580 *)
1581         echo " "
1582         echo "Sources for $package found in \"$src\"." >&4
1583         ;;
1584 esac
1585
1586 : script used to extract .SH files with variable substitutions
1587 cat >extract <<'EOS'
1588 PERL_CONFIG_SH=true
1589 echo "Doing variable substitutions on .SH files..."
1590 if test -f MANIFEST; then
1591         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1592 else
1593         echo "(Looking for .SH files under the source directory.)"
1594         set x `(cd "$src"; find . -name "*.SH" -print)`
1595 fi
1596 shift
1597 case $# in
1598 0) set x `(cd "$src"; echo *.SH)`; shift;;
1599 esac
1600 if test ! -f "$src/$1"; then
1601         shift
1602 fi
1603 mkdir_p='
1604 name=$1;
1605 create="";
1606 while test $name; do
1607         if test ! -d "$name"; then
1608                 create="$name $create";
1609                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1610                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1611         else
1612                 name="";
1613         fi;
1614 done;
1615 for file in $create; do
1616         mkdir $file;
1617 done
1618 '
1619 for file in $*; do
1620         case "$src" in
1621         ".")
1622                 case "$file" in
1623                 */*)
1624                         dir=`expr X$file : 'X\(.*\)/'`
1625                         file=`expr X$file : 'X.*/\(.*\)'`
1626                         (cd "$dir" && . ./$file)
1627                         ;;
1628                 *)
1629                         . ./$file
1630                         ;;
1631                 esac
1632                 ;;
1633         *)
1634                 case "$file" in
1635                 */*)
1636                         dir=`expr X$file : 'X\(.*\)/'`
1637                         file=`expr X$file : 'X.*/\(.*\)'`
1638                         (set x $dir; shift; eval $mkdir_p)
1639                         sh <"$src/$dir/$file"
1640                         ;;
1641                 *)
1642                         sh <"$src/$file"
1643                         ;;
1644                 esac
1645                 ;;
1646         esac
1647 done
1648 if test -f "$src/config_h.SH"; then
1649         if test ! -f config.h; then
1650         : oops, they left it out of MANIFEST, probably, so do it anyway.
1651         . "$src/config_h.SH"
1652         fi
1653 fi
1654 EOS
1655
1656 : extract files and exit if asked to do so
1657 case "$extractsh" in
1658 true)
1659         case "$realsilent" in
1660         true) ;;
1661         *) exec 1>&4;;
1662         esac
1663         case "$config_sh" in
1664         '') config_sh='config.sh';;
1665         esac
1666         echo " "
1667         echo "Fetching answers from $config_sh..."
1668         cd ..
1669         . $config_sh
1670         test "$override" && . ./optdef.sh
1671         echo " "
1672         . UU/extract
1673         rm -rf UU
1674         echo "Extraction done."
1675         exit 0
1676         ;;
1677 esac
1678
1679 : Eunice requires " " instead of "", can you believe it
1680 echo " "
1681 : Here we go...
1682 echo "Beginning of configuration questions for $package."
1683
1684 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1685
1686 : first determine how to suppress newline on echo command
1687 echo " "
1688 echo "Checking echo to see how to suppress newlines..."
1689 (echo "hi there\c" ; echo " ") >.echotmp
1690 if $contains c .echotmp >/dev/null 2>&1 ; then
1691         echo "...using -n."
1692         n='-n'
1693         c=''
1694 else
1695         cat <<'EOM'
1696 ...using \c
1697 EOM
1698         n=''
1699         c='\c'
1700 fi
1701 echo $n "The star should be here-->$c"
1702 echo '*'
1703 rm -f .echotmp
1704
1705 : Now test for existence of everything in MANIFEST
1706 echo " "
1707 if test -f "$rsrc/MANIFEST"; then
1708         echo "First let's make sure your kit is complete.  Checking..." >&4
1709         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | split -50
1710         rm -f missing
1711         tmppwd=`pwd`
1712         for filelist in x??; do
1713                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1714         done
1715         if test -s missing; then
1716                 cat missing >&4
1717                 cat >&4 <<'EOM'
1718
1719 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1720
1721 You have the option of continuing the configuration process, despite the
1722 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1723 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1724 and contact the author (perlbug@perl.org).
1725
1726 EOM
1727                 echo $n "Continue? [n] $c" >&4
1728                 read ans
1729                 case "$ans" in
1730                 y*)
1731                         echo "Continuing..." >&4
1732                         rm -f missing
1733                         ;;
1734                 *)
1735                         echo "ABORTING..." >&4
1736                         kill $$
1737                         ;;
1738                 esac
1739         else
1740                 echo "Looks good..."
1741         fi
1742 else
1743         echo "There is no MANIFEST file.  I hope your kit is complete !"
1744 fi
1745 rm -f missing x??
1746
1747 echo " "
1748 : Find the appropriate value for a newline for tr
1749 if test -n "$DJGPP"; then
1750        trnl='\012'
1751 fi
1752 if test X"$trnl" = X; then
1753         case "`echo foo|tr '\n' x 2>/dev/null`" in
1754         foox) trnl='\n' ;;
1755         esac
1756 fi
1757 if test X"$trnl" = X; then
1758         case "`echo foo|tr '\012' x 2>/dev/null`" in
1759         foox) trnl='\012' ;;
1760         esac
1761 fi
1762 if test X"$trnl" = X; then
1763         cat <<EOM >&2
1764
1765 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1766
1767 EOM
1768         exit 1
1769 fi
1770
1771 : compute the number of columns on the terminal for proper question formatting
1772 case "$COLUMNS" in
1773 '') COLUMNS='80';;
1774 esac
1775
1776 : set up the echo used in my read
1777 myecho="case \"\$xxxm\" in
1778 '') echo $n \"\$rp $c\" >&4;;
1779 *) case \"\$rp\" in
1780         '') echo $n \"[\$xxxm] $c\";;
1781         *)
1782                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1783                         echo \"\$rp\" >&4
1784                         echo $n \"[\$xxxm] $c\" >&4
1785                 else
1786                         echo $n \"\$rp [\$xxxm] $c\" >&4
1787                 fi
1788                 ;;
1789         esac;;
1790 esac"
1791
1792 : now set up to do reads with possible shell escape and default assignment
1793 cat <<EOSC >myread
1794 $startsh
1795 xxxm=\$dflt
1796 $myecho
1797 ans='!'
1798 case "\$fastread" in
1799 yes) case "\$dflt" in
1800         '') ;;
1801         *) ans='';
1802                 case "\$silent-\$rp" in
1803                 true-) ;;
1804                 *) echo " " >&4;;
1805                 esac;;
1806         esac;;
1807 *) case "\$silent" in
1808         true) case "\$rp" in
1809                 '') ans='';;
1810                 esac;;
1811         esac;;
1812 esac
1813 while expr "X\$ans" : "X!" >/dev/null; do
1814         read answ
1815         set x \$xxxm
1816         shift
1817         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1818         case  "\$answ" in
1819         "!")
1820                 sh 1>&4
1821                 echo " "
1822                 $myecho
1823                 ;;
1824         !*)
1825                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1826                 shift
1827                 sh 1>&4 -c "\$*"
1828                 echo " "
1829                 $myecho
1830                 ;;
1831         "\$ans")
1832                 case "\$ans" in
1833                 \\&*)
1834                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1835                         shift
1836                         case "\$1" in
1837                         -d)
1838                                 fastread=yes
1839                                 echo "(OK, I'll run with -d after this question.)" >&4
1840                                 ;;
1841                         -*)
1842                                 echo "*** Sorry, \$1 not supported yet." >&4
1843                                 ;;
1844                         esac
1845                         $myecho
1846                         ans=!
1847                         ;;
1848                 esac;;
1849         *)
1850                 case "\$aok" in
1851                 y)
1852                         echo "*** Substitution done -- please confirm."
1853                         xxxm="\$ans"
1854                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1855                         xxxm="\$ans"
1856                         ans=!
1857                         ;;
1858                 *)
1859                         echo "*** Error -- try again."
1860                         ans=!
1861                         ;;
1862                 esac
1863                 $myecho
1864                 ;;
1865         esac
1866         case "\$ans\$xxxm\$nostick" in
1867         '')
1868                 ans=!
1869                 $myecho
1870                 ;;
1871         esac
1872 done
1873 case "\$ans" in
1874 '') ans="\$xxxm";;
1875 esac
1876 EOSC
1877
1878 : create .config dir to save info across Configure sessions
1879 test -d ../.config || mkdir ../.config
1880 cat >../.config/README <<EOF
1881 This directory created by Configure to save information that should
1882 persist across sessions for $package.
1883
1884 You may safely delete it if you wish.
1885 EOF
1886
1887 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1888 case "$usedevel" in
1889 $define|true|[yY]*) ;;
1890 *) case "$xversion" in
1891    *[13579])
1892         cat >&4 <<EOH
1893 *** WHOA THERE!!! ***
1894
1895     This is an UNSTABLE DEVELOPMENT release.
1896     The version of this $package distribution is $xversion, that is, odd,
1897     (as opposed to even) and that signifies a development release.
1898     If you want a maintenance release, you want an even-numbered version.
1899
1900     Do ***NOT*** install this into production use.
1901     Data corruption and crashes are possible.
1902
1903     It is most seriously suggested that you do not continue any further
1904     unless you want to help in developing and debugging Perl.
1905
1906     If you *still* want to build perl, you can answer 'y' now,
1907     or pass -Dusedevel to Configure.
1908
1909 EOH
1910         rp='Do you really want to continue?'
1911         dflt='n'
1912         . ./myread
1913         case "$ans" in
1914         [yY]) echo >&4 "Okay, continuing."
1915               usedevel="$define" ;;
1916         *) echo >&4 "Okay, bye."
1917            exit 1
1918            ;;
1919         esac
1920         ;;
1921     esac
1922     ;;
1923 esac
1924 case "$usedevel" in
1925 $define|true|[yY]*)
1926         case "$versiononly" in
1927         '') versiononly="$define" ;;
1928         esac
1929         case "$installusrbinperl" in
1930         '') installusrbinperl="$undef" ;;
1931         esac
1932         ;;
1933 esac
1934
1935 : general instructions
1936 needman=true
1937 firsttime=true
1938 user=`(logname) 2>/dev/null`
1939 case "$user" in
1940 '') user=`whoami 2>&1`;;
1941 esac
1942 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1943         firsttime=false
1944         echo " "
1945         rp='Would you like to see the instructions?'
1946         dflt=n
1947         . ./myread
1948         case "$ans" in
1949         [yY]*) ;;
1950         *) needman=false;;
1951         esac
1952 fi
1953 if $needman; then
1954         cat <<EOH
1955
1956 This installation shell script will examine your system and ask you questions
1957 to determine how the perl5 package should be installed. If you get
1958 stuck on a question, you may use a ! shell escape to start a subshell or
1959 execute a command.  Many of the questions will have default answers in square
1960 brackets; typing carriage return will give you the default.
1961
1962 On some of the questions which ask for file or directory names you are allowed
1963 to use the ~name construct to specify the login directory belonging to "name",
1964 even if you don't have a shell which knows about that.  Questions where this is
1965 allowed will be marked "(~name ok)".
1966
1967 EOH
1968         rp=''
1969         dflt='Type carriage return to continue'
1970         . ./myread
1971         cat <<'EOH'
1972
1973 The prompter used in this script allows you to use shell variables and
1974 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1975 in the default answer, as if the default line was a set of arguments given to a
1976 script shell.  This means you may also use $* to repeat the whole default line,
1977 so you do not have to re-type everything to add something to the default.
1978
1979 Everytime there is a substitution, you will have to confirm.  If there is an
1980 error (e.g. an unmatched backtick), the default answer will remain unchanged
1981 and you will be prompted again.
1982
1983 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1984 the questions and use the computed defaults (or the previous answers if there
1985 was already a config.sh file). Type 'Configure -h' for a list of options.
1986 You may also start interactively and then answer '& -d' at any prompt to turn
1987 on the non-interactive behaviour for the remainder of the execution.
1988
1989 EOH
1990         . ./myread
1991         cat <<EOH
1992
1993 Much effort has been expended to ensure that this shell script will run on any
1994 Unix system.  If despite that it blows up on yours, your best bet is to edit
1995 Configure and run it again.  If you can't run Configure for some reason,
1996 you'll have to generate a config.sh file by hand.  Whatever problems you
1997 have, let me (perlbug@perl.org) know how I blew it.
1998
1999 This installation script affects things in two ways:
2000
2001 1) it may do direct variable substitutions on some of the files included
2002    in this kit.
2003 2) it builds a config.h file for inclusion in C programs.  You may edit
2004    any of these files as the need arises after running this script.
2005
2006 If you make a mistake on a question, there is no easy way to back up to it
2007 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2008 files.  Configure will offer to let you do this before it runs the SH files.
2009
2010 EOH
2011         dflt='Type carriage return to continue'
2012         . ./myread
2013         case "$firsttime" in
2014         true) echo $user >>../.config/instruct;;
2015         esac
2016 fi
2017
2018 : find out where common programs are
2019 echo " "
2020 echo "Locating common programs..." >&4
2021 cat <<EOSC >loc
2022 $startsh
2023 case \$# in
2024 0) exit 1;;
2025 esac
2026 thing=\$1
2027 shift
2028 dflt=\$1
2029 shift
2030 for dir in \$*; do
2031         case "\$thing" in
2032         .)
2033         if test -d \$dir/\$thing; then
2034                 echo \$dir
2035                 exit 0
2036         fi
2037         ;;
2038         *)
2039         for thisthing in \$dir/\$thing; do
2040                 : just loop through to pick last item
2041         done
2042         if test -f \$thisthing; then
2043                 echo \$thisthing
2044                 exit 0
2045         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2046                 echo \$thisthing
2047                 exit 0
2048         elif test -f \$dir/\$thing.exe; then
2049                 if test -n "$DJGPP"; then
2050                         echo \$dir/\$thing.exe
2051                 else
2052                         : on Eunice apparently
2053                         echo \$dir/\$thing
2054                 fi
2055                 exit 0
2056         fi
2057         ;;
2058         esac
2059 done
2060 echo \$dflt
2061 exit 1
2062 EOSC
2063 chmod +x loc
2064 $eunicefix loc
2065 loclist="
2066 awk
2067 cat
2068 chmod
2069 comm
2070 cp
2071 echo
2072 expr
2073 grep
2074 ls
2075 mkdir
2076 rm
2077 sed
2078 sort
2079 touch
2080 tr
2081 uniq
2082 "
2083 trylist="
2084 Mcc
2085 ar
2086 bison
2087 byacc
2088 cpp
2089 csh
2090 date
2091 egrep
2092 gmake
2093 gzip
2094 less
2095 ln
2096 make
2097 more
2098 nm
2099 nroff
2100 pg
2101 test
2102 uname
2103 zip
2104 "
2105 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2106 pth="$pth /lib /usr/lib"
2107 for file in $loclist; do
2108         eval xxx=\$$file
2109         case "$xxx" in
2110         /*|?:[\\/]*)
2111                 if test -f "$xxx"; then
2112                         : ok
2113                 else
2114                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2115                         xxx=`./loc $file $file $pth`
2116                 fi
2117                 ;;
2118         '') xxx=`./loc $file $file $pth`;;
2119         *) xxx=`./loc $xxx $xxx $pth`;;
2120         esac
2121         eval $file=$xxx$_exe
2122         eval _$file=$xxx
2123         case "$xxx" in
2124         /*)
2125                 echo $file is in $xxx.
2126                 ;;
2127         ?:[\\/]*)
2128                 echo $file is in $xxx.
2129                 ;;
2130         *)
2131                 echo "I don't know where '$file' is, and my life depends on it." >&4
2132                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2133                 exit 1
2134                 ;;
2135         esac
2136 done
2137 echo " "
2138 echo "Don't worry if any of the following aren't found..."
2139 say=offhand
2140 for file in $trylist; do
2141         eval xxx=\$$file
2142         case "$xxx" in
2143         /*|?:[\\/]*)
2144                 if test -f "$xxx"; then
2145                         : ok
2146                 else
2147                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2148                         xxx=`./loc $file $file $pth`
2149                 fi
2150                 ;;
2151         '') xxx=`./loc $file $file $pth`;;
2152         *) xxx=`./loc $xxx $xxx $pth`;;
2153         esac
2154         eval $file=$xxx$_exe
2155         eval _$file=$xxx
2156         case "$xxx" in
2157         /*)
2158                 echo $file is in $xxx.
2159                 ;;
2160         ?:[\\/]*)
2161                 echo $file is in $xxx.
2162                 ;;
2163         *)
2164                 echo "I don't see $file out there, $say."
2165                 say=either
2166                 ;;
2167         esac
2168 done
2169 case "$egrep" in
2170 egrep)
2171         echo "Substituting grep for egrep."
2172         egrep=$grep
2173         _egrep=$grep
2174         ;;
2175 esac
2176 case "$ln" in
2177 ln)
2178         echo "Substituting cp for ln."
2179         ln=$cp
2180         _ln=$cp
2181         ;;
2182 esac
2183 case "$make" in
2184 make)   
2185         case "$gmake" in
2186         gmake)
2187         echo "I can't find make or gmake, and my life depends on it." >&4
2188         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2189         exit 1
2190         ;;
2191         esac
2192         ;;
2193 esac    
2194 case "$gmake" in
2195 gmake)  ;;
2196 *)      # We can't have osname yet.
2197         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2198                 # Assume that gmake, if found, is definitely GNU make
2199                 # and prefer it over the system make.
2200                 echo "Substituting gmake for make."
2201                 make=$gmake
2202                 _make=$gmake
2203         fi
2204         ;;
2205 esac
2206 case "$test" in
2207 test)
2208         echo "Hopefully test is built into your sh."
2209         ;;
2210 *)
2211         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2212                 echo "Using the test built into your sh."
2213                 test=test
2214                 _test=test
2215         fi
2216         ;;
2217 esac
2218 case "$echo" in
2219 echo)
2220         echo "Hopefully echo is built into your sh."
2221         ;;
2222 '') ;;
2223 *)
2224         echo " "
2225 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2226         $echo $n "hi there$c" >foo1
2227         echo $n "hi there$c" >foo2
2228         if cmp foo1 foo2 >/dev/null 2>&1; then
2229                 echo "They are compatible.  In fact, they may be identical."
2230         else
2231                 case "$n" in
2232                 '-n') n='' c='\c';;
2233                 *) n='-n' c='';;
2234                 esac
2235                 cat <<FOO
2236 They are not compatible!  You are probably running ksh on a non-USG system.
2237 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2238 have echo built in and we may have to run some Bourne shell scripts.  That
2239 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2240
2241 FOO
2242                 $echo $n "The star should be here-->$c"
2243                 $echo "*"
2244         fi
2245         $rm -f foo1 foo2
2246         ;;
2247 esac
2248
2249 cat <<EOS >trygcc
2250 $startsh
2251 EOS
2252 cat <<'EOSC' >>trygcc
2253 case "$cc" in
2254 '') ;;
2255 *)  $rm -f try try.*
2256     $cat >try.c <<EOM
2257 int main(int argc, char *argv[]) {
2258   return 0;
2259 }
2260 EOM
2261     if $cc -o try $ccflags $ldflags try.c; then
2262        :
2263     else
2264         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2265         despair=yes
2266         trygcc=yes
2267         case "$cc" in
2268         *gcc*) trygcc=no ;;
2269         esac
2270         case "`$cc -v -c try.c 2>&1`" in
2271         *gcc*) trygcc=no ;;
2272         esac
2273         if $test X"$trygcc" = Xyes; then
2274             if gcc -o try -c try.c; then
2275                 echo " "
2276                 echo "You seem to have a working gcc, though." >&4
2277                 rp="Would you like to use it?"
2278                 dflt=y
2279                 if $test -f myread; then
2280                     . ./myread
2281                 else
2282                     if $test -f UU/myread; then
2283                         . ./UU/myread
2284                     else
2285                         echo "Cannot find myread, sorry.  Aborting." >&2
2286                         exit 1
2287                     fi
2288                 fi  
2289                 case "$ans" in
2290                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2291                 esac
2292             fi
2293         fi
2294     fi
2295     $rm -f try try.*
2296     ;;
2297 esac
2298 EOSC
2299
2300 cat <<EOS >checkcc
2301 $startsh
2302 EOS
2303 cat <<'EOSC' >>checkcc
2304 case "$cc" in        
2305 '') ;;
2306 *)  $rm -f try try.*              
2307     $cat >try.c <<EOM
2308 int main(int argc, char *argv[]) {
2309   return 0;
2310 }
2311 EOM
2312     if $cc -o try $ccflags $ldflags try.c; then
2313        :
2314     else
2315         if $test X"$despair" = Xyes; then
2316            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2317         fi
2318         $cat >&4 <<EOM         
2319 You need to find a working C compiler.
2320 Either (purchase and) install the C compiler supplied by your OS vendor,
2321 or for a free C compiler try http://gcc.gnu.org/
2322 I cannot continue any further, aborting.
2323 EOM
2324         exit 1
2325     fi
2326     $rm -f try try.*
2327     ;;
2328 esac
2329 EOSC
2330
2331 : determine whether symbolic links are supported
2332 echo " "
2333 $touch blurfl
2334 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2335         echo "Symbolic links are supported." >&4
2336         lns="$ln -s"
2337 else
2338         echo "Symbolic links are NOT supported." >&4
2339         lns="$ln"
2340 fi
2341 $rm -f blurfl sym
2342
2343 : determine whether symbolic links are supported
2344 echo " "
2345 case "$lns" in
2346 *"ln"*" -s")
2347         echo "Checking how to test for symbolic links..." >&4
2348         $lns blurfl sym
2349         if $test "X$issymlink" = X; then
2350                 case "$newsh" in
2351                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2352                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2353                 esac
2354                 if test $? = 0; then
2355                         issymlink="test -h"
2356                 else
2357                         echo "Your builtin 'test -h' may be broken." >&4
2358                         case "$test" in
2359                         /*)     ;;
2360                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2361                                 for p in $pth
2362                                 do
2363                                         if test -f "$p/$test"; then
2364                                                 test="$p/$test"
2365                                                 break
2366                                         fi
2367                                 done
2368                                 ;;
2369                         esac
2370                         case "$test" in
2371                         /*)
2372                                 echo "Trying external '$test -h'." >&4
2373                                 issymlink="$test -h"
2374                                 if $test ! -h sym >/dev/null 2>&1; then
2375                                         echo "External '$test -h' is broken, too." >&4
2376                                         issymlink=''
2377                                 fi
2378                                 ;;
2379                         *)      issymlink='' ;;
2380                         esac
2381                 fi              
2382         fi
2383         if $test "X$issymlink" = X; then
2384                 if $test -L sym 2>/dev/null; then
2385                         issymlink="$test -L"
2386                         echo "The builtin '$test -L' worked." >&4
2387                 fi
2388         fi
2389         if $test "X$issymlink" != X; then
2390                 echo "You can test for symbolic links with '$issymlink'." >&4
2391         else
2392                 echo "I do not know how you can test for symbolic links." >&4
2393         fi
2394         $rm -f blurfl sym
2395         ;;
2396 *)      echo "No symbolic links, so not testing for their testing..." >&4
2397         ;;
2398 esac
2399 echo " "
2400
2401
2402 case "$mksymlinks" in
2403 $define|true|[yY]*)
2404         case "$src" in
2405         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2406                 exit 1
2407                 ;;
2408         *)      case "$lns:$issymlink" in
2409                 *"ln -s:"*"test -"?)
2410                         echo "Creating the symbolic links..." >&4
2411                         echo "(First creating the subdirectories...)" >&4
2412                         cd ..
2413                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2414                                 read directory
2415                                 test -z "$directory" && break
2416                                 mkdir -p $directory
2417                         done
2418                         # Sanity check 1.
2419                         if test ! -d t/base; then
2420                                 echo "Failed to create the subdirectories.  Aborting." >&4
2421                                 exit 1
2422                         fi
2423                         echo "(Then creating the symlinks...)" >&4
2424                         awk '{print $1}' $src/MANIFEST | while true; do
2425                                 read filename
2426                                 test -z "$filename" && break
2427                                 if test -f $filename; then
2428                                         if $issymlink $filename; then
2429                                                 rm -f $filename
2430                                         fi
2431                                 fi
2432                                 if test -f $filename; then
2433                                         echo "$filename already exists, not symlinking."
2434                                 else
2435                                         ln -s $src/$filename $filename
2436                                 fi
2437                         done
2438                         # Sanity check 2.
2439                         if test ! -f t/base/lex.t; then
2440                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2441                                 exit 1
2442                         fi
2443                         cd UU
2444                         ;;
2445                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2446                         ;;
2447                 esac
2448                 ;;
2449         esac
2450         ;;
2451 esac
2452
2453
2454 case "$usecrosscompile" in
2455 $define|true|[yY]*)
2456         $echo "Cross-compiling..."
2457         croak=''
2458         case "$cc" in
2459         *-*-gcc) # A cross-compiling gcc, probably.
2460             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2461             ar=$targetarch-ar
2462             # leave out ld, choosing it is more complex
2463             nm=$targetarch-nm
2464             ranlib=$targetarch-ranlib
2465             $echo 'extern int foo;' > try.c
2466             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2467             shift
2468             if $test $# -gt 0; then
2469                 incpth="$incpth $*"
2470                 incpth="`$echo $incpth|$sed 's/^ //'`"
2471                 echo "Guessing incpth '$incpth'." >&4
2472                 for i in $*; do
2473                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2474                     if $test -d $j; then
2475                         libpth="$libpth $j"
2476                     fi
2477                 done   
2478                 libpth="`$echo $libpth|$sed 's/^ //'`"
2479                 echo "Guessing libpth '$libpth'." >&4
2480             fi
2481             $rm -f try.c
2482             ;;
2483         esac
2484         case "$targetarch" in
2485         '') echo "Targetarch not defined." >&4; croak=y ;;
2486         *)  echo "Using targetarch $targetarch." >&4 ;;
2487         esac
2488         case "$incpth" in
2489         '') echo "Incpth not defined." >&4; croak=y ;;
2490         *)  echo "Using incpth '$incpth'." >&4 ;;
2491         esac
2492         case "$libpth" in
2493         '') echo "Libpth not defined." >&4; croak=y ;;
2494         *)  echo "Using libpth '$libpth'." >&4 ;;
2495         esac
2496         case "$usrinc" in
2497         '') for i in $incpth; do
2498                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2499                     usrinc=$i
2500                     echo "Guessing usrinc $usrinc." >&4
2501                     break
2502                 fi
2503             done
2504             case "$usrinc" in
2505             '') echo "Usrinc not defined." >&4; croak=y ;;
2506             esac
2507             ;;
2508         *)  echo "Using usrinc $usrinc." >&4 ;;
2509         esac
2510         case "$targethost" in
2511         '') echo "Targethost not defined." >&4; croak=y ;;
2512         *)  echo "Using targethost $targethost." >&4
2513         esac
2514         locincpth=' '
2515         loclibpth=' '
2516         case "$croak" in
2517         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2518         esac
2519         case "$src" in
2520         /*) run=$src/Cross/run
2521             targetmkdir=$src/Cross/mkdir
2522             to=$src/Cross/to
2523             from=$src/Cross/from
2524             ;;
2525         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2526             run=$pwd/Cross/run
2527             targetmkdir=$pwd/Cross/mkdir
2528             to=$pwd/Cross/to
2529             from=$pwd/Cross/from
2530             ;;
2531         esac
2532         case "$targetrun" in
2533         '') targetrun=ssh ;;
2534         esac
2535         case "$targetto" in
2536         '') targetto=scp ;;
2537         esac
2538         case "$targetfrom" in
2539         '') targetfrom=scp ;;
2540         esac
2541         run=$run-$targetrun
2542         to=$to-$targetto
2543         from=$from-$targetfrom
2544         case "$targetdir" in
2545         '')  targetdir=/tmp
2546              echo "Guessing targetdir $targetdir." >&4
2547              ;;
2548         esac
2549         case "$targetuser" in
2550         '')  targetuser=root
2551              echo "Guessing targetuser $targetuser." >&4
2552              ;;
2553         esac
2554         case "$targetfrom" in
2555         scp)    q=-q ;;
2556         *)      q='' ;;
2557         esac
2558         case "$targetrun" in
2559         ssh|rsh)
2560             cat >$run <<EOF
2561 #!/bin/sh
2562 case "\$1" in
2563 -cwd)
2564   shift
2565   cwd=\$1
2566   shift
2567   ;;
2568 esac
2569 case "\$cwd" in
2570 '') cwd=$targetdir ;;
2571 esac
2572 exe=\$1
2573 shift
2574 if $test ! -f \$exe.xok; then
2575   $to \$exe
2576   $touch \$exe.xok
2577 fi
2578 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2579 EOF
2580             ;;
2581         *)  echo "Unknown targetrun '$targetrun'" >&4
2582             exit 1
2583             ;;
2584         esac
2585         case "$targetmkdir" in
2586         */Cross/mkdir)
2587             cat >$targetmkdir <<EOF
2588 #!/bin/sh
2589 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2590 EOF
2591             $chmod a+rx $targetmkdir
2592             ;;
2593         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2594             exit 1
2595             ;;
2596         esac
2597         case "$targetto" in
2598         scp|rcp)
2599             cat >$to <<EOF
2600 #!/bin/sh
2601 for f in \$@
2602 do
2603   case "\$f" in
2604   /*)
2605     $targetmkdir \`dirname \$f\`
2606     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2607     ;;
2608   *)
2609     $targetmkdir $targetdir/\`dirname \$f\`
2610     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2611     ;;
2612   esac
2613 done
2614 exit 0
2615 EOF
2616             ;;
2617         cp) cat >$to <<EOF
2618 #!/bin/sh
2619 for f in \$@
2620 do
2621   case "\$f" in
2622   /*)
2623     $mkdir -p $targetdir/\`dirname \$f\`
2624     $cp \$f $targetdir/\$f || exit 1
2625     ;;
2626   *)
2627     $targetmkdir $targetdir/\`dirname \$f\`
2628     $cp \$f $targetdir/\$f || exit 1
2629     ;;
2630   esac
2631 done
2632 exit 0
2633 EOF
2634             ;;
2635         *)  echo "Unknown targetto '$targetto'" >&4
2636             exit 1
2637             ;;
2638         esac
2639         case "$targetfrom" in
2640         scp|rcp)
2641           cat >$from <<EOF
2642 #!/bin/sh
2643 for f in \$@
2644 do
2645   $rm -f \$f
2646   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2647 done
2648 exit 0
2649 EOF
2650             ;;
2651         cp) cat >$from <<EOF
2652 #!/bin/sh
2653 for f in \$@
2654 do
2655   $rm -f \$f
2656   cp $targetdir/\$f . || exit 1
2657 done
2658 exit 0
2659 EOF
2660             ;;
2661         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2662             exit 1
2663             ;;
2664         esac
2665         if $test ! -f $run; then
2666             echo "Target 'run' script '$run' not found." >&4
2667         else
2668             $chmod a+rx $run
2669         fi
2670         if $test ! -f $to; then
2671             echo "Target 'to' script '$to' not found." >&4
2672         else
2673             $chmod a+rx $to
2674         fi
2675         if $test ! -f $from; then
2676             echo "Target 'from' script '$from' not found." >&4
2677         else
2678             $chmod a+rx $from
2679         fi
2680         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2681             exit 1
2682         fi
2683         cat >&4 <<EOF
2684 Using '$run' for remote execution,
2685 and '$from' and '$to'
2686 for remote file transfer.
2687 EOF
2688         ;;
2689 *)      run=''
2690         to=:
2691         from=:
2692         usecrosscompile='undef'
2693         targetarch=''
2694         ;;
2695 esac
2696
2697 : see whether [:lower:] and [:upper:] are supported character classes
2698 echo " "
2699 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2700 ABYZ)
2701         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2702         up='[:upper:]'
2703         low='[:lower:]'
2704         ;;
2705 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2706         # (0xc9 and 0xd1), therefore that is a nice testing point.
2707         if test "X$up" = X -o "X$low" = X; then
2708             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2709             ij) up='[A-Z]'
2710                 low='[a-z]'
2711                 ;;
2712             esac
2713         fi
2714         if test "X$up" = X -o "X$low" = X; then
2715             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2716             ij) up='A-Z'
2717                 low='a-z'
2718                 ;;
2719             esac
2720         fi
2721         if test "X$up" = X -o "X$low" = X; then
2722             case "`echo IJ | od -x 2>/dev/null`" in
2723             *C9D1*|*c9d1*)
2724                 echo "Hey, this might be EBCDIC." >&4
2725                 if test "X$up" = X -o "X$low" = X; then
2726                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2727                     ij) up='[A-IJ-RS-Z]'
2728                         low='[a-ij-rs-z]'
2729                         ;;
2730                     esac
2731                 fi
2732                 if test "X$up" = X -o "X$low" = X; then
2733                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2734                     ij) up='A-IJ-RS-Z'
2735                         low='a-ij-rs-z'
2736                         ;;
2737                     esac
2738                 fi
2739                 ;;
2740             esac
2741         fi
2742 esac
2743 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2744 ij)
2745     echo "Using $up and $low to convert case." >&4
2746     ;;
2747 *)
2748     echo "I don't know how to translate letters from upper to lower case." >&4
2749     echo "Your tr is not acting any way I know of." >&4
2750     exit 1
2751     ;;
2752 esac
2753 : set up the translation script tr, must be called with ./tr of course
2754 cat >tr <<EOSC
2755 $startsh
2756 case "\$1\$2" in
2757 '[A-Z][a-z]') exec $tr '$up' '$low';;
2758 '[a-z][A-Z]') exec $tr '$low' '$up';;
2759 esac
2760 exec $tr "\$@"
2761 EOSC
2762 chmod +x tr
2763 $eunicefix tr
2764
2765 : Try to determine whether config.sh was made on this system
2766 case "$config_sh" in
2767 '')
2768 myuname=`$uname -a 2>/dev/null`
2769 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2770 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2771 # because the A-Z/a-z are not consecutive.
2772 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2773         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2774 newmyuname="$myuname"
2775 dflt=n
2776 case "$knowitall" in
2777 '')
2778         if test -f ../config.sh; then
2779                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2780                         eval "`grep myuname= ../config.sh`"
2781                 fi
2782                 if test "X$myuname" = "X$newmyuname"; then
2783                         dflt=y
2784                 fi
2785         fi
2786         ;;
2787 *) dflt=y;;
2788 esac
2789
2790 : Get old answers from old config file if Configure was run on the
2791 : same system, otherwise use the hints.
2792 hint=default
2793 cd ..
2794 if test -f config.sh; then
2795         echo " "
2796         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2797         . UU/myread
2798         case "$ans" in
2799         n*|N*) echo "OK, I'll ignore it."
2800                 mv config.sh config.sh.old
2801                 myuname="$newmyuname"
2802                 ;;
2803         *)  echo "Fetching default answers from your old config.sh file..." >&4
2804                 tmp_n="$n"
2805                 tmp_c="$c"
2806                 tmp_sh="$sh"
2807                 . ./config.sh
2808                 cp config.sh UU
2809                 n="$tmp_n"
2810                 c="$tmp_c"
2811                 : Older versions did not always set $sh.  Catch re-use of such
2812                 : an old config.sh.
2813                 case "$sh" in
2814                 '') sh="$tmp_sh" ;;
2815                 esac
2816                 hint=previous
2817                 ;;
2818         esac
2819 fi
2820 . ./UU/checkcc
2821 if test ! -f config.sh; then
2822         $cat <<EOM
2823
2824 First time through, eh?  I have some defaults handy for some systems
2825 that need some extra help getting the Configure answers right:
2826
2827 EOM
2828         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2829         dflt=''
2830         : Half the following guesses are probably wrong... If you have better
2831         : tests or hints, please send them to perlbug@perl.org
2832         : The metaconfig authors would also appreciate a copy...
2833         $test -f /irix && osname=irix
2834         $test -f /xenix && osname=sco_xenix
2835         $test -f /dynix && osname=dynix
2836         $test -f /dnix && osname=dnix
2837         $test -f /lynx.os && osname=lynxos
2838         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2839         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2840         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2841         $test -f /bin/mips && /bin/mips && osname=mips
2842         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2843                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2844         $test -d /usr/apollo/bin && osname=apollo
2845         $test -f /etc/saf/_sactab && osname=svr4
2846         $test -d /usr/include/minix && osname=minix
2847         $test -f /system/gnu_library/bin/ar.pm && osname=vos
2848         if $test -d /MachTen -o -d /MachTen_Folder; then
2849                 osname=machten
2850                 if $test -x /sbin/version; then
2851                         osvers=`/sbin/version | $awk '{print $2}' |
2852                         $sed -e 's/[A-Za-z]$//'`
2853                 elif $test -x /usr/etc/version; then
2854                         osvers=`/usr/etc/version | $awk '{print $2}' |
2855                         $sed -e 's/[A-Za-z]$//'`
2856                 else
2857                         osvers="$2.$3"
2858                 fi
2859         fi
2860
2861         $test -f /sys/posix.dll &&
2862                 $test -f /usr/bin/what &&
2863                 set X `/usr/bin/what /sys/posix.dll` &&
2864                 $test "$3" = UWIN &&
2865                 osname=uwin &&
2866                 osvers="$5"
2867
2868         if $test -f $uname; then
2869                 set X $myuname
2870                 shift
2871
2872                 case "$5" in
2873                 fps*) osname=fps ;;
2874                 mips*)
2875                         case "$4" in
2876                         umips) osname=umips ;;
2877                         *) osname=mips ;;
2878                         esac;;
2879                 [23]100) osname=mips ;;
2880                 next*) osname=next ;;
2881                 i386*)
2882                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2883                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2884                                 osname='sco'
2885                                 osvers=$tmp
2886                         elif $test -f /etc/kconfig; then
2887                                 osname=isc
2888                                 if test "$lns" = "$ln -s"; then
2889                                         osvers=4
2890                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2891                                         osvers=3
2892                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2893                                         osvers=2
2894                                 fi
2895                         fi
2896                         tmp=''
2897                         ;;
2898                 pc*)
2899                         if test -n "$DJGPP"; then
2900                                 osname=dos
2901                                 osvers=djgpp
2902                         fi
2903                         ;;
2904                 esac
2905
2906                 case "$1" in
2907                 aix) osname=aix
2908                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2909                         case "$tmp" in
2910                         'not found') osvers="$4"."$3" ;;
2911                         '<3240'|'<>3240') osvers=3.2.0 ;;
2912                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2913                         '=3250'|'>3250') osvers=3.2.5 ;;
2914                         *) osvers=$tmp;;
2915                         esac
2916                         ;;
2917                 bsd386) osname=bsd386
2918                         osvers=`$uname -r`
2919                         ;;
2920                 cygwin*) osname=cygwin
2921                         osvers="$3"
2922                         ;;
2923                 *dc.osx) osname=dcosx
2924                         osvers="$3"
2925                         ;;
2926                 dnix) osname=dnix
2927                         osvers="$3"
2928                         ;;
2929                 domainos) osname=apollo
2930                         osvers="$3"
2931                         ;;
2932                 dgux) osname=dgux 
2933                         osvers="$3"
2934                         ;;
2935                 dynixptx*) osname=dynixptx
2936                         osvers=`echo "$4"|sed 's/^v//'`
2937                         ;;
2938                 freebsd) osname=freebsd 
2939                         osvers="$3" ;;
2940                 genix) osname=genix ;;
2941                 hp*) osname=hpux 
2942                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2943                         ;;
2944                 irix*) osname=irix
2945                         case "$3" in
2946                         4*) osvers=4 ;;
2947                         5*) osvers=5 ;;
2948                         *)      osvers="$3" ;;
2949                         esac
2950                         ;;
2951                 linux) osname=linux
2952                         case "$3" in
2953                         *)      osvers="$3" ;;
2954                         esac
2955                         ;;
2956                 MiNT) osname=mint
2957                         ;;
2958                 netbsd*) osname=netbsd
2959                         osvers="$3"
2960                         ;;
2961                 news-os) osvers="$3"
2962                         case "$3" in
2963                         4*) osname=newsos4 ;;
2964                         *) osname=newsos ;;
2965                         esac
2966                         ;;
2967                 next*) osname=next ;;
2968                 nonstop-ux) osname=nonstopux ;;
2969                 POSIX-BC | posix-bc ) osname=posix-bc
2970                         osvers="$3"
2971                         ;;
2972                 powerux | power_ux | powermax_os | powermaxos | \
2973                 powerunix | power_unix) osname=powerux
2974                         osvers="$3"
2975                         ;;
2976                 qnx) osname=qnx
2977                         osvers="$4"
2978                         ;;
2979                 solaris) osname=solaris
2980                         case "$3" in
2981                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2982                         *)      osvers="$3" ;;
2983                         esac
2984                         ;;
2985                 sunos) osname=sunos
2986                         case "$3" in
2987                         5*) osname=solaris
2988                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2989                         *)      osvers="$3" ;;
2990                         esac
2991                         ;;
2992                 titanos) osname=titanos
2993                         case "$3" in
2994                         1*) osvers=1 ;;
2995                         2*) osvers=2 ;;
2996                         3*) osvers=3 ;;
2997                         4*) osvers=4 ;;
2998                         *)      osvers="$3" ;;
2999                         esac
3000                         ;;
3001                 ultrix) osname=ultrix
3002                         osvers="$3"
3003                         ;;
3004                 osf1|mls+)      case "$5" in
3005                                 alpha)
3006                                         osname=dec_osf
3007                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3008                                         case "$osvers" in
3009                                         [1-9].[0-9]*) ;;
3010                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3011                                         esac
3012                                         ;;
3013                         hp*)    osname=hp_osf1  ;;
3014                         mips)   osname=mips_osf1 ;;
3015                         esac
3016                         ;;
3017                 unixware) osname=svr5
3018                         osvers="$4"
3019                         ;;
3020                 uts)    osname=uts
3021                         osvers="$3"
3022                         ;;
3023                 vos) osvers="$3"
3024                         ;;
3025                 $2) case "$osname" in
3026                         *isc*) ;;
3027                         *freebsd*) ;;
3028                         svr*)
3029                                 : svr4.x or possibly later
3030                                 case "svr$3" in 
3031                                 ${osname}*)
3032                                         osname=svr$3
3033                                         osvers=$4
3034                                         ;;
3035                                 esac
3036                                 case "$osname" in
3037                                 svr4.0)
3038                                         : Check for ESIX
3039                                         if test -f /stand/boot ; then
3040                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3041                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3042                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3043                                                         if test -n "$isesix"; then
3044                                                                 osname=esix4
3045                                                         fi
3046                                                 fi
3047                                         fi
3048                                         ;;
3049                                 esac
3050                                 ;;
3051                         *)      if test -f /etc/systemid; then
3052                                         osname=sco
3053                                         set `echo $3 | $sed 's/\./ /g'` $4
3054                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3055                                                 osvers=$1.$2.$3
3056                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3057                                                 osvers=$1.$2
3058                                         elif $test -f $src/hints/sco_$1.sh; then
3059                                                 osvers=$1
3060                                         fi
3061                                 else
3062                                         case "$osname" in
3063                                         '') : Still unknown.  Probably a generic Sys V.
3064                                                 osname="sysv"
3065                                                 osvers="$3"
3066                                                 ;;
3067                                         esac
3068                                 fi
3069                                 ;;
3070                         esac
3071                         ;;
3072                 *)      case "$osname" in
3073                         '') : Still unknown.  Probably a generic BSD.
3074                                 osname="$1"
3075                                 osvers="$3"
3076                                 ;;
3077                         esac
3078                         ;;
3079                 esac
3080         else
3081                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3082                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3083                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3084                                 osname=news_os
3085                         fi
3086                         $rm -f UU/kernel.what
3087                 elif test -d c:/.; then
3088                         set X $myuname
3089                         osname=os2
3090                         osvers="$5"
3091                 fi
3092         fi
3093         
3094         case "$targetarch" in
3095         '') ;;
3096         *)  hostarch=$osname
3097             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3098             osvers=''
3099             ;;
3100         esac
3101
3102         : Now look for a hint file osname_osvers, unless one has been
3103         : specified already.
3104         case "$hintfile" in
3105         ''|' ')
3106                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3107                 : Also try without trailing minor version numbers.
3108                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3109                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3110                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3111                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3112                 case "$file" in
3113                 '') dflt=none ;;
3114                 *)  case "$osvers" in
3115                         '') dflt=$file
3116                                 ;;
3117                         *)  if $test -f $src/hints/$file.sh ; then
3118                                         dflt=$file
3119                                 elif $test -f $src/hints/$xfile.sh ; then
3120                                         dflt=$xfile
3121                                 elif $test -f $src/hints/$xxfile.sh ; then
3122                                         dflt=$xxfile
3123                                 elif $test -f $src/hints/$xxxfile.sh ; then
3124                                         dflt=$xxxfile
3125                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3126                                         dflt=$xxxxfile
3127                                 elif $test -f "$src/hints/${osname}.sh" ; then
3128                                         dflt="${osname}"
3129                                 else
3130                                         dflt=none
3131                                 fi
3132                                 ;;
3133                         esac
3134                         ;;
3135                 esac
3136                 if $test -f Policy.sh ; then
3137                         case "$dflt" in
3138                         *Policy*) ;;
3139                         none) dflt="Policy" ;;
3140                         *) dflt="Policy $dflt" ;;
3141                         esac
3142                 fi
3143                 ;;
3144         *)
3145                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3146                 ;;
3147         esac
3148
3149         if $test -f Policy.sh ; then
3150                 $cat <<EOM
3151
3152 There's also a Policy hint file available, which should make the
3153 site-specific (policy) questions easier to answer.
3154 EOM
3155
3156         fi
3157
3158         $cat <<EOM
3159
3160 You may give one or more space-separated answers, or "none" if appropriate.
3161 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3162 is a good thing.  DO NOT give a wrong version or a wrong OS.
3163
3164 EOM
3165
3166         rp="Which of these apply, if any?"
3167         . UU/myread
3168         tans=$ans
3169         for file in $tans; do
3170                 if $test X$file = XPolicy -a -f Policy.sh; then
3171                         . Policy.sh
3172                         $cat Policy.sh >> UU/config.sh
3173                 elif $test -f $src/hints/$file.sh; then
3174                         . $src/hints/$file.sh
3175                         $cat $src/hints/$file.sh >> UU/config.sh
3176                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3177                         : nothing
3178                 else
3179                         : Give one chance to correct a possible typo.
3180                         echo "$file.sh does not exist"
3181                         dflt=$file
3182                         rp="hint to use instead?"
3183                         . UU/myread
3184                         for file in $ans; do
3185                                 if $test -f "$src/hints/$file.sh"; then
3186                                         . $src/hints/$file.sh
3187                                         $cat $src/hints/$file.sh >> UU/config.sh
3188                                 elif $test X$ans = X -o X$ans = Xnone ; then
3189                                         : nothing
3190                                 else
3191                                         echo "$file.sh does not exist -- ignored."
3192                                 fi
3193                         done
3194                 fi
3195         done
3196
3197         hint=recommended
3198         : Remember our hint file for later.
3199         if $test -f "$src/hints/$file.sh" ; then
3200                 hintfile="$file"
3201         else
3202                 hintfile=''
3203         fi
3204 fi
3205 cd UU
3206 ;;
3207 *)
3208         echo " "
3209         echo "Fetching default answers from $config_sh..." >&4
3210         tmp_n="$n"
3211         tmp_c="$c"
3212         cd ..
3213         cp $config_sh config.sh 2>/dev/null
3214         chmod +w config.sh
3215         . ./config.sh
3216         cd UU
3217         cp ../config.sh .
3218         n="$tmp_n"
3219         c="$tmp_c"
3220         hint=previous
3221         ;;
3222 esac
3223 test "$override" && . ./optdef.sh
3224
3225 : Restore computed paths
3226 for file in $loclist $trylist; do
3227         eval $file="\$_$file"
3228 done
3229
3230 cat << EOM
3231
3232 Configure uses the operating system name and version to set some defaults.
3233 The default value is probably right if the name rings a bell. Otherwise,
3234 since spelling matters for me, either accept the default or answer "none"
3235 to leave it blank.
3236
3237 EOM
3238 case "$osname" in
3239         ''|' ')
3240                 case "$hintfile" in
3241                 ''|' '|none) dflt=none ;;
3242                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3243                 esac
3244                 ;;
3245         *) dflt="$osname" ;;
3246 esac
3247 rp="Operating system name?"
3248 . ./myread
3249 case "$ans" in
3250 none)  osname='' ;;
3251 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3252 esac
3253 echo " "
3254 case "$osvers" in
3255         ''|' ')
3256                 case "$hintfile" in
3257                 ''|' '|none) dflt=none ;;
3258                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3259                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3260                         case "$dflt" in
3261                         ''|' ') dflt=none ;;
3262                         esac
3263                         ;;
3264                 esac
3265                 ;;
3266         *) dflt="$osvers" ;;
3267 esac
3268 rp="Operating system version?"
3269 . ./myread
3270 case "$ans" in
3271 none)  osvers='' ;;
3272 *) osvers="$ans" ;;
3273 esac
3274
3275
3276 . ./posthint.sh
3277
3278 : who configured the system
3279 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3280 cf_by=`(logname) 2>/dev/null`
3281 case "$cf_by" in
3282 "")
3283         cf_by=`(whoami) 2>/dev/null`
3284         case "$cf_by" in
3285         "") cf_by=unknown ;;
3286         esac ;;
3287 esac
3288
3289 : set up the script used to warn in case of inconsistency
3290 cat <<EOS >whoa
3291 $startsh
3292 EOS
3293 cat <<'EOSC' >>whoa
3294 dflt=y
3295 echo " "
3296 echo "*** WHOA THERE!!! ***" >&4
3297 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3298 rp="    Keep the $hint value?"
3299 . ./myread
3300 case "$ans" in
3301 y) td=$was; tu=$was;;
3302 esac
3303 EOSC
3304
3305 : function used to set $1 to $val
3306 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3307 case "$val$was" in
3308 $define$undef) . ./whoa; eval "$var=\$td";;
3309 $undef$define) . ./whoa; eval "$var=\$tu";;
3310 *) eval "$var=$val";;
3311 esac'
3312
3313 case "$usethreads" in
3314 $define|true|[yY]*)     dflt='y';;
3315 *) dflt='n';;
3316 esac
3317 cat <<EOM
3318
3319 Perl can be built to take advantage of threads on some systems.
3320 To do so, Configure can be run with -Dusethreads.
3321
3322 Note that threading is a highly experimental feature, and
3323 some known race conditions still remain.  If you choose to try
3324 it, be very sure to not actually deploy it for production
3325 purposes.  README.threads has more details, and is required
3326 reading if you enable threads.
3327
3328 If this doesn't make any sense to you, just accept the default '$dflt'.
3329 EOM
3330 rp='Build a threading Perl?'
3331 . ./myread
3332 case "$ans" in
3333 y|Y)    val="$define" ;;
3334 *)      val="$undef" ;;
3335 esac
3336 set usethreads
3337 eval $setvar
3338
3339 case "$usethreads" in
3340 $define)
3341         $cat <<EOM
3342
3343 As of 5.5.640, Perl has two different internal threading implementations,
3344 the 5.005 version (5005threads) and an interpreter-based version
3345 (ithreads) that has one interpreter per thread.  Both are very 
3346 experimental.  This arrangement exists to help developers work out
3347 which one is better.
3348
3349 If you're a casual user, you probably don't want interpreter-threads
3350 at this time.  But if you do, the 'threads' module allows their use,
3351 and the 'Thread' module offers an interface to both 5005threads and
3352 ithreads (whichever has been configured).
3353 EOM
3354         : Default to ithreads unless overridden on command line or with
3355         : old config.sh
3356         dflt='y'
3357         case "$use5005threads" in
3358                 $define|true|[yY]*) dflt='n';;
3359         esac
3360         case "$useithreads" in
3361                 $undef|false|[nN]*) dflt='n';;
3362         esac
3363         rp='Use interpreter-based ithreads?'
3364         . ./myread
3365         case "$ans" in
3366         y|Y)    val="$define" ;;
3367         *)      val="$undef" ;;
3368         esac
3369         set useithreads
3370         eval $setvar
3371         : Now set use5005threads to the opposite value.
3372         case "$useithreads" in
3373         $define) val="$undef" ;;
3374         *) val="$define" ;;
3375         esac
3376         set use5005threads
3377         eval $setvar
3378         ;;
3379 *)
3380         useithreads="$undef"
3381         use5005threads="$undef"
3382         ;;
3383 esac
3384
3385 case "$useithreads$use5005threads" in
3386 "$define$define")
3387         $cat >&4 <<EOM
3388
3389 You cannot have both the ithreads and the 5.005 threads enabled
3390 at the same time.  Disabling the 5.005 threads since they are
3391 much less stable than the ithreads.
3392
3393 EOM
3394         use5005threads="$undef"
3395         ;;
3396 esac
3397
3398 case "$d_oldpthreads" in
3399 '')     : Configure tests would be welcome here.  For now, assume undef.
3400         val="$undef" ;;
3401 *)      val="$d_oldpthreads" ;;
3402 esac
3403 set d_oldpthreads
3404 eval $setvar
3405
3406
3407 case "$usethreads" in
3408 "$define"|true|[yY]*)
3409 : Look for a hint-file generated 'call-back-unit'.  If the
3410 : user has specified that a threading perl is to be built,
3411 : we may need to set or change some other defaults.
3412         if $test -f usethreads.cbu; then
3413                 echo "Your platform has some specific hints for threaded builds, using them..."
3414                 . ./usethreads.cbu
3415         else
3416                 $cat <<EOM
3417 (Your platform doesn't have any specific hints for threaded builds.
3418  Assuming POSIX threads, then.)
3419 EOM
3420         fi
3421         ;;
3422 esac
3423
3424 cat <<EOM
3425
3426 Perl can be built so that multiple Perl interpreters can coexist
3427 within the same Perl executable.
3428 EOM
3429
3430 case "$useithreads" in
3431 $define)
3432         cat <<EOM
3433 This multiple interpreter support is required for interpreter-based threads.
3434 EOM
3435         val="$define"
3436         ;;
3437 *)      case "$usemultiplicity" in
3438         $define|true|[yY]*)     dflt='y';;
3439         *) dflt='n';;
3440         esac
3441         echo " "
3442         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3443         rp='Build Perl for multiplicity?'
3444         . ./myread
3445         case "$ans" in
3446         y|Y)    val="$define" ;;
3447         *)      val="$undef" ;;
3448         esac
3449         ;;
3450 esac
3451 set usemultiplicity
3452 eval $setvar
3453
3454
3455 case "$usemorebits" in
3456 "$define"|true|[yY]*)
3457         use64bitint="$define"
3458         uselongdouble="$define"
3459         usemorebits="$define"
3460         ;;
3461 *)      usemorebits="$undef"
3462         ;;
3463 esac
3464
3465 : make some quick guesses about what we are up against
3466 echo " "
3467 $echo $n "Hmm...  $c"
3468 echo exit 1 >bsd
3469 echo exit 1 >usg
3470 echo exit 1 >v7
3471 echo exit 1 >osf1
3472 echo exit 1 >eunice
3473 echo exit 1 >xenix
3474 echo exit 1 >venix
3475 echo exit 1 >os2
3476 d_bsd="$undef"
3477 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3478 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3479 then
3480         echo "Looks kind of like an OSF/1 system, but we'll see..."
3481         echo exit 0 >osf1
3482 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3483         xxx=`./loc addbib blurfl $pth`
3484         if $test -f $xxx; then
3485         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3486                 echo exit 0 >bsd
3487                 echo exit 0 >usg
3488         else
3489                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3490                         echo "Looks kind of like an extended USG system, but we'll see..."
3491                 else
3492                         echo "Looks kind of like a USG system, but we'll see..."
3493                 fi
3494                 echo exit 0 >usg
3495         fi
3496 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3497         echo "Looks kind of like a BSD system, but we'll see..."
3498         d_bsd="$define"
3499         echo exit 0 >bsd
3500 else
3501         echo "Looks kind of like a Version 7 system, but we'll see..."
3502         echo exit 0 >v7
3503 fi
3504 case "$eunicefix" in
3505 *unixtovms*)
3506         $cat <<'EOI'
3507 There is, however, a strange, musty smell in the air that reminds me of
3508 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3509 EOI
3510         echo exit 0 >eunice
3511         d_eunice="$define"
3512 : it so happens the Eunice I know will not run shell scripts in Unix format
3513         ;;
3514 *)
3515         echo " "
3516         echo "Congratulations.  You aren't running Eunice."
3517         d_eunice="$undef"
3518         ;;
3519 esac
3520 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3521 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3522 : semicolon as a patch separator
3523 case "$p_" in
3524 :) ;;
3525 *)
3526         $cat <<'EOI'
3527 I have the feeling something is not exactly right, however...don't tell me...
3528 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3529 (Or you may be running DOS with DJGPP.)
3530 EOI
3531         echo exit 0 >os2
3532         ;;
3533 esac
3534 if test -f /xenix; then
3535         echo "Actually, this looks more like a XENIX system..."
3536         echo exit 0 >xenix
3537         d_xenix="$define"
3538 else
3539         echo " "
3540         echo "It's not Xenix..."
3541         d_xenix="$undef"
3542 fi
3543 chmod +x xenix
3544 $eunicefix xenix
3545 if test -f /venix; then
3546         echo "Actually, this looks more like a VENIX system..."
3547         echo exit 0 >venix
3548 else
3549         echo " "
3550         if ./xenix; then
3551                 : null
3552         else
3553                 echo "Nor is it Venix..."
3554         fi
3555 fi
3556 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3557 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3558 $rm -f foo
3559
3560 case "$cc" in
3561 '') dflt=cc;;
3562 *) dflt="$cc";;
3563 esac
3564 rp="Use which C compiler?"
3565 . ./myread
3566 cc="$ans"
3567
3568 : See if they have not cc but they do have gcc
3569 . ./trygcc
3570 : Look for a hint-file generated 'call-back-unit'.  Now that the
3571 : user has specified the compiler, we may need to set or change some
3572 : other defaults.
3573 if $test -f cc.cbu; then
3574     . ./cc.cbu
3575 fi
3576 . ./checkcc
3577
3578 echo " "
3579 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3580 $cat >try.c <<EOM
3581 #include <stdio.h>
3582 int main() {
3583 #ifdef __GNUC__
3584 #ifdef __VERSION__
3585         printf("%s\n", __VERSION__);
3586 #else
3587         printf("%s\n", "1");
3588 #endif
3589 #endif
3590         exit(0);
3591 }
3592 EOM
3593 if $cc -o try $ccflags $ldflags try.c; then
3594         gccversion=`$run ./try`
3595         case "$gccversion" in
3596         '') echo "You are not using GNU cc." ;;
3597         *)  echo "You are using GNU cc $gccversion."
3598             ccname=gcc  
3599             ;;
3600         esac
3601 else
3602         echo " "
3603         echo "*** WHOA THERE!!! ***" >&4
3604         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3605         case "$knowitall" in
3606         '')
3607         echo "    You'd better start hunting for one and let me know about it." >&4
3608                 exit 1
3609                 ;;
3610         esac
3611 fi
3612 $rm -f try try.*
3613 case "$gccversion" in
3614 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3615 esac
3616 case "$gccversion" in
3617 '') gccosandvers='' ;;
3618 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3619    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3620    gccshortvers=''
3621    case "$gccosandvers" in
3622    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3623    $osname$osvers) ;; # looking good
3624    $osname*) cat <<EOM >&4
3625
3626 *** WHOA THERE!!! ***
3627
3628     Your gcc has not been compiled for the exact release of
3629     your operating system ($gccosandvers versus $osname$osvers).
3630
3631     In general it is a good idea to keep gcc synchronized with
3632     the operating system because otherwise serious problems
3633     may ensue when trying to compile software, like Perl.
3634
3635     I'm trying to be optimistic here, though, and will continue.
3636     If later during the configuration and build icky compilation
3637     problems appear (headerfile conflicts being the most common
3638     manifestation), I suggest reinstalling the gcc to match
3639     your operating system release.
3640
3641 EOM
3642       ;;
3643    *) gccosandvers='' ;; # failed to parse, better be silent
3644    esac
3645    ;;
3646 esac
3647 case "$ccname" in
3648 '') ccname="$cc" ;;
3649 esac
3650
3651
3652 : decide how portable to be.  Allow command line overrides.
3653 case "$d_portable" in
3654 "$undef") ;;
3655 *)      d_portable="$define" ;;
3656 esac
3657
3658 : set up shell script to do ~ expansion
3659 cat >filexp <<EOSS
3660 $startsh
3661 : expand filename
3662 case "\$1" in
3663  ~/*|~)
3664         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3665         ;;
3666  ~*)
3667         if $test -f /bin/csh; then
3668                 /bin/csh -f -c "glob \$1"
3669                 failed=\$?
3670                 echo ""
3671                 exit \$failed
3672         else
3673                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3674                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3675                 if $test ! -d "\$dir"; then
3676                         me=\`basename \$0\`
3677                         echo "\$me: can't locate home directory for: \$name" >&2
3678                         exit 1
3679                 fi
3680                 case "\$1" in
3681                 */*)
3682                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3683                         ;;
3684                 *)
3685                         echo \$dir
3686                         ;;
3687                 esac
3688         fi
3689         ;;
3690 *)
3691         echo \$1
3692         ;;
3693 esac
3694 EOSS
3695 chmod +x filexp
3696 $eunicefix filexp
3697
3698 : now set up to get a file name
3699 cat <<EOS >getfile
3700 $startsh
3701 EOS
3702 cat <<'EOSC' >>getfile
3703 tilde=''
3704 fullpath=''
3705 already=''
3706 skip=''
3707 none_ok=''
3708 exp_file=''
3709 nopath_ok=''
3710 orig_rp="$rp"
3711 orig_dflt="$dflt"
3712 case "$gfpth" in
3713 '') gfpth='.' ;;
3714 esac
3715
3716 case "$fn" in
3717 *\(*)
3718         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3719         fn=`echo $fn | sed 's/(.*)//'`
3720         ;;
3721 esac
3722
3723 case "$fn" in
3724 *:*)
3725         loc_file=`expr $fn : '.*:\(.*\)'`
3726         fn=`expr $fn : '\(.*\):.*'`
3727         ;;
3728 esac
3729
3730 case "$fn" in
3731 *~*) tilde=true;;
3732 esac
3733 case "$fn" in
3734 */*) fullpath=true;;
3735 esac
3736 case "$fn" in
3737 *+*) skip=true;;
3738 esac
3739 case "$fn" in
3740 *n*) none_ok=true;;
3741 esac
3742 case "$fn" in
3743 *e*) exp_file=true;;
3744 esac
3745 case "$fn" in
3746 *p*) nopath_ok=true;;
3747 esac
3748
3749 case "$fn" in
3750 *f*) type='File';;
3751 *d*) type='Directory';;
3752 *l*) type='Locate';;
3753 esac
3754
3755 what="$type"
3756 case "$what" in
3757 Locate) what='File';;
3758 esac
3759
3760 case "$exp_file" in
3761 '')
3762         case "$d_portable" in
3763         "$define") ;;
3764         *) exp_file=true;;
3765         esac
3766         ;;
3767 esac
3768
3769 cd ..
3770 while test "$type"; do
3771         redo=''
3772         rp="$orig_rp"
3773         dflt="$orig_dflt"
3774         case "$tilde" in
3775         true) rp="$rp (~name ok)";;
3776         esac
3777         . UU/myread
3778         if test -f UU/getfile.ok && \
3779                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3780         then
3781                 value="$ans"
3782                 ansexp="$ans"
3783                 break
3784         fi
3785         case "$ans" in
3786         none)
3787                 value=''
3788                 ansexp=''
3789                 case "$none_ok" in
3790                 true) type='';;
3791                 esac
3792                 ;;
3793         *)
3794                 case "$tilde" in
3795                 '') value="$ans"
3796                         ansexp="$ans";;
3797                 *)
3798                         value=`UU/filexp $ans`
3799                         case $? in
3800                         0)
3801                                 if test "$ans" != "$value"; then
3802                                         echo "(That expands to $value on this system.)"
3803                                 fi
3804                                 ;;
3805                         *) value="$ans";;
3806                         esac
3807                         ansexp="$value"
3808                         case "$exp_file" in
3809                         '') value="$ans";;
3810                         esac
3811                         ;;
3812                 esac
3813                 case "$fullpath" in
3814                 true)
3815                         case "$ansexp" in
3816                         /*) value="$ansexp" ;;
3817                         [a-zA-Z]:/*) value="$ansexp" ;;
3818                         *)
3819                                 redo=true
3820                                 case "$already" in
3821                                 true)
3822                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3823                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3824                                         ;;
3825                                 *)
3826                                 echo "Please give a full path name, starting with slash." >&4
3827                                         case "$tilde" in
3828                                         true)
3829                                 echo "Note that using ~name is ok provided it expands well." >&4
3830                                                 already=true
3831                                                 ;;
3832                                         esac
3833                                 esac
3834                                 ;;
3835                         esac
3836                         ;;
3837                 esac
3838                 case "$redo" in
3839                 '')
3840                         case "$type" in
3841                         File)
3842                                 for fp in $gfpth; do
3843                                         if test "X$fp" = X.; then
3844                                             pf="$ansexp"
3845                                         else    
3846                                             pf="$fp/$ansexp"
3847                                         fi
3848                                         if test -f "$pf"; then
3849                                                 type=''
3850                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3851                                         then
3852                                                 echo "($value is not a plain file, but that's ok.)"
3853                                                 type=''
3854                                         fi
3855                                         if test X"$type" = X; then
3856                                             value="$pf"
3857                                             break
3858                                         fi
3859                                 done
3860                                 ;;
3861                         Directory)
3862                                 for fp in $gfpth; do
3863                                         if test "X$fp" = X.; then
3864                                             dir="$ans"
3865                                             direxp="$ansexp"
3866                                         else    
3867                                             dir="$fp/$ansexp"
3868                                             direxp="$fp/$ansexp"
3869                                         fi
3870                                         if test -d "$direxp"; then
3871                                                 type=''
3872                                                 value="$dir"
3873                                                 break
3874                                         fi
3875                                 done
3876                                 ;;
3877                         Locate)
3878                                 if test -d "$ansexp"; then
3879                                         echo "(Looking for $loc_file in directory $value.)"
3880                                         value="$value/$loc_file"
3881                                         ansexp="$ansexp/$loc_file"
3882                                 fi
3883                                 if test -f "$ansexp"; then
3884                                         type=''
3885                                 fi
3886                                 case "$nopath_ok" in
3887                                 true)   case "$value" in
3888                                         */*) ;;
3889                                         *)      echo "Assuming $value will be in people's path."
3890                                                 type=''
3891                                                 ;;
3892                                         esac
3893                                         ;;
3894                                 esac
3895                                 ;;
3896                         esac
3897
3898                         case "$skip" in
3899                         true) type='';
3900                         esac
3901
3902                         case "$type" in
3903                         '') ;;
3904                         *)
3905                                 if test "$fastread" = yes; then
3906                                         dflt=y
3907                                 else
3908                                         dflt=n
3909                                 fi
3910                                 rp="$what $value doesn't exist.  Use that name anyway?"
3911                                 . UU/myread
3912                                 dflt=''
3913                                 case "$ans" in
3914                                 y*) type='';;
3915                                 *) echo " ";;
3916                                 esac
3917                                 ;;
3918                         esac
3919                         ;;
3920                 esac
3921                 ;;
3922         esac
3923 done
3924 cd UU
3925 ans="$value"
3926 rp="$orig_rp"
3927 dflt="$orig_dflt"
3928 rm -f getfile.ok
3929 test "X$gfpthkeep" != Xy && gfpth=""
3930 EOSC
3931
3932 : What should the include directory be ?
3933 echo " "
3934 $echo $n "Hmm...  $c"
3935 dflt='/usr/include'
3936 incpath=''
3937 mips_type=''
3938 if $test -f /bin/mips && /bin/mips; then
3939         echo "Looks like a MIPS system..."
3940         $cat >usr.c <<'EOCP'
3941 #ifdef SYSTYPE_BSD43
3942 /bsd43
3943 #endif
3944 EOCP
3945         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3946                 dflt='/bsd43/usr/include'
3947                 incpath='/bsd43'
3948                 mips_type='BSD 4.3'
3949         else
3950                 mips_type='System V'
3951         fi
3952         $rm -f usr.c usr.out
3953         echo "and you're compiling with the $mips_type compiler and libraries."
3954         xxx_prompt=y
3955         echo "exit 0" >mips
3956 else
3957         echo "Doesn't look like a MIPS system."
3958         xxx_prompt=n
3959         echo "exit 1" >mips
3960 fi
3961 chmod +x mips
3962 $eunicefix mips
3963 case "$usrinc" in
3964 '') ;;
3965 *) dflt="$usrinc";;
3966 esac
3967 case "$xxx_prompt" in
3968 y)      fn=d/
3969         echo " "
3970         rp='Where are the include files you want to use?'
3971         . ./getfile
3972         usrinc="$ans"
3973         ;;
3974 *)      usrinc="$dflt"
3975         ;;
3976 esac
3977
3978 : see how we invoke the C preprocessor
3979 echo " "
3980 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3981 cat <<'EOT' >testcpp.c
3982 #define ABC abc
3983 #define XYZ xyz
3984 ABC.XYZ
3985 EOT
3986 cd ..
3987 if test ! -f cppstdin; then
3988         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3989                 # AIX cc -E doesn't show the absolute headerfile
3990                 # locations but we'll cheat by using the -M flag.
3991                 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
3992         else
3993                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3994         fi
3995 else
3996         echo "Keeping your $hint cppstdin wrapper."
3997 fi
3998 chmod 755 cppstdin
3999 wrapper=`pwd`/cppstdin
4000 ok='false'
4001 cd UU
4002
4003 if $test "X$cppstdin" != "X" && \
4004         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4005         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4006 then
4007         echo "You used to use $cppstdin $cppminus so we'll use that again."
4008         case "$cpprun" in
4009         '') echo "But let's see if we can live without a wrapper..." ;;
4010         *)
4011                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4012                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4013                 then
4014                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4015                         ok='true'
4016                 else
4017                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4018                 fi
4019                 ;;
4020         esac
4021 else
4022         case "$cppstdin" in
4023         '') ;;
4024         *)
4025                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4026                 ;;
4027         esac
4028 fi
4029
4030 if $ok; then
4031         : nothing
4032 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4033         $cc -E <testcpp.c >testcpp.out 2>&1; \
4034         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4035         echo "Yup, it does."
4036         x_cpp="$cc -E"
4037         x_minus='';
4038 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4039         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4040         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4041         echo "Yup, it does."
4042         x_cpp="$cc -E"
4043         x_minus='-';
4044 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4045         $cc -P <testcpp.c >testcpp.out 2>&1; \
4046         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4047         echo "Yipee, that works!"
4048         x_cpp="$cc -P"
4049         x_minus='';
4050 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4051         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4052         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4053         echo "At long last!"
4054         x_cpp="$cc -P"
4055         x_minus='-';
4056 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4057         $cpp <testcpp.c >testcpp.out 2>&1; \
4058         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4059         echo "It works!"
4060         x_cpp="$cpp"
4061         x_minus='';
4062 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4063         $cpp - <testcpp.c >testcpp.out 2>&1; \
4064         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4065         echo "Hooray, it works!  I was beginning to wonder."
4066         x_cpp="$cpp"
4067         x_minus='-';
4068 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4069         $wrapper <testcpp.c >testcpp.out 2>&1; \
4070         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4071         x_cpp="$wrapper"
4072         x_minus=''
4073         echo "Eureka!"
4074 else
4075         dflt=''
4076         rp="No dice.  I can't find a C preprocessor.  Name one:"
4077         . ./myread
4078         x_cpp="$ans"
4079         x_minus=''
4080         $x_cpp <testcpp.c >testcpp.out 2>&1
4081         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4082                 echo "OK, that will do." >&4
4083         else
4084 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4085                 exit 1
4086         fi
4087 fi
4088
4089 case "$ok" in
4090 false)
4091         cppstdin="$x_cpp"
4092         cppminus="$x_minus"
4093         cpprun="$x_cpp"
4094         cpplast="$x_minus"
4095         set X $x_cpp
4096         shift
4097         case "$1" in
4098         "$cpp")
4099                 echo "Perhaps can we force $cc -E using a wrapper..."
4100                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4101                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4102                 then
4103                         echo "Yup, we can."
4104                         cppstdin="$wrapper"
4105                         cppminus='';
4106                 else
4107                         echo "Nope, we'll have to live without it..."
4108                 fi
4109                 ;;
4110         esac
4111         case "$cpprun" in
4112         "$wrapper")
4113                 cpprun=''
4114                 cpplast=''
4115                 ;;
4116         esac
4117         ;;
4118 esac
4119
4120 case "$cppstdin" in
4121 "$wrapper"|'cppstdin') ;;
4122 *) $rm -f $wrapper;;
4123 esac
4124 $rm -f testcpp.c testcpp.out
4125
4126 : Set private lib path
4127 case "$plibpth" in
4128 '') if ./mips; then
4129                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4130         fi;;
4131 esac
4132 case "$libpth" in
4133 ' ') dlist='';;
4134 '') dlist="$loclibpth $plibpth $glibpth";;
4135 *) dlist="$libpth";;
4136 esac
4137
4138 : Now check and see which directories actually exist, avoiding duplicates
4139 libpth=''
4140 for xxx in $dlist
4141 do
4142     if $test -d $xxx; then
4143                 case " $libpth " in
4144                 *" $xxx "*) ;;
4145                 *) libpth="$libpth $xxx";;
4146                 esac
4147     fi
4148 done
4149 $cat <<'EOM'
4150
4151 Some systems have incompatible or broken versions of libraries.  Among
4152 the directories listed in the question below, please remove any you
4153 know not to be holding relevant libraries, and add any that are needed.
4154 Say "none" for none.
4155
4156 EOM
4157 case "$libpth" in
4158 '') dflt='none';;
4159 *)
4160         set X $libpth
4161         shift
4162         dflt=${1+"$@"}
4163         ;;
4164 esac
4165 rp="Directories to use for library searches?"
4166 . ./myread
4167 case "$ans" in
4168 none) libpth=' ';;
4169 *) libpth="$ans";;
4170 esac
4171
4172 : compute shared library extension
4173 case "$so" in
4174 '')
4175         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4176                 dflt='sl'
4177         else
4178                 dflt='so'
4179         fi
4180         ;;
4181 *) dflt="$so";;
4182 esac
4183 $cat <<EOM
4184
4185 On some systems, shared libraries may be available.  Answer 'none' if
4186 you want to suppress searching of shared libraries for the remainder
4187 of this configuration.
4188
4189 EOM
4190 rp='What is the file extension used for shared libraries?'
4191 . ./myread
4192 so="$ans"
4193
4194 : Define several unixisms.
4195 : Hints files or command line option can be used to override them.
4196 : The convoluted testing is in case hints files set either the old
4197 : or the new name.
4198 case "$_exe" in
4199 '')     case "$exe_ext" in
4200         '')     ;;
4201         *)      _exe="$exe_ext" ;;
4202         esac
4203         ;;
4204 esac
4205 case "$_a" in
4206 '')     case "$lib_ext" in
4207     '') _a='.a';;
4208         *)      _a="$lib_ext" ;;
4209         esac
4210         ;;
4211 esac
4212 case "$_o" in
4213 '') case "$obj_ext" in
4214         '')     _o='.o';;
4215         *)      _o="$obj_ext";;
4216         esac
4217         ;;
4218 esac
4219 case "$p_" in
4220 '') case "$path_sep" in
4221         '')     p_=':';;
4222         *)      p_="$path_sep";;
4223         esac
4224         ;;
4225 esac
4226 exe_ext=$_exe
4227 lib_ext=$_a
4228 obj_ext=$_o
4229 path_sep=$p_
4230
4231 : Which makefile gets called first.  This is used by make depend.
4232 case "$firstmakefile" in
4233 '') firstmakefile='makefile';;
4234 esac
4235
4236 case "$usesocks" in
4237 $define|true|[yY]*)     dflt='y';;
4238 *) dflt='n';;
4239 esac
4240 cat <<EOM
4241
4242 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4243 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4244 to use the PerlIO abstraction layer, this will be implicitly selected.
4245
4246 If this doesn't make any sense to you, just accept the default '$dflt'.
4247 EOM
4248 rp='Build Perl for SOCKS?'
4249 . ./myread
4250 case "$ans" in
4251 y|Y)    val="$define" ;;     
4252 *)      val="$undef" ;;
4253 esac
4254 set usesocks
4255 eval $setvar
4256
4257 case "$usesocks" in
4258 $define|true|[yY]*) useperlio="$define";;
4259 esac
4260
4261 : Looking for optional libraries
4262 echo " "
4263 echo "Checking for optional libraries..." >&4
4264 case "$libs" in
4265 ' '|'') dflt='';;
4266 *) dflt="$libs";;
4267 esac
4268 case "$libswanted" in
4269 '') libswanted='c_s';;
4270 esac
4271 case "$usesocks" in
4272 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4273 esac
4274 libsfound=''
4275 libsfiles=''
4276 libsdirs=''
4277 libspath=''
4278 for thisdir in $libpth $xlibpth; do
4279   test -d $thisdir && libspath="$libspath $thisdir"
4280 done
4281 for thislib in $libswanted; do
4282         for thisdir in $libspath; do
4283             xxx=''
4284             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4285                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4286                 $test -f "$xxx" && eval $libscheck
4287                 $test -f "$xxx" && libstyle=shared
4288             fi
4289             if test ! -f "$xxx"; then
4290                 xxx=$thisdir/lib$thislib.$so
4291                 $test -f "$xxx" && eval $libscheck
4292                 $test -f "$xxx" && libstyle=shared
4293             fi  
4294             if test ! -f "$xxx"; then
4295                 xxx=$thisdir/lib$thislib$_a
4296                 $test -f "$xxx" && eval $libscheck
4297                 $test -f "$xxx" && libstyle=static
4298             fi
4299             if test ! -f "$xxx"; then
4300                 xxx=$thisdir/$thislib$_a
4301                 $test -f "$xxx" && eval $libscheck
4302                 $test -f "$xxx" && libstyle=static
4303             fi
4304             if test ! -f "$xxx"; then
4305                 xxx=$thisdir/lib${thislib}_s$_a
4306                 $test -f "$xxx" && eval $libscheck
4307                 $test -f "$xxx" && libstyle=static
4308                 $test -f "$xxx" && thislib=${thislib}_s
4309             fi
4310             if test ! -f "$xxx"; then
4311                 xxx=$thisdir/Slib$thislib$_a
4312                 $test -f "$xxx" && eval $libscheck
4313                 $test -f "$xxx" && libstyle=static
4314             fi
4315             if $test -f "$xxx"; then
4316                 case "$libstyle" in
4317                 shared) echo "Found -l$thislib (shared)." ;;
4318                 static) echo "Found -l$thislib." ;;
4319                 *)      echo "Found -l$thislib ($libstyle)." ;;
4320                 esac
4321                 case " $dflt " in
4322                 *"-l$thislib "*);;
4323                 *) dflt="$dflt -l$thislib"
4324                    libsfound="$libsfound $xxx"
4325                    yyy=`basename $xxx`
4326                    libsfiles="$libsfiles $yyy"
4327                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4328                    case " $libsdirs " in
4329                    *" $yyy "*) ;;
4330                    *) libsdirs="$libsdirs $yyy" ;;
4331                    esac
4332                    ;;
4333                 esac
4334                 break
4335             fi  
4336         done
4337         if $test ! -f "$xxx"; then
4338             echo "No -l$thislib."
4339         fi
4340 done
4341 set X $dflt
4342 shift
4343 dflt="$*"
4344 case "$libs" in
4345 '') dflt="$dflt";;
4346 *) dflt="$libs";;
4347 esac
4348 case "$dflt" in
4349 ' '|'') dflt='none';;
4350 esac
4351
4352 $cat <<EOM
4353
4354 In order to compile $package on your machine, a number of libraries
4355 are usually needed.  Include any other special libraries here as well.
4356 Say "none" for none.  The default list is almost always right.
4357 EOM
4358
4359 echo " "
4360 rp="What libraries to use?"
4361 . ./myread
4362 case "$ans" in
4363 none) libs=' ';;
4364 *) libs="$ans";;
4365 esac
4366
4367 : determine optimization, if desired, or use for debug flag also
4368 case "$optimize" in
4369 ' '|$undef) dflt='none';;
4370 '') dflt='-O';;
4371 *) dflt="$optimize";;
4372 esac
4373 $cat <<EOH
4374
4375 By default, $package compiles with the -O flag to use the optimizer.
4376 Alternately, you might want to use the symbolic debugger, which uses
4377 the -g flag (on traditional Unix systems).  Either flag can be
4378 specified here.  To use neither flag, specify the word "none".
4379
4380 EOH
4381 rp="What optimizer/debugger flag should be used?"
4382 . ./myread
4383 optimize="$ans"
4384 case "$optimize" in
4385 'none') optimize=" ";;
4386 esac
4387
4388 dflt=''
4389 : We will not override a previous value, but we might want to
4390 : augment a hint file
4391 case "$hint" in
4392 default|recommended)
4393         case "$gccversion" in
4394         1*) dflt='-fpcc-struct-return' ;;
4395         esac
4396         case "$optimize" in
4397         *-g*) dflt="$dflt -DDEBUGGING";;
4398         esac
4399         case "$gccversion" in
4400         2*) if test -d /etc/conf/kconfig.d &&
4401                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4402                 then
4403                         dflt="$dflt -posix"
4404                 fi
4405                 ;;
4406         esac
4407         case "$gccversion" in
4408         1*) ;;
4409         2.[0-8]*) ;;
4410         ?*)     echo " "
4411                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4412                 echo 'int main(void) { return 0; }' > gcctest.c
4413                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4414                         echo "Yes, it does." 2>&1
4415                         case "$ccflags" in
4416                         *strict-aliasing*) 
4417                                 echo "Leaving current flags $ccflags alone." 2>&1
4418                                 ;;
4419                         *) dflt="$dflt -fno-strict-aliasing" ;;
4420                         esac
4421                 else
4422                         echo "Nope, it doesn't, but that's ok." 2>&1
4423                 fi
4424                 ;;
4425         esac
4426         ;;
4427 esac
4428
4429 case "$mips_type" in
4430 *BSD*|'') inclwanted="$locincpth $usrinc";;
4431 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4432 esac
4433 for thisincl in $inclwanted; do
4434         if $test -d $thisincl; then
4435                 if $test x$thisincl != x$usrinc; then
4436                         case "$dflt" in
4437                         *" -I$thisincl "*);;
4438                         *) dflt="$dflt -I$thisincl ";;
4439                         esac
4440                 fi
4441         fi
4442 done
4443
4444 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4445         xxx=true;
4446 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4447         xxx=true;
4448 else
4449         xxx=false;
4450 fi;
4451 if $xxx; then
4452         case "$dflt" in
4453         *$2*);;
4454         *) dflt="$dflt -D$2";;
4455         esac;
4456 fi'
4457
4458 set signal.h LANGUAGE_C; eval $inctest
4459
4460 case "$usesocks" in
4461 $define)
4462         ccflags="$ccflags -DSOCKS"
4463         ;;
4464 esac
4465
4466 case "$hint" in
4467 default|recommended) dflt="$ccflags $dflt" ;;
4468 *) dflt="$ccflags";;
4469 esac
4470
4471 case "$dflt" in
4472 ''|' ') dflt=none;;
4473 esac
4474
4475 $cat <<EOH
4476
4477 Your C compiler may want other flags.  For this question you should include
4478 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4479 but you should NOT include libraries or ld flags like -lwhatever.  If you
4480 want $package to honor its debug switch, you should include -DDEBUGGING here.
4481 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4482
4483 To use no flags, specify the word "none".
4484
4485 EOH
4486 set X $dflt
4487 shift
4488 dflt=${1+"$@"}
4489 rp="Any additional cc flags?"
4490 . ./myread
4491 case "$ans" in
4492 none) ccflags='';;
4493 *) ccflags="$ans";;
4494 esac
4495
4496 : the following weeds options from ccflags that are of no interest to cpp
4497 case "$cppflags" in
4498 '') cppflags="$ccflags" ;;
4499 *)  cppflags="$cppflags $ccflags" ;;
4500 esac
4501 case "$gccversion" in
4502 1*) cppflags="$cppflags -D__GNUC__"
4503 esac
4504 case "$mips_type" in
4505 '');;
4506 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4507 esac
4508 case "$cppflags" in
4509 '');;
4510 *)
4511         echo " "
4512         echo "Let me guess what the preprocessor flags are..." >&4
4513         set X $cppflags
4514         shift
4515         cppflags=''
4516         $cat >cpp.c <<'EOM'
4517 #define BLURFL foo
4518
4519 BLURFL xx LFRULB
4520 EOM
4521         previous=''
4522         for flag in $*
4523         do
4524                 case "$flag" in
4525                 -*) ftry="$flag";;
4526                 *) ftry="$previous $flag";;
4527                 esac
4528                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4529                         >cpp1.out 2>/dev/null && \
4530                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4531                         >cpp2.out 2>/dev/null && \
4532                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4533                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4534                 then
4535                         cppflags="$cppflags $ftry"
4536                         previous=''
4537                 else
4538                         previous="$flag"
4539                 fi
4540         done
4541         set X $cppflags
4542         shift
4543         cppflags=${1+"$@"}
4544         case "$cppflags" in
4545         *-*)  echo "They appear to be: $cppflags";;
4546         esac
4547         $rm -f cpp.c cpp?.out
4548         ;;
4549 esac
4550
4551 : flags used in final linking phase
4552 case "$ldflags" in
4553 '') if ./venix; then
4554                 dflt='-i -z'
4555         else
4556                 dflt=''
4557         fi
4558         case "$ccflags" in
4559         *-posix*) dflt="$dflt -posix" ;;
4560         esac
4561         ;;
4562 *) dflt="$ldflags";;
4563 esac
4564
4565 : Try to guess additional flags to pick up local libraries.
4566 for thislibdir in $libpth; do
4567         case " $loclibpth " in
4568         *" $thislibdir "*)
4569                 case "$dflt " in 
4570                 *"-L$thislibdir "*) ;;
4571                 *)  dflt="$dflt -L$thislibdir" ;;
4572                 esac
4573                 ;;
4574         esac
4575 done
4576
4577 case "$dflt" in
4578 '') dflt='none' ;;
4579 esac
4580
4581 $cat <<EOH
4582
4583 Your C linker may need flags.  For this question you should
4584 include -L/whatever and any other flags used by the C linker, but you
4585 should NOT include libraries like -lwhatever.
4586
4587 Make sure you include the appropriate -L/path flags if your C linker
4588 does not normally search all of the directories you specified above,
4589 namely
4590         $libpth
4591 To use no flags, specify the word "none".
4592
4593 EOH
4594
4595 rp="Any additional ld flags (NOT including libraries)?"
4596 . ./myread
4597 case "$ans" in
4598 none) ldflags='';;
4599 *) ldflags="$ans";;
4600 esac
4601 rmlist="$rmlist pdp11"
4602
4603 : coherency check
4604 echo " "
4605 echo "Checking your choice of C compiler and flags for coherency..." >&4
4606 $cat > try.c <<'EOF'
4607 #include <stdio.h>
4608 int main() { printf("Ok\n"); exit(0); }
4609 EOF
4610 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4611 shift
4612 $cat >try.msg <<'EOM'
4613 I've tried to compile and run the following simple program:
4614
4615 EOM
4616 $cat try.c >> try.msg
4617
4618 $cat >> try.msg <<EOM
4619
4620 I used the command:
4621
4622         $*
4623         $run ./try
4624
4625 and I got the following output:
4626
4627 EOM
4628 dflt=y
4629 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4630         if $sh -c "$run ./try" >>try.msg 2>&1; then
4631                 xxx=`$run ./try`
4632                 case "$xxx" in
4633                 "Ok") dflt=n ;;
4634                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4635                         case " $libs " in
4636                         *" -lsfio "*)
4637                                 cat >> try.msg <<'EOQS'
4638 If $libs contains -lsfio, and sfio is mis-configured, then it
4639 sometimes (apparently) runs and exits with a 0 status, but with no
4640 output!  It may have to do with sfio's use of _exit vs. exit.
4641
4642 EOQS
4643                                 rp="You have a big problem.  Shall I abort Configure"
4644                                 dflt=y
4645                                 ;;
4646                         esac
4647                         ;;
4648                 esac
4649         else
4650                 echo "The program compiled OK, but exited with status $?." >>try.msg
4651                 rp="You have a problem.  Shall I abort Configure"
4652                 dflt=y
4653         fi
4654 else
4655         echo "I can't compile the test program." >>try.msg
4656         rp="You have a BIG problem.  Shall I abort Configure"
4657         dflt=y
4658 fi
4659 case "$dflt" in
4660 y)
4661         $cat try.msg >&4
4662         case "$knowitall" in
4663         '')
4664                 echo "(The supplied flags or libraries might be incorrect.)"
4665                 ;;
4666         *) dflt=n;;
4667         esac
4668         echo " "
4669         . ./myread
4670         case "$ans" in
4671         n*|N*) ;;
4672         *)      echo "Ok.  Stopping Configure." >&4
4673                 exit 1
4674                 ;;
4675         esac
4676         ;;
4677 n) echo "OK, that should do.";;
4678 esac
4679 $rm -f try try.* core
4680
4681 : define a shorthand compile call
4682 compile='
4683 mc_file=$1;
4684 shift;
4685 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4686 : define a shorthand compile call for compilations that should be ok.
4687 compile_ok='
4688 mc_file=$1;
4689 shift;
4690 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4691
4692 : check for lengths of integral types
4693 echo " "
4694 case "$intsize" in
4695 '')
4696         echo "Checking to see how big your integers are..." >&4
4697         $cat >try.c <<'EOCP'
4698 #include <stdio.h>
4699 int main()
4700 {
4701         printf("intsize=%d;\n", (int)sizeof(int));
4702         printf("longsize=%d;\n", (int)sizeof(long));
4703         printf("shortsize=%d;\n", (int)sizeof(short));
4704         exit(0);
4705 }
4706 EOCP
4707         set try
4708         if eval $compile_ok && $run ./try > /dev/null; then
4709                 eval `$run ./try`
4710                 echo "Your integers are $intsize bytes long."
4711                 echo "Your long integers are $longsize bytes long."
4712                 echo "Your short integers are $shortsize bytes long."
4713         else
4714                 $cat >&4 <<EOM
4715 !
4716 Help! I can't compile and run the intsize test program: please enlighten me!
4717 (This is probably a misconfiguration in your system or libraries, and
4718 you really ought to fix it.  Still, I'll try anyway.)
4719 !
4720 EOM
4721                 dflt=4
4722                 rp="What is the size of an integer (in bytes)?"
4723                 . ./myread
4724                 intsize="$ans"
4725                 dflt=$intsize
4726                 rp="What is the size of a long integer (in bytes)?"
4727                 . ./myread
4728                 longsize="$ans"
4729                 dflt=2
4730                 rp="What is the size of a short integer (in bytes)?"
4731                 . ./myread
4732                 shortsize="$ans"
4733         fi
4734         ;;
4735 esac
4736 $rm -f try try.*
4737
4738 : check for void type
4739 echo " "
4740 echo "Checking to see how well your C compiler groks the void type..." >&4
4741 case "$voidflags" in
4742 '')
4743         $cat >try.c <<'EOCP'
4744 #if TRY & 1
4745 void sub() {
4746 #else
4747 sub() {
4748 #endif
4749         extern void moo();      /* function returning void */
4750         void (*goo)();          /* ptr to func returning void */
4751 #if TRY & 8
4752         void *hue;              /* generic ptr */
4753 #endif
4754 #if TRY & 2
4755         void (*foo[10])();
4756 #endif
4757
4758 #if TRY & 4
4759         if(goo == moo) {
4760                 exit(0);
4761         }
4762 #endif
4763         exit(0);
4764 }
4765 int main() { sub(); }
4766 EOCP
4767         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4768                 voidflags=$defvoidused
4769         echo "Good.  It appears to support void to the level $package wants.">&4
4770                 if $contains warning .out >/dev/null 2>&1; then
4771                         echo "However, you might get some warnings that look like this:"
4772                         $cat .out
4773                 fi
4774         else
4775 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4776                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4777                         echo "It supports 1..."
4778                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4779                                 echo "It also supports 2..."
4780                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4781                                         voidflags=7
4782                                         echo "And it supports 4 but not 8 definitely."
4783                                 else
4784                                         echo "It doesn't support 4..."
4785                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4786                                                 voidflags=11
4787                                                 echo "But it supports 8."
4788                                         else
4789                                                 voidflags=3
4790                                                 echo "Neither does it support 8."
4791                                         fi
4792                                 fi
4793                         else
4794                                 echo "It does not support 2..."
4795                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4796                                         voidflags=13
4797                                         echo "But it supports 4 and 8."
4798                                 else
4799                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4800                                                 voidflags=5
4801                                                 echo "And it supports 4 but has not heard about 8."
4802                                         else
4803                                                 echo "However it supports 8 but not 4."
4804                                         fi
4805                                 fi
4806                         fi
4807                 else
4808                         echo "There is no support at all for void."
4809                         voidflags=0
4810                 fi
4811         fi
4812 esac
4813 case "$voidflags" in
4814 "$defvoidused") ;;
4815 *)      $cat >&4 <<'EOM'
4816   Support flag bits are:
4817     1: basic void declarations.
4818     2: arrays of pointers to functions returning void.
4819     4: operations between pointers to and addresses of void functions.
4820     8: generic void pointers.
4821 EOM
4822         dflt="$voidflags";
4823         rp="Your void support flags add up to what?"
4824         . ./myread
4825         voidflags="$ans"
4826         ;;
4827 esac
4828 $rm -f try.* .out
4829
4830 : check for length of pointer
4831 echo " "
4832 case "$ptrsize" in
4833 '')
4834         echo "Checking to see how big your pointers are..." >&4
4835         if test "$voidflags" -gt 7; then
4836                 echo '#define VOID_PTR char *' > try.c
4837         else
4838                 echo '#define VOID_PTR void *' > try.c
4839         fi
4840         $cat >>try.c <<'EOCP'
4841 #include <stdio.h>
4842 int main()
4843 {
4844     printf("%d\n", (int)sizeof(VOID_PTR));
4845     exit(0);
4846 }
4847 EOCP
4848         set try
4849         if eval $compile_ok; then
4850                 ptrsize=`$run ./try`
4851                 echo "Your pointers are $ptrsize bytes long."
4852         else
4853                 dflt='4'
4854                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4855                 rp="What is the size of a pointer (in bytes)?"
4856                 . ./myread
4857                 ptrsize="$ans"
4858         fi
4859         ;;
4860 esac
4861 $rm -f try.c try
4862
4863 : check for long long
4864 echo " "
4865 echo "Checking to see if you have long long..." >&4
4866 echo 'int main() { long long x = 7; return 0; }' > try.c
4867 set try
4868 if eval $compile; then
4869         val="$define"
4870         echo "You have long long."
4871 else
4872         val="$undef"
4873         echo "You do not have long long."
4874 fi
4875 $rm try.*
4876 set d_longlong
4877 eval $setvar
4878
4879 : check for length of long long
4880 case "${d_longlong}${longlongsize}" in
4881 $define)
4882         echo " "
4883         echo "Checking to see how big your long longs are..." >&4
4884         $cat >try.c <<'EOCP'
4885 #include <stdio.h>
4886 int main()
4887 {
4888     printf("%d\n", (int)sizeof(long long));
4889     return(0);
4890 }
4891 EOCP
4892         set try
4893         if eval $compile_ok; then
4894                 longlongsize=`$run ./try`
4895                 echo "Your long longs are $longlongsize bytes long."
4896         else
4897                 dflt='8'
4898                 echo " "
4899                 echo "(I can't seem to compile the test program.  Guessing...)"
4900                 rp="What is the size of a long long (in bytes)?"
4901                 . ./myread
4902                 longlongsize="$ans"
4903         fi
4904         if $test "X$longsize" = "X$longlongsize"; then
4905                 echo "(That isn't any different from an ordinary long.)"
4906         fi      
4907         ;;
4908 esac
4909 $rm -f try.* try
4910
4911 : determine filename position in cpp output
4912 echo " "
4913 echo "Computing filename position in cpp output for #include directives..." >&4
4914 case "$osname" in
4915 vos) testaccess=-e ;;
4916 *)   testaccess=-r ;;
4917 esac
4918 echo '#include <stdio.h>' > foo.c
4919 $cat >fieldn <<EOF
4920 $startsh
4921 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4922 $grep '^[       ]*#.*stdio\.h' | \
4923 while read cline; do
4924         pos=1
4925         set \$cline
4926         while $test \$# -gt 0; do
4927                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
4928                         echo "\$pos"
4929                         exit 0
4930                 fi
4931                 shift
4932                 pos=\`expr \$pos + 1\`
4933         done
4934 done
4935 EOF
4936 chmod +x fieldn
4937 fieldn=`./fieldn`
4938 $rm -f foo.c fieldn
4939 case $fieldn in
4940 '') pos='???';;
4941 1) pos=first;;
4942 2) pos=second;;
4943 3) pos=third;;
4944 *) pos="${fieldn}th";;
4945 esac
4946 echo "Your cpp writes the filename in the $pos field of the line."
4947
4948 case "$osname" in
4949 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
4950 *)   cppfilter='' ;;
4951 esac
4952 : locate header file
4953 $cat >findhdr <<EOF
4954 $startsh
4955 wanted=\$1
4956 name=''
4957 for usrincdir in $usrinc
4958 do
4959         if test -f \$usrincdir/\$wanted; then
4960                 echo "\$usrincdir/\$wanted"
4961                 exit 0
4962         fi
4963 done
4964 awkprg='{ print \$$fieldn }'
4965 echo "#include <\$wanted>" > foo\$\$.c
4966 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4967 $cppfilter $grep "^[    ]*#.*\$wanted" | \
4968 while read cline; do
4969         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4970         case "\$name" in
4971         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4972         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4973         *) exit 2;;
4974         esac;
4975 done;
4976 #
4977 # status = 0: grep returned 0 lines, case statement not executed
4978 # status = 1: headerfile found
4979 # status = 2: while loop executed, no headerfile found
4980 #
4981 status=\$?
4982 $rm -f foo\$\$.c;
4983 if test \$status -eq 1; then
4984         exit 0;
4985 fi
4986 exit 1
4987 EOF
4988 chmod +x findhdr
4989
4990 : define an alternate in-header-list? function
4991 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4992 cont=true; xxf="echo \"<\$1> found.\" >&4";
4993 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4994 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4995 esac;
4996 case $# in 4) instead=instead;; *) instead="at last";; esac;
4997 while $test "$cont"; do
4998         xxx=`./findhdr $1`
4999         var=$2; eval "was=\$$2";
5000         if $test "$xxx" && $test -r "$xxx";
5001         then eval $xxf;
5002         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5003                 cont="";
5004         else eval $xxnf;
5005         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5006         set $yyy; shift; shift; yyy=$@;
5007         case $# in 0) cont="";;
5008         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5009                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5010         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5011                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5012         esac;
5013 done;
5014 while $test "$yyy";
5015 do set $yyy; var=$2; eval "was=\$$2";
5016         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5017         set $yyy; shift; shift; yyy=$@;
5018 done'
5019
5020 : see if inttypes.h is available
5021 : we want a real compile instead of Inhdr because some systems
5022 : have an inttypes.h which includes non-existent headers
5023 echo " "
5024 $cat >try.c <<EOCP
5025 #include <inttypes.h>
5026 int main() {
5027         static int32_t foo32 = 0x12345678;
5028 }
5029 EOCP
5030 set try
5031 if eval $compile; then
5032         echo "<inttypes.h> found." >&4
5033         val="$define"
5034 else
5035         echo "<inttypes.h> NOT found." >&4
5036         val="$undef"
5037 fi
5038 $rm -f try.c try
5039 set i_inttypes
5040 eval $setvar
5041
5042 : check for int64_t
5043 echo " "
5044 echo "Checking to see if you have int64_t..." >&4
5045 $cat >try.c <<EOCP
5046 #include <sys/types.h>
5047 #$i_inttypes I_INTTYPES
5048 #ifdef I_INTTYPES
5049 #include <inttypes.h>
5050 #endif
5051 int main() { int64_t x = 7; }
5052 EOCP
5053 set try
5054 if eval $compile; then
5055         val="$define"
5056         echo "You have int64_t."
5057 else
5058         val="$undef"
5059         echo "You do not have int64_t."
5060 fi
5061 $rm -f try try.*
5062 set d_int64_t
5063 eval $setvar
5064
5065
5066 echo " "
5067 echo "Checking which 64-bit integer type we could use..." >&4
5068
5069 case "$intsize" in
5070 8) val=int
5071    set quadtype
5072    eval $setvar
5073    val='"unsigned int"'
5074    set uquadtype
5075    eval $setvar
5076    quadkind=1
5077    ;;
5078 *) case "$longsize" in
5079    8) val=long
5080       set quadtype
5081       eval $setvar
5082       val='"unsigned long"'
5083       set uquadtype
5084       eval $setvar
5085       quadkind=2
5086       ;;
5087    *) case "$d_longlong:$longlongsize" in
5088       define:8)
5089         val='"long long"'
5090         set quadtype
5091         eval $setvar
5092         val='"unsigned long long"'
5093         set uquadtype
5094         eval $setvar
5095         quadkind=3
5096         ;;
5097       *) case "$d_int64_t" in
5098          define)
5099            val=int64_t
5100            set quadtype
5101            eval $setvar
5102            val=uint64_t
5103            set uquadtype
5104            eval $setvar
5105            quadkind=4
5106            ;;
5107          esac
5108          ;;
5109       esac
5110       ;;
5111    esac
5112    ;;
5113 esac
5114
5115 case "$quadtype" in
5116 '')     echo "Alas, no 64-bit integer types in sight." >&4
5117         d_quad="$undef"
5118         ;;
5119 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5120         d_quad="$define"
5121         ;;
5122 esac
5123
5124
5125 case "$uselonglong" in
5126 "$define"|true|[yY]*)
5127         cat <<EOM >&4
5128
5129 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5130 EOM
5131         use64bitint="$define"
5132         ;;
5133 esac                          
5134 case "$use64bits" in
5135 "$define"|true|[yY]*)
5136         cat <<EOM >&4
5137
5138 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5139 EOM
5140         use64bitint="$define"
5141         ;;
5142 esac                          
5143 case "$use64bitints" in
5144 "$define"|true|[yY]*)
5145         cat <<EOM >&4
5146
5147 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5148 EOM
5149         use64bitint="$define"
5150         ;;
5151 esac                          
5152 case "$use64bitsint" in
5153 "$define"|true|[yY]*)
5154         cat <<EOM >&4
5155
5156 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5157 EOM
5158         use64bitint="$define"
5159         ;;
5160 esac                          
5161 case "$uselonglongs" in
5162 "$define"|true|[yY]*)
5163         cat <<EOM >&4
5164
5165 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5166 EOM
5167         use64bitint="$define"
5168         ;;
5169 esac                          
5170 case "$use64bitsall" in
5171 "$define"|true|[yY]*)
5172         cat <<EOM >&4
5173
5174 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5175 EOM
5176         use64bitall="$define"
5177         ;;
5178 esac                          
5179
5180 case "$ccflags" in
5181 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5182 esac
5183 case "$use64bitall" in
5184 "$define"|true|[yY]*) use64bitint="$define" ;;
5185 esac
5186
5187 case "$longsize" in
5188 8) cat <<EOM
5189
5190 You have natively 64-bit long integers.
5191 EOM
5192    val="$define"
5193    ;;
5194 *) case "$use64bitint" in
5195    "$define"|true|[yY]*) dflt='y';;
5196    *) dflt='n';;
5197    esac
5198    case "$d_quad" in
5199    "$define") ;;
5200    *) dflt='n' ;;
5201    esac
5202    cat <<EOM
5203
5204 Perl can be built to take advantage of 64-bit integer types
5205 on some systems.  To do so, Configure can be run with -Duse64bitint.
5206 Choosing this option will most probably introduce binary incompatibilities.
5207
5208 If this doesn't make any sense to you, just accept the default '$dflt'.
5209 (The default has been chosen based on your configuration.)
5210 EOM
5211    rp='Try to use 64-bit integers, if available?'
5212    . ./myread
5213    case "$ans" in
5214    [yY]*) val="$define" ;;
5215    *)     val="$undef"  ;;
5216    esac
5217    ;;
5218 esac
5219 set use64bitint
5220 eval $setvar
5221
5222 case "$use64bitall" in
5223 "$define"|true|[yY]*) dflt='y' ;;
5224 *) case "$longsize" in
5225    8) dflt='y' ;;
5226    *) dflt='n' ;;
5227    esac
5228    ;;
5229 esac    
5230 cat <<EOM
5231
5232 You may also choose to try maximal 64-bitness.  It means using as much
5233 64-bitness as possible on the platform.  This in turn means even more
5234 binary incompatibilities.  On the other hand, your platform may not
5235 have any more 64-bitness available than what you already have chosen.
5236
5237 If this doesn't make any sense to you, just accept the default '$dflt'.
5238 (The default has been chosen based on your configuration.)
5239 EOM
5240 rp='Try to use maximal 64-bit support, if available?'
5241 . ./myread
5242 case "$ans" in
5243 [yY]*) val="$define" ;;
5244 *)     val="$undef"  ;;
5245 esac
5246 set use64bitall
5247 eval $setvar
5248 case "$use64bitall" in
5249 "$define")
5250         case "$use64bitint" in
5251         "$undef")
5252                 cat <<EOM
5253
5254 Since you have chosen a maximally 64-bit build, I'm also turning on
5255 the use of 64-bit integers.
5256 EOM
5257                 use64bitint="$define" ;;
5258         esac
5259         ;;
5260 esac
5261
5262 case "$use64bitall" in
5263 "$define"|true|[yY]*)
5264         case "$ptrsize" in
5265         4)      cat <<EOM >&4
5266
5267 *** You have chosen a maximally 64-bit build, but your pointers
5268 *** are only 4 bytes wide, disabling maximal 64-bitness.
5269
5270 EOM
5271                 use64bitall="$undef"
5272                 case "$use64bitint" in
5273                 "$define"|true|[yY]*) ;;
5274                 *)      cat <<EOM >&4
5275
5276 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5277
5278 EOM
5279                         use64bitint="$define"
5280                         ;;
5281                 esac
5282                 ;;
5283         esac
5284         ;;
5285 esac
5286
5287 case "$use64bitint" in
5288 "$define"|true|[yY]*)
5289 : Look for a hint-file generated 'call-back-unit'.  If the
5290 : user has specified that a 64-bit perl is to be built,
5291 : we may need to set or change some other defaults.
5292         if $test -f use64bitint.cbu; then
5293                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5294                 . ./use64bitint.cbu
5295         fi
5296         case "$longsize" in
5297         4) case "$archname64" in
5298            '') archname64=64int ;;
5299            esac
5300            ;;
5301         esac
5302         ;;
5303 esac
5304
5305 case "$use64bitall" in
5306 "$define"|true|[yY]*)
5307 : Look for a hint-file generated 'call-back-unit'.  If the
5308 : user has specified that a maximally 64-bit perl is to be built,
5309 : we may need to set or change some other defaults.
5310         if $test -f use64bitall.cbu; then
5311                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5312                 . ./use64bitall.cbu
5313         fi
5314         case "$longsize" in
5315         4) case "$archname64" in
5316            ''|64int) archname64=64all ;;
5317            esac
5318            ;;
5319         esac
5320         ;;
5321 esac
5322
5323 echo " "
5324 echo "Checking for GNU C Library..." >&4
5325 cat >try.c <<EOM
5326 #include <stdio.h>
5327 int main()
5328 {
5329 #ifdef __GLIBC__
5330     exit(0);
5331 #else
5332     exit(1);
5333 #endif
5334 }
5335 EOM
5336 set try
5337 if eval $compile_ok && $run ./try; then
5338         val="$define"
5339         echo "You are using the GNU C Library"
5340 else
5341         val="$undef"
5342         echo "You are not using the GNU C Library"
5343 fi
5344 $rm -f try try.*
5345 set d_gnulibc
5346 eval $setvar
5347
5348 : see if nm is to be used to determine whether a symbol is defined or not
5349 case "$usenm" in
5350 '')
5351         dflt=''
5352         case "$d_gnulibc" in
5353         "$define")
5354                 echo " "
5355                 echo "nm probably won't work on the GNU C Library." >&4
5356                 dflt=n
5357                 ;;
5358         esac
5359         case "$dflt" in
5360         '') 
5361                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5362                         echo " "
5363                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5364                         echo "'nm' won't be sufficient on this sytem." >&4
5365                         dflt=n
5366                 fi
5367                 ;;
5368         esac
5369         case "$dflt" in
5370         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5371                 if $test $dflt -gt 20; then
5372                         dflt=y
5373                 else
5374                         dflt=n
5375                 fi
5376                 ;;
5377         esac
5378         ;;
5379 *)
5380         case "$usenm" in
5381         true|$define) dflt=y;;
5382         *) dflt=n;;
5383         esac
5384         ;;
5385 esac
5386 $cat <<EOM
5387
5388 I can use $nm to extract the symbols from your C libraries. This
5389 is a time consuming task which may generate huge output on the disk (up
5390 to 3 megabytes) but that should make the symbols extraction faster. The
5391 alternative is to skip the 'nm' extraction part and to compile a small
5392 test program instead to determine whether each symbol is present. If
5393 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5394 this may be the best solution.
5395
5396 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5397
5398 EOM
5399 rp="Shall I use $nm to extract C symbols from the libraries?"
5400 . ./myread
5401 case "$ans" in
5402 [Nn]*) usenm=false;;
5403 *) usenm=true;;
5404 esac
5405
5406 runnm=$usenm
5407 case "$reuseval" in
5408 true) runnm=false;;
5409 esac
5410
5411 : nm options which may be necessary
5412 case "$nm_opt" in
5413 '') if $test -f /mach_boot; then
5414                 nm_opt=''       # Mach
5415         elif $test -d /usr/ccs/lib; then
5416                 nm_opt='-p'     # Solaris (and SunOS?)
5417         elif $test -f /dgux; then
5418                 nm_opt='-p'     # DG-UX
5419         elif $test -f /lib64/rld; then
5420                 nm_opt='-p'     # 64-bit Irix
5421         else
5422                 nm_opt=''
5423         fi;;
5424 esac
5425
5426 : nm options which may be necessary for shared libraries but illegal
5427 : for archive libraries.  Thank you, Linux.
5428 case "$nm_so_opt" in
5429 '')     case "$myuname" in
5430         *linux*)
5431                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5432                         nm_so_opt='--dynamic'
5433                 fi
5434                 ;;
5435         esac
5436         ;;
5437 esac
5438
5439 case "$runnm" in
5440 true)
5441 : get list of predefined functions in a handy place
5442 echo " "
5443 case "$libc" in
5444 '') libc=unknown
5445         case "$libs" in
5446         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5447         esac
5448         ;;
5449 esac
5450 case "$libs" in
5451 '') ;;
5452 *)  for thislib in $libs; do
5453         case "$thislib" in
5454         -lc|-lc_s)
5455                 : Handle C library specially below.
5456                 ;;
5457         -l*)
5458                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5459                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5460                         :
5461                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5462                         :
5463                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5464                         :
5465                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5466                         :
5467                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5468                         :
5469                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5470                         :
5471                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5472                         :
5473                 else
5474                         try=''
5475                 fi
5476                 libnames="$libnames $try"
5477                 ;;
5478         *) libnames="$libnames $thislib" ;;
5479         esac
5480         done
5481         ;;
5482 esac
5483 xxx=normal
5484 case "$libc" in
5485 unknown)
5486         set /lib/libc.$so
5487         for xxx in $libpth; do
5488                 $test -r $1 || set $xxx/libc.$so
5489                 : The messy sed command sorts on library version numbers.
5490                 $test -r $1 || \
5491                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5492                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5493                                 h
5494                                 s/[0-9][0-9]*/0000&/g
5495                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5496                                 G
5497                                 s/\n/ /' | \
5498                          $sort | $sed -e 's/^.* //'`
5499                 eval set \$$#
5500         done
5501         $test -r $1 || set /usr/ccs/lib/libc.$so
5502         $test -r $1 || set /lib/libsys_s$_a
5503         ;;
5504 *)
5505         set blurfl
5506         ;;
5507 esac
5508 if $test -r "$1"; then
5509         echo "Your (shared) C library seems to be in $1."
5510         libc="$1"
5511 elif $test -r /lib/libc && $test -r /lib/clib; then
5512         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5513         xxx=apollo
5514         libc='/lib/clib /lib/libc'
5515         if $test -r /lib/syslib; then
5516                 echo "(Your math library is in /lib/syslib.)"
5517                 libc="$libc /lib/syslib"
5518         fi
5519 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5520         echo "Your C library seems to be in $libc, as you said before."
5521 elif $test -r $incpath/usr/lib/libc$_a; then
5522         libc=$incpath/usr/lib/libc$_a;
5523         echo "Your C library seems to be in $libc.  That's fine."
5524 elif $test -r /lib/libc$_a; then
5525         libc=/lib/libc$_a;
5526         echo "Your C library seems to be in $libc.  You're normal."
5527 else
5528         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5529                 :
5530         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5531                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5532         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5533                 :
5534         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5535                 :
5536         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5537                 :
5538         else
5539                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5540         fi
5541         if $test -r "$tans"; then
5542                 echo "Your C library seems to be in $tans, of all places."
5543                 libc=$tans
5544         else
5545                 libc='blurfl'
5546         fi
5547 fi
5548 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5549         dflt="$libc"
5550         cat <<EOM
5551
5552 If the guess above is wrong (which it might be if you're using a strange
5553 compiler, or your machine supports multiple models), you can override it here.
5554
5555 EOM
5556 else
5557         dflt=''
5558         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5559         cat >&4 <<EOM
5560 I can't seem to find your C library.  I've looked in the following places:
5561
5562 EOM
5563         $sed 's/^/      /' libpath
5564         cat <<EOM
5565
5566 None of these seems to contain your C library. I need to get its name...
5567
5568 EOM
5569 fi
5570 fn=f
5571 rp='Where is your C library?'
5572 . ./getfile
5573 libc="$ans"
5574
5575 echo " "
5576 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5577 set X `cat libnames`
5578 shift
5579 xxx=files
5580 case $# in 1) xxx=file; esac
5581 echo "Extracting names from the following $xxx for later perusal:" >&4
5582 echo " "
5583 $sed 's/^/      /' libnames >&4
5584 echo " "
5585 $echo $n "This may take a while...$c" >&4
5586
5587 for file in $*; do
5588         case $file in
5589         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5590         *) $nm $nm_opt $file 2>/dev/null;;
5591         esac
5592 done >libc.tmp
5593
5594 $echo $n ".$c"
5595 $grep fprintf libc.tmp > libc.ptf
5596 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5597 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5598 xxx='[ADTSIW]'
5599 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5600         eval $xscan;\
5601         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5602                 eval $xrun
5603 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5604         eval $xscan;\
5605         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5606                 eval $xrun
5607 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5608         eval $xscan;\
5609         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5610                 eval $xrun
5611 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5612         eval $xscan;\
5613         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5614                 eval $xrun
5615 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5616         eval $xscan;\
5617         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5618                 eval $xrun
5619 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5620         eval $xscan;\
5621         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5622                 eval $xrun
5623 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5624                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5625         eval $xscan;\
5626         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5627                 eval $xrun
5628 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5629         eval $xscan;\
5630         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5631                 eval $xrun
5632 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5633         eval $xscan;\
5634         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5635                 eval $xrun
5636 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5637         eval $xscan;\
5638         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5639                 eval $xrun
5640 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5641         eval $xscan;\
5642         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5643                 eval $xrun
5644 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5645         eval $xscan;\
5646         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5647                 eval $xrun
5648 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5649         eval $xscan;\
5650         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5651                 eval $xrun
5652 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5653         eval $xscan;\
5654         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5655                 eval $xrun
5656 else
5657         $nm -p $* 2>/dev/null >libc.tmp
5658         $grep fprintf libc.tmp > libc.ptf
5659         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5660                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5661         then
5662                 nm_opt='-p'
5663                 eval $xrun
5664         else
5665                 echo " "
5666                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5667                 com=''
5668                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5669                         for thisname in $libnames $libc; do
5670                                 $ar t $thisname >>libc.tmp
5671                         done
5672                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5673                         echo "Ok." >&4
5674                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5675                         # Repeat libc to extract forwarders to DLL entries too
5676                         for thisname in $libnames $libc; do
5677                                 $ar tv $thisname >>libc.tmp
5678                                 # Revision 50 of EMX has bug in $ar.
5679                                 # it will not extract forwarders to DLL entries
5680                                 # Use emximp which will extract exactly them.
5681                                 emximp -o tmp.imp $thisname \
5682                                     2>/dev/null && \
5683                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5684                                     < tmp.imp >>libc.tmp
5685                                 $rm tmp.imp
5686                         done
5687                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5688                         echo "Ok." >&4
5689                 else
5690                         echo "$ar didn't seem to work right." >&4
5691                         echo "Maybe this is a Cray...trying bld instead..." >&4
5692                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5693                         then
5694                                 for thisname in $libnames; do
5695                                         bld t $libnames | \
5696                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5697                                         $ar t $thisname >>libc.tmp
5698                                 done
5699                                 echo "Ok." >&4
5700                         else
5701                                 echo "That didn't work either.  Giving up." >&4
5702                                 exit 1
5703                         fi
5704                 fi
5705         fi
5706 fi
5707 nm_extract="$com"
5708 if $test -f /lib/syscalls.exp; then
5709         echo " "
5710         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5711         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5712 fi
5713 ;;
5714 esac
5715 $rm -f libnames libpath
5716
5717 : is a C symbol defined?
5718 csym='tlook=$1;
5719 case "$3" in
5720 -v) tf=libc.tmp; tc=""; tdc="";;
5721 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5722 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5723 esac;
5724 tx=yes;
5725 case "$reuseval-$4" in
5726 true-) ;;
5727 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5728 esac;
5729 case "$tx" in
5730 yes)
5731         case "$runnm" in
5732         true)
5733                 if $contains $tlook $tf >/dev/null 2>&1;
5734                 then tval=true;
5735                 else tval=false;
5736                 fi;;
5737         *)
5738                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5739                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5740                 then tval=true;
5741                 else tval=false;
5742                 fi;
5743                 $rm -f t t.c;;
5744         esac;;
5745 *)
5746         case "$tval" in
5747         $define) tval=true;;
5748         *) tval=false;;
5749         esac;;
5750 esac;
5751 eval "$2=$tval"'
5752
5753 : define an is-in-libc? function
5754 inlibc='echo " "; td=$define; tu=$undef;
5755 sym=$1; var=$2; eval "was=\$$2";
5756 tx=yes;
5757 case "$reuseval$was" in
5758 true) ;;
5759 true*) tx=no;;
5760 esac;
5761 case "$tx" in
5762 yes)
5763         set $sym tres -f;
5764         eval $csym;
5765         case "$tres" in
5766         true)
5767                 echo "$sym() found." >&4;
5768                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5769         *)
5770                 echo "$sym() NOT found." >&4;
5771                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5772         esac;;
5773 *)
5774         case "$was" in
5775         $define) echo "$sym() found." >&4;;
5776         *) echo "$sym() NOT found." >&4;;
5777         esac;;
5778 esac'
5779
5780 : see if sqrtl exists
5781 set sqrtl d_sqrtl
5782 eval $inlibc
5783
5784 : check for length of double
5785 echo " "
5786 case "$doublesize" in
5787 '')
5788         echo "Checking to see how big your double precision numbers are..." >&4
5789         $cat >try.c <<'EOCP'
5790 #include <stdio.h>
5791 int main()
5792 {
5793     printf("%d\n", (int)sizeof(double));
5794     exit(0);
5795 }
5796 EOCP
5797         set try
5798         if eval $compile_ok; then
5799                 doublesize=`$run ./try`
5800                 echo "Your double is $doublesize bytes long."
5801         else
5802                 dflt='8'
5803                 echo "(I can't seem to compile the test program.  Guessing...)"
5804                 rp="What is the size of a double precision number (in bytes)?"
5805                 . ./myread
5806                 doublesize="$ans"
5807         fi
5808         ;;
5809 esac
5810 $rm -f try.c try
5811
5812 : check for long doubles
5813 echo " "
5814 echo "Checking to see if you have long double..." >&4
5815 echo 'int main() { long double x = 7.0; }' > try.c
5816 set try
5817 if eval $compile; then
5818         val="$define"
5819         echo "You have long double."
5820 else
5821         val="$undef"
5822         echo "You do not have long double."
5823 fi
5824 $rm try.*
5825 set d_longdbl
5826 eval $setvar
5827
5828 : check for length of long double
5829 case "${d_longdbl}${longdblsize}" in
5830 $define)
5831         echo " "
5832         echo "Checking to see how big your long doubles are..." >&4
5833         $cat >try.c <<'EOCP'
5834 #include <stdio.h>
5835 int main()
5836 {
5837         printf("%d\n", sizeof(long double));
5838 }
5839 EOCP
5840         set try
5841         set try
5842         if eval $compile; then
5843                 longdblsize=`$run ./try`
5844                 echo "Your long doubles are $longdblsize bytes long."
5845         else
5846                 dflt='8'
5847                 echo " "
5848                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5849                 rp="What is the size of a long double (in bytes)?"
5850                 . ./myread
5851                 longdblsize="$ans"
5852         fi
5853         if $test "X$doublesize" = "X$longdblsize"; then
5854                 echo "(That isn't any different from an ordinary double.)"
5855         fi      
5856         ;;
5857 esac
5858 $rm -f try.* try
5859
5860 echo " "
5861
5862 if $test X"$d_longdbl" = X"$define"; then
5863
5864 echo "Checking how to print long doubles..." >&4
5865
5866 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
5867         $cat >try.c <<'EOCP'
5868 #include <sys/types.h>
5869 #include <stdio.h>
5870 int main() {
5871   double d = 123.456;
5872   printf("%.3f\n", d);
5873 }
5874 EOCP
5875         set try
5876         if eval $compile; then
5877                 yyy=`$run ./try`
5878                 case "$yyy" in
5879                 123.456)
5880                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
5881                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
5882                         echo "We will use %f."
5883                         ;;
5884                 esac
5885         fi
5886 fi
5887
5888 if $test X"$sPRIfldbl" = X; then
5889         $cat >try.c <<'EOCP'
5890 #include <sys/types.h>
5891 #include <stdio.h>
5892 int main() {
5893   long double d = 123.456;
5894   printf("%.3Lf\n", d);
5895 }
5896 EOCP
5897         set try
5898         if eval $compile; then
5899                 yyy=`$run ./try`
5900                 case "$yyy" in
5901                 123.456)
5902                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
5903                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
5904                         echo "We will use %Lf."
5905                         ;;
5906                 esac
5907         fi
5908 fi
5909
5910 if $test X"$sPRIfldbl" = X; then
5911         $cat >try.c <<'EOCP'
5912 #include <sys/types.h>
5913 #include <stdio.h>
5914 int main() {
5915   long double d = 123.456;
5916   printf("%.3llf\n", d);
5917 }
5918 EOCP
5919         set try
5920         if eval $compile; then
5921                 yyy=`$run ./try`
5922                 case "$yyy" in
5923                 123.456)
5924                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
5925                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
5926                         echo "We will use %llf."
5927                         ;;
5928                 esac
5929         fi
5930 fi
5931
5932 if $test X"$sPRIfldbl" = X; then
5933         $cat >try.c <<'EOCP'
5934 #include <sys/types.h>
5935 #include <stdio.h>
5936 int main() {
5937   long double d = 123.456;
5938   printf("%.3lf\n", d);
5939 }
5940 EOCP
5941         set try
5942         if eval $compile; then
5943                 yyy=`$run ./try`
5944                 case "$yyy" in
5945                 123.456)
5946                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
5947                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
5948                         echo "We will use %lf."
5949                         ;;
5950                 esac
5951         fi
5952 fi
5953
5954 if $test X"$sPRIfldbl" = X; then
5955         echo "Cannot figure out how to print long doubles." >&4
5956 else
5957         sSCNfldbl=$sPRIfldbl    # expect consistency
5958 fi
5959
5960 $rm -f try try.*
5961
5962 fi # d_longdbl
5963
5964 case "$sPRIfldbl" in
5965 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
5966         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
5967         d_SCNfldbl="$undef";
5968         ;;
5969 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
5970         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
5971         d_SCNfldbl="$define";
5972         ;;
5973 esac
5974
5975 : see if modfl exists
5976 set modfl d_modfl
5977 eval $inlibc
5978
5979 d_modfl_pow32_bug="$undef"
5980
5981 case "$d_longdbl$d_modfl" in
5982 $define$define)
5983         $cat <<EOM
5984 Checking to see whether your modfl() is okay for large values...
5985 EOM
5986 $cat >try.c <<EOCP
5987 #include <math.h> 
5988 #include <stdio.h>
5989 int main() {
5990     long double nv = 4294967303.15;
5991     long double v, w;
5992     v = modfl(nv, &w);         
5993 #ifdef __GLIBC__
5994     printf("glibc");
5995 #endif
5996     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
5997     return 0;
5998 }
5999 EOCP
6000         case "$osname:$gccversion" in
6001         aix:)   saveccflags="$ccflags"
6002                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
6003         esac
6004         set try
6005         if eval $compile; then
6006                 foo=`$run ./try`
6007                 case "$foo" in
6008                 *" 4294967303.150000 1.150000 4294967302.000000")
6009                         echo >&4 "Your modfl() is broken for large values."
6010                         d_modfl_pow32_bug="$define"
6011                         case "$foo" in
6012                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
6013                         ;;
6014                         esac
6015                         ;;
6016                 *" 4294967303.150000 0.150000 4294967303.000000")
6017                         echo >&4 "Your modfl() seems okay for large values."
6018                         ;;
6019                 *)      echo >&4 "I don't understand your modfl() at all."
6020                         d_modfl="$undef"
6021                         ;;
6022                 esac
6023                 $rm -f try.* try core core.try.*
6024         else
6025                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
6026                 d_modfl="$undef"
6027         fi
6028         case "$osname:$gccversion" in
6029         aix:)   ccflags="$saveccflags" ;; # restore
6030         esac
6031         ;;
6032 esac
6033
6034 case "$ccflags" in
6035 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6036 esac
6037
6038 case "$uselongdouble" in
6039 $define|true|[yY]*)     dflt='y';;
6040 *) dflt='n';;
6041 esac
6042 cat <<EOM
6043
6044 Perl can be built to take advantage of long doubles which
6045 (if available) may give more accuracy and range for floating point numbers.
6046
6047 If this doesn't make any sense to you, just accept the default '$dflt'.
6048 EOM
6049 rp='Try to use long doubles if available?'
6050 . ./myread
6051 case "$ans" in
6052 y|Y)    val="$define"   ;;
6053 *)      val="$undef"    ;;
6054 esac
6055 set uselongdouble
6056 eval $setvar
6057
6058 case "$uselongdouble" in
6059 true|[yY]*) uselongdouble="$define" ;;
6060 esac
6061
6062 case "$uselongdouble" in
6063 $define)
6064 : Look for a hint-file generated 'call-back-unit'.  If the
6065 : user has specified that long doubles should be used,
6066 : we may need to set or change some other defaults.
6067         if $test -f uselongdouble.cbu; then
6068                 echo "Your platform has some specific hints for long doubles, using them..."
6069                 . ./uselongdouble.cbu
6070         else
6071                 $cat <<EOM
6072 (Your platform doesn't have any specific hints for long doubles.)
6073 EOM
6074         fi
6075         ;;
6076 esac
6077
6078 message=X
6079 case "$uselongdouble:$d_sqrtl:$d_modfl" in
6080 $define:$define:$define)
6081         : You have both
6082         ;;
6083 $define:$define:$undef)
6084         message="I could not find modfl"
6085         ;;
6086 $define:$undef:$define)
6087         message="I could not find sqrtl"
6088         ;;
6089 $define:$undef:$undef)
6090         message="I found neither sqrtl nor modfl"
6091         ;;
6092 esac
6093
6094 if $test "$message" != X; then
6095         $cat <<EOM >&4
6096
6097 *** You requested the use of long doubles but you do not seem to have
6098 *** the mathematic functions for long doubles.
6099 *** ($message)
6100 *** I'm disabling the use of long doubles.
6101
6102 EOM
6103
6104         uselongdouble=$undef
6105 fi
6106
6107 case "$useperlio" in
6108 $define|true|[yY]*|'')  dflt='y';;
6109 *) dflt='n';;
6110 esac
6111 cat <<EOM
6112
6113 Previous version of $package used the standard IO mechanisms as
6114 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
6115 alternate IO mechanisms via the PerlIO abstraction layer, but the
6116 stdio mechanism is still available if needed.  The abstraction layer
6117 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
6118 Using PerlIO with sfio may cause problems with some extension modules.
6119
6120 If this doesn't make any sense to you, just accept the default '$dflt'.
6121 EOM
6122 rp='Use the PerlIO abstraction layer?'
6123 . ./myread
6124 case "$ans" in
6125 y|Y) 
6126         val="$define"
6127         ;;
6128 *)      
6129         echo "Ok, doing things the stdio way."
6130         val="$undef"
6131         ;;
6132 esac
6133 set useperlio
6134 eval $setvar 
6135
6136 case "$usesocks" in
6137 $define|true|[yY]*)
6138         case "$useperlio" in
6139         $define|true|[yY]*) ;;
6140         *)      cat >&4 <<EOM
6141
6142 You are using the SOCKS proxy protocol library which means that you
6143 should also use the PerlIO layer.  You may be headed for trouble.
6144
6145 EOM
6146                 ;;
6147         esac
6148         ;;
6149 esac
6150
6151         
6152 : determine the architecture name
6153 echo " "
6154 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6155         tarch=`arch`"-$osname"
6156 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6157         if uname -m > tmparch 2>&1 ; then
6158                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6159                         -e 's/$/'"-$osname/" tmparch`
6160         else
6161                 tarch="$osname"
6162         fi
6163         $rm -f tmparch
6164 else
6165         tarch="$osname"
6166 fi
6167 case "$myarchname" in
6168 ''|"$tarch") ;;
6169 *)
6170         echo "(Your architecture name used to be $myarchname.)"
6171         archname=''
6172         ;;
6173 esac
6174 case "$targetarch" in
6175 '') ;;
6176 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6177 esac
6178 myarchname="$tarch"
6179 case "$archname" in
6180 '') dflt="$tarch";;
6181 *) dflt="$archname";;
6182 esac
6183 rp='What is your architecture name'
6184 . ./myread
6185 archname="$ans"
6186 case "$usethreads" in
6187 $define)
6188         echo "Threads selected." >&4
6189         case "$archname" in
6190         *-thread*) echo "...and architecture name already has -thread." >&4
6191                 ;;
6192         *)      archname="$archname-thread"
6193                 echo "...setting architecture name to $archname." >&4
6194                 ;;
6195         esac
6196         ;;
6197 esac
6198 case "$usemultiplicity" in
6199 $define)
6200         echo "Multiplicity selected." >&4
6201         case "$archname" in
6202         *-multi*) echo "...and architecture name already has -multi." >&4
6203                 ;;
6204         *)      archname="$archname-multi"
6205                 echo "...setting architecture name to $archname." >&4
6206                 ;;
6207         esac
6208         ;;
6209 esac
6210 case "$use64bitint$use64bitall" in
6211 *"$define"*)
6212         case "$archname64" in
6213         '')
6214                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6215                 ;;
6216         *)
6217                 case "$use64bitint" in
6218                 "$define") echo "64 bit integers selected." >&4 ;;
6219                 esac
6220                 case "$use64bitall" in
6221                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6222                 esac
6223                 case "$archname" in
6224                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6225                         ;;
6226                 *)      archname="$archname-$archname64"
6227                         echo "...setting architecture name to $archname." >&4
6228                         ;;
6229                 esac
6230                 ;;
6231         esac
6232 esac
6233 case "$uselongdouble" in
6234 $define)
6235         echo "Long doubles selected." >&4
6236         case "$longdblsize" in
6237         $doublesize)
6238                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6239                 ;;
6240         *)
6241                 case "$archname" in
6242                 *-ld*) echo "...and architecture name already has -ld." >&4
6243                         ;;
6244                 *)      archname="$archname-ld"
6245                         echo "...setting architecture name to $archname." >&4
6246                         ;;
6247                 esac
6248                 ;;
6249         esac
6250         ;;
6251 esac
6252 case "$useperlio" in
6253 $define)
6254         echo "Perlio selected." >&4
6255         ;;
6256 *)
6257         echo "Perlio not selected, using stdio." >&4
6258         case "$archname" in
6259         *-stdio*) echo "...and architecture name already has -stdio." >&4
6260                 ;;
6261         *)      archname="$archname-stdio"
6262                 echo "...setting architecture name to $archname." >&4
6263                 ;;
6264         esac
6265         ;;
6266 esac
6267
6268 : determine root of directory hierarchy where package will be installed.
6269 case "$prefix" in
6270 '')
6271         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6272         ;;
6273 *)
6274         dflt="$prefix"
6275         ;;
6276 esac
6277 $cat <<EOM
6278
6279 By default, $package will be installed in $dflt/bin, manual pages
6280 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6281 installation directories. Typically this is something like /usr/local.
6282 If you wish to have binaries under /usr/bin but other parts of the
6283 installation under /usr/local, that's ok: you will be prompted
6284 separately for each of the installation directories, the prefix being
6285 only used to set the defaults.
6286
6287 EOM
6288 fn=d~
6289 rp='Installation prefix to use?'
6290 . ./getfile
6291 oldprefix=''
6292 case "$prefix" in
6293 '') ;;
6294 *)
6295         case "$ans" in
6296         "$prefix") ;;
6297         *) oldprefix="$prefix";;
6298         esac
6299         ;;
6300 esac
6301 prefix="$ans"
6302 prefixexp="$ansexp"
6303
6304 case "$afsroot" in
6305 '')     afsroot=/afs ;;
6306 *)      afsroot=$afsroot ;;
6307 esac
6308
6309 : is AFS running?
6310 echo " "
6311 case "$afs" in
6312 $define|true)   afs=true ;;
6313 $undef|false)   afs=false ;;
6314 *)      if test -d $afsroot; then
6315                 afs=true
6316         else
6317                 afs=false
6318         fi
6319         ;;
6320 esac
6321 if $afs; then
6322         echo "AFS may be running... I'll be extra cautious then..." >&4
6323 else
6324         echo "AFS does not seem to be running..." >&4
6325 fi
6326
6327 : determine installation prefix for where package is to be installed.
6328 if $afs; then 
6329 $cat <<EOM
6330
6331 Since you are running AFS, I need to distinguish the directory in which
6332 files will reside from the directory in which they are installed (and from
6333 which they are presumably copied to the former directory by occult means).
6334
6335 EOM
6336         case "$installprefix" in
6337         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6338         *) dflt="$installprefix";;
6339         esac
6340 else
6341 $cat <<EOM
6342
6343 In some special cases, particularly when building $package for distribution,
6344 it is convenient to distinguish between the directory in which files should 
6345 be installed from the directory ($prefix) in which they 
6346 will eventually reside.  For most users, these two directories are the same.
6347
6348 EOM
6349         case "$installprefix" in
6350         '') dflt=$prefix ;;
6351         *) dflt=$installprefix;;
6352         esac
6353 fi
6354 fn=d~
6355 rp='What installation prefix should I use for installing files?'
6356 . ./getfile
6357 installprefix="$ans"
6358 installprefixexp="$ansexp"
6359
6360 : set the prefixit variable, to compute a suitable default value
6361 prefixit='case "$3" in
6362 ""|none)
6363         case "$oldprefix" in
6364         "") eval "$1=\"\$$2\"";;
6365         *)
6366                 case "$3" in
6367                 "") eval "$1=";;
6368                 none)
6369                         eval "tp=\"\$$2\"";
6370                         case "$tp" in
6371                         ""|" ") eval "$1=\"\$$2\"";;
6372                         *) eval "$1=";;
6373                         esac;;
6374                 esac;;
6375         esac;;
6376 *)
6377         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6378         case "$tp" in
6379         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6380         /*-$oldprefix/*|\~*-$oldprefix/*)
6381                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6382         *) eval "$1=\"\$$2\"";;
6383         esac;;
6384 esac'
6385
6386 : get the patchlevel
6387 echo " "
6388 echo "Getting the current patchlevel..." >&4
6389 if $test -r $rsrc/patchlevel.h;then
6390         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6391         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6392         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6393         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6394         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6395         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6396        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6397 else
6398         revision=0
6399         patchlevel=0
6400         subversion=0
6401         api_revision=0
6402         api_version=0
6403         api_subversion=0
6404         perl_patchlevel=0
6405         $echo "(You do not have patchlevel.h.  Eek.)"
6406 fi
6407 if $test -r $rsrc/.patch ; then  
6408         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6409                 perl_patchlevel=`cat $rsrc/.patch`
6410         fi
6411 fi
6412 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6413 version_patchlevel_string="version $patchlevel subversion $subversion"
6414 case "$perl_patchlevel" in
6415 0|'') ;;
6416 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6417 esac
6418
6419 $echo "(You have $package $version_patchlevel_string.)"
6420
6421 case "$osname" in
6422 dos|vms)
6423         : XXX Should be a Configure test for double-dots in filenames.
6424         version=`echo $revision $patchlevel $subversion | \
6425                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6426         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6427                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6428         ;;
6429 *)
6430         version=`echo $revision $patchlevel $subversion | \
6431                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6432         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6433                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6434         ;;
6435 esac
6436 : Special case the 5.005_xx maintenance series, which used 5.005
6437 : without any subversion label as a subdirectory in $sitelib
6438 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6439         api_versionstring='5.005'
6440 fi
6441
6442 : determine installation style
6443 : For now, try to deduce it from prefix unless it is already set.
6444 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6445 case "$installstyle" in
6446 '')     case "$prefix" in
6447                 *perl*) dflt='lib';;
6448                 *) dflt='lib/perl5' ;;
6449         esac
6450         ;;
6451 *)      dflt="$installstyle" ;;
6452 esac
6453 : Probably not worth prompting for this since we prompt for all
6454 : the directories individually, and the prompt would be too long and
6455 : confusing anyway.
6456 installstyle=$dflt
6457
6458 : determine where private library files go
6459 : Usual default is /usr/local/lib/perl5/$version.
6460 : Also allow things like /opt/perl/lib/$version, since 
6461 : /opt/perl/lib/perl5... would be redundant.
6462 : The default "style" setting is made in installstyle.U
6463 case "$installstyle" in
6464 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6465 *)       set dflt privlib lib/$version ;;
6466 esac
6467 eval $prefixit
6468 $cat <<EOM
6469
6470 There are some auxiliary files for $package that need to be put into a
6471 private library directory that is accessible by everyone.
6472
6473 EOM
6474 fn=d~+
6475 rp='Pathname where the private library files will reside?'
6476 . ./getfile
6477 privlib="$ans"
6478 privlibexp="$ansexp"
6479 : Change installation prefix, if necessary.
6480 if $test X"$prefix" != X"$installprefix"; then
6481         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6482 else
6483         installprivlib="$privlibexp"
6484 fi
6485
6486 : set the prefixup variable, to restore leading tilda escape
6487 prefixup='case "$prefixexp" in
6488 "$prefix") ;;
6489 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6490 esac'
6491
6492 : determine where public architecture dependent libraries go
6493 set archlib archlib
6494 eval $prefixit
6495 : privlib default is /usr/local/lib/$package/$version
6496 : archlib default is /usr/local/lib/$package/$version/$archname
6497 : privlib may have an optional trailing /share.
6498 tdflt=`echo $privlib | $sed 's,/share$,,'`
6499 tdflt=$tdflt/$archname
6500 case "$archlib" in
6501 '')     dflt=$tdflt
6502         ;;
6503 *)      dflt="$archlib"
6504     ;;
6505 esac
6506 $cat <<EOM
6507
6508 $spackage contains architecture-dependent library files.  If you are
6509 sharing libraries in a heterogeneous environment, you might store
6510 these files in a separate location.  Otherwise, you can just include
6511 them with the rest of the public library files.
6512
6513 EOM
6514 fn=d+~
6515 rp='Where do you want to put the public architecture-dependent libraries?'
6516 . ./getfile
6517 archlib="$ans"
6518 archlibexp="$ansexp"
6519 if $test X"$archlib" = X"$privlib"; then
6520         d_archlib="$undef"
6521 else
6522         d_archlib="$define"
6523 fi
6524 : Change installation prefix, if necessary.
6525 if $test X"$prefix" != X"$installprefix"; then
6526         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6527 else
6528         installarchlib="$archlibexp"
6529 fi
6530
6531
6532 : Binary compatibility with 5.005 is not possible for builds
6533 : with advanced features
6534 case "$usethreads$usemultiplicity" in
6535 *define*)
6536         bincompat5005="$undef"
6537         d_bincompat5005="$undef"
6538         ;;
6539 *)      $cat <<EOM
6540
6541 This version of Perl can be compiled for binary compatibility with 5.005.
6542 If you decide to do so, you will be able to continue using most of the
6543 extensions that were compiled for Perl 5.005.
6544
6545 EOM
6546         case "$bincompat5005$d_bincompat5005" in
6547         *"$undef"*) dflt=n ;;
6548         *) dflt=y ;;
6549         esac
6550         rp='Binary compatibility with Perl 5.005?'
6551         . ./myread
6552         case "$ans" in
6553         y*) val="$define" ;;
6554         *)  val="$undef" ;;
6555         esac
6556         set d_bincompat5005
6557         eval $setvar
6558         case "$d_bincompat5005" in
6559         "$define")
6560                 bincompat5005="$define"
6561                 ;;
6562         *)      bincompat5005="$undef"
6563                 d_bincompat5005="$undef"
6564                 ;;
6565         esac
6566         ;;
6567 esac
6568
6569
6570 : see if setuid scripts can be secure
6571 $cat <<EOM
6572
6573 Some kernels have a bug that prevents setuid #! scripts from being
6574 secure.  Some sites have disabled setuid #! scripts because of this.
6575
6576 First let's decide if your kernel supports secure setuid #! scripts.
6577 (If setuid #! scripts would be secure but have been disabled anyway,
6578 don't say that they are secure if asked.)
6579
6580 EOM
6581
6582 val="$undef"
6583 if $test -d /dev/fd; then
6584         echo "#!$ls" >reflect
6585         chmod +x,u+s reflect
6586         ./reflect >flect 2>&1
6587         if $contains "/dev/fd" flect >/dev/null; then
6588                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6589                 val="$define"
6590         else
6591                 $cat <<EOM
6592 If you are not sure if they are secure, I can check but I'll need a
6593 username and password different from the one you are using right now.
6594 If you don't have such a username or don't want me to test, simply
6595 enter 'none'.
6596
6597 EOM
6598                 rp='Other username to test security of setuid scripts with?'
6599                 dflt='none'
6600                 . ./myread
6601                 case "$ans" in
6602                 n|none)
6603                         case "$d_suidsafe" in
6604                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6605                                 dflt=n;;
6606                         "$undef")
6607                                 echo "Well, the $hint value is *not* secure." >&4
6608                                 dflt=n;;
6609                         *)      echo "Well, the $hint value *is* secure." >&4
6610                                 dflt=y;;
6611                         esac
6612                         ;;
6613                 *)
6614                         $rm -f reflect flect
6615                         echo "#!$ls" >reflect
6616                         chmod +x,u+s reflect
6617                         echo >flect
6618                         chmod a+w flect
6619                         echo '"su" will (probably) prompt you for '"$ans's password."
6620                         su $ans -c './reflect >flect'
6621                         if $contains "/dev/fd" flect >/dev/null; then
6622                                 echo "Okay, it looks like setuid scripts are secure." >&4
6623                                 dflt=y
6624                         else
6625                                 echo "I don't think setuid scripts are secure." >&4
6626                                 dflt=n
6627                         fi
6628                         ;;
6629                 esac
6630                 rp='Does your kernel have *secure* setuid scripts?'
6631                 . ./myread
6632                 case "$ans" in
6633                 [yY]*)  val="$define";;
6634                 *)      val="$undef";;
6635                 esac
6636         fi
6637 else
6638         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6639         echo "(That's for file descriptors, not floppy disks.)"
6640         val="$undef"
6641 fi
6642 set d_suidsafe
6643 eval $setvar
6644
6645 $rm -f reflect flect
6646
6647 : now see if they want to do setuid emulation
6648 echo " "
6649 val="$undef"
6650 case "$d_suidsafe" in
6651 "$define")
6652         val="$undef"
6653         echo "No need to emulate SUID scripts since they are secure here." >&4
6654         ;;
6655 *)
6656         $cat <<EOM
6657 Some systems have disabled setuid scripts, especially systems where
6658 setuid scripts cannot be secure.  On systems where setuid scripts have
6659 been disabled, the setuid/setgid bits on scripts are currently
6660 useless.  It is possible for $package to detect those bits and emulate
6661 setuid/setgid in a secure fashion.  This emulation will only work if
6662 setuid scripts have been disabled in your kernel.
6663
6664 EOM
6665         case "$d_dosuid" in
6666         "$define") dflt=y ;;
6667         *) dflt=n ;;
6668         esac
6669         rp="Do you want to do setuid/setgid emulation?"
6670         . ./myread
6671         case "$ans" in
6672         [yY]*)  val="$define";;
6673         *)      val="$undef";;
6674         esac
6675         ;;
6676 esac
6677 set d_dosuid
6678 eval $setvar
6679
6680 : see if this is a malloc.h system
6681 set malloc.h i_malloc
6682 eval $inhdr
6683
6684 : see if stdlib is available
6685 set stdlib.h i_stdlib
6686 eval $inhdr
6687
6688 : determine which malloc to compile in
6689 echo " "
6690 case "$usemymalloc" in
6691 [yY]*|true|$define)     dflt='y' ;;
6692 [nN]*|false|$undef)     dflt='n' ;;
6693 *)      case "$ptrsize" in
6694         4) dflt='y' ;;
6695         *) dflt='n' ;;
6696         esac
6697         ;;
6698 esac
6699 rp="Do you wish to attempt to use the malloc that comes with $package?"
6700 . ./myread
6701 usemymalloc="$ans"
6702 case "$ans" in
6703 y*|true)
6704         usemymalloc='y'
6705         mallocsrc='malloc.c'
6706         mallocobj="malloc$_o"
6707         d_mymalloc="$define"
6708         case "$libs" in
6709         *-lmalloc*)
6710                 : Remove malloc from list of libraries to use
6711                 echo "Removing unneeded -lmalloc from library list" >&4
6712                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6713                 shift
6714                 libs="$*"
6715                 echo "libs = $libs" >&4
6716                 ;;
6717         esac
6718         ;;
6719 *)
6720         usemymalloc='n'
6721         mallocsrc=''
6722         mallocobj=''
6723         d_mymalloc="$undef"
6724         ;;
6725 esac
6726
6727 : compute the return types of malloc and free
6728 echo " "
6729 $cat >malloc.c <<END
6730 #$i_malloc I_MALLOC
6731 #$i_stdlib I_STDLIB
6732 #include <stdio.h>
6733 #include <sys/types.h>
6734 #ifdef I_MALLOC
6735 #include <malloc.h>
6736 #endif
6737 #ifdef I_STDLIB
6738 #include <stdlib.h>
6739 #endif
6740 #ifdef TRY_MALLOC
6741 void *malloc();
6742 #endif
6743 #ifdef TRY_FREE
6744 void free();
6745 #endif
6746 END
6747 case "$malloctype" in
6748 '')
6749         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6750                 malloctype='void *'
6751         else
6752                 malloctype='char *'
6753         fi
6754         ;;
6755 esac
6756 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6757
6758 case "$freetype" in
6759 '')
6760         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6761                 freetype='void'
6762         else
6763                 freetype='int'
6764         fi
6765         ;;
6766 esac
6767 echo "Your system uses $freetype free(), it would seem." >&4
6768 $rm -f malloc.[co]
6769 $cat <<EOM
6770
6771 After $package is installed, you may wish to install various
6772 add-on modules and utilities.  Typically, these add-ons will
6773 be installed under $prefix with the rest
6774 of this package.  However, you may wish to install such add-ons
6775 elsewhere under a different prefix.
6776
6777 If you do not wish to put everything under a single prefix, that's
6778 ok.  You will be prompted for the individual locations; this siteprefix
6779 is only used to suggest the defaults.
6780
6781 The default should be fine for most people.
6782
6783 EOM
6784 fn=d~+
6785 rp='Installation prefix to use for add-on modules and utilities?'
6786 : XXX Here might be another good place for an installstyle setting.
6787 case "$siteprefix" in
6788 '') dflt=$prefix ;;
6789 *)  dflt=$siteprefix ;;
6790 esac
6791 . ./getfile
6792 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6793 oldsiteprefix=''
6794 case "$siteprefix" in
6795 '') ;;
6796 *)      case "$ans" in
6797         "$prefix") ;;
6798         *) oldsiteprefix="$prefix";;
6799         esac
6800         ;;
6801 esac
6802 siteprefix="$ans"
6803 siteprefixexp="$ansexp"
6804
6805 : determine where site specific libraries go.
6806 : Usual default is /usr/local/lib/perl5/site_perl/$version
6807 : The default "style" setting is made in installstyle.U
6808 : XXX No longer works with Prefixit stuff.
6809 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6810 case "$sitelib" in
6811 '') case "$installstyle" in
6812         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6813         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6814         esac
6815         ;;
6816 *)      dflt="$sitelib"
6817         ;;
6818 esac
6819 $cat <<EOM
6820
6821 The installation process will create a directory for
6822 site-specific extensions and modules.  Most users find it convenient
6823 to place all site-specific files in this directory rather than in the
6824 main distribution directory.
6825
6826 EOM
6827 fn=d~+
6828 rp='Pathname for the site-specific library files?'
6829 . ./getfile
6830 sitelib="$ans"
6831 sitelibexp="$ansexp"
6832 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6833 : Change installation prefix, if necessary.
6834 if $test X"$prefix" != X"$installprefix"; then
6835         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6836 else
6837         installsitelib="$sitelibexp"
6838 fi
6839
6840 : determine where site specific architecture-dependent libraries go.
6841 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6842 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6843 : sitelib may have an optional trailing /share.
6844 case "$sitearch" in
6845 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6846         dflt="$dflt/$archname"
6847         ;;
6848 *)      dflt="$sitearch"
6849         ;;
6850 esac
6851 set sitearch sitearch none
6852 eval $prefixit
6853 $cat <<EOM
6854
6855 The installation process will also create a directory for
6856 architecture-dependent site-specific extensions and modules.
6857
6858 EOM
6859 fn=d~+
6860 rp='Pathname for the site-specific architecture-dependent library files?'
6861 . ./getfile
6862 sitearch="$ans"
6863 sitearchexp="$ansexp"
6864 : Change installation prefix, if necessary.
6865 if $test X"$prefix" != X"$installprefix"; then
6866         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6867 else
6868         installsitearch="$sitearchexp"
6869 fi
6870
6871 $cat <<EOM
6872
6873 The installation process will also create a directory for
6874 vendor-supplied add-ons.  Vendors who supply perl with their system
6875 may find it convenient to place all vendor-supplied files in this
6876 directory rather than in the main distribution directory.  This will
6877 ease upgrades between binary-compatible maintenance versions of perl.
6878
6879 Of course you may also use these directories in whatever way you see
6880 fit.  For example, you might use them to access modules shared over a
6881 company-wide network.
6882
6883 The default answer should be fine for most people.
6884 This causes further questions about vendor add-ons to be skipped
6885 and no vendor-specific directories will be configured for perl.
6886
6887 EOM
6888 rp='Do you want to configure vendor-specific add-on directories?'
6889 case "$usevendorprefix" in
6890 define|true|[yY]*) dflt=y ;;
6891 *)      : User may have set vendorprefix directly on Configure command line.
6892         case "$vendorprefix" in
6893         ''|' ') dflt=n ;;
6894         *)      dflt=y ;;
6895         esac
6896         ;;
6897 esac
6898 . ./myread
6899 case "$ans" in
6900 [yY]*)  fn=d~+
6901         rp='Installation prefix to use for vendor-supplied add-ons?'
6902         case "$vendorprefix" in
6903         '') dflt='' ;;
6904         *)  dflt=$vendorprefix ;;
6905         esac
6906         . ./getfile
6907         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6908         oldvendorprefix=''
6909         case "$vendorprefix" in
6910         '') ;;
6911         *)      case "$ans" in
6912                 "$prefix") ;;
6913                 *) oldvendorprefix="$prefix";;
6914                 esac
6915                 ;;
6916         esac
6917         usevendorprefix="$define"
6918         vendorprefix="$ans"
6919         vendorprefixexp="$ansexp"
6920         ;;
6921 *)      usevendorprefix="$undef"
6922         vendorprefix=''
6923         vendorprefixexp=''
6924         ;;
6925 esac
6926
6927 case "$vendorprefix" in
6928 '')     d_vendorlib="$undef"
6929         vendorlib=''
6930         vendorlibexp=''
6931         ;;
6932 *)      d_vendorlib="$define"
6933         : determine where vendor-supplied modules go.
6934         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6935         case "$vendorlib" in
6936         '')
6937                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6938                 case "$installstyle" in
6939                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6940                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6941                 esac
6942                 ;;
6943         *)      dflt="$vendorlib"
6944                 ;;
6945         esac
6946         fn=d~+
6947         rp='Pathname for the vendor-supplied library files?'
6948         . ./getfile
6949         vendorlib="$ans"
6950         vendorlibexp="$ansexp"
6951         ;;
6952 esac
6953 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6954 : Change installation prefix, if necessary.
6955 if $test X"$prefix" != X"$installprefix"; then
6956         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6957 else
6958         installvendorlib="$vendorlibexp"
6959 fi
6960
6961 case "$vendorprefix" in
6962 '')     d_vendorarch="$undef"
6963         vendorarch=''
6964         vendorarchexp=''
6965         ;;
6966 *)      d_vendorarch="$define"
6967         : determine where vendor-supplied architecture-dependent libraries go.
6968         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6969         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6970         : vendorlib may have an optional trailing /share.
6971         case "$vendorarch" in
6972         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6973                 dflt="$dflt/$archname"
6974                 ;;
6975         *)      dflt="$vendorarch" ;;
6976         esac
6977         fn=d~+
6978         rp='Pathname for vendor-supplied architecture-dependent files?'
6979         . ./getfile
6980         vendorarch="$ans"
6981         vendorarchexp="$ansexp"
6982         ;;
6983 esac
6984 : Change installation prefix, if necessary.
6985 if $test X"$prefix" != X"$installprefix"; then
6986         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6987 else
6988         installvendorarch="$vendorarchexp"
6989 fi
6990
6991 : Final catch-all directories to search
6992 $cat <<EOM
6993
6994 Lastly, you can have perl look in other directories for extensions and
6995 modules in addition to those already specified.
6996 These directories will be searched after 
6997         $sitearch 
6998         $sitelib 
6999 EOM
7000 test X"$vendorlib" != "X" && echo '     ' $vendorlib
7001 test X"$vendorarch" != "X" && echo '    ' $vendorarch
7002 echo ' '
7003 case "$otherlibdirs" in
7004 ''|' ') dflt='none' ;;
7005 *)      dflt="$otherlibdirs" ;;
7006 esac
7007 $cat <<EOM
7008 Enter a colon-separated set of extra paths to include in perl's @INC
7009 search path, or enter 'none' for no extra paths.
7010
7011 EOM
7012
7013 rp='Colon-separated list of additional directories for perl to search?'
7014 . ./myread
7015 case "$ans" in
7016 ' '|''|none)    otherlibdirs=' ' ;;     
7017 *)      otherlibdirs="$ans" ;;
7018 esac
7019 case "$otherlibdirs" in
7020 ' ') val=$undef ;;
7021 *)      val=$define ;;
7022 esac
7023 set d_perl_otherlibdirs
7024 eval $setvar
7025
7026 : Cruising for prototypes
7027 echo " "
7028 echo "Checking out function prototypes..." >&4
7029 $cat >prototype.c <<'EOCP'
7030 int main(int argc, char *argv[]) {
7031         exit(0);}
7032 EOCP
7033 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7034         echo "Your C compiler appears to support function prototypes."
7035         val="$define"
7036 else
7037         echo "Your C compiler doesn't seem to understand function prototypes."
7038         val="$undef"
7039 fi
7040 set prototype
7041 eval $setvar
7042 $rm -f prototype*
7043
7044 case "$prototype" in
7045 "$define") ;;
7046 *)      ansi2knr='ansi2knr'
7047         echo " "
7048         cat <<EOM >&4
7049
7050 $me:  FATAL ERROR:
7051 This version of $package can only be compiled by a compiler that 
7052 understands function prototypes.  Unfortunately, your C compiler 
7053         $cc $ccflags
7054 doesn't seem to understand them.  Sorry about that.
7055
7056 If GNU cc is available for your system, perhaps you could try that instead.  
7057
7058 Eventually, we hope to support building Perl with pre-ANSI compilers.
7059 If you would like to help in that effort, please contact <perlbug@perl.org>.
7060
7061 Aborting Configure now.
7062 EOM
7063         exit 2
7064         ;;
7065 esac
7066
7067 : determine where public executables go
7068 echo " "
7069 set dflt bin bin
7070 eval $prefixit
7071 fn=d~
7072 rp='Pathname where the public executables will reside?'
7073 . ./getfile
7074 if $test "X$ansexp" != "X$binexp"; then
7075         installbin=''
7076 fi
7077 bin="$ans"
7078 binexp="$ansexp"
7079 : Change installation prefix, if necessary.
7080 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
7081 if $test X"$prefix" != X"$installprefix"; then
7082         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
7083 else
7084         installbin="$binexp"
7085 fi
7086
7087 echo " "
7088 case "$extras" in
7089 '') dflt='n';;
7090 *) dflt='y';;
7091 esac
7092 cat <<EOM
7093 Perl can be built with extra modules or bundles of modules which
7094 will be fetched from the CPAN and installed alongside Perl.
7095
7096 Notice that you will need access to the CPAN; either via the Internet,
7097 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7098 be asked later to configure the CPAN.pm module which will in turn do
7099 the installation of the rest of the extra modules or bundles.)
7100
7101 Notice also that if the modules require any external software such as
7102 libraries and headers (the libz library and the zlib.h header for the
7103 Compress::Zlib module, for example) you MUST have any such software
7104 already installed, this configuration process will NOT install such
7105 things for you.
7106
7107 If this doesn't make any sense to you, just accept the default '$dflt'.
7108 EOM
7109 rp='Install any extra modules (y or n)?'
7110 . ./myread
7111 case "$ans" in
7112 y|Y)
7113         cat <<EOM
7114
7115 Please list any extra modules or bundles to be installed from CPAN,
7116 with spaces between the names.  The names can be in any format the
7117 'install' command of CPAN.pm will understand.  (Answer 'none',
7118 without the quotes, to install no extra modules or bundles.)
7119 EOM
7120         rp='Extras?'
7121         dflt="$extras"
7122         . ./myread
7123         extras="$ans"
7124 esac
7125 case "$extras" in
7126 ''|'none')
7127         val=''
7128         $rm -f ../extras.lst
7129         ;;
7130 *)      echo "(Saving the list of extras for later...)"
7131         echo "$extras" > ../extras.lst
7132         val="'$extras'"
7133         ;;
7134 esac
7135 set extras
7136 eval $setvar
7137 echo " "
7138
7139 : Find perl5.005 or later.
7140 echo "Looking for a previously installed perl5.005 or later... "
7141 case "$perl5" in
7142 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
7143                 : Check if this perl is recent and can load a simple module
7144                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7145                         perl5=$tdir/perl
7146                         break;
7147                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7148                         perl5=$tdir/perl5
7149                         break;
7150                 fi
7151         done
7152         ;;
7153 *)      perl5="$perl5"
7154         ;;
7155 esac
7156 case "$perl5" in
7157 '')     echo "None found.  That's ok.";;
7158 *)      echo "Using $perl5." ;;
7159 esac
7160
7161 : Determine list of previous versions to include in @INC
7162 $cat > getverlist <<EOPL
7163 #!$perl5 -w
7164 use File::Basename;
7165 \$api_versionstring = "$api_versionstring";
7166 \$version = "$version";
7167 \$stem = "$sitelib_stem";
7168 \$archname = "$archname";
7169 EOPL
7170         $cat >> getverlist <<'EOPL'
7171 # Can't have leading @ because metaconfig interprets it as a command!
7172 ;@inc_version_list=();
7173 # XXX Redo to do opendir/readdir? 
7174 if (-d $stem) {
7175     chdir($stem);
7176     ;@candidates = glob("5.*");
7177 }
7178 else {
7179     ;@candidates = ();
7180 }
7181
7182 # XXX ToDo:  These comparisons must be reworked when two-digit
7183 # subversions come along, so that 5.7.10 compares as greater than
7184 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
7185 # widespread that we can use the built-in version vectors rather
7186 # than reinventing them here.  For 5.6.0, however, we must
7187 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
7188 foreach $d (@candidates) {
7189     if ($d lt $version) {
7190         if ($d ge $api_versionstring) {
7191             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7192         }
7193         elsif ($d ge "5.005") {
7194             unshift(@inc_version_list, grep { -d } $d);
7195         }
7196     }
7197     else {
7198         # Skip newer version.  I.e. don't look in
7199         # 5.7.0 if we're installing 5.6.1.
7200     }
7201 }
7202
7203 if (@inc_version_list) {
7204     print join(' ', @inc_version_list);
7205 }
7206 else {
7207     # Blank space to preserve value for next Configure run.
7208     print " ";
7209 }
7210 EOPL
7211 chmod +x getverlist
7212 case "$inc_version_list" in
7213 '')     if test -x "$perl5$exe_ext"; then
7214                 dflt=`$perl5 getverlist`
7215         else
7216                 dflt='none'
7217         fi
7218         ;;
7219 $undef) dflt='none' ;;
7220 *)  eval dflt=\"$inc_version_list\" ;;
7221 esac
7222 case "$dflt" in
7223 ''|' ') dflt=none ;;
7224 esac
7225 case "$dflt" in
7226 5.005) case "$bincompat5005" in
7227        $define|true|[yY]*) ;;
7228        *) dflt=none ;;
7229        esac
7230        ;;
7231 esac
7232 $cat <<'EOM'
7233
7234 In order to ease the process of upgrading, this version of perl 
7235 can be configured to use modules built and installed with earlier 
7236 versions of perl that were installed under $prefix.  Specify here
7237 the list of earlier versions that this version of perl should check.
7238 If Configure detected no earlier versions of perl installed under
7239 $prefix, then the list will be empty.  Answer 'none' to tell perl
7240 to not search earlier versions.
7241
7242 The default should almost always be sensible, so if you're not sure,
7243 just accept the default.
7244 EOM
7245
7246 rp='List of earlier versions to include in @INC?'
7247 . ./myread
7248 case "$ans" in
7249 [Nn]one|''|' ') inc_version_list=' ' ;;
7250 *) inc_version_list="$ans" ;;
7251 esac
7252 case "$inc_version_list" in
7253 ''|' ') 
7254         inc_version_list_init='0';;
7255 *)      inc_version_list_init=`echo $inc_version_list |
7256                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7257         ;;
7258 esac
7259 $rm -f getverlist
7260
7261 : determine whether to install perl also as /usr/bin/perl
7262
7263 echo " "
7264 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7265         $cat <<EOM
7266 Many scripts expect perl to be installed as /usr/bin/perl.
7267 I can install the perl you are about to compile also as /usr/bin/perl
7268 (in addition to $installbin/perl).
7269 EOM
7270         case "$installusrbinperl" in
7271         "$undef"|[nN]*) dflt='n';;
7272         *)              dflt='y';;
7273         esac
7274         rp="Do you want to install perl as /usr/bin/perl?"
7275         . ./myread
7276         case "$ans" in
7277         [yY]*)  val="$define";;
7278         *)      val="$undef" ;;
7279         esac
7280 else
7281         val="$undef"
7282 fi
7283 set installusrbinperl
7284 eval $setvar
7285
7286 : see if dld is available
7287 set dld.h i_dld
7288 eval $inhdr
7289
7290 : see if dlopen exists
7291 xxx_runnm="$runnm"
7292 runnm=false
7293 set dlopen d_dlopen
7294 eval $inlibc
7295 runnm="$xxx_runnm"
7296
7297 : determine which dynamic loading, if any, to compile in
7298 echo " "
7299 dldir="ext/DynaLoader"
7300 case "$usedl" in
7301 $define|y|true)
7302         dflt='y'
7303         usedl="$define"
7304         ;;
7305 $undef|n|false)
7306         dflt='n'
7307         usedl="$undef"
7308         ;;
7309 *) 
7310         dflt='n'
7311         case "$d_dlopen" in
7312             $define) dflt='y' ;;
7313         esac
7314         case "$i_dld" in
7315             $define) dflt='y' ;;
7316         esac
7317         : Does a dl_xxx.xs file exist for this operating system
7318         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7319         ;;
7320 esac
7321 rp="Do you wish to use dynamic loading?"
7322 . ./myread
7323 usedl="$ans"
7324 case "$ans" in
7325 y*) usedl="$define"
7326         case "$dlsrc" in
7327         '')
7328                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7329                         dflt="$dldir/dl_${osname}.xs"
7330                 elif $test "$d_dlopen" = "$define" ; then
7331                         dflt="$dldir/dl_dlopen.xs"
7332                 elif $test "$i_dld" = "$define" ; then
7333                         dflt="$dldir/dl_dld.xs"
7334                 else
7335                         dflt=''
7336                 fi
7337                 ;;
7338         *)      dflt="$dldir/$dlsrc"
7339                 ;;
7340         esac
7341     echo "The following dynamic loading files are available:"
7342         : Can not go over to $dldir because getfile has path hard-coded in.
7343         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7344         rp="Source file to use for dynamic loading"
7345         fn="fne"
7346         gfpth="$src"
7347         . ./getfile
7348         usedl="$define"
7349         : emulate basename
7350         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7351
7352         $cat << EOM
7353
7354 Some systems may require passing special flags to $cc -c to
7355 compile modules that will be used to create a shared library.
7356 To use no flags, say "none".
7357
7358 EOM
7359     case "$cccdlflags" in
7360     '') case "$gccversion" in
7361                 '') case "$osname" in
7362                         hpux)   dflt='+z' ;;
7363                         next)   dflt='none' ;;
7364                         irix*)  dflt='-KPIC' ;;
7365                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7366                         sunos)  dflt='-pic' ;;
7367                         *)      dflt='none' ;;
7368                     esac
7369                         ;;
7370                 *)  case "$osname" in
7371                         darwin) dflt='none' ;;
7372                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7373                         *)      dflt='-fpic' ;;
7374                     esac ;;
7375             esac ;;
7376         ' ') dflt='none' ;;
7377     *)  dflt="$cccdlflags" ;;
7378     esac
7379     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7380     . ./myread
7381     case "$ans" in
7382     none) cccdlflags=' ' ;;
7383     *) cccdlflags="$ans" ;;
7384     esac
7385
7386     cat << EOM
7387
7388 Some systems use ld to create libraries that can be dynamically loaded,
7389 while other systems (such as those using ELF) use $cc.
7390
7391 EOM
7392         case "$ld" in
7393         '')     $cat >try.c <<'EOM'
7394 /* Test for whether ELF binaries are produced */
7395 #include <fcntl.h>
7396 #include <stdlib.h>
7397 int main() {
7398         char b[4];
7399         int i = open("a.out",O_RDONLY);
7400         if(i == -1) 
7401                 exit(1); /* fail */
7402         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7403                 exit(0); /* succeed (yes, it's ELF) */
7404         else
7405                 exit(1); /* fail */
7406 }
7407 EOM
7408                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7409                         cat <<EOM
7410 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7411 EOM
7412                         dflt="$cc"
7413                 else
7414                         echo "I'll use ld to build dynamic libraries."
7415                         dflt='ld'
7416                 fi
7417                 rm -f try.c a.out
7418                 ;;
7419         *)      dflt="$ld"
7420                 ;;
7421         esac
7422
7423     rp="What command should be used to create dynamic libraries?"
7424     . ./myread
7425         ld="$ans"
7426
7427     cat << EOM
7428
7429 Some systems may require passing special flags to $ld to create a
7430 library that can be dynamically loaded.  If your ld flags include
7431 -L/other/path options to locate libraries outside your loader's normal
7432 search path, you may need to specify those -L options here as well.  To
7433 use no flags, say "none".
7434
7435 EOM
7436     case "$lddlflags" in
7437     '') case "$osname" in
7438                         beos) dflt='-nostart' ;;
7439                         hpux) dflt='-b';
7440                               case "$gccversion" in
7441                               '') dflt="$dflt +vnocompatwarnings" ;;
7442                               esac
7443                               ;;        
7444                         linux|irix*)    dflt='-shared' ;;
7445                         next)  dflt='none' ;;
7446                         solaris) dflt='-G' ;;
7447                         sunos) dflt='-assert nodefinitions' ;;
7448                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7449                 *)     dflt='none' ;;
7450                         esac
7451                         ;;
7452     *) dflt="$lddlflags" ;;
7453     esac
7454
7455         : Try to guess additional flags to pick up local libraries.
7456         : Be careful not to append to a plain 'none'
7457         case "$dflt" in
7458         none) dflt='' ;;
7459         esac
7460         for thisflag in $ldflags; do
7461                 case "$thisflag" in
7462                 -L*|-R*|-Wl,-R*)
7463                         case " $dflt " in
7464                         *" $thisflag "*) ;;
7465                         *) dflt="$dflt $thisflag" ;;
7466                         esac
7467                         ;;
7468                 esac
7469         done
7470
7471         case "$dflt" in
7472         ''|' ') dflt='none' ;;
7473         esac
7474
7475     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7476     . ./myread
7477     case "$ans" in
7478     none) lddlflags=' ' ;;
7479     *) lddlflags="$ans" ;;
7480     esac
7481
7482         cat <<EOM
7483
7484 Some systems may require passing special flags to $cc to indicate that
7485 the resulting executable will use dynamic linking.  To use no flags,
7486 say "none".
7487
7488 EOM
7489     case "$ccdlflags" in
7490     '') case "$osname" in
7491                 hpux)   dflt='-Wl,-E' ;;
7492                 linux)  dflt='-rdynamic' ;;
7493                 next)   dflt='none' ;;
7494                 sunos)  dflt='none' ;;
7495                 *)      dflt='none' ;;
7496             esac ;;
7497     ' ')  dflt='none' ;;
7498     *)  dflt="$ccdlflags" ;;
7499     esac
7500     rp="Any special flags to pass to $cc to use dynamic linking?"
7501     . ./myread
7502     case "$ans" in
7503     none) ccdlflags=' ' ;;
7504     *) ccdlflags="$ans" ;;
7505     esac
7506     ;;
7507 *)  usedl="$undef"
7508         ld='ld'
7509     dlsrc='dl_none.xs'
7510     lddlflags=''
7511     ccdlflags=''
7512     ;;
7513 esac
7514
7515 also=''
7516 case "$usedl" in
7517 $undef)
7518         # No dynamic loading being used, so don't bother even to prompt.
7519         useshrplib='false'
7520         ;;
7521 *)      case "$useshrplib" in
7522         '')     case "$osname" in
7523                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7524                         dflt=y
7525                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7526                         ;;
7527                 next*)
7528                         case "$osvers" in
7529                         4*)     dflt=y
7530                                 also='Building a shared libperl is needed for MAB support.'
7531                                 ;;
7532                         *)      dflt=n
7533                                 ;;
7534                         esac
7535                         ;;
7536                 *)      dflt=n
7537                         ;;
7538                 esac
7539                 ;;
7540         $define|true|[Yy]*)
7541                 dflt=y
7542                 ;;
7543         *)      dflt=n
7544                 ;;
7545         esac
7546         $cat << EOM
7547
7548 The perl executable is normally obtained by linking perlmain.c with
7549 libperl${_a}, any static extensions (usually just DynaLoader), and
7550 any other libraries needed on this system (such as -lm, etc.).  Since
7551 your system supports dynamic loading, it is probably possible to build
7552 a shared libperl.$so.  If you will have more than one executable linked
7553 to libperl.$so, this will significantly reduce the size of each
7554 executable, but it may have a noticeable affect on performance.  The
7555 default is probably sensible for your system.
7556 $also
7557
7558 EOM
7559         rp="Build a shared libperl.$so (y/n)"
7560         . ./myread
7561         case "$ans" in
7562         true|$define|[Yy]*)
7563                 useshrplib='true'  ;;
7564         *)      useshrplib='false' ;;
7565         esac
7566         ;;
7567 esac
7568
7569 case "$useshrplib" in
7570 true)
7571         case "$libperl" in
7572         '')
7573                 # Figure out a good name for libperl.so.  Since it gets stored in
7574                 # a version-specific architecture-dependent library, the version
7575                 # number isn't really that important, except for making cc/ld happy.
7576                 #
7577                 # A name such as libperl.so.3.1
7578                 majmin="libperl.$so.$patchlevel.$subversion"
7579                 # A name such as libperl.so.301
7580                 majonly=`echo $patchlevel $subversion |
7581                         $awk '{printf "%d%02d", $1, $2}'`
7582                 majonly=libperl.$so.$majonly
7583                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7584                 # rely on figuring it out from the naming of libc.
7585                 case "${osname}${osvers}" in
7586                 next4*)
7587                         dflt=libperl.5.$so
7588                         # XXX How handle the --version stuff for MAB?
7589                         ;;
7590                 linux*)  # ld won't link with a bare -lperl otherwise.
7591                         dflt=libperl.$so
7592                         ;;
7593                 cygwin*) # ld links against an importlib
7594                         dflt=libperl$lib_ext
7595                         ;;
7596                 *)      # Try to guess based on whether libc has major.minor.
7597                         case "$libc" in
7598                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7599                         *libc.$so.[0-9]*) dflt=$majonly ;;
7600                         *)      dflt=libperl.$so ;;
7601                         esac
7602                         ;;
7603                 esac
7604                 ;;
7605         *)      dflt=$libperl
7606                 ;;
7607         esac
7608         cat << EOM
7609
7610 I need to select a good name for the shared libperl.  If your system uses
7611 library names with major and minor numbers, then you might want something
7612 like $majmin.  Alternatively, if your system uses a single version
7613 number for shared libraries, then you might want to use $majonly.
7614 Or, your system might be quite happy with a simple libperl.$so.
7615
7616 Since the shared libperl will get installed into a version-specific
7617 architecture-dependent directory, the version number of the shared perl
7618 library probably isn't important, so the default should be o.k.
7619
7620 EOM
7621         rp='What name do you want to give to the shared libperl?'
7622         . ./myread
7623         libperl=$ans
7624         echo "Ok, I'll use $libperl"
7625         ;;
7626 *)
7627         libperl="libperl${_a}"
7628         ;;
7629 esac
7630
7631 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7632 case "$shrpdir" in
7633 '') ;;
7634 *)      $cat >&4 <<EOM
7635 WARNING:  Use of the shrpdir variable for the installation location of
7636 the shared $libperl is not supported.  It was never documented and
7637 will not work in this version.  Let me (perlbug@perl.org)
7638 know of any problems this may cause.
7639
7640 EOM
7641         case "$shrpdir" in
7642         "$archlibexp/CORE")
7643                 $cat >&4 <<EOM
7644 But your current setting of $shrpdir is
7645 the default anyway, so it's harmless.
7646 EOM
7647                 ;;
7648         *)
7649                 $cat >&4 <<EOM
7650 Further, your current attempted setting of $shrpdir
7651 conflicts with the value of $archlibexp/CORE
7652 that installperl will use.
7653 EOM
7654                 ;;
7655         esac
7656         ;;
7657 esac
7658
7659 # How will the perl executable find the installed shared $libperl?
7660 # Add $xxx to ccdlflags.
7661 # If we can't figure out a command-line option, use $shrpenv to
7662 # set env LD_RUN_PATH.  The main perl makefile uses this.
7663 shrpdir=$archlibexp/CORE
7664 xxx=''
7665 tmp_shrpenv=''
7666 if "$useshrplib"; then
7667     case "$osname" in 
7668         aix)
7669                 # We'll set it in Makefile.SH...
7670                 ;;
7671         solaris)
7672                 xxx="-R $shrpdir"
7673                 ;;
7674         freebsd|netbsd)
7675                 xxx="-Wl,-R$shrpdir"
7676                 ;;
7677         bsdos|linux|irix*|dec_osf)
7678                 xxx="-Wl,-rpath,$shrpdir"
7679                 ;;
7680         next)
7681                 # next doesn't like the default...
7682                 ;;
7683         beos)
7684                 # beos doesn't like the default, either.
7685                 ;;
7686         hpux*)
7687                 # hpux doesn't like the default, either.
7688                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7689                 ;;
7690         *)
7691                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7692                 ;;
7693         esac
7694         case "$xxx" in
7695         '') ;;
7696         *)      
7697                 # Only add $xxx if it isn't already in ccdlflags.
7698                 case " $ccdlflags " in
7699                 *" $xxx "*)     ;;
7700                 *)      ccdlflags="$ccdlflags $xxx"
7701                         cat <<EOM >&4
7702
7703 Adding $xxx to the flags
7704 passed to $ld so that the perl executable will find the 
7705 installed shared $libperl.
7706
7707 EOM
7708                         ;;
7709                 esac
7710                 ;;
7711         esac
7712 fi
7713 # Fix ccdlflags in AIX for building external extensions.
7714 # (For building Perl itself bare -bE:perl.exp is needed,
7715 #  Makefile.SH takes care of this.)
7716 case "$osname" in
7717 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7718 esac
7719 # Respect a hint or command-line value.
7720 case "$shrpenv" in
7721 '') shrpenv="$tmp_shrpenv" ;;
7722 esac
7723 case "$ldlibpthname" in
7724 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7725 none)   ldlibpthname='' ;;
7726 esac
7727
7728 : determine where manual pages are on this system
7729 echo " "
7730 case "$sysman" in
7731 '') 
7732         syspath='/usr/share/man/man1 /usr/man/man1'
7733         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7734         syspath="$syspath /usr/man/u_man/man1"
7735         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7736         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7737         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7738         sysman=`./loc . /usr/man/man1 $syspath`
7739         ;;
7740 esac
7741 if $test -d "$sysman"; then
7742         echo "System manual is in $sysman." >&4
7743 else
7744         echo "Could not find manual pages in source form." >&4
7745 fi
7746
7747 : determine where manual pages go
7748 set man1dir man1dir none
7749 eval $prefixit
7750 $cat <<EOM
7751
7752 $spackage has manual pages available in source form.
7753 EOM
7754 case "$nroff" in
7755 nroff)
7756         echo "However, you don't have nroff, so they're probably useless to you."
7757         case "$man1dir" in
7758         '') man1dir="none";;
7759         esac;;
7760 esac
7761 echo "If you don't want the manual sources installed, answer 'none'."
7762 case "$man1dir" in
7763 ' ') dflt=none
7764         ;;
7765 '')
7766         lookpath="$prefixexp/share/man/man1"
7767         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7768         lookpath="$lookpath $prefixexp/man/p_man/man1"
7769         lookpath="$lookpath $prefixexp/man/u_man/man1"
7770         lookpath="$lookpath $prefixexp/man/man.1"
7771         case "$sysman" in
7772         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7773         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7774         esac
7775         set dflt
7776         eval $prefixup
7777         ;;
7778 *)  dflt="$man1dir"
7779         ;;
7780 esac
7781 echo " "
7782 fn=dn+~
7783 rp="Where do the main $spackage manual pages (source) go?"
7784 . ./getfile
7785 if $test "X$man1direxp" != "X$ansexp"; then
7786         installman1dir=''
7787 fi
7788 man1dir="$ans"
7789 man1direxp="$ansexp"
7790 case "$man1dir" in
7791 '')     man1dir=' '
7792         installman1dir='';;
7793 esac
7794
7795 : Change installation prefix, if necessary.
7796 if $test X"$prefix" != X"$installprefix"; then
7797         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7798 else
7799         installman1dir="$man1direxp"
7800 fi
7801
7802 : What suffix to use on installed man pages
7803
7804 case "$man1dir" in
7805 ' ')
7806         man1ext='0'
7807         ;;
7808 *)
7809         rp="What suffix should be used for the main $spackage man pages?"
7810         case "$man1ext" in
7811         '')     case "$man1dir" in
7812                 *1)  dflt=1 ;;
7813                 *1p) dflt=1p ;;
7814                 *1pm) dflt=1pm ;;
7815                 *l) dflt=l;;
7816                 *n) dflt=n;;
7817                 *o) dflt=o;;
7818                 *p) dflt=p;;
7819                 *C) dflt=C;;
7820                 *L) dflt=L;;
7821                 *L1) dflt=L1;;
7822                 *) dflt=1;;
7823                 esac
7824                 ;;
7825         *)      dflt="$man1ext";;
7826         esac
7827         . ./myread
7828         man1ext="$ans"
7829         ;;
7830 esac
7831
7832 : see if we can have long filenames
7833 echo " "
7834 first=123456789abcdef
7835 $rm -f $first
7836 if (echo hi >$first) 2>/dev/null; then
7837         if $test -f 123456789abcde; then
7838                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7839                 val="$undef"
7840         else
7841                 echo 'You can have filenames longer than 14 characters.'>&4
7842                 val="$define"
7843         fi
7844 else
7845         $cat <<'EOM'
7846 You can't have filenames longer than 14 chars.
7847 You can't even think about them!
7848 EOM
7849         val="$undef"
7850 fi 
7851 set d_flexfnam
7852 eval $setvar
7853 $rm -rf 123456789abcde*
7854
7855 : determine where library module manual pages go
7856 set man3dir man3dir none
7857 eval $prefixit
7858 $cat <<EOM
7859
7860 $spackage has manual pages for many of the library modules.
7861 EOM
7862
7863 case "$nroff" in
7864 nroff)
7865         $cat <<'EOM'
7866 However, you don't have nroff, so they're probably useless to you.
7867 EOM
7868         case "$man3dir" in
7869         '') man3dir="none";;
7870         esac;;
7871 esac
7872
7873 case "$d_flexfnam" in
7874 undef)
7875         $cat <<'EOM'
7876 However, your system can't handle the long file names like File::Basename.3. 
7877 EOM
7878         case "$man3dir" in
7879         '') man3dir="none";;
7880         esac;;
7881 esac
7882
7883 echo "If you don't want the manual sources installed, answer 'none'."
7884 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7885 case "$man3dir" in
7886 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7887         if $test -d "$privlib/man/man3"; then
7888                 cat <<EOM >&4
7889
7890 WARNING:  Previous versions of perl installed man3 pages into
7891 $privlib/man/man3.  This version will suggest a 
7892 new default of $dflt.  
7893 EOM
7894                 tdflt=$dflt
7895                 dflt='n'
7896                 rp='Do you wish to preserve the old behavior?(y/n)'
7897                 . ./myread
7898                 case "$ans" in
7899                 y*) dflt="$privlib/man/man3" ;;
7900                 *)  dflt=$tdflt ;;
7901                 esac
7902     fi
7903         ;;
7904 *)      dflt="$man3dir" ;;
7905 esac
7906 case "$dflt" in
7907 ' ') dflt=none ;;
7908 esac
7909 echo " "
7910 fn=dn+~
7911 rp="Where do the $package library man pages (source) go?"
7912 . ./getfile
7913 man3dir="$ans"
7914 man3direxp="$ansexp"
7915 case "$man3dir" in
7916 '')     man3dir=' '
7917         installman3dir='';;
7918 esac
7919
7920 : Change installation prefix, if necessary.
7921 if $test X"$prefix" != X"$installprefix"; then
7922         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7923 else
7924         installman3dir="$man3direxp"
7925 fi
7926
7927 : What suffix to use on installed man pages
7928 case "$man3dir" in
7929 ' ')
7930         man3ext='0'
7931         ;;
7932 *)
7933         rp="What suffix should be used for the $package library man pages?"
7934         case "$man3ext" in
7935         '')     case "$man3dir" in
7936                 *3)  dflt=3 ;;
7937                 *3p) dflt=3p ;;
7938                 *3pm) dflt=3pm ;;
7939                 *l) dflt=l;;
7940                 *n) dflt=n;;
7941                 *o) dflt=o;;
7942                 *p) dflt=p;;
7943                 *C) dflt=C;;
7944                 *L) dflt=L;;
7945                 *L3) dflt=L3;;
7946                 *) dflt=3;;
7947                 esac
7948                 ;;
7949         *)      dflt="$man3ext";;
7950         esac
7951         . ./myread
7952         man3ext="$ans"
7953         ;;
7954 esac
7955
7956 : see if we have to deal with yellow pages, now NIS.
7957 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
7958         if $test -f /usr/etc/nibindd; then
7959                 echo " "
7960                 echo "I'm fairly confident you're on a NeXT."
7961                 echo " "
7962                 rp='Do you get the hosts file via NetInfo?'
7963                 dflt=y
7964                 case "$hostcat" in
7965                 nidump*) ;;
7966                 '') ;;
7967                 *) dflt=n;;
7968                 esac
7969                 . ./myread
7970                 case "$ans" in
7971                 y*) hostcat='nidump hosts .';;
7972                 *)      case "$hostcat" in
7973                         nidump*) hostcat='';;
7974                         esac
7975                         ;;
7976                 esac
7977         fi
7978         case "$hostcat" in
7979         nidump*) ;;
7980         *)
7981                 case "$hostcat" in
7982                 *ypcat*) dflt=y;;
7983                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7984                                 dflt=y
7985                         else
7986                                 dflt=n
7987                         fi;;
7988                 *) dflt=n;;
7989                 esac
7990                 echo " "
7991                 rp='Are you getting the hosts file via yellow pages?'
7992                 . ./myread
7993                 case "$ans" in
7994                 y*) hostcat='ypcat hosts';;
7995                 *) hostcat='cat /etc/hosts';;
7996                 esac
7997                 ;;
7998         esac
7999 fi
8000 case "$hostcat" in
8001 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8002 esac
8003 case "$groupcat" in
8004 '') test -f /etc/group && groupcat='cat /etc/group';;
8005 esac
8006 case "$passcat" in
8007 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8008 esac
8009
8010 : now get the host name
8011 echo " "
8012 echo "Figuring out host name..." >&4
8013 case "$myhostname" in
8014 '') cont=true
8015         echo 'Maybe "hostname" will work...'
8016         if tans=`sh -c hostname 2>&1` ; then
8017                 myhostname=$tans
8018                 phostname=hostname
8019                 cont=''
8020         fi
8021         ;;
8022 *) cont='';;
8023 esac
8024 if $test "$cont"; then
8025         if ./xenix; then
8026                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8027                 if tans=`cat /etc/systemid 2>&1` ; then
8028                         myhostname=$tans
8029                         phostname='cat /etc/systemid'
8030                         echo "Whadyaknow.  Xenix always was a bit strange..."
8031                         cont=''
8032                 fi
8033         elif $test -r /etc/systemid; then
8034                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8035         fi
8036 fi
8037 if $test "$cont"; then
8038         echo 'No, maybe "uuname -l" will work...'
8039         if tans=`sh -c 'uuname -l' 2>&1` ; then
8040                 myhostname=$tans
8041                 phostname='uuname -l'
8042         else
8043                 echo 'Strange.  Maybe "uname -n" will work...'
8044                 if tans=`sh -c 'uname -n' 2>&1` ; then
8045                         myhostname=$tans
8046                         phostname='uname -n'
8047                 else
8048                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8049                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8050                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8051                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8052                         else
8053                                 case "$myhostname" in
8054                                 '') echo "Does this machine have an identity crisis or something?"
8055                                         phostname='';;
8056                                 *)
8057                                         echo "Well, you said $myhostname before..."
8058                                         phostname='echo $myhostname';;
8059                                 esac
8060                         fi
8061                 fi
8062         fi
8063 fi
8064 case "$myhostname" in
8065 '') myhostname=noname ;;
8066 esac
8067 : you do not want to know about this
8068 set $myhostname
8069 myhostname=$1
8070
8071 : verify guess
8072 if $test "$myhostname" ; then
8073         dflt=y
8074         rp='Your host name appears to be "'$myhostname'".'" Right?"
8075         . ./myread
8076         case "$ans" in
8077         y*) ;;
8078         *) myhostname='';;
8079         esac
8080 fi
8081
8082 : bad guess or no guess
8083 while $test "X$myhostname" = X ; do
8084         dflt=''
8085         rp="Please type the (one word) name of your host:"
8086         . ./myread
8087         myhostname="$ans"
8088 done
8089
8090 : translate upper to lower if necessary
8091 case "$myhostname" in
8092 *[A-Z]*)
8093         echo "(Normalizing case in your host name)"
8094         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8095         ;;
8096 esac
8097
8098 case "$myhostname" in
8099 *.*)
8100         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8101         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8102         echo "(Trimming domain name from host name--host name is now $myhostname)"
8103         ;;
8104 *) case "$mydomain" in
8105         '')
8106                 {
8107                         test "X$hostcat" = "Xypcat hosts" &&
8108                         ypmatch "$myhostname" hosts 2>/dev/null |\
8109                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8110                         $test -s hosts
8111                 } || {
8112                         test "X$hostcat" != "X" &&
8113                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8114                                         /[       ]$myhostname[  . ]/p" > hosts
8115                 }
8116                 tmp_re="[       . ]"
8117                 if $test -f hosts; then
8118                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8119                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8120                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8121                                 hosts | $sort | $uniq | \
8122                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8123                         case `$echo X$dflt` in
8124                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8125                                 dflt=.
8126                                 ;;
8127                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8128                                 ;;
8129                         esac
8130                 else
8131                         echo "(I cannot locate a hosts database anywhere)"
8132                         dflt=.
8133                 fi
8134                 case "$dflt" in
8135                 .)
8136                         tans=`./loc resolv.conf X /etc /usr/etc`
8137                         if $test -f "$tans"; then
8138                                 echo "(Attempting domain name extraction from $tans)"
8139                                 dflt=.`$sed -n -e 's/   / /g' \
8140                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8141                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8142                                 case "$dflt" in
8143                                 .) dflt=.`$sed -n -e 's/        / /g' \
8144                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8145                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8146                                         ;;
8147                                 esac
8148                         fi
8149                         ;;
8150                 esac
8151                 case "$dflt" in
8152                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8153                         dflt=.`sh -c domainname 2>/dev/null`
8154                         case "$dflt" in
8155                         '') dflt='.';;
8156                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8157                         esac
8158                         ;;
8159                 esac
8160                 case "$dflt$osname" in
8161                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8162                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8163                         ;;
8164                 esac
8165                 case "$dflt" in
8166                 .) echo "(Lost all hope -- silly guess then)"
8167                         dflt='.nonet'
8168                         ;;
8169                 esac
8170                 $rm -f hosts
8171                 ;;
8172         *) dflt="$mydomain";;
8173         esac;;
8174 esac
8175 echo " "
8176 rp="What is your domain name?"
8177 . ./myread
8178 tans="$ans"
8179 case "$ans" in
8180 '') ;;
8181 .*) ;;
8182 *) tans=".$tans";;
8183 esac
8184 mydomain="$tans"
8185
8186 : translate upper to lower if necessary
8187 case "$mydomain" in
8188 *[A-Z]*)
8189         echo "(Normalizing case in your domain name)"
8190         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8191         ;;
8192 esac
8193
8194 : a little sanity check here
8195 case "$phostname" in
8196 '') ;;
8197 *)
8198         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8199         $myhostname$mydomain|$myhostname) ;;
8200         *)
8201                 case "$phostname" in
8202                 sed*)
8203                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8204                         ;;
8205                 *)
8206                         echo "(That doesn't agree with your $phostname command, by the way.)"
8207                         ;;
8208                 esac
8209         ;;
8210         esac
8211         ;;
8212 esac
8213
8214 $cat <<EOM
8215
8216 I need to get your e-mail address in Internet format if possible, i.e.
8217 something like user@host.domain. Please answer accurately since I have
8218 no easy means to double check it. The default value provided below
8219 is most probably close to reality but may not be valid from outside
8220 your organization...
8221
8222 EOM
8223 cont=x
8224 while test "$cont"; do
8225         case "$cf_email" in
8226         '') dflt="$cf_by@$myhostname$mydomain";;
8227         *) dflt="$cf_email";;
8228         esac
8229         rp='What is your e-mail address?'
8230         . ./myread
8231         cf_email="$ans"
8232         case "$cf_email" in
8233         *@*.*) cont='' ;;
8234         *)
8235                 rp='Address does not look like an Internet one.  Use it anyway?'
8236                 case "$fastread" in
8237                 yes) dflt=y ;;
8238                 *) dflt=n ;;
8239                 esac
8240                 . ./myread
8241                 case "$ans" in
8242                 y*) cont='' ;;
8243                 *) echo " " ;;
8244                 esac
8245                 ;;
8246         esac
8247 done
8248
8249 $cat <<EOM
8250
8251 If you or somebody else will be maintaining perl at your site, please
8252 fill in the correct e-mail address here so that they may be contacted
8253 if necessary. Currently, the "perlbug" program included with perl
8254 will send mail to this address in addition to perlbug@perl.org. You may
8255 enter "none" for no administrator.
8256
8257 EOM
8258 case "$perladmin" in
8259 '') dflt="$cf_email";;
8260 *) dflt="$perladmin";;
8261 esac
8262 rp='Perl administrator e-mail address'
8263 . ./myread
8264 perladmin="$ans"
8265
8266 : determine whether to only install version-specific parts.
8267 echo " "
8268 $cat <<EOM
8269 Do you want to install only the version-specific parts of the perl
8270 distribution?  Usually you do *not* want to do this.
8271 EOM
8272 case "$versiononly" in
8273 "$define"|[Yy]*|true) dflt='y' ;;
8274 *) dflt='n';
8275 esac
8276 rp="Do you want to install only the version-specific parts of perl?"
8277 . ./myread
8278 case "$ans" in
8279 [yY]*)  val="$define";;
8280 *)      val="$undef" ;;
8281 esac
8282 set versiononly
8283 eval $setvar
8284
8285 : figure out how to guarantee perl startup
8286 case "$startperl" in
8287 '')
8288         case "$sharpbang" in
8289         *!)
8290                 $cat <<EOH
8291
8292 I can use the #! construct to start perl on your system. This will
8293 make startup of perl scripts faster, but may cause problems if you
8294 want to share those scripts and perl is not in a standard place
8295 ($binexp/perl) on all your platforms. The alternative is to force
8296 a shell by starting the script with a single ':' character.
8297
8298 EOH
8299                 case "$versiononly" in
8300                 "$define")      dflt="$binexp/perl$version";;  
8301                 *)              dflt="$binexp/perl";;
8302                 esac
8303                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8304                 . ./myread
8305                 case "$ans" in
8306                 none)   startperl=": # use perl";;
8307                 *)      startperl="#!$ans"
8308                         if $test 30 -lt `echo "$ans" | wc -c`; then
8309                                 $cat >&4 <<EOM
8310
8311 WARNING:  Some systems limit the #! command to 32 characters.
8312 If you experience difficulty running Perl scripts with #!, try
8313 installing Perl in a directory with a shorter pathname.
8314
8315 EOM
8316                         fi ;;
8317                 esac
8318                 ;;
8319         *) startperl=": # use perl"
8320                 ;;
8321         esac
8322         ;;
8323 esac
8324 echo "I'll use $startperl to start perl scripts."
8325
8326 : figure best path for perl in scripts
8327 case "$perlpath" in
8328 '')
8329         case "$versiononly" in
8330         "$define")      perlpath="$binexp/perl$version";;
8331         *)              perlpath="$binexp/perl";;
8332         esac
8333         case "$startperl" in
8334         *!*) ;;
8335         *)
8336                 $cat <<EOH
8337
8338 I will use the "eval 'exec'" idiom to start Perl on your system.
8339 I can use the full path of your Perl binary for this purpose, but
8340 doing so may cause problems if you want to share those scripts and
8341 Perl is not always in a standard place ($binexp/perl).
8342
8343 EOH
8344                 dflt="$binexp/perl"
8345                 rp="What path shall I use in \"eval 'exec'\"?"
8346                 . ./myread
8347                 perlpath="$ans"
8348                 ;;
8349         esac
8350         ;;
8351 esac
8352 case "$startperl" in
8353 *!*)    ;;
8354 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8355 esac
8356
8357 : determine where public executable scripts go
8358 set scriptdir scriptdir
8359 eval $prefixit
8360 case "$scriptdir" in
8361 '')
8362         dflt="$bin"
8363         : guess some guesses
8364         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8365         $test -d /usr/share/bin     && dflt=/usr/share/bin
8366         $test -d /usr/local/script  && dflt=/usr/local/script
8367         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8368         $test -d $prefixexp/script  && dflt=$prefixexp/script
8369         set dflt
8370         eval $prefixup
8371         ;;
8372 *)  dflt="$scriptdir"
8373         ;;
8374 esac
8375 $cat <<EOM
8376  
8377 Some installations have a separate directory just for executable scripts so
8378 that they can mount it across multiple architectures but keep the scripts in
8379 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8380 Or you might just lump your scripts in with all your other executables.
8381  
8382 EOM
8383 fn=d~
8384 rp='Where do you keep publicly executable scripts?'
8385 . ./getfile
8386 if $test "X$ansexp" != "X$scriptdirexp"; then
8387         installscript=''
8388 fi
8389 scriptdir="$ans"
8390 scriptdirexp="$ansexp"
8391 : Change installation prefix, if necessary.
8392 if $test X"$prefix" != X"$installprefix"; then
8393         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8394 else
8395         installscript="$scriptdirexp"
8396 fi
8397
8398 : determine where add-on public executables go
8399 case "$sitebin" in
8400 '')     dflt=$siteprefix/bin ;;
8401 *)      dflt=$sitebin ;;
8402 esac
8403 fn=d~
8404 rp='Pathname where the add-on public executables should be installed?'
8405 . ./getfile
8406 sitebin="$ans"
8407 sitebinexp="$ansexp"
8408 : Change installation prefix, if necessary.
8409 if $test X"$prefix" != X"$installprefix"; then
8410         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8411 else
8412         installsitebin="$sitebinexp"
8413 fi
8414
8415 : define an is-a-typedef? function
8416 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8417 case "$inclist" in
8418 "") inclist="sys/types.h";;
8419 esac;
8420 eval "varval=\$$var";
8421 case "$varval" in
8422 "")
8423         $rm -f temp.c;
8424         for inc in $inclist; do
8425                 echo "#include <$inc>" >>temp.c;
8426         done;
8427         echo "#ifdef $type" >> temp.c;
8428         echo "printf(\"We have $type\");" >> temp.c;
8429         echo "#endif" >> temp.c;
8430         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8431         if $contains $type temp.E >/dev/null 2>&1; then
8432                 eval "$var=\$type";
8433         else
8434                 eval "$var=\$def";
8435         fi;
8436         $rm -f temp.?;;
8437 *) eval "$var=\$varval";;
8438 esac'
8439
8440 : define an is-a-typedef? function that prompts if the type is not available.
8441 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8442 case "$inclist" in
8443 "") inclist="sys/types.h";;
8444 esac;
8445 eval "varval=\$$var";
8446 case "$varval" in
8447 "")
8448         $rm -f temp.c;
8449         for inc in $inclist; do
8450                 echo "#include <$inc>" >>temp.c;
8451         done;
8452         echo "#ifdef $type" >> temp.c;
8453         echo "printf(\"We have $type\");" >> temp.c;
8454         echo "#endif" >> temp.c;
8455         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8456         echo " " ;
8457         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8458         if $contains $type temp.E >/dev/null 2>&1; then
8459                 echo "$type found." >&4;
8460                 eval "$var=\$type";
8461         else
8462                 echo "$type NOT found." >&4;
8463                 dflt="$def";
8464                 . ./myread ;
8465                 eval "$var=\$ans";
8466         fi;
8467         $rm -f temp.?;;
8468 *) eval "$var=\$varval";;
8469 esac'
8470
8471 : see what type lseek is declared as in the kernel
8472 rp="What is the type used for lseek's offset on this system?"
8473 set off_t lseektype long stdio.h sys/types.h
8474 eval $typedef_ask
8475
8476 echo " "
8477 echo "Checking to see how big your file offsets are..." >&4
8478 $cat >try.c <<EOCP
8479 #include <sys/types.h>
8480 #include <stdio.h>
8481 int main()
8482 {
8483     printf("%d\n", (int)sizeof($lseektype));
8484     return(0); 
8485 }
8486 EOCP
8487 set try
8488 if eval $compile_ok; then
8489         lseeksize=`$run ./try`
8490         echo "Your file offsets are $lseeksize bytes long."
8491 else
8492         dflt=$longsize
8493         echo " "
8494         echo "(I can't seem to compile the test program.  Guessing...)"
8495         rp="What is the size of your file offsets (in bytes)?"
8496         . ./myread
8497         lseeksize="$ans"
8498 fi
8499 $rm -f try.c try
8500
8501 : see what type file positions are declared as in the library
8502 rp="What is the type for file position used by fsetpos()?"
8503 set fpos_t fpostype long stdio.h sys/types.h
8504 eval $typedef_ask
8505
8506 echo " "
8507 case "$fpostype" in
8508 *_t) zzz="$fpostype"    ;;
8509 *)   zzz="fpos_t"       ;;
8510 esac
8511 echo "Checking the size of $zzz..." >&4 
8512 cat > try.c <<EOCP
8513 #include <sys/types.h>
8514 #include <stdio.h>
8515 int main() {
8516     printf("%d\n", (int)sizeof($fpostype));
8517     exit(0);
8518 }
8519 EOCP
8520 set try
8521 if eval $compile_ok; then
8522         yyy=`$run ./try`
8523         case "$yyy" in
8524         '')     fpossize=4
8525                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8526                 ;;
8527         *)      fpossize=$yyy
8528                 echo "Your $zzz is $fpossize bytes long."
8529                 ;;
8530         esac
8531 else
8532         dflt="$longsize"
8533         echo " " >&4
8534         echo "(I can't compile the test program.  Guessing...)" >&4
8535         rp="What is the size of your file positions (in bytes)?"
8536         . ./myread
8537         fpossize="$ans"
8538 fi
8539
8540
8541
8542 # Backward compatibility (uselfs is deprecated).
8543 case "$uselfs" in
8544 "$define"|true|[yY]*)
8545         cat <<EOM >&4
8546
8547 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8548 EOM
8549         uselargefiles="$define"
8550         ;;
8551 esac                          
8552
8553 case "$lseeksize:$fpossize" in
8554 8:8) cat <<EOM
8555
8556 You can have files larger than 2 gigabytes.
8557 EOM
8558    val="$define" ;;
8559 *)    case "$uselargefiles" in
8560    "$undef"|false|[nN]*) dflt='n' ;;
8561    *)   dflt='y' ;;
8562    esac
8563    cat <<EOM
8564
8565 Perl can be built to understand large files (files larger than 2 gigabytes)
8566 on some systems.  To do so, Configure can be run with -Duselargefiles.
8567
8568 If this doesn't make any sense to you, just accept the default '$dflt'.
8569 EOM
8570    rp='Try to understand large files, if available?'
8571    . ./myread
8572    case "$ans" in
8573    y|Y)         val="$define" ;;
8574    *)           val="$undef"  ;;
8575    esac
8576    ;;
8577 esac
8578 set uselargefiles
8579 eval $setvar
8580 case "$uselargefiles" in
8581 "$define")
8582 : Look for a hint-file generated 'call-back-unit'.  If the
8583 : user has specified that a large files perl is to be built,
8584 : we may need to set or change some other defaults.
8585         if $test -f uselargefiles.cbu; then
8586                 echo "Your platform has some specific hints for large file builds, using them..."
8587                 . ./uselargefiles.cbu
8588                 echo " "
8589                 echo "Rechecking to see how big your file offsets are..." >&4
8590                 $cat >try.c <<EOCP
8591 #include <sys/types.h>
8592 #include <stdio.h>
8593 int main()
8594 {
8595     printf("%d\n", (int)sizeof($lseektype));
8596     return(0); 
8597 }
8598 EOCP
8599                 set try
8600                 if eval $compile_ok; then
8601                         lseeksize=`$run ./try`
8602                         $echo "Your file offsets are now $lseeksize bytes long."
8603                 else
8604                         dflt="$lseeksize"
8605                         echo " "
8606                         echo "(I can't seem to compile the test program.  Guessing...)"
8607                         rp="What is the size of your file offsets (in bytes)?"
8608                         . ./myread
8609                         lseeksize="$ans"
8610                 fi
8611                 case "$fpostype" in
8612                 *_t) zzz="$fpostype"    ;;
8613                 *)   zzz="fpos_t"       ;;
8614                 esac
8615                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8616                 $cat > try.c <<EOCP
8617 #include <sys/types.h>
8618 #include <stdio.h>
8619 int main() {
8620     printf("%d\n", (int)sizeof($fpostype));
8621     exit(0);
8622 }
8623 EOCP
8624                 set try
8625                 if eval $compile_ok; then
8626                         yyy=`$run ./try`
8627                         dflt="$lseeksize"
8628                         case "$yyy" in
8629                         '')     echo " "
8630                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8631                                 ;;
8632                         *)      fpossize=$yyy
8633                                 echo " $fpossize bytes." >&4
8634                                 ;;
8635                         esac
8636                 else
8637                         dflt="$fpossize"
8638                         echo " "
8639                         echo "(I can't compile the test program.  Guessing...)" >&4
8640                         rp="What is the size of your file positions (in bytes)?"
8641                         . ./myread
8642                         fpossize="$ans"
8643                 fi
8644                 $rm -f try.c try
8645         fi
8646         ;;
8647 esac
8648
8649 case "$vendorprefix" in
8650 '')     d_vendorbin="$undef"
8651         vendorbin=''
8652         vendorbinexp=''
8653         ;;
8654 *)      d_vendorbin="$define"
8655         : determine where vendor-supplied executables go.
8656         case "$vendorbin" in
8657         '') dflt=$vendorprefix/bin ;;
8658         *)      dflt="$vendorbin" ;;
8659         esac
8660         fn=d~+
8661         rp='Pathname for the vendor-supplied executables directory?'
8662         . ./getfile
8663         vendorbin="$ans"
8664         vendorbinexp="$ansexp"
8665         ;;
8666 esac
8667 : Change installation prefix, if necessary.
8668 if $test X"$prefix" != X"$installprefix"; then
8669         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8670 else
8671         installvendorbin="$vendorbinexp"
8672 fi
8673
8674 : see if qgcvt exists
8675 set qgcvt d_qgcvt
8676 eval $inlibc
8677
8678 : Check how to convert floats to strings.
8679
8680 if test "X$d_Gconvert" = X; then
8681
8682 echo " "
8683 echo "Checking for an efficient way to convert floats to strings."
8684 echo " " > try.c
8685 case "$uselongdouble" in
8686 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8687 esac
8688 case "$d_longdbl" in
8689 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8690 esac
8691 case "$d_PRIgldbl" in
8692 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8693 esac
8694 $cat >>try.c <<EOP
8695 #ifdef TRY_gconvert
8696 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8697 char *myname = "gconvert";
8698 #endif
8699 #ifdef TRY_gcvt
8700 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8701 char *myname = "gcvt";
8702 #endif
8703 #ifdef TRY_qgcvt
8704 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8705 char *myname = "qgcvt";
8706 #define DOUBLETYPE long double
8707 #endif
8708 #ifdef TRY_sprintf
8709 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8710 #ifdef HAS_PRIgldbl
8711 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8712 #else
8713 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
8714 #endif
8715 #else
8716 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8717 #endif
8718 char *myname = "sprintf";
8719 #endif
8720
8721 #ifndef DOUBLETYPE
8722 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8723 #define DOUBLETYPE long double
8724 #else
8725 #define DOUBLETYPE double
8726 #endif
8727 #endif
8728
8729 #include <stdio.h>
8730
8731 #define I_STDLIB $i_stdlib
8732 #ifdef I_STDLIB
8733 #include <stdlib.h>
8734 #endif
8735
8736 int
8737 checkit(expect, got)
8738 char *expect;
8739 char *got;
8740 {
8741     if (strcmp(expect, got)) {
8742                 printf("%s oddity:  Expected %s, got %s\n",
8743                         myname, expect, got);
8744                 exit(1);
8745         }
8746 }
8747
8748 int main()
8749
8750         char buf[64]; 
8751         buf[63] = '\0';
8752
8753         /* This must be 1st test on (which?) platform */
8754         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8755         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8756         checkit("0.1", buf);
8757
8758         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
8759         checkit("0.01", buf);
8760
8761         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
8762         checkit("0.001", buf);
8763
8764         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
8765         checkit("0.0001", buf);
8766
8767         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
8768         if (strlen(buf) > 5)
8769             checkit("9e-005", buf); /* for Microsoft ?? */
8770         else
8771             checkit("9e-05", buf);
8772
8773         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8774         checkit("1", buf);
8775
8776         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8777         checkit("1.1", buf);
8778
8779         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8780         checkit("1.01", buf);
8781
8782         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8783         checkit("1.001", buf);
8784
8785         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8786         checkit("1.0001", buf);
8787
8788         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8789         checkit("1.00001", buf);
8790
8791         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8792         checkit("1.000001", buf);
8793
8794         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8795         checkit("0", buf);
8796
8797         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8798         checkit("-1", buf);
8799
8800         /* Some Linux gcvt's give 1.e+5 here. */
8801         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8802         checkit("100000", buf);
8803         
8804         /* Some Linux gcvt's give -1.e+5 here. */
8805         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8806         checkit("-100000", buf);
8807
8808         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8809         checkit("123.456", buf);
8810
8811         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8812         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8813         if (strlen(buf) > 5)
8814             checkit("1e+030", buf); /* for Microsoft */
8815         else
8816             checkit("1e+30", buf);
8817
8818         exit(0);
8819 }
8820 EOP
8821 : first add preferred functions to our list
8822 xxx_list=""
8823 for xxx_convert in $gconvert_preference; do
8824     case $xxx_convert in
8825     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
8826     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
8827     esac 
8828 done
8829 : then add any others
8830 for xxx_convert in gconvert gcvt sprintf; do
8831     case "$xxx_list" in
8832     *$xxx_convert*) ;;
8833     *) xxx_list="$xxx_list $xxx_convert" ;;
8834     esac 
8835 done
8836
8837 case "$d_longdbl$uselongdouble" in
8838 "$define$define")
8839     : again, add prefered functions to our list first
8840     xxx_ld_list=""
8841     for xxx_convert in $gconvert_ld_preference; do
8842         case $xxx_convert in
8843         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8844         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
8845         esac
8846     done
8847     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
8848     for xxx_convert in qgcvt sprintf $xxx_list; do
8849         case "$xxx_ld_list" in
8850         $xxx_convert*|*" $xxx_convert"*) ;;
8851         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8852         esac
8853     done
8854     : if sprintf cannot do long doubles, move it to the end
8855     if test "$d_PRIgldbl" != "$define"; then
8856         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
8857     fi
8858     : if no qgcvt, remove it
8859     if test "$d_qgcvt" != "$define"; then
8860         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
8861     fi
8862     : use the ld_list
8863     xxx_list="$xxx_ld_list"
8864     ;;
8865 esac
8866
8867 for xxx_convert in $xxx_list; do
8868         echo "Trying $xxx_convert..."
8869         $rm -f try try$_o
8870         set try -DTRY_$xxx_convert
8871         if eval $compile; then
8872                 echo "$xxx_convert() found." >&4
8873                 if $run ./try; then
8874                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8875                         break;
8876                 else
8877                         echo "...But $xxx_convert didn't work as I expected."
8878                         xxx_convert=''
8879                 fi
8880         else
8881                 echo "$xxx_convert NOT found." >&4
8882         fi
8883 done
8884
8885 if test X$xxx_convert = X; then
8886     echo "*** WHOA THERE!!! ***" >&4
8887     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
8888     xxx_convert=sprintf
8889 fi
8890
8891 case "$xxx_convert" in
8892 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8893 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8894 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8895 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8896    "$define$define$define")
8897       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8898    "$define$define$undef")
8899       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
8900    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8901    esac
8902    ;;  
8903 esac
8904
8905 fi
8906
8907 : see if _fwalk exists
8908 set fwalk d__fwalk
8909 eval $inlibc
8910
8911 : Initialize h_fcntl
8912 h_fcntl=false
8913
8914 : Initialize h_sysfile
8915 h_sysfile=false
8916
8917 : access call always available on UNIX
8918 set access d_access
8919 eval $inlibc
8920
8921 : locate the flags for 'access()'
8922 case "$d_access" in
8923 "$define")
8924         echo " "
8925         $cat >access.c <<'EOCP'
8926 #include <sys/types.h>
8927 #ifdef I_FCNTL
8928 #include <fcntl.h>
8929 #endif
8930 #ifdef I_SYS_FILE
8931 #include <sys/file.h>
8932 #endif
8933 #ifdef I_UNISTD
8934 #include <unistd.h>
8935 #endif
8936 int main() {
8937         exit(R_OK);
8938 }
8939 EOCP
8940         : check sys/file.h first, no particular reason here
8941         if $test `./findhdr sys/file.h` && \
8942                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8943                 h_sysfile=true;
8944                 echo "<sys/file.h> defines the *_OK access constants." >&4
8945         elif $test `./findhdr fcntl.h` && \
8946                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8947                 h_fcntl=true;
8948                 echo "<fcntl.h> defines the *_OK access constants." >&4
8949         elif $test `./findhdr unistd.h` && \
8950                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8951                 echo "<unistd.h> defines the *_OK access constants." >&4
8952         else
8953                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8954         fi
8955         ;;
8956 esac
8957 $rm -f access*
8958
8959 : see if accessx exists
8960 set accessx d_accessx
8961 eval $inlibc
8962
8963 : see if alarm exists
8964 set alarm d_alarm
8965 eval $inlibc
8966
8967 : see if atolf exists
8968 set atolf d_atolf
8969 eval $inlibc
8970
8971 : see if atoll exists
8972 set atoll d_atoll
8973 eval $inlibc
8974
8975 : Look for GNU-cc style attribute checking
8976 echo " "
8977 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8978 $cat >attrib.c <<'EOCP'
8979 #include <stdio.h>
8980 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8981 EOCP
8982 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8983         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8984                 echo "Your C compiler doesn't fully support __attribute__."
8985                 val="$undef"
8986         else
8987                 echo "Your C compiler supports __attribute__."
8988                 val="$define"
8989         fi
8990 else
8991         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8992         val="$undef"
8993 fi
8994 set d_attribut
8995 eval $setvar
8996 $rm -f attrib*
8997
8998 : see if bcmp exists
8999 set bcmp d_bcmp
9000 eval $inlibc
9001
9002 : see if bcopy exists
9003 set bcopy d_bcopy
9004 eval $inlibc
9005
9006 : see if this is a unistd.h system
9007 set unistd.h i_unistd
9008 eval $inhdr
9009
9010 : see if getpgrp exists
9011 set getpgrp d_getpgrp
9012 eval $inlibc
9013
9014 case "$d_getpgrp" in
9015 "$define")
9016         echo " "
9017         echo "Checking to see which flavor of getpgrp is in use..."
9018         $cat >try.c <<EOP
9019 #$i_unistd I_UNISTD
9020 #include <sys/types.h>
9021 #ifdef I_UNISTD
9022 #  include <unistd.h>
9023 #endif
9024 int main()
9025 {
9026         if (getuid() == 0) {
9027                 printf("(I see you are running Configure as super-user...)\n");
9028                 setuid(1);
9029         }
9030 #ifdef TRY_BSD_PGRP
9031         if (getpgrp(1) == 0)
9032                 exit(0);
9033 #else
9034         if (getpgrp() > 0)
9035                 exit(0);
9036 #endif
9037         exit(1);
9038 }
9039 EOP
9040         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9041                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9042                 val="$define"
9043         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9044                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9045                 val="$undef"
9046         else
9047                 echo "I can't seem to compile and run the test program."
9048                 if ./usg; then
9049                         xxx="a USG one, i.e. you use getpgrp()."
9050                 else
9051                         # SVR4 systems can appear rather BSD-ish.
9052                         case "$i_unistd" in
9053                         $undef)
9054                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9055                                 val="$define"
9056                                 ;;
9057                         $define)
9058                                 xxx="probably a USG one, i.e. you use getpgrp()."
9059                                 val="$undef"
9060                                 ;;
9061                         esac
9062                 fi
9063                 echo "Assuming your getpgrp is $xxx" >&4
9064         fi
9065         ;;
9066 *) val="$undef";;
9067 esac
9068 set d_bsdgetpgrp
9069 eval $setvar
9070 $rm -f try try.*
9071
9072 : see if setpgrp exists
9073 set setpgrp d_setpgrp
9074 eval $inlibc
9075
9076 case "$d_setpgrp" in
9077 "$define")
9078         echo " "
9079         echo "Checking to see which flavor of setpgrp is in use..."
9080         $cat >try.c <<EOP
9081 #$i_unistd I_UNISTD
9082 #include <sys/types.h>
9083 #ifdef I_UNISTD
9084 #  include <unistd.h>
9085 #endif
9086 int main()
9087 {
9088         if (getuid() == 0) {
9089                 printf("(I see you are running Configure as super-user...)\n");
9090                 setuid(1);
9091         }
9092 #ifdef TRY_BSD_PGRP
9093         if (-1 == setpgrp(1, 1))
9094                 exit(0);
9095 #else
9096         if (setpgrp() != -1)
9097                 exit(0);
9098 #endif
9099         exit(1);
9100 }
9101 EOP
9102         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9103                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9104                 val="$define"
9105         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9106                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9107                 val="$undef"
9108         else
9109                 echo "(I can't seem to compile and run the test program.)"
9110                 if ./usg; then
9111                         xxx="a USG one, i.e. you use setpgrp()."
9112                 else
9113                         # SVR4 systems can appear rather BSD-ish.
9114                         case "$i_unistd" in
9115                         $undef)
9116                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9117                                 val="$define"
9118                                 ;;
9119                         $define)
9120                                 xxx="probably a USG one, i.e. you use setpgrp()."
9121                                 val="$undef"
9122                                 ;;
9123                         esac
9124                 fi
9125                 echo "Assuming your setpgrp is $xxx" >&4
9126         fi
9127         ;;
9128 *) val="$undef";;
9129 esac
9130 set d_bsdsetpgrp
9131 eval $setvar
9132 $rm -f try try.*
9133 : see if bzero exists
9134 set bzero d_bzero
9135 eval $inlibc
9136
9137 : see if signal is declared as pointer to function returning int or void
9138 echo " "
9139 xxx=`./findhdr signal.h`
9140 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9141 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9142         echo "You have int (*signal())() instead of void." >&4
9143         val="$undef"
9144 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9145         echo "You have void (*signal())()." >&4
9146         val="$define"
9147 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9148         echo "You have int (*signal())() instead of void." >&4
9149         val="$undef"
9150 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9151         echo "You have void (*signal())()." >&4
9152         val="$define"
9153 else
9154         case "$d_voidsig" in
9155         '')
9156         echo "I can't determine whether signal handler returns void or int..." >&4
9157                 dflt=void
9158                 rp="What type does your signal handler return?"
9159                 . ./myread
9160                 case "$ans" in
9161                 v*) val="$define";;
9162                 *) val="$undef";;
9163                 esac;;
9164         "$define")
9165                 echo "As you already told me, signal handler returns void." >&4
9166                 val="$define"
9167                 ;;
9168         *)      echo "As you already told me, signal handler returns int." >&4
9169                 val="$undef"
9170                 ;;
9171         esac
9172 fi
9173 set d_voidsig
9174 eval $setvar
9175 case "$d_voidsig" in
9176 "$define") signal_t="void";;
9177 *) signal_t="int";;
9178 esac
9179 $rm -f $$.tmp
9180
9181 : check for ability to cast large floats to 32-bit ints.
9182 echo " "
9183 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9184 if $test "$intsize" -ge 4; then
9185         xxx=int
9186 else
9187         xxx=long
9188 fi
9189 $cat >try.c <<EOCP
9190 #include <stdio.h>
9191 #include <sys/types.h>
9192 #include <signal.h>
9193 $signal_t blech(s) int s; { exit(3); }
9194 int main()
9195 {
9196         $xxx i32;
9197         double f, g;
9198         int result = 0;
9199         char str[16];
9200         signal(SIGFPE, blech);
9201
9202         /* Don't let compiler optimize the test away.  Store the number 
9203            in a writable string for gcc to pass to sscanf under HP/UX.
9204         */
9205         sprintf(str, "2147483647");
9206         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
9207         g = 10 * f;
9208         i32  = ($xxx) g;
9209
9210         /* x86 processors will probably give 0x8000 0000, which is a
9211        sign change.  We don't want that.  We want to mimic SPARC
9212            behavior here, which is to preserve the sign and give
9213            back 0x7fff ffff.
9214         */
9215         if (i32 != ($xxx) f)
9216                 result |= 1;
9217         exit(result);
9218 }
9219 EOCP
9220 set try
9221 if eval $compile_ok; then
9222         $run ./try
9223         yyy=$?
9224 else
9225         echo "(I can't seem to compile the test program--assuming it can't)"
9226         yyy=1
9227 fi
9228 case "$yyy" in
9229 0)      val="$define"
9230         echo "Yup, it can."
9231         ;;
9232 *)      val="$undef"
9233         echo "Nope, it can't."
9234         ;;
9235 esac
9236 set d_casti32
9237 eval $setvar
9238 $rm -f try try.*
9239
9240 : check for ability to cast negative floats to unsigned
9241 echo " "
9242 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
9243 $cat >try.c <<EOCP
9244 #include <stdio.h>
9245 #include <sys/types.h>
9246 #include <signal.h>
9247 $signal_t blech(s) int s; { exit(7); }
9248 $signal_t blech_in_list(s) int s; { exit(4); }
9249 unsigned long dummy_long(p) unsigned long p; { return p; }
9250 unsigned int dummy_int(p) unsigned int p; { return p; }
9251 unsigned short dummy_short(p) unsigned short p; { return p; }
9252 int main()
9253 {
9254         double f;
9255         unsigned long along;
9256         unsigned int aint;
9257         unsigned short ashort;
9258         int result = 0;
9259         char str[16];
9260         
9261         /* Frustrate gcc-2.7.2's optimizer which failed this test with
9262            a direct f = -123. assignment.  gcc-2.8.0 reportedly
9263            optimized the whole file away
9264         */
9265         /* Store the number in a writable string for gcc to pass to 
9266            sscanf under HP/UX.
9267         */
9268         sprintf(str, "-123");
9269         sscanf(str, "%lf", &f);  /* f = -123.; */
9270
9271         signal(SIGFPE, blech);
9272         along = (unsigned long)f;
9273         aint = (unsigned int)f;
9274         ashort = (unsigned short)f;
9275         if (along != (unsigned long)-123)
9276                 result |= 1;
9277         if (aint != (unsigned int)-123)
9278                 result |= 1;
9279         if (ashort != (unsigned short)-123)
9280                 result |= 1;
9281         sprintf(str, "1073741824.");
9282         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9283         f = f + f;
9284         along = 0;
9285         along = (unsigned long)f;
9286         if (along != 0x80000000)
9287                 result |= 2;
9288         f -= 1.;
9289         along = 0;
9290         along = (unsigned long)f;
9291         if (along != 0x7fffffff)
9292                 result |= 1;
9293         f += 2.;
9294         along = 0;
9295         along = (unsigned long)f;
9296         if (along != 0x80000001)
9297                 result |= 2;
9298         if (result)
9299                 exit(result);
9300         signal(SIGFPE, blech_in_list);
9301         sprintf(str, "123.");
9302         sscanf(str, "%lf", &f);  /* f = 123.; */
9303         along = dummy_long((unsigned long)f);
9304         aint = dummy_int((unsigned int)f);
9305         ashort = dummy_short((unsigned short)f);
9306         if (along != (unsigned long)123)
9307                 result |= 4;
9308         if (aint != (unsigned int)123)
9309                 result |= 4;
9310         if (ashort != (unsigned short)123)
9311                 result |= 4;
9312         exit(result);
9313
9314 }
9315 EOCP
9316 set try
9317 if eval $compile_ok; then
9318         $run ./try
9319         castflags=$?
9320 else
9321         echo "(I can't seem to compile the test program--assuming it can't)"
9322         castflags=7
9323 fi
9324 case "$castflags" in
9325 0)      val="$define"
9326         echo "Yup, it can."
9327         ;;
9328 *)      val="$undef"
9329         echo "Nope, it can't."
9330         ;;
9331 esac
9332 set d_castneg
9333 eval $setvar
9334 $rm -f try.*
9335
9336 : see if vprintf exists
9337 echo " "
9338 if set vprintf val -f d_vprintf; eval $csym; $val; then
9339         echo 'vprintf() found.' >&4
9340         val="$define"
9341         $cat >try.c <<'EOF'
9342 #include <varargs.h>
9343
9344 int main() { xxx("foo"); }
9345
9346 xxx(va_alist)
9347 va_dcl
9348 {
9349         va_list args;
9350         char buf[10];
9351
9352         va_start(args);
9353         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9354 }
9355 EOF
9356         set try
9357         if eval $compile && $run ./try; then
9358                 echo "Your vsprintf() returns (int)." >&4
9359                 val2="$undef"
9360         else
9361                 echo "Your vsprintf() returns (char*)." >&4
9362                 val2="$define"
9363         fi
9364 else
9365         echo 'vprintf() NOT found.' >&4
9366                 val="$undef"
9367                 val2="$undef"
9368 fi
9369 $rm -f try try.*
9370 set d_vprintf
9371 eval $setvar
9372 val=$val2
9373 set d_charvspr
9374 eval $setvar
9375
9376 : see if chown exists
9377 set chown d_chown
9378 eval $inlibc
9379
9380 : see if chroot exists
9381 set chroot d_chroot
9382 eval $inlibc
9383
9384 : see if chsize exists
9385 set chsize d_chsize
9386 eval $inlibc
9387
9388 : see if class exists
9389 set class d_class
9390 eval $inlibc
9391
9392 hasstruct='varname=$1; struct=$2; shift; shift;
9393 while $test $# -ge 2; do
9394         case "$1" in
9395         $define) echo "#include <$2>";;
9396         esac ;
9397     shift 2;
9398 done > try.c;
9399 echo "int main () { struct $struct foo; }" >> try.c;
9400 set try;
9401 if eval $compile; then
9402         val="$define";
9403 else
9404         val="$undef";
9405 fi;
9406 set $varname;
9407 eval $setvar;
9408 $rm -f try.c try.o'
9409
9410 : see if sys/types.h has to be included
9411 set sys/types.h i_systypes
9412 eval $inhdr
9413
9414 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9415 while $test $# -ge 2; do
9416         case "$1" in
9417         $define) echo "#include <$2>";;
9418         esac ;
9419     shift 2;
9420 done > try.c;
9421 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9422 set try;
9423 if eval $compile; then
9424         val="$define";
9425 else
9426         val="$undef";
9427 fi;
9428 set $varname;
9429 eval $setvar;
9430 $rm -f try.c try.o'
9431
9432 socketlib=''
9433 sockethdr=''
9434 : see whether socket exists
9435 echo " "
9436 $echo $n "Hmm... $c" >&4
9437 if set socket val -f d_socket; eval $csym; $val; then
9438         echo "Looks like you have Berkeley networking support." >&4
9439         d_socket="$define"
9440         if set setsockopt val -f; eval $csym; $val; then
9441                 d_oldsock="$undef"
9442         else
9443                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9444                 d_oldsock="$define"
9445         fi
9446 else
9447         if $contains socklib libc.list >/dev/null 2>&1; then
9448                 echo "Looks like you have Berkeley networking support." >&4
9449                 d_socket="$define"
9450                 : we will have to assume that it supports the 4.2 BSD interface
9451                 d_oldsock="$undef"
9452         else
9453                 echo "You don't have Berkeley networking in libc$_a..." >&4
9454                 if test "X$d_socket" = "X$define"; then
9455                    echo "...but you seem to believe that you have sockets." >&4
9456                 else
9457                         for net in net socket
9458                         do
9459                                 if test -f /usr/lib/lib$net$_a; then
9460                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9461                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9462                                         if $contains socket libc.list >/dev/null 2>&1; then
9463                                                 d_socket="$define"
9464                                                 socketlib="-l$net"
9465                                                 case "$net" in
9466                                                 net)
9467                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9468                                                         sockethdr="-I/usr/netinclude"
9469                                                         ;;
9470                                                 esac
9471                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
9472                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9473                                                         d_oldsock="$undef"
9474                                                 else
9475                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9476                                                         d_oldsock="$define"
9477                                                 fi
9478                                                 break
9479                                         fi
9480                                 fi
9481                         done
9482                         if test "X$d_socket" != "X$define"; then
9483                            echo "or anywhere else I see." >&4
9484                            d_socket="$undef"
9485                            d_oldsock="$undef"
9486                         fi
9487                 fi
9488         fi
9489 fi
9490
9491 : see if socketpair exists
9492 set socketpair d_sockpair
9493 eval $inlibc
9494
9495
9496 echo " "
9497 echo "Checking the availability of certain socket constants..." >&4
9498 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9499         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9500         $cat >try.c <<EOF
9501 #include <sys/types.h>
9502 #include <sys/socket.h>
9503 int main() {
9504     int i = $ENUM;
9505 }
9506 EOF
9507         val="$undef"
9508         set try; if eval $compile; then
9509                 val="$define"
9510         fi
9511         set d_${enum}; eval $setvar
9512         $rm -f try.c try
9513 done
9514
9515 : see if this is a sys/uio.h system
9516 set sys/uio.h i_sysuio
9517 eval $inhdr
9518
9519
9520 echo " "
9521 echo "Checking to see if your system supports struct cmsghdr..." >&4
9522 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9523 eval $hasstruct
9524 case "$d_cmsghdr_s" in
9525 "$define")      echo "Yes, it does."   ;;
9526 *)              echo "No, it doesn't." ;;
9527 esac
9528
9529
9530 : check for const keyword
9531 echo " "
9532 echo 'Checking to see if your C compiler knows about "const"...' >&4
9533 $cat >const.c <<'EOCP'
9534 typedef struct spug { int drokk; } spug;
9535 int main()
9536 {
9537         const char *foo;
9538         const spug y;
9539 }
9540 EOCP
9541 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9542         val="$define"
9543         echo "Yup, it does."
9544 else
9545         val="$undef"
9546         echo "Nope, it doesn't."
9547 fi
9548 set d_const
9549 eval $setvar
9550
9551 : see if crypt exists
9552 echo " "
9553 set crypt d_crypt
9554 eval $inlibc
9555 case "$d_crypt" in
9556 $define) cryptlib='' ;;
9557 *)      if set crypt val -f d_crypt; eval $csym; $val; then
9558                 echo 'crypt() found.' >&4
9559                 val="$define"
9560                 cryptlib=''
9561         else
9562                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9563                 if $test -z "$cryptlib"; then
9564                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9565                 else
9566                         cryptlib=-lcrypt
9567                 fi
9568                 if $test -z "$cryptlib"; then
9569                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9570                 else
9571                         cryptlib=-lcrypt
9572                 fi
9573                 if $test -z "$cryptlib"; then
9574                         cryptlib=`./loc libcrypt$_a "" $libpth`
9575                 else
9576                         cryptlib=-lcrypt
9577                 fi
9578                 if $test -z "$cryptlib"; then
9579                         echo 'crypt() NOT found.' >&4
9580                         val="$undef"
9581                 else
9582                         val="$define"
9583                 fi
9584         fi
9585         set d_crypt
9586         eval $setvar
9587         ;;
9588 esac
9589
9590 : get csh whereabouts
9591 case "$csh" in
9592 'csh') val="$undef" ;;
9593 *) val="$define" ;;
9594 esac
9595 set d_csh
9596 eval $setvar
9597 : Respect a hint or command line value for full_csh.
9598 case "$full_csh" in
9599 '') full_csh=$csh ;;
9600 esac
9601
9602 : see if cuserid exists
9603 set cuserid d_cuserid
9604 eval $inlibc
9605
9606 : see if this is a limits.h system
9607 set limits.h i_limits
9608 eval $inhdr
9609
9610 : see if this is a float.h system
9611 set float.h i_float
9612 eval $inhdr
9613
9614 : See if number of significant digits in a double precision number is known
9615 echo " "
9616 $cat >dbl_dig.c <<EOM
9617 #$i_limits I_LIMITS
9618 #$i_float I_FLOAT
9619 #ifdef I_LIMITS
9620 #include <limits.h>
9621 #endif
9622 #ifdef I_FLOAT
9623 #include <float.h>
9624 #endif
9625 #ifdef DBL_DIG
9626 printf("Contains DBL_DIG");
9627 #endif
9628 EOM
9629 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9630 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9631         echo "DBL_DIG found." >&4
9632         val="$define"
9633 else
9634         echo "DBL_DIG NOT found." >&4
9635         val="$undef"
9636 fi
9637 $rm -f dbl_dig.?
9638 set d_dbl_dig
9639 eval $setvar
9640
9641 hasproto='varname=$1; func=$2; shift; shift;
9642 while $test $# -ge 2; do
9643         case "$1" in
9644         $define) echo "#include <$2>";;
9645         esac ;
9646     shift 2;
9647 done > try.c;
9648 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9649 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9650         echo "$func() prototype found.";
9651         val="$define";
9652 else
9653         echo "$func() prototype NOT found.";
9654         val="$undef";
9655 fi;
9656 set $varname;
9657 eval $setvar;
9658 $rm -f try.c tryout.c'
9659
9660 : see if dbm.h is available
9661 : see if dbmclose exists
9662 set dbmclose d_dbmclose
9663 eval $inlibc
9664
9665 case "$d_dbmclose" in
9666 $define)
9667         set dbm.h i_dbm
9668         eval $inhdr
9669         case "$i_dbm" in
9670         $define)
9671                 val="$undef"
9672                 set i_rpcsvcdbm
9673                 eval $setvar
9674                 ;;
9675         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9676                 eval $inhdr
9677                 ;;
9678         esac
9679         ;;
9680 *)      echo "We won't be including <dbm.h>"
9681         val="$undef"
9682         set i_dbm
9683         eval $setvar
9684         val="$undef"
9685         set i_rpcsvcdbm
9686         eval $setvar
9687         ;;
9688 esac
9689
9690 : see if prototype for dbminit is available
9691 echo " "
9692 set d_dbminitproto dbminit $i_dbm dbm.h
9693 eval $hasproto
9694
9695 : see if difftime exists
9696 set difftime d_difftime
9697 eval $inlibc
9698
9699 : see if this is a dirent system
9700 echo " "
9701 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9702         val="$define"
9703         echo "<dirent.h> found." >&4
9704 else
9705         val="$undef"
9706         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9707                 echo "<sys/dir.h> found." >&4
9708                 echo " "
9709         else
9710                 xinc=`./findhdr sys/ndir.h`
9711         fi
9712         echo "<dirent.h> NOT found." >&4
9713 fi
9714 set i_dirent
9715 eval $setvar
9716
9717 : Look for type of directory structure.
9718 echo " "
9719 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9720
9721 case "$direntrytype" in
9722 ''|' ')
9723         case "$i_dirent" in
9724         $define) guess1='struct dirent' ;;
9725         *) guess1='struct direct'  ;;
9726         esac
9727         ;;
9728 *)      guess1="$direntrytype"
9729         ;;
9730 esac
9731
9732 case "$guess1" in
9733 'struct dirent') guess2='struct direct' ;;
9734 *) guess2='struct dirent' ;;
9735 esac
9736                 
9737 if $contains "$guess1" try.c >/dev/null 2>&1; then
9738         direntrytype="$guess1"
9739         echo "Your directory entries are $direntrytype." >&4
9740 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9741         direntrytype="$guess2"
9742         echo "Your directory entries seem to be $direntrytype." >&4
9743 else
9744         echo "I don't recognize your system's directory entries." >&4
9745         rp="What type is used for directory entries on this system?"
9746         dflt="$guess1"
9747         . ./myread
9748         direntrytype="$ans"
9749 fi
9750 $rm -f try.c
9751
9752
9753 : see if the directory entry stores field length
9754 echo " "
9755 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9756 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9757         echo "Good, your directory entry keeps length information in d_namlen." >&4
9758         val="$define"
9759 else
9760         echo "Your directory entry does not know about the d_namlen field." >&4
9761         val="$undef"
9762 fi
9763 set d_dirnamlen
9764 eval $setvar
9765 $rm -f try.c
9766
9767 : see if this is an sysdir system
9768 set sys/dir.h i_sysdir
9769 eval $inhdr
9770
9771 : see if this is an sysndir system
9772 set sys/ndir.h i_sysndir
9773 eval $inhdr
9774
9775 : Look for dirfd
9776 echo " "
9777 $cat >dirfd.c <<EOM
9778 #include <stdio.h>
9779 #$i_dirent I_DIRENT             /**/
9780 #$i_sysdir I_SYS_DIR            /**/
9781 #$i_sysndir I_SYS_NDIR          /**/
9782 #$i_systypes I_SYS_TYPES        /**/
9783 #if defined(I_SYS_TYPES)
9784 #include <sys/types.h>
9785 #endif
9786 #if defined(I_DIRENT)
9787 #include <dirent.h>
9788 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
9789 #include <sys/dir.h>
9790 #endif
9791 #else
9792 #ifdef I_SYS_NDIR
9793 #include <sys/ndir.h>
9794 #else
9795 #ifdef I_SYS_DIR
9796 #ifdef hp9000s500
9797 #include <ndir.h>       /* may be wrong in the future */
9798 #else
9799 #include <sys/dir.h>
9800 #endif
9801 #endif
9802 #endif
9803 #endif 
9804 int main() {
9805         DIR *dirp = opendir(".");
9806         if (dirfd(dirp) >= 0)
9807                 exit(0);
9808         else
9809                 exit(1);
9810 }
9811 EOM
9812 set dirfd
9813 if eval $compile; then
9814         val="$define"
9815 fi
9816 case "$val" in
9817 $define)        echo "dirfd() found." >&4       ;;
9818 *)              echo "dirfd() NOT found." >&4   ;;
9819 esac
9820 set d_dirfd
9821 eval $setvar
9822 $rm -f dirfd*
9823
9824 : see if dlerror exists
9825 xxx_runnm="$runnm"
9826 runnm=false
9827 set dlerror d_dlerror
9828 eval $inlibc
9829 runnm="$xxx_runnm"
9830
9831 : see if dlfcn is available
9832 set dlfcn.h i_dlfcn
9833 eval $inhdr
9834
9835 case "$usedl" in
9836 $define|y|true)
9837         $cat << EOM
9838
9839 On a few systems, the dynamically loaded modules that perl generates and uses
9840 will need a different extension than shared libs. The default will probably
9841 be appropriate.
9842
9843 EOM
9844         case "$dlext" in
9845         '')     dflt="$so" ;;
9846         *)      dflt="$dlext" ;;
9847         esac
9848         rp='What is the extension of dynamically loaded modules'
9849         . ./myread
9850         dlext="$ans"
9851         ;;
9852 *)
9853         dlext="none"
9854         ;;
9855 esac
9856
9857 : Check if dlsym need a leading underscore
9858 echo " "
9859 val="$undef"
9860
9861 case "$dlsrc" in
9862 dl_dlopen.xs)
9863         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9864         $cat >dyna.c <<'EOM'
9865 fred () { }
9866 EOM
9867
9868 $cat >fred.c<<EOM
9869
9870 #include <stdio.h>
9871 #$i_dlfcn I_DLFCN
9872 #ifdef I_DLFCN
9873 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9874 #else
9875 #include <sys/types.h>
9876 #include <nlist.h>
9877 #include <link.h>
9878 #endif
9879
9880 extern int fred() ;
9881
9882 int main()
9883 {
9884     void * handle ;
9885     void * symbol ;
9886 #ifndef RTLD_LAZY
9887     int mode = 1 ;
9888 #else
9889     int mode = RTLD_LAZY ;
9890 #endif
9891     handle = dlopen("./dyna.$dlext", mode) ;
9892     if (handle == NULL) {
9893         printf ("1\n") ;
9894         fflush (stdout) ;
9895         exit(0);
9896     }
9897     symbol = dlsym(handle, "fred") ;
9898     if (symbol == NULL) {
9899         /* try putting a leading underscore */
9900         symbol = dlsym(handle, "_fred") ;
9901         if (symbol == NULL) {
9902             printf ("2\n") ;
9903             fflush (stdout) ;
9904             exit(0);
9905         }
9906         printf ("3\n") ;
9907     }
9908     else
9909         printf ("4\n") ;
9910     fflush (stdout) ;
9911     exit(0);
9912 }
9913 EOM
9914         : Call the object file tmp-dyna.o in case dlext=o.
9915         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9916                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9917                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9918                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9919                 xxx=`$run ./fred`
9920                 case $xxx in
9921                 1)      echo "Test program failed using dlopen." >&4
9922                         echo "Perhaps you should not use dynamic loading." >&4;;
9923                 2)      echo "Test program failed using dlsym." >&4
9924                         echo "Perhaps you should not use dynamic loading." >&4;;
9925                 3)      echo "dlsym needs a leading underscore" >&4
9926                         val="$define" ;;
9927                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9928                 esac
9929         else
9930                 echo "I can't compile and run the test program." >&4
9931                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9932         fi
9933         ;;
9934 esac
9935                 
9936 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
9937
9938 set d_dlsymun
9939 eval $setvar
9940
9941 : see if prototype for drand48 is available
9942 echo " "
9943 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9944 eval $hasproto
9945
9946 : see if dup2 exists
9947 set dup2 d_dup2
9948 eval $inlibc
9949
9950 : see if eaccess exists
9951 set eaccess d_eaccess
9952 eval $inlibc
9953
9954 : see if endgrent exists
9955 set endgrent d_endgrent
9956 eval $inlibc
9957
9958 : see if endhostent exists
9959 set endhostent d_endhent
9960 eval $inlibc
9961
9962 : see if endnetent exists
9963 set endnetent d_endnent
9964 eval $inlibc
9965
9966 : see if endprotoent exists
9967 set endprotoent d_endpent
9968 eval $inlibc
9969
9970 : see if endpwent exists
9971 set endpwent d_endpwent
9972 eval $inlibc
9973
9974 : see if endservent exists
9975 set endservent d_endsent
9976 eval $inlibc
9977
9978 : Locate the flags for 'open()'
9979 echo " "
9980 $cat >try.c <<'EOCP'
9981 #include <sys/types.h>
9982 #ifdef I_FCNTL
9983 #include <fcntl.h>
9984 #endif
9985 #ifdef I_SYS_FILE
9986 #include <sys/file.h>
9987 #endif
9988 int main() {
9989         if(O_RDONLY);
9990 #ifdef O_TRUNC
9991         exit(0);
9992 #else
9993         exit(1);
9994 #endif
9995 }
9996 EOCP
9997 : check sys/file.h first to get FREAD on Sun
9998 if $test `./findhdr sys/file.h` && \
9999                 set try -DI_SYS_FILE && eval $compile; then
10000         h_sysfile=true;
10001         echo "<sys/file.h> defines the O_* constants..." >&4
10002         if $run ./try; then
10003                 echo "and you have the 3 argument form of open()." >&4
10004                 val="$define"
10005         else
10006                 echo "but not the 3 argument form of open().  Oh, well." >&4
10007                 val="$undef"
10008         fi
10009 elif $test `./findhdr fcntl.h` && \
10010                 set try -DI_FCNTL && eval $compile; then
10011         h_fcntl=true;
10012         echo "<fcntl.h> defines the O_* constants..." >&4
10013         if $run ./try; then
10014                 echo "and you have the 3 argument form of open()." >&4
10015                 val="$define"
10016         else
10017                 echo "but not the 3 argument form of open().  Oh, well." >&4
10018                 val="$undef"
10019         fi
10020 else
10021         val="$undef"
10022         echo "I can't find the O_* constant definitions!  You got problems." >&4
10023 fi
10024 set d_open3
10025 eval $setvar
10026 $rm -f try try.*
10027
10028 : see which of string.h or strings.h is needed
10029 echo " "
10030 strings=`./findhdr string.h`
10031 if $test "$strings" && $test -r "$strings"; then
10032         echo "Using <string.h> instead of <strings.h>." >&4
10033         val="$define"
10034 else
10035         val="$undef"
10036         strings=`./findhdr strings.h`
10037         if $test "$strings" && $test -r "$strings"; then
10038                 echo "Using <strings.h> instead of <string.h>." >&4
10039         else
10040                 echo "No string header found -- You'll surely have problems." >&4
10041         fi
10042 fi
10043 set i_string
10044 eval $setvar
10045 case "$i_string" in
10046 "$undef") strings=`./findhdr strings.h`;;
10047 *)        strings=`./findhdr string.h`;;
10048 esac
10049
10050 : see if this is a sys/file.h system
10051 val=''
10052 set sys/file.h val
10053 eval $inhdr
10054
10055 : do we need to include sys/file.h ?
10056 case "$val" in
10057 "$define")
10058         echo " "
10059         if $h_sysfile; then
10060                 val="$define"
10061                 echo "We'll be including <sys/file.h>." >&4
10062         else
10063                 val="$undef"
10064                 echo "We won't be including <sys/file.h>." >&4
10065         fi
10066         ;;
10067 *)
10068         h_sysfile=false
10069         ;;
10070 esac
10071 set i_sysfile
10072 eval $setvar
10073
10074 : see if fcntl.h is there
10075 val=''
10076 set fcntl.h val
10077 eval $inhdr
10078
10079 : see if we can include fcntl.h
10080 case "$val" in
10081 "$define")
10082         echo " "
10083         if $h_fcntl; then
10084                 val="$define"
10085                 echo "We'll be including <fcntl.h>." >&4
10086         else
10087                 val="$undef"
10088                 if $h_sysfile; then
10089         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
10090                 else
10091                         echo "We won't be including <fcntl.h>." >&4
10092                 fi
10093         fi
10094         ;;
10095 *)
10096         h_fcntl=false
10097         val="$undef"
10098         ;;
10099 esac
10100 set i_fcntl
10101 eval $setvar
10102
10103 : check for non-blocking I/O stuff
10104 case "$h_sysfile" in
10105 true) echo "#include <sys/file.h>" > head.c;;
10106 *)
10107        case "$h_fcntl" in
10108        true) echo "#include <fcntl.h>" > head.c;;
10109        *) echo "#include <sys/fcntl.h>" > head.c;;
10110        esac
10111        ;;
10112 esac
10113 echo " "
10114 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
10115 case "$o_nonblock" in
10116 '')
10117         $cat head.c > try.c
10118         $cat >>try.c <<EOCP
10119 #include <stdio.h>
10120 #include <stdlib.h>
10121 #$i_fcntl I_FCNTL
10122 #ifdef I_FCNTL
10123 #include <fcntl.h>
10124 #endif
10125 int main() {
10126 #ifdef O_NONBLOCK
10127         printf("O_NONBLOCK\n");
10128         exit(0);
10129 #endif
10130 #ifdef O_NDELAY
10131         printf("O_NDELAY\n");
10132         exit(0);
10133 #endif
10134 #ifdef FNDELAY
10135         printf("FNDELAY\n");
10136         exit(0);
10137 #endif
10138         exit(0);
10139 }
10140 EOCP
10141         set try
10142         if eval $compile_ok; then
10143                 o_nonblock=`$run ./try`
10144                 case "$o_nonblock" in
10145                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
10146                 *) echo "Seems like we can use $o_nonblock.";;
10147                 esac
10148         else
10149                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
10150         fi
10151         ;;
10152 *) echo "Using $hint value $o_nonblock.";;
10153 esac
10154 $rm -f try try.* .out core
10155
10156 echo " "
10157 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
10158 case "$eagain" in
10159 '')
10160         $cat head.c > try.c
10161         $cat >>try.c <<EOCP
10162 #include <errno.h>
10163 #include <sys/types.h>
10164 #include <signal.h>
10165 #include <stdio.h> 
10166 #include <stdlib.h> 
10167 #$i_fcntl I_FCNTL
10168 #ifdef I_FCNTL
10169 #include <fcntl.h>
10170 #endif
10171 #define MY_O_NONBLOCK $o_nonblock
10172 #ifndef errno  /* XXX need better Configure test */
10173 extern int errno;
10174 #endif
10175 #$i_unistd I_UNISTD
10176 #ifdef I_UNISTD
10177 #include <unistd.h>
10178 #endif
10179 #$i_string I_STRING
10180 #ifdef I_STRING
10181 #include <string.h>
10182 #else
10183 #include <strings.h>
10184 #endif
10185 $signal_t blech(x) int x; { exit(3); }
10186 EOCP
10187         $cat >> try.c <<'EOCP'
10188 int main()
10189 {
10190         int pd[2];
10191         int pu[2];
10192         char buf[1];
10193         char string[100];
10194
10195         pipe(pd);       /* Down: child -> parent */
10196         pipe(pu);       /* Up: parent -> child */
10197         if (0 != fork()) {
10198                 int ret;
10199                 close(pd[1]);   /* Parent reads from pd[0] */
10200                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
10201 #ifdef F_SETFL
10202                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
10203                         exit(1);
10204 #else
10205                 exit(4);
10206 #endif
10207                 signal(SIGALRM, blech);
10208                 alarm(5);
10209                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
10210                         exit(2);
10211                 sprintf(string, "%d\n", ret);
10212                 write(2, string, strlen(string));
10213                 alarm(0);
10214 #ifdef EAGAIN
10215                 if (errno == EAGAIN) {
10216                         printf("EAGAIN\n");
10217                         goto ok;
10218                 }
10219 #endif
10220 #ifdef EWOULDBLOCK
10221                 if (errno == EWOULDBLOCK)
10222                         printf("EWOULDBLOCK\n");
10223 #endif
10224         ok:
10225                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
10226                 sleep(2);                               /* Give it time to close our pipe */
10227                 alarm(5);
10228                 ret = read(pd[0], buf, 1);      /* Should read EOF */
10229                 alarm(0);
10230                 sprintf(string, "%d\n", ret);
10231                 write(4, string, strlen(string));
10232                 exit(0);
10233         }
10234
10235         close(pd[0]);                   /* We write to pd[1] */
10236         close(pu[1]);                   /* We read from pu[0] */
10237         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
10238         close(pd[1]);                   /* Pipe pd is now fully closed! */
10239         exit(0);                                /* Bye bye, thank you for playing! */
10240 }
10241 EOCP
10242         set try
10243         if eval $compile_ok; then
10244                 echo "$startsh" >mtry
10245                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
10246                 chmod +x mtry
10247                 ./mtry >/dev/null 2>&1
10248                 case $? in
10249                 0) eagain=`$cat try.out`;;
10250                 1) echo "Could not perform non-blocking setting!";;
10251                 2) echo "I did a successful read() for something that was not there!";;
10252                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
10253                 4) echo "Could not find F_SETFL!";;
10254                 *) echo "Something terribly wrong happened during testing.";;
10255                 esac
10256                 rd_nodata=`$cat try.ret`
10257                 echo "A read() system call with no data present returns $rd_nodata."
10258                 case "$rd_nodata" in
10259                 0|-1) ;;
10260                 *)
10261                         echo "(That's peculiar, fixing that to be -1.)"
10262                         rd_nodata=-1
10263                         ;;
10264                 esac
10265                 case "$eagain" in
10266                 '')
10267                         echo "Forcing errno EAGAIN on read() with no data available."
10268                         eagain=EAGAIN
10269                         ;;
10270                 *)
10271                         echo "Your read() sets errno to $eagain when no data is available."
10272                         ;;
10273                 esac
10274                 status=`$cat try.err`
10275                 case "$status" in
10276                 0) echo "And it correctly returns 0 to signal EOF.";;
10277                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
10278                 *) echo "However, your read() returns '$status' on EOF??";;
10279                 esac
10280                 val="$define"
10281                 if test "$status" = "$rd_nodata"; then
10282                         echo "WARNING: you can't distinguish between EOF and no data!"
10283                         val="$undef"
10284                 fi
10285         else
10286                 echo "I can't compile the test program--assuming errno EAGAIN will do."
10287                 eagain=EAGAIN
10288         fi
10289         set d_eofnblk
10290         eval $setvar
10291         ;;
10292 *)
10293         echo "Using $hint value $eagain."
10294         echo "Your read() returns $rd_nodata when no data is present."
10295         case "$d_eofnblk" in
10296         "$define") echo "And you can see EOF because read() returns 0.";;
10297         "$undef") echo "But you can't see EOF status from read() returned value.";;
10298         *)
10299                 echo "(Assuming you can't see EOF status from read anyway.)"
10300                 d_eofnblk=$undef
10301                 ;;
10302         esac
10303         ;;
10304 esac
10305 $rm -f try try.* .out core head.c mtry
10306
10307 : see if fchdir exists
10308 set fchdir d_fchdir
10309 eval $inlibc
10310
10311 : see if fchmod exists
10312 set fchmod d_fchmod
10313 eval $inlibc
10314
10315 : see if fchown exists
10316 set fchown d_fchown
10317 eval $inlibc
10318
10319 : see if this is an fcntl system
10320 set fcntl d_fcntl
10321 eval $inlibc
10322
10323 echo " "
10324 : See if fcntl-based locking works.
10325 $cat >try.c <<EOCP
10326 #include <stdlib.h>
10327 #include <unistd.h>
10328 #include <fcntl.h>
10329 #include <signal.h>
10330 $signal_t blech(x) int x; { exit(3); }
10331 int main() {
10332 #if defined(F_SETLK) && defined(F_SETLKW)
10333      struct flock flock;
10334      int retval, fd;
10335      fd = open("try.c", O_RDONLY);
10336      flock.l_type = F_RDLCK;
10337      flock.l_whence = SEEK_SET;
10338      flock.l_start = flock.l_len = 0;
10339      signal(SIGALRM, blech);
10340      alarm(10);
10341      retval = fcntl(fd, F_SETLK, &flock);
10342      close(fd);
10343      (retval < 0 ? exit(2) : exit(0));
10344 #else
10345      exit(2);
10346 #endif
10347 }
10348 EOCP
10349 echo "Checking if fcntl-based file locking works... "
10350 case "$d_fcntl" in
10351 "$define")
10352         set try
10353         if eval $compile_ok; then
10354                 if $run ./try; then
10355                         echo "Yes, it seems to work."
10356                         val="$define"
10357                 else
10358                         echo "Nope, it didn't work."
10359                         val="$undef"
10360                         case "$?" in
10361                         3) $cat >&4 <<EOM
10362 ***
10363 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
10364 *** This is (almost) impossible.
10365 *** If your NFS lock daemons are not feeling well, something like
10366 *** this may happen, please investigate.  Cannot continue, aborting.
10367 ***
10368 EOM
10369                                 exit 1
10370                                 ;;
10371                         esac
10372                 fi
10373         else
10374                 echo "I'm unable to compile the test program, so I'll assume not."
10375                 val="$undef"
10376         fi
10377         ;;
10378 *) val="$undef";
10379         echo "Nope, since you don't even have fcntl()."
10380         ;;
10381 esac
10382 set d_fcntl_can_lock
10383 eval $setvar
10384 $rm -f try*
10385
10386
10387 : see if sys/select.h has to be included
10388 set sys/select.h i_sysselct
10389 eval $inhdr
10390
10391 : see if we should include time.h, sys/time.h, or both
10392 echo " "
10393 if test "X$timeincl" = X; then
10394         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10395         $echo $n "I'm now running the test program...$c"
10396         $cat >try.c <<'EOCP'
10397 #include <sys/types.h>
10398 #ifdef I_TIME
10399 #include <time.h>
10400 #endif
10401 #ifdef I_SYSTIME
10402 #ifdef SYSTIMEKERNEL
10403 #define KERNEL
10404 #endif
10405 #include <sys/time.h>
10406 #endif
10407 #ifdef I_SYSSELECT
10408 #include <sys/select.h>
10409 #endif
10410 int main()
10411 {
10412         struct tm foo;
10413 #ifdef S_TIMEVAL
10414         struct timeval bar;
10415 #endif
10416 #ifdef S_TIMEZONE
10417         struct timezone tzp;
10418 #endif
10419         if (foo.tm_sec == foo.tm_sec)
10420                 exit(0);
10421 #ifdef S_TIMEVAL
10422         if (bar.tv_sec == bar.tv_sec)
10423                 exit(0);
10424 #endif
10425         exit(1);
10426 }
10427 EOCP
10428         flags=''
10429         for s_timezone in '-DS_TIMEZONE' ''; do
10430         sysselect=''
10431         for s_timeval in '-DS_TIMEVAL' ''; do
10432         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10433         for i_time in '' '-DI_TIME'; do
10434         for i_systime in '-DI_SYSTIME' ''; do
10435                 case "$flags" in
10436                 '') $echo $n ".$c"
10437                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10438                         if eval $compile; then
10439                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10440                                 shift
10441                                 flags="$*"
10442                                 echo " "
10443                                 $echo $n "Succeeded with $flags$c"
10444                         fi
10445                         ;;
10446                 esac
10447         done
10448         done
10449         done
10450         done
10451         done
10452         timeincl=''
10453         echo " "
10454         case "$flags" in
10455         *SYSTIMEKERNEL*) i_systimek="$define"
10456                 timeincl=`./findhdr sys/time.h`
10457                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10458         *) i_systimek="$undef";;
10459         esac
10460         case "$flags" in
10461         *I_TIME*) i_time="$define"
10462                 timeincl=`./findhdr time.h`" $timeincl"
10463                 echo "We'll include <time.h>." >&4;;
10464         *) i_time="$undef";;
10465         esac
10466         case "$flags" in
10467         *I_SYSTIME*) i_systime="$define"
10468                 timeincl=`./findhdr sys/time.h`" $timeincl"
10469                 echo "We'll include <sys/time.h>." >&4;;
10470         *) i_systime="$undef";;
10471         esac
10472         $rm -f try.c try
10473 fi
10474
10475 : check for fd_set items
10476 $cat <<EOM
10477
10478 Checking to see how well your C compiler handles fd_set and friends ...
10479 EOM
10480 $cat >try.c <<EOCP
10481 #$i_systime I_SYS_TIME
10482 #$i_sysselct I_SYS_SELECT
10483 #$d_socket HAS_SOCKET
10484 #include <sys/types.h>
10485 #ifdef HAS_SOCKET
10486 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10487 #endif
10488 #ifdef I_SYS_TIME
10489 #include <sys/time.h>
10490 #endif
10491 #ifdef I_SYS_SELECT
10492 #include <sys/select.h>
10493 #endif
10494 int main() {
10495         fd_set fds;
10496
10497 #ifdef TRYBITS
10498         if(fds.fds_bits);
10499 #endif
10500
10501 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10502         exit(0);
10503 #else
10504         exit(1);
10505 #endif
10506 }
10507 EOCP
10508 set try -DTRYBITS
10509 if eval $compile; then
10510         d_fds_bits="$define"
10511         d_fd_set="$define"
10512         echo "Well, your system knows about the normal fd_set typedef..." >&4
10513         if $run ./try; then
10514                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10515                 d_fd_macros="$define"
10516         else
10517                 $cat >&4 <<'EOM'
10518 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10519 EOM
10520                 d_fd_macros="$undef"
10521         fi
10522 else
10523         $cat <<'EOM'
10524 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10525 EOM
10526         set try
10527         if eval $compile; then
10528                 d_fds_bits="$undef"
10529                 d_fd_set="$define"
10530                 echo "Well, your system has some sort of fd_set available..." >&4
10531                 if $run ./try; then
10532                         echo "and you have the normal fd_set macros." >&4
10533                         d_fd_macros="$define"
10534                 else
10535                         $cat <<'EOM'
10536 but not the normal fd_set macros!  Gross!  More work for me...
10537 EOM
10538                         d_fd_macros="$undef"
10539                 fi
10540         else
10541         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10542                 d_fd_set="$undef"
10543                 d_fds_bits="$undef"
10544                 d_fd_macros="$undef"
10545         fi
10546 fi
10547 $rm -f try try.*
10548
10549 : see if fgetpos exists
10550 set fgetpos d_fgetpos
10551 eval $inlibc
10552
10553 : see if finite exists
10554 set finite d_finite
10555 eval $inlibc
10556
10557 : see if finitel exists
10558 set finitel d_finitel
10559 eval $inlibc
10560
10561 : see if flock exists
10562 set flock d_flock
10563 eval $inlibc
10564
10565 : see if prototype for flock is available
10566 echo " "
10567 set d_flockproto flock $i_sysfile sys/file.h
10568 eval $hasproto
10569
10570 : see if fork exists
10571 set fork d_fork
10572 eval $inlibc
10573
10574 : see if fp_class exists
10575 set fp_class d_fp_class
10576 eval $inlibc
10577
10578 : see if pathconf exists
10579 set pathconf d_pathconf
10580 eval $inlibc
10581
10582 : see if fpathconf exists
10583 set fpathconf d_fpathconf
10584 eval $inlibc
10585
10586 : see if fpclass exists
10587 set fpclass d_fpclass
10588 eval $inlibc
10589
10590 : see if fpclassify exists
10591 set fpclassify d_fpclassify
10592 eval $inlibc
10593
10594 : see if fpclassl exists
10595 set fpclassl d_fpclassl
10596 eval $inlibc
10597
10598
10599 : check for fpos64_t
10600 echo " "
10601 echo "Checking to see if you have fpos64_t..." >&4
10602 $cat >try.c <<EOCP
10603 #include <stdio.h>
10604 int main() { fpos64_t x = 7; }
10605 EOCP
10606 set try
10607 if eval $compile; then
10608         val="$define"
10609         echo "You have fpos64_t."
10610 else
10611         val="$undef"
10612         echo "You do not have fpos64_t."
10613         case "$fpossize" in
10614         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10615         esac
10616 fi
10617 $rm -f try.* try
10618 set d_fpos64_t
10619 eval $setvar
10620
10621 : see if frexpl exists
10622 set frexpl d_frexpl
10623 eval $inlibc
10624
10625 : see if this is a sys/param system
10626 set sys/param.h i_sysparam
10627 eval $inhdr
10628
10629 : see if this is a sys/mount.h system
10630 set sys/mount.h i_sysmount
10631 eval $inhdr
10632
10633
10634 echo " "
10635 echo "Checking to see if your system supports struct fs_data..." >&4
10636 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10637 eval $hasstruct
10638 case "$d_fs_data_s" in
10639 "$define")      echo "Yes, it does."   ;;
10640 *)              echo "No, it doesn't." ;;
10641 esac
10642
10643 : see if fseeko exists
10644 set fseeko d_fseeko
10645 eval $inlibc
10646 case "$longsize" in
10647 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10648 esac
10649
10650 : see if fsetpos exists
10651 set fsetpos d_fsetpos
10652 eval $inlibc
10653
10654
10655 : see if fstatfs exists
10656 set fstatfs d_fstatfs
10657 eval $inlibc
10658
10659
10660 : see if statvfs exists
10661 set statvfs d_statvfs
10662 eval $inlibc
10663
10664 : see if fstatvfs exists
10665 set fstatvfs d_fstatvfs
10666 eval $inlibc
10667
10668
10669 : see if fsync exists
10670 set fsync d_fsync
10671 eval $inlibc
10672
10673 : see if ftello exists
10674 set ftello d_ftello
10675 eval $inlibc
10676 case "$longsize" in
10677 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10678 esac
10679
10680 : see if getcwd exists
10681 set getcwd d_getcwd
10682 eval $inlibc
10683
10684 : see if getespwnam exists
10685 set getespwnam d_getespwnam
10686 eval $inlibc
10687
10688
10689 : see if getfsstat exists
10690 set getfsstat d_getfsstat
10691 eval $inlibc
10692
10693 : see if getgrent exists
10694 set getgrent d_getgrent
10695 eval $inlibc
10696
10697 : see if gethostbyaddr exists
10698 set gethostbyaddr d_gethbyaddr
10699 eval $inlibc
10700
10701 : see if gethostbyname exists
10702 set gethostbyname d_gethbyname
10703 eval $inlibc
10704
10705 : see if gethostent exists
10706 set gethostent d_gethent
10707 eval $inlibc
10708
10709 : see how we will look up host name
10710 echo " "
10711 call=''
10712 if set gethostname val -f d_gethname; eval $csym; $val; then
10713         echo 'gethostname() found.' >&4
10714         d_gethname="$define"
10715         call=gethostname
10716 fi
10717 if set uname val -f d_uname; eval $csym; $val; then
10718         if ./xenix; then
10719                 $cat <<'EOM'
10720 uname() was found, but you're running xenix, and older versions of xenix
10721 have a broken uname(). If you don't really know whether your xenix is old
10722 enough to have a broken system call, use the default answer.
10723
10724 EOM
10725                 dflt=y
10726                 case "$d_uname" in
10727                 "$define") dflt=n;;
10728                 esac
10729                 rp='Is your uname() broken?'
10730                 . ./myread
10731                 case "$ans" in
10732                 n*) d_uname="$define"; call=uname;;
10733                 esac
10734         else
10735                 echo 'uname() found.' >&4
10736                 d_uname="$define"
10737                 case "$call" in
10738                 '') call=uname ;;
10739                 esac
10740         fi
10741 fi
10742 case "$d_gethname" in
10743 '') d_gethname="$undef";;
10744 esac
10745 case "$d_uname" in
10746 '') d_uname="$undef";;
10747 esac
10748 case "$d_uname$d_gethname" in
10749 *define*)
10750         dflt=n
10751         cat <<EOM
10752  
10753 Every now and then someone has a $call() that lies about the hostname
10754 but can't be fixed for political or economic reasons.  If you wish, I can
10755 pretend $call() isn't there and maybe compute hostname at run-time
10756 thanks to the '$phostname' command.
10757
10758 EOM
10759         rp="Shall I ignore $call() from now on?"
10760         . ./myread
10761         case "$ans" in
10762         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10763         esac;;
10764 esac
10765 case "$phostname" in
10766 '') aphostname='';;
10767 *) case "$aphostname" in
10768         /*) ;;
10769         *) set X $phostname
10770                 shift
10771                 file=$1
10772                 shift
10773                 file=`./loc $file $file $pth`
10774                 aphostname=`echo $file $*`
10775                 ;;
10776         esac
10777         ;;
10778 esac
10779 case "$d_uname$d_gethname" in
10780 *define*) ;;
10781 *)
10782         case "$phostname" in
10783         '')
10784                 echo "There will be no way for $package to get your hostname." >&4;;
10785         *)
10786         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10787                 ;;
10788         esac;;
10789 esac
10790 case "$d_phostname" in
10791 '') d_phostname="$undef";;
10792 esac
10793
10794 : see if this is a netdb.h system
10795 set netdb.h i_netdb
10796 eval $inhdr
10797
10798 : see if prototypes for various gethostxxx netdb.h functions are available
10799 echo " "
10800 set d_gethostprotos gethostent $i_netdb netdb.h
10801 eval $hasproto
10802
10803 : see if getitimer exists
10804 set getitimer d_getitimer
10805 eval $inlibc
10806
10807 : see if getlogin exists
10808 set getlogin d_getlogin
10809 eval $inlibc
10810
10811 : see if getmnt exists
10812 set getmnt d_getmnt
10813 eval $inlibc
10814
10815 : see if getmntent exists
10816 set getmntent d_getmntent
10817 eval $inlibc
10818
10819 : see if getnetbyaddr exists
10820 set getnetbyaddr d_getnbyaddr
10821 eval $inlibc
10822
10823 : see if getnetbyname exists
10824 set getnetbyname d_getnbyname
10825 eval $inlibc
10826
10827 : see if getnetent exists
10828 set getnetent d_getnent
10829 eval $inlibc
10830
10831 : see if prototypes for various getnetxxx netdb.h functions are available
10832 echo " "
10833 set d_getnetprotos getnetent $i_netdb netdb.h
10834 eval $hasproto
10835
10836 : see if getpagesize exists
10837 set getpagesize d_getpagsz
10838 eval $inlibc
10839
10840
10841 : see if getprotobyname exists
10842 set getprotobyname d_getpbyname
10843 eval $inlibc
10844
10845 : see if getprotobynumber exists
10846 set getprotobynumber d_getpbynumber
10847 eval $inlibc
10848
10849 : see if getprotoent exists
10850 set getprotoent d_getpent
10851 eval $inlibc
10852
10853 : see if getpgid exists
10854 set getpgid d_getpgid
10855 eval $inlibc
10856
10857 : see if getpgrp2 exists
10858 set getpgrp2 d_getpgrp2
10859 eval $inlibc
10860
10861 : see if getppid exists
10862 set getppid d_getppid
10863 eval $inlibc
10864
10865 : see if getpriority exists
10866 set getpriority d_getprior
10867 eval $inlibc
10868
10869 : see if prototypes for various getprotoxxx netdb.h functions are available
10870 echo " "
10871 set d_getprotoprotos getprotoent $i_netdb netdb.h
10872 eval $hasproto
10873
10874 : see if getprpwnam exists
10875 set getprpwnam d_getprpwnam
10876 eval $inlibc
10877
10878 : see if getpwent exists
10879 set getpwent d_getpwent
10880 eval $inlibc
10881
10882
10883 : see if getservbyname exists
10884 set getservbyname d_getsbyname
10885 eval $inlibc
10886
10887 : see if getservbyport exists
10888 set getservbyport d_getsbyport
10889 eval $inlibc
10890
10891 : see if getservent exists
10892 set getservent d_getsent
10893 eval $inlibc
10894
10895 : see if prototypes for various getservxxx netdb.h functions are available
10896 echo " "
10897 set d_getservprotos getservent $i_netdb netdb.h
10898 eval $hasproto
10899
10900 : see if getspnam exists
10901 set getspnam d_getspnam
10902 eval $inlibc
10903
10904 : see if gettimeofday or ftime exists
10905 set gettimeofday d_gettimeod
10906 eval $inlibc
10907 case "$d_gettimeod" in
10908 "$undef")
10909         set ftime d_ftime 
10910         eval $inlibc
10911         ;;
10912 *)
10913         val="$undef"; set d_ftime; eval $setvar
10914         ;;
10915 esac
10916 case "$d_gettimeod$d_ftime" in
10917 "$undef$undef")
10918         echo " "
10919         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10920         ;;
10921 esac
10922
10923 : see if this is an grp system
10924 set grp.h i_grp
10925 eval $inhdr
10926
10927 case "$i_grp" in
10928 $define)
10929         xxx=`./findhdr grp.h`
10930         $cppstdin $cppflags $cppminus < $xxx >$$.h
10931
10932         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10933                 val="$define"
10934         else
10935                 val="$undef"
10936         fi
10937         set d_grpasswd
10938         eval $setvar
10939
10940         $rm -f $$.h
10941         ;;
10942 *)
10943         val="$undef";
10944         set d_grpasswd; eval $setvar
10945         ;;
10946 esac
10947
10948 : see if hasmntopt exists
10949 set hasmntopt d_hasmntopt
10950 eval $inlibc
10951
10952 : see if this is a netinet/in.h or sys/in.h system
10953 set netinet/in.h i_niin sys/in.h i_sysin
10954 eval $inhdr
10955
10956 : see if arpa/inet.h has to be included
10957 set arpa/inet.h i_arpainet
10958 eval $inhdr
10959
10960 : see if htonl --and friends-- exists
10961 val=''
10962 set htonl val
10963 eval $inlibc
10964
10965 : Maybe they are macros.
10966 case "$val" in
10967 $undef)
10968         $cat >htonl.c <<EOM
10969 #include <stdio.h>
10970 #include <sys/types.h>
10971 #$i_niin I_NETINET_IN
10972 #$i_sysin I_SYS_IN
10973 #$i_arpainet I_ARPA_INET
10974 #ifdef I_NETINET_IN
10975 #include <netinet/in.h>
10976 #endif
10977 #ifdef I_SYS_IN
10978 #include <sys/in.h>
10979 #endif
10980 #ifdef I_ARPA_INET
10981 #include <arpa/inet.h>
10982 #endif
10983 #ifdef htonl
10984 printf("Defined as a macro.");
10985 #endif
10986 EOM
10987         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10988         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10989                 val="$define"
10990                 echo "But it seems to be defined as a macro." >&4
10991         fi
10992         $rm -f htonl.?
10993         ;;
10994 esac
10995 set d_htonl
10996 eval $setvar
10997
10998 : index or strchr
10999 echo " "
11000 if set index val -f; eval $csym; $val; then
11001         if set strchr val -f d_strchr; eval $csym; $val; then
11002                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
11003                         val="$define"
11004                         vali="$undef"
11005                         echo "strchr() found." >&4
11006                 else
11007                         val="$undef"
11008                         vali="$define"
11009                         echo "index() found." >&4
11010                 fi
11011         else
11012                 val="$undef"
11013                 vali="$define"
11014                 echo "index() found." >&4
11015         fi
11016 else
11017         if set strchr val -f d_strchr; eval $csym; $val; then
11018                 val="$define"
11019                 vali="$undef"
11020                 echo "strchr() found." >&4
11021         else
11022                 echo "No index() or strchr() found!" >&4
11023                 val="$undef"
11024                 vali="$undef"
11025         fi
11026 fi
11027 set d_strchr; eval $setvar
11028 val="$vali"
11029 set d_index; eval $setvar
11030
11031 : check whether inet_aton exists
11032 set inet_aton d_inetaton
11033 eval $inlibc
11034
11035 : Look for isascii
11036 echo " "
11037 $cat >isascii.c <<'EOCP'
11038 #include <stdio.h>
11039 #include <ctype.h>
11040 int main() {
11041         int c = 'A';
11042         if (isascii(c))
11043                 exit(0);
11044         else
11045                 exit(1);
11046 }
11047 EOCP
11048 set isascii
11049 if eval $compile; then
11050         echo "isascii() found." >&4
11051         val="$define"
11052 else
11053         echo "isascii() NOT found." >&4
11054         val="$undef"
11055 fi
11056 set d_isascii
11057 eval $setvar
11058 $rm -f isascii*
11059
11060 : see if isfinite exists
11061 set isfinite d_isfinite
11062 eval $inlibc
11063
11064 : see if isinf exists
11065 set isinf d_isinf
11066 eval $inlibc
11067
11068 : see if isnan exists
11069 set isnan d_isnan
11070 eval $inlibc
11071
11072 : see if isnanl exists
11073 set isnanl d_isnanl
11074 eval $inlibc
11075
11076 : see if killpg exists
11077 set killpg d_killpg
11078 eval $inlibc
11079
11080 : see if lchown exists
11081 echo " "
11082 $cat > try.c <<'EOCP'
11083 /* System header to define __stub macros and hopefully few prototypes,
11084     which can conflict with char lchown(); below.  */
11085 #include <assert.h>
11086 /* Override any gcc2 internal prototype to avoid an error.  */
11087 /* We use char because int might match the return type of a gcc2
11088    builtin and then its argument prototype would still apply.  */
11089 char lchown();
11090 int main() {
11091     /*  The GNU C library defines this for functions which it implements
11092         to always fail with ENOSYS.  Some functions are actually named
11093         something starting with __ and the normal name is an alias.  */
11094 #if defined (__stub_lchown) || defined (__stub___lchown)
11095 choke me
11096 #else
11097 lchown();
11098 #endif
11099 ; return 0; }
11100 EOCP
11101 set try
11102 if eval $compile; then
11103     $echo "lchown() found." >&4
11104     val="$define"
11105 else
11106     $echo "lchown() NOT found." >&4
11107     val="$undef"
11108 fi
11109 set d_lchown
11110 eval $setvar
11111
11112 : See if number of significant digits in a double precision number is known
11113 echo " "
11114 $cat >ldbl_dig.c <<EOM
11115 #$i_limits I_LIMITS
11116 #$i_float I_FLOAT
11117 #ifdef I_LIMITS
11118 #include <limits.h>
11119 #endif
11120 #ifdef I_FLOAT
11121 #include <float.h>
11122 #endif
11123 #ifdef LDBL_DIG
11124 printf("Contains LDBL_DIG");
11125 #endif
11126 EOM
11127 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
11128 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
11129         echo "LDBL_DIG found." >&4
11130         val="$define"
11131 else
11132         echo "LDBL_DIG NOT found." >&4
11133         val="$undef"
11134 fi
11135 $rm -f ldbl_dig.?
11136 set d_ldbl_dig
11137 eval $setvar
11138
11139 : see if link exists
11140 set link d_link
11141 eval $inlibc
11142
11143 : see if localeconv exists
11144 set localeconv d_locconv
11145 eval $inlibc
11146
11147 : see if lockf exists
11148 set lockf d_lockf
11149 eval $inlibc
11150
11151 : see if prototype for lseek is available
11152 echo " "
11153 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
11154 eval $hasproto
11155
11156 : see if lstat exists
11157 set lstat d_lstat
11158 eval $inlibc
11159
11160 : see if madvise exists
11161 set madvise d_madvise
11162 eval $inlibc
11163
11164 : see if mblen exists
11165 set mblen d_mblen
11166 eval $inlibc
11167
11168 : see if mbstowcs exists
11169 set mbstowcs d_mbstowcs
11170 eval $inlibc
11171
11172 : see if mbtowc exists
11173 set mbtowc d_mbtowc
11174 eval $inlibc
11175
11176 : see if memchr exists
11177 set memchr d_memchr
11178 eval $inlibc
11179
11180 : see if memcmp exists
11181 set memcmp d_memcmp
11182 eval $inlibc
11183
11184 : see if memcpy exists
11185 set memcpy d_memcpy
11186 eval $inlibc
11187
11188 : see if memmove exists
11189 set memmove d_memmove
11190 eval $inlibc
11191
11192 : see if memset exists
11193 set memset d_memset
11194 eval $inlibc
11195
11196 : see if mkdir exists
11197 set mkdir d_mkdir
11198 eval $inlibc
11199
11200 : see if mkdtemp exists
11201 set mkdtemp d_mkdtemp
11202 eval $inlibc
11203
11204 : see if mkfifo exists
11205 set mkfifo d_mkfifo
11206 eval $inlibc
11207
11208 : see if mkstemp exists
11209 set mkstemp d_mkstemp
11210 eval $inlibc
11211
11212 : see if mkstemps exists
11213 set mkstemps d_mkstemps
11214 eval $inlibc
11215
11216 : see if mktime exists
11217 set mktime d_mktime
11218 eval $inlibc
11219
11220 : see if this is a sys/mman.h system
11221 set sys/mman.h i_sysmman
11222 eval $inhdr
11223
11224 : see if mmap exists
11225 set mmap d_mmap
11226 eval $inlibc
11227 : see what shmat returns
11228 : default to something harmless
11229 mmaptype='void *'
11230 case "$i_sysmman$d_mmap" in
11231 "$define$define")
11232         $cat >mmap.c <<'END'
11233 #include <sys/mman.h>
11234 void *mmap();
11235 END
11236         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
11237                 mmaptype='void *'
11238         else
11239                 mmaptype='caddr_t'
11240         fi
11241         echo "and it returns ($mmaptype)." >&4
11242         ;;
11243 esac
11244
11245
11246
11247 : see if mprotect exists
11248 set mprotect d_mprotect
11249 eval $inlibc
11250
11251 : see if msgctl exists
11252 set msgctl d_msgctl
11253 eval $inlibc
11254
11255 : see if msgget exists
11256 set msgget d_msgget
11257 eval $inlibc
11258
11259 : see if msgsnd exists
11260 set msgsnd d_msgsnd
11261 eval $inlibc
11262
11263 : see if msgrcv exists
11264 set msgrcv d_msgrcv
11265 eval $inlibc
11266
11267 : see how much of the 'msg*(2)' library is present.
11268 h_msg=true
11269 echo " "
11270 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
11271 *"$undef"*) h_msg=false;;
11272 esac
11273 case "$osname" in
11274 freebsd)
11275     case "`ipcs 2>&1`" in
11276     "SVID messages"*"not configured"*)
11277         echo "Your $osname does not have the msg*(2) configured." >&4
11278         h_msg=false
11279         val="$undef"
11280         set msgctl d_msgctl
11281         eval $setvar
11282         set msgget d_msgget
11283         eval $setvar
11284         set msgsnd d_msgsnd
11285         eval $setvar
11286         set msgrcv d_msgrcv
11287         eval $setvar
11288         ;;
11289     esac
11290     ;;
11291 esac
11292 : we could also check for sys/ipc.h ...
11293 if $h_msg && $test `./findhdr sys/msg.h`; then
11294         echo "You have the full msg*(2) library." >&4
11295         val="$define"
11296 else
11297         echo "You don't have the full msg*(2) library." >&4
11298         val="$undef"
11299 fi
11300 set d_msg
11301 eval $setvar
11302
11303
11304 echo " "
11305 echo "Checking to see if your system supports struct msghdr..." >&4
11306 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11307 eval $hasstruct
11308 case "$d_msghdr_s" in
11309 "$define")      echo "Yes, it does."   ;;
11310 *)              echo "No, it doesn't." ;;
11311 esac
11312
11313
11314 : see if msync exists
11315 set msync d_msync
11316 eval $inlibc
11317
11318 : see if munmap exists
11319 set munmap d_munmap
11320 eval $inlibc
11321
11322 : see if nice exists
11323 set nice d_nice
11324 eval $inlibc
11325
11326 : see if this is a langinfo.h system
11327 set langinfo.h i_langinfo
11328 eval $inhdr
11329
11330 : see if nl_langinfo exists
11331 set nl_langinfo d_nl_langinfo
11332 eval $inlibc
11333
11334 : check for length of character
11335 echo " "
11336 case "$charsize" in
11337 '')
11338         echo "Checking to see how big your characters are (hey, you never know)..." >&4
11339         $cat >try.c <<'EOCP'
11340 #include <stdio.h>
11341 int main()
11342 {
11343     printf("%d\n", (int)sizeof(char));
11344     exit(0);
11345 }
11346 EOCP
11347         set try
11348         if eval $compile_ok; then
11349                 dflt=`$run ./try`
11350         else
11351                 dflt='1'
11352                 echo "(I can't seem to compile the test program.  Guessing...)"
11353         fi
11354         ;;
11355 *)
11356         dflt="$charsize"
11357         ;;
11358 esac
11359 rp="What is the size of a character (in bytes)?"
11360 . ./myread
11361 charsize="$ans"
11362 $rm -f try.c try
11363
11364 : check for volatile keyword
11365 echo " "
11366 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11367 $cat >try.c <<'EOCP'
11368 int main()
11369 {
11370         typedef struct _goo_struct goo_struct;
11371         goo_struct * volatile goo = ((goo_struct *)0);
11372         struct _goo_struct {
11373                 long long_int;
11374                 int reg_int;
11375                 char char_var;
11376         };
11377         typedef unsigned short foo_t;
11378         char *volatile foo;
11379         volatile int bar;
11380         volatile foo_t blech;
11381         foo = foo;
11382 }
11383 EOCP
11384 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11385         val="$define"
11386         echo "Yup, it does."
11387 else
11388         val="$undef"
11389         echo "Nope, it doesn't."
11390 fi
11391 set d_volatile
11392 eval $setvar
11393 $rm -f try.*
11394
11395
11396 echo " "
11397 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11398
11399 case "$use64bitint:$d_quad:$quadtype" in
11400 define:define:?*)
11401         ivtype="$quadtype"
11402         uvtype="$uquadtype"
11403         ivsize=8
11404         uvsize=8
11405         ;;
11406 *)      ivtype="long"
11407         uvtype="unsigned long"
11408         ivsize=$longsize
11409         uvsize=$longsize
11410         ;;
11411 esac
11412
11413 case "$uselongdouble:$d_longdbl" in
11414 define:define)
11415         nvtype="long double"
11416         nvsize=$longdblsize
11417         ;;
11418 *)      nvtype=double
11419         nvsize=$doublesize
11420         ;;
11421 esac
11422
11423 $echo "(IV will be "$ivtype", $ivsize bytes)"
11424 $echo "(UV will be "$uvtype", $uvsize bytes)"
11425 $echo "(NV will be "$nvtype", $nvsize bytes)"
11426
11427 $cat >try.c <<EOCP
11428 #$i_inttypes I_INTTYPES
11429 #ifdef I_INTTYPES
11430 #include <inttypes.h>
11431 #endif
11432 #include <stdio.h>
11433 int main() {
11434 #ifdef INT8
11435    int8_t i =  INT8_MAX;
11436   uint8_t u = UINT8_MAX;
11437   printf("int8_t\n");
11438 #endif
11439 #ifdef INT16
11440    int16_t i =  INT16_MAX;
11441   uint16_t i = UINT16_MAX;
11442   printf("int16_t\n");
11443 #endif
11444 #ifdef INT32
11445    int32_t i =  INT32_MAX;
11446   uint32_t u = UINT32_MAX;
11447   printf("int32_t\n");
11448 #endif
11449 }
11450 EOCP
11451
11452 case "$i8type" in
11453 '')     case "$charsize" in
11454         1)      i8type=char
11455                 u8type="unsigned char"
11456                 i8size=$charsize
11457                 u8size=$charsize
11458                 ;;
11459         esac
11460         ;;
11461 esac
11462 case "$i8type" in
11463 '')     set try -DINT8
11464         if eval $compile; then
11465                 case "`$run ./try`" in
11466                 int8_t) i8type=int8_t
11467                         u8type=uint8_t
11468                         i8size=1
11469                         u8size=1
11470                         ;;
11471                 esac
11472         fi
11473         ;;
11474 esac
11475 case "$i8type" in
11476 '')     if $test $charsize -ge 1; then
11477                 i8type=char
11478                 u8type="unsigned char"
11479                 i8size=$charsize
11480                 u8size=$charsize
11481         fi
11482         ;;
11483 esac
11484
11485 case "$i16type" in
11486 '')     case "$shortsize" in
11487         2)      i16type=short
11488                 u16type="unsigned short"
11489                 i16size=$shortsize
11490                 u16size=$shortsize
11491                 ;;
11492         esac
11493         ;;
11494 esac
11495 case "$i16type" in
11496 '')     set try -DINT16
11497         if eval $compile; then
11498                 case "`$run ./try`" in
11499                 int16_t)
11500                         i16type=int16_t
11501                         u16type=uint16_t
11502                         i16size=2
11503                         u16size=2
11504                         ;;
11505                 esac
11506         fi
11507         ;;
11508 esac
11509 case "$i16type" in
11510 '')     if $test $shortsize -ge 2; then
11511                 i16type=short
11512                 u16type="unsigned short"
11513                 i16size=$shortsize
11514                 u16size=$shortsize
11515         fi
11516         ;;
11517 esac
11518
11519 case "$i32type" in
11520 '')     case "$longsize" in
11521         4)      i32type=long
11522                 u32type="unsigned long"
11523                 i32size=$longsize
11524                 u32size=$longsize
11525                 ;;
11526         *)      case "$intsize" in
11527                 4)      i32type=int
11528                         u32type="unsigned int"
11529                         i32size=$intsize
11530                         u32size=$intsize
11531                         ;;
11532                 esac
11533                 ;;
11534         esac
11535         ;;
11536 esac
11537 case "$i32type" in
11538 '')     set try -DINT32
11539         if eval $compile; then
11540                 case "`$run ./try`" in
11541                 int32_t)
11542                         i32type=int32_t
11543                         u32type=uint32_t
11544                         i32size=4
11545                         u32size=4
11546                         ;;
11547                 esac
11548         fi
11549         ;;
11550 esac
11551 case "$i32type" in
11552 '')     if $test $intsize -ge 4; then
11553                 i32type=int
11554                 u32type="unsigned int"
11555                 i32size=$intsize
11556                 u32size=$intsize
11557         fi
11558         ;;
11559 esac
11560
11561 case "$i64type" in
11562 '')     case "$d_quad:$quadtype" in
11563         define:?*)
11564                 i64type="$quadtype"
11565                 u64type="$uquadtype"
11566                 i64size=8
11567                 u64size=8
11568                 ;;
11569         esac
11570         ;;
11571 esac
11572
11573 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11574 : volatile so that the compiler has to store it out to memory.
11575 if test X"$d_volatile" = X"$define"; then
11576         volatile=volatile
11577 fi
11578 $cat <<EOP >try.c
11579 #include <stdio.h>
11580 #include <sys/types.h>
11581 #include <signal.h>
11582 #ifdef SIGFPE
11583 $volatile int bletched = 0;
11584 $signal_t blech(s) int s; { bletched = 1; }
11585 #endif
11586 int main() {
11587     $uvtype u = 0;
11588     $nvtype d;
11589     int     n = 8 * $uvsize;
11590     int     i;
11591 #ifdef SIGFPE
11592     signal(SIGFPE, blech);
11593 #endif
11594
11595     for (i = 0; i < n; i++) {
11596       u = u << 1 | ($uvtype)1;
11597       d = ($nvtype)u;
11598       if (($uvtype)d != u)
11599         break;
11600       if (d <= 0)
11601         break;
11602       d = ($nvtype)(u - 1);
11603       if (($uvtype)d != (u - 1))
11604         break;
11605 #ifdef SIGFPE
11606       if (bletched) {
11607         break;
11608 #endif
11609       } 
11610     }
11611     printf("%d\n", ((i == n) ? -n : i));
11612     exit(0);
11613 }
11614 EOP
11615 set try
11616
11617 d_nv_preserves_uv="$undef"
11618 if eval $compile; then
11619         d_nv_preserves_uv_bits="`$run ./try`"
11620 fi
11621 case "$d_nv_preserves_uv_bits" in
11622 \-[1-9]*)       
11623         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11624         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11625         d_nv_preserves_uv="$define"
11626         ;;
11627 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11628         d_nv_preserves_uv="$undef" ;;
11629 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11630         d_nv_preserves_uv_bits="$undef" ;;
11631 esac
11632
11633 $rm -f try.* try
11634
11635
11636 : check for off64_t
11637 echo " "
11638 echo "Checking to see if you have off64_t..." >&4
11639 $cat >try.c <<EOCP
11640 #include <sys/types.h>
11641 #include <unistd.h>
11642 int main() { off64_t x = 7; }
11643 EOCP
11644 set try
11645 if eval $compile; then
11646         val="$define"
11647         echo "You have off64_t."
11648 else
11649         val="$undef"
11650         echo "You do not have off64_t."
11651         case "$lseeksize" in
11652         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11653         esac
11654 fi
11655 $rm -f try.* try
11656 set d_off64_t
11657 eval $setvar
11658
11659 : see if POSIX threads are available
11660 set pthread.h i_pthread
11661 eval $inhdr
11662
11663
11664
11665
11666 : how to create joinable pthreads
11667 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11668         echo " "
11669         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11670         $cat >try.c <<'EOCP'
11671 #include <pthread.h>
11672 int main() {
11673     int detachstate = JOINABLE;
11674 }
11675 EOCP
11676         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11677         if eval $compile; then
11678                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11679                 val="$undef" # Yes, undef.
11680                 set d_old_pthread_create_joinable
11681                 eval $setvar
11682                 val=""
11683                 set old_pthread_create_joinable
11684                 eval $setvar
11685         else
11686                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11687                 if eval $compile; then
11688                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11689                         val="$define"
11690                         set d_old_pthread_create_joinable
11691                         eval $setvar
11692                         val=PTHREAD_CREATE_UNDETACHED
11693                         set old_pthread_create_joinable
11694                         eval $setvar
11695                 else            
11696                         set try -DJOINABLE=__UNDETACHED
11697                         if eval $compile; then
11698                                 echo "You seem to use __UNDETACHED." >&4
11699                                 val="$define"
11700                                 set d_old_pthread_create_joinable
11701                                 eval $setvar
11702                                 val=__UNDETACHED
11703                                 set old_pthread_create_joinable
11704                                 eval $setvar
11705                         else
11706                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11707                                 val="$define"
11708                                 set d_old_pthread_create_joinable
11709                                 eval $setvar
11710                                 val=0
11711                                 set old_pthread_create_joinable
11712                                 eval $setvar
11713                         fi
11714                 fi
11715         fi
11716         $rm -f try try.*
11717 else
11718     d_old_pthread_create_joinable="$undef"
11719     old_pthread_create_joinable=""
11720 fi
11721
11722 : see if pause exists
11723 set pause d_pause
11724 eval $inlibc
11725
11726 : see if pipe exists
11727 set pipe d_pipe
11728 eval $inlibc
11729
11730 : see if poll exists
11731 set poll d_poll
11732 eval $inlibc
11733
11734 : see if readlink exists
11735 set readlink d_readlink
11736 eval $inlibc
11737
11738 echo " "
11739 procselfexe=''
11740 val="$undef"
11741 case "$d_readlink" in
11742 "$define")
11743         if $issymlink /proc/self/exe ; then
11744                 $ls -l /proc/self/exe > reflect
11745                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
11746                         echo "You have Linux-like /proc/self/exe."
11747                         procselfexe='"/proc/self/exe"'
11748                         val="$define"
11749                 fi
11750         fi
11751         if $issymlink /proc/curproc/file ; then
11752                 $ls -l /proc/curproc/file > reflect
11753                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
11754                         echo "You have BSD-like /proc/curproc/file."
11755                         procselfexe='"/proc/curproc/file"'
11756                         val="$define"
11757                 fi
11758         fi
11759         ;;
11760 esac
11761 $rm -f reflect
11762 set d_procselfexe
11763 eval $setvar
11764
11765 : see if pthread_atfork exists
11766 set pthread_atfork d_pthread_atfork
11767 eval $inlibc
11768
11769
11770 : see whether the various POSIXish _yields exist
11771 $cat >try.c <<EOP
11772 #include <pthread.h>
11773 #include <stdio.h>
11774 int main() {
11775 #ifdef SCHED_YIELD
11776         sched_yield();
11777 #else
11778 #ifdef PTHREAD_YIELD
11779         pthread_yield();
11780 #else
11781 #ifdef PTHREAD_YIELD_NULL
11782         pthread_yield(NULL);
11783 #endif
11784 #endif
11785 #endif
11786 }
11787 EOP
11788 : see if sched_yield exists
11789 set try -DSCHED_YIELD
11790 if eval $compile; then
11791     val="$define"
11792     sched_yield='sched_yield()'
11793 else
11794     val="$undef"
11795 fi
11796 case "$usethreads" in
11797 $define)
11798         case "$val" in
11799         $define) echo 'sched_yield() found.' >&4        ;;
11800         *)       echo 'sched_yield() NOT found.' >&4    ;;
11801         esac
11802 esac
11803 set d_sched_yield
11804 eval $setvar
11805
11806 : see if pthread_yield exists
11807 set try -DPTHREAD_YIELD
11808 if eval $compile; then
11809     val="$define"
11810     case "$sched_yield" in
11811     '') sched_yield='pthread_yield()' ;;
11812     esac
11813 else
11814     set try -DPTHREAD_YIELD_NULL
11815     if eval $compile; then
11816         val="$define"
11817         case "$sched_yield" in
11818         '') sched_yield='pthread_yield(NULL)' ;;
11819         esac
11820     else
11821         val="$undef"
11822     fi
11823 fi
11824 case "$usethreads" in
11825 $define)
11826         case "$val" in
11827         $define) echo 'pthread_yield() found.' >&4      ;;
11828         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11829         esac
11830         ;;
11831 esac
11832 set d_pthread_yield
11833 eval $setvar
11834
11835 case "$sched_yield" in
11836 '') sched_yield=undef ;;
11837 esac
11838
11839 $rm -f try try.*
11840
11841 : see if this is a pwd.h system
11842 set pwd.h i_pwd
11843 eval $inhdr
11844
11845 case "$i_pwd" in
11846 $define)
11847         xxx=`./findhdr pwd.h`
11848         $cppstdin $cppflags $cppminus < $xxx >$$.h
11849
11850         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11851                 val="$define"
11852         else
11853                 val="$undef"
11854         fi
11855         set d_pwquota
11856         eval $setvar
11857
11858         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11859                 val="$define"
11860         else
11861                 val="$undef"
11862         fi
11863         set d_pwage
11864         eval $setvar
11865
11866         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11867                 val="$define"
11868         else
11869                 val="$undef"
11870         fi
11871         set d_pwchange
11872         eval $setvar
11873
11874         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11875                 val="$define"
11876         else
11877                 val="$undef"
11878         fi
11879         set d_pwclass
11880         eval $setvar
11881
11882         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11883                 val="$define"
11884         else
11885                 val="$undef"
11886         fi
11887         set d_pwexpire
11888         eval $setvar
11889
11890         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11891                 val="$define"
11892         else
11893                 val="$undef"
11894         fi
11895         set d_pwcomment
11896         eval $setvar
11897
11898         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11899                 val="$define"
11900         else
11901                 val="$undef"
11902         fi
11903         set d_pwgecos
11904         eval $setvar
11905
11906         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11907                 val="$define"
11908         else
11909                 val="$undef"
11910         fi
11911         set d_pwpasswd
11912         eval $setvar
11913
11914         $rm -f $$.h
11915         ;;
11916 *)
11917         val="$undef"; 
11918         set d_pwquota; eval $setvar
11919         set d_pwage; eval $setvar
11920         set d_pwchange; eval $setvar
11921         set d_pwclass; eval $setvar
11922         set d_pwexpire; eval $setvar
11923         set d_pwcomment; eval $setvar
11924         set d_pwgecos; eval $setvar
11925         set d_pwpasswd; eval $setvar
11926         ;;
11927 esac
11928
11929 : see if readdir and friends exist
11930 set readdir d_readdir
11931 eval $inlibc
11932 set seekdir d_seekdir
11933 eval $inlibc
11934 set telldir d_telldir
11935 eval $inlibc
11936 set rewinddir d_rewinddir
11937 eval $inlibc
11938
11939 : see if readv exists
11940 set readv d_readv
11941 eval $inlibc
11942
11943 : see if recvmsg exists
11944 set recvmsg d_recvmsg
11945 eval $inlibc
11946
11947 : see if rename exists
11948 set rename d_rename
11949 eval $inlibc
11950
11951 : see if rmdir exists
11952 set rmdir d_rmdir
11953 eval $inlibc
11954
11955 : see if memory.h is available.
11956 val=''
11957 set memory.h val
11958 eval $inhdr
11959
11960 : See if it conflicts with string.h
11961 case "$val" in
11962 $define)
11963         case "$strings" in
11964         '') ;;
11965         *)
11966                 $cppstdin $cppflags $cppminus < $strings > mem.h
11967                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11968                         echo " "
11969                         echo "We won't be including <memory.h>."
11970                         val="$undef"
11971                 fi
11972                 $rm -f mem.h
11973                 ;;
11974         esac
11975 esac
11976 set i_memory
11977 eval $setvar
11978
11979 : can bcopy handle overlapping blocks?
11980 echo " "
11981 val="$undef"
11982 case "$d_memmove" in
11983 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11984 *)      case "$d_bcopy" in
11985         "$define")
11986                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11987                 $cat >try.c <<EOCP
11988 #$i_memory I_MEMORY
11989 #$i_stdlib I_STDLIB
11990 #$i_string I_STRING
11991 #$i_unistd I_UNISTD
11992 EOCP
11993         $cat >>try.c <<'EOCP'
11994 #include <stdio.h>
11995 #ifdef I_MEMORY
11996 #  include <memory.h>
11997 #endif
11998 #ifdef I_STDLIB
11999 #  include <stdlib.h>
12000 #endif
12001 #ifdef I_STRING
12002 #  include <string.h>
12003 #else
12004 #  include <strings.h>
12005 #endif
12006 #ifdef I_UNISTD
12007 #  include <unistd.h>  /* Needed for NetBSD */
12008 #endif
12009 int main()
12010 {
12011 char buf[128], abc[128];
12012 char *b;
12013 int len;
12014 int off;
12015 int align;
12016
12017 /* Copy "abcde..." string to char abc[] so that gcc doesn't
12018    try to store the string in read-only memory. */
12019 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
12020
12021 for (align = 7; align >= 0; align--) {
12022         for (len = 36; len; len--) {
12023                 b = buf+align;
12024                 bcopy(abc, b, len);
12025                 for (off = 1; off <= len; off++) {
12026                         bcopy(b, b+off, len);
12027                         bcopy(b+off, b, len);
12028                         if (bcmp(b, abc, len))
12029                                 exit(1);
12030                 }
12031         }
12032 }
12033 exit(0);
12034 }
12035 EOCP
12036                 set try
12037                 if eval $compile_ok; then
12038                         if ./try 2>/dev/null; then
12039                                 echo "Yes, it can."
12040                                 val="$define"
12041                         else
12042                                 echo "It can't, sorry."
12043                         fi
12044                 else
12045                         echo "(I can't compile the test program, so we'll assume not...)"
12046                 fi
12047                 ;;
12048         esac
12049         $rm -f try.* try core
12050         ;;
12051 esac
12052 set d_safebcpy
12053 eval $setvar
12054
12055 : can memcpy handle overlapping blocks?
12056 echo " "
12057 val="$undef"
12058 case "$d_memmove" in
12059 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
12060 *)      case "$d_memcpy" in
12061         "$define")
12062                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
12063                 $cat >try.c <<EOCP
12064 #$i_memory I_MEMORY
12065 #$i_stdlib I_STDLIB
12066 #$i_string I_STRING
12067 #$i_unistd I_UNISTD
12068 EOCP
12069         $cat >>try.c <<'EOCP'
12070 #include <stdio.h>
12071 #ifdef I_MEMORY
12072 #  include <memory.h>
12073 #endif
12074 #ifdef I_STDLIB
12075 #  include <stdlib.h>
12076 #endif
12077 #ifdef I_STRING
12078 #  include <string.h>
12079 #else
12080 #  include <strings.h>
12081 #endif
12082 #ifdef I_UNISTD
12083 #  include <unistd.h>  /* Needed for NetBSD */
12084 #endif
12085 int main()
12086 {
12087 char buf[128], abc[128];
12088 char *b;
12089 int len;
12090 int off;
12091 int align;
12092
12093 /* Copy "abcde..." string to char abc[] so that gcc doesn't
12094    try to store the string in read-only memory. */
12095 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
12096
12097 for (align = 7; align >= 0; align--) {
12098         for (len = 36; len; len--) {
12099                 b = buf+align;
12100                 memcpy(b, abc, len);
12101                 for (off = 1; off <= len; off++) {
12102                         memcpy(b+off, b, len);
12103                         memcpy(b, b+off, len);
12104                         if (memcmp(b, abc, len))
12105                                 exit(1);
12106                 }
12107         }
12108 }
12109 exit(0);
12110 }
12111 EOCP
12112                 set try
12113                 if eval $compile_ok; then
12114                         if ./try 2>/dev/null; then
12115                                 echo "Yes, it can."
12116                                 val="$define"
12117                         else
12118                                 echo "It can't, sorry."
12119                         fi
12120                 else
12121                         echo "(I can't compile the test program, so we'll assume not...)"
12122                 fi
12123                 ;;
12124         esac
12125         $rm -f try.* try core
12126         ;;
12127 esac
12128 set d_safemcpy
12129 eval $setvar
12130
12131 : can memcmp be trusted to compare relative magnitude?
12132 val="$undef"
12133 case "$d_memcmp" in
12134 "$define")
12135         echo " "
12136         echo "Checking if your memcmp() can compare relative magnitude..." >&4
12137         $cat >try.c <<EOCP
12138 #$i_memory I_MEMORY
12139 #$i_stdlib I_STDLIB
12140 #$i_string I_STRING
12141 #$i_unistd I_UNISTD
12142 EOCP
12143         $cat >>try.c <<'EOCP'
12144 #include <stdio.h>
12145 #ifdef I_MEMORY
12146 #  include <memory.h>
12147 #endif
12148 #ifdef I_STDLIB
12149 #  include <stdlib.h>
12150 #endif
12151 #ifdef I_STRING
12152 #  include <string.h>
12153 #else
12154 #  include <strings.h>
12155 #endif
12156 #ifdef I_UNISTD
12157 #  include <unistd.h>  /* Needed for NetBSD */
12158 #endif
12159 int main()
12160 {
12161 char a = -1;
12162 char b = 0;
12163 if ((a < b) && memcmp(&a, &b, 1) < 0)
12164         exit(1);
12165 exit(0);
12166 }
12167 EOCP
12168         set try
12169         if eval $compile_ok; then
12170                 if $run ./try 2>/dev/null; then
12171                         echo "Yes, it can."
12172                         val="$define"
12173                 else
12174                         echo "No, it can't (it uses signed chars)."
12175                 fi
12176         else
12177                 echo "(I can't compile the test program, so we'll assume not...)"
12178         fi
12179         ;;
12180 esac
12181 $rm -f try.* try core
12182 set d_sanemcmp
12183 eval $setvar
12184
12185 : see if prototype for sbrk is available
12186 echo " "
12187 set d_sbrkproto sbrk $i_unistd unistd.h
12188 eval $hasproto
12189
12190 : see if select exists
12191 set select d_select
12192 eval $inlibc
12193
12194 : see if semctl exists
12195 set semctl d_semctl
12196 eval $inlibc
12197
12198 : see if semget exists
12199 set semget d_semget
12200 eval $inlibc
12201
12202 : see if semop exists
12203 set semop d_semop
12204 eval $inlibc
12205
12206 : see how much of the 'sem*(2)' library is present.
12207 h_sem=true
12208 echo " "
12209 case "$d_semctl$d_semget$d_semop" in
12210 *"$undef"*) h_sem=false;;
12211 esac
12212 case "$osname" in
12213 freebsd)
12214     case "`ipcs 2>&1`" in
12215     "SVID messages"*"not configured"*)
12216         echo "Your $osname does not have the sem*(2) configured." >&4
12217         h_sem=false
12218         val="$undef"
12219         set semctl d_semctl
12220         eval $setvar
12221         set semget d_semget
12222         eval $setvar
12223         set semop d_semop
12224         eval $setvar
12225         ;;
12226     esac
12227     ;;
12228 esac
12229 : we could also check for sys/ipc.h ...
12230 if $h_sem && $test `./findhdr sys/sem.h`; then
12231         echo "You have the full sem*(2) library." >&4
12232         val="$define"
12233 else
12234         echo "You don't have the full sem*(2) library." >&4
12235         val="$undef"
12236 fi
12237 set d_sem
12238 eval $setvar
12239
12240 : see whether sys/sem.h defines union semun
12241 echo " "
12242 $cat > try.c <<'END'
12243 #include <sys/types.h>
12244 #include <sys/ipc.h>
12245 #include <sys/sem.h>
12246 int main () { union semun semun; semun.buf = 0; }
12247 END
12248 set try
12249 if eval $compile; then
12250     echo "You have union semun in <sys/sem.h>." >&4
12251     val="$define"
12252 else
12253     echo "You do not have union semun in <sys/sem.h>." >&4
12254     val="$undef"
12255 fi
12256 $rm -f try try.c try.h
12257 set d_union_semun
12258 eval $setvar
12259
12260 : see how to do semctl IPC_STAT
12261 case "$d_sem" in
12262 $define)
12263     : see whether semctl IPC_STAT can use union semun
12264     echo " "
12265     $cat > try.h <<END
12266 #ifndef S_IRUSR
12267 #   ifdef S_IREAD
12268 #       define S_IRUSR S_IREAD
12269 #       define S_IWUSR S_IWRITE
12270 #       define S_IXUSR S_IEXEC
12271 #   else
12272 #       define S_IRUSR 0400
12273 #       define S_IWUSR 0200
12274 #       define S_IXUSR 0100
12275 #   endif
12276 #   define S_IRGRP (S_IRUSR>>3)
12277 #   define S_IWGRP (S_IWUSR>>3)
12278 #   define S_IXGRP (S_IXUSR>>3)
12279 #   define S_IROTH (S_IRUSR>>6)
12280 #   define S_IWOTH (S_IWUSR>>6)
12281 #   define S_IXOTH (S_IXUSR>>6)
12282 #endif
12283 #ifndef S_IRWXU
12284 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
12285 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
12286 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
12287 #endif
12288 END
12289
12290     $cat > try.c <<END
12291 #include <sys/types.h>
12292 #include <sys/ipc.h>
12293 #include <sys/sem.h>
12294 #include <sys/stat.h>
12295 #include <stdio.h>
12296 #include <errno.h>
12297 #include "try.h"
12298 #ifndef errno
12299 extern int errno;
12300 #endif
12301 #$d_union_semun HAS_UNION_SEMUN
12302 int main() {
12303     union semun
12304 #ifndef HAS_UNION_SEMUN
12305     {
12306         int val;
12307         struct semid_ds *buf;
12308         unsigned short *array;
12309     }
12310 #endif
12311     arg;
12312     int sem, st;
12313
12314 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12315     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12316     if (sem > -1) {
12317         struct semid_ds argbuf;
12318         arg.buf = &argbuf;
12319 #       ifdef IPC_STAT
12320         st = semctl(sem, 0, IPC_STAT, arg);
12321         if (st == 0)
12322             printf("semun\n");
12323         else
12324 #       endif /* IPC_STAT */
12325             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12326 #       ifdef IPC_RMID
12327         if (semctl(sem, 0, IPC_RMID, arg) != 0)
12328 #       endif /* IPC_RMID */
12329             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12330     } else
12331 #endif /* IPC_PRIVATE && ... */
12332         printf("semget failed: errno = %d\n", errno);
12333   return 0;
12334 }
12335 END
12336     val="$undef"
12337     set try
12338     if eval $compile; then
12339         xxx=`$run ./try`
12340         case "$xxx" in
12341         semun) val="$define" ;;
12342         esac
12343     fi
12344     $rm -f try try.c
12345     set d_semctl_semun
12346     eval $setvar
12347     case "$d_semctl_semun" in
12348     $define)
12349         echo "You can use union semun for semctl IPC_STAT." >&4
12350         also='also'
12351         ;;
12352     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
12353         also=''
12354         ;;
12355     esac
12356
12357     : see whether semctl IPC_STAT can use struct semid_ds pointer
12358     $cat > try.c <<'END'
12359 #include <sys/types.h>
12360 #include <sys/ipc.h>
12361 #include <sys/sem.h>
12362 #include <sys/stat.h>
12363 #include "try.h"
12364 #include <stdio.h>
12365 #include <errno.h>
12366 #ifndef errno
12367 extern int errno;
12368 #endif
12369 int main() {
12370     struct semid_ds arg;
12371     int sem, st;
12372
12373 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
12374     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12375     if (sem > -1) {
12376 #       ifdef IPC_STAT
12377         st = semctl(sem, 0, IPC_STAT, &arg);
12378         if (st == 0)
12379             printf("semid_ds\n");
12380         else
12381 #       endif /* IPC_STAT */
12382             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12383 #       ifdef IPC_RMID
12384         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12385 #       endif /* IPC_RMID */
12386             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12387     } else
12388 #endif /* IPC_PRIVATE && ... */
12389         printf("semget failed: errno = %d\n", errno);
12390
12391     return 0;
12392 }
12393 END
12394     val="$undef"
12395     set try
12396     if eval $compile; then
12397         xxx=`$run ./try`
12398         case "$xxx" in
12399         semid_ds) val="$define" ;;
12400         esac
12401     fi
12402     $rm -f try try.c
12403     set d_semctl_semid_ds
12404     eval $setvar
12405     case "$d_semctl_semid_ds" in
12406     $define)
12407         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12408         ;;
12409     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12410         ;;
12411     esac
12412     $rm -f try.h
12413     ;;
12414 *)  val="$undef"
12415
12416     # We do not have the full sem*(2) library, so assume we can not
12417     # use either.
12418
12419     set d_semctl_semun
12420     eval $setvar
12421
12422     set d_semctl_semid_ds
12423     eval $setvar
12424     ;;
12425 esac
12426
12427 : see if sendmsg exists
12428 set sendmsg d_sendmsg
12429 eval $inlibc
12430
12431 : see if setegid exists
12432 set setegid d_setegid
12433 eval $inlibc
12434
12435 : see if seteuid exists
12436 set seteuid d_seteuid
12437 eval $inlibc
12438
12439 : see if setgrent exists
12440 set setgrent d_setgrent
12441 eval $inlibc
12442
12443 : see if sethostent exists
12444 set sethostent d_sethent
12445 eval $inlibc
12446
12447 : see if setitimer exists
12448 set setitimer d_setitimer
12449 eval $inlibc
12450
12451 : see if setlinebuf exists
12452 set setlinebuf d_setlinebuf
12453 eval $inlibc
12454
12455 : see if setlocale exists
12456 set setlocale d_setlocale
12457 eval $inlibc
12458
12459 : see if setnetent exists
12460 set setnetent d_setnent
12461 eval $inlibc
12462
12463 : see if setprotoent exists
12464 set setprotoent d_setpent
12465 eval $inlibc
12466
12467 : see if setpgid exists
12468 set setpgid d_setpgid
12469 eval $inlibc
12470
12471 : see if setpgrp2 exists
12472 set setpgrp2 d_setpgrp2
12473 eval $inlibc
12474
12475 : see if setpriority exists
12476 set setpriority d_setprior
12477 eval $inlibc
12478
12479 : see if setproctitle exists
12480 set setproctitle d_setproctitle
12481 eval $inlibc
12482
12483 : see if setpwent exists
12484 set setpwent d_setpwent
12485 eval $inlibc
12486
12487 : see if setregid exists
12488 set setregid d_setregid
12489 eval $inlibc
12490 set setresgid d_setresgid
12491 eval $inlibc
12492
12493 : see if setreuid exists
12494 set setreuid d_setreuid
12495 eval $inlibc
12496 set setresuid d_setresuid
12497 eval $inlibc
12498
12499 : see if setrgid exists
12500 set setrgid d_setrgid
12501 eval $inlibc
12502
12503 : see if setruid exists
12504 set setruid d_setruid
12505 eval $inlibc
12506
12507 : see if setservent exists
12508 set setservent d_setsent
12509 eval $inlibc
12510
12511 : see if setsid exists
12512 set setsid d_setsid
12513 eval $inlibc
12514
12515 : see if setvbuf exists
12516 set setvbuf d_setvbuf
12517 eval $inlibc
12518
12519 : see if sfio.h is available
12520 set sfio.h i_sfio
12521 eval $inhdr
12522
12523
12524 : see if sfio library is available
12525 case "$i_sfio" in
12526 $define)
12527         val=''
12528         set sfreserve val
12529         eval $inlibc
12530         ;;
12531 *)
12532         val="$undef"
12533         ;;
12534 esac
12535 : Ok, but do we want to use it.
12536 case "$val" in
12537 $define)
12538         case "$usesfio" in
12539         true|$define|[yY]*) dflt='y';;
12540         *) dflt='n';;
12541         esac
12542         echo "$package can use the sfio library, but it is experimental."
12543         case "$useperlio" in
12544         "$undef")
12545             echo "For sfio also the PerlIO abstraction layer is needed."
12546             echo "Earlier you said you wouldn't want that."
12547             ;;
12548         esac
12549         rp="You seem to have sfio available, do you want to try using it?"
12550         . ./myread
12551         case "$ans" in
12552         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12553                 useperlio="$define"
12554                 val="$define"
12555                 ;;
12556         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12557                 val="$undef"
12558                 ;;
12559         esac
12560         ;;
12561 *)      case "$usesfio" in
12562         true|$define|[yY]*)
12563                 echo "Sorry, cannot find sfio on this machine." >&4
12564                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12565                 val="$undef"
12566                 ;;
12567         esac
12568         ;;
12569 esac
12570 set d_sfio
12571 eval $setvar
12572 case "$d_sfio" in
12573 $define) usesfio='true';;
12574 *) usesfio='false';;
12575 esac
12576 case "$d_sfio" in
12577 $define) ;;
12578 *)      : Remove sfio from list of libraries to use
12579         case "$libs" in
12580         *-lsfio*)
12581                 echo "Removing unneeded -lsfio from library list" >&4
12582                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12583                 shift
12584                 libs="$*"
12585                 echo "libs = $libs" >&4
12586                 ;;
12587         esac
12588 ;;
12589 esac
12590
12591
12592 : see if shmctl exists
12593 set shmctl d_shmctl
12594 eval $inlibc
12595
12596 : see if shmget exists
12597 set shmget d_shmget
12598 eval $inlibc
12599
12600 : see if shmat exists
12601 set shmat d_shmat
12602 eval $inlibc
12603 : see what shmat returns
12604 case "$d_shmat" in
12605 "$define")
12606         $cat >shmat.c <<'END'
12607 #include <sys/shm.h>
12608 void *shmat();
12609 END
12610         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12611                 shmattype='void *'
12612         else
12613                 shmattype='char *'
12614         fi
12615         echo "and it returns ($shmattype)." >&4
12616         : see if a prototype for shmat is available
12617         xxx=`./findhdr sys/shm.h`
12618         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12619         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12620                 val="$define"
12621         else
12622                 val="$undef"
12623         fi
12624         $rm -f shmat.[co]
12625         ;;
12626 *)
12627         val="$undef"
12628         ;;
12629 esac
12630 set d_shmatprototype
12631 eval $setvar
12632
12633 : see if shmdt exists
12634 set shmdt d_shmdt
12635 eval $inlibc
12636
12637 : see how much of the 'shm*(2)' library is present.
12638 h_shm=true
12639 echo " "
12640 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12641 *"$undef"*) h_shm=false;;
12642 esac
12643 case "$osname" in
12644 freebsd)
12645     case "`ipcs 2>&1`" in
12646     "SVID shared memory"*"not configured"*)
12647         echo "Your $osname does not have the shm*(2) configured." >&4
12648         h_shm=false
12649         val="$undef"
12650         set shmctl d_shmctl
12651         evat $setvar
12652         set shmget d_shmget
12653         evat $setvar
12654         set shmat d_shmat
12655         evat $setvar
12656         set shmdt d_shmdt
12657         evat $setvar
12658         ;;
12659     esac
12660     ;;
12661 esac
12662 : we could also check for sys/ipc.h ...
12663 if $h_shm && $test `./findhdr sys/shm.h`; then
12664         echo "You have the full shm*(2) library." >&4
12665         val="$define"
12666 else
12667         echo "You don't have the full shm*(2) library." >&4
12668         val="$undef"
12669 fi
12670 set d_shm
12671 eval $setvar
12672
12673 echo " "
12674 : see if we have sigaction
12675 if set sigaction val -f d_sigaction; eval $csym; $val; then
12676         echo 'sigaction() found.' >&4
12677         $cat > try.c <<'EOP'
12678 #include <stdio.h>
12679 #include <sys/types.h>
12680 #include <signal.h>
12681 int main()
12682 {
12683     struct sigaction act, oact;
12684     act.sa_flags = 0;
12685     oact.sa_handler = 0;
12686     /* so that act and oact are used */
12687     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12688 }
12689 EOP
12690         set try
12691         if eval $compile_ok; then
12692                 val="$define"
12693         else
12694                 echo "But you don't seem to have a useable struct sigaction." >&4
12695                 val="$undef"
12696         fi
12697 else
12698         echo 'sigaction NOT found.' >&4
12699         val="$undef"
12700 fi
12701 set d_sigaction; eval $setvar
12702 $rm -f try try$_o try.c
12703
12704 : see if sigprocmask exists
12705 set sigprocmask d_sigprocmask
12706 eval $inlibc
12707
12708 : see if sigsetjmp exists
12709 echo " "
12710 case "$d_sigsetjmp" in
12711 '')
12712         $cat >try.c <<'EOP'
12713 #include <setjmp.h>
12714 sigjmp_buf env;
12715 int set = 1;
12716 int main()
12717 {
12718         if (sigsetjmp(env,1))
12719                 exit(set);
12720         set = 0;
12721         siglongjmp(env, 1);
12722         exit(1);
12723 }
12724 EOP
12725         set try
12726         if eval $compile; then
12727                 if $run ./try >/dev/null 2>&1; then
12728                         echo "POSIX sigsetjmp found." >&4
12729                         val="$define"
12730                 else
12731                         $cat >&4 <<EOM
12732 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12733 I'll ignore them.
12734 EOM
12735                         val="$undef"
12736                 fi
12737         else
12738                 echo "sigsetjmp not found." >&4
12739                 val="$undef"
12740         fi
12741         ;;
12742 *) val="$d_sigsetjmp"
12743         case "$d_sigsetjmp" in
12744         $define) echo "POSIX sigsetjmp found." >&4;;
12745         $undef) echo "sigsetjmp not found." >&4;;
12746         esac
12747         ;;
12748 esac
12749 set d_sigsetjmp
12750 eval $setvar
12751 $rm -f try.c try
12752
12753 : see if sockatmark exists
12754 set sockatmark d_sockatmark
12755 eval $inlibc
12756
12757 : see if prototype for sockatmark is available
12758 echo " "
12759 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12760 eval $hasproto
12761
12762 : see if socks5_init exists
12763 set socks5_init d_socks5_init
12764 eval $inlibc
12765
12766 : see if prototype for setresgid is available
12767 echo " "
12768 set d_sresgproto setresgid $i_unistd unistd.h
12769 eval $hasproto
12770
12771 : see if prototype for setresuid is available
12772 echo " "
12773 set d_sresuproto setresuid $i_unistd unistd.h
12774 eval $hasproto
12775
12776 : see if sys/stat.h is available
12777 set sys/stat.h i_sysstat
12778 eval $inhdr
12779
12780
12781 : see if stat knows about block sizes
12782 echo " "
12783 echo "Checking to see if your struct stat has st_blocks field..." >&4
12784 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12785 eval $hasfield
12786
12787
12788 : see if this is a sys/vfs.h system
12789 set sys/vfs.h i_sysvfs
12790 eval $inhdr
12791
12792
12793 : see if this is a sys/statfs.h system
12794 set sys/statfs.h i_sysstatfs
12795 eval $inhdr
12796
12797
12798 echo " "
12799 echo "Checking to see if your system supports struct statfs..." >&4
12800 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
12801 eval $hasstruct
12802 case "$d_statfs_s" in
12803 "$define")      echo "Yes, it does."   ;;
12804 *)              echo "No, it doesn't." ;;
12805 esac
12806
12807
12808
12809 : see if struct statfs knows about f_flags
12810 case "$d_statfs_s" in
12811 define) 
12812         echo " "
12813         echo "Checking to see if your struct statfs has f_flags field..." >&4
12814         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
12815         eval $hasfield
12816         ;;
12817 *)      val="$undef"
12818         set d_statfs_f_flags
12819         eval $setvar
12820         ;;
12821 esac
12822 case "$d_statfs_f_flags" in
12823 "$define")      echo "Yes, it does."   ;;
12824 *)              echo "No, it doesn't." ;;
12825 esac
12826
12827 : see if _ptr and _cnt from stdio act std
12828 echo " "
12829
12830 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12831         echo "(Looks like you have stdio.h from BSD.)"
12832         case "$stdio_ptr" in
12833         '') stdio_ptr='((fp)->_p)'
12834                 ptr_lval=$define
12835                 ;;
12836         *)      ptr_lval=$d_stdio_ptr_lval;;
12837         esac
12838         case "$stdio_cnt" in
12839         '') stdio_cnt='((fp)->_r)'
12840                 cnt_lval=$define
12841                 ;;
12842         *)      cnt_lval=$d_stdio_cnt_lval;;
12843         esac
12844         case "$stdio_base" in
12845         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12846         esac
12847         case "$stdio_bufsiz" in
12848         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12849         esac
12850 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12851         echo "(Looks like you have stdio.h from Linux.)"
12852         case "$stdio_ptr" in
12853         '') stdio_ptr='((fp)->_IO_read_ptr)'
12854                 ptr_lval=$define
12855                 ;;
12856         *)      ptr_lval=$d_stdio_ptr_lval;;
12857         esac
12858         case "$stdio_cnt" in
12859         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12860                 cnt_lval=$undef
12861                 ;;
12862         *)      cnt_lval=$d_stdio_cnt_lval;;
12863         esac
12864         case "$stdio_base" in
12865         '') stdio_base='((fp)->_IO_read_base)';;
12866         esac
12867         case "$stdio_bufsiz" in
12868         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12869         esac
12870 else
12871         case "$stdio_ptr" in
12872         '') stdio_ptr='((fp)->_ptr)'
12873                 ptr_lval=$define
12874                 ;;
12875         *)      ptr_lval=$d_stdio_ptr_lval;;
12876         esac
12877         case "$stdio_cnt" in
12878         '') stdio_cnt='((fp)->_cnt)'
12879                 cnt_lval=$define
12880                 ;;
12881         *)      cnt_lval=$d_stdio_cnt_lval;;
12882         esac
12883         case "$stdio_base" in
12884         '') stdio_base='((fp)->_base)';;
12885         esac
12886         case "$stdio_bufsiz" in
12887         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12888         esac
12889 fi
12890
12891 : test whether _ptr and _cnt really work
12892 echo "Checking how std your stdio is..." >&4
12893 $cat >try.c <<EOP
12894 #include <stdio.h>
12895 #define FILE_ptr(fp)    $stdio_ptr
12896 #define FILE_cnt(fp)    $stdio_cnt
12897 int main() {
12898         FILE *fp = fopen("try.c", "r");
12899         char c = getc(fp);
12900         if (
12901                 18 <= FILE_cnt(fp) &&
12902                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12903         )
12904                 exit(0);
12905         exit(1);
12906 }
12907 EOP
12908 val="$undef"
12909 set try
12910 if eval $compile && $to try.c; then
12911         if $run ./try; then
12912                 echo "Your stdio acts pretty std."
12913                 val="$define"
12914         else
12915                 echo "Your stdio isn't very std."
12916         fi
12917 else
12918         echo "Your stdio doesn't appear very std."
12919 fi
12920 $rm -f try.c try
12921 set d_stdstdio
12922 eval $setvar
12923
12924 : Can _ptr be used as an lvalue?
12925 case "$d_stdstdio$ptr_lval" in
12926 $define$define) val=$define ;;
12927 *) val=$undef ;;
12928 esac
12929 set d_stdio_ptr_lval
12930 eval $setvar
12931
12932 : Can _cnt be used as an lvalue?
12933 case "$d_stdstdio$cnt_lval" in
12934 $define$define) val=$define ;;
12935 *) val=$undef ;;
12936 esac
12937 set d_stdio_cnt_lval
12938 eval $setvar
12939
12940
12941 : test whether setting _ptr sets _cnt as a side effect
12942 d_stdio_ptr_lval_sets_cnt="$undef"
12943 d_stdio_ptr_lval_nochange_cnt="$undef"
12944 case "$d_stdio_ptr_lval$d_stdstdio" in
12945 $define$define)
12946         echo "Checking to see what happens if we set the stdio ptr..." >&4
12947 $cat >try.c <<EOP
12948 #include <stdio.h>
12949 /* Can we scream? */
12950 /* Eat dust sed :-) */
12951 /* In the buffer space, no one can hear you scream. */
12952 #define FILE_ptr(fp)    $stdio_ptr
12953 #define FILE_cnt(fp)    $stdio_cnt
12954 #include <sys/types.h>
12955 int main() {
12956         FILE *fp = fopen("try.c", "r");
12957         int c;
12958         char *ptr;
12959         size_t cnt;
12960         if (!fp) {
12961             puts("Fail even to read");
12962             exit(1);
12963         }
12964         c = getc(fp); /* Read away the first # */
12965         if (c == EOF) {
12966             puts("Fail even to read");
12967             exit(1);
12968         }
12969         if (!(
12970                 18 <= FILE_cnt(fp) &&
12971                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12972         )) {
12973                 puts("Fail even to read");
12974                 exit (1);
12975         }
12976         ptr = (char*) FILE_ptr(fp);
12977         cnt = (size_t)FILE_cnt(fp);
12978
12979         FILE_ptr(fp) += 42;
12980
12981         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12982                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12983                 exit (1);
12984         }
12985         if (FILE_cnt(fp) <= 20) {
12986                 printf ("Fail (<20 chars to test)");
12987                 exit (1);
12988         }
12989         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12990                 puts("Fail compare");
12991                 exit (1);
12992         }
12993         if (cnt == FILE_cnt(fp)) {
12994                 puts("Pass_unchanged");
12995                 exit (0);
12996         }       
12997         if (FILE_cnt(fp) == (cnt - 42)) {
12998                 puts("Pass_changed");
12999                 exit (0);
13000         }
13001         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
13002         return 1;
13003
13004 }
13005 EOP
13006         set try
13007         if eval $compile && $to try.c; then
13008                 case `$run ./try` in
13009                 Pass_changed)
13010                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
13011                         d_stdio_ptr_lval_sets_cnt="$define" ;;
13012                 Pass_unchanged)
13013                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
13014                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
13015                 Fail*)
13016                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
13017                 *)
13018                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
13019         esac
13020         else
13021                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
13022         fi
13023         $rm -f try.c try
13024         ;;
13025 esac
13026
13027 : see if _base is also standard
13028 val="$undef"
13029 case "$d_stdstdio" in
13030 $define)
13031         $cat >try.c <<EOP
13032 #include <stdio.h>
13033 #define FILE_base(fp)   $stdio_base
13034 #define FILE_bufsiz(fp) $stdio_bufsiz
13035 int main() {
13036         FILE *fp = fopen("try.c", "r");
13037         char c = getc(fp);
13038         if (
13039                 19 <= FILE_bufsiz(fp) &&
13040                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
13041         )
13042                 exit(0);
13043         exit(1);
13044 }
13045 EOP
13046         set try
13047         if eval $compile && $to try.c; then
13048                 if $run ./try; then
13049                         echo "And its _base field acts std."
13050                         val="$define"
13051                 else
13052                         echo "But its _base field isn't std."
13053                 fi
13054         else
13055                 echo "However, it seems to be lacking the _base field."
13056         fi
13057         $rm -f try.c try
13058         ;;
13059 esac
13060 set d_stdiobase
13061 eval $setvar
13062
13063 $cat >&4 <<EOM
13064 Checking how to access stdio streams by file descriptor number...
13065 EOM
13066 case "$stdio_stream_array" in
13067 '')     $cat >try.c <<EOCP
13068 #include <stdio.h>
13069 int main() {
13070   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
13071     printf("yes\n");
13072 }
13073 EOCP
13074         for s in _iob __iob __sF
13075         do
13076                 set try -DSTDIO_STREAM_ARRAY=$s
13077                 if eval $compile; then
13078                         case "`$run ./try`" in
13079                         yes)    stdio_stream_array=$s; break ;;
13080                         esac
13081                 fi
13082         done
13083         $rm -f try.* try$exe_ext
13084 esac
13085 case "$stdio_stream_array" in
13086 '')     $cat >&4 <<EOM
13087 I can't figure out how to access stdio streams by file descriptor number.
13088 EOM
13089         d_stdio_stream_array="$undef"
13090         ;;
13091 *)      $cat >&4 <<EOM
13092 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
13093 EOM
13094         d_stdio_stream_array="$define"
13095         ;;
13096 esac
13097
13098 : see if strcoll exists
13099 set strcoll d_strcoll
13100 eval $inlibc
13101
13102 : check for structure copying
13103 echo " "
13104 echo "Checking to see if your C compiler can copy structs..." >&4
13105 $cat >try.c <<'EOCP'
13106 int main()
13107 {
13108         struct blurfl {
13109                 int dyick;
13110         } foo, bar;
13111
13112         foo = bar;
13113 }
13114 EOCP
13115 if $cc -c try.c >/dev/null 2>&1 ; then
13116         val="$define"
13117         echo "Yup, it can."
13118 else
13119         val="$undef"
13120         echo "Nope, it can't."
13121 fi
13122 set d_strctcpy
13123 eval $setvar
13124 $rm -f try.*
13125
13126 : see if strerror and/or sys_errlist[] exist
13127 echo " "
13128 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
13129     if set strerror val -f d_strerror; eval $csym; $val; then
13130                 echo 'strerror() found.' >&4
13131                 d_strerror="$define"
13132                 d_strerrm='strerror(e)'
13133                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
13134                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
13135                         d_syserrlst="$define"
13136                 else
13137                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
13138                         d_syserrlst="$undef"
13139                 fi
13140     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
13141                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
13142                 echo 'strerror() found in string header.' >&4
13143                 d_strerror="$define"
13144                 d_strerrm='strerror(e)'
13145                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
13146                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
13147                                 d_syserrlst="$define"
13148                 else
13149                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
13150                         d_syserrlst="$undef"
13151                 fi
13152     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
13153                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
13154                 d_strerror="$undef"
13155                 d_syserrlst="$define"
13156                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
13157     else
13158                 echo 'strerror() and sys_errlist[] NOT found.' >&4
13159                 d_strerror="$undef"
13160                 d_syserrlst="$undef"
13161                 d_strerrm='"unknown"'
13162     fi
13163 fi
13164
13165 : see if strftime exists
13166 set strftime d_strftime
13167 eval $inlibc
13168
13169 : see if strtod exists
13170 set strtod d_strtod
13171 eval $inlibc
13172
13173 : see if strtol exists
13174 set strtol d_strtol
13175 eval $inlibc
13176
13177 : see if strtold exists
13178 set strtold d_strtold
13179 eval $inlibc
13180
13181 : see if strtoll exists
13182 set strtoll d_strtoll
13183 eval $inlibc
13184
13185 case "$d_longlong-$d_strtoll" in
13186 "$define-$define")
13187         $cat <<EOM
13188 Checking whether your strtoll() works okay...
13189 EOM
13190         $cat >try.c <<'EOCP'
13191 #include <errno.h>
13192 #ifdef __hpux
13193 #define strtoll __strtoll
13194 #endif
13195 #ifdef __EMX__
13196 #define strtoll _strtoll
13197 #endif
13198 #include <stdio.h>
13199 extern long long int strtoll(char *s, char **, int); 
13200 static int bad = 0;
13201 int check(char *s, long long ell, int een) {
13202         long long gll;
13203         errno = 0;
13204         gll = strtoll(s, 0, 10);
13205         if (!((gll == ell) && (errno == een)))
13206                 bad++;
13207 }
13208 int main() {
13209         check(" 1",                                      1LL, 0);
13210         check(" 0",                                      0LL, 0);
13211         check("-1",                                     -1LL, 0);
13212         check("-9223372036854775808", -9223372036854775808LL, 0);
13213         check("-9223372036854775808", -9223372036854775808LL, 0);
13214         check(" 9223372036854775807",  9223372036854775807LL, 0);
13215         check("-9223372036854775808", -9223372036854775808LL, 0);
13216         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
13217         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
13218         if (!bad)
13219                 printf("ok\n");
13220 }
13221 EOCP
13222         set try
13223         if eval $compile; then
13224                 yyy=`$run ./try`
13225                 case "$yyy" in
13226                 ok) echo "Your strtoll() seems to be working okay." ;;
13227                 *) cat <<EOM >&4
13228 Your strtoll() doesn't seem to be working okay.
13229 EOM
13230                    d_strtoll="$undef"
13231                    ;;
13232                 esac
13233         else
13234                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13235                 d_strtoll="$undef"
13236         fi
13237         ;;
13238 esac
13239
13240 : see if strtoq exists
13241 set strtoq d_strtoq
13242 eval $inlibc
13243
13244 : see if strtoul exists
13245 set strtoul d_strtoul
13246 eval $inlibc
13247
13248 case "$d_strtoul" in
13249 "$define")
13250         $cat <<EOM
13251 Checking whether your strtoul() works okay...
13252 EOM
13253         $cat >try.c <<'EOCP'
13254 #include <errno.h>
13255 #include <stdio.h>
13256 extern unsigned long int strtoul(char *s, char **, int); 
13257 static int bad = 0;
13258 void check(char *s, unsigned long eul, int een) {
13259         unsigned long gul;
13260         errno = 0;
13261         gul = strtoul(s, 0, 10);
13262         if (!((gul == eul) && (errno == een)))
13263                 bad++;
13264 }
13265 int main() {
13266         check(" 1", 1L, 0);
13267         check(" 0", 0L, 0);
13268 EOCP
13269         case "$longsize" in
13270         8)
13271             $cat >>try.c <<'EOCP'
13272         check("18446744073709551615", 18446744073709551615UL, 0);
13273         check("18446744073709551616", 18446744073709551615UL, ERANGE);
13274 #if 0 /* strtoul() for /^-/ strings is undefined. */
13275         check("-1", 18446744073709551615UL, 0);
13276         check("-18446744073709551614", 2, 0);
13277         check("-18446744073709551615", 1, 0);
13278         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
13279         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
13280 #endif
13281 EOCP
13282                 ;;
13283         4)
13284                     $cat >>try.c <<'EOCP'
13285         check("4294967295", 4294967295UL, 0);
13286         check("4294967296", 4294967295UL, ERANGE);
13287 #if 0 /* strtoul() for /^-/ strings is undefined. */
13288         check("-1", 4294967295UL, 0);
13289         check("-4294967294", 2, 0);
13290         check("-4294967295", 1, 0);
13291         check("-4294967296", 4294967295UL, ERANGE);
13292         check("-4294967297", 4294967295UL, ERANGE);
13293 #endif
13294 EOCP
13295                 ;;
13296         *)
13297 : Should we write these tests to be more portable by sprintf-ing
13298 : ~0 and then manipulating that char string as input for strtol?
13299                 ;;
13300         esac
13301         $cat >>try.c <<'EOCP'
13302         if (!bad)
13303                 printf("ok\n");
13304         return 0;
13305 }
13306 EOCP
13307         set try
13308         if eval $compile; then
13309                 case "`$run ./try`" in
13310                 ok) echo "Your strtoul() seems to be working okay." ;;
13311                 *) cat <<EOM >&4
13312 Your strtoul() doesn't seem to be working okay.
13313 EOM
13314                    d_strtoul="$undef"
13315                    ;;
13316                 esac
13317         fi
13318         ;;
13319 esac
13320
13321 : see if strtoull exists
13322 set strtoull d_strtoull
13323 eval $inlibc
13324
13325 case "$d_longlong-$d_strtoull" in
13326 "$define-$define")
13327         $cat <<EOM
13328 Checking whether your strtoull() works okay...
13329 EOM
13330         $cat >try.c <<'EOCP'
13331 #include <errno.h>
13332 #ifdef __hpux
13333 #define strtoull __strtoull
13334 #endif
13335 #include <stdio.h>
13336 extern unsigned long long int strtoull(char *s, char **, int); 
13337 static int bad = 0;
13338 int check(char *s, long long eull, int een) {
13339         long long gull;
13340         errno = 0;
13341         gull = strtoull(s, 0, 10);
13342         if (!((gull == eull) && (errno == een)))
13343                 bad++;
13344 }
13345 int main() {
13346         check(" 1",                                        1LL, 0);
13347         check(" 0",                                        0LL, 0);
13348         check("18446744073709551615",  18446744073709551615ULL, 0);
13349         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13350 #if 0 /* strtoull() for /^-/ strings is undefined. */
13351         check("-1",                    18446744073709551615ULL, 0);
13352         check("-18446744073709551614",                     2LL, 0);
13353         check("-18446744073709551615",                     1LL, 0);
13354         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13355         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13356 #endif
13357         if (!bad)
13358                 printf("ok\n");
13359 }
13360 EOCP
13361         set try
13362         if eval $compile; then
13363                 case "`$run ./try`" in
13364                 ok) echo "Your strtoull() seems to be working okay." ;;
13365                 *) cat <<EOM >&4
13366 Your strtoull() doesn't seem to be working okay.
13367 EOM
13368                    d_strtoull="$undef"
13369                    ;;
13370                 esac
13371         fi
13372         ;;
13373 esac
13374
13375 : see if strtouq exists
13376 set strtouq d_strtouq
13377 eval $inlibc
13378
13379 case "$d_strtouq" in
13380 "$define")
13381         $cat <<EOM
13382 Checking whether your strtouq() works okay...
13383 EOM
13384         $cat >try.c <<'EOCP'
13385 #include <errno.h>
13386 #include <stdio.h>
13387 extern unsigned long long int strtouq(char *s, char **, int); 
13388 static int bad = 0;
13389 void check(char *s, unsigned long long eull, int een) {
13390         unsigned long long gull;
13391         errno = 0;
13392         gull = strtouq(s, 0, 10);
13393         if (!((gull == eull) && (errno == een)))
13394                 bad++;
13395 }
13396 int main() {
13397         check(" 1",                                        1LL, 0);
13398         check(" 0",                                        0LL, 0);
13399         check("18446744073709551615",  18446744073709551615ULL, 0);
13400         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13401 #if 0 /* strtouq() for /^-/ strings is undefined. */
13402         check("-1",                    18446744073709551615ULL, 0);
13403         check("-18446744073709551614",                     2LL, 0);
13404         check("-18446744073709551615",                     1LL, 0);
13405         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13406         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13407 #endif
13408         if (!bad)
13409                 printf("ok\n");
13410         return 0;
13411 }
13412 EOCP
13413         set try
13414         if eval $compile; then
13415                 case "`$run ./try`" in
13416                 ok) echo "Your strtouq() seems to be working okay." ;;
13417                 *) cat <<EOM >&4
13418 Your strtouq() doesn't seem to be working okay.
13419 EOM
13420                    d_strtouq="$undef"
13421                    ;;
13422                 esac
13423         fi
13424         ;;
13425 esac
13426
13427 : see if strxfrm exists
13428 set strxfrm d_strxfrm
13429 eval $inlibc
13430
13431 : see if symlink exists
13432 set symlink d_symlink
13433 eval $inlibc
13434
13435 : see if syscall exists
13436 set syscall d_syscall
13437 eval $inlibc
13438
13439 : see if prototype for syscall is available
13440 echo " "
13441 set d_syscallproto syscall $i_unistd unistd.h
13442 eval $hasproto
13443
13444 : see if sysconf exists
13445 set sysconf d_sysconf
13446 eval $inlibc
13447
13448 : see if system exists
13449 set system d_system
13450 eval $inlibc
13451
13452 : see if tcgetpgrp exists
13453 set tcgetpgrp d_tcgetpgrp
13454 eval $inlibc
13455
13456 : see if tcsetpgrp exists
13457 set tcsetpgrp d_tcsetpgrp
13458 eval $inlibc
13459
13460 : see if prototype for telldir is available
13461 echo " "
13462 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13463 eval $hasproto
13464
13465 : see if this is a sys/times.h system
13466 set sys/times.h i_systimes
13467 eval $inhdr
13468
13469 : see if times exists
13470 echo " "
13471 if set times val -f d_times; eval $csym; $val; then
13472         echo 'times() found.' >&4
13473         d_times="$define"
13474         inc=''
13475         case "$i_systimes" in
13476         "$define") inc='sys/times.h';;
13477         esac
13478         rp="What is the type returned by times() on this system?"
13479         set clock_t clocktype long stdio.h sys/types.h $inc
13480         eval $typedef_ask
13481 else
13482         echo 'times() NOT found, hope that will do.' >&4
13483         d_times="$undef"
13484         clocktype='int'
13485 fi
13486
13487 : see if truncate exists
13488 set truncate d_truncate
13489 eval $inlibc
13490
13491 : see if tzname[] exists
13492 echo " "
13493 if set tzname val -a d_tzname; eval $csym; $val; then
13494         val="$define"
13495         echo 'tzname[] found.' >&4
13496 else
13497         val="$undef"
13498         echo 'tzname[] NOT found.' >&4
13499 fi
13500 set d_tzname
13501 eval $setvar
13502
13503 case "$osname" in
13504 next|rhapsody|darwin) multiarch="$define" ;;
13505 esac
13506 case "$multiarch" in
13507 ''|[nN]*) multiarch="$undef" ;;
13508 esac
13509
13510 : check for ordering of bytes in a long
13511 echo " "
13512 case "$usecrosscompile$multiarch" in
13513 *$define*)
13514         $cat <<EOM
13515 You seem to be either cross-compiling or doing a multiarchitecture build,
13516 skipping the byteorder check.
13517
13518 EOM
13519         byteorder='ffff'
13520         ;;
13521 *)
13522         case "$byteorder" in
13523         '')
13524                 $cat <<'EOM'
13525 In the following, larger digits indicate more significance.  A big-endian
13526 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13527 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13528 machines may have weird orders like 3412.  A Cray will report 87654321,
13529 an Alpha will report 12345678. If the test program works the default is
13530 probably right.
13531 I'm now running the test program...
13532 EOM
13533                 $cat >try.c <<'EOCP'
13534 #include <stdio.h>
13535 int main()
13536 {
13537         int i;
13538         union {
13539                 unsigned long l;
13540                 char c[sizeof(long)];
13541         } u;
13542
13543         if (sizeof(long) > 4)
13544                 u.l = (0x08070605L << 32) | 0x04030201L;
13545         else
13546                 u.l = 0x04030201L;
13547         for (i = 0; i < sizeof(long); i++)
13548                 printf("%c", u.c[i]+'0');
13549         printf("\n");
13550         exit(0);
13551 }
13552 EOCP
13553                 xxx_prompt=y
13554                 set try
13555                 if eval $compile && ./try > /dev/null; then
13556                         dflt=`$run ./try`
13557                         case "$dflt" in
13558                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13559                                 echo "(The test program ran ok.)"
13560                                 echo "byteorder=$dflt"
13561                                 xxx_prompt=n
13562                         ;;
13563                         ????|????????) echo "(The test program ran ok.)" ;;
13564                         *) echo "(The test program didn't run right for some reason.)" ;;
13565                         esac
13566                 else
13567                         dflt='4321'
13568                         cat <<'EOM'
13569 (I can't seem to compile the test program.  Guessing big-endian...)
13570 EOM
13571                 fi
13572                 case "$xxx_prompt" in
13573                 y)
13574                         rp="What is the order of bytes in a long?"
13575                         . ./myread
13576                         byteorder="$ans"
13577                         ;;
13578                 *)      byteorder=$dflt
13579                         ;;
13580                 esac
13581                 ;;
13582         esac
13583         $rm -f try.c try
13584         ;;
13585 esac
13586
13587
13588 $cat <<EOM
13589
13590 Checking to see whether you can access character data unalignedly...
13591 EOM
13592 case "$d_u32align" in
13593 '')   $cat >try.c <<EOCP
13594 #include <stdio.h>
13595 #define U32 $u32type
13596 #define BYTEORDER 0x$byteorder
13597 #define U8 $u8type
13598 #include <signal.h>
13599 #ifdef SIGBUS
13600 $signal_t bletch(s) int s; { exit(4); }
13601 #endif
13602 int main() {
13603 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13604     U8 buf[8];
13605     U32 *up;
13606     int i;
13607
13608     if (sizeof(U32) != 4) {
13609         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13610         exit(1);
13611     }
13612
13613     fflush(stdout);
13614
13615 #ifdef SIGBUS
13616     signal(SIGBUS, bletch);
13617 #endif
13618
13619     buf[0] = 0;
13620     buf[1] = 0;
13621     buf[2] = 0;
13622     buf[3] = 1;
13623     buf[5] = 0;
13624     buf[6] = 0;
13625     buf[7] = 0;
13626     buf[8] = 1;
13627
13628     for (i = 0; i < 4; i++) {
13629         up = (U32*)(buf + i);
13630         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13631                (*up == 1 << (8*(3-i)))  /* little-endian */
13632               )
13633            )
13634         {
13635             printf("read failed (%x)\n", *up);
13636             exit(2);
13637         }
13638     }
13639
13640     /* write test */
13641     for (i = 0; i < 4; i++) {
13642         up = (U32*)(buf + i);
13643         *up = 0xBeef;
13644         if (*up != 0xBeef) {
13645             printf("write failed (%x)\n", *up);
13646             exit(3);
13647         }
13648     }
13649
13650     exit(0);
13651 #else
13652     printf("1\n");
13653     exit(1);
13654 #endif
13655     return 0;
13656 }
13657 EOCP
13658 set try
13659 if eval $compile_ok; then
13660         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
13661         $run ./try 2>&1 >/dev/null
13662         case "$?" in
13663         0)      cat >&4 <<EOM
13664 You can access character data pretty unalignedly.
13665 EOM
13666                 d_u32align="$undef"
13667                 ;;
13668         *)      cat >&4 <<EOM
13669 It seems that you must access character data in an aligned manner.
13670 EOM
13671                 d_u32align="$define"
13672                 ;;
13673         esac
13674 else
13675         rp='Can you access character data at unaligned addresses?'
13676         dflt='n'
13677         . ./myread
13678         case "$ans" in
13679         [yY]*)  d_u32align="$undef"  ;;
13680         *)      d_u32align="$define" ;;
13681         esac
13682 fi
13683 $rm -f core core.try.* try.core
13684 ;;
13685 esac
13686
13687 : see if ualarm exists
13688 set ualarm d_ualarm
13689 eval $inlibc
13690
13691 : see if umask exists
13692 set umask d_umask
13693 eval $inlibc
13694
13695 : see if unordered exists
13696 set unordered d_unordered
13697 eval $inlibc
13698
13699 : see if usleep exists
13700 set usleep d_usleep
13701 eval $inlibc
13702
13703 : see if prototype for usleep is available
13704 echo " "
13705 set d_usleepproto usleep $i_unistd unistd.h
13706 eval $hasproto
13707
13708 : see if ustat exists
13709 set ustat d_ustat
13710 eval $inlibc
13711
13712 : backward compatibility for d_hvfork
13713 if test X$d_hvfork != X; then
13714         d_vfork="$d_hvfork"
13715         d_hvfork=''
13716 fi
13717 : see if there is a vfork
13718 val=''
13719 set vfork val
13720 eval $inlibc
13721
13722 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13723 : perl on Solaris 2.x, and probably elsewhere.
13724 case "$val" in
13725 $define)
13726         echo " "
13727         case "$usevfork" in
13728         false) dflt='n';;
13729         *) dflt='y';;
13730         esac
13731         cat <<'EOM'
13732  
13733 Perl can only use a vfork() that doesn't suffer from strict
13734 restrictions on calling functions or modifying global data in
13735 the child.  For example, glibc-2.1 contains such a vfork()
13736 that is unsuitable.  If your system provides a proper fork()
13737 call, chances are that you do NOT want perl to use vfork().
13738
13739 EOM
13740         rp="Do you still want to use vfork()?"
13741         . ./myread
13742         case "$ans" in
13743         y|Y) ;;
13744         *)
13745                 echo "Ok, we won't use vfork()."
13746                 val="$undef"
13747                 ;;
13748         esac
13749         ;;
13750 esac
13751 set d_vfork
13752 eval $setvar
13753 case "$d_vfork" in
13754 $define) usevfork='true';;
13755 *) usevfork='false';;
13756 esac
13757
13758 : see if closedir exists
13759 set closedir d_closedir
13760 eval $inlibc
13761
13762 case "$d_closedir" in
13763 "$define")
13764         echo " "
13765         echo "Checking whether closedir() returns a status..." >&4
13766         cat > try.c <<EOM
13767 #$i_dirent I_DIRENT             /**/
13768 #$i_sysdir I_SYS_DIR            /**/
13769 #$i_sysndir I_SYS_NDIR          /**/
13770 #$i_systypes I_SYS_TYPES        /**/
13771
13772 #if defined(I_SYS_TYPES)
13773 #include <sys/types.h>
13774 #endif
13775 #if defined(I_DIRENT)
13776 #include <dirent.h>
13777 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13778 #include <sys/dir.h>
13779 #endif
13780 #else
13781 #ifdef I_SYS_NDIR
13782 #include <sys/ndir.h>
13783 #else
13784 #ifdef I_SYS_DIR
13785 #ifdef hp9000s500
13786 #include <ndir.h>       /* may be wrong in the future */
13787 #else
13788 #include <sys/dir.h>
13789 #endif
13790 #endif
13791 #endif
13792 #endif 
13793 int main() { return closedir(opendir(".")); }
13794 EOM
13795         set try
13796         if eval $compile_ok; then
13797                 if $run ./try > /dev/null 2>&1 ; then
13798                         echo "Yes, it does."
13799                         val="$undef"
13800                 else
13801                         echo "No, it doesn't."
13802                         val="$define"
13803                 fi
13804         else
13805                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13806                 val="$define"
13807         fi
13808         ;;
13809 *)
13810         val="$undef";
13811         ;;
13812 esac
13813 set d_void_closedir
13814 eval $setvar
13815 $rm -f try try.*
13816 : see if there is a wait4
13817 set wait4 d_wait4
13818 eval $inlibc
13819
13820 : see if waitpid exists
13821 set waitpid d_waitpid
13822 eval $inlibc
13823
13824 : see if wcstombs exists
13825 set wcstombs d_wcstombs
13826 eval $inlibc
13827
13828 : see if wctomb exists
13829 set wctomb d_wctomb
13830 eval $inlibc
13831
13832 : see if writev exists
13833 set writev d_writev
13834 eval $inlibc
13835
13836 : preserve RCS keywords in files with variable substitution, grrr
13837 Date='$Date'
13838 Id='$Id'
13839 Log='$Log'
13840 RCSfile='$RCSfile'
13841 Revision='$Revision'
13842
13843 : check for alignment requirements
13844 echo " "
13845 case "$usecrosscompile$multiarch" in
13846 *$define*)
13847         $cat <<EOM
13848 You seem to be either cross-compiling or doing a multiarchitecture build,
13849 skipping the memory alignment check.
13850
13851 EOM
13852         case "$alignbytes" in
13853         '') alignbytes=8 ;;
13854         esac
13855         ;;
13856 *)
13857         case "$alignbytes" in
13858         '') echo "Checking alignment constraints..." >&4
13859                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13860                         $cat >try.c <<'EOCP'
13861 typedef long double NV;
13862 EOCP
13863                 else
13864                         $cat >try.c <<'EOCP'
13865 typedef double NV;
13866 EOCP
13867                 fi
13868                 $cat >>try.c <<'EOCP'
13869 #include <stdio.h>
13870 struct foobar {
13871         char foo;
13872         NV bar;
13873 } try_algn;
13874 int main()
13875 {
13876     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13877     return(0);
13878 }
13879 EOCP
13880                 set try
13881                 if eval $compile_ok; then
13882                         dflt=`$run ./try`
13883                 else
13884                         dflt='8'
13885                         echo "(I can't seem to compile the test program...)"
13886                 fi
13887                 ;;
13888         *) dflt="$alignbytes"
13889                 ;;
13890         esac
13891         rp="Doubles must be aligned on a how-many-byte boundary?"
13892         . ./myread
13893         alignbytes="$ans"
13894         $rm -f try.c try
13895         ;;
13896 esac
13897
13898
13899 : set the base revision
13900 baserev=5.0
13901
13902 : how do we catenate cpp tokens here?
13903 echo " "
13904 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13905 $cat >cpp_stuff.c <<'EOCP'
13906 #define RCAT(a,b)a/**/b
13907 #define ACAT(a,b)a ## b
13908 RCAT(Rei,ser)
13909 ACAT(Cir,cus)
13910 EOCP
13911 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13912 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13913         echo "Oh!  Smells like ANSI's been here." >&4
13914         echo "We can catify or stringify, separately or together!"
13915         cpp_stuff=42
13916 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13917         echo "Ah, yes!  The good old days!" >&4
13918         echo "However, in the good old days we don't know how to stringify and"
13919         echo "catify at the same time."
13920         cpp_stuff=1
13921 else
13922         $cat >&4 <<EOM
13923 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13924 to have to edit the values of CAT[2-5] in config.h...
13925 EOM
13926         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13927 fi
13928 $rm -f cpp_stuff.*
13929
13930 : see if this is a db.h system
13931 set db.h i_db
13932 eval $inhdr
13933
13934 case "$i_db" in
13935 $define)
13936         : Check db version.
13937         echo " "
13938         echo "Checking Berkeley DB version ..." >&4
13939         $cat >try.c <<EOCP
13940 #$d_const HASCONST
13941 #ifndef HASCONST
13942 #define const
13943 #endif
13944 #include <sys/types.h>
13945 #include <stdio.h>
13946 #include <db.h>
13947 int main(int argc, char *argv[])
13948 {
13949 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13950     int Major, Minor, Patch ;
13951     unsigned long Version ;
13952     (void)db_version(&Major, &Minor, &Patch) ;
13953     if (argc == 2) {
13954         printf("%d %d %d %d %d %d\n",
13955                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13956                Major, Minor, Patch);
13957         exit(0);
13958     }
13959     printf("You have Berkeley DB Version 2 or greater.\n");
13960
13961     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13962                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13963     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13964                 Major, Minor, Patch) ;
13965
13966     /* check that db.h & libdb are compatible */
13967     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13968         printf("db.h and libdb are incompatible.\n") ;
13969         exit(3);        
13970     }
13971
13972     printf("db.h and libdb are compatible.\n") ;
13973
13974     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13975                 + DB_VERSION_PATCH ;
13976
13977     /* needs to be >= 2.3.4 */
13978     if (Version < 2003004) {
13979     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13980         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13981         exit(2);        
13982     }
13983
13984     exit(0);
13985 #else
13986 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13987     if (argc == 2) {
13988         printf("1 0 0\n");
13989         exit(0);
13990     }
13991     printf("You have Berkeley DB Version 1.\n");
13992     exit(0);    /* DB version < 2: the coast is clear. */
13993 #else
13994     exit(1);    /* <db.h> not Berkeley DB? */
13995 #endif
13996 #endif
13997 }
13998 EOCP
13999         set try
14000         if eval $compile_ok && $run ./try; then
14001                 echo 'Looks OK.' >&4
14002                 set `$run ./try 1`
14003                 db_version_major=$1
14004                 db_version_minor=$2
14005                 db_version_patch=$3
14006         else
14007                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
14008                 i_db=$undef
14009                 case " $libs " in
14010                 *"-ldb "*)
14011                         : Remove db from list of libraries to use
14012                         echo "Removing unusable -ldb from library list" >&4
14013                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
14014                         shift
14015                         libs="$*"
14016                         echo "libs = $libs" >&4
14017                         ;;
14018                 esac
14019         fi
14020         $rm -f try.*
14021         ;;
14022 esac
14023
14024 case "$i_db" in
14025 define)
14026         : Check the return type needed for hash 
14027         echo " "
14028         echo "Checking return type needed for hash for Berkeley DB ..." >&4
14029         $cat >try.c <<EOCP
14030 #$d_const HASCONST
14031 #ifndef HASCONST
14032 #define const
14033 #endif
14034 #include <sys/types.h>
14035 #include <db.h>
14036
14037 #ifndef DB_VERSION_MAJOR
14038 u_int32_t hash_cb (ptr, size)
14039 const void *ptr;
14040 size_t size;
14041 {
14042 }
14043 HASHINFO info;
14044 int main()
14045 {
14046         info.hash = hash_cb;
14047 }
14048 #endif
14049 EOCP
14050         if $cc $ccflags -c try.c >try.out 2>&1 ; then
14051                 if $contains warning try.out >>/dev/null 2>&1 ; then
14052                         db_hashtype='int'
14053                 else
14054                         db_hashtype='u_int32_t'
14055                 fi
14056         else
14057                 : XXX Maybe we should just give up here.
14058                 db_hashtype=u_int32_t
14059                 $cat try.out >&4
14060                 echo "Help:  I can't seem to compile the db test program." >&4
14061                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
14062         fi
14063         $rm -f try.*
14064         echo "Your version of Berkeley DB uses $db_hashtype for hash."
14065         ;;
14066 *)      db_hashtype=u_int32_t
14067         ;;
14068 esac
14069 case "$i_db" in
14070 define)
14071         : Check the return type needed for prefix 
14072         echo " "
14073         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
14074         cat >try.c <<EOCP
14075 #$d_const HASCONST
14076 #ifndef HASCONST
14077 #define const
14078 #endif
14079 #include <sys/types.h>
14080 #include <db.h>
14081
14082 #ifndef DB_VERSION_MAJOR
14083 size_t prefix_cb (key1, key2)
14084 const DBT *key1;
14085 const DBT *key2;
14086 {
14087 }
14088 BTREEINFO info;
14089 int main()
14090 {
14091         info.prefix = prefix_cb;
14092 }
14093 #endif
14094 EOCP
14095         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
14096                 if $contains warning try.out >>/dev/null 2>&1 ; then
14097                         db_prefixtype='int'
14098                 else
14099                         db_prefixtype='size_t'
14100                 fi
14101         else
14102                 db_prefixtype='size_t'
14103                 : XXX Maybe we should just give up here.
14104                 $cat try.out >&4
14105                 echo "Help:  I can't seem to compile the db test program." >&4
14106                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
14107         fi
14108         $rm -f try.*
14109         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
14110         ;;
14111 *)      db_prefixtype='size_t'
14112         ;;
14113 esac
14114
14115
14116 : How can we generate normalized random numbers ?
14117 echo " "
14118 echo "Looking for a random number function..." >&4
14119 case "$randfunc" in
14120 '')
14121         if set drand48 val -f; eval $csym; $val; then
14122                 dflt="drand48"
14123                 echo "Good, found drand48()." >&4
14124         elif set random val -f; eval $csym; $val; then
14125                 dflt="random"
14126                 echo "OK, found random()." >&4
14127         else
14128                 dflt="rand"
14129                 echo "Yick, looks like I have to use rand()." >&4
14130         fi
14131         echo " "
14132         ;;
14133 *)
14134         dflt="$randfunc"
14135         ;;
14136 esac
14137 cont=true
14138
14139 case "$ccflags" in
14140 *-Dmy_rand=*|*-Dmy_srand=*)
14141         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
14142         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
14143         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
14144         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
14145         ;;
14146 esac
14147
14148 while $test "$cont"; do
14149         rp="Use which function to generate random numbers?"
14150         . ./myread
14151         if $test "$ans" = "$dflt"; then
14152                 : null
14153         else
14154                 randbits=''
14155         fi
14156         randfunc="$ans"
14157         if set $ans val -f; eval $csym; $val; then
14158                 cont=''
14159         else
14160                 dflt=y
14161                 rp="I cannot find function $ans. Use that name anyway?"
14162                 . ./myread
14163                 dflt=rand
14164                 case "$ans" in
14165                         [yY]*) cont='';;
14166                 esac
14167         fi
14168         case "$cont" in
14169         '')
14170                 case "$randfunc" in
14171                 drand48)
14172                         drand01="drand48()"
14173                         seedfunc="srand48"
14174                         randbits=48
14175                         randseedtype=long
14176                         ;;
14177                 rand|random)
14178                         case "$randbits" in
14179                         '')
14180 echo "Checking to see how many bits your $randfunc() function produces..." >&4
14181                                 $cat >try.c <<EOCP
14182 #$i_unistd I_UNISTD
14183 #$i_stdlib I_STDLIB
14184 #include <stdio.h>
14185 #ifdef I_UNISTD
14186 #  include <unistd.h>
14187 #endif
14188 #ifdef I_STDLIB
14189 #  include <stdlib.h>
14190 #endif
14191 int main()
14192 {
14193         register int i;
14194         register unsigned long tmp;
14195         register unsigned long max = 0L;
14196
14197         for (i = 1000; i; i--) {
14198                 tmp = (unsigned long) $randfunc();
14199                 if (tmp > max) max = tmp;
14200         }
14201         for (i = 0; max; i++)
14202                 max /= 2;
14203         printf("%d\n",i);
14204 }
14205 EOCP
14206                                 set try
14207                                 if eval $compile_ok; then
14208                                         dflt=`try`
14209                                 else
14210                                         dflt='?'
14211                                         echo "(I can't seem to compile the test program...)"
14212                                 fi
14213                                 ;;
14214                         *)
14215                                 dflt="$randbits"
14216                                 ;;
14217                         esac
14218                         rp="How many bits does your $randfunc() function produce?"
14219                         . ./myread
14220                         randbits="$ans"
14221                         $rm -f try.c try
14222                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
14223                         seedfunc="s$randfunc"
14224                         randseedtype=unsigned
14225                         ;;
14226                 *)
14227                         dflt="31"
14228                         rp="How many bits does your $randfunc() function produce?"
14229                         . ./myread
14230                         randbits="$ans"
14231                         seedfunc="s$randfunc"
14232                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
14233                         if set $seedfunc val -f; eval $csym; $val; then
14234                                 echo "(Using $seedfunc() to seed random generator)"
14235                         else
14236                                 echo "(Warning: no $seedfunc() to seed random generator)"
14237                                 seedfunc=rand
14238                         fi
14239                         randseedtype=unsigned
14240                         ;;
14241                 esac
14242                 ;;
14243         esac
14244 done
14245
14246 echo " "
14247 echo "Determining whether or not we are on an EBCDIC system..." >&4
14248 $cat >try.c <<'EOM'
14249 int main()
14250 {
14251   if ('M'==0xd4) return 0;
14252   return 1;
14253 }
14254 EOM
14255
14256 val=$undef
14257 set try
14258 if eval $compile_ok; then
14259         if $run ./try; then
14260                 echo "You seem to speak EBCDIC." >&4
14261                 val="$define"
14262         else
14263                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
14264         fi
14265 else
14266         echo "I'm unable to compile the test program." >&4
14267         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
14268 fi
14269 $rm -f try try.*
14270 set ebcdic
14271 eval $setvar
14272
14273 echo " "
14274 $cat >&4 <<EOM
14275 Checking how to flush all pending stdio output...
14276 EOM
14277 # I only know how to find the first 32 possibly open files on SunOS.
14278 # See also hints/sunos_4_1.sh and util.c  --AD
14279 case "$osname" in
14280 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
14281 esac
14282 $cat >>try.c <<EOCP
14283 #include <stdio.h>
14284 #$i_unistd I_UNISTD
14285 #ifdef I_UNISTD
14286 # include <unistd.h>
14287 #endif
14288 #$d_sysconf HAS_SYSCONF
14289 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
14290 #ifdef HAS_STDIO_STREAM_ARRAY
14291 # define STDIO_STREAM_ARRAY $stdio_stream_array
14292 #endif
14293 int main() {
14294   FILE* p;
14295   unlink("try.out");
14296   p = fopen("try.out", "w");
14297 #ifdef TRY_FPUTC
14298   fputc('x', p);
14299 #else
14300 # ifdef TRY_FPRINTF
14301   fprintf(p, "x");
14302 # endif
14303 #endif
14304 #ifdef TRY_FFLUSH_NULL
14305   fflush(NULL);
14306 #endif
14307 #ifdef TRY_FFLUSH_ALL
14308   {
14309     long open_max = -1;
14310 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
14311     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
14312 # else
14313 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
14314     open_max = sysconf(_SC_OPEN_MAX);
14315 #  else
14316 #   ifdef FOPEN_MAX
14317     open_max = FOPEN_MAX;
14318 #   else
14319 #    ifdef OPEN_MAX
14320     open_max = OPEN_MAX;
14321 #    else
14322 #     ifdef _NFILE
14323     open_max = _NFILE;
14324 #     endif
14325 #    endif
14326 #   endif
14327 #  endif
14328 # endif 
14329 # ifdef HAS_STDIO_STREAM_ARRAY
14330     if (open_max > 0) {
14331       long i;
14332       for (i = 0; i < open_max; i++)
14333             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
14334                 STDIO_STREAM_ARRAY[i]._file < open_max &&
14335                 STDIO_STREAM_ARRAY[i]._flag)
14336                 fflush(&STDIO_STREAM_ARRAY[i]);
14337     }   
14338   }
14339 # endif
14340 #endif
14341   _exit(42);
14342 }
14343 EOCP
14344 : first we have to find out how _not_ to flush
14345 $to try.c
14346 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
14347     output=''
14348     set try -DTRY_FPUTC
14349     if eval $compile; then
14350             $run ./try 2>/dev/null
14351             code="$?"
14352             $from try.out
14353             if $test ! -s try.out -a "X$code" = X42; then
14354                 output=-DTRY_FPUTC
14355             fi
14356     fi
14357     case "$output" in
14358     '')
14359             set try -DTRY_FPRINTF
14360             if eval $compile; then
14361                     $run ./try 2>/dev/null
14362                     code="$?"
14363                     $from try.out
14364                     if $test ! -s try.out -a "X$code" = X42; then
14365                         output=-DTRY_FPRINTF
14366                     fi
14367             fi
14368         ;;
14369     esac
14370 fi
14371 : check for fflush NULL behaviour
14372 case "$fflushNULL" in
14373 '')     set try -DTRY_FFLUSH_NULL $output
14374         if eval $compile; then
14375                 $run ./try 2>/dev/null
14376                 code="$?"
14377                 $from try.out
14378                 if $test -s try.out -a "X$code" = X42; then
14379                         fflushNULL="`$cat try.out`"
14380                 else
14381                         if $test "X$code" != X42; then
14382                                 $cat >&4 <<EOM
14383 (If this test failed, don't worry, we'll try another method shortly.)
14384 EOM
14385                         fi
14386                 fi
14387         fi
14388         $rm -f core try.core core.try.*
14389         case "$fflushNULL" in
14390         x)      $cat >&4 <<EOM
14391 Your fflush(NULL) works okay for output streams.
14392 Let's see if it clobbers input pipes...
14393 EOM
14394 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14395 # bug that improperly flushes the input end of pipes.  So we avoid the
14396 # autoflush on fork/system/exec support for now. :-(
14397 $cat >tryp.c <<EOCP
14398 #include <stdio.h>
14399 int
14400 main(int argc, char **argv)
14401 {
14402     char buf[1024];
14403     int i;
14404     char *bp = buf;
14405     while (1) {
14406         while ((i = getc(stdin)) != -1
14407                && (*bp++ = i) != '\n'
14408                && bp < &buf[1024])
14409         /* DO NOTHING */ ;
14410         *bp = '\0';
14411         fprintf(stdout, "%s", buf);
14412         fflush(NULL);
14413         if (i == -1)
14414             return 0;
14415         bp = buf;
14416     }
14417 }
14418 EOCP
14419                 fflushNULL="$define"
14420                 set tryp
14421                 if eval $compile; then
14422                     $rm -f tryp.out
14423                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14424                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
14425                        $cat >&4 <<EOM
14426 fflush(NULL) seems to behave okay with input streams.
14427 EOM
14428                         fflushNULL="$define"
14429                     else
14430                         $cat >&4 <<EOM
14431 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
14432 EOM
14433                         fflushNULL="$undef"
14434                     fi
14435                 fi
14436                 $rm -f core tryp.c tryp.core core.tryp.*
14437                 ;;
14438         '')     $cat >&4 <<EOM
14439 Your fflush(NULL) isn't working (contrary to ANSI C).
14440 EOM
14441                 fflushNULL="$undef"
14442                 ;;
14443         *)      $cat >&4 <<EOM
14444 Cannot figure out whether your fflush(NULL) works or not.
14445 I'm assuming it doesn't (contrary to ANSI C).
14446 EOM
14447                 fflushNULL="$undef"
14448                 ;;
14449         esac
14450         ;;
14451 $define|true|[yY]*)
14452         fflushNULL="$define"
14453         ;;
14454 *)
14455         fflushNULL="$undef"
14456         ;;
14457 esac
14458 : check explicit looping only if NULL did not work, and if the pipe
14459 : bug does not show up on an explicit flush too
14460 case "$fflushNULL" in
14461 "$undef")
14462         $cat >tryp.c <<EOCP
14463 #include <stdio.h>
14464 int
14465 main(int argc, char **argv)
14466 {
14467     char buf[1024];
14468     int i;
14469     char *bp = buf;
14470     while (1) {
14471         while ((i = getc(stdin)) != -1
14472                && (*bp++ = i) != '\n'
14473                && bp < &buf[1024])
14474         /* DO NOTHING */ ;
14475         *bp = '\0';
14476         fprintf(stdout, "%s", buf);
14477         fflush(stdin);
14478         if (i == -1)
14479             return 0;
14480         bp = buf;
14481     }
14482 }
14483 EOCP
14484         set tryp
14485         if eval $compile; then
14486             $rm -f tryp.out
14487             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14488             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14489                $cat >&4 <<EOM
14490 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14491 EOM
14492                 : now check for fflushall behaviour
14493                 case "$fflushall" in
14494                 '')     set try -DTRY_FFLUSH_ALL $output
14495                         if eval $compile; then
14496                                 $cat >&4 <<EOM
14497 (Now testing the other method--but note that this also may fail.)
14498 EOM
14499                                 $run ./try 2>/dev/null
14500                                 code=$?
14501                                 $from try.out
14502                                 if $test -s try.out -a "X$code" = X42; then
14503                                         fflushall="`$cat try.out`"
14504                                 fi
14505                         fi
14506                         $rm -f core try.core core.try.*
14507                         case "$fflushall" in
14508                         x)      $cat >&4 <<EOM
14509 Whew. Flushing explicitly all the stdio streams works.
14510 EOM
14511                                 fflushall="$define"
14512                                 ;;
14513                         '')     $cat >&4 <<EOM
14514 Sigh. Flushing explicitly all the stdio streams doesn't work.
14515 EOM
14516                                 fflushall="$undef"
14517                                 ;;
14518                         *)      $cat >&4 <<EOM
14519 Cannot figure out whether flushing stdio streams explicitly works or not.
14520 I'm assuming it doesn't.
14521 EOM
14522                                 fflushall="$undef"
14523                                 ;;
14524                         esac
14525                         ;;
14526                 "$define"|true|[yY]*)
14527                         fflushall="$define"
14528                         ;;
14529                 *)
14530                         fflushall="$undef"
14531                         ;;
14532                 esac
14533             else
14534                 $cat >&4 <<EOM
14535 All is futile.  Even fflush(stdin) clobbers input pipes!
14536 EOM
14537                 fflushall="$undef"
14538             fi
14539         else
14540             fflushall="$undef"
14541         fi
14542         $rm -f core tryp.c tryp.core core.tryp.*
14543         ;;
14544 *)      fflushall="$undef"
14545         ;;
14546 esac
14547
14548 case "$fflushNULL$fflushall" in
14549 undefundef)
14550         $cat <<EOM
14551 OK, I give up.  I cannot figure out how to flush pending stdio output.
14552 We won't be flushing handles at all before fork/exec/popen.
14553 EOM
14554         ;;
14555 esac
14556 $rm -f try.* try$exe_ext
14557
14558 : Store the full pathname to the ar program for use in the C program
14559 : Respect a hint or command line value for full_ar.
14560 case "$full_ar" in
14561 '') full_ar=$ar ;;
14562 esac
14563
14564 : Store the full pathname to the sed program for use in the C program
14565 full_sed=$sed
14566
14567 : see what type gids are declared as in the kernel
14568 echo " "
14569 echo "Looking for the type for group ids returned by getgid()."
14570 set gid_t gidtype xxx stdio.h sys/types.h
14571 eval $typedef
14572 case "$gidtype" in
14573 xxx)
14574         xxx=`./findhdr sys/user.h`
14575         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14576         case $1 in
14577         unsigned) dflt="$1 $2" ;;
14578         *) dflt="$1" ;;
14579         esac
14580         ;;
14581 *) dflt="$gidtype";;
14582 esac
14583 case "$gidtype" in
14584 gid_t) echo "gid_t found." ;;
14585 *)      rp="What is the type for group ids returned by getgid()?"
14586         . ./myread
14587         gidtype="$ans"
14588         ;;
14589 esac
14590
14591 echo " "
14592 case "$gidtype" in
14593 *_t) zzz="$gidtype"     ;;
14594 *)   zzz="gid"          ;;
14595 esac
14596 echo "Checking the size of $zzz..." >&4 
14597 cat > try.c <<EOCP
14598 #include <sys/types.h>
14599 #include <stdio.h>
14600 int main() {
14601     printf("%d\n", (int)sizeof($gidtype));
14602     exit(0);
14603 }
14604 EOCP
14605 set try
14606 if eval $compile_ok; then
14607         yyy=`$run ./try`
14608         case "$yyy" in
14609         '')     gidsize=4
14610                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14611                 ;;
14612         *)      gidsize=$yyy
14613                 echo "Your $zzz is $gidsize bytes long."
14614                 ;;
14615         esac
14616 else
14617         gidsize=4
14618         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14619 fi
14620
14621
14622 echo " "
14623 case "$gidtype" in
14624 *_t) zzz="$gidtype"     ;;
14625 *)   zzz="gid"          ;;
14626 esac
14627 echo "Checking the sign of $zzz..." >&4 
14628 cat > try.c <<EOCP
14629 #include <sys/types.h>
14630 #include <stdio.h>
14631 int main() {
14632         $gidtype foo = -1;
14633         if (foo < 0)
14634                 printf("-1\n");
14635         else
14636                 printf("1\n");
14637 }
14638 EOCP
14639 set try
14640 if eval $compile; then
14641         yyy=`$run ./try`
14642         case "$yyy" in
14643         '')     gidsign=1
14644                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14645                 ;;
14646         *)      gidsign=$yyy
14647                 case "$gidsign" in
14648                  1) echo "Your $zzz is unsigned." ;;
14649                 -1) echo "Your $zzz is signed."   ;;
14650                 esac
14651                 ;;
14652         esac
14653 else
14654         gidsign=1
14655         echo "(I can't compile the test program--guessing unsigned.)" >&4
14656 fi
14657
14658
14659 echo " "
14660
14661 if $test X"$quadtype" != X; then
14662
14663 echo "Checking how to print 64-bit integers..." >&4
14664
14665 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14666         $cat >try.c <<'EOCP'
14667 #include <sys/types.h>
14668 #include <stdio.h>
14669 int main() {
14670   int q = 12345678901;
14671   printf("%ld\n", q);
14672 }
14673 EOCP
14674         set try
14675         if eval $compile; then
14676                 yyy=`$run ./try`
14677                 case "$yyy" in
14678                 12345678901)
14679                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14680                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14681                         echo "We will use %d."
14682                         ;;
14683                 esac
14684         fi
14685 fi
14686
14687 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14688         $cat >try.c <<'EOCP'
14689 #include <sys/types.h>
14690 #include <stdio.h>
14691 int main() {
14692   long q = 12345678901;
14693   printf("%ld\n", q);
14694 }
14695 EOCP
14696         set try
14697         if eval $compile; then
14698                 yyy=`$run ./try`
14699                 case "$yyy" in
14700                 12345678901)
14701                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14702                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14703                         echo "We will use %ld."
14704                         ;;
14705                 esac
14706         fi
14707 fi
14708
14709 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14710         $cat >try.c <<'EOCP'
14711 #include <sys/types.h>
14712 #include <inttypes.h>
14713 #include <stdio.h>
14714 int main() {
14715   int64_t q = 12345678901;
14716   printf("%" PRId64 "\n", q);
14717 }
14718 EOCP
14719         set try
14720         if eval $compile; then
14721                 yyy=`$run ./try`
14722                 case "$yyy" in
14723                 12345678901)
14724                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14725                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14726                         echo "We will use the C9X style."
14727                         ;;
14728                 esac
14729         fi
14730 fi
14731
14732 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14733         $cat >try.c <<EOCP
14734 #include <sys/types.h>
14735 #include <stdio.h>
14736 int main() {
14737   $quadtype q = 12345678901;
14738   printf("%Ld\n", q);
14739 }
14740 EOCP
14741         set try
14742         if eval $compile; then
14743                 yyy=`$run ./try`
14744                 case "$yyy" in
14745                 12345678901)
14746                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14747                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14748                         echo "We will use %Ld."
14749                         ;;
14750                 esac
14751         fi
14752 fi
14753
14754 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14755         $cat >try.c <<'EOCP'
14756 #include <sys/types.h>
14757 #include <stdio.h>
14758 int main() {
14759   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14760   printf("%lld\n", q);
14761 }
14762 EOCP
14763         set try
14764         if eval $compile; then
14765                 yyy=`$run ./try`
14766                 case "$yyy" in
14767                 12345678901)
14768                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14769                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14770                         echo "We will use the %lld style."
14771                         ;;
14772                 esac
14773         fi
14774 fi
14775
14776 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14777         $cat >try.c <<EOCP
14778 #include <sys/types.h>
14779 #include <stdio.h>
14780 int main() {
14781   $quadtype q = 12345678901;
14782   printf("%qd\n", q);
14783 }
14784 EOCP
14785         set try
14786         if eval $compile; then
14787                 yyy=`$run ./try`
14788                 case "$yyy" in
14789                 12345678901)
14790                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14791                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14792                         echo "We will use %qd."
14793                         ;;
14794                 esac
14795         fi
14796 fi
14797
14798 if $test X"$sPRId64" = X; then
14799         echo "Cannot figure out how to print 64-bit integers." >&4
14800 fi
14801
14802 $rm -f try try.*
14803
14804 fi
14805
14806 case "$sPRId64" in
14807 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14808         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14809         ;;
14810 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14811         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14812         ;;
14813 esac
14814
14815
14816 echo " "
14817 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14818
14819 if $test X"$ivsize" = X8; then
14820         ivdformat="$sPRId64"
14821         uvuformat="$sPRIu64"
14822         uvoformat="$sPRIo64"
14823         uvxformat="$sPRIx64"
14824         uvXUformat="$sPRIXU64"
14825 else
14826         if $test X"$ivsize" = X"$longsize"; then
14827                 ivdformat='"ld"'
14828                 uvuformat='"lu"'
14829                 uvoformat='"lo"'
14830                 uvxformat='"lx"'
14831                 uvXUformat='"lX"'
14832         else
14833                 if $test X"$ivsize" = X"$intsize"; then
14834                         ivdformat='"d"'
14835                         uvuformat='"u"'
14836                         uvoformat='"o"'
14837                         uvxformat='"x"'
14838                         uvXUformat='"X"'
14839                 else
14840                         : far out
14841                         if $test X"$ivsize" = X"$shortsize"; then
14842                                 ivdformat='"hd"'
14843                                 uvuformat='"hu"'
14844                                 uvoformat='"ho"'
14845                                 uvxformat='"hx"'
14846                                 uvXUformat='"hX"'
14847                         fi
14848                 fi
14849         fi
14850 fi
14851
14852 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14853         nveformat="$sPRIeldbl"
14854         nvfformat="$sPRIfldbl"
14855         nvgformat="$sPRIgldbl"
14856         nvEUformat="$sPRIEUldbl"
14857         nvFUformat="$sPRIFUldbl"
14858         nvGUformat="$sPRIGUldbl"
14859 else
14860         nveformat='"e"'
14861         nvfformat='"f"'
14862         nvgformat='"g"'
14863         nvEUformat='"E"'
14864         nvFUformat='"F"'
14865         nvGUformat='"G"'
14866 fi
14867
14868 case "$ivdformat" in
14869 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
14870     exit 1
14871     ;;
14872 esac
14873
14874
14875 echo " "
14876 $echo "Checking the format string to be used for gids..." >&4
14877
14878 case "$gidsign" in
14879 -1)     if $test X"$gidsize" = X"$ivsize"; then
14880                 gidformat="$ivdformat"
14881         else
14882                 if $test X"$gidsize" = X"$longsize"; then
14883                         gidformat='"ld"'
14884                 else
14885                         if $test X"$gidsize" = X"$intsize"; then
14886                                 gidformat='"d"'
14887                         else
14888                                 if $test X"$gidsize" = X"$shortsize"; then
14889                                         gidformat='"hd"'
14890                                 fi
14891                         fi
14892                 fi
14893         fi
14894         ;;
14895 *)      if $test X"$gidsize" = X"$uvsize"; then
14896                 gidformat="$uvuformat"
14897         else
14898                 if $test X"$gidsize" = X"$longsize"; then
14899                         gidformat='"lu"'
14900                 else
14901                         if $test X"$gidsize" = X"$intsize"; then
14902                                 gidformat='"u"'
14903                         else
14904                                 if $test X"$gidsize" = X"$shortsize"; then
14905                                         gidformat='"hu"'
14906                                 fi
14907                         fi
14908                 fi
14909         fi
14910         ;;
14911 esac
14912
14913 : see if getgroups exists
14914 set getgroups d_getgrps
14915 eval $inlibc
14916
14917 : see if setgroups exists
14918 set setgroups d_setgrps
14919 eval $inlibc
14920
14921
14922 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14923 echo " "
14924 case "$d_getgrps$d_setgrps" in
14925 *define*)
14926         case "$groupstype" in
14927         '') dflt="$gidtype" ;;
14928         *)  dflt="$groupstype" ;;
14929         esac
14930         $cat <<EOM
14931 What type of pointer is the second argument to getgroups() and setgroups()?
14932 Usually this is the same as group ids, $gidtype, but not always.
14933
14934 EOM
14935         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14936         . ./myread
14937         groupstype="$ans"
14938         ;;
14939 *)  groupstype="$gidtype";;
14940 esac
14941
14942 echo " "
14943 echo "Checking if your $make program sets \$(MAKE)..." >&4
14944 case "$make_set_make" in
14945 '')
14946         $sed 's/^X //' > testmake.mak << 'EOF'
14947 Xall:
14948 X       @echo 'maketemp="$(MAKE)"'
14949 EOF
14950         case "`$make -f testmake.mak 2>/dev/null`" in
14951         *maketemp=*) make_set_make='#' ;;
14952         *)      make_set_make="MAKE=$make" ;;
14953         esac
14954         $rm -f testmake.mak
14955         ;;
14956 esac
14957 case "$make_set_make" in
14958 '#') echo "Yup, it does.";;
14959 *) echo "Nope, it doesn't.";;
14960 esac
14961
14962 : see what type is used for mode_t
14963 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14964 set mode_t modetype int stdio.h sys/types.h
14965 eval $typedef_ask
14966
14967 : see if stdarg is available
14968 echo " "
14969 if $test `./findhdr stdarg.h`; then
14970         echo "<stdarg.h> found." >&4
14971         valstd="$define"
14972 else
14973         echo "<stdarg.h> NOT found." >&4
14974         valstd="$undef"
14975 fi
14976
14977 : see if varags is available
14978 echo " "
14979 if $test `./findhdr varargs.h`; then
14980         echo "<varargs.h> found." >&4
14981 else
14982         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14983 fi
14984
14985 : set up the varargs testing programs
14986 $cat > varargs.c <<EOP
14987 #ifdef I_STDARG
14988 #include <stdarg.h>
14989 #endif
14990 #ifdef I_VARARGS
14991 #include <varargs.h>
14992 #endif
14993
14994 #ifdef I_STDARG
14995 int f(char *p, ...)
14996 #else
14997 int f(va_alist)
14998 va_dcl
14999 #endif
15000 {
15001         va_list ap;
15002 #ifndef I_STDARG
15003         char *p;
15004 #endif
15005 #ifdef I_STDARG
15006         va_start(ap,p);
15007 #else
15008         va_start(ap);
15009         p = va_arg(ap, char *);
15010 #endif
15011         va_end(ap);
15012 }
15013 EOP
15014 $cat > varargs <<EOP
15015 $startsh
15016 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
15017         echo "true"
15018 else
15019         echo "false"
15020 fi
15021 $rm -f varargs$_o
15022 EOP
15023 chmod +x varargs
15024
15025 : now check which varargs header should be included
15026 echo " "
15027 i_varhdr=''
15028 case "$valstd" in
15029 "$define")
15030         if `./varargs I_STDARG`; then
15031                 val='stdarg.h'
15032         elif `./varargs I_VARARGS`; then
15033                 val='varargs.h'
15034         fi
15035         ;;
15036 *)
15037         if `./varargs I_VARARGS`; then
15038                 val='varargs.h'
15039         fi
15040         ;;
15041 esac
15042 case "$val" in
15043 '')
15044 echo "I could not find the definition for va_dcl... You have problems..." >&4
15045         val="$undef"; set i_stdarg; eval $setvar
15046         val="$undef"; set i_varargs; eval $setvar
15047         ;;
15048 *) 
15049         set i_varhdr
15050         eval $setvar
15051         case "$i_varhdr" in
15052         stdarg.h)
15053                 val="$define"; set i_stdarg; eval $setvar
15054                 val="$undef"; set i_varargs; eval $setvar
15055                 ;;
15056         varargs.h)
15057                 val="$undef"; set i_stdarg; eval $setvar
15058                 val="$define"; set i_varargs; eval $setvar
15059                 ;;
15060         esac
15061         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
15062 esac
15063 $rm -f varargs*
15064
15065 : see if we need va_copy
15066 echo " "
15067 case "$i_stdarg" in
15068 "$define")
15069         $cat >try.c <<EOCP
15070 #include <stdarg.h>
15071 #include <stdio.h>
15072 #$i_stdlib I_STDLIB
15073 #ifdef I_STDLIB
15074 #include <stdlib.h>
15075 #endif
15076 #include <signal.h>
15077
15078 int
15079 ivfprintf(FILE *f, const char *fmt, va_list *valp)
15080 {
15081   return vfprintf(f, fmt, *valp);
15082 }
15083  
15084 int    
15085 myvfprintf(FILE *f, const  char *fmt, va_list val)
15086 {
15087   return ivfprintf(f, fmt, &val);
15088 }
15089       
15090 int
15091 myprintf(char *fmt, ...) 
15092 {
15093   va_list val;
15094   va_start(val, fmt);
15095   return myvfprintf(stdout, fmt, val); 
15096 }         
15097
15098 int
15099 main(int ac, char **av)
15100 {
15101   signal(SIGSEGV, exit);
15102
15103   myprintf("%s%cs all right, then\n", "that", '\'');                            
15104   exit(0);      
15105 }
15106 EOCP
15107         set try
15108         if eval $compile && $run ./try 2>&1 >/dev/null; then
15109                 case "`$run ./try`" in
15110                 "that's all right, then")
15111                         okay=yes
15112                         ;;
15113                 esac
15114         fi
15115         case "$okay" in
15116         yes)    echo "It seems that you don't need va_copy()." >&4
15117                 need_va_copy="$undef"
15118                 ;;
15119         *)      echo "It seems that va_copy() or similar will be needed." >&4
15120                 need_va_copy="$define"
15121                 ;;
15122         esac
15123         $rm -f try.* core core.* *.core *.core.*
15124         ;;
15125 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
15126         ;;
15127 esac
15128
15129 : define a fucntion to check prototypes
15130 $cat > protochk <<EOSH
15131 $startsh
15132 cc="$cc"
15133 optimize="$optimize"
15134 ccflags="$ccflags"
15135 prototype="$prototype"
15136 define="$define"
15137 rm=$rm
15138 EOSH
15139
15140 $cat >> protochk <<'EOSH'
15141
15142 $rm -f try.c
15143 foo="$1"
15144 shift
15145 while test $# -ge 2; do
15146         case "$1" in
15147                 $define) echo "#include <$2>" >> try.c ;;
15148                 literal) echo "$2" >> try.c ;;
15149         esac
15150     shift 2
15151 done
15152 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
15153 cat >> try.c <<'EOCP'
15154 #ifdef CAN_PROTOTYPE
15155 #define _(args) args
15156 #else
15157 #define _(args) ()
15158 #endif
15159 EOCP
15160 echo "$foo" >> try.c
15161 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
15162 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
15163 status=$?
15164 $rm -f try.[co]
15165 exit $status
15166 EOSH
15167 chmod +x protochk
15168 $eunicefix protochk
15169
15170 : see what type is used for size_t
15171 rp="What is the type used for the length parameter for string functions?"
15172 set size_t sizetype 'unsigned int' stdio.h sys/types.h
15173 eval $typedef_ask
15174
15175 : check for type of arguments to gethostbyaddr. 
15176 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
15177         case "$d_gethbyaddr" in
15178         $define)
15179                 $cat <<EOM
15180
15181 Checking to see what type of arguments are accepted by gethostbyaddr().
15182 EOM
15183                 hdrs="$define sys/types.h
15184                         $d_socket sys/socket.h 
15185                         $i_niin netinet/in.h 
15186                         $i_netdb netdb.h
15187                         $i_unistd unistd.h"
15188                 : The first arg can 'char *' or 'void *'
15189                 : The second arg is some of integral type
15190                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
15191                         for yyy in size_t long int; do
15192                                 case "$netdb_host_type" in
15193                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
15194                                         if ./protochk "$try" $hdrs; then
15195                                                 echo "Your system accepts $xxx for the first arg."
15196                                                 echo "...and $yyy for the second arg."
15197                                                 netdb_host_type="$xxx"
15198                                                 netdb_hlen_type="$yyy"
15199                                         fi
15200                                         ;;
15201                                 esac
15202                         done
15203                 done
15204                 : In case none of those worked, prompt the user.
15205                 case "$netdb_host_type" in
15206                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
15207                         dflt='char *'
15208                         . ./myread
15209                         netdb_host_type=$ans
15210                         rp='What is the type for the 2nd argument to gethostbyaddr?'
15211                         dflt="$sizetype"
15212                         . ./myread
15213                         netdb_hlen_type=$ans
15214                         ;;
15215                 esac
15216                 ;;
15217         *)      : no gethostbyaddr, so pick harmless defaults
15218                 netdb_host_type='char *'
15219                 netdb_hlen_type="$sizetype"
15220                 ;;
15221         esac
15222         # Remove the "const" if needed. -- but then we'll have a 
15223         # prototype clash!
15224         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
15225 fi
15226
15227 : check for type of argument to gethostbyname. 
15228 if test "X$netdb_name_type" = X ; then
15229         case "$d_gethbyname" in
15230         $define)
15231                 $cat <<EOM
15232
15233 Checking to see what type of argument is accepted by gethostbyname().
15234 EOM
15235                 hdrs="$define sys/types.h
15236                         $d_socket sys/socket.h 
15237                         $i_niin netinet/in.h 
15238                         $i_netdb netdb.h
15239                         $i_unistd unistd.h"
15240                 for xxx in "const char *" "char *"; do
15241                         case "$netdb_name_type" in
15242                         '')     try="extern struct hostent *gethostbyname($xxx);"
15243                                 if ./protochk "$try" $hdrs; then
15244                                         echo "Your system accepts $xxx."
15245                                         netdb_name_type="$xxx"
15246                                 fi
15247                                 ;;
15248                         esac
15249                 done
15250                 : In case none of those worked, prompt the user.
15251                 case "$netdb_name_type" in
15252                 '')     rp='What is the type for the 1st argument to gethostbyname?'
15253                         dflt='char *'
15254                         . ./myread
15255                         netdb_name_type=$ans
15256                         ;;
15257                 esac
15258                 ;;
15259         *)      : no gethostbyname, so pick harmless default
15260                 netdb_name_type='char *'
15261                 ;;
15262         esac
15263 fi
15264
15265 : check for type of 1st argument to getnetbyaddr. 
15266 if test "X$netdb_net_type" = X ; then
15267         case "$d_getnbyaddr" in
15268         $define)
15269                 $cat <<EOM
15270
15271 Checking to see what type of 1st argument is accepted by getnetbyaddr().
15272 EOM
15273                 hdrs="$define sys/types.h
15274                         $d_socket sys/socket.h 
15275                         $i_niin netinet/in.h 
15276                         $i_netdb netdb.h
15277                         $i_unistd unistd.h"
15278                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
15279                         case "$netdb_net_type" in
15280                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
15281                                 if ./protochk "$try" $hdrs; then
15282                                         echo "Your system accepts $xxx."
15283                                         netdb_net_type="$xxx"
15284                                 fi
15285                                 ;;
15286                         esac
15287                 done
15288                 : In case none of those worked, prompt the user.
15289                 case "$netdb_net_type" in
15290                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
15291                         dflt='long'
15292                         . ./myread
15293                         netdb_net_type=$ans
15294                         ;;
15295                 esac
15296                 ;;
15297         *)      : no getnetbyaddr, so pick harmless default
15298                 netdb_net_type='long'
15299                 ;;
15300         esac
15301 fi
15302 : locate the preferred pager for this system
15303 case "$pager" in
15304 '')
15305         dflt=''
15306         case "$pg" in
15307         /*) dflt=$pg;;
15308         [a-zA-Z]:/*) dflt=$pg;;
15309         esac
15310         case "$more" in
15311         /*) dflt=$more;;
15312         [a-zA-Z]:/*) dflt=$more;;
15313         esac
15314         case "$less" in
15315         /*) dflt=$less;;
15316         [a-zA-Z]:/*) dflt=$less;;
15317         esac
15318         case "$dflt" in
15319         '') dflt=/usr/ucb/more;;
15320         esac
15321         ;;
15322 *) dflt="$pager";;
15323 esac
15324 echo " "
15325 fn=f/
15326 rp='What pager is used on your system?'
15327 . ./getfile
15328 pager="$ans"
15329
15330 : see what type pids are declared as in the kernel
15331 rp="What is the type of process ids on this system?"
15332 set pid_t pidtype int stdio.h sys/types.h
15333 eval $typedef_ask
15334
15335 : Find earliest binary compatible site_perl subdirectory perl can use.
15336 case "$bincompat5005" in
15337 "$define") xs_apiversion='5.005' ;;
15338 *) xs_apiversion=$version ;;   # The current site_perl version.
15339 esac
15340 : Find earliest pure perl site_perl subdirectory perl can use.
15341 : The versioned directories started at 5.005.
15342 pm_apiversion='5.005'
15343
15344 : see if ar generates random libraries by itself
15345 echo " "
15346 echo "Checking how to generate random libraries on your machine..." >&4
15347 echo 'int bar1() { return bar2(); }' > bar1.c
15348 echo 'int bar2() { return 2; }' > bar2.c
15349 $cat > foo.c <<'EOP'
15350 int main() { printf("%d\n", bar1()); exit(0); }
15351 EOP
15352 $cc $ccflags -c bar1.c >/dev/null 2>&1
15353 $cc $ccflags -c bar2.c >/dev/null 2>&1
15354 $cc $ccflags -c foo.c >/dev/null 2>&1
15355 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
15356 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15357         $run ./foobar >/dev/null 2>&1; then
15358         echo "$ar appears to generate random libraries itself."
15359         orderlib=false
15360         ranlib=":"
15361 elif $ar ts bar$_a >/dev/null 2>&1 &&
15362         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15363         $run ./foobar >/dev/null 2>&1; then
15364                 echo "a table of contents needs to be added with '$ar ts'."
15365                 orderlib=false
15366                 ranlib="$ar ts"
15367 else
15368         case "$ranlib" in
15369         :) ranlib='';;
15370         '')
15371                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15372                 $test -f $ranlib || ranlib=''
15373                 ;;
15374         esac
15375         if $test -n "$ranlib"; then
15376                 echo "your system has '$ranlib'; we'll use that."
15377                 orderlib=false
15378         else
15379                 echo "your system doesn't seem to support random libraries"
15380                 echo "so we'll use lorder and tsort to order the libraries."
15381                 orderlib=true
15382                 ranlib=":"
15383         fi
15384 fi
15385 $rm -f foo* bar* 
15386
15387 : check for type of arguments to select. 
15388 case "$selecttype" in
15389 '') case "$d_select" in
15390         $define)
15391                 echo " "
15392                 $cat <<EOM
15393 Checking to see what type of arguments are accepted by select().
15394 EOM
15395                 hdrs="$define sys/types.h
15396                         $i_systime sys/time.h 
15397                         $i_sysselct sys/select.h
15398                         $d_socket sys/socket.h"
15399                 : The first arg can be int, unsigned, or size_t
15400                 : The last arg may or may not be 'const'
15401                 val=''
15402                 : void pointer has been seen but using that
15403                 : breaks the selectminbits test
15404                 for xxx in 'fd_set *' 'int *'; do
15405                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15406                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
15407                                         case "$val" in
15408                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15409                                                 if ./protochk "$try" $hdrs; then
15410                                                         echo "Your system accepts $xxx."
15411                                                         val="$xxx"
15412                                                 fi
15413                                                 ;;
15414                                         esac
15415                                 done
15416                         done
15417                 done
15418                 case "$val" in
15419                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15420                         case "$d_fd_set" in
15421                                 $define) dflt="fd_set *" ;;
15422                                 *)              dflt="int *" ;;
15423                         esac
15424                         . ./myread
15425                         val=$ans
15426                         ;;
15427                 esac
15428                 selecttype="$val"
15429                 ;;
15430         *)      : no select, so pick a harmless default
15431                 selecttype='int *'
15432                 ;;
15433         esac
15434         ;;
15435 esac
15436
15437 : check for the select 'width'
15438 case "$selectminbits" in
15439 '') case "$d_select" in
15440         $define)
15441                 $cat <<EOM
15442
15443 Checking to see on how many bits at a time your select() operates...
15444 EOM
15445                 $cat >try.c <<EOCP
15446 #include <sys/types.h>
15447 #$i_time I_TIME
15448 #$i_systime I_SYS_TIME
15449 #$i_systimek I_SYS_TIME_KERNEL
15450 #ifdef I_TIME
15451 #   include <time.h>
15452 #endif
15453 #ifdef I_SYS_TIME
15454 #   ifdef I_SYS_TIME_KERNEL
15455 #       define KERNEL
15456 #   endif
15457 #   include <sys/time.h>
15458 #   ifdef I_SYS_TIME_KERNEL
15459 #       undef KERNEL
15460 #   endif
15461 #endif
15462 #$i_sysselct I_SYS_SELECT
15463 #ifdef I_SYS_SELECT
15464 #include <sys/select.h>
15465 #endif
15466 #$d_socket HAS_SOCKET
15467 #ifdef HAS_SOCKET
15468 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15469 #endif
15470 #include <stdio.h>
15471 $selecttype b;
15472 #define S sizeof(*(b))
15473 #define MINBITS 64
15474 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15475 #define NBITS  (NBYTES * 8)
15476 int main() {
15477     char s[NBYTES];
15478     struct timeval t;
15479     int i;
15480     FILE* fp;
15481     int fd;
15482
15483     fclose(stdin);
15484     fp = fopen("try.c", "r");
15485     if (fp == 0)
15486       exit(1);
15487     fd = fileno(fp);
15488     if (fd < 0)
15489       exit(2);
15490     b = ($selecttype)s;
15491     for (i = 0; i < NBITS; i++)
15492         FD_SET(i, b);
15493     t.tv_sec  = 0;
15494     t.tv_usec = 0;
15495     select(fd + 1, b, 0, 0, &t);
15496     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15497     printf("%d\n", i + 1);
15498     return 0;
15499 }
15500 EOCP
15501                 set try
15502                 if eval $compile_ok; then
15503                         selectminbits=`$run ./try`
15504                         case "$selectminbits" in
15505                         '')     cat >&4 <<EOM
15506 Cannot figure out on how many bits at a time your select() operates.
15507 I'll play safe and guess it is 32 bits.
15508 EOM
15509                                 selectminbits=32
15510                                 bits="32 bits"
15511                                 ;;
15512                         1)      bits="1 bit" ;;
15513                         *)      bits="$selectminbits bits" ;;
15514                         esac
15515                         echo "Your select() operates on $bits at a time." >&4
15516                 else
15517                         rp='What is the minimum number of bits your select() operates on?'
15518                         case "$byteorder" in
15519                         1234|12345678)  dflt=32 ;;
15520                         *)              dflt=1  ;;
15521                         esac
15522                         . ./myread
15523                         val=$ans
15524                         selectminbits="$val"
15525                 fi
15526                 $rm -f try.* try
15527                 ;;
15528         *)      : no select, so pick a harmless default
15529                 selectminbits='32'
15530                 ;;
15531         esac
15532         ;;
15533 esac
15534
15535 : Trace out the files included by signal.h, then look for SIGxxx names.
15536 : Remove SIGARRAYSIZE used by HPUX.
15537 : Remove SIGSTKSIZE used by Linux.
15538 : Remove SIGSTKSZ used by Posix.
15539 : Remove SIGTYP void lines used by OS2.
15540 : Some cpps, like os390, dont give the file name anywhere
15541 if [ "X$fieldn" = X ]; then
15542         : Just make some guesses.  We check them later.
15543         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15544 else
15545         xxx=`echo '#include <signal.h>' |
15546         $cppstdin $cppminus $cppflags 2>/dev/null |
15547         $grep '^[       ]*#.*include' | 
15548         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15549 fi
15550 : Check this list of files to be sure we have parsed the cpp output ok.
15551 : This will also avoid potentially non-existent files, such 
15552 : as ../foo/bar.h
15553 xxxfiles=''
15554 for xx in $xxx /dev/null ; do
15555         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15556 done
15557 : If we have found no files, at least try signal.h
15558 case "$xxxfiles" in
15559 '')     xxxfiles=`./findhdr signal.h` ;;
15560 esac
15561 xxx=`awk '
15562 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15563         print substr($2, 4, 20)
15564 }
15565 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15566         print substr($3, 4, 20)
15567 }' $xxxfiles`
15568 : Append some common names just in case the awk scan failed.
15569 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15570 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15571 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15572 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15573 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15574
15575 : generate a few handy files for later
15576 $cat > signal.c <<'EOCP'
15577 #include <sys/types.h>
15578 #include <signal.h>
15579 #include <stdio.h>
15580 int main() {
15581
15582 /* Strange style to avoid deeply-nested #if/#else/#endif */
15583 #ifndef NSIG
15584 #  ifdef _NSIG
15585 #    define NSIG (_NSIG)
15586 #  endif
15587 #endif
15588
15589 #ifndef NSIG
15590 #  ifdef SIGMAX
15591 #    define NSIG (SIGMAX+1)
15592 #  endif
15593 #endif
15594
15595 #ifndef NSIG
15596 #  ifdef SIG_MAX
15597 #    define NSIG (SIG_MAX+1)
15598 #  endif
15599 #endif
15600
15601 #ifndef NSIG
15602 #  ifdef MAXSIG
15603 #    define NSIG (MAXSIG+1)
15604 #  endif
15605 #endif
15606
15607 #ifndef NSIG
15608 #  ifdef MAX_SIG
15609 #    define NSIG (MAX_SIG+1)
15610 #  endif
15611 #endif
15612
15613 #ifndef NSIG
15614 #  ifdef SIGARRAYSIZE
15615 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15616 #  endif
15617 #endif
15618
15619 #ifndef NSIG
15620 #  ifdef _sys_nsig
15621 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15622 #  endif
15623 #endif
15624
15625 /* Default to some arbitrary number that's big enough to get most
15626    of the common signals.
15627 */
15628 #ifndef NSIG
15629 #    define NSIG 50
15630 #endif
15631
15632 printf("NSIG %d\n", NSIG);
15633
15634 #ifndef JUST_NSIG
15635
15636 EOCP
15637
15638 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15639 {
15640         printf "#ifdef SIG"; printf $1; printf "\n"
15641         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15642         printf $1; printf ");\n"
15643         printf "#endif\n"
15644 }
15645 END {
15646         printf "#endif /* JUST_NSIG */\n";
15647         printf "exit(0);\n}\n";
15648 }
15649 ' >>signal.c
15650 $cat >signal.awk <<'EOP'
15651 BEGIN { ndups = 0 }
15652 $1 ~ /^NSIG$/ { nsig = $2 }
15653 ($1 !~ /^NSIG$/) && (NF == 2) {
15654     if ($2 > maxsig) { maxsig = $2 }
15655     if (sig_name[$2]) {
15656         dup_name[ndups] = $1
15657         dup_num[ndups] = $2
15658         ndups++ 
15659     }
15660     else {
15661         sig_name[$2] = $1
15662         sig_num[$2] = $2
15663     }
15664 }
15665 END { 
15666     if (nsig == 0) {
15667         nsig = maxsig + 1
15668     }
15669     printf("NSIG %d\n", nsig);
15670     for (n = 1; n < nsig; n++) {
15671         if (sig_name[n]) {
15672             printf("%s %d\n", sig_name[n], sig_num[n])
15673         }
15674         else {
15675             printf("NUM%d %d\n", n, n) 
15676         }
15677     }
15678     for (n = 0; n < ndups; n++) {
15679         printf("%s %d\n", dup_name[n], dup_num[n])
15680     }
15681 }
15682 EOP
15683 $cat >signal_cmd <<EOS
15684 $startsh
15685 if $test -s signal.lst; then
15686     echo "Using your existing signal.lst file"
15687         exit 0
15688 fi
15689 xxx="$xxx"
15690 EOS
15691 $cat >>signal_cmd <<'EOS'
15692
15693 set signal
15694 if eval $compile_ok; then
15695         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15696 else
15697         echo "(I can't seem be able to compile the whole test program)" >&4
15698         echo "(I'll try it in little pieces.)" >&4
15699         set signal -DJUST_NSIG
15700         if eval $compile_ok; then
15701                 $run ./signal$_exe > signal.nsg
15702                 $cat signal.nsg
15703         else
15704                 echo "I can't seem to figure out how many signals you have." >&4
15705                 echo "Guessing 50." >&4
15706                 echo 'NSIG 50' > signal.nsg
15707         fi
15708         : Now look at all the signal names, one at a time.
15709         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15710                 $cat > signal.c <<EOCP
15711 #include <sys/types.h>
15712 #include <signal.h>
15713 #include <stdio.h>
15714 int main() {
15715 printf("$xx %d\n", SIG${xx});
15716 return 0;
15717 }
15718 EOCP
15719                 set signal
15720                 if eval $compile; then
15721                         echo "SIG${xx} found."
15722                         $run ./signal$_exe  >> signal.ls1
15723                 else
15724                         echo "SIG${xx} NOT found."
15725                 fi
15726         done
15727         if $test -s signal.ls1; then
15728                 $cat signal.nsg signal.ls1 |
15729                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15730         fi
15731
15732 fi
15733 if $test -s signal.lst; then
15734         :
15735 else
15736         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15737         echo 'kill -l' >signal
15738         set X `csh -f <signal`
15739         $rm -f signal
15740         shift
15741         case $# in
15742         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15743         esac
15744         echo $@ | $tr ' ' $trnl | \
15745             $awk '{ printf "%s %d\n", $1, ++s; }
15746                   END { printf "NSIG %d\n", ++s }' >signal.lst
15747 fi
15748 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15749 EOS
15750 chmod a+x signal_cmd
15751 $eunicefix signal_cmd
15752
15753 : generate list of signal names
15754 echo " "
15755 case "$sig_name_init" in
15756 '') doinit=yes ;;
15757 *)  case "$sig_num_init" in
15758     ''|*,*) doinit=yes ;;
15759     esac ;;
15760 esac
15761 case "$doinit" in
15762 yes)
15763         echo "Generating a list of signal names and numbers..." >&4
15764         . ./signal_cmd
15765         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15766         sig_name=`$awk 'BEGIN { printf "ZERO " }
15767                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15768         sig_num=`$awk  'BEGIN { printf "0 " }
15769                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15770         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15771                              !/^NSIG/   { printf "\"%s\", ", $1 }
15772                              END        { printf "0\n" }' signal.lst`
15773         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15774                              !/^NSIG/   { printf "%d, ", $2}
15775                              END        { printf "0\n"}' signal.lst`
15776         ;;
15777 esac
15778 echo "The following $sig_count signals are available:"
15779 echo " "
15780 echo $sig_name | $awk \
15781 'BEGIN { linelen = 0 }
15782 {
15783         for (i = 1; i <= NF; i++) {
15784                 name = "SIG" $i " "
15785                 linelen = linelen + length(name)
15786                 if (linelen > 70) {
15787                         printf "\n"
15788                         linelen = length(name)
15789                 }
15790                 printf "%s", name
15791         }
15792         printf "\n"
15793 }'
15794 sig_size=`echo $sig_name | awk '{print NF}'`
15795 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15796
15797 echo " "
15798 case "$sizetype" in
15799 *_t) zzz="$sizetype"    ;;
15800 *)   zzz="filesize"     ;;
15801 esac
15802 echo "Checking the size of $zzz..." >&4 
15803 cat > try.c <<EOCP
15804 #include <sys/types.h>
15805 #include <stdio.h>
15806 int main() {
15807     printf("%d\n", (int)sizeof($sizetype));
15808     exit(0);
15809 }
15810 EOCP
15811 set try
15812 if eval $compile_ok; then
15813         yyy=`$run ./try`
15814         case "$yyy" in
15815         '')     sizesize=4
15816                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15817                 ;;
15818         *)      sizesize=$yyy
15819                 echo "Your $zzz size is $sizesize bytes."
15820                 ;;
15821         esac
15822 else
15823         sizesize=4
15824         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15825 fi
15826
15827
15828 : check for socklen_t
15829 echo " "
15830 echo "Checking to see if you have socklen_t..." >&4
15831 $cat >try.c <<EOCP
15832 #include <sys/types.h>
15833 #$d_socket HAS_SOCKET
15834 #ifdef HAS_SOCKET
15835 #include <sys/socket.h>
15836 #endif
15837 int main() { socklen_t x = 16; }
15838 EOCP
15839 set try
15840 if eval $compile; then
15841         val="$define"
15842         echo "You have socklen_t."
15843 else
15844         val="$undef"
15845         echo "You do not have socklen_t."
15846         case "$sizetype" in
15847         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15848         esac
15849 fi
15850 $rm -f try try.*
15851 set d_socklen_t
15852 eval $setvar
15853
15854 : see if this is a socks.h system
15855 set socks.h i_socks
15856 eval $inhdr
15857
15858 : check for type of the size argument to socket calls
15859 case "$d_socket" in
15860 "$define")
15861         $cat <<EOM
15862
15863 Checking to see what type is the last argument of accept().
15864 EOM
15865         yyy=''
15866         case "$d_socklen_t" in
15867         "$define") yyy="$yyy socklen_t"
15868         esac
15869         yyy="$yyy $sizetype int long unsigned"
15870         for xxx in $yyy; do
15871                 case "$socksizetype" in
15872                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15873                         case "$usesocks" in
15874                         "$define")
15875                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15876                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15877                                         socksizetype="$xxx"
15878                                 fi
15879                                 ;;
15880                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15881                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15882                                         socksizetype="$xxx"
15883                                 fi
15884                                 ;;
15885                         esac
15886                         ;;
15887                 esac
15888         done
15889 : In case none of those worked, prompt the user.
15890         case "$socksizetype" in
15891         '')     rp='What is the type for socket address structure sizes?'
15892                 dflt='int'
15893                 . ./myread
15894                 socksizetype=$ans
15895                 ;;
15896         esac
15897         ;;
15898 *)      : no sockets, so pick relatively harmless default
15899         socksizetype='int'
15900         ;;
15901 esac
15902
15903 : see what type is used for signed size_t
15904 set ssize_t ssizetype int stdio.h sys/types.h
15905 eval $typedef
15906 dflt="$ssizetype"
15907 $cat > try.c <<EOM
15908 #include <stdio.h>
15909 #include <sys/types.h>
15910 #define Size_t $sizetype
15911 #define SSize_t $dflt
15912 int main()
15913 {
15914         if (sizeof(Size_t) == sizeof(SSize_t))
15915                 printf("$dflt\n");
15916         else if (sizeof(Size_t) == sizeof(int))
15917                 printf("int\n");
15918         else 
15919                 printf("long\n");
15920         exit(0);
15921 }
15922 EOM
15923 echo " "
15924 set try
15925 if eval $compile_ok && $run ./try > /dev/null; then
15926         ssizetype=`$run ./try`
15927         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15928 else
15929         $cat >&4 <<EOM
15930 Help! I can't compile and run the ssize_t test program: please enlighten me!
15931 (This is probably a misconfiguration in your system or libraries, and
15932 you really ought to fix it.  Still, I'll try anyway.)
15933
15934 I need a type that is the same size as $sizetype, but is guaranteed to
15935 be signed.  Common values are ssize_t, int and long.
15936
15937 EOM
15938         rp="What signed type is the same size as $sizetype?"
15939         . ./myread
15940         ssizetype="$ans"
15941 fi
15942 $rm -f try try.*
15943
15944 : see what type of char stdio uses.
15945 echo " "
15946 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15947 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15948         echo "Your stdio uses unsigned chars." >&4
15949         stdchar="unsigned char"
15950 else
15951         echo "Your stdio uses signed chars." >&4
15952         stdchar="char"
15953 fi
15954 $rm -f stdioh
15955
15956
15957
15958 : see if time exists
15959 echo " "
15960 if test "X$d_time" = X -o X"$timetype" = X; then
15961     if set time val -f d_time; eval $csym; $val; then
15962                 echo 'time() found.' >&4
15963                 val="$define"
15964                 rp="What is the type returned by time() on this system?"
15965                 set time_t timetype long stdio.h sys/types.h
15966                 eval $typedef_ask
15967     else
15968                 echo 'time() not found, hope that will do.' >&4
15969                 val="$undef"
15970                 timetype='int';
15971     fi
15972     set d_time
15973     eval $setvar
15974 fi
15975
15976 : see what type uids are declared as in the kernel
15977 echo " "
15978 echo "Looking for the type for user ids returned by getuid()."
15979 set uid_t uidtype xxx stdio.h sys/types.h
15980 eval $typedef
15981 case "$uidtype" in
15982 xxx)
15983         xxx=`./findhdr sys/user.h`
15984         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15985         case $1 in
15986         unsigned) dflt="$1 $2" ;;
15987         *) dflt="$1" ;;
15988         esac
15989         ;;
15990 *) dflt="$uidtype";;
15991 esac
15992 case "$uidtype" in
15993 uid_t)  echo "uid_t found." ;;
15994 *)      rp="What is the type for user ids returned by getuid()?"
15995         . ./myread
15996         uidtype="$ans"
15997         ;;
15998 esac
15999
16000 echo " "
16001 case "$uidtype" in
16002 *_t) zzz="$uidtype"     ;;
16003 *)   zzz="uid"          ;;
16004 esac
16005 echo "Checking the size of $zzz..." >&4 
16006 cat > try.c <<EOCP
16007 #include <sys/types.h>
16008 #include <stdio.h>
16009 int main() {
16010     printf("%d\n", (int)sizeof($uidtype));
16011     exit(0);
16012 }
16013 EOCP
16014 set try
16015 if eval $compile_ok; then
16016         yyy=`$run ./try`
16017         case "$yyy" in
16018         '')     uidsize=4
16019                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
16020                 ;;
16021         *)      uidsize=$yyy
16022                 echo "Your $zzz is $uidsize bytes long."
16023                 ;;
16024         esac
16025 else
16026         uidsize=4
16027         echo "(I can't compile the test program--guessing $uidsize.)" >&4
16028 fi
16029
16030 echo " "
16031 case "$uidtype" in
16032 *_t) zzz="$uidtype"     ;;
16033 *)   zzz="uid"          ;;
16034 esac
16035 echo "Checking the sign of $zzz..." >&4
16036 cat > try.c <<EOCP
16037 #include <sys/types.h>
16038 #include <stdio.h>
16039 int main() {
16040         $uidtype foo = -1;
16041         if (foo < 0)
16042                 printf("-1\n");
16043         else
16044                 printf("1\n");
16045 }
16046 EOCP
16047 set try
16048 if eval $compile; then
16049         yyy=`$run ./try`
16050         case "$yyy" in
16051         '')     uidsign=1
16052                 echo "(I can't execute the test program--guessing unsigned.)" >&4
16053                 ;;
16054         *)      uidsign=$yyy
16055                 case "$uidsign" in
16056                  1) echo "Your $zzz is unsigned." ;;
16057                 -1) echo "Your $zzz is signed."   ;;
16058                 esac
16059                 ;;
16060         esac
16061 else
16062         uidsign=1
16063         echo "(I can't compile the test program--guessing unsigned.)" >&4
16064 fi
16065
16066
16067
16068 echo " "
16069 $echo "Checking the format string to be used for uids..." >&4
16070
16071 case "$uidsign" in
16072 -1)     if $test X"$uidsize" = X"$ivsize"; then
16073                 uidformat="$ivdformat"
16074         else
16075                 if $test X"$uidsize" = X"$longsize"; then
16076                         uidformat='"ld"'
16077                 else
16078                         if $test X"$uidsize" = X"$intsize"; then
16079                                 uidformat='"d"'
16080                         else
16081                                 if $test X"$uidsize" = X"$shortsize"; then
16082                                         uidformat='"hd"'
16083                                 fi
16084                         fi
16085                 fi
16086         fi
16087         ;;
16088 *)      if $test X"$uidsize" = X"$uvsize"; then
16089                 uidformat="$uvuformat"
16090         else
16091                 if $test X"$uidsize" = X"$longsize"; then
16092                         uidformat='"lu"'
16093                 else
16094                         if $test X"$uidsize" = X"$intsize"; then
16095                                 uidformat='"u"'
16096                         else
16097                                 if $test X"$uidsize" = X"$shortsize"; then
16098                                         uidformat='"hu"'
16099                                 fi
16100                         fi
16101                 fi
16102         fi
16103         ;;
16104 esac
16105
16106 : determine compiler compiler
16107 case "$yacc" in
16108 '')
16109         dflt=yacc;;
16110 *)
16111         dflt="$yacc";;
16112 esac
16113 echo " "
16114 comp='yacc'
16115 if $test -f "$byacc$_exe"; then
16116         dflt="$byacc"
16117         comp="byacc or $comp"
16118 fi
16119 if $test -f "$bison$_exe"; then
16120         comp="$comp or bison -y"
16121 fi
16122 rp="Which compiler compiler ($comp) shall I use?"
16123 . ./myread
16124 yacc="$ans"
16125 case "$yacc" in
16126 *bis*)
16127         case "$yacc" in
16128         *-y*) ;;
16129         *)
16130                 yacc="$yacc -y"
16131                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
16132                 ;;
16133         esac
16134         ;;
16135 esac
16136
16137 : see if this is a fp.h system
16138 set fp.h i_fp
16139 eval $inhdr
16140
16141 : see if this is a fp_class.h system
16142 set fp_class.h i_fp_class
16143 eval $inhdr
16144
16145 : see if this is a ieeefp.h system
16146 case "$i_ieeefp" in
16147 '' ) set ieeefp.h i_ieeefp
16148      eval $inhdr
16149      ;;
16150 esac
16151
16152 : see if this is a libutil.h system
16153 set libutil.h i_libutil
16154 eval $inhdr
16155
16156 : see if locale.h is available
16157 set locale.h i_locale
16158 eval $inhdr
16159
16160 : see if mach cthreads are available
16161 if test "X$usethreads" = "X$define"; then
16162         set mach/cthreads.h i_machcthr
16163         eval $inhdr
16164 else
16165         i_machcthr="$undef"
16166 fi
16167
16168
16169
16170 : see if this is a math.h system
16171 set math.h i_math
16172 eval $inhdr
16173
16174 : see if this is a mntent.h system
16175 set mntent.h i_mntent
16176 eval $inhdr
16177
16178 : see if ndbm.h is available
16179 set ndbm.h t_ndbm
16180 eval $inhdr
16181
16182 case "$t_ndbm" in
16183 $undef)
16184     # Some Linux distributions such as RedHat 7.1 put the
16185     # ndbm.h header in /usr/include/gdbm/ndbm.h.
16186     if $test -f /usr/include/gdbm/ndbm.h; then
16187         echo '<gdbm/ndbm.h> found.'
16188         ccflags="$ccflags -I/usr/include/gdbm"
16189         cppflags="$cppflags -I/usr/include/gdbm"
16190         t_ndbm=$define
16191     fi
16192     ;;
16193 esac
16194
16195 case "$t_ndbm" in
16196 $define)
16197         : see if dbm_open exists
16198         set dbm_open d_dbm_open
16199         eval $inlibc
16200         case "$d_dbm_open" in
16201         $undef)
16202                 t_ndbm="$undef"
16203                 echo "We won't be including <ndbm.h>"
16204                 ;;
16205         esac
16206         ;;
16207 esac
16208 val="$t_ndbm"
16209 set i_ndbm
16210 eval $setvar
16211
16212 : see if net/errno.h is available
16213 val=''
16214 set net/errno.h val
16215 eval $inhdr
16216
16217 : Unfortunately, it causes problems on some systems.  Arrgh.
16218 case "$val" in
16219 $define)
16220         cat > try.c <<'EOM'
16221 #include <stdio.h>
16222 #include <errno.h>
16223 #include <net/errno.h>
16224 int func()
16225 {
16226         return ENOTSOCK;
16227 }
16228 EOM
16229         if $cc $ccflags -c try.c >/dev/null 2>&1; then
16230                 echo "We'll be including <net/errno.h>." >&4
16231         else
16232                 echo "We won't be including <net/errno.h>." >&4
16233                 val="$undef"
16234         fi
16235         $rm -f try.* try
16236         ;;
16237 esac
16238 set i_neterrno
16239 eval $setvar
16240
16241 : see if netinet/tcp.h is available
16242 set netinet/tcp.h i_netinettcp
16243 eval $inhdr
16244
16245 : see if this is a poll.h system
16246 set poll.h i_poll
16247 eval $inhdr
16248
16249 : see if this is a prot.h system
16250 set prot.h i_prot
16251 eval $inhdr
16252
16253 echo " "
16254 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
16255 $cat <<'EOSH' > Cppsym.know
16256 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
16257 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
16258 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
16259 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
16260 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
16261 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
16262 bull c cadmus clipper CMU COFF COMPILER_VERSION
16263 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
16264 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
16265 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
16266 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
16267 GLIBC GLIBC_MINOR
16268 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
16269 H3050R H3050RX hbullx20 hcx host_mips
16270 hp200 hp300 hp700 HP700 hp800 hp9000
16271 hp9000s200 hp9000s300 hp9000s400 hp9000s500
16272 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
16273 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
16274 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
16275 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
16276 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
16277 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
16278 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
16279 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
16280 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
16281 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
16282 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
16283 MATH_HAS_NO_SIDE_EFFECTS
16284 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
16285 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
16286 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
16287 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
16288 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
16289 NetBSD news1500 news1700 news1800 news1900 news3700
16290 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
16291 ns32016 ns32332 ns32k nsc32000
16292 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
16293 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
16294 pc532 pdp11 PGC PIC plexus PORTAR posix
16295 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
16296 POSIX_C_SOURCE POSIX_SOURCE POWER
16297 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
16298 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
16299 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
16300 sony sony_news sonyrisc sparc sparclite spectrum
16301 stardent stdc STDC_EXT stratos sun sun3 sun386
16302 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
16303 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
16304 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
16305 sysV68 sysV88 Tek4132 Tek4300 titan
16306 TM3200 TM5400 TM5600
16307 tower tower32 tower32_200 tower32_600 tower32_700
16308 tower32_800 tower32_850 tss
16309 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
16310 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
16311 unix UNIX95 UNIX99 unixpc unos
16312 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
16313 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
16314 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
16315 USGr4 USGr4_2
16316 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
16317 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
16318 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
16319 z8000
16320 EOSH
16321 # Maybe put other stuff here too.
16322 cat <<EOSH >>Cppsym.know
16323 $osname
16324 EOSH
16325 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
16326 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
16327 $cat Cppsym.know > Cppsym.c
16328 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
16329 $rm -f Cppsym.a Cppsym.b Cppsym.c
16330 cat <<EOSH > Cppsym
16331 $startsh
16332 if $test \$# -gt 0; then
16333     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
16334     if $test -s Cppsym.got; then
16335         $rm -f Cppsym.got
16336         exit 0
16337     fi
16338     $rm -f Cppsym.got
16339     exit 1
16340 else
16341     $tr " " "$trnl" | ./Cppsym.try
16342     exit 0
16343 fi
16344 EOSH
16345 chmod +x Cppsym
16346 $eunicefix Cppsym
16347 cat <<EOSH > Cppsym.try
16348 $startsh
16349 cat <<'EOCP' > try.c
16350 #include <stdio.h>
16351 int main() {
16352 EOCP
16353 $awk \\
16354 EOSH
16355 cat <<'EOSH' >> Cppsym.try
16356 'length($1) > 0 {
16357     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
16358     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
16359     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
16360     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
16361 }'       >> try.c
16362 echo 'return 0;}' >> try.c
16363 EOSH
16364 cat <<EOSH >> Cppsym.try
16365 ccflags="$ccflags"
16366 case "$osname-$gccversion" in
16367 irix-) ccflags="\$ccflags -woff 1178" ;;
16368 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16369 esac
16370 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
16371 EOSH
16372 chmod +x Cppsym.try
16373 $eunicefix Cppsym.try
16374 ./Cppsym < Cppsym.know > Cppsym.true
16375 : now check the C compiler for additional symbols
16376 postprocess_cc_v=''
16377 case "$osname" in
16378 aix) postprocess_cc_v="|$tr , ' '" ;;
16379 esac
16380 $cat >ccsym <<EOS
16381 $startsh
16382 $cat >tmp.c <<EOF
16383 extern int foo;
16384 EOF
16385 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16386 do
16387         case "\$i" in
16388         -D*) echo "\$i" | $sed 's/^-D//';;
16389         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16390         esac
16391 done
16392 $rm -f try.c
16393 EOS
16394 postprocess_cc_v=''
16395 chmod +x ccsym
16396 $eunicefix ccsym
16397 ./ccsym > ccsym1.raw
16398 if $test -s ccsym1.raw; then
16399        $sort ccsym1.raw | $uniq >ccsym.raw
16400 else
16401        mv ccsym1.raw ccsym.raw
16402 fi
16403
16404 $awk '/\=/ { print $0; next }
16405         { print $0"=1" }' ccsym.raw >ccsym.list
16406 $awk '/\=/ { print $0; next }
16407         { print $0"=1" }' Cppsym.true >ccsym.true
16408 $comm -13 ccsym.true ccsym.list >ccsym.own
16409 $comm -12 ccsym.true ccsym.list >ccsym.com
16410 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16411 also=''
16412 if $test -z ccsym.raw; then
16413         echo "Your C compiler doesn't seem to define any symbols!" >&4
16414         echo " "
16415         echo "However, your C preprocessor defines the following symbols:"
16416         $cat Cppsym.true
16417         ccsymbols=''
16418         cppsymbols=`$cat Cppsym.true`
16419         cppsymbols=`echo $cppsymbols`
16420         cppccsymbols="$cppsymbols"
16421 else
16422         if $test -s ccsym.com; then
16423                 echo "Your C compiler and pre-processor define these symbols:"
16424                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16425                 also='also '
16426                 symbols='ones'
16427                 cppccsymbols=`$cat ccsym.com`
16428                 cppccsymbols=`echo $cppccsymbols`
16429                 $test "$silent" || sleep 1
16430         fi
16431         if $test -s ccsym.cpp; then
16432                 $test "$also" && echo " "
16433                 echo "Your C pre-processor ${also}defines the following symbols:"
16434                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16435                 also='further '
16436                 cppsymbols=`$cat ccsym.cpp`
16437                 cppsymbols=`echo $cppsymbols`
16438                 $test "$silent" || sleep 1
16439         fi
16440         if $test -s ccsym.own; then
16441                 $test "$also" && echo " "
16442                 echo "Your C compiler ${also}defines the following cpp symbols:"
16443                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16444                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16445                 ccsymbols=`$cat ccsym.own`
16446                 ccsymbols=`echo $ccsymbols`
16447                 $test "$silent" || sleep 1
16448         fi
16449 fi
16450
16451 : see if this is a termio system
16452 val="$undef"
16453 val2="$undef"
16454 val3="$undef"
16455 if $test `./findhdr termios.h`; then
16456         set tcsetattr i_termios
16457         eval $inlibc
16458         val3="$i_termios"
16459 fi
16460 echo " "
16461 case "$val3" in
16462 "$define") echo "You have POSIX termios.h... good!" >&4;;
16463 *) if ./Cppsym pyr; then
16464                 case "`/bin/universe`" in
16465                 ucb) if $test `./findhdr sgtty.h`; then
16466                                 val2="$define"
16467                                 echo "<sgtty.h> found." >&4
16468                         else
16469                                 echo "System is pyramid with BSD universe."
16470                                 echo "<sgtty.h> not found--you could have problems." >&4
16471                         fi;;
16472                 *) if $test `./findhdr termio.h`; then
16473                                 val="$define"
16474                                 echo "<termio.h> found." >&4
16475                         else
16476                                 echo "System is pyramid with USG universe."
16477                                 echo "<termio.h> not found--you could have problems." >&4
16478                         fi;;
16479                 esac
16480         elif ./usg; then
16481                 if $test `./findhdr termio.h`; then
16482                         echo "<termio.h> found." >&4
16483                         val="$define"
16484                 elif $test `./findhdr sgtty.h`; then
16485                         echo "<sgtty.h> found." >&4
16486                         val2="$define"
16487                 else
16488 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16489                 fi
16490         else
16491                 if $test `./findhdr sgtty.h`; then
16492                         echo "<sgtty.h> found." >&4
16493                         val2="$define"
16494                 elif $test `./findhdr termio.h`; then
16495                         echo "<termio.h> found." >&4
16496                         val="$define"
16497                 else
16498 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16499                 fi
16500         fi;;
16501 esac
16502 set i_termio; eval $setvar
16503 val=$val2; set i_sgtty; eval $setvar
16504 val=$val3; set i_termios; eval $setvar
16505
16506 : see if this is a shadow.h system
16507 set shadow.h i_shadow
16508 eval $inhdr
16509
16510 : see if stddef is available
16511 set stddef.h i_stddef
16512 eval $inhdr
16513
16514 : see if this is a sunmath.h system
16515 set sunmath.h i_sunmath
16516 eval $inhdr
16517
16518 : see if sys/access.h is available
16519 set sys/access.h i_sysaccess
16520 eval $inhdr
16521
16522 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16523 set sys/filio.h i_sysfilio
16524 eval $inhdr
16525 echo " "
16526 if $test `./findhdr sys/ioctl.h`; then
16527         val="$define"
16528         echo '<sys/ioctl.h> found.' >&4
16529 else
16530         val="$undef"
16531         if $test $i_sysfilio = "$define"; then
16532             echo '<sys/ioctl.h> NOT found.' >&4
16533         else
16534                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16535                 $test $i_termio = "$define" && xxx="termio.h"
16536                 $test $i_termios = "$define" && xxx="termios.h"
16537 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16538         fi
16539 fi
16540 set i_sysioctl
16541 eval $setvar
16542
16543 : see if socket ioctl defs are in sys/sockio.h
16544 echo " "
16545 xxx=`./findhdr sys/sockio.h`
16546 if $test "$xxx"; then
16547         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16548                 val="$define"
16549                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16550         else
16551                 val="$undef"
16552                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16553         fi
16554 else
16555         val="$undef"
16556         $cat <<EOM
16557 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16558 EOM
16559 fi
16560 set i_syssockio
16561 eval $setvar
16562
16563
16564 : see if this is a syslog.h system
16565 set syslog.h i_syslog
16566 eval $inhdr
16567
16568
16569 : see if this is a sys/mode.h system
16570 set sys/mode.h i_sysmode
16571 eval $inhdr
16572
16573 : see if sys/resource.h has to be included
16574 set sys/resource.h i_sysresrc
16575 eval $inhdr
16576
16577 : see if sys/security.h is available
16578 set sys/security.h i_syssecrt
16579 eval $inhdr
16580
16581 : see if this is a sys/statvfs.h system
16582 set sys/statvfs.h i_sysstatvfs
16583 eval $inhdr
16584
16585 : see if this is a sys/un.h system
16586 set sys/un.h i_sysun
16587 eval $inhdr
16588
16589
16590 : see if this is a sys/utsname.h system
16591 set sys/utsname.h i_sysutsname
16592 eval $inhdr
16593
16594 : see if this is a syswait system
16595 set sys/wait.h i_syswait
16596 eval $inhdr
16597
16598 : see if this is a ustat.h system
16599 set ustat.h i_ustat
16600 eval $inhdr
16601
16602 : see if this is an utime system
16603 set utime.h i_utime
16604 eval $inhdr
16605
16606 : see if this is a values.h system
16607 set values.h i_values
16608 eval $inhdr
16609
16610 : see if this is a vfork system
16611 case "$d_vfork" in
16612 "$define")
16613         set vfork.h i_vfork
16614         eval $inhdr
16615         ;;
16616 *)
16617         i_vfork="$undef"
16618         ;;
16619 esac
16620
16621 : see if gdbm.h is available
16622 set gdbm.h t_gdbm
16623 eval $inhdr
16624 case "$t_gdbm" in
16625 $define)
16626         : see if gdbm_open exists
16627         set gdbm_open d_gdbm_open
16628         eval $inlibc
16629         case "$d_gdbm_open" in
16630         $undef)
16631                 t_gdbm="$undef"
16632                 echo "We won't be including <gdbm.h>"
16633                 ;;
16634         esac
16635         ;;
16636 esac
16637 val="$t_gdbm"
16638 set i_gdbm
16639 eval $setvar
16640
16641 echo " "
16642 echo "Looking for extensions..." >&4
16643 : If we are using the old config.sh, known_extensions may contain
16644 : old or inaccurate or duplicate values.
16645 known_extensions=''
16646 nonxs_extensions=''
16647 : We do not use find because it might not be available.
16648 : We do not just use MANIFEST because the user may have dropped
16649 : some additional extensions into the source tree and expect them
16650 : to be built.
16651
16652 : Function to recursively find available extensions, ignoring DynaLoader
16653 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16654 find_extensions='
16655     for xxx in *; do
16656        case "$xxx" in
16657            DynaLoader|dynaload) ;;
16658            *)
16659            if $test -f $xxx/$xxx.xs; then
16660                known_extensions="$known_extensions $1$xxx";
16661            elif $test -f $xxx/Makefile.PL; then
16662                nonxs_extensions="$nonxs_extensions $1$xxx";
16663            else
16664                if $test -d $xxx -a $# -lt 10; then
16665                    set $1$xxx/ $*;
16666                    cd "$xxx";
16667                    eval $find_extensions;
16668                    cd ..;
16669                    shift;
16670                fi;
16671            fi
16672            ;;
16673        esac;
16674     done'
16675 tdir=`pwd`
16676 cd "$rsrc/ext"
16677 set X
16678 shift
16679 eval $find_extensions
16680 # Special case:  Add in threads/shared since it is not picked up by the
16681 # recursive find above (and adding in general recursive finding breaks
16682 # SDBM_File/sdbm).  A.D.  10/25/2001.
16683 known_extensions="$known_extensions threads/shared"
16684 set X $nonxs_extensions
16685 shift
16686 nonxs_extensions="$*"
16687 set X $known_extensions
16688 shift
16689 known_extensions="$*"
16690 cd "$tdir"
16691
16692 : Now see which are supported on this system.
16693 avail_ext=''
16694 for xxx in $known_extensions ; do
16695         case "$xxx" in
16696         DB_File|db_file)
16697                 case "$i_db" in
16698                 $define) avail_ext="$avail_ext $xxx" ;;
16699                 esac
16700                 ;;
16701         GDBM_File|gdbm_fil)
16702                 case "$i_gdbm" in 
16703                 $define) avail_ext="$avail_ext $xxx" ;;
16704                 esac
16705                 ;;
16706         I18N/Langinfo|i18n_lan)
16707                 case "$i_langinfo$d_nl_langinfo" in 
16708                 $define$define) avail_ext="$avail_ext $xxx" ;;
16709                 esac
16710                 ;;
16711         NDBM_File|ndbm_fil)
16712                 case "$i_ndbm" in
16713                 $define)
16714                     case "$osname-$use64bitint" in
16715                     cygwin-*|hpux-define)
16716                         case "$libs" in
16717                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16718                         esac
16719                         ;;
16720                     *) avail_ext="$avail_ext $xxx" ;;
16721                     esac
16722                     ;;
16723                 esac
16724                 ;;
16725         ODBM_File|odbm_fil) 
16726                 case "${i_dbm}${i_rpcsvcdbm}" in
16727                 *"${define}"*)
16728                     case "$osname-$use64bitint" in
16729                     cygwin-*|hpux-define)
16730                         case "$libs" in
16731                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16732                         esac
16733                         ;;
16734                     *) avail_ext="$avail_ext $xxx" ;;
16735                     esac
16736                     ;;
16737                 esac
16738                 ;;
16739         POSIX|posix)
16740                 case "$useposix" in
16741                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16742                 esac
16743                 ;;
16744         Opcode|opcode)
16745                 case "$useopcode" in
16746                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16747                 esac
16748                 ;;
16749         Socket|socket)
16750                 case "$d_socket" in 
16751                 true|$define|y)
16752                     case "$osname" in
16753                     beos) ;; # not unless BONE
16754                     *) avail_ext="$avail_ext $xxx" ;;
16755                     esac
16756                     ;;
16757                 esac
16758                 ;;
16759         Sys/Syslog|sys/syslog)
16760                 : XXX syslog requires socket
16761                 case "$d_socket" in 
16762                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16763                 esac
16764                 ;;
16765         Thread|thread)
16766                 case "$usethreads" in
16767                 true|$define|y)
16768                         case "$useithreads" in
16769                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16770                         esac
16771                 esac
16772                 ;;
16773         threads|threads/shared)
16774                 case "$usethreads" in
16775                 true|$define|y)
16776                         case "$useithreads" in
16777                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16778                         esac
16779                 esac
16780                 ;;
16781         IPC/SysV|ipc/sysv)
16782                 : XXX Do we need a useipcsysv variable here
16783                 case "${d_msg}${d_sem}${d_shm}" in 
16784                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16785                 esac
16786                 ;;
16787         *)      avail_ext="$avail_ext $xxx"
16788                 ;;
16789         esac
16790 done
16791
16792 set X $avail_ext
16793 shift
16794 avail_ext="$*"
16795
16796 : Now see which nonxs extensions are supported on this system.
16797 : For now assume all are.
16798 nonxs_ext=''
16799 for xxx in $nonxs_extensions ; do
16800         case "$xxx" in
16801         *)      nonxs_ext="$nonxs_ext $xxx"
16802                 ;;
16803         esac
16804 done
16805
16806 set X $nonxs_ext
16807 shift
16808 nonxs_ext="$*"
16809
16810 case $usedl in
16811 $define)
16812         $cat <<EOM
16813 A number of extensions are supplied with $package.  You may choose to
16814 compile these extensions for dynamic loading (the default), compile
16815 them into the $package executable (static loading), or not include
16816 them at all.  Answer "none" to include no extensions.
16817 Note that DynaLoader is always built and need not be mentioned here.
16818
16819 EOM
16820         case "$dynamic_ext" in
16821         '') dflt="$avail_ext" ;;
16822         *)      dflt="$dynamic_ext"
16823                 # Perhaps we are reusing an old out-of-date config.sh.
16824                 case "$hint" in
16825                 previous)
16826                         if test X"$dynamic_ext" != X"$avail_ext"; then
16827                                 $cat <<EOM
16828 NOTICE:  Your previous config.sh list may be incorrect. 
16829 The extensions now available to you are 
16830         ${avail_ext}
16831 but the default list from your previous config.sh is
16832         ${dynamic_ext} 
16833
16834 EOM
16835                         fi
16836                         ;;
16837                 esac
16838                 ;;
16839         esac
16840         case "$dflt" in
16841         '')     dflt=none;;
16842         esac
16843         rp="What extensions do you wish to load dynamically?"
16844         . ./myread
16845         case "$ans" in
16846         none) dynamic_ext=' ' ;;
16847         *) dynamic_ext="$ans" ;;
16848         esac
16849
16850         case "$static_ext" in
16851         '')
16852                 : Exclude those already listed in dynamic linking
16853                 dflt=''
16854                 for xxx in $avail_ext; do
16855                         case " $dynamic_ext " in
16856                         *" $xxx "*) ;;
16857                         *) dflt="$dflt $xxx" ;;
16858                         esac
16859                 done
16860                 set X $dflt
16861                 shift
16862                 dflt="$*"
16863                 ;;
16864         *)  dflt="$static_ext" 
16865                 ;;
16866         esac
16867
16868         case "$dflt" in
16869         '')     dflt=none;;
16870         esac
16871         rp="What extensions do you wish to load statically?"
16872         . ./myread
16873         case "$ans" in
16874         none) static_ext=' ' ;;
16875         *) static_ext="$ans" ;;
16876         esac
16877         ;;
16878 *)
16879         $cat <<EOM
16880 A number of extensions are supplied with $package.  Answer "none" 
16881 to include no extensions. 
16882 Note that DynaLoader is always built and need not be mentioned here.
16883
16884 EOM
16885         case "$static_ext" in
16886         '') dflt="$avail_ext" ;;
16887         *)      dflt="$static_ext"
16888                 # Perhaps we are reusing an old out-of-date config.sh.
16889                 case "$hint" in
16890                 previous)
16891                         if test X"$static_ext" != X"$avail_ext"; then
16892                                 $cat <<EOM
16893 NOTICE:  Your previous config.sh list may be incorrect. 
16894 The extensions now available to you are 
16895         ${avail_ext}
16896 but the default list from your previous config.sh is
16897         ${static_ext} 
16898
16899 EOM
16900                         fi
16901                         ;;
16902                 esac
16903                 ;;
16904         esac
16905         : Exclude those that are not xs extensions
16906         case "$dflt" in
16907         '')     dflt=none;;
16908         esac
16909         rp="What extensions do you wish to include?"
16910         . ./myread
16911         case "$ans" in
16912         none) static_ext=' ' ;;
16913         *) static_ext="$ans" ;;
16914         esac
16915         ;;
16916 esac
16917
16918 set X $dynamic_ext $static_ext $nonxs_ext
16919 shift
16920 extensions="$*"
16921
16922 : Remove libraries needed only for extensions
16923 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16924 : The exception is SunOS 4.x, which needs them.
16925 case "${osname}X${osvers}" in
16926 sunos*X4*)
16927     perllibs="$libs"
16928     ;;
16929 *) case "$usedl" in
16930     $define|true|[yY]*)
16931             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16932             shift
16933             perllibs="$*"
16934             ;;
16935     *)  perllibs="$libs"
16936             ;;
16937     esac
16938     ;;
16939 esac
16940
16941 : Remove build directory name from cppstdin so it can be used from
16942 : either the present location or the final installed location.
16943 echo " "
16944 : Get out of the UU directory to get correct path name.
16945 cd ..
16946 case "$cppstdin" in
16947 `pwd`/cppstdin)
16948         echo "Stripping down cppstdin path name"
16949         cppstdin=cppstdin
16950         ;;
16951 esac
16952 cd UU
16953
16954 : end of configuration questions
16955 echo " "
16956 echo "End of configuration questions."
16957 echo " "
16958
16959 : back to where it started
16960 if test -d ../UU; then
16961         cd ..
16962 fi
16963
16964 : configuration may be patched via a 'config.arch' file
16965 if $test -f config.arch; then
16966         echo "I see a config.arch file, loading it."
16967         . ./config.arch
16968 fi
16969
16970 : configuration may be patched via a 'config.over' file
16971 if $test -f config.over; then
16972         echo " "
16973         dflt=y
16974         rp='I see a config.over file.  Do you wish to load it?'
16975         . UU/myread
16976         case "$ans" in
16977         n*) echo "OK, I'll ignore it.";;
16978         *)      . ./config.over
16979                 echo "Configuration override changes have been loaded."
16980                 ;;
16981         esac
16982 fi
16983
16984 : in case they want portability, strip down executable paths
16985 case "$d_portable" in
16986 "$define")
16987         echo " "
16988         echo "Stripping down executable paths..." >&4
16989         for file in $loclist $trylist; do
16990                 eval temp=\$$file
16991                 eval $file=`basename $temp`
16992         done
16993         ;;
16994 esac
16995
16996 : create config.sh file
16997 echo " "
16998 echo "Creating config.sh..." >&4
16999 $spitshell <<EOT >config.sh
17000 $startsh
17001 #
17002 # This file was produced by running the Configure script. It holds all the
17003 # definitions figured out by Configure. Should you modify one of these values,
17004 # do not forget to propagate your changes by running "Configure -der". You may
17005 # instead choose to run each of the .SH files by yourself, or "Configure -S".
17006 #
17007
17008 # Package name      : $package
17009 # Source directory  : $src
17010 # Configuration time: $cf_time
17011 # Configured by     : $cf_by
17012 # Target system     : $myuname
17013
17014 Author='$Author'
17015 Date='$Date'
17016 Header='$Header'
17017 Id='$Id'
17018 Locker='$Locker'
17019 Log='$Log'
17020 Mcc='$Mcc'
17021 RCSfile='$RCSfile'
17022 Revision='$Revision'
17023 Source='$Source'
17024 State='$State'
17025 _a='$_a'
17026 _exe='$_exe'
17027 _o='$_o'
17028 afs='$afs'
17029 afsroot='$afsroot'
17030 alignbytes='$alignbytes'
17031 ansi2knr='$ansi2knr'
17032 aphostname='$aphostname'
17033 api_revision='$api_revision'
17034 api_subversion='$api_subversion'
17035 api_version='$api_version'
17036 api_versionstring='$api_versionstring'
17037 ar='$ar'
17038 archlib='$archlib'
17039 archlibexp='$archlibexp'
17040 archname64='$archname64'
17041 archname='$archname'
17042 archobjs='$archobjs'
17043 awk='$awk'
17044 baserev='$baserev'
17045 bash='$bash'
17046 bin='$bin'
17047 bincompat5005='$bincompat5005'
17048 binexp='$binexp'
17049 bison='$bison'
17050 byacc='$byacc'
17051 byteorder='$byteorder'
17052 c='$c'
17053 castflags='$castflags'
17054 cat='$cat'
17055 cc='$cc'
17056 cccdlflags='$cccdlflags'
17057 ccdlflags='$ccdlflags'
17058 ccflags='$ccflags'
17059 ccflags_uselargefiles='$ccflags_uselargefiles'
17060 ccname='$ccname'
17061 ccsymbols='$ccsymbols'
17062 ccversion='$ccversion'
17063 cf_by='$cf_by'
17064 cf_email='$cf_email'
17065 cf_time='$cf_time'
17066 charsize='$charsize'
17067 chgrp='$chgrp'
17068 chmod='$chmod'
17069 chown='$chown'
17070 clocktype='$clocktype'
17071 comm='$comm'
17072 compress='$compress'
17073 contains='$contains'
17074 cp='$cp'
17075 cpio='$cpio'
17076 cpp='$cpp'
17077 cpp_stuff='$cpp_stuff'
17078 cppccsymbols='$cppccsymbols'
17079 cppflags='$cppflags'
17080 cpplast='$cpplast'
17081 cppminus='$cppminus'
17082 cpprun='$cpprun'
17083 cppstdin='$cppstdin'
17084 cppsymbols='$cppsymbols'
17085 cryptlib='$cryptlib'
17086 csh='$csh'
17087 d_Gconvert='$d_Gconvert'
17088 d_PRIEUldbl='$d_PRIEUldbl'
17089 d_PRIFUldbl='$d_PRIFUldbl'
17090 d_PRIGUldbl='$d_PRIGUldbl'
17091 d_PRIXU64='$d_PRIXU64'
17092 d_PRId64='$d_PRId64'
17093 d_PRIeldbl='$d_PRIeldbl'
17094 d_PRIfldbl='$d_PRIfldbl'
17095 d_PRIgldbl='$d_PRIgldbl'
17096 d_PRIi64='$d_PRIi64'
17097 d_PRIo64='$d_PRIo64'
17098 d_PRIu64='$d_PRIu64'
17099 d_PRIx64='$d_PRIx64'
17100 d_SCNfldbl='$d_SCNfldbl'
17101 d__fwalk='$d__fwalk'
17102 d_access='$d_access'
17103 d_accessx='$d_accessx'
17104 d_alarm='$d_alarm'
17105 d_archlib='$d_archlib'
17106 d_atolf='$d_atolf'
17107 d_atoll='$d_atoll'
17108 d_attribut='$d_attribut'
17109 d_bcmp='$d_bcmp'
17110 d_bcopy='$d_bcopy'
17111 d_bincompat5005='$d_bincompat5005'
17112 d_bsd='$d_bsd'
17113 d_bsdgetpgrp='$d_bsdgetpgrp'
17114 d_bsdsetpgrp='$d_bsdsetpgrp'
17115 d_bzero='$d_bzero'
17116 d_casti32='$d_casti32'
17117 d_castneg='$d_castneg'
17118 d_charvspr='$d_charvspr'
17119 d_chown='$d_chown'
17120 d_chroot='$d_chroot'
17121 d_chsize='$d_chsize'
17122 d_class='$d_class'
17123 d_closedir='$d_closedir'
17124 d_cmsghdr_s='$d_cmsghdr_s'
17125 d_const='$d_const'
17126 d_crypt='$d_crypt'
17127 d_csh='$d_csh'
17128 d_cuserid='$d_cuserid'
17129 d_dbl_dig='$d_dbl_dig'
17130 d_dbminitproto='$d_dbminitproto'
17131 d_difftime='$d_difftime'
17132 d_dirfd='$d_dirfd'
17133 d_dirnamlen='$d_dirnamlen'
17134 d_dlerror='$d_dlerror'
17135 d_dlopen='$d_dlopen'
17136 d_dlsymun='$d_dlsymun'
17137 d_dosuid='$d_dosuid'
17138 d_drand48proto='$d_drand48proto'
17139 d_dup2='$d_dup2'
17140 d_eaccess='$d_eaccess'
17141 d_endgrent='$d_endgrent'
17142 d_endhent='$d_endhent'
17143 d_endnent='$d_endnent'
17144 d_endpent='$d_endpent'
17145 d_endpwent='$d_endpwent'
17146 d_endsent='$d_endsent'
17147 d_eofnblk='$d_eofnblk'
17148 d_eunice='$d_eunice'
17149 d_fchdir='$d_fchdir'
17150 d_fchmod='$d_fchmod'
17151 d_fchown='$d_fchown'
17152 d_fcntl='$d_fcntl'
17153 d_fcntl_can_lock='$d_fcntl_can_lock'
17154 d_fd_macros='$d_fd_macros'
17155 d_fd_set='$d_fd_set'
17156 d_fds_bits='$d_fds_bits'
17157 d_fgetpos='$d_fgetpos'
17158 d_finite='$d_finite'
17159 d_finitel='$d_finitel'
17160 d_flexfnam='$d_flexfnam'
17161 d_flock='$d_flock'
17162 d_flockproto='$d_flockproto'
17163 d_fork='$d_fork'
17164 d_fp_class='$d_fp_class'
17165 d_fpathconf='$d_fpathconf'
17166 d_fpclass='$d_fpclass'
17167 d_fpclassify='$d_fpclassify'
17168 d_fpclassl='$d_fpclassl'
17169 d_fpos64_t='$d_fpos64_t'
17170 d_frexpl='$d_frexpl'
17171 d_fs_data_s='$d_fs_data_s'
17172 d_fseeko='$d_fseeko'
17173 d_fsetpos='$d_fsetpos'
17174 d_fstatfs='$d_fstatfs'
17175 d_fstatvfs='$d_fstatvfs'
17176 d_fsync='$d_fsync'
17177 d_ftello='$d_ftello'
17178 d_ftime='$d_ftime'
17179 d_getcwd='$d_getcwd'
17180 d_getespwnam='$d_getespwnam'
17181 d_getfsstat='$d_getfsstat'
17182 d_getgrent='$d_getgrent'
17183 d_getgrps='$d_getgrps'
17184 d_gethbyaddr='$d_gethbyaddr'
17185 d_gethbyname='$d_gethbyname'
17186 d_gethent='$d_gethent'
17187 d_gethname='$d_gethname'
17188 d_gethostprotos='$d_gethostprotos'
17189 d_getitimer='$d_getitimer'
17190 d_getlogin='$d_getlogin'
17191 d_getmnt='$d_getmnt'
17192 d_getmntent='$d_getmntent'
17193 d_getnbyaddr='$d_getnbyaddr'
17194 d_getnbyname='$d_getnbyname'
17195 d_getnent='$d_getnent'
17196 d_getnetprotos='$d_getnetprotos'
17197 d_getpagsz='$d_getpagsz'
17198 d_getpbyname='$d_getpbyname'
17199 d_getpbynumber='$d_getpbynumber'
17200 d_getpent='$d_getpent'
17201 d_getpgid='$d_getpgid'
17202 d_getpgrp2='$d_getpgrp2'
17203 d_getpgrp='$d_getpgrp'
17204 d_getppid='$d_getppid'
17205 d_getprior='$d_getprior'
17206 d_getprotoprotos='$d_getprotoprotos'
17207 d_getprpwnam='$d_getprpwnam'
17208 d_getpwent='$d_getpwent'
17209 d_getsbyname='$d_getsbyname'
17210 d_getsbyport='$d_getsbyport'
17211 d_getsent='$d_getsent'
17212 d_getservprotos='$d_getservprotos'
17213 d_getspnam='$d_getspnam'
17214 d_gettimeod='$d_gettimeod'
17215 d_gnulibc='$d_gnulibc'
17216 d_grpasswd='$d_grpasswd'
17217 d_hasmntopt='$d_hasmntopt'
17218 d_htonl='$d_htonl'
17219 d_index='$d_index'
17220 d_inetaton='$d_inetaton'
17221 d_int64_t='$d_int64_t'
17222 d_isascii='$d_isascii'
17223 d_isfinite='$d_isfinite'
17224 d_isinf='$d_isinf'
17225 d_isnan='$d_isnan'
17226 d_isnanl='$d_isnanl'
17227 d_killpg='$d_killpg'
17228 d_lchown='$d_lchown'
17229 d_ldbl_dig='$d_ldbl_dig'
17230 d_link='$d_link'
17231 d_locconv='$d_locconv'
17232 d_lockf='$d_lockf'
17233 d_longdbl='$d_longdbl'
17234 d_longlong='$d_longlong'
17235 d_lseekproto='$d_lseekproto'
17236 d_lstat='$d_lstat'
17237 d_madvise='$d_madvise'
17238 d_mblen='$d_mblen'
17239 d_mbstowcs='$d_mbstowcs'
17240 d_mbtowc='$d_mbtowc'
17241 d_memchr='$d_memchr'
17242 d_memcmp='$d_memcmp'
17243 d_memcpy='$d_memcpy'
17244 d_memmove='$d_memmove'
17245 d_memset='$d_memset'
17246 d_mkdir='$d_mkdir'
17247 d_mkdtemp='$d_mkdtemp'
17248 d_mkfifo='$d_mkfifo'
17249 d_mkstemp='$d_mkstemp'
17250 d_mkstemps='$d_mkstemps'
17251 d_mktime='$d_mktime'
17252 d_mmap='$d_mmap'
17253 d_modfl='$d_modfl'
17254 d_modfl_pow32_bug='$d_modfl_pow32_bug'
17255 d_mprotect='$d_mprotect'
17256 d_msg='$d_msg'
17257 d_msg_ctrunc='$d_msg_ctrunc'
17258 d_msg_dontroute='$d_msg_dontroute'
17259 d_msg_oob='$d_msg_oob'
17260 d_msg_peek='$d_msg_peek'
17261 d_msg_proxy='$d_msg_proxy'
17262 d_msgctl='$d_msgctl'
17263 d_msgget='$d_msgget'
17264 d_msghdr_s='$d_msghdr_s'
17265 d_msgrcv='$d_msgrcv'
17266 d_msgsnd='$d_msgsnd'
17267 d_msync='$d_msync'
17268 d_munmap='$d_munmap'
17269 d_mymalloc='$d_mymalloc'
17270 d_nice='$d_nice'
17271 d_nl_langinfo='$d_nl_langinfo'
17272 d_nv_preserves_uv='$d_nv_preserves_uv'
17273 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
17274 d_off64_t='$d_off64_t'
17275 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
17276 d_oldpthreads='$d_oldpthreads'
17277 d_oldsock='$d_oldsock'
17278 d_open3='$d_open3'
17279 d_pathconf='$d_pathconf'
17280 d_pause='$d_pause'
17281 d_perl_otherlibdirs='$d_perl_otherlibdirs'
17282 d_phostname='$d_phostname'
17283 d_pipe='$d_pipe'
17284 d_poll='$d_poll'
17285 d_portable='$d_portable'
17286 d_procselfexe='$d_procselfexe'
17287 d_pthread_atfork='$d_pthread_atfork'
17288 d_pthread_yield='$d_pthread_yield'
17289 d_pwage='$d_pwage'
17290 d_pwchange='$d_pwchange'
17291 d_pwclass='$d_pwclass'
17292 d_pwcomment='$d_pwcomment'
17293 d_pwexpire='$d_pwexpire'
17294 d_pwgecos='$d_pwgecos'
17295 d_pwpasswd='$d_pwpasswd'
17296 d_pwquota='$d_pwquota'
17297 d_qgcvt='$d_qgcvt'
17298 d_quad='$d_quad'
17299 d_readdir='$d_readdir'
17300 d_readlink='$d_readlink'
17301 d_readv='$d_readv'
17302 d_recvmsg='$d_recvmsg'
17303 d_rename='$d_rename'
17304 d_rewinddir='$d_rewinddir'
17305 d_rmdir='$d_rmdir'
17306 d_safebcpy='$d_safebcpy'
17307 d_safemcpy='$d_safemcpy'
17308 d_sanemcmp='$d_sanemcmp'
17309 d_sbrkproto='$d_sbrkproto'
17310 d_sched_yield='$d_sched_yield'
17311 d_scm_rights='$d_scm_rights'
17312 d_seekdir='$d_seekdir'
17313 d_select='$d_select'
17314 d_sem='$d_sem'
17315 d_semctl='$d_semctl'
17316 d_semctl_semid_ds='$d_semctl_semid_ds'
17317 d_semctl_semun='$d_semctl_semun'
17318 d_semget='$d_semget'
17319 d_semop='$d_semop'
17320 d_sendmsg='$d_sendmsg'
17321 d_setegid='$d_setegid'
17322 d_seteuid='$d_seteuid'
17323 d_setgrent='$d_setgrent'
17324 d_setgrps='$d_setgrps'
17325 d_sethent='$d_sethent'
17326 d_setitimer='$d_setitimer'
17327 d_setlinebuf='$d_setlinebuf'
17328 d_setlocale='$d_setlocale'
17329 d_setnent='$d_setnent'
17330 d_setpent='$d_setpent'
17331 d_setpgid='$d_setpgid'
17332 d_setpgrp2='$d_setpgrp2'
17333 d_setpgrp='$d_setpgrp'
17334 d_setprior='$d_setprior'
17335 d_setproctitle='$d_setproctitle'
17336 d_setpwent='$d_setpwent'
17337 d_setregid='$d_setregid'
17338 d_setresgid='$d_setresgid'
17339 d_setresuid='$d_setresuid'
17340 d_setreuid='$d_setreuid'
17341 d_setrgid='$d_setrgid'
17342 d_setruid='$d_setruid'
17343 d_setsent='$d_setsent'
17344 d_setsid='$d_setsid'
17345 d_setvbuf='$d_setvbuf'
17346 d_sfio='$d_sfio'
17347 d_shm='$d_shm'
17348 d_shmat='$d_shmat'
17349 d_shmatprototype='$d_shmatprototype'
17350 d_shmctl='$d_shmctl'
17351 d_shmdt='$d_shmdt'
17352 d_shmget='$d_shmget'
17353 d_sigaction='$d_sigaction'
17354 d_sigprocmask='$d_sigprocmask'
17355 d_sigsetjmp='$d_sigsetjmp'
17356 d_sockatmark='$d_sockatmark'
17357 d_sockatmarkproto='$d_sockatmarkproto'
17358 d_socket='$d_socket'
17359 d_socklen_t='$d_socklen_t'
17360 d_sockpair='$d_sockpair'
17361 d_socks5_init='$d_socks5_init'
17362 d_sqrtl='$d_sqrtl'
17363 d_sresgproto='$d_sresgproto'
17364 d_sresuproto='$d_sresuproto'
17365 d_statblks='$d_statblks'
17366 d_statfs_f_flags='$d_statfs_f_flags'
17367 d_statfs_s='$d_statfs_s'
17368 d_statvfs='$d_statvfs'
17369 d_stdio_cnt_lval='$d_stdio_cnt_lval'
17370 d_stdio_ptr_lval='$d_stdio_ptr_lval'
17371 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17372 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
17373 d_stdio_stream_array='$d_stdio_stream_array'
17374 d_stdiobase='$d_stdiobase'
17375 d_stdstdio='$d_stdstdio'
17376 d_strchr='$d_strchr'
17377 d_strcoll='$d_strcoll'
17378 d_strctcpy='$d_strctcpy'
17379 d_strerrm='$d_strerrm'
17380 d_strerror='$d_strerror'
17381 d_strftime='$d_strftime'
17382 d_strtod='$d_strtod'
17383 d_strtol='$d_strtol'
17384 d_strtold='$d_strtold'
17385 d_strtoll='$d_strtoll'
17386 d_strtoq='$d_strtoq'
17387 d_strtoul='$d_strtoul'
17388 d_strtoull='$d_strtoull'
17389 d_strtouq='$d_strtouq'
17390 d_strxfrm='$d_strxfrm'
17391 d_suidsafe='$d_suidsafe'
17392 d_symlink='$d_symlink'
17393 d_syscall='$d_syscall'
17394 d_syscallproto='$d_syscallproto'
17395 d_sysconf='$d_sysconf'
17396 d_sysernlst='$d_sysernlst'
17397 d_syserrlst='$d_syserrlst'
17398 d_system='$d_system'
17399 d_tcgetpgrp='$d_tcgetpgrp'
17400 d_tcsetpgrp='$d_tcsetpgrp'
17401 d_telldir='$d_telldir'
17402 d_telldirproto='$d_telldirproto'
17403 d_time='$d_time'
17404 d_times='$d_times'
17405 d_truncate='$d_truncate'
17406 d_tzname='$d_tzname'
17407 d_u32align='$d_u32align'
17408 d_ualarm='$d_ualarm'
17409 d_umask='$d_umask'
17410 d_uname='$d_uname'
17411 d_union_semun='$d_union_semun'
17412 d_unordered='$d_unordered'
17413 d_usleep='$d_usleep'
17414 d_usleepproto='$d_usleepproto'
17415 d_ustat='$d_ustat'
17416 d_vendorarch='$d_vendorarch'
17417 d_vendorbin='$d_vendorbin'
17418 d_vendorlib='$d_vendorlib'
17419 d_vfork='$d_vfork'
17420 d_void_closedir='$d_void_closedir'
17421 d_voidsig='$d_voidsig'
17422 d_voidtty='$d_voidtty'
17423 d_volatile='$d_volatile'
17424 d_vprintf='$d_vprintf'
17425 d_wait4='$d_wait4'
17426 d_waitpid='$d_waitpid'
17427 d_wcstombs='$d_wcstombs'
17428 d_wctomb='$d_wctomb'
17429 d_writev='$d_writev'
17430 d_xenix='$d_xenix'
17431 date='$date'
17432 db_hashtype='$db_hashtype'
17433 db_prefixtype='$db_prefixtype'
17434 db_version_major='$db_version_major'
17435 db_version_minor='$db_version_minor'
17436 db_version_patch='$db_version_patch'
17437 defvoidused='$defvoidused'
17438 direntrytype='$direntrytype'
17439 dlext='$dlext'
17440 dlsrc='$dlsrc'
17441 doublesize='$doublesize'
17442 drand01='$drand01'
17443 dynamic_ext='$dynamic_ext'
17444 eagain='$eagain'
17445 ebcdic='$ebcdic'
17446 echo='$echo'
17447 egrep='$egrep'
17448 emacs='$emacs'
17449 eunicefix='$eunicefix'
17450 exe_ext='$exe_ext'
17451 expr='$expr'
17452 extensions='$extensions'
17453 extras='$extras'
17454 fflushNULL='$fflushNULL'
17455 fflushall='$fflushall'
17456 find='$find'
17457 firstmakefile='$firstmakefile'
17458 flex='$flex'
17459 fpossize='$fpossize'
17460 fpostype='$fpostype'
17461 freetype='$freetype'
17462 from='$from'
17463 full_ar='$full_ar'
17464 full_csh='$full_csh'
17465 full_sed='$full_sed'
17466 gccosandvers='$gccosandvers'
17467 gccversion='$gccversion'
17468 gidformat='$gidformat'
17469 gidsign='$gidsign'
17470 gidsize='$gidsize'
17471 gidtype='$gidtype'
17472 glibpth='$glibpth'
17473 gmake='$gmake'
17474 grep='$grep'
17475 groupcat='$groupcat'
17476 groupstype='$groupstype'
17477 gzip='$gzip'
17478 h_fcntl='$h_fcntl'
17479 h_sysfile='$h_sysfile'
17480 hint='$hint'
17481 hostcat='$hostcat'
17482 i16size='$i16size'
17483 i16type='$i16type'
17484 i32size='$i32size'
17485 i32type='$i32type'
17486 i64size='$i64size'
17487 i64type='$i64type'
17488 i8size='$i8size'
17489 i8type='$i8type'
17490 i_arpainet='$i_arpainet'
17491 i_bsdioctl='$i_bsdioctl'
17492 i_db='$i_db'
17493 i_dbm='$i_dbm'
17494 i_dirent='$i_dirent'
17495 i_dld='$i_dld'
17496 i_dlfcn='$i_dlfcn'
17497 i_fcntl='$i_fcntl'
17498 i_float='$i_float'
17499 i_fp='$i_fp'
17500 i_fp_class='$i_fp_class'
17501 i_gdbm='$i_gdbm'
17502 i_grp='$i_grp'
17503 i_ieeefp='$i_ieeefp'
17504 i_inttypes='$i_inttypes'
17505 i_langinfo='$i_langinfo'
17506 i_libutil='$i_libutil'
17507 i_limits='$i_limits'
17508 i_locale='$i_locale'
17509 i_machcthr='$i_machcthr'
17510 i_malloc='$i_malloc'
17511 i_math='$i_math'
17512 i_memory='$i_memory'
17513 i_mntent='$i_mntent'
17514 i_ndbm='$i_ndbm'
17515 i_netdb='$i_netdb'
17516 i_neterrno='$i_neterrno'
17517 i_netinettcp='$i_netinettcp'
17518 i_niin='$i_niin'
17519 i_poll='$i_poll'
17520 i_prot='$i_prot'
17521 i_pthread='$i_pthread'
17522 i_pwd='$i_pwd'
17523 i_rpcsvcdbm='$i_rpcsvcdbm'
17524 i_sfio='$i_sfio'
17525 i_sgtty='$i_sgtty'
17526 i_shadow='$i_shadow'
17527 i_socks='$i_socks'
17528 i_stdarg='$i_stdarg'
17529 i_stddef='$i_stddef'
17530 i_stdlib='$i_stdlib'
17531 i_string='$i_string'
17532 i_sunmath='$i_sunmath'
17533 i_sysaccess='$i_sysaccess'
17534 i_sysdir='$i_sysdir'
17535 i_sysfile='$i_sysfile'
17536 i_sysfilio='$i_sysfilio'
17537 i_sysin='$i_sysin'
17538 i_sysioctl='$i_sysioctl'
17539 i_syslog='$i_syslog'
17540 i_sysmman='$i_sysmman'
17541 i_sysmode='$i_sysmode'
17542 i_sysmount='$i_sysmount'
17543 i_sysndir='$i_sysndir'
17544 i_sysparam='$i_sysparam'
17545 i_sysresrc='$i_sysresrc'
17546 i_syssecrt='$i_syssecrt'
17547 i_sysselct='$i_sysselct'
17548 i_syssockio='$i_syssockio'
17549 i_sysstat='$i_sysstat'
17550 i_sysstatfs='$i_sysstatfs'
17551 i_sysstatvfs='$i_sysstatvfs'
17552 i_systime='$i_systime'
17553 i_systimek='$i_systimek'
17554 i_systimes='$i_systimes'
17555 i_systypes='$i_systypes'
17556 i_sysuio='$i_sysuio'
17557 i_sysun='$i_sysun'
17558 i_sysutsname='$i_sysutsname'
17559 i_sysvfs='$i_sysvfs'
17560 i_syswait='$i_syswait'
17561 i_termio='$i_termio'
17562 i_termios='$i_termios'
17563 i_time='$i_time'
17564 i_unistd='$i_unistd'
17565 i_ustat='$i_ustat'
17566 i_utime='$i_utime'
17567 i_values='$i_values'
17568 i_varargs='$i_varargs'
17569 i_varhdr='$i_varhdr'
17570 i_vfork='$i_vfork'
17571 ignore_versioned_solibs='$ignore_versioned_solibs'
17572 inc_version_list='$inc_version_list'
17573 inc_version_list_init='$inc_version_list_init'
17574 incpath='$incpath'
17575 inews='$inews'
17576 installarchlib='$installarchlib'
17577 installbin='$installbin'
17578 installman1dir='$installman1dir'
17579 installman3dir='$installman3dir'
17580 installprefix='$installprefix'
17581 installprefixexp='$installprefixexp'
17582 installprivlib='$installprivlib'
17583 installscript='$installscript'
17584 installsitearch='$installsitearch'
17585 installsitebin='$installsitebin'
17586 installsitelib='$installsitelib'
17587 installstyle='$installstyle'
17588 installusrbinperl='$installusrbinperl'
17589 installvendorarch='$installvendorarch'
17590 installvendorbin='$installvendorbin'
17591 installvendorlib='$installvendorlib'
17592 intsize='$intsize'
17593 issymlink='$issymlink'
17594 ivdformat='$ivdformat'
17595 ivsize='$ivsize'
17596 ivtype='$ivtype'
17597 known_extensions='$known_extensions'
17598 ksh='$ksh'
17599 ld='$ld'
17600 lddlflags='$lddlflags'
17601 ldflags='$ldflags'
17602 ldflags_uselargefiles='$ldflags_uselargefiles'
17603 ldlibpthname='$ldlibpthname'
17604 less='$less'
17605 lib_ext='$lib_ext'
17606 libc='$libc'
17607 libperl='$libperl'
17608 libpth='$libpth'
17609 libs='$libs'
17610 libsdirs='$libsdirs'
17611 libsfiles='$libsfiles'
17612 libsfound='$libsfound'
17613 libspath='$libspath'
17614 libswanted='$libswanted'
17615 libswanted_uselargefiles='$libswanted_uselargefiles'
17616 line='$line'
17617 lint='$lint'
17618 lkflags='$lkflags'
17619 ln='$ln'
17620 lns='$lns'
17621 locincpth='$locincpth'
17622 loclibpth='$loclibpth'
17623 longdblsize='$longdblsize'
17624 longlongsize='$longlongsize'
17625 longsize='$longsize'
17626 lp='$lp'
17627 lpr='$lpr'
17628 ls='$ls'
17629 lseeksize='$lseeksize'
17630 lseektype='$lseektype'
17631 mail='$mail'
17632 mailx='$mailx'
17633 make='$make'
17634 make_set_make='$make_set_make'
17635 mallocobj='$mallocobj'
17636 mallocsrc='$mallocsrc'
17637 malloctype='$malloctype'
17638 man1dir='$man1dir'
17639 man1direxp='$man1direxp'
17640 man1ext='$man1ext'
17641 man3dir='$man3dir'
17642 man3direxp='$man3direxp'
17643 man3ext='$man3ext'
17644 mips_type='$mips_type'
17645 mkdir='$mkdir'
17646 mmaptype='$mmaptype'
17647 modetype='$modetype'
17648 more='$more'
17649 multiarch='$multiarch'
17650 mv='$mv'
17651 myarchname='$myarchname'
17652 mydomain='$mydomain'
17653 myhostname='$myhostname'
17654 myuname='$myuname'
17655 n='$n'
17656 need_va_copy='$need_va_copy'
17657 netdb_hlen_type='$netdb_hlen_type'
17658 netdb_host_type='$netdb_host_type'
17659 netdb_name_type='$netdb_name_type'
17660 netdb_net_type='$netdb_net_type'
17661 nm='$nm'
17662 nm_opt='$nm_opt'
17663 nm_so_opt='$nm_so_opt'
17664 nonxs_ext='$nonxs_ext'
17665 nroff='$nroff'
17666 nvEUformat='$nvEUformat'
17667 nvFUformat='$nvFUformat'
17668 nvGUformat='$nvGUformat'
17669 nveformat='$nveformat'
17670 nvfformat='$nvfformat'
17671 nvgformat='$nvgformat'
17672 nvsize='$nvsize'
17673 nvtype='$nvtype'
17674 o_nonblock='$o_nonblock'
17675 obj_ext='$obj_ext'
17676 old_pthread_create_joinable='$old_pthread_create_joinable'
17677 optimize='$optimize'
17678 orderlib='$orderlib'
17679 osname='$osname'
17680 osvers='$osvers'
17681 otherlibdirs='$otherlibdirs'
17682 package='$package'
17683 pager='$pager'
17684 passcat='$passcat'
17685 patchlevel='$patchlevel'
17686 path_sep='$path_sep'
17687 perl5='$perl5'
17688 perl='$perl'
17689 perl_patchlevel='$perl_patchlevel'
17690 perladmin='$perladmin'
17691 perllibs='$perllibs'
17692 perlpath='$perlpath'
17693 pg='$pg'
17694 phostname='$phostname'
17695 pidtype='$pidtype'
17696 plibpth='$plibpth'
17697 pm_apiversion='$pm_apiversion'
17698 pmake='$pmake'
17699 pr='$pr'
17700 prefix='$prefix'
17701 prefixexp='$prefixexp'
17702 privlib='$privlib'
17703 privlibexp='$privlibexp'
17704 procselfexe='$procselfexe'
17705 prototype='$prototype'
17706 ptrsize='$ptrsize'
17707 quadkind='$quadkind'
17708 quadtype='$quadtype'
17709 randbits='$randbits'
17710 randfunc='$randfunc'
17711 randseedtype='$randseedtype'
17712 ranlib='$ranlib'
17713 rd_nodata='$rd_nodata'
17714 revision='$revision'
17715 rm='$rm'
17716 rmail='$rmail'
17717 run='$run'
17718 runnm='$runnm'
17719 sPRIEUldbl='$sPRIEUldbl'
17720 sPRIFUldbl='$sPRIFUldbl'
17721 sPRIGUldbl='$sPRIGUldbl'
17722 sPRIXU64='$sPRIXU64'
17723 sPRId64='$sPRId64'
17724 sPRIeldbl='$sPRIeldbl'
17725 sPRIfldbl='$sPRIfldbl'
17726 sPRIgldbl='$sPRIgldbl'
17727 sPRIi64='$sPRIi64'
17728 sPRIo64='$sPRIo64'
17729 sPRIu64='$sPRIu64'
17730 sPRIx64='$sPRIx64'
17731 sSCNfldbl='$sSCNfldbl'
17732 sched_yield='$sched_yield'
17733 scriptdir='$scriptdir'
17734 scriptdirexp='$scriptdirexp'
17735 sed='$sed'
17736 seedfunc='$seedfunc'
17737 selectminbits='$selectminbits'
17738 selecttype='$selecttype'
17739 sendmail='$sendmail'
17740 sh='$sh'
17741 shar='$shar'
17742 sharpbang='$sharpbang'
17743 shmattype='$shmattype'
17744 shortsize='$shortsize'
17745 shrpenv='$shrpenv'
17746 shsharp='$shsharp'
17747 sig_count='$sig_count'
17748 sig_name='$sig_name'
17749 sig_name_init='$sig_name_init'
17750 sig_num='$sig_num'
17751 sig_num_init='$sig_num_init'
17752 sig_size='$sig_size'
17753 signal_t='$signal_t'
17754 sitearch='$sitearch'
17755 sitearchexp='$sitearchexp'
17756 sitebin='$sitebin'
17757 sitebinexp='$sitebinexp'
17758 sitelib='$sitelib'
17759 sitelib_stem='$sitelib_stem'
17760 sitelibexp='$sitelibexp'
17761 siteprefix='$siteprefix'
17762 siteprefixexp='$siteprefixexp'
17763 sizesize='$sizesize'
17764 sizetype='$sizetype'
17765 sleep='$sleep'
17766 smail='$smail'
17767 so='$so'
17768 sockethdr='$sockethdr'
17769 socketlib='$socketlib'
17770 socksizetype='$socksizetype'
17771 sort='$sort'
17772 spackage='$spackage'
17773 spitshell='$spitshell'
17774 src='$src'
17775 ssizetype='$ssizetype'
17776 startperl='$startperl'
17777 startsh='$startsh'
17778 static_ext='$static_ext'
17779 stdchar='$stdchar'
17780 stdio_base='$stdio_base'
17781 stdio_bufsiz='$stdio_bufsiz'
17782 stdio_cnt='$stdio_cnt'
17783 stdio_filbuf='$stdio_filbuf'
17784 stdio_ptr='$stdio_ptr'
17785 stdio_stream_array='$stdio_stream_array'
17786 strings='$strings'
17787 submit='$submit'
17788 subversion='$subversion'
17789 sysman='$sysman'
17790 tail='$tail'
17791 tar='$tar'
17792 targetarch='$targetarch'
17793 tbl='$tbl'
17794 tee='$tee'
17795 test='$test'
17796 timeincl='$timeincl'
17797 timetype='$timetype'
17798 to='$to'
17799 touch='$touch'
17800 tr='$tr'
17801 trnl='$trnl'
17802 troff='$troff'
17803 u16size='$u16size'
17804 u16type='$u16type'
17805 u32size='$u32size'
17806 u32type='$u32type'
17807 u64size='$u64size'
17808 u64type='$u64type'
17809 u8size='$u8size'
17810 u8type='$u8type'
17811 uidformat='$uidformat'
17812 uidsign='$uidsign'
17813 uidsize='$uidsize'
17814 uidtype='$uidtype'
17815 uname='$uname'
17816 uniq='$uniq'
17817 uquadtype='$uquadtype'
17818 use5005threads='$use5005threads'
17819 use64bitall='$use64bitall'
17820 use64bitint='$use64bitint'
17821 usecrosscompile='$usecrosscompile'
17822 usedl='$usedl'
17823 useithreads='$useithreads'
17824 uselargefiles='$uselargefiles'
17825 uselongdouble='$uselongdouble'
17826 usemorebits='$usemorebits'
17827 usemultiplicity='$usemultiplicity'
17828 usemymalloc='$usemymalloc'
17829 usenm='$usenm'
17830 useopcode='$useopcode'
17831 useperlio='$useperlio'
17832 useposix='$useposix'
17833 usereentrant='$usereentrant'
17834 usesfio='$usesfio'
17835 useshrplib='$useshrplib'
17836 usesocks='$usesocks'
17837 usethreads='$usethreads'
17838 usevendorprefix='$usevendorprefix'
17839 usevfork='$usevfork'
17840 usrinc='$usrinc'
17841 uuname='$uuname'
17842 uvXUformat='$uvXUformat'
17843 uvoformat='$uvoformat'
17844 uvsize='$uvsize'
17845 uvtype='$uvtype'
17846 uvuformat='$uvuformat'
17847 uvxformat='$uvxformat'
17848 vendorarch='$vendorarch'
17849 vendorarchexp='$vendorarchexp'
17850 vendorbin='$vendorbin'
17851 vendorbinexp='$vendorbinexp'
17852 vendorlib='$vendorlib'
17853 vendorlib_stem='$vendorlib_stem'
17854 vendorlibexp='$vendorlibexp'
17855 vendorprefix='$vendorprefix'
17856 vendorprefixexp='$vendorprefixexp'
17857 version='$version'
17858 version_patchlevel_string='$version_patchlevel_string'
17859 versiononly='$versiononly'
17860 vi='$vi'
17861 voidflags='$voidflags'
17862 xlibpth='$xlibpth'
17863 xs_apiversion='$xs_apiversion'
17864 yacc='$yacc'
17865 yaccflags='$yaccflags'
17866 zcat='$zcat'
17867 zip='$zip'
17868 EOT
17869
17870 : Add in command line options if available
17871 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17872
17873 : add special variables
17874 $test -f $src/patchlevel.h && \
17875 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17876 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17877 echo "PERL_CONFIG_SH=true" >>config.sh
17878
17879 : propagate old symbols
17880 if $test -f UU/config.sh; then
17881         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17882         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17883         $sort | $uniq -u >UU/oldsyms
17884         set X `cat UU/oldsyms`
17885         shift
17886         case $# in
17887         0) ;;
17888         *)
17889                 cat <<EOM
17890 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17891 EOM
17892                 echo "# Variables propagated from previous config.sh file." >>config.sh
17893                 for sym in `cat UU/oldsyms`; do
17894                         echo "    Propagating $hint variable "'$'"$sym..."
17895                         eval 'tmp="$'"${sym}"'"'
17896                         echo "$tmp" | \
17897                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17898                 done
17899                 ;;
17900         esac
17901 fi
17902
17903 : Finish up by extracting the .SH files
17904 case "$alldone" in
17905 exit)
17906         $rm -rf UU
17907         echo "Extraction done."
17908         exit 0
17909         ;;
17910 cont)
17911         ;;
17912 '')
17913         dflt=''
17914         nostick=true
17915         $cat <<EOM
17916
17917 If you'd like to make any changes to the config.sh file before I begin
17918 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17919
17920 EOM
17921         rp="Press return or use a shell escape to edit config.sh:"
17922         . UU/myread
17923         nostick=''
17924         case "$ans" in
17925         '') ;;
17926         *) : in case they cannot read
17927                 sh 1>&4 -c "$ans";;
17928         esac
17929         ;;
17930 esac
17931
17932 : if this fails, just run all the .SH files by hand
17933 . ./config.sh
17934
17935 echo " "
17936 exec 1>&4
17937 pwd=`pwd`
17938 . ./UU/extract
17939 cd "$pwd"
17940
17941 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17942         dflt=y
17943         case "$silent" in
17944         true) ;;
17945         *)
17946                 $cat <<EOM
17947
17948 Now you need to generate make dependencies by running "$make depend".
17949 You might prefer to run it in background: "$make depend > makedepend.out &"
17950 It can take a while, so you might not want to run it right now.
17951
17952 EOM
17953                 ;;
17954         esac
17955         rp="Run $make depend now?"
17956         . UU/myread
17957         case "$ans" in
17958         y*)
17959                 $make depend && echo "Now you must run '$make'."
17960                 ;;
17961         *)
17962                 echo "You must run '$make depend' then '$make'."
17963                 ;;
17964         esac
17965 elif test -f [Mm]akefile; then
17966         echo " "
17967         echo "Now you must run a $make."
17968 else
17969         echo "Configure done."
17970 fi
17971
17972 if $test -f Policy.sh; then
17973     $cat <<EOM
17974
17975 If you compile $package on a different machine or from a different object
17976 directory, copy the Policy.sh file from this object directory to the
17977 new one before you run Configure -- this will help you with most of
17978 the policy defaults.
17979
17980 EOM
17981 fi
17982 if $test -f config.msg; then
17983     echo "Hmm.  I also noted the following information while running:"
17984     echo " "
17985     $cat config.msg >&4
17986     $rm -f config.msg
17987 fi
17988 $rm -f kit*isdone ark*isdone
17989 $rm -rf UU
17990
17991 : End of Configure
17992