a88842d106068f73a1b1532d29b02fac42b34fa1
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Wed Mar  6 17:32:31 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 d_tm_tm_gmtoff=''
760 d_tm_tm_zone=''
761 i_systime=''
762 i_systimek=''
763 i_time=''
764 timeincl=''
765 i_unistd=''
766 i_ustat=''
767 i_utime=''
768 i_values=''
769 i_stdarg=''
770 i_varargs=''
771 i_varhdr=''
772 i_vfork=''
773 inc_version_list=''
774 inc_version_list_init=''
775 installprefix=''
776 installprefixexp=''
777 installstyle=''
778 installusrbinperl=''
779 intsize=''
780 longsize=''
781 shortsize=''
782 issymlink=''
783 libc=''
784 ldlibpthname=''
785 libperl=''
786 shrpenv=''
787 useshrplib=''
788 glibpth=''
789 libpth=''
790 loclibpth=''
791 plibpth=''
792 xlibpth=''
793 ignore_versioned_solibs=''
794 libs=''
795 libsdirs=''
796 libsfiles=''
797 libsfound=''
798 libspath=''
799 lns=''
800 d_PRIEUldbl=''
801 d_PRIFUldbl=''
802 d_PRIGUldbl=''
803 d_PRIeldbl=''
804 d_PRIfldbl=''
805 d_PRIgldbl=''
806 d_SCNfldbl=''
807 sPRIEUldbl=''
808 sPRIFUldbl=''
809 sPRIGUldbl=''
810 sPRIeldbl=''
811 sPRIfldbl=''
812 sPRIgldbl=''
813 sSCNfldbl=''
814 lseeksize=''
815 lseektype=''
816 make_set_make=''
817 d_mymalloc=''
818 freetype=''
819 mallocobj=''
820 mallocsrc=''
821 malloctype=''
822 usemymalloc=''
823 installman1dir=''
824 man1dir=''
825 man1direxp=''
826 man1ext=''
827 installman3dir=''
828 man3dir=''
829 man3direxp=''
830 man3ext=''
831 modetype=''
832 multiarch=''
833 mydomain=''
834 myhostname=''
835 phostname=''
836 c=''
837 n=''
838 d_eofnblk=''
839 eagain=''
840 o_nonblock=''
841 rd_nodata=''
842 need_va_copy=''
843 netdb_hlen_type=''
844 netdb_host_type=''
845 netdb_name_type=''
846 netdb_net_type=''
847 groupcat=''
848 hostcat=''
849 passcat=''
850 orderlib=''
851 ranlib=''
852 d_perl_otherlibdirs=''
853 otherlibdirs=''
854 package=''
855 spackage=''
856 pager=''
857 api_revision=''
858 api_subversion=''
859 api_version=''
860 api_versionstring=''
861 patchlevel=''
862 perl_patchlevel=''
863 revision=''
864 subversion=''
865 version=''
866 version_patchlevel_string=''
867 perl5=''
868 perladmin=''
869 perlpath=''
870 d_nv_preserves_uv=''
871 d_nv_preserves_uv_bits=''
872 i16size=''
873 i16type=''
874 i32size=''
875 i32type=''
876 i64size=''
877 i64type=''
878 i8size=''
879 i8type=''
880 ivsize=''
881 ivtype=''
882 nvsize=''
883 nvtype=''
884 u16size=''
885 u16type=''
886 u32size=''
887 u32type=''
888 u64size=''
889 u64type=''
890 u8size=''
891 u8type=''
892 uvsize=''
893 uvtype=''
894 ivdformat=''
895 nvEUformat=''
896 nvFUformat=''
897 nvGUformat=''
898 nveformat=''
899 nvfformat=''
900 nvgformat=''
901 uvXUformat=''
902 uvoformat=''
903 uvuformat=''
904 uvxformat=''
905 pidtype=''
906 prefix=''
907 prefixexp=''
908 installprivlib=''
909 privlib=''
910 privlibexp=''
911 prototype=''
912 ptrsize=''
913 d_PRIXU64=''
914 d_PRId64=''
915 d_PRIi64=''
916 d_PRIo64=''
917 d_PRIu64=''
918 d_PRIx64=''
919 sPRIXU64=''
920 sPRId64=''
921 sPRIi64=''
922 sPRIo64=''
923 sPRIu64=''
924 sPRIx64=''
925 d_quad=''
926 quadkind=''
927 quadtype=''
928 uquadtype=''
929 drand01=''
930 randbits=''
931 randfunc=''
932 randseedtype=''
933 seedfunc=''
934 installscript=''
935 scriptdir=''
936 scriptdirexp=''
937 selectminbits=''
938 selecttype=''
939 sh=''
940 sig_count=''
941 sig_name=''
942 sig_name_init=''
943 sig_num=''
944 sig_num_init=''
945 sig_size=''
946 installsitearch=''
947 sitearch=''
948 sitearchexp=''
949 installsitebin=''
950 sitebin=''
951 sitebinexp=''
952 installsitelib=''
953 sitelib=''
954 sitelib_stem=''
955 sitelibexp=''
956 siteprefix=''
957 siteprefixexp=''
958 sizesize=''
959 sizetype=''
960 so=''
961 socksizetype=''
962 sharpbang=''
963 shsharp=''
964 spitshell=''
965 src=''
966 ssizetype=''
967 startperl=''
968 startsh=''
969 stdchar=''
970 d_stdio_stream_array=''
971 stdio_stream_array=''
972 sysman=''
973 trnl=''
974 uidformat=''
975 uidsign=''
976 uidsize=''
977 uidtype=''
978 archname64=''
979 use64bitall=''
980 use64bitint=''
981 ccflags_uselargefiles=''
982 ldflags_uselargefiles=''
983 libswanted_uselargefiles=''
984 uselargefiles=''
985 uselongdouble=''
986 usemorebits=''
987 usemultiplicity=''
988 nm_opt=''
989 nm_so_opt=''
990 runnm=''
991 usenm=''
992 useperlio=''
993 usesocks=''
994 d_oldpthreads=''
995 use5005threads=''
996 useithreads=''
997 usereentrant=''
998 usethreads=''
999 incpath=''
1000 mips_type=''
1001 usrinc=''
1002 d_vendorarch=''
1003 installvendorarch=''
1004 vendorarch=''
1005 vendorarchexp=''
1006 d_vendorbin=''
1007 installvendorbin=''
1008 vendorbin=''
1009 vendorbinexp=''
1010 d_vendorlib=''
1011 installvendorlib=''
1012 vendorlib=''
1013 vendorlib_stem=''
1014 vendorlibexp=''
1015 usevendorprefix=''
1016 vendorprefix=''
1017 vendorprefixexp=''
1018 versiononly=''
1019 defvoidused=''
1020 voidflags=''
1021 pm_apiversion=''
1022 xs_apiversion=''
1023 yacc=''
1024 yaccflags=''
1025 CONFIG=''
1026
1027 define='define'
1028 undef='undef'
1029 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1030 rmlist=''
1031
1032 : We must find out about Eunice early
1033 eunicefix=':'
1034 if test -f /etc/unixtovms; then
1035         eunicefix=/etc/unixtovms
1036 fi
1037 if test -f /etc/unixtovms.exe; then
1038         eunicefix=/etc/unixtovms.exe
1039 fi
1040
1041 : Set executable suffix now -- needed before hints available
1042 if test -f "/libs/version.library"; then
1043 : Amiga OS
1044     _exe=""
1045 elif test -f "/system/gnu_library/bin/ar.pm"; then
1046 : Stratus VOS
1047     _exe=".pm"
1048 elif test -n "$DJGPP"; then
1049 : DOS DJGPP
1050     _exe=".exe"
1051 elif test -d c:/. ; then
1052 : OS/2 or cygwin
1053     _exe=".exe"
1054 fi
1055
1056 i_whoami=''
1057 ccname=''
1058 ccversion=''
1059 perllibs=''
1060 : set useposix=false in your hint file to disable the POSIX extension.
1061 useposix=true
1062 : set useopcode=false in your hint file to disable the Opcode extension.
1063 useopcode=true
1064 : Trailing extension.  Override this in a hint file, if needed.
1065 : Extra object files, if any, needed on this platform.
1066 archobjs=''
1067 archname=''
1068 : Possible local include directories to search.
1069 : Set locincpth to "" in a hint file to defeat local include searches.
1070 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1071 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1072 :
1073 : no include file wanted by default
1074 inclwanted=''
1075
1076 groupstype=''
1077 libnames=''
1078 : change the next line if compiling for Xenix/286 on Xenix/386
1079 xlibpth='/usr/lib/386 /lib/386'
1080 : Possible local library directories to search.
1081 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1082 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1083
1084 : general looking path for locating libraries
1085 glibpth="/lib /usr/lib $xlibpth"
1086 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1087 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1088 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1089
1090 : Private path used by Configure to find libraries.  Its value
1091 : is prepended to libpth. This variable takes care of special
1092 : machines, like the mips.  Usually, it should be empty.
1093 plibpth=''
1094
1095 : default library list
1096 libswanted=''
1097 : some systems want to use only the non-versioned libso:s
1098 ignore_versioned_solibs=''
1099 archname64=''
1100 ccflags_uselargefiles=''
1101 ldflags_uselargefiles=''
1102 libswanted_uselargefiles=''
1103 : set usemultiplicity on the Configure command line to enable multiplicity.
1104 : set usesocks on the Configure command line to enable socks.
1105 : set usethreads on the Configure command line to enable threads.
1106 usereentrant='undef'
1107 : full support for void wanted by default
1108 defvoidused=15
1109
1110 : List of libraries we want.
1111 : If anyone needs -lnet, put it in a hint file.
1112 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1113 libswanted="$libswanted dld ld sun m c cposix posix"
1114 libswanted="$libswanted ndir dir crypt sec"
1115 libswanted="$libswanted ucb bsd BSD PW x util"
1116 : We probably want to search /usr/shlib before most other libraries.
1117 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1118 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1119 glibpth="/usr/shlib $glibpth"
1120 : Do not use vfork unless overridden by a hint file.
1121 usevfork=false
1122
1123 : Find the basic shell for Bourne shell scripts
1124 case "$sh" in
1125 '')
1126         case "$SYSTYPE" in
1127         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1128         *) xxx='/bin/sh';;
1129         esac
1130         if test -f "$xxx"; then
1131                 sh="$xxx"
1132         else
1133                 : Build up a list and do a single loop so we can 'break' out.
1134                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1135                 for xxx in sh bash ksh pdksh ash; do
1136                         for p in $pth; do
1137                                 try="$try ${p}/${xxx}"
1138                         done
1139                 done
1140                 for xxx in $try; do
1141                         if test -f "$xxx"; then
1142                                 sh="$xxx";
1143                                 break
1144                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1145                                 sh="$xxx";
1146                                 break
1147                         elif test -f "$xxx.exe"; then
1148                                 sh="$xxx";
1149                                 break
1150                         fi
1151                 done
1152         fi
1153         ;;
1154 esac
1155
1156 case "$sh" in
1157 '')     cat >&2 <<EOM
1158 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1159
1160 Usually it's in /bin/sh.  How did you even get this far?
1161 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1162 we'll try to straighten this all out.
1163 EOM
1164         exit 1
1165         ;;
1166 esac
1167
1168 : see if sh knows # comments
1169 if `$sh -c '#' >/dev/null 2>&1`; then
1170         shsharp=true
1171         spitshell=cat
1172         xcat=/bin/cat
1173         test -f $xcat$_exe || xcat=/usr/bin/cat
1174         if test ! -f $xcat$_exe; then
1175                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1176                         if test -f $p/cat$_exe; then
1177                                 xcat=$p/cat
1178                                 break
1179                         fi
1180                 done
1181                 if test ! -f $xcat$_exe; then
1182                         echo "Can't find cat anywhere!"
1183                         exit 1
1184                 fi
1185         fi
1186         echo "#!$xcat" >sharp
1187         $eunicefix sharp
1188         chmod +x sharp
1189         ./sharp > today
1190         if test -s today; then
1191                 sharpbang='#!'
1192         else
1193                 echo "#! $xcat" > sharp
1194                 $eunicefix sharp
1195                 chmod +x sharp
1196                 ./sharp > today
1197                 if test -s today; then
1198                         sharpbang='#! '
1199                 else
1200                         sharpbang=': use '
1201                 fi
1202         fi
1203 else
1204         echo " "
1205         echo "Your $sh doesn't grok # comments--I will strip them later on."
1206         shsharp=false
1207         cd ..
1208         echo "exec grep -v '^[  ]*#'" >spitshell
1209         chmod +x spitshell
1210         $eunicefix spitshell
1211         spitshell=`pwd`/spitshell
1212         cd UU
1213         echo "I presume that if # doesn't work, #! won't work either!"
1214         sharpbang=': use '
1215 fi
1216 rm -f sharp today
1217
1218 : figure out how to guarantee sh startup
1219 case "$startsh" in
1220 '') startsh=${sharpbang}${sh} ;;
1221 *)
1222 esac
1223 cat >sharp <<EOSS
1224 $startsh
1225 set abc
1226 test "$?abc" != 1
1227 EOSS
1228
1229 chmod +x sharp
1230 $eunicefix sharp
1231 if ./sharp; then
1232         : echo "Yup, it does."
1233 else
1234         echo "Hmm... '$startsh' does not guarantee sh startup..."
1235         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1236 fi
1237 rm -f sharp
1238
1239
1240 : Save command line options in file UU/cmdline.opt for later use in
1241 : generating config.sh.
1242 cat > cmdline.opt <<EOSH
1243 # Configure command line arguments.
1244 config_arg0='$0'
1245 config_args='$*'
1246 config_argc=$#
1247 EOSH
1248 argn=1
1249 args_exp=''
1250 args_sep=''
1251 for arg in "$@"; do
1252         cat >>cmdline.opt <<EOSH
1253 config_arg$argn='$arg'
1254 EOSH
1255         # Extreme backslashitis: replace each ' by '"'"'
1256         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1257 $arg
1258 EOC
1259         arg_exp=`cat cmdl.opt`
1260         args_exp="$args_exp$args_sep'$arg_exp'"
1261         argn=`expr $argn + 1`
1262         args_sep=' '
1263 done
1264 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1265 # used by ./hints/os2.sh
1266 rm -f cmdl.opt
1267
1268 : produce awk script to parse command line options
1269 cat >options.awk <<'EOF'
1270 BEGIN {
1271         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1272
1273         len = length(optstr);
1274         for (i = 1; i <= len; i++) {
1275                 c = substr(optstr, i, 1);
1276                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1277                 if (a == ":") {
1278                         arg[c] = 1;
1279                         i++;
1280                 }
1281                 opt[c] = 1;
1282         }
1283 }
1284 {
1285         expect = 0;
1286         str = $0;
1287         if (substr(str, 1, 1) != "-") {
1288                 printf("'%s'\n", str);
1289                 next;
1290         }
1291         len = length($0);
1292         for (i = 2; i <= len; i++) {
1293                 c = substr(str, i, 1);
1294                 if (!opt[c]) {
1295                         printf("-%s\n", substr(str, i));
1296                         next;
1297                 }
1298                 printf("-%s\n", c);
1299                 if (arg[c]) {
1300                         if (i < len)
1301                                 printf("'%s'\n", substr(str, i + 1));
1302                         else
1303                                 expect = 1;
1304                         next;
1305                 }
1306         }
1307 }
1308 END {
1309         if (expect)
1310                 print "?";
1311 }
1312 EOF
1313
1314 : process the command line options
1315 set X `for arg in "$@"; do echo "X$arg"; done |
1316         sed -e s/X// | awk -f options.awk`
1317 eval "set $*"
1318 shift
1319 rm -f options.awk
1320
1321 : set up default values
1322 fastread=''
1323 reuseval=false
1324 config_sh=''
1325 alldone=''
1326 error=''
1327 silent=''
1328 extractsh=''
1329 override=''
1330 knowitall=''
1331 rm -f optdef.sh posthint.sh
1332 cat >optdef.sh <<EOS
1333 $startsh
1334 EOS
1335
1336
1337 : option parsing
1338 while test $# -gt 0; do
1339         case "$1" in
1340         -d) shift; fastread=yes;;
1341         -e) shift; alldone=cont;;
1342         -f)
1343                 shift
1344                 cd ..
1345                 if test -r "$1"; then
1346                         config_sh="$1"
1347                 else
1348                         echo "$me: cannot read config file $1." >&2
1349                         error=true
1350                 fi
1351                 cd UU
1352                 shift;;
1353         -h) shift; error=true;;
1354         -r) shift; reuseval=true;;
1355         -s) shift; silent=true; realsilent=true;;
1356         -E) shift; alldone=exit;;
1357         -K) shift; knowitall=true;;
1358         -O) shift; override=true;;
1359         -S) shift; silent=true; extractsh=true;;
1360         -D)
1361                 shift
1362                 case "$1" in
1363                 *=)
1364                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1365                         echo "$me: ignoring -D $1" >&2
1366                         ;;
1367                 *=*) echo "$1" | \
1368                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1369                 *) echo "$1='define'" >> optdef.sh;;
1370                 esac
1371                 shift
1372                 ;;
1373         -U)
1374                 shift
1375                 case "$1" in
1376                 *=) echo "$1" >> optdef.sh;;
1377                 *=*)
1378                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1379                         echo "$me: ignoring -U $1" >&2
1380                         ;;
1381                 *) echo "$1='undef'" >> optdef.sh;;
1382                 esac
1383                 shift
1384                 ;;
1385         -A)
1386             shift
1387             xxx=''
1388             yyy="$1"
1389             zzz=''
1390             uuu=undef
1391             case "$yyy" in
1392             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1393                  case "$zzz" in
1394                  *:*) zzz='' ;;
1395                  *)   xxx=append
1396                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1397                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1398                  esac
1399                  ;;
1400             esac
1401             case "$xxx" in
1402             '')  case "$yyy" in
1403                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1404                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1405                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1406                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1407                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1408                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1409                  esac
1410                  ;;       
1411             esac
1412             case "$xxx" in
1413             append)
1414                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1415             clear)
1416                 echo "$yyy=''"                  >> posthint.sh ;;
1417             define)
1418                 case "$zzz" in
1419                 '') zzz=define ;;
1420                 esac
1421                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1422             eval)
1423                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1424             prepend)
1425                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1426             undef)
1427                 case "$zzz" in
1428                 '') zzz="$uuu" ;;
1429                 esac
1430                 echo "$yyy=$zzz"                >> posthint.sh ;;
1431             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1432             esac
1433             shift
1434             ;;
1435         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1436             exit 0;;
1437         --) break;;
1438         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1439         *) break;;
1440         esac
1441 done
1442
1443 case "$error" in
1444 true)
1445         cat >&2 <<EOM
1446 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1447                  [-U symbol] [-U symbol=] [-A command:symbol...]
1448   -d : use defaults for all answers.
1449   -e : go on without questioning past the production of config.sh.
1450   -f : specify an alternate default configuration file.
1451   -h : print this help message and exit (with an error status).
1452   -r : reuse C symbols value if possible (skips costly nm extraction).
1453   -s : silent mode, only echoes questions and essential information.
1454   -D : define symbol to have some value:
1455          -D symbol         symbol gets the value 'define'
1456          -D symbol=value   symbol gets the value 'value'
1457   -E : stop at the end of questions, after having produced config.sh.
1458   -K : do not use unless you know what you are doing.
1459   -O : let -D and -U override definitions from loaded configuration file.
1460   -S : perform variable substitutions on all .SH files (can mix with -f)
1461   -U : undefine symbol:
1462          -U symbol    symbol gets the value 'undef'
1463          -U symbol=   symbol gets completely empty
1464   -A : manipulate symbol after the platform specific hints have been applied:
1465          -A symbol=value                append " "value to symbol
1466          -A append:symbol=value         append value to symbol
1467          -A define:symbol=value         define symbol to have value
1468          -A clear:symbol                define symbol to be ''
1469          -A define:symbol               define symbol to be 'define'
1470          -A eval:symbol=value           define symbol to be eval of value
1471          -A prepend:symbol=value        prepend value to symbol
1472          -A undef:symbol                define symbol to be 'undef'
1473          -A undef:symbol=               define symbol to be ''
1474   -V : print version number and exit (with a zero status).
1475 EOM
1476         exit 1
1477         ;;
1478 esac
1479
1480 : Sanity checks
1481 case "$fastread$alldone" in
1482 yescont|yesexit) ;;
1483 *)
1484         case "$extractsh" in
1485         true) ;;
1486         *)
1487                 if test ! -t 0; then
1488                         echo "Say 'sh Configure', not 'sh <Configure'"
1489                         exit 1
1490                 fi
1491                 ;;
1492         esac
1493         ;;
1494 esac
1495
1496 exec 4>&1
1497 case "$silent" in
1498 true) exec 1>/dev/null;;
1499 esac
1500
1501 : run the defines and the undefines, if any, but leave the file out there...
1502 touch optdef.sh
1503 . ./optdef.sh
1504 : create the posthint manipulation script and leave the file out there...
1505 touch posthint.sh
1506
1507 : set package name
1508 package=perl5
1509 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1510 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1511 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1512 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1513 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1514 esac
1515
1516 : Some greps do not return status, grrr.
1517 echo "grimblepritz" >grimble
1518 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1519         contains=contains
1520 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1521         contains=grep
1522 else
1523         contains=contains
1524 fi
1525 rm -f grimble
1526 : the following should work in any shell
1527 case "$contains" in
1528 contains*)
1529         echo " "
1530         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1531         cat >contains <<'EOSS'
1532 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1533 EOSS
1534 chmod +x contains
1535 esac
1536
1537 : Find the path to the source tree
1538 case "$src" in
1539 '') case "$0" in
1540     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1541          case "$src" in
1542          /*)    ;;
1543          .)     ;;
1544          *)     src=`cd ../$src && pwd` ;;
1545          esac
1546          ;;
1547     *)   src='.';;
1548     esac;;
1549 esac
1550 case "$src" in
1551 '')     src=/
1552         rsrc=/
1553         ;;
1554 /*) rsrc="$src";;
1555 *) rsrc="../$src";;
1556 esac
1557 if test -f $rsrc/Configure && \
1558         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1559 then
1560    : found it, so we are ok.
1561 else
1562         rsrc=''
1563         for src in . .. ../.. ../../.. ../../../..; do
1564                 if test -f ../$src/Configure && \
1565                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1566                 then
1567                         rsrc=../$src
1568                         break
1569                 fi
1570         done
1571 fi
1572 case "$rsrc" in
1573 '')
1574         cat <<EOM >&4
1575
1576 Sorry, I can't seem to locate the source dir for $package.  Please start
1577 Configure with an explicit path -- i.e. /some/path/Configure.
1578
1579 EOM
1580         exit 1
1581         ;;
1582 ../.)   rsrc='..';;
1583 *)
1584         echo " "
1585         echo "Sources for $package found in \"$src\"." >&4
1586         ;;
1587 esac
1588
1589 : script used to extract .SH files with variable substitutions
1590 cat >extract <<'EOS'
1591 PERL_CONFIG_SH=true
1592 echo "Doing variable substitutions on .SH files..."
1593 if test -f MANIFEST; then
1594         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1595 else
1596         echo "(Looking for .SH files under the source directory.)"
1597         set x `(cd "$src"; find . -name "*.SH" -print)`
1598 fi
1599 shift
1600 case $# in
1601 0) set x `(cd "$src"; echo *.SH)`; shift;;
1602 esac
1603 if test ! -f "$src/$1"; then
1604         shift
1605 fi
1606 mkdir_p='
1607 name=$1;
1608 create="";
1609 while test $name; do
1610         if test ! -d "$name"; then
1611                 create="$name $create";
1612                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1613                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1614         else
1615                 name="";
1616         fi;
1617 done;
1618 for file in $create; do
1619         mkdir $file;
1620 done
1621 '
1622 for file in $*; do
1623         case "$src" in
1624         ".")
1625                 case "$file" in
1626                 */*)
1627                         dir=`expr X$file : 'X\(.*\)/'`
1628                         file=`expr X$file : 'X.*/\(.*\)'`
1629                         (cd "$dir" && . ./$file)
1630                         ;;
1631                 *)
1632                         . ./$file
1633                         ;;
1634                 esac
1635                 ;;
1636         *)
1637                 case "$file" in
1638                 */*)
1639                         dir=`expr X$file : 'X\(.*\)/'`
1640                         file=`expr X$file : 'X.*/\(.*\)'`
1641                         (set x $dir; shift; eval $mkdir_p)
1642                         sh <"$src/$dir/$file"
1643                         ;;
1644                 *)
1645                         sh <"$src/$file"
1646                         ;;
1647                 esac
1648                 ;;
1649         esac
1650 done
1651 if test -f "$src/config_h.SH"; then
1652         if test ! -f config.h; then
1653         : oops, they left it out of MANIFEST, probably, so do it anyway.
1654         . "$src/config_h.SH"
1655         fi
1656 fi
1657 EOS
1658
1659 : extract files and exit if asked to do so
1660 case "$extractsh" in
1661 true)
1662         case "$realsilent" in
1663         true) ;;
1664         *) exec 1>&4;;
1665         esac
1666         case "$config_sh" in
1667         '') config_sh='config.sh';;
1668         esac
1669         echo " "
1670         echo "Fetching answers from $config_sh..."
1671         cd ..
1672         . $config_sh
1673         test "$override" && . ./optdef.sh
1674         echo " "
1675         . UU/extract
1676         rm -rf UU
1677         echo "Extraction done."
1678         exit 0
1679         ;;
1680 esac
1681
1682 : Eunice requires " " instead of "", can you believe it
1683 echo " "
1684 : Here we go...
1685 echo "Beginning of configuration questions for $package."
1686
1687 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1688
1689 : first determine how to suppress newline on echo command
1690 echo " "
1691 echo "Checking echo to see how to suppress newlines..."
1692 (echo "hi there\c" ; echo " ") >.echotmp
1693 if $contains c .echotmp >/dev/null 2>&1 ; then
1694         echo "...using -n."
1695         n='-n'
1696         c=''
1697 else
1698         cat <<'EOM'
1699 ...using \c
1700 EOM
1701         n=''
1702         c='\c'
1703 fi
1704 echo $n "The star should be here-->$c"
1705 echo '*'
1706 rm -f .echotmp
1707
1708 : Now test for existence of everything in MANIFEST
1709 echo " "
1710 if test -f "$rsrc/MANIFEST"; then
1711         echo "First let's make sure your kit is complete.  Checking..." >&4
1712         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1713         rm -f missing
1714         tmppwd=`pwd`
1715         for filelist in x??; do
1716                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1717         done
1718         if test -s missing; then
1719                 cat missing >&4
1720                 cat >&4 <<'EOM'
1721
1722 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1723
1724 You have the option of continuing the configuration process, despite the
1725 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1726 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1727 and contact the author (perlbug@perl.org).
1728
1729 EOM
1730                 echo $n "Continue? [n] $c" >&4
1731                 read ans
1732                 case "$ans" in
1733                 y*)
1734                         echo "Continuing..." >&4
1735                         rm -f missing
1736                         ;;
1737                 *)
1738                         echo "ABORTING..." >&4
1739                         kill $$
1740                         ;;
1741                 esac
1742         else
1743                 echo "Looks good..."
1744         fi
1745 else
1746         echo "There is no MANIFEST file.  I hope your kit is complete !"
1747 fi
1748 rm -f missing x??
1749
1750 echo " "
1751 : Find the appropriate value for a newline for tr
1752 if test -n "$DJGPP"; then
1753        trnl='\012'
1754 fi
1755 if test X"$trnl" = X; then
1756         case "`echo foo|tr '\n' x 2>/dev/null`" in
1757         foox) trnl='\n' ;;
1758         esac
1759 fi
1760 if test X"$trnl" = X; then
1761         case "`echo foo|tr '\012' x 2>/dev/null`" in
1762         foox) trnl='\012' ;;
1763         esac
1764 fi
1765 if test X"$trnl" = X; then
1766         cat <<EOM >&2
1767
1768 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1769
1770 EOM
1771         exit 1
1772 fi
1773
1774 : compute the number of columns on the terminal for proper question formatting
1775 case "$COLUMNS" in
1776 '') COLUMNS='80';;
1777 esac
1778
1779 : set up the echo used in my read
1780 myecho="case \"\$xxxm\" in
1781 '') echo $n \"\$rp $c\" >&4;;
1782 *) case \"\$rp\" in
1783         '') echo $n \"[\$xxxm] $c\";;
1784         *)
1785                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1786                         echo \"\$rp\" >&4
1787                         echo $n \"[\$xxxm] $c\" >&4
1788                 else
1789                         echo $n \"\$rp [\$xxxm] $c\" >&4
1790                 fi
1791                 ;;
1792         esac;;
1793 esac"
1794
1795 : now set up to do reads with possible shell escape and default assignment
1796 cat <<EOSC >myread
1797 $startsh
1798 xxxm=\$dflt
1799 $myecho
1800 ans='!'
1801 case "\$fastread" in
1802 yes) case "\$dflt" in
1803         '') ;;
1804         *) ans='';
1805                 case "\$silent-\$rp" in
1806                 true-) ;;
1807                 *) echo " " >&4;;
1808                 esac;;
1809         esac;;
1810 *) case "\$silent" in
1811         true) case "\$rp" in
1812                 '') ans='';;
1813                 esac;;
1814         esac;;
1815 esac
1816 while expr "X\$ans" : "X!" >/dev/null; do
1817         read answ
1818         set x \$xxxm
1819         shift
1820         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1821         case  "\$answ" in
1822         "!")
1823                 sh 1>&4
1824                 echo " "
1825                 $myecho
1826                 ;;
1827         !*)
1828                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1829                 shift
1830                 sh 1>&4 -c "\$*"
1831                 echo " "
1832                 $myecho
1833                 ;;
1834         "\$ans")
1835                 case "\$ans" in
1836                 \\&*)
1837                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1838                         shift
1839                         case "\$1" in
1840                         -d)
1841                                 fastread=yes
1842                                 echo "(OK, I'll run with -d after this question.)" >&4
1843                                 ;;
1844                         -*)
1845                                 echo "*** Sorry, \$1 not supported yet." >&4
1846                                 ;;
1847                         esac
1848                         $myecho
1849                         ans=!
1850                         ;;
1851                 esac;;
1852         *)
1853                 case "\$aok" in
1854                 y)
1855                         echo "*** Substitution done -- please confirm."
1856                         xxxm="\$ans"
1857                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1858                         xxxm="\$ans"
1859                         ans=!
1860                         ;;
1861                 *)
1862                         echo "*** Error -- try again."
1863                         ans=!
1864                         ;;
1865                 esac
1866                 $myecho
1867                 ;;
1868         esac
1869         case "\$ans\$xxxm\$nostick" in
1870         '')
1871                 ans=!
1872                 $myecho
1873                 ;;
1874         esac
1875 done
1876 case "\$ans" in
1877 '') ans="\$xxxm";;
1878 esac
1879 EOSC
1880
1881 : create .config dir to save info across Configure sessions
1882 test -d ../.config || mkdir ../.config
1883 cat >../.config/README <<EOF
1884 This directory created by Configure to save information that should
1885 persist across sessions for $package.
1886
1887 You may safely delete it if you wish.
1888 EOF
1889
1890 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1891 case "$usedevel" in
1892 $define|true|[yY]*) ;;
1893 *) case "$xversion" in
1894    *[13579])
1895         cat >&4 <<EOH
1896 *** WHOA THERE!!! ***
1897
1898     This is an UNSTABLE DEVELOPMENT release.
1899     The version of this $package distribution is $xversion, that is, odd,
1900     (as opposed to even) and that signifies a development release.
1901     If you want a maintenance release, you want an even-numbered version.
1902
1903     Do ***NOT*** install this into production use.
1904     Data corruption and crashes are possible.
1905
1906     It is most seriously suggested that you do not continue any further
1907     unless you want to help in developing and debugging Perl.
1908
1909     If you *still* want to build perl, you can answer 'y' now,
1910     or pass -Dusedevel to Configure.
1911
1912 EOH
1913         rp='Do you really want to continue?'
1914         dflt='n'
1915         . ./myread
1916         case "$ans" in
1917         [yY]) echo >&4 "Okay, continuing."
1918               usedevel="$define" ;;
1919         *) echo >&4 "Okay, bye."
1920            exit 1
1921            ;;
1922         esac
1923         ;;
1924     esac
1925     ;;
1926 esac
1927 case "$usedevel" in
1928 $define|true|[yY]*)
1929         case "$versiononly" in
1930         '') versiononly="$define" ;;
1931         esac
1932         case "$installusrbinperl" in
1933         '') installusrbinperl="$undef" ;;
1934         esac
1935         ;;
1936 esac
1937
1938 : general instructions
1939 needman=true
1940 firsttime=true
1941 user=`(logname) 2>/dev/null`
1942 case "$user" in
1943 '') user=`whoami 2>&1`;;
1944 esac
1945 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1946         firsttime=false
1947         echo " "
1948         rp='Would you like to see the instructions?'
1949         dflt=n
1950         . ./myread
1951         case "$ans" in
1952         [yY]*) ;;
1953         *) needman=false;;
1954         esac
1955 fi
1956 if $needman; then
1957         cat <<EOH
1958
1959 This installation shell script will examine your system and ask you questions
1960 to determine how the perl5 package should be installed. If you get
1961 stuck on a question, you may use a ! shell escape to start a subshell or
1962 execute a command.  Many of the questions will have default answers in square
1963 brackets; typing carriage return will give you the default.
1964
1965 On some of the questions which ask for file or directory names you are allowed
1966 to use the ~name construct to specify the login directory belonging to "name",
1967 even if you don't have a shell which knows about that.  Questions where this is
1968 allowed will be marked "(~name ok)".
1969
1970 EOH
1971         rp=''
1972         dflt='Type carriage return to continue'
1973         . ./myread
1974         cat <<'EOH'
1975
1976 The prompter used in this script allows you to use shell variables and
1977 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1978 in the default answer, as if the default line was a set of arguments given to a
1979 script shell.  This means you may also use $* to repeat the whole default line,
1980 so you do not have to re-type everything to add something to the default.
1981
1982 Everytime there is a substitution, you will have to confirm.  If there is an
1983 error (e.g. an unmatched backtick), the default answer will remain unchanged
1984 and you will be prompted again.
1985
1986 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1987 the questions and use the computed defaults (or the previous answers if there
1988 was already a config.sh file). Type 'Configure -h' for a list of options.
1989 You may also start interactively and then answer '& -d' at any prompt to turn
1990 on the non-interactive behaviour for the remainder of the execution.
1991
1992 EOH
1993         . ./myread
1994         cat <<EOH
1995
1996 Much effort has been expended to ensure that this shell script will run on any
1997 Unix system.  If despite that it blows up on yours, your best bet is to edit
1998 Configure and run it again.  If you can't run Configure for some reason,
1999 you'll have to generate a config.sh file by hand.  Whatever problems you
2000 have, let me (perlbug@perl.org) know how I blew it.
2001
2002 This installation script affects things in two ways:
2003
2004 1) it may do direct variable substitutions on some of the files included
2005    in this kit.
2006 2) it builds a config.h file for inclusion in C programs.  You may edit
2007    any of these files as the need arises after running this script.
2008
2009 If you make a mistake on a question, there is no easy way to back up to it
2010 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2011 files.  Configure will offer to let you do this before it runs the SH files.
2012
2013 EOH
2014         dflt='Type carriage return to continue'
2015         . ./myread
2016         case "$firsttime" in
2017         true) echo $user >>../.config/instruct;;
2018         esac
2019 fi
2020
2021 : find out where common programs are
2022 echo " "
2023 echo "Locating common programs..." >&4
2024 cat <<EOSC >loc
2025 $startsh
2026 case \$# in
2027 0) exit 1;;
2028 esac
2029 thing=\$1
2030 shift
2031 dflt=\$1
2032 shift
2033 for dir in \$*; do
2034         case "\$thing" in
2035         .)
2036         if test -d \$dir/\$thing; then
2037                 echo \$dir
2038                 exit 0
2039         fi
2040         ;;
2041         *)
2042         for thisthing in \$dir/\$thing; do
2043                 : just loop through to pick last item
2044         done
2045         if test -f \$thisthing; then
2046                 echo \$thisthing
2047                 exit 0
2048         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2049                 echo \$thisthing
2050                 exit 0
2051         elif test -f \$dir/\$thing.exe; then
2052                 if test -n "$DJGPP"; then
2053                         echo \$dir/\$thing.exe
2054                 else
2055                         : on Eunice apparently
2056                         echo \$dir/\$thing
2057                 fi
2058                 exit 0
2059         fi
2060         ;;
2061         esac
2062 done
2063 echo \$dflt
2064 exit 1
2065 EOSC
2066 chmod +x loc
2067 $eunicefix loc
2068 loclist="
2069 awk
2070 cat
2071 chmod
2072 comm
2073 cp
2074 echo
2075 expr
2076 grep
2077 ls
2078 mkdir
2079 rm
2080 sed
2081 sort
2082 touch
2083 tr
2084 uniq
2085 "
2086 trylist="
2087 Mcc
2088 ar
2089 bison
2090 byacc
2091 cpp
2092 csh
2093 date
2094 egrep
2095 gmake
2096 gzip
2097 less
2098 ln
2099 make
2100 more
2101 nm
2102 nroff
2103 pg
2104 test
2105 uname
2106 zip
2107 "
2108 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2109 pth="$pth /lib /usr/lib"
2110 for file in $loclist; do
2111         eval xxx=\$$file
2112         case "$xxx" in
2113         /*|?:[\\/]*)
2114                 if test -f "$xxx"; then
2115                         : ok
2116                 else
2117                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2118                         xxx=`./loc $file $file $pth`
2119                 fi
2120                 ;;
2121         '') xxx=`./loc $file $file $pth`;;
2122         *) xxx=`./loc $xxx $xxx $pth`;;
2123         esac
2124         eval $file=$xxx$_exe
2125         eval _$file=$xxx
2126         case "$xxx" in
2127         /*)
2128                 echo $file is in $xxx.
2129                 ;;
2130         ?:[\\/]*)
2131                 echo $file is in $xxx.
2132                 ;;
2133         *)
2134                 echo "I don't know where '$file' is, and my life depends on it." >&4
2135                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2136                 exit 1
2137                 ;;
2138         esac
2139 done
2140 echo " "
2141 echo "Don't worry if any of the following aren't found..."
2142 say=offhand
2143 for file in $trylist; do
2144         eval xxx=\$$file
2145         case "$xxx" in
2146         /*|?:[\\/]*)
2147                 if test -f "$xxx"; then
2148                         : ok
2149                 else
2150                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2151                         xxx=`./loc $file $file $pth`
2152                 fi
2153                 ;;
2154         '') xxx=`./loc $file $file $pth`;;
2155         *) xxx=`./loc $xxx $xxx $pth`;;
2156         esac
2157         eval $file=$xxx$_exe
2158         eval _$file=$xxx
2159         case "$xxx" in
2160         /*)
2161                 echo $file is in $xxx.
2162                 ;;
2163         ?:[\\/]*)
2164                 echo $file is in $xxx.
2165                 ;;
2166         *)
2167                 echo "I don't see $file out there, $say."
2168                 say=either
2169                 ;;
2170         esac
2171 done
2172 case "$egrep" in
2173 egrep)
2174         echo "Substituting grep for egrep."
2175         egrep=$grep
2176         _egrep=$grep
2177         ;;
2178 esac
2179 case "$ln" in
2180 ln)
2181         echo "Substituting cp for ln."
2182         ln=$cp
2183         _ln=$cp
2184         ;;
2185 esac
2186 case "$make" in
2187 make)   
2188         case "$gmake" in
2189         gmake)
2190         echo "I can't find make or gmake, and my life depends on it." >&4
2191         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2192         exit 1
2193         ;;
2194         esac
2195         ;;
2196 esac    
2197 case "$gmake" in
2198 gmake)  ;;
2199 *)      # We can't have osname yet.
2200         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2201                 # Assume that gmake, if found, is definitely GNU make
2202                 # and prefer it over the system make.
2203                 echo "Substituting gmake for make."
2204                 make=$gmake
2205                 _make=$gmake
2206         fi
2207         ;;
2208 esac
2209 case "$test" in
2210 test)
2211         echo "Hopefully test is built into your sh."
2212         ;;
2213 *)
2214         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2215                 echo "Using the test built into your sh."
2216                 test=test
2217                 _test=test
2218         fi
2219         ;;
2220 esac
2221 case "$echo" in
2222 echo)
2223         echo "Hopefully echo is built into your sh."
2224         ;;
2225 '') ;;
2226 *)
2227         echo " "
2228 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2229         $echo $n "hi there$c" >foo1
2230         echo $n "hi there$c" >foo2
2231         if cmp foo1 foo2 >/dev/null 2>&1; then
2232                 echo "They are compatible.  In fact, they may be identical."
2233         else
2234                 case "$n" in
2235                 '-n') n='' c='\c';;
2236                 *) n='-n' c='';;
2237                 esac
2238                 cat <<FOO
2239 They are not compatible!  You are probably running ksh on a non-USG system.
2240 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2241 have echo built in and we may have to run some Bourne shell scripts.  That
2242 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2243
2244 FOO
2245                 $echo $n "The star should be here-->$c"
2246                 $echo "*"
2247         fi
2248         $rm -f foo1 foo2
2249         ;;
2250 esac
2251
2252 cat <<EOS >trygcc
2253 $startsh
2254 EOS
2255 cat <<'EOSC' >>trygcc
2256 case "$cc" in
2257 '') ;;
2258 *)  $rm -f try try.*
2259     $cat >try.c <<EOM
2260 int main(int argc, char *argv[]) {
2261   return 0;
2262 }
2263 EOM
2264     if $cc -o try $ccflags $ldflags try.c; then
2265        :
2266     else
2267         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2268         despair=yes
2269         trygcc=yes
2270         case "$cc" in
2271         *gcc*) trygcc=no ;;
2272         esac
2273         case "`$cc -v -c try.c 2>&1`" in
2274         *gcc*) trygcc=no ;;
2275         esac
2276         if $test X"$trygcc" = Xyes; then
2277             if gcc -o try -c try.c; then
2278                 echo " "
2279                 echo "You seem to have a working gcc, though." >&4
2280                 rp="Would you like to use it?"
2281                 dflt=y
2282                 if $test -f myread; then
2283                     . ./myread
2284                 else
2285                     if $test -f UU/myread; then
2286                         . ./UU/myread
2287                     else
2288                         echo "Cannot find myread, sorry.  Aborting." >&2
2289                         exit 1
2290                     fi
2291                 fi  
2292                 case "$ans" in
2293                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2294                 esac
2295             fi
2296         fi
2297     fi
2298     $rm -f try try.*
2299     ;;
2300 esac
2301 EOSC
2302
2303 cat <<EOS >checkcc
2304 $startsh
2305 EOS
2306 cat <<'EOSC' >>checkcc
2307 case "$cc" in        
2308 '') ;;
2309 *)  $rm -f try try.*              
2310     $cat >try.c <<EOM
2311 int main(int argc, char *argv[]) {
2312   return 0;
2313 }
2314 EOM
2315     if $cc -o try $ccflags $ldflags try.c; then
2316        :
2317     else
2318         if $test X"$despair" = Xyes; then
2319            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2320         fi
2321         $cat >&4 <<EOM         
2322 You need to find a working C compiler.
2323 Either (purchase and) install the C compiler supplied by your OS vendor,
2324 or for a free C compiler try http://gcc.gnu.org/
2325 I cannot continue any further, aborting.
2326 EOM
2327         exit 1
2328     fi
2329     $rm -f try try.*
2330     ;;
2331 esac
2332 EOSC
2333
2334 : determine whether symbolic links are supported
2335 echo " "
2336 $touch blurfl
2337 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2338         echo "Symbolic links are supported." >&4
2339         lns="$ln -s"
2340 else
2341         echo "Symbolic links are NOT supported." >&4
2342         lns="$ln"
2343 fi
2344 $rm -f blurfl sym
2345
2346 : determine whether symbolic links are supported
2347 echo " "
2348 case "$lns" in
2349 *"ln"*" -s")
2350         echo "Checking how to test for symbolic links..." >&4
2351         $lns blurfl sym
2352         if $test "X$issymlink" = X; then
2353                 case "$newsh" in
2354                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2355                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2356                 esac
2357                 if test $? = 0; then
2358                         issymlink="test -h"
2359                 else
2360                         echo "Your builtin 'test -h' may be broken." >&4
2361                         case "$test" in
2362                         /*)     ;;
2363                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2364                                 for p in $pth
2365                                 do
2366                                         if test -f "$p/$test"; then
2367                                                 test="$p/$test"
2368                                                 break
2369                                         fi
2370                                 done
2371                                 ;;
2372                         esac
2373                         case "$test" in
2374                         /*)
2375                                 echo "Trying external '$test -h'." >&4
2376                                 issymlink="$test -h"
2377                                 if $test ! -h sym >/dev/null 2>&1; then
2378                                         echo "External '$test -h' is broken, too." >&4
2379                                         issymlink=''
2380                                 fi
2381                                 ;;
2382                         *)      issymlink='' ;;
2383                         esac
2384                 fi              
2385         fi
2386         if $test "X$issymlink" = X; then
2387                 if $test -L sym 2>/dev/null; then
2388                         issymlink="$test -L"
2389                         echo "The builtin '$test -L' worked." >&4
2390                 fi
2391         fi
2392         if $test "X$issymlink" != X; then
2393                 echo "You can test for symbolic links with '$issymlink'." >&4
2394         else
2395                 echo "I do not know how you can test for symbolic links." >&4
2396         fi
2397         $rm -f blurfl sym
2398         ;;
2399 *)      echo "No symbolic links, so not testing for their testing..." >&4
2400         ;;
2401 esac
2402 echo " "
2403
2404
2405 case "$mksymlinks" in
2406 $define|true|[yY]*)
2407         case "$src" in
2408         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2409                 exit 1
2410                 ;;
2411         *)      case "$lns:$issymlink" in
2412                 *"ln"*" -s:"*"test -"?)
2413                         echo "Creating the symbolic links..." >&4
2414                         echo "(First creating the subdirectories...)" >&4
2415                         cd ..
2416                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2417                                 read directory
2418                                 test -z "$directory" && break
2419                                 mkdir -p $directory
2420                         done
2421                         # Sanity check 1.
2422                         if test ! -d t/base; then
2423                                 echo "Failed to create the subdirectories.  Aborting." >&4
2424                                 exit 1
2425                         fi
2426                         echo "(Then creating the symlinks...)" >&4
2427                         awk '{print $1}' $src/MANIFEST | while true; do
2428                                 read filename
2429                                 test -z "$filename" && break
2430                                 if test -f $filename; then
2431                                         if $issymlink $filename; then
2432                                                 rm -f $filename
2433                                         fi
2434                                 fi
2435                                 if test -f $filename; then
2436                                         echo "$filename already exists, not symlinking."
2437                                 else
2438                                         ln -s $src/$filename $filename
2439                                 fi
2440                         done
2441                         # Sanity check 2.
2442                         if test ! -f t/base/lex.t; then
2443                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2444                                 exit 1
2445                         fi
2446                         cd UU
2447                         ;;
2448                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2449                         ;;
2450                 esac
2451                 ;;
2452         esac
2453         ;;
2454 esac
2455
2456
2457 case "$usecrosscompile" in
2458 $define|true|[yY]*)
2459         $echo "Cross-compiling..."
2460         croak=''
2461         case "$cc" in
2462         *-*-gcc) # A cross-compiling gcc, probably.
2463             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2464             ar=$targetarch-ar
2465             # leave out ld, choosing it is more complex
2466             nm=$targetarch-nm
2467             ranlib=$targetarch-ranlib
2468             $echo 'extern int foo;' > try.c
2469             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2470             shift
2471             if $test $# -gt 0; then
2472                 incpth="$incpth $*"
2473                 incpth="`$echo $incpth|$sed 's/^ //'`"
2474                 echo "Guessing incpth '$incpth'." >&4
2475                 for i in $*; do
2476                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2477                     if $test -d $j; then
2478                         libpth="$libpth $j"
2479                     fi
2480                 done   
2481                 libpth="`$echo $libpth|$sed 's/^ //'`"
2482                 echo "Guessing libpth '$libpth'." >&4
2483             fi
2484             $rm -f try.c
2485             ;;
2486         esac
2487         case "$targetarch" in
2488         '') echo "Targetarch not defined." >&4; croak=y ;;
2489         *)  echo "Using targetarch $targetarch." >&4 ;;
2490         esac
2491         case "$incpth" in
2492         '') echo "Incpth not defined." >&4; croak=y ;;
2493         *)  echo "Using incpth '$incpth'." >&4 ;;
2494         esac
2495         case "$libpth" in
2496         '') echo "Libpth not defined." >&4; croak=y ;;
2497         *)  echo "Using libpth '$libpth'." >&4 ;;
2498         esac
2499         case "$usrinc" in
2500         '') for i in $incpth; do
2501                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2502                     usrinc=$i
2503                     echo "Guessing usrinc $usrinc." >&4
2504                     break
2505                 fi
2506             done
2507             case "$usrinc" in
2508             '') echo "Usrinc not defined." >&4; croak=y ;;
2509             esac
2510             ;;
2511         *)  echo "Using usrinc $usrinc." >&4 ;;
2512         esac
2513         case "$targethost" in
2514         '') echo "Targethost not defined." >&4; croak=y ;;
2515         *)  echo "Using targethost $targethost." >&4
2516         esac
2517         locincpth=' '
2518         loclibpth=' '
2519         case "$croak" in
2520         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2521         esac
2522         case "$src" in
2523         /*) run=$src/Cross/run
2524             targetmkdir=$src/Cross/mkdir
2525             to=$src/Cross/to
2526             from=$src/Cross/from
2527             ;;
2528         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2529             run=$pwd/Cross/run
2530             targetmkdir=$pwd/Cross/mkdir
2531             to=$pwd/Cross/to
2532             from=$pwd/Cross/from
2533             ;;
2534         esac
2535         case "$targetrun" in
2536         '') targetrun=ssh ;;
2537         esac
2538         case "$targetto" in
2539         '') targetto=scp ;;
2540         esac
2541         case "$targetfrom" in
2542         '') targetfrom=scp ;;
2543         esac
2544         run=$run-$targetrun
2545         to=$to-$targetto
2546         from=$from-$targetfrom
2547         case "$targetdir" in
2548         '')  targetdir=/tmp
2549              echo "Guessing targetdir $targetdir." >&4
2550              ;;
2551         esac
2552         case "$targetuser" in
2553         '')  targetuser=root
2554              echo "Guessing targetuser $targetuser." >&4
2555              ;;
2556         esac
2557         case "$targetfrom" in
2558         scp)    q=-q ;;
2559         *)      q='' ;;
2560         esac
2561         case "$targetrun" in
2562         ssh|rsh)
2563             cat >$run <<EOF
2564 #!/bin/sh
2565 case "\$1" in
2566 -cwd)
2567   shift
2568   cwd=\$1
2569   shift
2570   ;;
2571 esac
2572 case "\$cwd" in
2573 '') cwd=$targetdir ;;
2574 esac
2575 exe=\$1
2576 shift
2577 if $test ! -f \$exe.xok; then
2578   $to \$exe
2579   $touch \$exe.xok
2580 fi
2581 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2582 EOF
2583             ;;
2584         *)  echo "Unknown targetrun '$targetrun'" >&4
2585             exit 1
2586             ;;
2587         esac
2588         case "$targetmkdir" in
2589         */Cross/mkdir)
2590             cat >$targetmkdir <<EOF
2591 #!/bin/sh
2592 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2593 EOF
2594             $chmod a+rx $targetmkdir
2595             ;;
2596         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2597             exit 1
2598             ;;
2599         esac
2600         case "$targetto" in
2601         scp|rcp)
2602             cat >$to <<EOF
2603 #!/bin/sh
2604 for f in \$@
2605 do
2606   case "\$f" in
2607   /*)
2608     $targetmkdir \`dirname \$f\`
2609     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2610     ;;
2611   *)
2612     $targetmkdir $targetdir/\`dirname \$f\`
2613     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2614     ;;
2615   esac
2616 done
2617 exit 0
2618 EOF
2619             ;;
2620         cp) cat >$to <<EOF
2621 #!/bin/sh
2622 for f in \$@
2623 do
2624   case "\$f" in
2625   /*)
2626     $mkdir -p $targetdir/\`dirname \$f\`
2627     $cp \$f $targetdir/\$f || exit 1
2628     ;;
2629   *)
2630     $targetmkdir $targetdir/\`dirname \$f\`
2631     $cp \$f $targetdir/\$f || exit 1
2632     ;;
2633   esac
2634 done
2635 exit 0
2636 EOF
2637             ;;
2638         *)  echo "Unknown targetto '$targetto'" >&4
2639             exit 1
2640             ;;
2641         esac
2642         case "$targetfrom" in
2643         scp|rcp)
2644           cat >$from <<EOF
2645 #!/bin/sh
2646 for f in \$@
2647 do
2648   $rm -f \$f
2649   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2650 done
2651 exit 0
2652 EOF
2653             ;;
2654         cp) cat >$from <<EOF
2655 #!/bin/sh
2656 for f in \$@
2657 do
2658   $rm -f \$f
2659   cp $targetdir/\$f . || exit 1
2660 done
2661 exit 0
2662 EOF
2663             ;;
2664         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2665             exit 1
2666             ;;
2667         esac
2668         if $test ! -f $run; then
2669             echo "Target 'run' script '$run' not found." >&4
2670         else
2671             $chmod a+rx $run
2672         fi
2673         if $test ! -f $to; then
2674             echo "Target 'to' script '$to' not found." >&4
2675         else
2676             $chmod a+rx $to
2677         fi
2678         if $test ! -f $from; then
2679             echo "Target 'from' script '$from' not found." >&4
2680         else
2681             $chmod a+rx $from
2682         fi
2683         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2684             exit 1
2685         fi
2686         cat >&4 <<EOF
2687 Using '$run' for remote execution,
2688 and '$from' and '$to'
2689 for remote file transfer.
2690 EOF
2691         ;;
2692 *)      run=''
2693         to=:
2694         from=:
2695         usecrosscompile='undef'
2696         targetarch=''
2697         ;;
2698 esac
2699
2700 : see whether [:lower:] and [:upper:] are supported character classes
2701 echo " "
2702 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2703 ABYZ)
2704         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2705         up='[:upper:]'
2706         low='[:lower:]'
2707         ;;
2708 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2709         # (0xc9 and 0xd1), therefore that is a nice testing point.
2710         if test "X$up" = X -o "X$low" = X; then
2711             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2712             ij) up='[A-Z]'
2713                 low='[a-z]'
2714                 ;;
2715             esac
2716         fi
2717         if test "X$up" = X -o "X$low" = X; then
2718             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2719             ij) up='A-Z'
2720                 low='a-z'
2721                 ;;
2722             esac
2723         fi
2724         if test "X$up" = X -o "X$low" = X; then
2725             case "`echo IJ | od -x 2>/dev/null`" in
2726             *C9D1*|*c9d1*)
2727                 echo "Hey, this might be EBCDIC." >&4
2728                 if test "X$up" = X -o "X$low" = X; then
2729                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2730                     ij) up='[A-IJ-RS-Z]'
2731                         low='[a-ij-rs-z]'
2732                         ;;
2733                     esac
2734                 fi
2735                 if test "X$up" = X -o "X$low" = X; then
2736                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2737                     ij) up='A-IJ-RS-Z'
2738                         low='a-ij-rs-z'
2739                         ;;
2740                     esac
2741                 fi
2742                 ;;
2743             esac
2744         fi
2745 esac
2746 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2747 ij)
2748     echo "Using $up and $low to convert case." >&4
2749     ;;
2750 *)
2751     echo "I don't know how to translate letters from upper to lower case." >&4
2752     echo "Your tr is not acting any way I know of." >&4
2753     exit 1
2754     ;;
2755 esac
2756 : set up the translation script tr, must be called with ./tr of course
2757 cat >tr <<EOSC
2758 $startsh
2759 case "\$1\$2" in
2760 '[A-Z][a-z]') exec $tr '$up' '$low';;
2761 '[a-z][A-Z]') exec $tr '$low' '$up';;
2762 esac
2763 exec $tr "\$@"
2764 EOSC
2765 chmod +x tr
2766 $eunicefix tr
2767
2768 : Try to determine whether config.sh was made on this system
2769 case "$config_sh" in
2770 '')
2771 myuname=`$uname -a 2>/dev/null`
2772 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2773 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2774 # because the A-Z/a-z are not consecutive.
2775 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2776         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2777 newmyuname="$myuname"
2778 dflt=n
2779 case "$knowitall" in
2780 '')
2781         if test -f ../config.sh; then
2782                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2783                         eval "`grep myuname= ../config.sh`"
2784                 fi
2785                 if test "X$myuname" = "X$newmyuname"; then
2786                         dflt=y
2787                 fi
2788         fi
2789         ;;
2790 *) dflt=y;;
2791 esac
2792
2793 : Get old answers from old config file if Configure was run on the
2794 : same system, otherwise use the hints.
2795 hint=default
2796 cd ..
2797 if test -f config.sh; then
2798         echo " "
2799         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2800         . UU/myread
2801         case "$ans" in
2802         n*|N*) echo "OK, I'll ignore it."
2803                 mv config.sh config.sh.old
2804                 myuname="$newmyuname"
2805                 ;;
2806         *)  echo "Fetching default answers from your old config.sh file..." >&4
2807                 tmp_n="$n"
2808                 tmp_c="$c"
2809                 tmp_sh="$sh"
2810                 . ./config.sh
2811                 cp config.sh UU
2812                 n="$tmp_n"
2813                 c="$tmp_c"
2814                 : Older versions did not always set $sh.  Catch re-use of such
2815                 : an old config.sh.
2816                 case "$sh" in
2817                 '') sh="$tmp_sh" ;;
2818                 esac
2819                 hint=previous
2820                 ;;
2821         esac
2822 fi
2823 . ./UU/checkcc
2824 if test ! -f config.sh; then
2825         $cat <<EOM
2826
2827 First time through, eh?  I have some defaults handy for some systems
2828 that need some extra help getting the Configure answers right:
2829
2830 EOM
2831         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2832         dflt=''
2833         : Half the following guesses are probably wrong... If you have better
2834         : tests or hints, please send them to perlbug@perl.org
2835         : The metaconfig authors would also appreciate a copy...
2836         $test -f /irix && osname=irix
2837         $test -f /xenix && osname=sco_xenix
2838         $test -f /dynix && osname=dynix
2839         $test -f /dnix && osname=dnix
2840         $test -f /lynx.os && osname=lynxos
2841         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2842         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2843         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2844         $test -f /bin/mips && /bin/mips && osname=mips
2845         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2846                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2847         $test -d /usr/apollo/bin && osname=apollo
2848         $test -f /etc/saf/_sactab && osname=svr4
2849         $test -d /usr/include/minix && osname=minix
2850         $test -f /system/gnu_library/bin/ar.pm && osname=vos
2851         if $test -d /MachTen -o -d /MachTen_Folder; then
2852                 osname=machten
2853                 if $test -x /sbin/version; then
2854                         osvers=`/sbin/version | $awk '{print $2}' |
2855                         $sed -e 's/[A-Za-z]$//'`
2856                 elif $test -x /usr/etc/version; then
2857                         osvers=`/usr/etc/version | $awk '{print $2}' |
2858                         $sed -e 's/[A-Za-z]$//'`
2859                 else
2860                         osvers="$2.$3"
2861                 fi
2862         fi
2863
2864         $test -f /sys/posix.dll &&
2865                 $test -f /usr/bin/what &&
2866                 set X `/usr/bin/what /sys/posix.dll` &&
2867                 $test "$3" = UWIN &&
2868                 osname=uwin &&
2869                 osvers="$5"
2870
2871         if $test -f $uname; then
2872                 set X $myuname
2873                 shift
2874
2875                 case "$5" in
2876                 fps*) osname=fps ;;
2877                 mips*)
2878                         case "$4" in
2879                         umips) osname=umips ;;
2880                         *) osname=mips ;;
2881                         esac;;
2882                 [23]100) osname=mips ;;
2883                 next*) osname=next ;;
2884                 i386*)
2885                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2886                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2887                                 osname='sco'
2888                                 osvers=$tmp
2889                         elif $test -f /etc/kconfig; then
2890                                 osname=isc
2891                                 if test "$lns" = "$ln -s"; then
2892                                         osvers=4
2893                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2894                                         osvers=3
2895                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2896                                         osvers=2
2897                                 fi
2898                         fi
2899                         tmp=''
2900                         ;;
2901                 pc*)
2902                         if test -n "$DJGPP"; then
2903                                 osname=dos
2904                                 osvers=djgpp
2905                         fi
2906                         ;;
2907                 esac
2908
2909                 case "$1" in
2910                 aix) osname=aix
2911                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2912                         case "$tmp" in
2913                         'not found') osvers="$4"."$3" ;;
2914                         '<3240'|'<>3240') osvers=3.2.0 ;;
2915                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2916                         '=3250'|'>3250') osvers=3.2.5 ;;
2917                         *) osvers=$tmp;;
2918                         esac
2919                         ;;
2920                 bsd386) osname=bsd386
2921                         osvers=`$uname -r`
2922                         ;;
2923                 cygwin*) osname=cygwin
2924                         osvers="$3"
2925                         ;;
2926                 *dc.osx) osname=dcosx
2927                         osvers="$3"
2928                         ;;
2929                 dnix) osname=dnix
2930                         osvers="$3"
2931                         ;;
2932                 domainos) osname=apollo
2933                         osvers="$3"
2934                         ;;
2935                 dgux) osname=dgux 
2936                         osvers="$3"
2937                         ;;
2938                 dynixptx*) osname=dynixptx
2939                         osvers=`echo "$4"|sed 's/^v//'`
2940                         ;;
2941                 freebsd) osname=freebsd 
2942                         osvers="$3" ;;
2943                 genix) osname=genix ;;
2944                 hp*) osname=hpux 
2945                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2946                         ;;
2947                 irix*) osname=irix
2948                         case "$3" in
2949                         4*) osvers=4 ;;
2950                         5*) osvers=5 ;;
2951                         *)      osvers="$3" ;;
2952                         esac
2953                         ;;
2954                 linux) osname=linux
2955                         case "$3" in
2956                         *)      osvers="$3" ;;
2957                         esac
2958                         ;;
2959                 MiNT) osname=mint
2960                         ;;
2961                 netbsd*) osname=netbsd
2962                         osvers="$3"
2963                         ;;
2964                 news-os) osvers="$3"
2965                         case "$3" in
2966                         4*) osname=newsos4 ;;
2967                         *) osname=newsos ;;
2968                         esac
2969                         ;;
2970                 next*) osname=next ;;
2971                 nonstop-ux) osname=nonstopux ;;
2972                 POSIX-BC | posix-bc ) osname=posix-bc
2973                         osvers="$3"
2974                         ;;
2975                 powerux | power_ux | powermax_os | powermaxos | \
2976                 powerunix | power_unix) osname=powerux
2977                         osvers="$3"
2978                         ;;
2979                 qnx) osname=qnx
2980                         osvers="$4"
2981                         ;;
2982                 solaris) osname=solaris
2983                         case "$3" in
2984                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2985                         *)      osvers="$3" ;;
2986                         esac
2987                         ;;
2988                 sunos) osname=sunos
2989                         case "$3" in
2990                         5*) osname=solaris
2991                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2992                         *)      osvers="$3" ;;
2993                         esac
2994                         ;;
2995                 titanos) osname=titanos
2996                         case "$3" in
2997                         1*) osvers=1 ;;
2998                         2*) osvers=2 ;;
2999                         3*) osvers=3 ;;
3000                         4*) osvers=4 ;;
3001                         *)      osvers="$3" ;;
3002                         esac
3003                         ;;
3004                 ultrix) osname=ultrix
3005                         osvers="$3"
3006                         ;;
3007                 osf1|mls+)      case "$5" in
3008                                 alpha)
3009                                         osname=dec_osf
3010                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3011                                         case "$osvers" in
3012                                         [1-9].[0-9]*) ;;
3013                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3014                                         esac
3015                                         ;;
3016                         hp*)    osname=hp_osf1  ;;
3017                         mips)   osname=mips_osf1 ;;
3018                         esac
3019                         ;;
3020                 unixware) osname=svr5
3021                         osvers="$4"
3022                         ;;
3023                 uts)    osname=uts
3024                         osvers="$3"
3025                         ;;
3026                 vos) osvers="$3"
3027                         ;;
3028                 $2) case "$osname" in
3029                         *isc*) ;;
3030                         *freebsd*) ;;
3031                         svr*)
3032                                 : svr4.x or possibly later
3033                                 case "svr$3" in 
3034                                 ${osname}*)
3035                                         osname=svr$3
3036                                         osvers=$4
3037                                         ;;
3038                                 esac
3039                                 case "$osname" in
3040                                 svr4.0)
3041                                         : Check for ESIX
3042                                         if test -f /stand/boot ; then
3043                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3044                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3045                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3046                                                         if test -n "$isesix"; then
3047                                                                 osname=esix4
3048                                                         fi
3049                                                 fi
3050                                         fi
3051                                         ;;
3052                                 esac
3053                                 ;;
3054                         *)      if test -f /etc/systemid; then
3055                                         osname=sco
3056                                         set `echo $3 | $sed 's/\./ /g'` $4
3057                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3058                                                 osvers=$1.$2.$3
3059                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3060                                                 osvers=$1.$2
3061                                         elif $test -f $src/hints/sco_$1.sh; then
3062                                                 osvers=$1
3063                                         fi
3064                                 else
3065                                         case "$osname" in
3066                                         '') : Still unknown.  Probably a generic Sys V.
3067                                                 osname="sysv"
3068                                                 osvers="$3"
3069                                                 ;;
3070                                         esac
3071                                 fi
3072                                 ;;
3073                         esac
3074                         ;;
3075                 *)      case "$osname" in
3076                         '') : Still unknown.  Probably a generic BSD.
3077                                 osname="$1"
3078                                 osvers="$3"
3079                                 ;;
3080                         esac
3081                         ;;
3082                 esac
3083         else
3084                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3085                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3086                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3087                                 osname=news_os
3088                         fi
3089                         $rm -f UU/kernel.what
3090                 elif test -d c:/.; then
3091                         set X $myuname
3092                         osname=os2
3093                         osvers="$5"
3094                 fi
3095         fi
3096         
3097         case "$targetarch" in
3098         '') ;;
3099         *)  hostarch=$osname
3100             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3101             osvers=''
3102             ;;
3103         esac
3104
3105         : Now look for a hint file osname_osvers, unless one has been
3106         : specified already.
3107         case "$hintfile" in
3108         ''|' ')
3109                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3110                 : Also try without trailing minor version numbers.
3111                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3112                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3113                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3114                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3115                 case "$file" in
3116                 '') dflt=none ;;
3117                 *)  case "$osvers" in
3118                         '') dflt=$file
3119                                 ;;
3120                         *)  if $test -f $src/hints/$file.sh ; then
3121                                         dflt=$file
3122                                 elif $test -f $src/hints/$xfile.sh ; then
3123                                         dflt=$xfile
3124                                 elif $test -f $src/hints/$xxfile.sh ; then
3125                                         dflt=$xxfile
3126                                 elif $test -f $src/hints/$xxxfile.sh ; then
3127                                         dflt=$xxxfile
3128                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3129                                         dflt=$xxxxfile
3130                                 elif $test -f "$src/hints/${osname}.sh" ; then
3131                                         dflt="${osname}"
3132                                 else
3133                                         dflt=none
3134                                 fi
3135                                 ;;
3136                         esac
3137                         ;;
3138                 esac
3139                 if $test -f Policy.sh ; then
3140                         case "$dflt" in
3141                         *Policy*) ;;
3142                         none) dflt="Policy" ;;
3143                         *) dflt="Policy $dflt" ;;
3144                         esac
3145                 fi
3146                 ;;
3147         *)
3148                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3149                 ;;
3150         esac
3151
3152         if $test -f Policy.sh ; then
3153                 $cat <<EOM
3154
3155 There's also a Policy hint file available, which should make the
3156 site-specific (policy) questions easier to answer.
3157 EOM
3158
3159         fi
3160
3161         $cat <<EOM
3162
3163 You may give one or more space-separated answers, or "none" if appropriate.
3164 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3165 is a good thing.  DO NOT give a wrong version or a wrong OS.
3166
3167 EOM
3168
3169         rp="Which of these apply, if any?"
3170         . UU/myread
3171         tans=$ans
3172         for file in $tans; do
3173                 if $test X$file = XPolicy -a -f Policy.sh; then
3174                         . Policy.sh
3175                         $cat Policy.sh >> UU/config.sh
3176                 elif $test -f $src/hints/$file.sh; then
3177                         . $src/hints/$file.sh
3178                         $cat $src/hints/$file.sh >> UU/config.sh
3179                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3180                         : nothing
3181                 else
3182                         : Give one chance to correct a possible typo.
3183                         echo "$file.sh does not exist"
3184                         dflt=$file
3185                         rp="hint to use instead?"
3186                         . UU/myread
3187                         for file in $ans; do
3188                                 if $test -f "$src/hints/$file.sh"; then
3189                                         . $src/hints/$file.sh
3190                                         $cat $src/hints/$file.sh >> UU/config.sh
3191                                 elif $test X$ans = X -o X$ans = Xnone ; then
3192                                         : nothing
3193                                 else
3194                                         echo "$file.sh does not exist -- ignored."
3195                                 fi
3196                         done
3197                 fi
3198         done
3199
3200         hint=recommended
3201         : Remember our hint file for later.
3202         if $test -f "$src/hints/$file.sh" ; then
3203                 hintfile="$file"
3204         else
3205                 hintfile=''
3206         fi
3207 fi
3208 cd UU
3209 ;;
3210 *)
3211         echo " "
3212         echo "Fetching default answers from $config_sh..." >&4
3213         tmp_n="$n"
3214         tmp_c="$c"
3215         cd ..
3216         cp $config_sh config.sh 2>/dev/null
3217         chmod +w config.sh
3218         . ./config.sh
3219         cd UU
3220         cp ../config.sh .
3221         n="$tmp_n"
3222         c="$tmp_c"
3223         hint=previous
3224         ;;
3225 esac
3226 test "$override" && . ./optdef.sh
3227
3228 : Restore computed paths
3229 for file in $loclist $trylist; do
3230         eval $file="\$_$file"
3231 done
3232
3233 cat << EOM
3234
3235 Configure uses the operating system name and version to set some defaults.
3236 The default value is probably right if the name rings a bell. Otherwise,
3237 since spelling matters for me, either accept the default or answer "none"
3238 to leave it blank.
3239
3240 EOM
3241 case "$osname" in
3242         ''|' ')
3243                 case "$hintfile" in
3244                 ''|' '|none) dflt=none ;;
3245                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3246                 esac
3247                 ;;
3248         *) dflt="$osname" ;;
3249 esac
3250 rp="Operating system name?"
3251 . ./myread
3252 case "$ans" in
3253 none)  osname='' ;;
3254 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3255 esac
3256 echo " "
3257 case "$osvers" in
3258         ''|' ')
3259                 case "$hintfile" in
3260                 ''|' '|none) dflt=none ;;
3261                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3262                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3263                         case "$dflt" in
3264                         ''|' ') dflt=none ;;
3265                         esac
3266                         ;;
3267                 esac
3268                 ;;
3269         *) dflt="$osvers" ;;
3270 esac
3271 rp="Operating system version?"
3272 . ./myread
3273 case "$ans" in
3274 none)  osvers='' ;;
3275 *) osvers="$ans" ;;
3276 esac
3277
3278
3279 . ./posthint.sh
3280
3281 : who configured the system
3282 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3283 cf_by=`(logname) 2>/dev/null`
3284 case "$cf_by" in
3285 "")
3286         cf_by=`(whoami) 2>/dev/null`
3287         case "$cf_by" in
3288         "") cf_by=unknown ;;
3289         esac ;;
3290 esac
3291
3292 : set up the script used to warn in case of inconsistency
3293 cat <<EOS >whoa
3294 $startsh
3295 EOS
3296 cat <<'EOSC' >>whoa
3297 dflt=y
3298 echo " "
3299 echo "*** WHOA THERE!!! ***" >&4
3300 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3301 rp="    Keep the $hint value?"
3302 . ./myread
3303 case "$ans" in
3304 y) td=$was; tu=$was;;
3305 esac
3306 EOSC
3307
3308 : function used to set $1 to $val
3309 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3310 case "$val$was" in
3311 $define$undef) . ./whoa; eval "$var=\$td";;
3312 $undef$define) . ./whoa; eval "$var=\$tu";;
3313 *) eval "$var=$val";;
3314 esac'
3315
3316 case "$usethreads" in
3317 $define|true|[yY]*)     dflt='y';;
3318 *) dflt='n';;
3319 esac
3320 cat <<EOM
3321
3322 Perl can be built to take advantage of threads on some systems.
3323 To do so, Configure can be run with -Dusethreads.
3324
3325 Note that threading is a highly experimental feature, and
3326 some known race conditions still remain.  If you choose to try
3327 it, be very sure to not actually deploy it for production
3328 purposes.  README.threads has more details, and is required
3329 reading if you enable threads.
3330
3331 If this doesn't make any sense to you, just accept the default '$dflt'.
3332 EOM
3333 rp='Build a threading Perl?'
3334 . ./myread
3335 case "$ans" in
3336 y|Y)    val="$define" ;;
3337 *)      val="$undef" ;;
3338 esac
3339 set usethreads
3340 eval $setvar
3341
3342 case "$usethreads" in
3343 $define)
3344         $cat <<EOM
3345
3346 As of 5.5.640, Perl has two different internal threading implementations,
3347 the 5.005 version (5005threads) and an interpreter-based version
3348 (ithreads) that has one interpreter per thread.  Both are very 
3349 experimental.  This arrangement exists to help developers work out
3350 which one is better.
3351
3352 If you're a casual user, you probably don't want interpreter-threads
3353 at this time.  But if you do, the 'threads' module allows their use,
3354 and the 'Thread' module offers an interface to both 5005threads and
3355 ithreads (whichever has been configured).
3356 EOM
3357         : Default to ithreads unless overridden on command line or with
3358         : old config.sh
3359         dflt='y'
3360         case "$use5005threads" in
3361                 $define|true|[yY]*) dflt='n';;
3362         esac
3363         case "$useithreads" in
3364                 $undef|false|[nN]*) dflt='n';;
3365         esac
3366         rp='Use interpreter-based ithreads?'
3367         . ./myread
3368         case "$ans" in
3369         y|Y)    val="$define" ;;
3370         *)      val="$undef" ;;
3371         esac
3372         set useithreads
3373         eval $setvar
3374         : Now set use5005threads to the opposite value.
3375         case "$useithreads" in
3376         $define) val="$undef" ;;
3377         *) val="$define" ;;
3378         esac
3379         set use5005threads
3380         eval $setvar
3381         ;;
3382 *)
3383         useithreads="$undef"
3384         use5005threads="$undef"
3385         ;;
3386 esac
3387
3388 case "$useithreads$use5005threads" in
3389 "$define$define")
3390         $cat >&4 <<EOM
3391
3392 You cannot have both the ithreads and the 5.005 threads enabled
3393 at the same time.  Disabling the 5.005 threads since they are
3394 much less stable than the ithreads.
3395
3396 EOM
3397         use5005threads="$undef"
3398         ;;
3399 esac
3400
3401 case "$d_oldpthreads" in
3402 '')     : Configure tests would be welcome here.  For now, assume undef.
3403         val="$undef" ;;
3404 *)      val="$d_oldpthreads" ;;
3405 esac
3406 set d_oldpthreads
3407 eval $setvar
3408
3409
3410 case "$usethreads" in
3411 "$define"|true|[yY]*)
3412 : Look for a hint-file generated 'call-back-unit'.  If the
3413 : user has specified that a threading perl is to be built,
3414 : we may need to set or change some other defaults.
3415         if $test -f usethreads.cbu; then
3416                 echo "Your platform has some specific hints for threaded builds, using them..."
3417                 . ./usethreads.cbu
3418         else
3419                 $cat <<EOM
3420 (Your platform doesn't have any specific hints for threaded builds.
3421  Assuming POSIX threads, then.)
3422 EOM
3423         fi
3424         ;;
3425 esac
3426
3427 cat <<EOM
3428
3429 Perl can be built so that multiple Perl interpreters can coexist
3430 within the same Perl executable.
3431 EOM
3432
3433 case "$useithreads" in
3434 $define)
3435         cat <<EOM
3436 This multiple interpreter support is required for interpreter-based threads.
3437 EOM
3438         val="$define"
3439         ;;
3440 *)      case "$usemultiplicity" in
3441         $define|true|[yY]*)     dflt='y';;
3442         *) dflt='n';;
3443         esac
3444         echo " "
3445         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3446         rp='Build Perl for multiplicity?'
3447         . ./myread
3448         case "$ans" in
3449         y|Y)    val="$define" ;;
3450         *)      val="$undef" ;;
3451         esac
3452         ;;
3453 esac
3454 set usemultiplicity
3455 eval $setvar
3456
3457
3458 case "$usemorebits" in
3459 "$define"|true|[yY]*)
3460         use64bitint="$define"
3461         uselongdouble="$define"
3462         usemorebits="$define"
3463         ;;
3464 *)      usemorebits="$undef"
3465         ;;
3466 esac
3467
3468 : make some quick guesses about what we are up against
3469 echo " "
3470 $echo $n "Hmm...  $c"
3471 echo exit 1 >bsd
3472 echo exit 1 >usg
3473 echo exit 1 >v7
3474 echo exit 1 >osf1
3475 echo exit 1 >eunice
3476 echo exit 1 >xenix
3477 echo exit 1 >venix
3478 echo exit 1 >os2
3479 d_bsd="$undef"
3480 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3481 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3482 then
3483         echo "Looks kind of like an OSF/1 system, but we'll see..."
3484         echo exit 0 >osf1
3485 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3486         xxx=`./loc addbib blurfl $pth`
3487         if $test -f $xxx; then
3488         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3489                 echo exit 0 >bsd
3490                 echo exit 0 >usg
3491         else
3492                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3493                         echo "Looks kind of like an extended USG system, but we'll see..."
3494                 else
3495                         echo "Looks kind of like a USG system, but we'll see..."
3496                 fi
3497                 echo exit 0 >usg
3498         fi
3499 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3500         echo "Looks kind of like a BSD system, but we'll see..."
3501         d_bsd="$define"
3502         echo exit 0 >bsd
3503 else
3504         echo "Looks kind of like a Version 7 system, but we'll see..."
3505         echo exit 0 >v7
3506 fi
3507 case "$eunicefix" in
3508 *unixtovms*)
3509         $cat <<'EOI'
3510 There is, however, a strange, musty smell in the air that reminds me of
3511 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3512 EOI
3513         echo exit 0 >eunice
3514         d_eunice="$define"
3515 : it so happens the Eunice I know will not run shell scripts in Unix format
3516         ;;
3517 *)
3518         echo " "
3519         echo "Congratulations.  You aren't running Eunice."
3520         d_eunice="$undef"
3521         ;;
3522 esac
3523 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3524 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3525 : semicolon as a patch separator
3526 case "$p_" in
3527 :) ;;
3528 *)
3529         $cat <<'EOI'
3530 I have the feeling something is not exactly right, however...don't tell me...
3531 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3532 (Or you may be running DOS with DJGPP.)
3533 EOI
3534         echo exit 0 >os2
3535         ;;
3536 esac
3537 if test -f /xenix; then
3538         echo "Actually, this looks more like a XENIX system..."
3539         echo exit 0 >xenix
3540         d_xenix="$define"
3541 else
3542         echo " "
3543         echo "It's not Xenix..."
3544         d_xenix="$undef"
3545 fi
3546 chmod +x xenix
3547 $eunicefix xenix
3548 if test -f /venix; then
3549         echo "Actually, this looks more like a VENIX system..."
3550         echo exit 0 >venix
3551 else
3552         echo " "
3553         if ./xenix; then
3554                 : null
3555         else
3556                 echo "Nor is it Venix..."
3557         fi
3558 fi
3559 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3560 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3561 $rm -f foo
3562
3563 case "$cc" in
3564 '') dflt=cc;;
3565 *) dflt="$cc";;
3566 esac
3567 rp="Use which C compiler?"
3568 . ./myread
3569 cc="$ans"
3570
3571 : See if they have not cc but they do have gcc
3572 . ./trygcc
3573 : Look for a hint-file generated 'call-back-unit'.  Now that the
3574 : user has specified the compiler, we may need to set or change some
3575 : other defaults.
3576 if $test -f cc.cbu; then
3577     . ./cc.cbu
3578 fi
3579 . ./checkcc
3580
3581 echo " "
3582 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3583 $cat >try.c <<EOM
3584 #include <stdio.h>
3585 int main() {
3586 #ifdef __GNUC__
3587 #ifdef __VERSION__
3588         printf("%s\n", __VERSION__);
3589 #else
3590         printf("%s\n", "1");
3591 #endif
3592 #endif
3593         exit(0);
3594 }
3595 EOM
3596 if $cc -o try $ccflags $ldflags try.c; then
3597         gccversion=`$run ./try`
3598         case "$gccversion" in
3599         '') echo "You are not using GNU cc." ;;
3600         *)  echo "You are using GNU cc $gccversion."
3601             ccname=gcc  
3602             ;;
3603         esac
3604 else
3605         echo " "
3606         echo "*** WHOA THERE!!! ***" >&4
3607         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3608         case "$knowitall" in
3609         '')
3610         echo "    You'd better start hunting for one and let me know about it." >&4
3611                 exit 1
3612                 ;;
3613         esac
3614 fi
3615 $rm -f try try.*
3616 case "$gccversion" in
3617 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3618 esac
3619 case "$gccversion" in
3620 '') gccosandvers='' ;;
3621 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3622    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3623    gccshortvers=''
3624    case "$gccosandvers" in
3625    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3626    $osname$osvers) ;; # looking good
3627    $osname*) cat <<EOM >&4
3628
3629 *** WHOA THERE!!! ***
3630
3631     Your gcc has not been compiled for the exact release of
3632     your operating system ($gccosandvers versus $osname$osvers).
3633
3634     In general it is a good idea to keep gcc synchronized with
3635     the operating system because otherwise serious problems
3636     may ensue when trying to compile software, like Perl.
3637
3638     I'm trying to be optimistic here, though, and will continue.
3639     If later during the configuration and build icky compilation
3640     problems appear (headerfile conflicts being the most common
3641     manifestation), I suggest reinstalling the gcc to match
3642     your operating system release.
3643
3644 EOM
3645       ;;
3646    *) gccosandvers='' ;; # failed to parse, better be silent
3647    esac
3648    ;;
3649 esac
3650 case "$ccname" in
3651 '') ccname="$cc" ;;
3652 esac
3653
3654
3655 : decide how portable to be.  Allow command line overrides.
3656 case "$d_portable" in
3657 "$undef") ;;
3658 *)      d_portable="$define" ;;
3659 esac
3660
3661 : set up shell script to do ~ expansion
3662 cat >filexp <<EOSS
3663 $startsh
3664 : expand filename
3665 case "\$1" in
3666  ~/*|~)
3667         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3668         ;;
3669  ~*)
3670         if $test -f /bin/csh; then
3671                 /bin/csh -f -c "glob \$1"
3672                 failed=\$?
3673                 echo ""
3674                 exit \$failed
3675         else
3676                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3677                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3678                 if $test ! -d "\$dir"; then
3679                         me=\`basename \$0\`
3680                         echo "\$me: can't locate home directory for: \$name" >&2
3681                         exit 1
3682                 fi
3683                 case "\$1" in
3684                 */*)
3685                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3686                         ;;
3687                 *)
3688                         echo \$dir
3689                         ;;
3690                 esac
3691         fi
3692         ;;
3693 *)
3694         echo \$1
3695         ;;
3696 esac
3697 EOSS
3698 chmod +x filexp
3699 $eunicefix filexp
3700
3701 : now set up to get a file name
3702 cat <<EOS >getfile
3703 $startsh
3704 EOS
3705 cat <<'EOSC' >>getfile
3706 tilde=''
3707 fullpath=''
3708 already=''
3709 skip=''
3710 none_ok=''
3711 exp_file=''
3712 nopath_ok=''
3713 orig_rp="$rp"
3714 orig_dflt="$dflt"
3715 case "$gfpth" in
3716 '') gfpth='.' ;;
3717 esac
3718
3719 case "$fn" in
3720 *\(*)
3721         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3722         fn=`echo $fn | sed 's/(.*)//'`
3723         ;;
3724 esac
3725
3726 case "$fn" in
3727 *:*)
3728         loc_file=`expr $fn : '.*:\(.*\)'`
3729         fn=`expr $fn : '\(.*\):.*'`
3730         ;;
3731 esac
3732
3733 case "$fn" in
3734 *~*) tilde=true;;
3735 esac
3736 case "$fn" in
3737 */*) fullpath=true;;
3738 esac
3739 case "$fn" in
3740 *+*) skip=true;;
3741 esac
3742 case "$fn" in
3743 *n*) none_ok=true;;
3744 esac
3745 case "$fn" in
3746 *e*) exp_file=true;;
3747 esac
3748 case "$fn" in
3749 *p*) nopath_ok=true;;
3750 esac
3751
3752 case "$fn" in
3753 *f*) type='File';;
3754 *d*) type='Directory';;
3755 *l*) type='Locate';;
3756 esac
3757
3758 what="$type"
3759 case "$what" in
3760 Locate) what='File';;
3761 esac
3762
3763 case "$exp_file" in
3764 '')
3765         case "$d_portable" in
3766         "$define") ;;
3767         *) exp_file=true;;
3768         esac
3769         ;;
3770 esac
3771
3772 cd ..
3773 while test "$type"; do
3774         redo=''
3775         rp="$orig_rp"
3776         dflt="$orig_dflt"
3777         case "$tilde" in
3778         true) rp="$rp (~name ok)";;
3779         esac
3780         . UU/myread
3781         if test -f UU/getfile.ok && \
3782                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3783         then
3784                 value="$ans"
3785                 ansexp="$ans"
3786                 break
3787         fi
3788         case "$ans" in
3789         none)
3790                 value=''
3791                 ansexp=''
3792                 case "$none_ok" in
3793                 true) type='';;
3794                 esac
3795                 ;;
3796         *)
3797                 case "$tilde" in
3798                 '') value="$ans"
3799                         ansexp="$ans";;
3800                 *)
3801                         value=`UU/filexp $ans`
3802                         case $? in
3803                         0)
3804                                 if test "$ans" != "$value"; then
3805                                         echo "(That expands to $value on this system.)"
3806                                 fi
3807                                 ;;
3808                         *) value="$ans";;
3809                         esac
3810                         ansexp="$value"
3811                         case "$exp_file" in
3812                         '') value="$ans";;
3813                         esac
3814                         ;;
3815                 esac
3816                 case "$fullpath" in
3817                 true)
3818                         case "$ansexp" in
3819                         /*) value="$ansexp" ;;
3820                         [a-zA-Z]:/*) value="$ansexp" ;;
3821                         *)
3822                                 redo=true
3823                                 case "$already" in
3824                                 true)
3825                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3826                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3827                                         ;;
3828                                 *)
3829                                 echo "Please give a full path name, starting with slash." >&4
3830                                         case "$tilde" in
3831                                         true)
3832                                 echo "Note that using ~name is ok provided it expands well." >&4
3833                                                 already=true
3834                                                 ;;
3835                                         esac
3836                                 esac
3837                                 ;;
3838                         esac
3839                         ;;
3840                 esac
3841                 case "$redo" in
3842                 '')
3843                         case "$type" in
3844                         File)
3845                                 for fp in $gfpth; do
3846                                         if test "X$fp" = X.; then
3847                                             pf="$ansexp"
3848                                         else    
3849                                             pf="$fp/$ansexp"
3850                                         fi
3851                                         if test -f "$pf"; then
3852                                                 type=''
3853                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3854                                         then
3855                                                 echo "($value is not a plain file, but that's ok.)"
3856                                                 type=''
3857                                         fi
3858                                         if test X"$type" = X; then
3859                                             value="$pf"
3860                                             break
3861                                         fi
3862                                 done
3863                                 ;;
3864                         Directory)
3865                                 for fp in $gfpth; do
3866                                         if test "X$fp" = X.; then
3867                                             dir="$ans"
3868                                             direxp="$ansexp"
3869                                         else    
3870                                             dir="$fp/$ansexp"
3871                                             direxp="$fp/$ansexp"
3872                                         fi
3873                                         if test -d "$direxp"; then
3874                                                 type=''
3875                                                 value="$dir"
3876                                                 break
3877                                         fi
3878                                 done
3879                                 ;;
3880                         Locate)
3881                                 if test -d "$ansexp"; then
3882                                         echo "(Looking for $loc_file in directory $value.)"
3883                                         value="$value/$loc_file"
3884                                         ansexp="$ansexp/$loc_file"
3885                                 fi
3886                                 if test -f "$ansexp"; then
3887                                         type=''
3888                                 fi
3889                                 case "$nopath_ok" in
3890                                 true)   case "$value" in
3891                                         */*) ;;
3892                                         *)      echo "Assuming $value will be in people's path."
3893                                                 type=''
3894                                                 ;;
3895                                         esac
3896                                         ;;
3897                                 esac
3898                                 ;;
3899                         esac
3900
3901                         case "$skip" in
3902                         true) type='';
3903                         esac
3904
3905                         case "$type" in
3906                         '') ;;
3907                         *)
3908                                 if test "$fastread" = yes; then
3909                                         dflt=y
3910                                 else
3911                                         dflt=n
3912                                 fi
3913                                 rp="$what $value doesn't exist.  Use that name anyway?"
3914                                 . UU/myread
3915                                 dflt=''
3916                                 case "$ans" in
3917                                 y*) type='';;
3918                                 *) echo " ";;
3919                                 esac
3920                                 ;;
3921                         esac
3922                         ;;
3923                 esac
3924                 ;;
3925         esac
3926 done
3927 cd UU
3928 ans="$value"
3929 rp="$orig_rp"
3930 dflt="$orig_dflt"
3931 rm -f getfile.ok
3932 test "X$gfpthkeep" != Xy && gfpth=""
3933 EOSC
3934
3935 : What should the include directory be ?
3936 echo " "
3937 $echo $n "Hmm...  $c"
3938 dflt='/usr/include'
3939 incpath=''
3940 mips_type=''
3941 if $test -f /bin/mips && /bin/mips; then
3942         echo "Looks like a MIPS system..."
3943         $cat >usr.c <<'EOCP'
3944 #ifdef SYSTYPE_BSD43
3945 /bsd43
3946 #endif
3947 EOCP
3948         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3949                 dflt='/bsd43/usr/include'
3950                 incpath='/bsd43'
3951                 mips_type='BSD 4.3'
3952         else
3953                 mips_type='System V'
3954         fi
3955         $rm -f usr.c usr.out
3956         echo "and you're compiling with the $mips_type compiler and libraries."
3957         xxx_prompt=y
3958         echo "exit 0" >mips
3959 else
3960         echo "Doesn't look like a MIPS system."
3961         xxx_prompt=n
3962         echo "exit 1" >mips
3963 fi
3964 chmod +x mips
3965 $eunicefix mips
3966 case "$usrinc" in
3967 '') ;;
3968 *) dflt="$usrinc";;
3969 esac
3970 case "$xxx_prompt" in
3971 y)      fn=d/
3972         echo " "
3973         rp='Where are the include files you want to use?'
3974         . ./getfile
3975         usrinc="$ans"
3976         ;;
3977 *)      usrinc="$dflt"
3978         ;;
3979 esac
3980
3981 : see how we invoke the C preprocessor
3982 echo " "
3983 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3984 cat <<'EOT' >testcpp.c
3985 #define ABC abc
3986 #define XYZ xyz
3987 ABC.XYZ
3988 EOT
3989 cd ..
3990 if test ! -f cppstdin; then
3991         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3992                 # AIX cc -E doesn't show the absolute headerfile
3993                 # locations but we'll cheat by using the -M flag.
3994                 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
3995         else
3996                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3997         fi
3998 else
3999         echo "Keeping your $hint cppstdin wrapper."
4000 fi
4001 chmod 755 cppstdin
4002 wrapper=`pwd`/cppstdin
4003 ok='false'
4004 cd UU
4005
4006 if $test "X$cppstdin" != "X" && \
4007         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4008         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4009 then
4010         echo "You used to use $cppstdin $cppminus so we'll use that again."
4011         case "$cpprun" in
4012         '') echo "But let's see if we can live without a wrapper..." ;;
4013         *)
4014                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4015                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4016                 then
4017                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4018                         ok='true'
4019                 else
4020                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4021                 fi
4022                 ;;
4023         esac
4024 else
4025         case "$cppstdin" in
4026         '') ;;
4027         *)
4028                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4029                 ;;
4030         esac
4031 fi
4032
4033 if $ok; then
4034         : nothing
4035 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4036         $cc -E <testcpp.c >testcpp.out 2>&1; \
4037         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4038         echo "Yup, it does."
4039         x_cpp="$cc -E"
4040         x_minus='';
4041 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4042         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4043         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4044         echo "Yup, it does."
4045         x_cpp="$cc -E"
4046         x_minus='-';
4047 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4048         $cc -P <testcpp.c >testcpp.out 2>&1; \
4049         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4050         echo "Yipee, that works!"
4051         x_cpp="$cc -P"
4052         x_minus='';
4053 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4054         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4055         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4056         echo "At long last!"
4057         x_cpp="$cc -P"
4058         x_minus='-';
4059 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4060         $cpp <testcpp.c >testcpp.out 2>&1; \
4061         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4062         echo "It works!"
4063         x_cpp="$cpp"
4064         x_minus='';
4065 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4066         $cpp - <testcpp.c >testcpp.out 2>&1; \
4067         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4068         echo "Hooray, it works!  I was beginning to wonder."
4069         x_cpp="$cpp"
4070         x_minus='-';
4071 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4072         $wrapper <testcpp.c >testcpp.out 2>&1; \
4073         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4074         x_cpp="$wrapper"
4075         x_minus=''
4076         echo "Eureka!"
4077 else
4078         dflt=''
4079         rp="No dice.  I can't find a C preprocessor.  Name one:"
4080         . ./myread
4081         x_cpp="$ans"
4082         x_minus=''
4083         $x_cpp <testcpp.c >testcpp.out 2>&1
4084         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4085                 echo "OK, that will do." >&4
4086         else
4087 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4088                 exit 1
4089         fi
4090 fi
4091
4092 case "$ok" in
4093 false)
4094         cppstdin="$x_cpp"
4095         cppminus="$x_minus"
4096         cpprun="$x_cpp"
4097         cpplast="$x_minus"
4098         set X $x_cpp
4099         shift
4100         case "$1" in
4101         "$cpp")
4102                 echo "Perhaps can we force $cc -E using a wrapper..."
4103                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4104                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4105                 then
4106                         echo "Yup, we can."
4107                         cppstdin="$wrapper"
4108                         cppminus='';
4109                 else
4110                         echo "Nope, we'll have to live without it..."
4111                 fi
4112                 ;;
4113         esac
4114         case "$cpprun" in
4115         "$wrapper")
4116                 cpprun=''
4117                 cpplast=''
4118                 ;;
4119         esac
4120         ;;
4121 esac
4122
4123 case "$cppstdin" in
4124 "$wrapper"|'cppstdin') ;;
4125 *) $rm -f $wrapper;;
4126 esac
4127 $rm -f testcpp.c testcpp.out
4128
4129 : Set private lib path
4130 case "$plibpth" in
4131 '') if ./mips; then
4132                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4133         fi;;
4134 esac
4135 case "$libpth" in
4136 ' ') dlist='';;
4137 '') dlist="$loclibpth $plibpth $glibpth";;
4138 *) dlist="$libpth";;
4139 esac
4140
4141 : Now check and see which directories actually exist, avoiding duplicates
4142 libpth=''
4143 for xxx in $dlist
4144 do
4145     if $test -d $xxx; then
4146                 case " $libpth " in
4147                 *" $xxx "*) ;;
4148                 *) libpth="$libpth $xxx";;
4149                 esac
4150     fi
4151 done
4152 $cat <<'EOM'
4153
4154 Some systems have incompatible or broken versions of libraries.  Among
4155 the directories listed in the question below, please remove any you
4156 know not to be holding relevant libraries, and add any that are needed.
4157 Say "none" for none.
4158
4159 EOM
4160 case "$libpth" in
4161 '') dflt='none';;
4162 *)
4163         set X $libpth
4164         shift
4165         dflt=${1+"$@"}
4166         ;;
4167 esac
4168 rp="Directories to use for library searches?"
4169 . ./myread
4170 case "$ans" in
4171 none) libpth=' ';;
4172 *) libpth="$ans";;
4173 esac
4174
4175 : compute shared library extension
4176 case "$so" in
4177 '')
4178         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4179                 dflt='sl'
4180         else
4181                 dflt='so'
4182         fi
4183         ;;
4184 *) dflt="$so";;
4185 esac
4186 $cat <<EOM
4187
4188 On some systems, shared libraries may be available.  Answer 'none' if
4189 you want to suppress searching of shared libraries for the remainder
4190 of this configuration.
4191
4192 EOM
4193 rp='What is the file extension used for shared libraries?'
4194 . ./myread
4195 so="$ans"
4196
4197 : Define several unixisms.
4198 : Hints files or command line option can be used to override them.
4199 : The convoluted testing is in case hints files set either the old
4200 : or the new name.
4201 case "$_exe" in
4202 '')     case "$exe_ext" in
4203         '')     ;;
4204         *)      _exe="$exe_ext" ;;
4205         esac
4206         ;;
4207 esac
4208 case "$_a" in
4209 '')     case "$lib_ext" in
4210     '') _a='.a';;
4211         *)      _a="$lib_ext" ;;
4212         esac
4213         ;;
4214 esac
4215 case "$_o" in
4216 '') case "$obj_ext" in
4217         '')     _o='.o';;
4218         *)      _o="$obj_ext";;
4219         esac
4220         ;;
4221 esac
4222 case "$p_" in
4223 '') case "$path_sep" in
4224         '')     p_=':';;
4225         *)      p_="$path_sep";;
4226         esac
4227         ;;
4228 esac
4229 exe_ext=$_exe
4230 lib_ext=$_a
4231 obj_ext=$_o
4232 path_sep=$p_
4233
4234 : Which makefile gets called first.  This is used by make depend.
4235 case "$firstmakefile" in
4236 '') firstmakefile='makefile';;
4237 esac
4238
4239 case "$usesocks" in
4240 $define|true|[yY]*)     dflt='y';;
4241 *) dflt='n';;
4242 esac
4243 cat <<EOM
4244
4245 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4246 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4247 to use the PerlIO abstraction layer, this will be implicitly selected.
4248
4249 If this doesn't make any sense to you, just accept the default '$dflt'.
4250 EOM
4251 rp='Build Perl for SOCKS?'
4252 . ./myread
4253 case "$ans" in
4254 y|Y)    val="$define" ;;     
4255 *)      val="$undef" ;;
4256 esac
4257 set usesocks
4258 eval $setvar
4259
4260 case "$usesocks" in
4261 $define|true|[yY]*) useperlio="$define";;
4262 esac
4263
4264 : Looking for optional libraries
4265 echo " "
4266 echo "Checking for optional libraries..." >&4
4267 case "$libs" in
4268 ' '|'') dflt='';;
4269 *) dflt="$libs";;
4270 esac
4271 case "$libswanted" in
4272 '') libswanted='c_s';;
4273 esac
4274 case "$usesocks" in
4275 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4276 esac
4277 libsfound=''
4278 libsfiles=''
4279 libsdirs=''
4280 libspath=''
4281 for thisdir in $libpth $xlibpth; do
4282   test -d $thisdir && libspath="$libspath $thisdir"
4283 done
4284 for thislib in $libswanted; do
4285         for thisdir in $libspath; do
4286             xxx=''
4287             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4288                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4289                 $test -f "$xxx" && eval $libscheck
4290                 $test -f "$xxx" && libstyle=shared
4291             fi
4292             if test ! -f "$xxx"; then
4293                 xxx=$thisdir/lib$thislib.$so
4294                 $test -f "$xxx" && eval $libscheck
4295                 $test -f "$xxx" && libstyle=shared
4296             fi  
4297             if test ! -f "$xxx"; then
4298                 xxx=$thisdir/lib$thislib$_a
4299                 $test -f "$xxx" && eval $libscheck
4300                 $test -f "$xxx" && libstyle=static
4301             fi
4302             if test ! -f "$xxx"; then
4303                 xxx=$thisdir/$thislib$_a
4304                 $test -f "$xxx" && eval $libscheck
4305                 $test -f "$xxx" && libstyle=static
4306             fi
4307             if test ! -f "$xxx"; then
4308                 xxx=$thisdir/lib${thislib}_s$_a
4309                 $test -f "$xxx" && eval $libscheck
4310                 $test -f "$xxx" && libstyle=static
4311                 $test -f "$xxx" && thislib=${thislib}_s
4312             fi
4313             if test ! -f "$xxx"; then
4314                 xxx=$thisdir/Slib$thislib$_a
4315                 $test -f "$xxx" && eval $libscheck
4316                 $test -f "$xxx" && libstyle=static
4317             fi
4318             if $test -f "$xxx"; then
4319                 case "$libstyle" in
4320                 shared) echo "Found -l$thislib (shared)." ;;
4321                 static) echo "Found -l$thislib." ;;
4322                 *)      echo "Found -l$thislib ($libstyle)." ;;
4323                 esac
4324                 case " $dflt " in
4325                 *"-l$thislib "*);;
4326                 *) dflt="$dflt -l$thislib"
4327                    libsfound="$libsfound $xxx"
4328                    yyy=`basename $xxx`
4329                    libsfiles="$libsfiles $yyy"
4330                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4331                    case " $libsdirs " in
4332                    *" $yyy "*) ;;
4333                    *) libsdirs="$libsdirs $yyy" ;;
4334                    esac
4335                    ;;
4336                 esac
4337                 break
4338             fi  
4339         done
4340         if $test ! -f "$xxx"; then
4341             echo "No -l$thislib."
4342         fi
4343 done
4344 set X $dflt
4345 shift
4346 dflt="$*"
4347 case "$libs" in
4348 '') dflt="$dflt";;
4349 *) dflt="$libs";;
4350 esac
4351 case "$dflt" in
4352 ' '|'') dflt='none';;
4353 esac
4354
4355 $cat <<EOM
4356
4357 In order to compile $package on your machine, a number of libraries
4358 are usually needed.  Include any other special libraries here as well.
4359 Say "none" for none.  The default list is almost always right.
4360 EOM
4361
4362 echo " "
4363 rp="What libraries to use?"
4364 . ./myread
4365 case "$ans" in
4366 none) libs=' ';;
4367 *) libs="$ans";;
4368 esac
4369
4370 : determine optimization, if desired, or use for debug flag also
4371 case "$optimize" in
4372 ' '|$undef) dflt='none';;
4373 '') dflt='-O';;
4374 *) dflt="$optimize";;
4375 esac
4376 $cat <<EOH
4377
4378 By default, $package compiles with the -O flag to use the optimizer.
4379 Alternately, you might want to use the symbolic debugger, which uses
4380 the -g flag (on traditional Unix systems).  Either flag can be
4381 specified here.  To use neither flag, specify the word "none".
4382
4383 EOH
4384 rp="What optimizer/debugger flag should be used?"
4385 . ./myread
4386 optimize="$ans"
4387 case "$optimize" in
4388 'none') optimize=" ";;
4389 esac
4390
4391 dflt=''
4392 : We will not override a previous value, but we might want to
4393 : augment a hint file
4394 case "$hint" in
4395 default|recommended)
4396         case "$gccversion" in
4397         1*) dflt='-fpcc-struct-return' ;;
4398         esac
4399         case "$optimize" in
4400         *-g*) dflt="$dflt -DDEBUGGING";;
4401         esac
4402         case "$gccversion" in
4403         2*) if test -d /etc/conf/kconfig.d &&
4404                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4405                 then
4406                         dflt="$dflt -posix"
4407                 fi
4408                 ;;
4409         esac
4410         case "$gccversion" in
4411         1*) ;;
4412         2.[0-8]*) ;;
4413         ?*)     echo " "
4414                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4415                 echo 'int main(void) { return 0; }' > gcctest.c
4416                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4417                         echo "Yes, it does." 2>&1
4418                         case "$ccflags" in
4419                         *strict-aliasing*) 
4420                                 echo "Leaving current flags $ccflags alone." 2>&1
4421                                 ;;
4422                         *) dflt="$dflt -fno-strict-aliasing" ;;
4423                         esac
4424                 else
4425                         echo "Nope, it doesn't, but that's ok." 2>&1
4426                 fi
4427                 ;;
4428         esac
4429         ;;
4430 esac
4431
4432 case "$mips_type" in
4433 *BSD*|'') inclwanted="$locincpth $usrinc";;
4434 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4435 esac
4436 for thisincl in $inclwanted; do
4437         if $test -d $thisincl; then
4438                 if $test x$thisincl != x$usrinc; then
4439                         case "$dflt" in
4440                         *" -I$thisincl "*);;
4441                         *) dflt="$dflt -I$thisincl ";;
4442                         esac
4443                 fi
4444         fi
4445 done
4446
4447 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4448         xxx=true;
4449 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4450         xxx=true;
4451 else
4452         xxx=false;
4453 fi;
4454 if $xxx; then
4455         case "$dflt" in
4456         *$2*);;
4457         *) dflt="$dflt -D$2";;
4458         esac;
4459 fi'
4460
4461 set signal.h LANGUAGE_C; eval $inctest
4462
4463 case "$usesocks" in
4464 $define)
4465         ccflags="$ccflags -DSOCKS"
4466         ;;
4467 esac
4468
4469 case "$hint" in
4470 default|recommended) dflt="$ccflags $dflt" ;;
4471 *) dflt="$ccflags";;
4472 esac
4473
4474 case "$dflt" in
4475 ''|' ') dflt=none;;
4476 esac
4477
4478 $cat <<EOH
4479
4480 Your C compiler may want other flags.  For this question you should include
4481 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4482 but you should NOT include libraries or ld flags like -lwhatever.  If you
4483 want $package to honor its debug switch, you should include -DDEBUGGING here.
4484 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4485
4486 To use no flags, specify the word "none".
4487
4488 EOH
4489 set X $dflt
4490 shift
4491 dflt=${1+"$@"}
4492 rp="Any additional cc flags?"
4493 . ./myread
4494 case "$ans" in
4495 none) ccflags='';;
4496 *) ccflags="$ans";;
4497 esac
4498
4499 : the following weeds options from ccflags that are of no interest to cpp
4500 case "$cppflags" in
4501 '') cppflags="$ccflags" ;;
4502 *)  cppflags="$cppflags $ccflags" ;;
4503 esac
4504 case "$gccversion" in
4505 1*) cppflags="$cppflags -D__GNUC__"
4506 esac
4507 case "$mips_type" in
4508 '');;
4509 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4510 esac
4511 case "$cppflags" in
4512 '');;
4513 *)
4514         echo " "
4515         echo "Let me guess what the preprocessor flags are..." >&4
4516         set X $cppflags
4517         shift
4518         cppflags=''
4519         $cat >cpp.c <<'EOM'
4520 #define BLURFL foo
4521
4522 BLURFL xx LFRULB
4523 EOM
4524         previous=''
4525         for flag in $*
4526         do
4527                 case "$flag" in
4528                 -*) ftry="$flag";;
4529                 *) ftry="$previous $flag";;
4530                 esac
4531                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4532                         >cpp1.out 2>/dev/null && \
4533                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4534                         >cpp2.out 2>/dev/null && \
4535                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4536                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4537                 then
4538                         cppflags="$cppflags $ftry"
4539                         previous=''
4540                 else
4541                         previous="$flag"
4542                 fi
4543         done
4544         set X $cppflags
4545         shift
4546         cppflags=${1+"$@"}
4547         case "$cppflags" in
4548         *-*)  echo "They appear to be: $cppflags";;
4549         esac
4550         $rm -f cpp.c cpp?.out
4551         ;;
4552 esac
4553
4554 : flags used in final linking phase
4555 case "$ldflags" in
4556 '') if ./venix; then
4557                 dflt='-i -z'
4558         else
4559                 dflt=''
4560         fi
4561         case "$ccflags" in
4562         *-posix*) dflt="$dflt -posix" ;;
4563         esac
4564         ;;
4565 *) dflt="$ldflags";;
4566 esac
4567
4568 : Try to guess additional flags to pick up local libraries.
4569 for thislibdir in $libpth; do
4570         case " $loclibpth " in
4571         *" $thislibdir "*)
4572                 case "$dflt " in 
4573                 *"-L$thislibdir "*) ;;
4574                 *)  dflt="$dflt -L$thislibdir" ;;
4575                 esac
4576                 ;;
4577         esac
4578 done
4579
4580 case "$dflt" in
4581 '') dflt='none' ;;
4582 esac
4583
4584 $cat <<EOH
4585
4586 Your C linker may need flags.  For this question you should
4587 include -L/whatever and any other flags used by the C linker, but you
4588 should NOT include libraries like -lwhatever.
4589
4590 Make sure you include the appropriate -L/path flags if your C linker
4591 does not normally search all of the directories you specified above,
4592 namely
4593         $libpth
4594 To use no flags, specify the word "none".
4595
4596 EOH
4597
4598 rp="Any additional ld flags (NOT including libraries)?"
4599 . ./myread
4600 case "$ans" in
4601 none) ldflags='';;
4602 *) ldflags="$ans";;
4603 esac
4604 rmlist="$rmlist pdp11"
4605
4606 : coherency check
4607 echo " "
4608 echo "Checking your choice of C compiler and flags for coherency..." >&4
4609 $cat > try.c <<'EOF'
4610 #include <stdio.h>
4611 int main() { printf("Ok\n"); exit(0); }
4612 EOF
4613 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4614 shift
4615 $cat >try.msg <<'EOM'
4616 I've tried to compile and run the following simple program:
4617
4618 EOM
4619 $cat try.c >> try.msg
4620
4621 $cat >> try.msg <<EOM
4622
4623 I used the command:
4624
4625         $*
4626         $run ./try
4627
4628 and I got the following output:
4629
4630 EOM
4631 dflt=y
4632 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4633         if $sh -c "$run ./try" >>try.msg 2>&1; then
4634                 xxx=`$run ./try`
4635                 case "$xxx" in
4636                 "Ok") dflt=n ;;
4637                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4638                         case " $libs " in
4639                         *" -lsfio "*)
4640                                 cat >> try.msg <<'EOQS'
4641 If $libs contains -lsfio, and sfio is mis-configured, then it
4642 sometimes (apparently) runs and exits with a 0 status, but with no
4643 output!  It may have to do with sfio's use of _exit vs. exit.
4644
4645 EOQS
4646                                 rp="You have a big problem.  Shall I abort Configure"
4647                                 dflt=y
4648                                 ;;
4649                         esac
4650                         ;;
4651                 esac
4652         else
4653                 echo "The program compiled OK, but exited with status $?." >>try.msg
4654                 rp="You have a problem.  Shall I abort Configure"
4655                 dflt=y
4656         fi
4657 else
4658         echo "I can't compile the test program." >>try.msg
4659         rp="You have a BIG problem.  Shall I abort Configure"
4660         dflt=y
4661 fi
4662 case "$dflt" in
4663 y)
4664         $cat try.msg >&4
4665         case "$knowitall" in
4666         '')
4667                 echo "(The supplied flags or libraries might be incorrect.)"
4668                 ;;
4669         *) dflt=n;;
4670         esac
4671         echo " "
4672         . ./myread
4673         case "$ans" in
4674         n*|N*) ;;
4675         *)      echo "Ok.  Stopping Configure." >&4
4676                 exit 1
4677                 ;;
4678         esac
4679         ;;
4680 n) echo "OK, that should do.";;
4681 esac
4682 $rm -f try try.* core
4683
4684 : define a shorthand compile call
4685 compile='
4686 mc_file=$1;
4687 shift;
4688 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4689 : define a shorthand compile call for compilations that should be ok.
4690 compile_ok='
4691 mc_file=$1;
4692 shift;
4693 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4694
4695 : check for lengths of integral types
4696 echo " "
4697 case "$intsize" in
4698 '')
4699         echo "Checking to see how big your integers are..." >&4
4700         $cat >try.c <<'EOCP'
4701 #include <stdio.h>
4702 int main()
4703 {
4704         printf("intsize=%d;\n", (int)sizeof(int));
4705         printf("longsize=%d;\n", (int)sizeof(long));
4706         printf("shortsize=%d;\n", (int)sizeof(short));
4707         exit(0);
4708 }
4709 EOCP
4710         set try
4711         if eval $compile_ok && $run ./try > /dev/null; then
4712                 eval `$run ./try`
4713                 echo "Your integers are $intsize bytes long."
4714                 echo "Your long integers are $longsize bytes long."
4715                 echo "Your short integers are $shortsize bytes long."
4716         else
4717                 $cat >&4 <<EOM
4718 !
4719 Help! I can't compile and run the intsize test program: please enlighten me!
4720 (This is probably a misconfiguration in your system or libraries, and
4721 you really ought to fix it.  Still, I'll try anyway.)
4722 !
4723 EOM
4724                 dflt=4
4725                 rp="What is the size of an integer (in bytes)?"
4726                 . ./myread
4727                 intsize="$ans"
4728                 dflt=$intsize
4729                 rp="What is the size of a long integer (in bytes)?"
4730                 . ./myread
4731                 longsize="$ans"
4732                 dflt=2
4733                 rp="What is the size of a short integer (in bytes)?"
4734                 . ./myread
4735                 shortsize="$ans"
4736         fi
4737         ;;
4738 esac
4739 $rm -f try try.*
4740
4741 : check for void type
4742 echo " "
4743 echo "Checking to see how well your C compiler groks the void type..." >&4
4744 case "$voidflags" in
4745 '')
4746         $cat >try.c <<'EOCP'
4747 #if TRY & 1
4748 void sub() {
4749 #else
4750 sub() {
4751 #endif
4752         extern void moo();      /* function returning void */
4753         void (*goo)();          /* ptr to func returning void */
4754 #if TRY & 8
4755         void *hue;              /* generic ptr */
4756 #endif
4757 #if TRY & 2
4758         void (*foo[10])();
4759 #endif
4760
4761 #if TRY & 4
4762         if(goo == moo) {
4763                 exit(0);
4764         }
4765 #endif
4766         exit(0);
4767 }
4768 int main() { sub(); }
4769 EOCP
4770         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4771                 voidflags=$defvoidused
4772         echo "Good.  It appears to support void to the level $package wants.">&4
4773                 if $contains warning .out >/dev/null 2>&1; then
4774                         echo "However, you might get some warnings that look like this:"
4775                         $cat .out
4776                 fi
4777         else
4778 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4779                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4780                         echo "It supports 1..."
4781                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4782                                 echo "It also supports 2..."
4783                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4784                                         voidflags=7
4785                                         echo "And it supports 4 but not 8 definitely."
4786                                 else
4787                                         echo "It doesn't support 4..."
4788                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4789                                                 voidflags=11
4790                                                 echo "But it supports 8."
4791                                         else
4792                                                 voidflags=3
4793                                                 echo "Neither does it support 8."
4794                                         fi
4795                                 fi
4796                         else
4797                                 echo "It does not support 2..."
4798                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4799                                         voidflags=13
4800                                         echo "But it supports 4 and 8."
4801                                 else
4802                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4803                                                 voidflags=5
4804                                                 echo "And it supports 4 but has not heard about 8."
4805                                         else
4806                                                 echo "However it supports 8 but not 4."
4807                                         fi
4808                                 fi
4809                         fi
4810                 else
4811                         echo "There is no support at all for void."
4812                         voidflags=0
4813                 fi
4814         fi
4815 esac
4816 case "$voidflags" in
4817 "$defvoidused") ;;
4818 *)      $cat >&4 <<'EOM'
4819   Support flag bits are:
4820     1: basic void declarations.
4821     2: arrays of pointers to functions returning void.
4822     4: operations between pointers to and addresses of void functions.
4823     8: generic void pointers.
4824 EOM
4825         dflt="$voidflags";
4826         rp="Your void support flags add up to what?"
4827         . ./myread
4828         voidflags="$ans"
4829         ;;
4830 esac
4831 $rm -f try.* .out
4832
4833 : check for length of pointer
4834 echo " "
4835 case "$ptrsize" in
4836 '')
4837         echo "Checking to see how big your pointers are..." >&4
4838         if test "$voidflags" -gt 7; then
4839                 echo '#define VOID_PTR char *' > try.c
4840         else
4841                 echo '#define VOID_PTR void *' > try.c
4842         fi
4843         $cat >>try.c <<'EOCP'
4844 #include <stdio.h>
4845 int main()
4846 {
4847     printf("%d\n", (int)sizeof(VOID_PTR));
4848     exit(0);
4849 }
4850 EOCP
4851         set try
4852         if eval $compile_ok; then
4853                 ptrsize=`$run ./try`
4854                 echo "Your pointers are $ptrsize bytes long."
4855         else
4856                 dflt='4'
4857                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4858                 rp="What is the size of a pointer (in bytes)?"
4859                 . ./myread
4860                 ptrsize="$ans"
4861         fi
4862         ;;
4863 esac
4864 $rm -f try.c try
4865
4866 : check for long long
4867 echo " "
4868 echo "Checking to see if you have long long..." >&4
4869 echo 'int main() { long long x = 7; return 0; }' > try.c
4870 set try
4871 if eval $compile; then
4872         val="$define"
4873         echo "You have long long."
4874 else
4875         val="$undef"
4876         echo "You do not have long long."
4877 fi
4878 $rm try.*
4879 set d_longlong
4880 eval $setvar
4881
4882 : check for length of long long
4883 case "${d_longlong}${longlongsize}" in
4884 $define)
4885         echo " "
4886         echo "Checking to see how big your long longs are..." >&4
4887         $cat >try.c <<'EOCP'
4888 #include <stdio.h>
4889 int main()
4890 {
4891     printf("%d\n", (int)sizeof(long long));
4892     return(0);
4893 }
4894 EOCP
4895         set try
4896         if eval $compile_ok; then
4897                 longlongsize=`$run ./try`
4898                 echo "Your long longs are $longlongsize bytes long."
4899         else
4900                 dflt='8'
4901                 echo " "
4902                 echo "(I can't seem to compile the test program.  Guessing...)"
4903                 rp="What is the size of a long long (in bytes)?"
4904                 . ./myread
4905                 longlongsize="$ans"
4906         fi
4907         if $test "X$longsize" = "X$longlongsize"; then
4908                 echo "(That isn't any different from an ordinary long.)"
4909         fi      
4910         ;;
4911 esac
4912 $rm -f try.* try
4913
4914 : determine filename position in cpp output
4915 echo " "
4916 echo "Computing filename position in cpp output for #include directives..." >&4
4917 case "$osname" in
4918 vos) testaccess=-e ;;
4919 *)   testaccess=-r ;;
4920 esac
4921 echo '#include <stdio.h>' > foo.c
4922 $cat >fieldn <<EOF
4923 $startsh
4924 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4925 $grep '^[       ]*#.*stdio\.h' | \
4926 while read cline; do
4927         pos=1
4928         set \$cline
4929         while $test \$# -gt 0; do
4930                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
4931                         echo "\$pos"
4932                         exit 0
4933                 fi
4934                 shift
4935                 pos=\`expr \$pos + 1\`
4936         done
4937 done
4938 EOF
4939 chmod +x fieldn
4940 fieldn=`./fieldn`
4941 $rm -f foo.c fieldn
4942 case $fieldn in
4943 '') pos='???';;
4944 1) pos=first;;
4945 2) pos=second;;
4946 3) pos=third;;
4947 *) pos="${fieldn}th";;
4948 esac
4949 echo "Your cpp writes the filename in the $pos field of the line."
4950
4951 case "$osname" in
4952 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
4953 *)   cppfilter='' ;;
4954 esac
4955 : locate header file
4956 $cat >findhdr <<EOF
4957 $startsh
4958 wanted=\$1
4959 name=''
4960 for usrincdir in $usrinc
4961 do
4962         if test -f \$usrincdir/\$wanted; then
4963                 echo "\$usrincdir/\$wanted"
4964                 exit 0
4965         fi
4966 done
4967 awkprg='{ print \$$fieldn }'
4968 echo "#include <\$wanted>" > foo\$\$.c
4969 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4970 $cppfilter $grep "^[    ]*#.*\$wanted" | \
4971 while read cline; do
4972         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4973         case "\$name" in
4974         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4975         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4976         *) exit 2;;
4977         esac;
4978 done;
4979 #
4980 # status = 0: grep returned 0 lines, case statement not executed
4981 # status = 1: headerfile found
4982 # status = 2: while loop executed, no headerfile found
4983 #
4984 status=\$?
4985 $rm -f foo\$\$.c;
4986 if test \$status -eq 1; then
4987         exit 0;
4988 fi
4989 exit 1
4990 EOF
4991 chmod +x findhdr
4992
4993 : define an alternate in-header-list? function
4994 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4995 cont=true; xxf="echo \"<\$1> found.\" >&4";
4996 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4997 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4998 esac;
4999 case $# in 4) instead=instead;; *) instead="at last";; esac;
5000 while $test "$cont"; do
5001         xxx=`./findhdr $1`
5002         var=$2; eval "was=\$$2";
5003         if $test "$xxx" && $test -r "$xxx";
5004         then eval $xxf;
5005         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5006                 cont="";
5007         else eval $xxnf;
5008         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5009         set $yyy; shift; shift; yyy=$@;
5010         case $# in 0) cont="";;
5011         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5012                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5013         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5014                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5015         esac;
5016 done;
5017 while $test "$yyy";
5018 do set $yyy; var=$2; eval "was=\$$2";
5019         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5020         set $yyy; shift; shift; yyy=$@;
5021 done'
5022
5023 : see if inttypes.h is available
5024 : we want a real compile instead of Inhdr because some systems
5025 : have an inttypes.h which includes non-existent headers
5026 echo " "
5027 $cat >try.c <<EOCP
5028 #include <inttypes.h>
5029 int main() {
5030         static int32_t foo32 = 0x12345678;
5031 }
5032 EOCP
5033 set try
5034 if eval $compile; then
5035         echo "<inttypes.h> found." >&4
5036         val="$define"
5037 else
5038         echo "<inttypes.h> NOT found." >&4
5039         val="$undef"
5040 fi
5041 $rm -f try.c try
5042 set i_inttypes
5043 eval $setvar
5044
5045 : check for int64_t
5046 echo " "
5047 echo "Checking to see if you have int64_t..." >&4
5048 $cat >try.c <<EOCP
5049 #include <sys/types.h>
5050 #$i_inttypes I_INTTYPES
5051 #ifdef I_INTTYPES
5052 #include <inttypes.h>
5053 #endif
5054 int main() { int64_t x = 7; }
5055 EOCP
5056 set try
5057 if eval $compile; then
5058         val="$define"
5059         echo "You have int64_t."
5060 else
5061         val="$undef"
5062         echo "You do not have int64_t."
5063 fi
5064 $rm -f try try.*
5065 set d_int64_t
5066 eval $setvar
5067
5068
5069 echo " "
5070 echo "Checking which 64-bit integer type we could use..." >&4
5071
5072 case "$intsize" in
5073 8) val=int
5074    set quadtype
5075    eval $setvar
5076    val='"unsigned int"'
5077    set uquadtype
5078    eval $setvar
5079    quadkind=1
5080    ;;
5081 *) case "$longsize" in
5082    8) val=long
5083       set quadtype
5084       eval $setvar
5085       val='"unsigned long"'
5086       set uquadtype
5087       eval $setvar
5088       quadkind=2
5089       ;;
5090    *) case "$d_longlong:$longlongsize" in
5091       define:8)
5092         val='"long long"'
5093         set quadtype
5094         eval $setvar
5095         val='"unsigned long long"'
5096         set uquadtype
5097         eval $setvar
5098         quadkind=3
5099         ;;
5100       *) case "$d_int64_t" in
5101          define)
5102            val=int64_t
5103            set quadtype
5104            eval $setvar
5105            val=uint64_t
5106            set uquadtype
5107            eval $setvar
5108            quadkind=4
5109            ;;
5110          esac
5111          ;;
5112       esac
5113       ;;
5114    esac
5115    ;;
5116 esac
5117
5118 case "$quadtype" in
5119 '')     echo "Alas, no 64-bit integer types in sight." >&4
5120         d_quad="$undef"
5121         ;;
5122 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5123         d_quad="$define"
5124         ;;
5125 esac
5126
5127
5128 case "$uselonglong" in
5129 "$define"|true|[yY]*)
5130         cat <<EOM >&4
5131
5132 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5133 EOM
5134         use64bitint="$define"
5135         ;;
5136 esac                          
5137 case "$use64bits" in
5138 "$define"|true|[yY]*)
5139         cat <<EOM >&4
5140
5141 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5142 EOM
5143         use64bitint="$define"
5144         ;;
5145 esac                          
5146 case "$use64bitints" in
5147 "$define"|true|[yY]*)
5148         cat <<EOM >&4
5149
5150 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5151 EOM
5152         use64bitint="$define"
5153         ;;
5154 esac                          
5155 case "$use64bitsint" in
5156 "$define"|true|[yY]*)
5157         cat <<EOM >&4
5158
5159 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5160 EOM
5161         use64bitint="$define"
5162         ;;
5163 esac                          
5164 case "$uselonglongs" in
5165 "$define"|true|[yY]*)
5166         cat <<EOM >&4
5167
5168 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5169 EOM
5170         use64bitint="$define"
5171         ;;
5172 esac                          
5173 case "$use64bitsall" in
5174 "$define"|true|[yY]*)
5175         cat <<EOM >&4
5176
5177 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5178 EOM
5179         use64bitall="$define"
5180         ;;
5181 esac                          
5182
5183 case "$ccflags" in
5184 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5185 esac
5186 case "$use64bitall" in
5187 "$define"|true|[yY]*) use64bitint="$define" ;;
5188 esac
5189
5190 case "$longsize" in
5191 8) cat <<EOM
5192
5193 You have natively 64-bit long integers.
5194 EOM
5195    val="$define"
5196    ;;
5197 *) case "$use64bitint" in
5198    "$define"|true|[yY]*) dflt='y';;
5199    *) dflt='n';;
5200    esac
5201    case "$d_quad" in
5202    "$define") ;;
5203    *) dflt='n' ;;
5204    esac
5205    cat <<EOM
5206
5207 Perl can be built to take advantage of 64-bit integer types
5208 on some systems.  To do so, Configure can be run with -Duse64bitint.
5209 Choosing this option will most probably introduce binary incompatibilities.
5210
5211 If this doesn't make any sense to you, just accept the default '$dflt'.
5212 (The default has been chosen based on your configuration.)
5213 EOM
5214    rp='Try to use 64-bit integers, if available?'
5215    . ./myread
5216    case "$ans" in
5217    [yY]*) val="$define" ;;
5218    *)     val="$undef"  ;;
5219    esac
5220    ;;
5221 esac
5222 set use64bitint
5223 eval $setvar
5224
5225 case "$use64bitall" in
5226 "$define"|true|[yY]*) dflt='y' ;;
5227 *) case "$longsize" in
5228    8) dflt='y' ;;
5229    *) dflt='n' ;;
5230    esac
5231    ;;
5232 esac    
5233 cat <<EOM
5234
5235 You may also choose to try maximal 64-bitness.  It means using as much
5236 64-bitness as possible on the platform.  This in turn means even more
5237 binary incompatibilities.  On the other hand, your platform may not
5238 have any more 64-bitness available than what you already have chosen.
5239
5240 If this doesn't make any sense to you, just accept the default '$dflt'.
5241 (The default has been chosen based on your configuration.)
5242 EOM
5243 rp='Try to use maximal 64-bit support, if available?'
5244 . ./myread
5245 case "$ans" in
5246 [yY]*) val="$define" ;;
5247 *)     val="$undef"  ;;
5248 esac
5249 set use64bitall
5250 eval $setvar
5251 case "$use64bitall" in
5252 "$define")
5253         case "$use64bitint" in
5254         "$undef")
5255                 cat <<EOM
5256
5257 Since you have chosen a maximally 64-bit build, I'm also turning on
5258 the use of 64-bit integers.
5259 EOM
5260                 use64bitint="$define" ;;
5261         esac
5262         ;;
5263 esac
5264
5265 case "$use64bitall" in
5266 "$define"|true|[yY]*)
5267         case "$ptrsize" in
5268         4)      cat <<EOM >&4
5269
5270 *** You have chosen a maximally 64-bit build, but your pointers
5271 *** are only 4 bytes wide, disabling maximal 64-bitness.
5272
5273 EOM
5274                 use64bitall="$undef"
5275                 case "$use64bitint" in
5276                 "$define"|true|[yY]*) ;;
5277                 *)      cat <<EOM >&4
5278
5279 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5280
5281 EOM
5282                         use64bitint="$define"
5283                         ;;
5284                 esac
5285                 ;;
5286         esac
5287         ;;
5288 esac
5289
5290 case "$use64bitint" in
5291 "$define"|true|[yY]*)
5292 : Look for a hint-file generated 'call-back-unit'.  If the
5293 : user has specified that a 64-bit perl is to be built,
5294 : we may need to set or change some other defaults.
5295         if $test -f use64bitint.cbu; then
5296                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5297                 . ./use64bitint.cbu
5298         fi
5299         case "$longsize" in
5300         4) case "$archname64" in
5301            '') archname64=64int ;;
5302            esac
5303            ;;
5304         esac
5305         ;;
5306 esac
5307
5308 case "$use64bitall" in
5309 "$define"|true|[yY]*)
5310 : Look for a hint-file generated 'call-back-unit'.  If the
5311 : user has specified that a maximally 64-bit perl is to be built,
5312 : we may need to set or change some other defaults.
5313         if $test -f use64bitall.cbu; then
5314                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5315                 . ./use64bitall.cbu
5316         fi
5317         case "$longsize" in
5318         4) case "$archname64" in
5319            ''|64int) archname64=64all ;;
5320            esac
5321            ;;
5322         esac
5323         ;;
5324 esac
5325
5326 echo " "
5327 echo "Checking for GNU C Library..." >&4
5328 cat >try.c <<EOM
5329 #include <stdio.h>
5330 int main()
5331 {
5332 #ifdef __GLIBC__
5333     exit(0);
5334 #else
5335     exit(1);
5336 #endif
5337 }
5338 EOM
5339 set try
5340 if eval $compile_ok && $run ./try; then
5341         val="$define"
5342         echo "You are using the GNU C Library"
5343 else
5344         val="$undef"
5345         echo "You are not using the GNU C Library"
5346 fi
5347 $rm -f try try.*
5348 set d_gnulibc
5349 eval $setvar
5350
5351 : see if nm is to be used to determine whether a symbol is defined or not
5352 case "$usenm" in
5353 '')
5354         dflt=''
5355         case "$d_gnulibc" in
5356         "$define")
5357                 echo " "
5358                 echo "nm probably won't work on the GNU C Library." >&4
5359                 dflt=n
5360                 ;;
5361         esac
5362         case "$dflt" in
5363         '') 
5364                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5365                         echo " "
5366                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5367                         echo "'nm' won't be sufficient on this sytem." >&4
5368                         dflt=n
5369                 fi
5370                 ;;
5371         esac
5372         case "$dflt" in
5373         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5374                 if $test $dflt -gt 20; then
5375                         dflt=y
5376                 else
5377                         dflt=n
5378                 fi
5379                 ;;
5380         esac
5381         ;;
5382 *)
5383         case "$usenm" in
5384         true|$define) dflt=y;;
5385         *) dflt=n;;
5386         esac
5387         ;;
5388 esac
5389 $cat <<EOM
5390
5391 I can use $nm to extract the symbols from your C libraries. This
5392 is a time consuming task which may generate huge output on the disk (up
5393 to 3 megabytes) but that should make the symbols extraction faster. The
5394 alternative is to skip the 'nm' extraction part and to compile a small
5395 test program instead to determine whether each symbol is present. If
5396 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5397 this may be the best solution.
5398
5399 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5400
5401 EOM
5402 rp="Shall I use $nm to extract C symbols from the libraries?"
5403 . ./myread
5404 case "$ans" in
5405 [Nn]*) usenm=false;;
5406 *) usenm=true;;
5407 esac
5408
5409 runnm=$usenm
5410 case "$reuseval" in
5411 true) runnm=false;;
5412 esac
5413
5414 : nm options which may be necessary
5415 case "$nm_opt" in
5416 '') if $test -f /mach_boot; then
5417                 nm_opt=''       # Mach
5418         elif $test -d /usr/ccs/lib; then
5419                 nm_opt='-p'     # Solaris (and SunOS?)
5420         elif $test -f /dgux; then
5421                 nm_opt='-p'     # DG-UX
5422         elif $test -f /lib64/rld; then
5423                 nm_opt='-p'     # 64-bit Irix
5424         else
5425                 nm_opt=''
5426         fi;;
5427 esac
5428
5429 : nm options which may be necessary for shared libraries but illegal
5430 : for archive libraries.  Thank you, Linux.
5431 case "$nm_so_opt" in
5432 '')     case "$myuname" in
5433         *linux*)
5434                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5435                         nm_so_opt='--dynamic'
5436                 fi
5437                 ;;
5438         esac
5439         ;;
5440 esac
5441
5442 case "$runnm" in
5443 true)
5444 : get list of predefined functions in a handy place
5445 echo " "
5446 case "$libc" in
5447 '') libc=unknown
5448         case "$libs" in
5449         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5450         esac
5451         ;;
5452 esac
5453 case "$libs" in
5454 '') ;;
5455 *)  for thislib in $libs; do
5456         case "$thislib" in
5457         -lc|-lc_s)
5458                 : Handle C library specially below.
5459                 ;;
5460         -l*)
5461                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5462                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5463                         :
5464                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5465                         :
5466                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5467                         :
5468                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5469                         :
5470                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5471                         :
5472                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5473                         :
5474                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5475                         :
5476                 else
5477                         try=''
5478                 fi
5479                 libnames="$libnames $try"
5480                 ;;
5481         *) libnames="$libnames $thislib" ;;
5482         esac
5483         done
5484         ;;
5485 esac
5486 xxx=normal
5487 case "$libc" in
5488 unknown)
5489         set /lib/libc.$so
5490         for xxx in $libpth; do
5491                 $test -r $1 || set $xxx/libc.$so
5492                 : The messy sed command sorts on library version numbers.
5493                 $test -r $1 || \
5494                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5495                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5496                                 h
5497                                 s/[0-9][0-9]*/0000&/g
5498                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5499                                 G
5500                                 s/\n/ /' | \
5501                          $sort | $sed -e 's/^.* //'`
5502                 eval set \$$#
5503         done
5504         $test -r $1 || set /usr/ccs/lib/libc.$so
5505         $test -r $1 || set /lib/libsys_s$_a
5506         ;;
5507 *)
5508         set blurfl
5509         ;;
5510 esac
5511 if $test -r "$1"; then
5512         echo "Your (shared) C library seems to be in $1."
5513         libc="$1"
5514 elif $test -r /lib/libc && $test -r /lib/clib; then
5515         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5516         xxx=apollo
5517         libc='/lib/clib /lib/libc'
5518         if $test -r /lib/syslib; then
5519                 echo "(Your math library is in /lib/syslib.)"
5520                 libc="$libc /lib/syslib"
5521         fi
5522 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5523         echo "Your C library seems to be in $libc, as you said before."
5524 elif $test -r $incpath/usr/lib/libc$_a; then
5525         libc=$incpath/usr/lib/libc$_a;
5526         echo "Your C library seems to be in $libc.  That's fine."
5527 elif $test -r /lib/libc$_a; then
5528         libc=/lib/libc$_a;
5529         echo "Your C library seems to be in $libc.  You're normal."
5530 else
5531         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5532                 :
5533         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5534                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5535         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5536                 :
5537         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5538                 :
5539         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5540                 :
5541         else
5542                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5543         fi
5544         if $test -r "$tans"; then
5545                 echo "Your C library seems to be in $tans, of all places."
5546                 libc=$tans
5547         else
5548                 libc='blurfl'
5549         fi
5550 fi
5551 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5552         dflt="$libc"
5553         cat <<EOM
5554
5555 If the guess above is wrong (which it might be if you're using a strange
5556 compiler, or your machine supports multiple models), you can override it here.
5557
5558 EOM
5559 else
5560         dflt=''
5561         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5562         cat >&4 <<EOM
5563 I can't seem to find your C library.  I've looked in the following places:
5564
5565 EOM
5566         $sed 's/^/      /' libpath
5567         cat <<EOM
5568
5569 None of these seems to contain your C library. I need to get its name...
5570
5571 EOM
5572 fi
5573 fn=f
5574 rp='Where is your C library?'
5575 . ./getfile
5576 libc="$ans"
5577
5578 echo " "
5579 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5580 set X `cat libnames`
5581 shift
5582 xxx=files
5583 case $# in 1) xxx=file; esac
5584 echo "Extracting names from the following $xxx for later perusal:" >&4
5585 echo " "
5586 $sed 's/^/      /' libnames >&4
5587 echo " "
5588 $echo $n "This may take a while...$c" >&4
5589
5590 for file in $*; do
5591         case $file in
5592         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5593         *) $nm $nm_opt $file 2>/dev/null;;
5594         esac
5595 done >libc.tmp
5596
5597 $echo $n ".$c"
5598 $grep fprintf libc.tmp > libc.ptf
5599 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5600 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5601 xxx='[ADTSIW]'
5602 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5603         eval $xscan;\
5604         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5605                 eval $xrun
5606 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5607         eval $xscan;\
5608         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5609                 eval $xrun
5610 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5611         eval $xscan;\
5612         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5613                 eval $xrun
5614 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5615         eval $xscan;\
5616         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5617                 eval $xrun
5618 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5619         eval $xscan;\
5620         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5621                 eval $xrun
5622 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5623         eval $xscan;\
5624         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5625                 eval $xrun
5626 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5627                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5628         eval $xscan;\
5629         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5630                 eval $xrun
5631 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5632         eval $xscan;\
5633         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5634                 eval $xrun
5635 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5636         eval $xscan;\
5637         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5638                 eval $xrun
5639 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5640         eval $xscan;\
5641         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5642                 eval $xrun
5643 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5644         eval $xscan;\
5645         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5646                 eval $xrun
5647 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5648         eval $xscan;\
5649         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5650                 eval $xrun
5651 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5652         eval $xscan;\
5653         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5654                 eval $xrun
5655 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5656         eval $xscan;\
5657         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5658                 eval $xrun
5659 else
5660         $nm -p $* 2>/dev/null >libc.tmp
5661         $grep fprintf libc.tmp > libc.ptf
5662         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5663                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5664         then
5665                 nm_opt='-p'
5666                 eval $xrun
5667         else
5668                 echo " "
5669                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5670                 com=''
5671                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5672                         for thisname in $libnames $libc; do
5673                                 $ar t $thisname >>libc.tmp
5674                         done
5675                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5676                         echo "Ok." >&4
5677                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5678                         # Repeat libc to extract forwarders to DLL entries too
5679                         for thisname in $libnames $libc; do
5680                                 $ar tv $thisname >>libc.tmp
5681                                 # Revision 50 of EMX has bug in $ar.
5682                                 # it will not extract forwarders to DLL entries
5683                                 # Use emximp which will extract exactly them.
5684                                 emximp -o tmp.imp $thisname \
5685                                     2>/dev/null && \
5686                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5687                                     < tmp.imp >>libc.tmp
5688                                 $rm tmp.imp
5689                         done
5690                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5691                         echo "Ok." >&4
5692                 else
5693                         echo "$ar didn't seem to work right." >&4
5694                         echo "Maybe this is a Cray...trying bld instead..." >&4
5695                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5696                         then
5697                                 for thisname in $libnames; do
5698                                         bld t $libnames | \
5699                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5700                                         $ar t $thisname >>libc.tmp
5701                                 done
5702                                 echo "Ok." >&4
5703                         else
5704                                 echo "That didn't work either.  Giving up." >&4
5705                                 exit 1
5706                         fi
5707                 fi
5708         fi
5709 fi
5710 nm_extract="$com"
5711 if $test -f /lib/syscalls.exp; then
5712         echo " "
5713         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5714         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5715 fi
5716 ;;
5717 esac
5718 $rm -f libnames libpath
5719
5720 : is a C symbol defined?
5721 csym='tlook=$1;
5722 case "$3" in
5723 -v) tf=libc.tmp; tc=""; tdc="";;
5724 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5725 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5726 esac;
5727 tx=yes;
5728 case "$reuseval-$4" in
5729 true-) ;;
5730 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5731 esac;
5732 case "$tx" in
5733 yes)
5734         case "$runnm" in
5735         true)
5736                 if $contains $tlook $tf >/dev/null 2>&1;
5737                 then tval=true;
5738                 else tval=false;
5739                 fi;;
5740         *)
5741                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5742                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5743                 then tval=true;
5744                 else tval=false;
5745                 fi;
5746                 $rm -f t t.c;;
5747         esac;;
5748 *)
5749         case "$tval" in
5750         $define) tval=true;;
5751         *) tval=false;;
5752         esac;;
5753 esac;
5754 eval "$2=$tval"'
5755
5756 : define an is-in-libc? function
5757 inlibc='echo " "; td=$define; tu=$undef;
5758 sym=$1; var=$2; eval "was=\$$2";
5759 tx=yes;
5760 case "$reuseval$was" in
5761 true) ;;
5762 true*) tx=no;;
5763 esac;
5764 case "$tx" in
5765 yes)
5766         set $sym tres -f;
5767         eval $csym;
5768         case "$tres" in
5769         true)
5770                 echo "$sym() found." >&4;
5771                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5772         *)
5773                 echo "$sym() NOT found." >&4;
5774                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5775         esac;;
5776 *)
5777         case "$was" in
5778         $define) echo "$sym() found." >&4;;
5779         *) echo "$sym() NOT found." >&4;;
5780         esac;;
5781 esac'
5782
5783 : see if sqrtl exists
5784 set sqrtl d_sqrtl
5785 eval $inlibc
5786
5787 : check for length of double
5788 echo " "
5789 case "$doublesize" in
5790 '')
5791         echo "Checking to see how big your double precision numbers are..." >&4
5792         $cat >try.c <<'EOCP'
5793 #include <stdio.h>
5794 int main()
5795 {
5796     printf("%d\n", (int)sizeof(double));
5797     exit(0);
5798 }
5799 EOCP
5800         set try
5801         if eval $compile_ok; then
5802                 doublesize=`$run ./try`
5803                 echo "Your double is $doublesize bytes long."
5804         else
5805                 dflt='8'
5806                 echo "(I can't seem to compile the test program.  Guessing...)"
5807                 rp="What is the size of a double precision number (in bytes)?"
5808                 . ./myread
5809                 doublesize="$ans"
5810         fi
5811         ;;
5812 esac
5813 $rm -f try.c try
5814
5815 : check for long doubles
5816 echo " "
5817 echo "Checking to see if you have long double..." >&4
5818 echo 'int main() { long double x = 7.0; }' > try.c
5819 set try
5820 if eval $compile; then
5821         val="$define"
5822         echo "You have long double."
5823 else
5824         val="$undef"
5825         echo "You do not have long double."
5826 fi
5827 $rm try.*
5828 set d_longdbl
5829 eval $setvar
5830
5831 : check for length of long double
5832 case "${d_longdbl}${longdblsize}" in
5833 $define)
5834         echo " "
5835         echo "Checking to see how big your long doubles are..." >&4
5836         $cat >try.c <<'EOCP'
5837 #include <stdio.h>
5838 int main()
5839 {
5840         printf("%d\n", sizeof(long double));
5841 }
5842 EOCP
5843         set try
5844         set try
5845         if eval $compile; then
5846                 longdblsize=`$run ./try`
5847                 echo "Your long doubles are $longdblsize bytes long."
5848         else
5849                 dflt='8'
5850                 echo " "
5851                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5852                 rp="What is the size of a long double (in bytes)?"
5853                 . ./myread
5854                 longdblsize="$ans"
5855         fi
5856         if $test "X$doublesize" = "X$longdblsize"; then
5857                 echo "(That isn't any different from an ordinary double.)"
5858         fi      
5859         ;;
5860 esac
5861 $rm -f try.* try
5862
5863 echo " "
5864
5865 if $test X"$d_longdbl" = X"$define"; then
5866
5867 echo "Checking how to print long doubles..." >&4
5868
5869 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
5870         $cat >try.c <<'EOCP'
5871 #include <sys/types.h>
5872 #include <stdio.h>
5873 int main() {
5874   double d = 123.456;
5875   printf("%.3f\n", d);
5876 }
5877 EOCP
5878         set try
5879         if eval $compile; then
5880                 yyy=`$run ./try`
5881                 case "$yyy" in
5882                 123.456)
5883                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
5884                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
5885                         echo "We will use %f."
5886                         ;;
5887                 esac
5888         fi
5889 fi
5890
5891 if $test X"$sPRIfldbl" = X; then
5892         $cat >try.c <<'EOCP'
5893 #include <sys/types.h>
5894 #include <stdio.h>
5895 int main() {
5896   long double d = 123.456;
5897   printf("%.3Lf\n", d);
5898 }
5899 EOCP
5900         set try
5901         if eval $compile; then
5902                 yyy=`$run ./try`
5903                 case "$yyy" in
5904                 123.456)
5905                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
5906                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
5907                         echo "We will use %Lf."
5908                         ;;
5909                 esac
5910         fi
5911 fi
5912
5913 if $test X"$sPRIfldbl" = X; then
5914         $cat >try.c <<'EOCP'
5915 #include <sys/types.h>
5916 #include <stdio.h>
5917 int main() {
5918   long double d = 123.456;
5919   printf("%.3llf\n", d);
5920 }
5921 EOCP
5922         set try
5923         if eval $compile; then
5924                 yyy=`$run ./try`
5925                 case "$yyy" in
5926                 123.456)
5927                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
5928                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
5929                         echo "We will use %llf."
5930                         ;;
5931                 esac
5932         fi
5933 fi
5934
5935 if $test X"$sPRIfldbl" = X; then
5936         $cat >try.c <<'EOCP'
5937 #include <sys/types.h>
5938 #include <stdio.h>
5939 int main() {
5940   long double d = 123.456;
5941   printf("%.3lf\n", d);
5942 }
5943 EOCP
5944         set try
5945         if eval $compile; then
5946                 yyy=`$run ./try`
5947                 case "$yyy" in
5948                 123.456)
5949                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
5950                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
5951                         echo "We will use %lf."
5952                         ;;
5953                 esac
5954         fi
5955 fi
5956
5957 if $test X"$sPRIfldbl" = X; then
5958         echo "Cannot figure out how to print long doubles." >&4
5959 else
5960         sSCNfldbl=$sPRIfldbl    # expect consistency
5961 fi
5962
5963 $rm -f try try.*
5964
5965 fi # d_longdbl
5966
5967 case "$sPRIfldbl" in
5968 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
5969         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
5970         d_SCNfldbl="$undef";
5971         ;;
5972 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
5973         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
5974         d_SCNfldbl="$define";
5975         ;;
5976 esac
5977
5978 : see if modfl exists
5979 set modfl d_modfl
5980 eval $inlibc
5981
5982 d_modfl_pow32_bug="$undef"
5983
5984 case "$d_longdbl$d_modfl" in
5985 $define$define)
5986         $cat <<EOM
5987 Checking to see whether your modfl() is okay for large values...
5988 EOM
5989 $cat >try.c <<EOCP
5990 #include <math.h> 
5991 #include <stdio.h>
5992 int main() {
5993     long double nv = 4294967303.15;
5994     long double v, w;
5995     v = modfl(nv, &w);         
5996 #ifdef __GLIBC__
5997     printf("glibc");
5998 #endif
5999     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
6000     return 0;
6001 }
6002 EOCP
6003         case "$osname:$gccversion" in
6004         aix:)   saveccflags="$ccflags"
6005                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
6006         esac
6007         set try
6008         if eval $compile; then
6009                 foo=`$run ./try`
6010                 case "$foo" in
6011                 *" 4294967303.150000 1.150000 4294967302.000000")
6012                         echo >&4 "Your modfl() is broken for large values."
6013                         d_modfl_pow32_bug="$define"
6014                         case "$foo" in
6015                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
6016                         ;;
6017                         esac
6018                         ;;
6019                 *" 4294967303.150000 0.150000 4294967303.000000")
6020                         echo >&4 "Your modfl() seems okay for large values."
6021                         ;;
6022                 *)      echo >&4 "I don't understand your modfl() at all."
6023                         d_modfl="$undef"
6024                         ;;
6025                 esac
6026                 $rm -f try.* try core core.try.*
6027         else
6028                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
6029                 d_modfl="$undef"
6030         fi
6031         case "$osname:$gccversion" in
6032         aix:)   ccflags="$saveccflags" ;; # restore
6033         esac
6034         ;;
6035 esac
6036
6037 case "$ccflags" in
6038 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6039 esac
6040
6041 case "$uselongdouble" in
6042 $define|true|[yY]*)     dflt='y';;
6043 *) dflt='n';;
6044 esac
6045 cat <<EOM
6046
6047 Perl can be built to take advantage of long doubles which
6048 (if available) may give more accuracy and range for floating point numbers.
6049
6050 If this doesn't make any sense to you, just accept the default '$dflt'.
6051 EOM
6052 rp='Try to use long doubles if available?'
6053 . ./myread
6054 case "$ans" in
6055 y|Y)    val="$define"   ;;
6056 *)      val="$undef"    ;;
6057 esac
6058 set uselongdouble
6059 eval $setvar
6060
6061 case "$uselongdouble" in
6062 true|[yY]*) uselongdouble="$define" ;;
6063 esac
6064
6065 case "$uselongdouble" in
6066 $define)
6067 : Look for a hint-file generated 'call-back-unit'.  If the
6068 : user has specified that long doubles should be used,
6069 : we may need to set or change some other defaults.
6070         if $test -f uselongdouble.cbu; then
6071                 echo "Your platform has some specific hints for long doubles, using them..."
6072                 . ./uselongdouble.cbu
6073         else
6074                 $cat <<EOM
6075 (Your platform doesn't have any specific hints for long doubles.)
6076 EOM
6077         fi
6078         ;;
6079 esac
6080
6081 message=X
6082 case "$uselongdouble:$d_sqrtl:$d_modfl" in
6083 $define:$define:$define)
6084         : You have both
6085         ;;
6086 $define:$define:$undef)
6087         message="I could not find modfl"
6088         ;;
6089 $define:$undef:$define)
6090         message="I could not find sqrtl"
6091         ;;
6092 $define:$undef:$undef)
6093         message="I found neither sqrtl nor modfl"
6094         ;;
6095 esac
6096
6097 if $test "$message" != X; then
6098         $cat <<EOM >&4
6099
6100 *** You requested the use of long doubles but you do not seem to have
6101 *** the mathematic functions for long doubles.
6102 *** ($message)
6103 *** I'm disabling the use of long doubles.
6104
6105 EOM
6106
6107         uselongdouble=$undef
6108 fi
6109
6110 case "$useperlio" in
6111 $define|true|[yY]*|'')  dflt='y';;
6112 *) dflt='n';;
6113 esac
6114 cat <<EOM
6115
6116 Previous version of $package used the standard IO mechanisms as
6117 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
6118 alternate IO mechanisms via the PerlIO abstraction layer, but the
6119 stdio mechanism is still available if needed.  The abstraction layer
6120 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
6121 Using PerlIO with sfio may cause problems with some extension modules.
6122
6123 If this doesn't make any sense to you, just accept the default '$dflt'.
6124 EOM
6125 rp='Use the PerlIO abstraction layer?'
6126 . ./myread
6127 case "$ans" in
6128 y|Y) 
6129         val="$define"
6130         ;;
6131 *)      
6132         echo "Ok, doing things the stdio way."
6133         val="$undef"
6134         ;;
6135 esac
6136 set useperlio
6137 eval $setvar 
6138
6139 case "$usesocks" in
6140 $define|true|[yY]*)
6141         case "$useperlio" in
6142         $define|true|[yY]*) ;;
6143         *)      cat >&4 <<EOM
6144
6145 You are using the SOCKS proxy protocol library which means that you
6146 should also use the PerlIO layer.  You may be headed for trouble.
6147
6148 EOM
6149                 ;;
6150         esac
6151         ;;
6152 esac
6153
6154         
6155 : determine the architecture name
6156 echo " "
6157 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6158         tarch=`arch`"-$osname"
6159 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6160         if uname -m > tmparch 2>&1 ; then
6161                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6162                         -e 's/$/'"-$osname/" tmparch`
6163         else
6164                 tarch="$osname"
6165         fi
6166         $rm -f tmparch
6167 else
6168         tarch="$osname"
6169 fi
6170 case "$myarchname" in
6171 ''|"$tarch") ;;
6172 *)
6173         echo "(Your architecture name used to be $myarchname.)"
6174         archname=''
6175         ;;
6176 esac
6177 case "$targetarch" in
6178 '') ;;
6179 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6180 esac
6181 myarchname="$tarch"
6182 case "$archname" in
6183 '') dflt="$tarch";;
6184 *) dflt="$archname";;
6185 esac
6186 rp='What is your architecture name'
6187 . ./myread
6188 archname="$ans"
6189 case "$usethreads" in
6190 $define)
6191         echo "Threads selected." >&4
6192         case "$archname" in
6193         *-thread*) echo "...and architecture name already has -thread." >&4
6194                 ;;
6195         *)      archname="$archname-thread"
6196                 echo "...setting architecture name to $archname." >&4
6197                 ;;
6198         esac
6199         ;;
6200 esac
6201 case "$usemultiplicity" in
6202 $define)
6203         echo "Multiplicity selected." >&4
6204         case "$archname" in
6205         *-multi*) echo "...and architecture name already has -multi." >&4
6206                 ;;
6207         *)      archname="$archname-multi"
6208                 echo "...setting architecture name to $archname." >&4
6209                 ;;
6210         esac
6211         ;;
6212 esac
6213 case "$use64bitint$use64bitall" in
6214 *"$define"*)
6215         case "$archname64" in
6216         '')
6217                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6218                 ;;
6219         *)
6220                 case "$use64bitint" in
6221                 "$define") echo "64 bit integers selected." >&4 ;;
6222                 esac
6223                 case "$use64bitall" in
6224                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6225                 esac
6226                 case "$archname" in
6227                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6228                         ;;
6229                 *)      archname="$archname-$archname64"
6230                         echo "...setting architecture name to $archname." >&4
6231                         ;;
6232                 esac
6233                 ;;
6234         esac
6235 esac
6236 case "$uselongdouble" in
6237 $define)
6238         echo "Long doubles selected." >&4
6239         case "$longdblsize" in
6240         $doublesize)
6241                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6242                 ;;
6243         *)
6244                 case "$archname" in
6245                 *-ld*) echo "...and architecture name already has -ld." >&4
6246                         ;;
6247                 *)      archname="$archname-ld"
6248                         echo "...setting architecture name to $archname." >&4
6249                         ;;
6250                 esac
6251                 ;;
6252         esac
6253         ;;
6254 esac
6255 case "$useperlio" in
6256 $define)
6257         echo "Perlio selected." >&4
6258         ;;
6259 *)
6260         echo "Perlio not selected, using stdio." >&4
6261         case "$archname" in
6262         *-stdio*) echo "...and architecture name already has -stdio." >&4
6263                 ;;
6264         *)      archname="$archname-stdio"
6265                 echo "...setting architecture name to $archname." >&4
6266                 ;;
6267         esac
6268         ;;
6269 esac
6270
6271 : determine root of directory hierarchy where package will be installed.
6272 case "$prefix" in
6273 '')
6274         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6275         ;;
6276 *)
6277         dflt="$prefix"
6278         ;;
6279 esac
6280 $cat <<EOM
6281
6282 By default, $package will be installed in $dflt/bin, manual pages
6283 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6284 installation directories. Typically this is something like /usr/local.
6285 If you wish to have binaries under /usr/bin but other parts of the
6286 installation under /usr/local, that's ok: you will be prompted
6287 separately for each of the installation directories, the prefix being
6288 only used to set the defaults.
6289
6290 EOM
6291 fn=d~
6292 rp='Installation prefix to use?'
6293 . ./getfile
6294 oldprefix=''
6295 case "$prefix" in
6296 '') ;;
6297 *)
6298         case "$ans" in
6299         "$prefix") ;;
6300         *) oldprefix="$prefix";;
6301         esac
6302         ;;
6303 esac
6304 prefix="$ans"
6305 prefixexp="$ansexp"
6306
6307 case "$afsroot" in
6308 '')     afsroot=/afs ;;
6309 *)      afsroot=$afsroot ;;
6310 esac
6311
6312 : is AFS running?
6313 echo " "
6314 case "$afs" in
6315 $define|true)   afs=true ;;
6316 $undef|false)   afs=false ;;
6317 *)      if test -d $afsroot; then
6318                 afs=true
6319         else
6320                 afs=false
6321         fi
6322         ;;
6323 esac
6324 if $afs; then
6325         echo "AFS may be running... I'll be extra cautious then..." >&4
6326 else
6327         echo "AFS does not seem to be running..." >&4
6328 fi
6329
6330 : determine installation prefix for where package is to be installed.
6331 if $afs; then 
6332 $cat <<EOM
6333
6334 Since you are running AFS, I need to distinguish the directory in which
6335 files will reside from the directory in which they are installed (and from
6336 which they are presumably copied to the former directory by occult means).
6337
6338 EOM
6339         case "$installprefix" in
6340         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6341         *) dflt="$installprefix";;
6342         esac
6343 else
6344 $cat <<EOM
6345
6346 In some special cases, particularly when building $package for distribution,
6347 it is convenient to distinguish between the directory in which files should 
6348 be installed from the directory ($prefix) in which they 
6349 will eventually reside.  For most users, these two directories are the same.
6350
6351 EOM
6352         case "$installprefix" in
6353         '') dflt=$prefix ;;
6354         *) dflt=$installprefix;;
6355         esac
6356 fi
6357 fn=d~
6358 rp='What installation prefix should I use for installing files?'
6359 . ./getfile
6360 installprefix="$ans"
6361 installprefixexp="$ansexp"
6362
6363 : set the prefixit variable, to compute a suitable default value
6364 prefixit='case "$3" in
6365 ""|none)
6366         case "$oldprefix" in
6367         "") eval "$1=\"\$$2\"";;
6368         *)
6369                 case "$3" in
6370                 "") eval "$1=";;
6371                 none)
6372                         eval "tp=\"\$$2\"";
6373                         case "$tp" in
6374                         ""|" ") eval "$1=\"\$$2\"";;
6375                         *) eval "$1=";;
6376                         esac;;
6377                 esac;;
6378         esac;;
6379 *)
6380         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6381         case "$tp" in
6382         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6383         /*-$oldprefix/*|\~*-$oldprefix/*)
6384                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6385         *) eval "$1=\"\$$2\"";;
6386         esac;;
6387 esac'
6388
6389 : get the patchlevel
6390 echo " "
6391 echo "Getting the current patchlevel..." >&4
6392 if $test -r $rsrc/patchlevel.h;then
6393         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6394         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6395         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6396         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6397         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6398         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6399        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6400 else
6401         revision=0
6402         patchlevel=0
6403         subversion=0
6404         api_revision=0
6405         api_version=0
6406         api_subversion=0
6407         perl_patchlevel=0
6408         $echo "(You do not have patchlevel.h.  Eek.)"
6409 fi
6410 if $test -r $rsrc/.patch ; then  
6411         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6412                 perl_patchlevel=`cat $rsrc/.patch`
6413         fi
6414 fi
6415 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6416 version_patchlevel_string="version $patchlevel subversion $subversion"
6417 case "$perl_patchlevel" in
6418 0|'') ;;
6419 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6420 esac
6421
6422 $echo "(You have $package $version_patchlevel_string.)"
6423
6424 case "$osname" in
6425 dos|vms)
6426         : XXX Should be a Configure test for double-dots in filenames.
6427         version=`echo $revision $patchlevel $subversion | \
6428                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6429         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6430                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6431         ;;
6432 *)
6433         version=`echo $revision $patchlevel $subversion | \
6434                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6435         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6436                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6437         ;;
6438 esac
6439 : Special case the 5.005_xx maintenance series, which used 5.005
6440 : without any subversion label as a subdirectory in $sitelib
6441 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6442         api_versionstring='5.005'
6443 fi
6444
6445 : determine installation style
6446 : For now, try to deduce it from prefix unless it is already set.
6447 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6448 case "$installstyle" in
6449 '')     case "$prefix" in
6450                 *perl*) dflt='lib';;
6451                 *) dflt='lib/perl5' ;;
6452         esac
6453         ;;
6454 *)      dflt="$installstyle" ;;
6455 esac
6456 : Probably not worth prompting for this since we prompt for all
6457 : the directories individually, and the prompt would be too long and
6458 : confusing anyway.
6459 installstyle=$dflt
6460
6461 : determine where private library files go
6462 : Usual default is /usr/local/lib/perl5/$version.
6463 : Also allow things like /opt/perl/lib/$version, since 
6464 : /opt/perl/lib/perl5... would be redundant.
6465 : The default "style" setting is made in installstyle.U
6466 case "$installstyle" in
6467 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6468 *)       set dflt privlib lib/$version ;;
6469 esac
6470 eval $prefixit
6471 $cat <<EOM
6472
6473 There are some auxiliary files for $package that need to be put into a
6474 private library directory that is accessible by everyone.
6475
6476 EOM
6477 fn=d~+
6478 rp='Pathname where the private library files will reside?'
6479 . ./getfile
6480 privlib="$ans"
6481 privlibexp="$ansexp"
6482 : Change installation prefix, if necessary.
6483 if $test X"$prefix" != X"$installprefix"; then
6484         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6485 else
6486         installprivlib="$privlibexp"
6487 fi
6488
6489 : set the prefixup variable, to restore leading tilda escape
6490 prefixup='case "$prefixexp" in
6491 "$prefix") ;;
6492 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6493 esac'
6494
6495 : determine where public architecture dependent libraries go
6496 set archlib archlib
6497 eval $prefixit
6498 : privlib default is /usr/local/lib/$package/$version
6499 : archlib default is /usr/local/lib/$package/$version/$archname
6500 : privlib may have an optional trailing /share.
6501 tdflt=`echo $privlib | $sed 's,/share$,,'`
6502 tdflt=$tdflt/$archname
6503 case "$archlib" in
6504 '')     dflt=$tdflt
6505         ;;
6506 *)      dflt="$archlib"
6507     ;;
6508 esac
6509 $cat <<EOM
6510
6511 $spackage contains architecture-dependent library files.  If you are
6512 sharing libraries in a heterogeneous environment, you might store
6513 these files in a separate location.  Otherwise, you can just include
6514 them with the rest of the public library files.
6515
6516 EOM
6517 fn=d+~
6518 rp='Where do you want to put the public architecture-dependent libraries?'
6519 . ./getfile
6520 archlib="$ans"
6521 archlibexp="$ansexp"
6522 if $test X"$archlib" = X"$privlib"; then
6523         d_archlib="$undef"
6524 else
6525         d_archlib="$define"
6526 fi
6527 : Change installation prefix, if necessary.
6528 if $test X"$prefix" != X"$installprefix"; then
6529         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6530 else
6531         installarchlib="$archlibexp"
6532 fi
6533
6534
6535 : Binary compatibility with 5.005 is not possible for builds
6536 : with advanced features
6537 case "$usethreads$usemultiplicity" in
6538 *define*)
6539         bincompat5005="$undef"
6540         d_bincompat5005="$undef"
6541         ;;
6542 *)      $cat <<EOM
6543
6544 This version of Perl can be compiled for binary compatibility with 5.005.
6545 If you decide to do so, you will be able to continue using most of the
6546 extensions that were compiled for Perl 5.005.
6547
6548 EOM
6549         case "$bincompat5005$d_bincompat5005" in
6550         *"$undef"*) dflt=n ;;
6551         *) dflt=y ;;
6552         esac
6553         rp='Binary compatibility with Perl 5.005?'
6554         . ./myread
6555         case "$ans" in
6556         y*) val="$define" ;;
6557         *)  val="$undef" ;;
6558         esac
6559         set d_bincompat5005
6560         eval $setvar
6561         case "$d_bincompat5005" in
6562         "$define")
6563                 bincompat5005="$define"
6564                 ;;
6565         *)      bincompat5005="$undef"
6566                 d_bincompat5005="$undef"
6567                 ;;
6568         esac
6569         ;;
6570 esac
6571
6572
6573 : see if setuid scripts can be secure
6574 $cat <<EOM
6575
6576 Some kernels have a bug that prevents setuid #! scripts from being
6577 secure.  Some sites have disabled setuid #! scripts because of this.
6578
6579 First let's decide if your kernel supports secure setuid #! scripts.
6580 (If setuid #! scripts would be secure but have been disabled anyway,
6581 don't say that they are secure if asked.)
6582
6583 EOM
6584
6585 val="$undef"
6586 if $test -d /dev/fd; then
6587         echo "#!$ls" >reflect
6588         chmod +x,u+s reflect
6589         ./reflect >flect 2>&1
6590         if $contains "/dev/fd" flect >/dev/null; then
6591                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6592                 val="$define"
6593         else
6594                 $cat <<EOM
6595 If you are not sure if they are secure, I can check but I'll need a
6596 username and password different from the one you are using right now.
6597 If you don't have such a username or don't want me to test, simply
6598 enter 'none'.
6599
6600 EOM
6601                 rp='Other username to test security of setuid scripts with?'
6602                 dflt='none'
6603                 . ./myread
6604                 case "$ans" in
6605                 n|none)
6606                         case "$d_suidsafe" in
6607                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6608                                 dflt=n;;
6609                         "$undef")
6610                                 echo "Well, the $hint value is *not* secure." >&4
6611                                 dflt=n;;
6612                         *)      echo "Well, the $hint value *is* secure." >&4
6613                                 dflt=y;;
6614                         esac
6615                         ;;
6616                 *)
6617                         $rm -f reflect flect
6618                         echo "#!$ls" >reflect
6619                         chmod +x,u+s reflect
6620                         echo >flect
6621                         chmod a+w flect
6622                         echo '"su" will (probably) prompt you for '"$ans's password."
6623                         su $ans -c './reflect >flect'
6624                         if $contains "/dev/fd" flect >/dev/null; then
6625                                 echo "Okay, it looks like setuid scripts are secure." >&4
6626                                 dflt=y
6627                         else
6628                                 echo "I don't think setuid scripts are secure." >&4
6629                                 dflt=n
6630                         fi
6631                         ;;
6632                 esac
6633                 rp='Does your kernel have *secure* setuid scripts?'
6634                 . ./myread
6635                 case "$ans" in
6636                 [yY]*)  val="$define";;
6637                 *)      val="$undef";;
6638                 esac
6639         fi
6640 else
6641         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6642         echo "(That's for file descriptors, not floppy disks.)"
6643         val="$undef"
6644 fi
6645 set d_suidsafe
6646 eval $setvar
6647
6648 $rm -f reflect flect
6649
6650 : now see if they want to do setuid emulation
6651 echo " "
6652 val="$undef"
6653 case "$d_suidsafe" in
6654 "$define")
6655         val="$undef"
6656         echo "No need to emulate SUID scripts since they are secure here." >&4
6657         ;;
6658 *)
6659         $cat <<EOM
6660 Some systems have disabled setuid scripts, especially systems where
6661 setuid scripts cannot be secure.  On systems where setuid scripts have
6662 been disabled, the setuid/setgid bits on scripts are currently
6663 useless.  It is possible for $package to detect those bits and emulate
6664 setuid/setgid in a secure fashion.  This emulation will only work if
6665 setuid scripts have been disabled in your kernel.
6666
6667 EOM
6668         case "$d_dosuid" in
6669         "$define") dflt=y ;;
6670         *) dflt=n ;;
6671         esac
6672         rp="Do you want to do setuid/setgid emulation?"
6673         . ./myread
6674         case "$ans" in
6675         [yY]*)  val="$define";;
6676         *)      val="$undef";;
6677         esac
6678         ;;
6679 esac
6680 set d_dosuid
6681 eval $setvar
6682
6683 : see if this is a malloc.h system
6684 set malloc.h i_malloc
6685 eval $inhdr
6686
6687 : see if stdlib is available
6688 set stdlib.h i_stdlib
6689 eval $inhdr
6690
6691 : determine which malloc to compile in
6692 echo " "
6693 case "$usemymalloc" in
6694 [yY]*|true|$define)     dflt='y' ;;
6695 [nN]*|false|$undef)     dflt='n' ;;
6696 *)      case "$ptrsize" in
6697         4) dflt='y' ;;
6698         *) dflt='n' ;;
6699         esac
6700         ;;
6701 esac
6702 rp="Do you wish to attempt to use the malloc that comes with $package?"
6703 . ./myread
6704 usemymalloc="$ans"
6705 case "$ans" in
6706 y*|true)
6707         usemymalloc='y'
6708         mallocsrc='malloc.c'
6709         mallocobj="malloc$_o"
6710         d_mymalloc="$define"
6711         case "$libs" in
6712         *-lmalloc*)
6713                 : Remove malloc from list of libraries to use
6714                 echo "Removing unneeded -lmalloc from library list" >&4
6715                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6716                 shift
6717                 libs="$*"
6718                 echo "libs = $libs" >&4
6719                 ;;
6720         esac
6721         ;;
6722 *)
6723         usemymalloc='n'
6724         mallocsrc=''
6725         mallocobj=''
6726         d_mymalloc="$undef"
6727         ;;
6728 esac
6729
6730 : compute the return types of malloc and free
6731 echo " "
6732 $cat >malloc.c <<END
6733 #$i_malloc I_MALLOC
6734 #$i_stdlib I_STDLIB
6735 #include <stdio.h>
6736 #include <sys/types.h>
6737 #ifdef I_MALLOC
6738 #include <malloc.h>
6739 #endif
6740 #ifdef I_STDLIB
6741 #include <stdlib.h>
6742 #endif
6743 #ifdef TRY_MALLOC
6744 void *malloc();
6745 #endif
6746 #ifdef TRY_FREE
6747 void free();
6748 #endif
6749 END
6750 case "$malloctype" in
6751 '')
6752         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6753                 malloctype='void *'
6754         else
6755                 malloctype='char *'
6756         fi
6757         ;;
6758 esac
6759 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6760
6761 case "$freetype" in
6762 '')
6763         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6764                 freetype='void'
6765         else
6766                 freetype='int'
6767         fi
6768         ;;
6769 esac
6770 echo "Your system uses $freetype free(), it would seem." >&4
6771 $rm -f malloc.[co]
6772 $cat <<EOM
6773
6774 After $package is installed, you may wish to install various
6775 add-on modules and utilities.  Typically, these add-ons will
6776 be installed under $prefix with the rest
6777 of this package.  However, you may wish to install such add-ons
6778 elsewhere under a different prefix.
6779
6780 If you do not wish to put everything under a single prefix, that's
6781 ok.  You will be prompted for the individual locations; this siteprefix
6782 is only used to suggest the defaults.
6783
6784 The default should be fine for most people.
6785
6786 EOM
6787 fn=d~+
6788 rp='Installation prefix to use for add-on modules and utilities?'
6789 : XXX Here might be another good place for an installstyle setting.
6790 case "$siteprefix" in
6791 '') dflt=$prefix ;;
6792 *)  dflt=$siteprefix ;;
6793 esac
6794 . ./getfile
6795 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6796 oldsiteprefix=''
6797 case "$siteprefix" in
6798 '') ;;
6799 *)      case "$ans" in
6800         "$prefix") ;;
6801         *) oldsiteprefix="$prefix";;
6802         esac
6803         ;;
6804 esac
6805 siteprefix="$ans"
6806 siteprefixexp="$ansexp"
6807
6808 : determine where site specific libraries go.
6809 : Usual default is /usr/local/lib/perl5/site_perl/$version
6810 : The default "style" setting is made in installstyle.U
6811 : XXX No longer works with Prefixit stuff.
6812 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6813 case "$sitelib" in
6814 '') case "$installstyle" in
6815         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6816         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6817         esac
6818         ;;
6819 *)      dflt="$sitelib"
6820         ;;
6821 esac
6822 $cat <<EOM
6823
6824 The installation process will create a directory for
6825 site-specific extensions and modules.  Most users find it convenient
6826 to place all site-specific files in this directory rather than in the
6827 main distribution directory.
6828
6829 EOM
6830 fn=d~+
6831 rp='Pathname for the site-specific library files?'
6832 . ./getfile
6833 sitelib="$ans"
6834 sitelibexp="$ansexp"
6835 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6836 : Change installation prefix, if necessary.
6837 if $test X"$prefix" != X"$installprefix"; then
6838         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6839 else
6840         installsitelib="$sitelibexp"
6841 fi
6842
6843 : determine where site specific architecture-dependent libraries go.
6844 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6845 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6846 : sitelib may have an optional trailing /share.
6847 case "$sitearch" in
6848 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6849         dflt="$dflt/$archname"
6850         ;;
6851 *)      dflt="$sitearch"
6852         ;;
6853 esac
6854 set sitearch sitearch none
6855 eval $prefixit
6856 $cat <<EOM
6857
6858 The installation process will also create a directory for
6859 architecture-dependent site-specific extensions and modules.
6860
6861 EOM
6862 fn=d~+
6863 rp='Pathname for the site-specific architecture-dependent library files?'
6864 . ./getfile
6865 sitearch="$ans"
6866 sitearchexp="$ansexp"
6867 : Change installation prefix, if necessary.
6868 if $test X"$prefix" != X"$installprefix"; then
6869         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6870 else
6871         installsitearch="$sitearchexp"
6872 fi
6873
6874 $cat <<EOM
6875
6876 The installation process will also create a directory for
6877 vendor-supplied add-ons.  Vendors who supply perl with their system
6878 may find it convenient to place all vendor-supplied files in this
6879 directory rather than in the main distribution directory.  This will
6880 ease upgrades between binary-compatible maintenance versions of perl.
6881
6882 Of course you may also use these directories in whatever way you see
6883 fit.  For example, you might use them to access modules shared over a
6884 company-wide network.
6885
6886 The default answer should be fine for most people.
6887 This causes further questions about vendor add-ons to be skipped
6888 and no vendor-specific directories will be configured for perl.
6889
6890 EOM
6891 rp='Do you want to configure vendor-specific add-on directories?'
6892 case "$usevendorprefix" in
6893 define|true|[yY]*) dflt=y ;;
6894 *)      : User may have set vendorprefix directly on Configure command line.
6895         case "$vendorprefix" in
6896         ''|' ') dflt=n ;;
6897         *)      dflt=y ;;
6898         esac
6899         ;;
6900 esac
6901 . ./myread
6902 case "$ans" in
6903 [yY]*)  fn=d~+
6904         rp='Installation prefix to use for vendor-supplied add-ons?'
6905         case "$vendorprefix" in
6906         '') dflt='' ;;
6907         *)  dflt=$vendorprefix ;;
6908         esac
6909         . ./getfile
6910         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6911         oldvendorprefix=''
6912         case "$vendorprefix" in
6913         '') ;;
6914         *)      case "$ans" in
6915                 "$prefix") ;;
6916                 *) oldvendorprefix="$prefix";;
6917                 esac
6918                 ;;
6919         esac
6920         usevendorprefix="$define"
6921         vendorprefix="$ans"
6922         vendorprefixexp="$ansexp"
6923         ;;
6924 *)      usevendorprefix="$undef"
6925         vendorprefix=''
6926         vendorprefixexp=''
6927         ;;
6928 esac
6929
6930 case "$vendorprefix" in
6931 '')     d_vendorlib="$undef"
6932         vendorlib=''
6933         vendorlibexp=''
6934         ;;
6935 *)      d_vendorlib="$define"
6936         : determine where vendor-supplied modules go.
6937         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6938         case "$vendorlib" in
6939         '')
6940                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6941                 case "$installstyle" in
6942                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6943                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6944                 esac
6945                 ;;
6946         *)      dflt="$vendorlib"
6947                 ;;
6948         esac
6949         fn=d~+
6950         rp='Pathname for the vendor-supplied library files?'
6951         . ./getfile
6952         vendorlib="$ans"
6953         vendorlibexp="$ansexp"
6954         ;;
6955 esac
6956 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6957 : Change installation prefix, if necessary.
6958 if $test X"$prefix" != X"$installprefix"; then
6959         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6960 else
6961         installvendorlib="$vendorlibexp"
6962 fi
6963
6964 case "$vendorprefix" in
6965 '')     d_vendorarch="$undef"
6966         vendorarch=''
6967         vendorarchexp=''
6968         ;;
6969 *)      d_vendorarch="$define"
6970         : determine where vendor-supplied architecture-dependent libraries go.
6971         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6972         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6973         : vendorlib may have an optional trailing /share.
6974         case "$vendorarch" in
6975         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6976                 dflt="$dflt/$archname"
6977                 ;;
6978         *)      dflt="$vendorarch" ;;
6979         esac
6980         fn=d~+
6981         rp='Pathname for vendor-supplied architecture-dependent files?'
6982         . ./getfile
6983         vendorarch="$ans"
6984         vendorarchexp="$ansexp"
6985         ;;
6986 esac
6987 : Change installation prefix, if necessary.
6988 if $test X"$prefix" != X"$installprefix"; then
6989         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6990 else
6991         installvendorarch="$vendorarchexp"
6992 fi
6993
6994 : Final catch-all directories to search
6995 $cat <<EOM
6996
6997 Lastly, you can have perl look in other directories for extensions and
6998 modules in addition to those already specified.
6999 These directories will be searched after 
7000         $sitearch 
7001         $sitelib 
7002 EOM
7003 test X"$vendorlib" != "X" && echo '     ' $vendorlib
7004 test X"$vendorarch" != "X" && echo '    ' $vendorarch
7005 echo ' '
7006 case "$otherlibdirs" in
7007 ''|' ') dflt='none' ;;
7008 *)      dflt="$otherlibdirs" ;;
7009 esac
7010 $cat <<EOM
7011 Enter a colon-separated set of extra paths to include in perl's @INC
7012 search path, or enter 'none' for no extra paths.
7013
7014 EOM
7015
7016 rp='Colon-separated list of additional directories for perl to search?'
7017 . ./myread
7018 case "$ans" in
7019 ' '|''|none)    otherlibdirs=' ' ;;     
7020 *)      otherlibdirs="$ans" ;;
7021 esac
7022 case "$otherlibdirs" in
7023 ' ') val=$undef ;;
7024 *)      val=$define ;;
7025 esac
7026 set d_perl_otherlibdirs
7027 eval $setvar
7028
7029 : Cruising for prototypes
7030 echo " "
7031 echo "Checking out function prototypes..." >&4
7032 $cat >prototype.c <<'EOCP'
7033 int main(int argc, char *argv[]) {
7034         exit(0);}
7035 EOCP
7036 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7037         echo "Your C compiler appears to support function prototypes."
7038         val="$define"
7039 else
7040         echo "Your C compiler doesn't seem to understand function prototypes."
7041         val="$undef"
7042 fi
7043 set prototype
7044 eval $setvar
7045 $rm -f prototype*
7046
7047 case "$prototype" in
7048 "$define") ;;
7049 *)      ansi2knr='ansi2knr'
7050         echo " "
7051         cat <<EOM >&4
7052
7053 $me:  FATAL ERROR:
7054 This version of $package can only be compiled by a compiler that 
7055 understands function prototypes.  Unfortunately, your C compiler 
7056         $cc $ccflags
7057 doesn't seem to understand them.  Sorry about that.
7058
7059 If GNU cc is available for your system, perhaps you could try that instead.  
7060
7061 Eventually, we hope to support building Perl with pre-ANSI compilers.
7062 If you would like to help in that effort, please contact <perlbug@perl.org>.
7063
7064 Aborting Configure now.
7065 EOM
7066         exit 2
7067         ;;
7068 esac
7069
7070 : determine where public executables go
7071 echo " "
7072 set dflt bin bin
7073 eval $prefixit
7074 fn=d~
7075 rp='Pathname where the public executables will reside?'
7076 . ./getfile
7077 if $test "X$ansexp" != "X$binexp"; then
7078         installbin=''
7079 fi
7080 bin="$ans"
7081 binexp="$ansexp"
7082 : Change installation prefix, if necessary.
7083 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
7084 if $test X"$prefix" != X"$installprefix"; then
7085         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
7086 else
7087         installbin="$binexp"
7088 fi
7089
7090 echo " "
7091 case "$extras" in
7092 '') dflt='n';;
7093 *) dflt='y';;
7094 esac
7095 cat <<EOM
7096 Perl can be built with extra modules or bundles of modules which
7097 will be fetched from the CPAN and installed alongside Perl.
7098
7099 Notice that you will need access to the CPAN; either via the Internet,
7100 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7101 be asked later to configure the CPAN.pm module which will in turn do
7102 the installation of the rest of the extra modules or bundles.)
7103
7104 Notice also that if the modules require any external software such as
7105 libraries and headers (the libz library and the zlib.h header for the
7106 Compress::Zlib module, for example) you MUST have any such software
7107 already installed, this configuration process will NOT install such
7108 things for you.
7109
7110 If this doesn't make any sense to you, just accept the default '$dflt'.
7111 EOM
7112 rp='Install any extra modules (y or n)?'
7113 . ./myread
7114 case "$ans" in
7115 y|Y)
7116         cat <<EOM
7117
7118 Please list any extra modules or bundles to be installed from CPAN,
7119 with spaces between the names.  The names can be in any format the
7120 'install' command of CPAN.pm will understand.  (Answer 'none',
7121 without the quotes, to install no extra modules or bundles.)
7122 EOM
7123         rp='Extras?'
7124         dflt="$extras"
7125         . ./myread
7126         extras="$ans"
7127 esac
7128 case "$extras" in
7129 ''|'none')
7130         val=''
7131         $rm -f ../extras.lst
7132         ;;
7133 *)      echo "(Saving the list of extras for later...)"
7134         echo "$extras" > ../extras.lst
7135         val="'$extras'"
7136         ;;
7137 esac
7138 set extras
7139 eval $setvar
7140 echo " "
7141
7142 : Find perl5.005 or later.
7143 echo "Looking for a previously installed perl5.005 or later... "
7144 case "$perl5" in
7145 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
7146                 : Check if this perl is recent and can load a simple module
7147                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7148                         perl5=$tdir/perl
7149                         break;
7150                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7151                         perl5=$tdir/perl5
7152                         break;
7153                 fi
7154         done
7155         ;;
7156 *)      perl5="$perl5"
7157         ;;
7158 esac
7159 case "$perl5" in
7160 '')     echo "None found.  That's ok.";;
7161 *)      echo "Using $perl5." ;;
7162 esac
7163
7164 : Determine list of previous versions to include in @INC
7165 $cat > getverlist <<EOPL
7166 #!$perl5 -w
7167 use File::Basename;
7168 \$api_versionstring = "$api_versionstring";
7169 \$version = "$version";
7170 \$stem = "$sitelib_stem";
7171 \$archname = "$archname";
7172 EOPL
7173         $cat >> getverlist <<'EOPL'
7174 # Can't have leading @ because metaconfig interprets it as a command!
7175 ;@inc_version_list=();
7176 # XXX Redo to do opendir/readdir? 
7177 if (-d $stem) {
7178     chdir($stem);
7179     ;@candidates = glob("5.*");
7180 }
7181 else {
7182     ;@candidates = ();
7183 }
7184
7185 # XXX ToDo:  These comparisons must be reworked when two-digit
7186 # subversions come along, so that 5.7.10 compares as greater than
7187 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
7188 # widespread that we can use the built-in version vectors rather
7189 # than reinventing them here.  For 5.6.0, however, we must
7190 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
7191 foreach $d (@candidates) {
7192     if ($d lt $version) {
7193         if ($d ge $api_versionstring) {
7194             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7195         }
7196         elsif ($d ge "5.005") {
7197             unshift(@inc_version_list, grep { -d } $d);
7198         }
7199     }
7200     else {
7201         # Skip newer version.  I.e. don't look in
7202         # 5.7.0 if we're installing 5.6.1.
7203     }
7204 }
7205
7206 if (@inc_version_list) {
7207     print join(' ', @inc_version_list);
7208 }
7209 else {
7210     # Blank space to preserve value for next Configure run.
7211     print " ";
7212 }
7213 EOPL
7214 chmod +x getverlist
7215 case "$inc_version_list" in
7216 '')     if test -x "$perl5$exe_ext"; then
7217                 dflt=`$perl5 getverlist`
7218         else
7219                 dflt='none'
7220         fi
7221         ;;
7222 $undef) dflt='none' ;;
7223 *)  eval dflt=\"$inc_version_list\" ;;
7224 esac
7225 case "$dflt" in
7226 ''|' ') dflt=none ;;
7227 esac
7228 case "$dflt" in
7229 5.005) case "$bincompat5005" in
7230        $define|true|[yY]*) ;;
7231        *) dflt=none ;;
7232        esac
7233        ;;
7234 esac
7235 $cat <<'EOM'
7236
7237 In order to ease the process of upgrading, this version of perl 
7238 can be configured to use modules built and installed with earlier 
7239 versions of perl that were installed under $prefix.  Specify here
7240 the list of earlier versions that this version of perl should check.
7241 If Configure detected no earlier versions of perl installed under
7242 $prefix, then the list will be empty.  Answer 'none' to tell perl
7243 to not search earlier versions.
7244
7245 The default should almost always be sensible, so if you're not sure,
7246 just accept the default.
7247 EOM
7248
7249 rp='List of earlier versions to include in @INC?'
7250 . ./myread
7251 case "$ans" in
7252 [Nn]one|''|' ') inc_version_list=' ' ;;
7253 *) inc_version_list="$ans" ;;
7254 esac
7255 case "$inc_version_list" in
7256 ''|' ') 
7257         inc_version_list_init='0';;
7258 *)      inc_version_list_init=`echo $inc_version_list |
7259                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7260         ;;
7261 esac
7262 $rm -f getverlist
7263
7264 : determine whether to install perl also as /usr/bin/perl
7265
7266 echo " "
7267 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7268         $cat <<EOM
7269 Many scripts expect perl to be installed as /usr/bin/perl.
7270 I can install the perl you are about to compile also as /usr/bin/perl
7271 (in addition to $installbin/perl).
7272 EOM
7273         case "$installusrbinperl" in
7274         "$undef"|[nN]*) dflt='n';;
7275         *)              dflt='y';;
7276         esac
7277         rp="Do you want to install perl as /usr/bin/perl?"
7278         . ./myread
7279         case "$ans" in
7280         [yY]*)  val="$define";;
7281         *)      val="$undef" ;;
7282         esac
7283 else
7284         val="$undef"
7285 fi
7286 set installusrbinperl
7287 eval $setvar
7288
7289 : see if dld is available
7290 set dld.h i_dld
7291 eval $inhdr
7292
7293 : see if dlopen exists
7294 xxx_runnm="$runnm"
7295 runnm=false
7296 set dlopen d_dlopen
7297 eval $inlibc
7298 runnm="$xxx_runnm"
7299
7300 : determine which dynamic loading, if any, to compile in
7301 echo " "
7302 dldir="ext/DynaLoader"
7303 case "$usedl" in
7304 $define|y|true)
7305         dflt='y'
7306         usedl="$define"
7307         ;;
7308 $undef|n|false)
7309         dflt='n'
7310         usedl="$undef"
7311         ;;
7312 *) 
7313         dflt='n'
7314         case "$d_dlopen" in
7315             $define) dflt='y' ;;
7316         esac
7317         case "$i_dld" in
7318             $define) dflt='y' ;;
7319         esac
7320         : Does a dl_xxx.xs file exist for this operating system
7321         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7322         ;;
7323 esac
7324 rp="Do you wish to use dynamic loading?"
7325 . ./myread
7326 usedl="$ans"
7327 case "$ans" in
7328 y*) usedl="$define"
7329         case "$dlsrc" in
7330         '')
7331                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7332                         dflt="$dldir/dl_${osname}.xs"
7333                 elif $test "$d_dlopen" = "$define" ; then
7334                         dflt="$dldir/dl_dlopen.xs"
7335                 elif $test "$i_dld" = "$define" ; then
7336                         dflt="$dldir/dl_dld.xs"
7337                 else
7338                         dflt=''
7339                 fi
7340                 ;;
7341         *)      dflt="$dldir/$dlsrc"
7342                 ;;
7343         esac
7344     echo "The following dynamic loading files are available:"
7345         : Can not go over to $dldir because getfile has path hard-coded in.
7346         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7347         rp="Source file to use for dynamic loading"
7348         fn="fne"
7349         gfpth="$src"
7350         . ./getfile
7351         usedl="$define"
7352         : emulate basename
7353         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7354
7355         $cat << EOM
7356
7357 Some systems may require passing special flags to $cc -c to
7358 compile modules that will be used to create a shared library.
7359 To use no flags, say "none".
7360
7361 EOM
7362     case "$cccdlflags" in
7363     '') case "$gccversion" in
7364                 '') case "$osname" in
7365                         hpux)   dflt='+z' ;;
7366                         next)   dflt='none' ;;
7367                         irix*)  dflt='-KPIC' ;;
7368                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7369                         sunos)  dflt='-pic' ;;
7370                         *)      dflt='none' ;;
7371                     esac
7372                         ;;
7373                 *)  case "$osname" in
7374                         darwin) dflt='none' ;;
7375                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7376                         *)      dflt='-fpic' ;;
7377                     esac ;;
7378             esac ;;
7379         ' ') dflt='none' ;;
7380     *)  dflt="$cccdlflags" ;;
7381     esac
7382     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7383     . ./myread
7384     case "$ans" in
7385     none) cccdlflags=' ' ;;
7386     *) cccdlflags="$ans" ;;
7387     esac
7388
7389     cat << EOM
7390
7391 Some systems use ld to create libraries that can be dynamically loaded,
7392 while other systems (such as those using ELF) use $cc.
7393
7394 EOM
7395         case "$ld" in
7396         '')     $cat >try.c <<'EOM'
7397 /* Test for whether ELF binaries are produced */
7398 #include <fcntl.h>
7399 #include <stdlib.h>
7400 int main() {
7401         char b[4];
7402         int i = open("a.out",O_RDONLY);
7403         if(i == -1) 
7404                 exit(1); /* fail */
7405         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7406                 exit(0); /* succeed (yes, it's ELF) */
7407         else
7408                 exit(1); /* fail */
7409 }
7410 EOM
7411                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7412                         cat <<EOM
7413 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7414 EOM
7415                         dflt="$cc"
7416                 else
7417                         echo "I'll use ld to build dynamic libraries."
7418                         dflt='ld'
7419                 fi
7420                 rm -f try.c a.out
7421                 ;;
7422         *)      dflt="$ld"
7423                 ;;
7424         esac
7425
7426     rp="What command should be used to create dynamic libraries?"
7427     . ./myread
7428         ld="$ans"
7429
7430     cat << EOM
7431
7432 Some systems may require passing special flags to $ld to create a
7433 library that can be dynamically loaded.  If your ld flags include
7434 -L/other/path options to locate libraries outside your loader's normal
7435 search path, you may need to specify those -L options here as well.  To
7436 use no flags, say "none".
7437
7438 EOM
7439     case "$lddlflags" in
7440     '') case "$osname" in
7441                         beos) dflt='-nostart' ;;
7442                         hpux) dflt='-b';
7443                               case "$gccversion" in
7444                               '') dflt="$dflt +vnocompatwarnings" ;;
7445                               esac
7446                               ;;        
7447                         linux|irix*)    dflt='-shared' ;;
7448                         next)  dflt='none' ;;
7449                         solaris) dflt='-G' ;;
7450                         sunos) dflt='-assert nodefinitions' ;;
7451                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7452                 *)     dflt='none' ;;
7453                         esac
7454                         ;;
7455     *) dflt="$lddlflags" ;;
7456     esac
7457
7458         : Try to guess additional flags to pick up local libraries.
7459         : Be careful not to append to a plain 'none'
7460         case "$dflt" in
7461         none) dflt='' ;;
7462         esac
7463         for thisflag in $ldflags; do
7464                 case "$thisflag" in
7465                 -L*|-R*|-Wl,-R*)
7466                         case " $dflt " in
7467                         *" $thisflag "*) ;;
7468                         *) dflt="$dflt $thisflag" ;;
7469                         esac
7470                         ;;
7471                 esac
7472         done
7473
7474         case "$dflt" in
7475         ''|' ') dflt='none' ;;
7476         esac
7477
7478     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7479     . ./myread
7480     case "$ans" in
7481     none) lddlflags=' ' ;;
7482     *) lddlflags="$ans" ;;
7483     esac
7484
7485         cat <<EOM
7486
7487 Some systems may require passing special flags to $cc to indicate that
7488 the resulting executable will use dynamic linking.  To use no flags,
7489 say "none".
7490
7491 EOM
7492     case "$ccdlflags" in
7493     '') case "$osname" in
7494                 hpux)   dflt='-Wl,-E' ;;
7495                 linux)  dflt='-rdynamic' ;;
7496                 next)   dflt='none' ;;
7497                 sunos)  dflt='none' ;;
7498                 *)      dflt='none' ;;
7499             esac ;;
7500     ' ')  dflt='none' ;;
7501     *)  dflt="$ccdlflags" ;;
7502     esac
7503     rp="Any special flags to pass to $cc to use dynamic linking?"
7504     . ./myread
7505     case "$ans" in
7506     none) ccdlflags=' ' ;;
7507     *) ccdlflags="$ans" ;;
7508     esac
7509     ;;
7510 *)  usedl="$undef"
7511         ld='ld'
7512     dlsrc='dl_none.xs'
7513     lddlflags=''
7514     ccdlflags=''
7515     ;;
7516 esac
7517
7518 also=''
7519 case "$usedl" in
7520 $undef)
7521         # No dynamic loading being used, so don't bother even to prompt.
7522         useshrplib='false'
7523         ;;
7524 *)      case "$useshrplib" in
7525         '')     case "$osname" in
7526                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7527                         dflt=y
7528                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7529                         ;;
7530                 next*)
7531                         case "$osvers" in
7532                         4*)     dflt=y
7533                                 also='Building a shared libperl is needed for MAB support.'
7534                                 ;;
7535                         *)      dflt=n
7536                                 ;;
7537                         esac
7538                         ;;
7539                 *)      dflt=n
7540                         ;;
7541                 esac
7542                 ;;
7543         $define|true|[Yy]*)
7544                 dflt=y
7545                 ;;
7546         *)      dflt=n
7547                 ;;
7548         esac
7549         $cat << EOM
7550
7551 The perl executable is normally obtained by linking perlmain.c with
7552 libperl${_a}, any static extensions (usually just DynaLoader), and
7553 any other libraries needed on this system (such as -lm, etc.).  Since
7554 your system supports dynamic loading, it is probably possible to build
7555 a shared libperl.$so.  If you will have more than one executable linked
7556 to libperl.$so, this will significantly reduce the size of each
7557 executable, but it may have a noticeable affect on performance.  The
7558 default is probably sensible for your system.
7559 $also
7560
7561 EOM
7562         rp="Build a shared libperl.$so (y/n)"
7563         . ./myread
7564         case "$ans" in
7565         true|$define|[Yy]*)
7566                 useshrplib='true'  ;;
7567         *)      useshrplib='false' ;;
7568         esac
7569         ;;
7570 esac
7571
7572 case "$useshrplib" in
7573 true)
7574         case "$libperl" in
7575         '')
7576                 # Figure out a good name for libperl.so.  Since it gets stored in
7577                 # a version-specific architecture-dependent library, the version
7578                 # number isn't really that important, except for making cc/ld happy.
7579                 #
7580                 # A name such as libperl.so.3.1
7581                 majmin="libperl.$so.$patchlevel.$subversion"
7582                 # A name such as libperl.so.301
7583                 majonly=`echo $patchlevel $subversion |
7584                         $awk '{printf "%d%02d", $1, $2}'`
7585                 majonly=libperl.$so.$majonly
7586                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7587                 # rely on figuring it out from the naming of libc.
7588                 case "${osname}${osvers}" in
7589                 next4*)
7590                         dflt=libperl.5.$so
7591                         # XXX How handle the --version stuff for MAB?
7592                         ;;
7593                 linux*)  # ld won't link with a bare -lperl otherwise.
7594                         dflt=libperl.$so
7595                         ;;
7596                 cygwin*) # ld links against an importlib
7597                         dflt=libperl$lib_ext
7598                         ;;
7599                 *)      # Try to guess based on whether libc has major.minor.
7600                         case "$libc" in
7601                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7602                         *libc.$so.[0-9]*) dflt=$majonly ;;
7603                         *)      dflt=libperl.$so ;;
7604                         esac
7605                         ;;
7606                 esac
7607                 ;;
7608         *)      dflt=$libperl
7609                 ;;
7610         esac
7611         cat << EOM
7612
7613 I need to select a good name for the shared libperl.  If your system uses
7614 library names with major and minor numbers, then you might want something
7615 like $majmin.  Alternatively, if your system uses a single version
7616 number for shared libraries, then you might want to use $majonly.
7617 Or, your system might be quite happy with a simple libperl.$so.
7618
7619 Since the shared libperl will get installed into a version-specific
7620 architecture-dependent directory, the version number of the shared perl
7621 library probably isn't important, so the default should be o.k.
7622
7623 EOM
7624         rp='What name do you want to give to the shared libperl?'
7625         . ./myread
7626         libperl=$ans
7627         echo "Ok, I'll use $libperl"
7628         ;;
7629 *)
7630         libperl="libperl${_a}"
7631         ;;
7632 esac
7633
7634 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7635 case "$shrpdir" in
7636 '') ;;
7637 *)      $cat >&4 <<EOM
7638 WARNING:  Use of the shrpdir variable for the installation location of
7639 the shared $libperl is not supported.  It was never documented and
7640 will not work in this version.  Let me (perlbug@perl.org)
7641 know of any problems this may cause.
7642
7643 EOM
7644         case "$shrpdir" in
7645         "$archlibexp/CORE")
7646                 $cat >&4 <<EOM
7647 But your current setting of $shrpdir is
7648 the default anyway, so it's harmless.
7649 EOM
7650                 ;;
7651         *)
7652                 $cat >&4 <<EOM
7653 Further, your current attempted setting of $shrpdir
7654 conflicts with the value of $archlibexp/CORE
7655 that installperl will use.
7656 EOM
7657                 ;;
7658         esac
7659         ;;
7660 esac
7661
7662 # How will the perl executable find the installed shared $libperl?
7663 # Add $xxx to ccdlflags.
7664 # If we can't figure out a command-line option, use $shrpenv to
7665 # set env LD_RUN_PATH.  The main perl makefile uses this.
7666 shrpdir=$archlibexp/CORE
7667 xxx=''
7668 tmp_shrpenv=''
7669 if "$useshrplib"; then
7670     case "$osname" in 
7671         aix)
7672                 # We'll set it in Makefile.SH...
7673                 ;;
7674         solaris)
7675                 xxx="-R $shrpdir"
7676                 ;;
7677         freebsd|netbsd)
7678                 xxx="-Wl,-R$shrpdir"
7679                 ;;
7680         bsdos|linux|irix*|dec_osf)
7681                 xxx="-Wl,-rpath,$shrpdir"
7682                 ;;
7683         next)
7684                 # next doesn't like the default...
7685                 ;;
7686         beos)
7687                 # beos doesn't like the default, either.
7688                 ;;
7689         hpux*)
7690                 # hpux doesn't like the default, either.
7691                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7692                 ;;
7693         *)
7694                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7695                 ;;
7696         esac
7697         case "$xxx" in
7698         '') ;;
7699         *)      
7700                 # Only add $xxx if it isn't already in ccdlflags.
7701                 case " $ccdlflags " in
7702                 *" $xxx "*)     ;;
7703                 *)      ccdlflags="$ccdlflags $xxx"
7704                         cat <<EOM >&4
7705
7706 Adding $xxx to the flags
7707 passed to $ld so that the perl executable will find the 
7708 installed shared $libperl.
7709
7710 EOM
7711                         ;;
7712                 esac
7713                 ;;
7714         esac
7715 fi
7716 # Fix ccdlflags in AIX for building external extensions.
7717 # (For building Perl itself bare -bE:perl.exp is needed,
7718 #  Makefile.SH takes care of this.)
7719 case "$osname" in
7720 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7721 esac
7722 # Respect a hint or command-line value.
7723 case "$shrpenv" in
7724 '') shrpenv="$tmp_shrpenv" ;;
7725 esac
7726 case "$ldlibpthname" in
7727 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7728 none)   ldlibpthname='' ;;
7729 esac
7730
7731 : determine where manual pages are on this system
7732 echo " "
7733 case "$sysman" in
7734 '') 
7735         syspath='/usr/share/man/man1 /usr/man/man1'
7736         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7737         syspath="$syspath /usr/man/u_man/man1"
7738         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7739         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7740         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7741         sysman=`./loc . /usr/man/man1 $syspath`
7742         ;;
7743 esac
7744 if $test -d "$sysman"; then
7745         echo "System manual is in $sysman." >&4
7746 else
7747         echo "Could not find manual pages in source form." >&4
7748 fi
7749
7750 : determine where manual pages go
7751 set man1dir man1dir none
7752 eval $prefixit
7753 $cat <<EOM
7754
7755 $spackage has manual pages available in source form.
7756 EOM
7757 case "$nroff" in
7758 nroff)
7759         echo "However, you don't have nroff, so they're probably useless to you."
7760         case "$man1dir" in
7761         '') man1dir="none";;
7762         esac;;
7763 esac
7764 echo "If you don't want the manual sources installed, answer 'none'."
7765 case "$man1dir" in
7766 ' ') dflt=none
7767         ;;
7768 '')
7769         lookpath="$prefixexp/share/man/man1"
7770         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7771         lookpath="$lookpath $prefixexp/man/p_man/man1"
7772         lookpath="$lookpath $prefixexp/man/u_man/man1"
7773         lookpath="$lookpath $prefixexp/man/man.1"
7774         case "$sysman" in
7775         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7776         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7777         esac
7778         set dflt
7779         eval $prefixup
7780         ;;
7781 *)  dflt="$man1dir"
7782         ;;
7783 esac
7784 echo " "
7785 fn=dn+~
7786 rp="Where do the main $spackage manual pages (source) go?"
7787 . ./getfile
7788 if $test "X$man1direxp" != "X$ansexp"; then
7789         installman1dir=''
7790 fi
7791 man1dir="$ans"
7792 man1direxp="$ansexp"
7793 case "$man1dir" in
7794 '')     man1dir=' '
7795         installman1dir='';;
7796 esac
7797
7798 : Change installation prefix, if necessary.
7799 if $test X"$prefix" != X"$installprefix"; then
7800         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7801 else
7802         installman1dir="$man1direxp"
7803 fi
7804
7805 : What suffix to use on installed man pages
7806
7807 case "$man1dir" in
7808 ' ')
7809         man1ext='0'
7810         ;;
7811 *)
7812         rp="What suffix should be used for the main $spackage man pages?"
7813         case "$man1ext" in
7814         '')     case "$man1dir" in
7815                 *1)  dflt=1 ;;
7816                 *1p) dflt=1p ;;
7817                 *1pm) dflt=1pm ;;
7818                 *l) dflt=l;;
7819                 *n) dflt=n;;
7820                 *o) dflt=o;;
7821                 *p) dflt=p;;
7822                 *C) dflt=C;;
7823                 *L) dflt=L;;
7824                 *L1) dflt=L1;;
7825                 *) dflt=1;;
7826                 esac
7827                 ;;
7828         *)      dflt="$man1ext";;
7829         esac
7830         . ./myread
7831         man1ext="$ans"
7832         ;;
7833 esac
7834
7835 : see if we can have long filenames
7836 echo " "
7837 first=123456789abcdef
7838 $rm -f $first
7839 if (echo hi >$first) 2>/dev/null; then
7840         if $test -f 123456789abcde; then
7841                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7842                 val="$undef"
7843         else
7844                 echo 'You can have filenames longer than 14 characters.'>&4
7845                 val="$define"
7846         fi
7847 else
7848         $cat <<'EOM'
7849 You can't have filenames longer than 14 chars.
7850 You can't even think about them!
7851 EOM
7852         val="$undef"
7853 fi 
7854 set d_flexfnam
7855 eval $setvar
7856 $rm -rf 123456789abcde*
7857
7858 : determine where library module manual pages go
7859 set man3dir man3dir none
7860 eval $prefixit
7861 $cat <<EOM
7862
7863 $spackage has manual pages for many of the library modules.
7864 EOM
7865
7866 case "$nroff" in
7867 nroff)
7868         $cat <<'EOM'
7869 However, you don't have nroff, so they're probably useless to you.
7870 EOM
7871         case "$man3dir" in
7872         '') man3dir="none";;
7873         esac;;
7874 esac
7875
7876 case "$d_flexfnam" in
7877 undef)
7878         $cat <<'EOM'
7879 However, your system can't handle the long file names like File::Basename.3. 
7880 EOM
7881         case "$man3dir" in
7882         '') man3dir="none";;
7883         esac;;
7884 esac
7885
7886 echo "If you don't want the manual sources installed, answer 'none'."
7887 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7888 case "$man3dir" in
7889 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7890         if $test -d "$privlib/man/man3"; then
7891                 cat <<EOM >&4
7892
7893 WARNING:  Previous versions of perl installed man3 pages into
7894 $privlib/man/man3.  This version will suggest a 
7895 new default of $dflt.  
7896 EOM
7897                 tdflt=$dflt
7898                 dflt='n'
7899                 rp='Do you wish to preserve the old behavior?(y/n)'
7900                 . ./myread
7901                 case "$ans" in
7902                 y*) dflt="$privlib/man/man3" ;;
7903                 *)  dflt=$tdflt ;;
7904                 esac
7905     fi
7906         ;;
7907 *)      dflt="$man3dir" ;;
7908 esac
7909 case "$dflt" in
7910 ' ') dflt=none ;;
7911 esac
7912 echo " "
7913 fn=dn+~
7914 rp="Where do the $package library man pages (source) go?"
7915 . ./getfile
7916 man3dir="$ans"
7917 man3direxp="$ansexp"
7918 case "$man3dir" in
7919 '')     man3dir=' '
7920         installman3dir='';;
7921 esac
7922
7923 : Change installation prefix, if necessary.
7924 if $test X"$prefix" != X"$installprefix"; then
7925         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7926 else
7927         installman3dir="$man3direxp"
7928 fi
7929
7930 : What suffix to use on installed man pages
7931 case "$man3dir" in
7932 ' ')
7933         man3ext='0'
7934         ;;
7935 *)
7936         rp="What suffix should be used for the $package library man pages?"
7937         case "$man3ext" in
7938         '')     case "$man3dir" in
7939                 *3)  dflt=3 ;;
7940                 *3p) dflt=3p ;;
7941                 *3pm) dflt=3pm ;;
7942                 *l) dflt=l;;
7943                 *n) dflt=n;;
7944                 *o) dflt=o;;
7945                 *p) dflt=p;;
7946                 *C) dflt=C;;
7947                 *L) dflt=L;;
7948                 *L3) dflt=L3;;
7949                 *) dflt=3;;
7950                 esac
7951                 ;;
7952         *)      dflt="$man3ext";;
7953         esac
7954         . ./myread
7955         man3ext="$ans"
7956         ;;
7957 esac
7958
7959 : see if we have to deal with yellow pages, now NIS.
7960 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
7961         if $test -f /usr/etc/nibindd; then
7962                 echo " "
7963                 echo "I'm fairly confident you're on a NeXT."
7964                 echo " "
7965                 rp='Do you get the hosts file via NetInfo?'
7966                 dflt=y
7967                 case "$hostcat" in
7968                 nidump*) ;;
7969                 '') ;;
7970                 *) dflt=n;;
7971                 esac
7972                 . ./myread
7973                 case "$ans" in
7974                 y*) hostcat='nidump hosts .';;
7975                 *)      case "$hostcat" in
7976                         nidump*) hostcat='';;
7977                         esac
7978                         ;;
7979                 esac
7980         fi
7981         case "$hostcat" in
7982         nidump*) ;;
7983         *)
7984                 case "$hostcat" in
7985                 *ypcat*) dflt=y;;
7986                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7987                                 dflt=y
7988                         else
7989                                 dflt=n
7990                         fi;;
7991                 *) dflt=n;;
7992                 esac
7993                 echo " "
7994                 rp='Are you getting the hosts file via yellow pages?'
7995                 . ./myread
7996                 case "$ans" in
7997                 y*) hostcat='ypcat hosts';;
7998                 *) hostcat='cat /etc/hosts';;
7999                 esac
8000                 ;;
8001         esac
8002 fi
8003 case "$hostcat" in
8004 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8005 esac
8006 case "$groupcat" in
8007 '') test -f /etc/group && groupcat='cat /etc/group';;
8008 esac
8009 case "$passcat" in
8010 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8011 esac
8012
8013 : now get the host name
8014 echo " "
8015 echo "Figuring out host name..." >&4
8016 case "$myhostname" in
8017 '') cont=true
8018         echo 'Maybe "hostname" will work...'
8019         if tans=`sh -c hostname 2>&1` ; then
8020                 myhostname=$tans
8021                 phostname=hostname
8022                 cont=''
8023         fi
8024         ;;
8025 *) cont='';;
8026 esac
8027 if $test "$cont"; then
8028         if ./xenix; then
8029                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8030                 if tans=`cat /etc/systemid 2>&1` ; then
8031                         myhostname=$tans
8032                         phostname='cat /etc/systemid'
8033                         echo "Whadyaknow.  Xenix always was a bit strange..."
8034                         cont=''
8035                 fi
8036         elif $test -r /etc/systemid; then
8037                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8038         fi
8039 fi
8040 if $test "$cont"; then
8041         echo 'No, maybe "uuname -l" will work...'
8042         if tans=`sh -c 'uuname -l' 2>&1` ; then
8043                 myhostname=$tans
8044                 phostname='uuname -l'
8045         else
8046                 echo 'Strange.  Maybe "uname -n" will work...'
8047                 if tans=`sh -c 'uname -n' 2>&1` ; then
8048                         myhostname=$tans
8049                         phostname='uname -n'
8050                 else
8051                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8052                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8053                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8054                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8055                         else
8056                                 case "$myhostname" in
8057                                 '') echo "Does this machine have an identity crisis or something?"
8058                                         phostname='';;
8059                                 *)
8060                                         echo "Well, you said $myhostname before..."
8061                                         phostname='echo $myhostname';;
8062                                 esac
8063                         fi
8064                 fi
8065         fi
8066 fi
8067 case "$myhostname" in
8068 '') myhostname=noname ;;
8069 esac
8070 : you do not want to know about this
8071 set $myhostname
8072 myhostname=$1
8073
8074 : verify guess
8075 if $test "$myhostname" ; then
8076         dflt=y
8077         rp='Your host name appears to be "'$myhostname'".'" Right?"
8078         . ./myread
8079         case "$ans" in
8080         y*) ;;
8081         *) myhostname='';;
8082         esac
8083 fi
8084
8085 : bad guess or no guess
8086 while $test "X$myhostname" = X ; do
8087         dflt=''
8088         rp="Please type the (one word) name of your host:"
8089         . ./myread
8090         myhostname="$ans"
8091 done
8092
8093 : translate upper to lower if necessary
8094 case "$myhostname" in
8095 *[A-Z]*)
8096         echo "(Normalizing case in your host name)"
8097         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8098         ;;
8099 esac
8100
8101 case "$myhostname" in
8102 *.*)
8103         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8104         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8105         echo "(Trimming domain name from host name--host name is now $myhostname)"
8106         ;;
8107 *) case "$mydomain" in
8108         '')
8109                 {
8110                         test "X$hostcat" = "Xypcat hosts" &&
8111                         ypmatch "$myhostname" hosts 2>/dev/null |\
8112                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8113                         $test -s hosts
8114                 } || {
8115                         test "X$hostcat" != "X" &&
8116                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8117                                         /[       ]$myhostname[  . ]/p" > hosts
8118                 }
8119                 tmp_re="[       . ]"
8120                 if $test -f hosts; then
8121                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8122                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8123                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8124                                 hosts | $sort | $uniq | \
8125                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8126                         case `$echo X$dflt` in
8127                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8128                                 dflt=.
8129                                 ;;
8130                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8131                                 ;;
8132                         esac
8133                 else
8134                         echo "(I cannot locate a hosts database anywhere)"
8135                         dflt=.
8136                 fi
8137                 case "$dflt" in
8138                 .)
8139                         tans=`./loc resolv.conf X /etc /usr/etc`
8140                         if $test -f "$tans"; then
8141                                 echo "(Attempting domain name extraction from $tans)"
8142                                 dflt=.`$sed -n -e 's/   / /g' \
8143                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8144                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8145                                 case "$dflt" in
8146                                 .) dflt=.`$sed -n -e 's/        / /g' \
8147                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8148                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8149                                         ;;
8150                                 esac
8151                         fi
8152                         ;;
8153                 esac
8154                 case "$dflt" in
8155                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8156                         dflt=.`sh -c domainname 2>/dev/null`
8157                         case "$dflt" in
8158                         '') dflt='.';;
8159                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8160                         esac
8161                         ;;
8162                 esac
8163                 case "$dflt$osname" in
8164                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8165                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8166                         ;;
8167                 esac
8168                 case "$dflt" in
8169                 .) echo "(Lost all hope -- silly guess then)"
8170                         dflt='.nonet'
8171                         ;;
8172                 esac
8173                 $rm -f hosts
8174                 ;;
8175         *) dflt="$mydomain";;
8176         esac;;
8177 esac
8178 echo " "
8179 rp="What is your domain name?"
8180 . ./myread
8181 tans="$ans"
8182 case "$ans" in
8183 '') ;;
8184 .*) ;;
8185 *) tans=".$tans";;
8186 esac
8187 mydomain="$tans"
8188
8189 : translate upper to lower if necessary
8190 case "$mydomain" in
8191 *[A-Z]*)
8192         echo "(Normalizing case in your domain name)"
8193         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8194         ;;
8195 esac
8196
8197 : a little sanity check here
8198 case "$phostname" in
8199 '') ;;
8200 *)
8201         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8202         $myhostname$mydomain|$myhostname) ;;
8203         *)
8204                 case "$phostname" in
8205                 sed*)
8206                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8207                         ;;
8208                 *)
8209                         echo "(That doesn't agree with your $phostname command, by the way.)"
8210                         ;;
8211                 esac
8212         ;;
8213         esac
8214         ;;
8215 esac
8216
8217 $cat <<EOM
8218
8219 I need to get your e-mail address in Internet format if possible, i.e.
8220 something like user@host.domain. Please answer accurately since I have
8221 no easy means to double check it. The default value provided below
8222 is most probably close to reality but may not be valid from outside
8223 your organization...
8224
8225 EOM
8226 cont=x
8227 while test "$cont"; do
8228         case "$cf_email" in
8229         '') dflt="$cf_by@$myhostname$mydomain";;
8230         *) dflt="$cf_email";;
8231         esac
8232         rp='What is your e-mail address?'
8233         . ./myread
8234         cf_email="$ans"
8235         case "$cf_email" in
8236         *@*.*) cont='' ;;
8237         *)
8238                 rp='Address does not look like an Internet one.  Use it anyway?'
8239                 case "$fastread" in
8240                 yes) dflt=y ;;
8241                 *) dflt=n ;;
8242                 esac
8243                 . ./myread
8244                 case "$ans" in
8245                 y*) cont='' ;;
8246                 *) echo " " ;;
8247                 esac
8248                 ;;
8249         esac
8250 done
8251
8252 $cat <<EOM
8253
8254 If you or somebody else will be maintaining perl at your site, please
8255 fill in the correct e-mail address here so that they may be contacted
8256 if necessary. Currently, the "perlbug" program included with perl
8257 will send mail to this address in addition to perlbug@perl.org. You may
8258 enter "none" for no administrator.
8259
8260 EOM
8261 case "$perladmin" in
8262 '') dflt="$cf_email";;
8263 *) dflt="$perladmin";;
8264 esac
8265 rp='Perl administrator e-mail address'
8266 . ./myread
8267 perladmin="$ans"
8268
8269 : determine whether to only install version-specific parts.
8270 echo " "
8271 $cat <<EOM
8272 Do you want to install only the version-specific parts of the perl
8273 distribution?  Usually you do *not* want to do this.
8274 EOM
8275 case "$versiononly" in
8276 "$define"|[Yy]*|true) dflt='y' ;;
8277 *) dflt='n';
8278 esac
8279 rp="Do you want to install only the version-specific parts of perl?"
8280 . ./myread
8281 case "$ans" in
8282 [yY]*)  val="$define";;
8283 *)      val="$undef" ;;
8284 esac
8285 set versiononly
8286 eval $setvar
8287
8288 : figure out how to guarantee perl startup
8289 case "$startperl" in
8290 '')
8291         case "$sharpbang" in
8292         *!)
8293                 $cat <<EOH
8294
8295 I can use the #! construct to start perl on your system. This will
8296 make startup of perl scripts faster, but may cause problems if you
8297 want to share those scripts and perl is not in a standard place
8298 ($binexp/perl) on all your platforms. The alternative is to force
8299 a shell by starting the script with a single ':' character.
8300
8301 EOH
8302                 case "$versiononly" in
8303                 "$define")      dflt="$binexp/perl$version";;  
8304                 *)              dflt="$binexp/perl";;
8305                 esac
8306                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8307                 . ./myread
8308                 case "$ans" in
8309                 none)   startperl=": # use perl";;
8310                 *)      startperl="#!$ans"
8311                         if $test 30 -lt `echo "$ans" | wc -c`; then
8312                                 $cat >&4 <<EOM
8313
8314 WARNING:  Some systems limit the #! command to 32 characters.
8315 If you experience difficulty running Perl scripts with #!, try
8316 installing Perl in a directory with a shorter pathname.
8317
8318 EOM
8319                         fi ;;
8320                 esac
8321                 ;;
8322         *) startperl=": # use perl"
8323                 ;;
8324         esac
8325         ;;
8326 esac
8327 echo "I'll use $startperl to start perl scripts."
8328
8329 : figure best path for perl in scripts
8330 case "$perlpath" in
8331 '')
8332         case "$versiononly" in
8333         "$define")      perlpath="$binexp/perl$version";;
8334         *)              perlpath="$binexp/perl";;
8335         esac
8336         case "$startperl" in
8337         *!*) ;;
8338         *)
8339                 $cat <<EOH
8340
8341 I will use the "eval 'exec'" idiom to start Perl on your system.
8342 I can use the full path of your Perl binary for this purpose, but
8343 doing so may cause problems if you want to share those scripts and
8344 Perl is not always in a standard place ($binexp/perl).
8345
8346 EOH
8347                 dflt="$binexp/perl"
8348                 rp="What path shall I use in \"eval 'exec'\"?"
8349                 . ./myread
8350                 perlpath="$ans"
8351                 ;;
8352         esac
8353         ;;
8354 esac
8355 case "$startperl" in
8356 *!*)    ;;
8357 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8358 esac
8359
8360 : determine where public executable scripts go
8361 set scriptdir scriptdir
8362 eval $prefixit
8363 case "$scriptdir" in
8364 '')
8365         dflt="$bin"
8366         : guess some guesses
8367         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8368         $test -d /usr/share/bin     && dflt=/usr/share/bin
8369         $test -d /usr/local/script  && dflt=/usr/local/script
8370         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8371         $test -d $prefixexp/script  && dflt=$prefixexp/script
8372         set dflt
8373         eval $prefixup
8374         ;;
8375 *)  dflt="$scriptdir"
8376         ;;
8377 esac
8378 $cat <<EOM
8379  
8380 Some installations have a separate directory just for executable scripts so
8381 that they can mount it across multiple architectures but keep the scripts in
8382 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8383 Or you might just lump your scripts in with all your other executables.
8384  
8385 EOM
8386 fn=d~
8387 rp='Where do you keep publicly executable scripts?'
8388 . ./getfile
8389 if $test "X$ansexp" != "X$scriptdirexp"; then
8390         installscript=''
8391 fi
8392 scriptdir="$ans"
8393 scriptdirexp="$ansexp"
8394 : Change installation prefix, if necessary.
8395 if $test X"$prefix" != X"$installprefix"; then
8396         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8397 else
8398         installscript="$scriptdirexp"
8399 fi
8400
8401 : determine where add-on public executables go
8402 case "$sitebin" in
8403 '')     dflt=$siteprefix/bin ;;
8404 *)      dflt=$sitebin ;;
8405 esac
8406 fn=d~
8407 rp='Pathname where the add-on public executables should be installed?'
8408 . ./getfile
8409 sitebin="$ans"
8410 sitebinexp="$ansexp"
8411 : Change installation prefix, if necessary.
8412 if $test X"$prefix" != X"$installprefix"; then
8413         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8414 else
8415         installsitebin="$sitebinexp"
8416 fi
8417
8418 : define an is-a-typedef? function
8419 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8420 case "$inclist" in
8421 "") inclist="sys/types.h";;
8422 esac;
8423 eval "varval=\$$var";
8424 case "$varval" in
8425 "")
8426         $rm -f temp.c;
8427         for inc in $inclist; do
8428                 echo "#include <$inc>" >>temp.c;
8429         done;
8430         echo "#ifdef $type" >> temp.c;
8431         echo "printf(\"We have $type\");" >> temp.c;
8432         echo "#endif" >> temp.c;
8433         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8434         if $contains $type temp.E >/dev/null 2>&1; then
8435                 eval "$var=\$type";
8436         else
8437                 eval "$var=\$def";
8438         fi;
8439         $rm -f temp.?;;
8440 *) eval "$var=\$varval";;
8441 esac'
8442
8443 : define an is-a-typedef? function that prompts if the type is not available.
8444 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8445 case "$inclist" in
8446 "") inclist="sys/types.h";;
8447 esac;
8448 eval "varval=\$$var";
8449 case "$varval" in
8450 "")
8451         $rm -f temp.c;
8452         for inc in $inclist; do
8453                 echo "#include <$inc>" >>temp.c;
8454         done;
8455         echo "#ifdef $type" >> temp.c;
8456         echo "printf(\"We have $type\");" >> temp.c;
8457         echo "#endif" >> temp.c;
8458         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8459         echo " " ;
8460         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8461         if $contains $type temp.E >/dev/null 2>&1; then
8462                 echo "$type found." >&4;
8463                 eval "$var=\$type";
8464         else
8465                 echo "$type NOT found." >&4;
8466                 dflt="$def";
8467                 . ./myread ;
8468                 eval "$var=\$ans";
8469         fi;
8470         $rm -f temp.?;;
8471 *) eval "$var=\$varval";;
8472 esac'
8473
8474 : see what type lseek is declared as in the kernel
8475 rp="What is the type used for lseek's offset on this system?"
8476 set off_t lseektype long stdio.h sys/types.h
8477 eval $typedef_ask
8478
8479 echo " "
8480 echo "Checking to see how big your file offsets are..." >&4
8481 $cat >try.c <<EOCP
8482 #include <sys/types.h>
8483 #include <stdio.h>
8484 int main()
8485 {
8486     printf("%d\n", (int)sizeof($lseektype));
8487     return(0); 
8488 }
8489 EOCP
8490 set try
8491 if eval $compile_ok; then
8492         lseeksize=`$run ./try`
8493         echo "Your file offsets are $lseeksize bytes long."
8494 else
8495         dflt=$longsize
8496         echo " "
8497         echo "(I can't seem to compile the test program.  Guessing...)"
8498         rp="What is the size of your file offsets (in bytes)?"
8499         . ./myread
8500         lseeksize="$ans"
8501 fi
8502 $rm -f try.c try
8503
8504 : see what type file positions are declared as in the library
8505 rp="What is the type for file position used by fsetpos()?"
8506 set fpos_t fpostype long stdio.h sys/types.h
8507 eval $typedef_ask
8508
8509 echo " "
8510 case "$fpostype" in
8511 *_t) zzz="$fpostype"    ;;
8512 *)   zzz="fpos_t"       ;;
8513 esac
8514 echo "Checking the size of $zzz..." >&4 
8515 cat > try.c <<EOCP
8516 #include <sys/types.h>
8517 #include <stdio.h>
8518 int main() {
8519     printf("%d\n", (int)sizeof($fpostype));
8520     exit(0);
8521 }
8522 EOCP
8523 set try
8524 if eval $compile_ok; then
8525         yyy=`$run ./try`
8526         case "$yyy" in
8527         '')     fpossize=4
8528                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8529                 ;;
8530         *)      fpossize=$yyy
8531                 echo "Your $zzz is $fpossize bytes long."
8532                 ;;
8533         esac
8534 else
8535         dflt="$longsize"
8536         echo " " >&4
8537         echo "(I can't compile the test program.  Guessing...)" >&4
8538         rp="What is the size of your file positions (in bytes)?"
8539         . ./myread
8540         fpossize="$ans"
8541 fi
8542
8543
8544
8545 # Backward compatibility (uselfs is deprecated).
8546 case "$uselfs" in
8547 "$define"|true|[yY]*)
8548         cat <<EOM >&4
8549
8550 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8551 EOM
8552         uselargefiles="$define"
8553         ;;
8554 esac                          
8555
8556 case "$lseeksize:$fpossize" in
8557 8:8) cat <<EOM
8558
8559 You can have files larger than 2 gigabytes.
8560 EOM
8561    val="$define" ;;
8562 *)    case "$uselargefiles" in
8563    "$undef"|false|[nN]*) dflt='n' ;;
8564    *)   dflt='y' ;;
8565    esac
8566    cat <<EOM
8567
8568 Perl can be built to understand large files (files larger than 2 gigabytes)
8569 on some systems.  To do so, Configure can be run with -Duselargefiles.
8570
8571 If this doesn't make any sense to you, just accept the default '$dflt'.
8572 EOM
8573    rp='Try to understand large files, if available?'
8574    . ./myread
8575    case "$ans" in
8576    y|Y)         val="$define" ;;
8577    *)           val="$undef"  ;;
8578    esac
8579    ;;
8580 esac
8581 set uselargefiles
8582 eval $setvar
8583 case "$uselargefiles" in
8584 "$define")
8585 : Look for a hint-file generated 'call-back-unit'.  If the
8586 : user has specified that a large files perl is to be built,
8587 : we may need to set or change some other defaults.
8588         if $test -f uselargefiles.cbu; then
8589                 echo "Your platform has some specific hints for large file builds, using them..."
8590                 . ./uselargefiles.cbu
8591                 echo " "
8592                 echo "Rechecking to see how big your file offsets are..." >&4
8593                 $cat >try.c <<EOCP
8594 #include <sys/types.h>
8595 #include <stdio.h>
8596 int main()
8597 {
8598     printf("%d\n", (int)sizeof($lseektype));
8599     return(0); 
8600 }
8601 EOCP
8602                 set try
8603                 if eval $compile_ok; then
8604                         lseeksize=`$run ./try`
8605                         $echo "Your file offsets are now $lseeksize bytes long."
8606                 else
8607                         dflt="$lseeksize"
8608                         echo " "
8609                         echo "(I can't seem to compile the test program.  Guessing...)"
8610                         rp="What is the size of your file offsets (in bytes)?"
8611                         . ./myread
8612                         lseeksize="$ans"
8613                 fi
8614                 case "$fpostype" in
8615                 *_t) zzz="$fpostype"    ;;
8616                 *)   zzz="fpos_t"       ;;
8617                 esac
8618                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8619                 $cat > try.c <<EOCP
8620 #include <sys/types.h>
8621 #include <stdio.h>
8622 int main() {
8623     printf("%d\n", (int)sizeof($fpostype));
8624     exit(0);
8625 }
8626 EOCP
8627                 set try
8628                 if eval $compile_ok; then
8629                         yyy=`$run ./try`
8630                         dflt="$lseeksize"
8631                         case "$yyy" in
8632                         '')     echo " "
8633                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8634                                 ;;
8635                         *)      fpossize=$yyy
8636                                 echo " $fpossize bytes." >&4
8637                                 ;;
8638                         esac
8639                 else
8640                         dflt="$fpossize"
8641                         echo " "
8642                         echo "(I can't compile the test program.  Guessing...)" >&4
8643                         rp="What is the size of your file positions (in bytes)?"
8644                         . ./myread
8645                         fpossize="$ans"
8646                 fi
8647                 $rm -f try.c try
8648         fi
8649         ;;
8650 esac
8651
8652 case "$vendorprefix" in
8653 '')     d_vendorbin="$undef"
8654         vendorbin=''
8655         vendorbinexp=''
8656         ;;
8657 *)      d_vendorbin="$define"
8658         : determine where vendor-supplied executables go.
8659         case "$vendorbin" in
8660         '') dflt=$vendorprefix/bin ;;
8661         *)      dflt="$vendorbin" ;;
8662         esac
8663         fn=d~+
8664         rp='Pathname for the vendor-supplied executables directory?'
8665         . ./getfile
8666         vendorbin="$ans"
8667         vendorbinexp="$ansexp"
8668         ;;
8669 esac
8670 : Change installation prefix, if necessary.
8671 if $test X"$prefix" != X"$installprefix"; then
8672         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8673 else
8674         installvendorbin="$vendorbinexp"
8675 fi
8676
8677 : see if qgcvt exists
8678 set qgcvt d_qgcvt
8679 eval $inlibc
8680
8681 : Check how to convert floats to strings.
8682
8683 if test "X$d_Gconvert" = X; then
8684
8685 echo " "
8686 echo "Checking for an efficient way to convert floats to strings."
8687 echo " " > try.c
8688 case "$uselongdouble" in
8689 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8690 esac
8691 case "$d_longdbl" in
8692 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8693 esac
8694 case "$d_PRIgldbl" in
8695 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8696 esac
8697 $cat >>try.c <<EOP
8698 #ifdef TRY_gconvert
8699 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8700 char *myname = "gconvert";
8701 #endif
8702 #ifdef TRY_gcvt
8703 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8704 char *myname = "gcvt";
8705 #endif
8706 #ifdef TRY_qgcvt
8707 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8708 char *myname = "qgcvt";
8709 #define DOUBLETYPE long double
8710 #endif
8711 #ifdef TRY_sprintf
8712 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8713 #ifdef HAS_PRIgldbl
8714 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8715 #else
8716 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
8717 #endif
8718 #else
8719 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8720 #endif
8721 char *myname = "sprintf";
8722 #endif
8723
8724 #ifndef DOUBLETYPE
8725 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8726 #define DOUBLETYPE long double
8727 #else
8728 #define DOUBLETYPE double
8729 #endif
8730 #endif
8731
8732 #include <stdio.h>
8733
8734 #define I_STDLIB $i_stdlib
8735 #ifdef I_STDLIB
8736 #include <stdlib.h>
8737 #endif
8738
8739 int
8740 checkit(expect, got)
8741 char *expect;
8742 char *got;
8743 {
8744     if (strcmp(expect, got)) {
8745                 printf("%s oddity:  Expected %s, got %s\n",
8746                         myname, expect, got);
8747                 exit(1);
8748         }
8749 }
8750
8751 int main()
8752
8753         char buf[64]; 
8754         buf[63] = '\0';
8755
8756         /* This must be 1st test on (which?) platform */
8757         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8758         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8759         checkit("0.1", buf);
8760
8761         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
8762         checkit("0.01", buf);
8763
8764         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
8765         checkit("0.001", buf);
8766
8767         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
8768         checkit("0.0001", buf);
8769
8770         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
8771         if (strlen(buf) > 5)
8772             checkit("9e-005", buf); /* for Microsoft ?? */
8773         else
8774             checkit("9e-05", buf);
8775
8776         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8777         checkit("1", buf);
8778
8779         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8780         checkit("1.1", buf);
8781
8782         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8783         checkit("1.01", buf);
8784
8785         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8786         checkit("1.001", buf);
8787
8788         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8789         checkit("1.0001", buf);
8790
8791         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8792         checkit("1.00001", buf);
8793
8794         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8795         checkit("1.000001", buf);
8796
8797         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8798         checkit("0", buf);
8799
8800         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8801         checkit("-1", buf);
8802
8803         /* Some Linux gcvt's give 1.e+5 here. */
8804         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8805         checkit("100000", buf);
8806         
8807         /* Some Linux gcvt's give -1.e+5 here. */
8808         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8809         checkit("-100000", buf);
8810
8811         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8812         checkit("123.456", buf);
8813
8814         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8815         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8816         if (strlen(buf) > 5)
8817             checkit("1e+030", buf); /* for Microsoft */
8818         else
8819             checkit("1e+30", buf);
8820
8821         exit(0);
8822 }
8823 EOP
8824 : first add preferred functions to our list
8825 xxx_list=""
8826 for xxx_convert in $gconvert_preference; do
8827     case $xxx_convert in
8828     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
8829     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
8830     esac 
8831 done
8832 : then add any others
8833 for xxx_convert in gconvert gcvt sprintf; do
8834     case "$xxx_list" in
8835     *$xxx_convert*) ;;
8836     *) xxx_list="$xxx_list $xxx_convert" ;;
8837     esac 
8838 done
8839
8840 case "$d_longdbl$uselongdouble" in
8841 "$define$define")
8842     : again, add prefered functions to our list first
8843     xxx_ld_list=""
8844     for xxx_convert in $gconvert_ld_preference; do
8845         case $xxx_convert in
8846         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8847         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
8848         esac
8849     done
8850     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
8851     for xxx_convert in qgcvt sprintf $xxx_list; do
8852         case "$xxx_ld_list" in
8853         $xxx_convert*|*" $xxx_convert"*) ;;
8854         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8855         esac
8856     done
8857     : if sprintf cannot do long doubles, move it to the end
8858     if test "$d_PRIgldbl" != "$define"; then
8859         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
8860     fi
8861     : if no qgcvt, remove it
8862     if test "$d_qgcvt" != "$define"; then
8863         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
8864     fi
8865     : use the ld_list
8866     xxx_list="$xxx_ld_list"
8867     ;;
8868 esac
8869
8870 for xxx_convert in $xxx_list; do
8871         echo "Trying $xxx_convert..."
8872         $rm -f try try$_o
8873         set try -DTRY_$xxx_convert
8874         if eval $compile; then
8875                 echo "$xxx_convert() found." >&4
8876                 if $run ./try; then
8877                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8878                         break;
8879                 else
8880                         echo "...But $xxx_convert didn't work as I expected."
8881                         xxx_convert=''
8882                 fi
8883         else
8884                 echo "$xxx_convert NOT found." >&4
8885         fi
8886 done
8887
8888 if test X$xxx_convert = X; then
8889     echo "*** WHOA THERE!!! ***" >&4
8890     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
8891     xxx_convert=sprintf
8892 fi
8893
8894 case "$xxx_convert" in
8895 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8896 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8897 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8898 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8899    "$define$define$define")
8900       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8901    "$define$define$undef")
8902       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
8903    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8904    esac
8905    ;;  
8906 esac
8907
8908 fi
8909
8910 : see if _fwalk exists
8911 set fwalk d__fwalk
8912 eval $inlibc
8913
8914 : Initialize h_fcntl
8915 h_fcntl=false
8916
8917 : Initialize h_sysfile
8918 h_sysfile=false
8919
8920 : access call always available on UNIX
8921 set access d_access
8922 eval $inlibc
8923
8924 : locate the flags for 'access()'
8925 case "$d_access" in
8926 "$define")
8927         echo " "
8928         $cat >access.c <<'EOCP'
8929 #include <sys/types.h>
8930 #ifdef I_FCNTL
8931 #include <fcntl.h>
8932 #endif
8933 #ifdef I_SYS_FILE
8934 #include <sys/file.h>
8935 #endif
8936 #ifdef I_UNISTD
8937 #include <unistd.h>
8938 #endif
8939 int main() {
8940         exit(R_OK);
8941 }
8942 EOCP
8943         : check sys/file.h first, no particular reason here
8944         if $test `./findhdr sys/file.h` && \
8945                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8946                 h_sysfile=true;
8947                 echo "<sys/file.h> defines the *_OK access constants." >&4
8948         elif $test `./findhdr fcntl.h` && \
8949                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8950                 h_fcntl=true;
8951                 echo "<fcntl.h> defines the *_OK access constants." >&4
8952         elif $test `./findhdr unistd.h` && \
8953                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8954                 echo "<unistd.h> defines the *_OK access constants." >&4
8955         else
8956                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8957         fi
8958         ;;
8959 esac
8960 $rm -f access*
8961
8962 : see if accessx exists
8963 set accessx d_accessx
8964 eval $inlibc
8965
8966 : see if alarm exists
8967 set alarm d_alarm
8968 eval $inlibc
8969
8970 : see if atolf exists
8971 set atolf d_atolf
8972 eval $inlibc
8973
8974 : see if atoll exists
8975 set atoll d_atoll
8976 eval $inlibc
8977
8978 : Look for GNU-cc style attribute checking
8979 echo " "
8980 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8981 $cat >attrib.c <<'EOCP'
8982 #include <stdio.h>
8983 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8984 EOCP
8985 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8986         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8987                 echo "Your C compiler doesn't fully support __attribute__."
8988                 val="$undef"
8989         else
8990                 echo "Your C compiler supports __attribute__."
8991                 val="$define"
8992         fi
8993 else
8994         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8995         val="$undef"
8996 fi
8997 set d_attribut
8998 eval $setvar
8999 $rm -f attrib*
9000
9001 : see if bcmp exists
9002 set bcmp d_bcmp
9003 eval $inlibc
9004
9005 : see if bcopy exists
9006 set bcopy d_bcopy
9007 eval $inlibc
9008
9009 : see if this is a unistd.h system
9010 set unistd.h i_unistd
9011 eval $inhdr
9012
9013 : see if getpgrp exists
9014 set getpgrp d_getpgrp
9015 eval $inlibc
9016
9017 case "$d_getpgrp" in
9018 "$define")
9019         echo " "
9020         echo "Checking to see which flavor of getpgrp is in use..."
9021         $cat >try.c <<EOP
9022 #$i_unistd I_UNISTD
9023 #include <sys/types.h>
9024 #ifdef I_UNISTD
9025 #  include <unistd.h>
9026 #endif
9027 int main()
9028 {
9029         if (getuid() == 0) {
9030                 printf("(I see you are running Configure as super-user...)\n");
9031                 setuid(1);
9032         }
9033 #ifdef TRY_BSD_PGRP
9034         if (getpgrp(1) == 0)
9035                 exit(0);
9036 #else
9037         if (getpgrp() > 0)
9038                 exit(0);
9039 #endif
9040         exit(1);
9041 }
9042 EOP
9043         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9044                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9045                 val="$define"
9046         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9047                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9048                 val="$undef"
9049         else
9050                 echo "I can't seem to compile and run the test program."
9051                 if ./usg; then
9052                         xxx="a USG one, i.e. you use getpgrp()."
9053                 else
9054                         # SVR4 systems can appear rather BSD-ish.
9055                         case "$i_unistd" in
9056                         $undef)
9057                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9058                                 val="$define"
9059                                 ;;
9060                         $define)
9061                                 xxx="probably a USG one, i.e. you use getpgrp()."
9062                                 val="$undef"
9063                                 ;;
9064                         esac
9065                 fi
9066                 echo "Assuming your getpgrp is $xxx" >&4
9067         fi
9068         ;;
9069 *) val="$undef";;
9070 esac
9071 set d_bsdgetpgrp
9072 eval $setvar
9073 $rm -f try try.*
9074
9075 : see if setpgrp exists
9076 set setpgrp d_setpgrp
9077 eval $inlibc
9078
9079 case "$d_setpgrp" in
9080 "$define")
9081         echo " "
9082         echo "Checking to see which flavor of setpgrp is in use..."
9083         $cat >try.c <<EOP
9084 #$i_unistd I_UNISTD
9085 #include <sys/types.h>
9086 #ifdef I_UNISTD
9087 #  include <unistd.h>
9088 #endif
9089 int main()
9090 {
9091         if (getuid() == 0) {
9092                 printf("(I see you are running Configure as super-user...)\n");
9093                 setuid(1);
9094         }
9095 #ifdef TRY_BSD_PGRP
9096         if (-1 == setpgrp(1, 1))
9097                 exit(0);
9098 #else
9099         if (setpgrp() != -1)
9100                 exit(0);
9101 #endif
9102         exit(1);
9103 }
9104 EOP
9105         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9106                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9107                 val="$define"
9108         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9109                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9110                 val="$undef"
9111         else
9112                 echo "(I can't seem to compile and run the test program.)"
9113                 if ./usg; then
9114                         xxx="a USG one, i.e. you use setpgrp()."
9115                 else
9116                         # SVR4 systems can appear rather BSD-ish.
9117                         case "$i_unistd" in
9118                         $undef)
9119                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9120                                 val="$define"
9121                                 ;;
9122                         $define)
9123                                 xxx="probably a USG one, i.e. you use setpgrp()."
9124                                 val="$undef"
9125                                 ;;
9126                         esac
9127                 fi
9128                 echo "Assuming your setpgrp is $xxx" >&4
9129         fi
9130         ;;
9131 *) val="$undef";;
9132 esac
9133 set d_bsdsetpgrp
9134 eval $setvar
9135 $rm -f try try.*
9136 : see if bzero exists
9137 set bzero d_bzero
9138 eval $inlibc
9139
9140 : see if signal is declared as pointer to function returning int or void
9141 echo " "
9142 xxx=`./findhdr signal.h`
9143 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9144 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9145         echo "You have int (*signal())() instead of void." >&4
9146         val="$undef"
9147 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9148         echo "You have void (*signal())()." >&4
9149         val="$define"
9150 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9151         echo "You have int (*signal())() instead of void." >&4
9152         val="$undef"
9153 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9154         echo "You have void (*signal())()." >&4
9155         val="$define"
9156 else
9157         case "$d_voidsig" in
9158         '')
9159         echo "I can't determine whether signal handler returns void or int..." >&4
9160                 dflt=void
9161                 rp="What type does your signal handler return?"
9162                 . ./myread
9163                 case "$ans" in
9164                 v*) val="$define";;
9165                 *) val="$undef";;
9166                 esac;;
9167         "$define")
9168                 echo "As you already told me, signal handler returns void." >&4
9169                 val="$define"
9170                 ;;
9171         *)      echo "As you already told me, signal handler returns int." >&4
9172                 val="$undef"
9173                 ;;
9174         esac
9175 fi
9176 set d_voidsig
9177 eval $setvar
9178 case "$d_voidsig" in
9179 "$define") signal_t="void";;
9180 *) signal_t="int";;
9181 esac
9182 $rm -f $$.tmp
9183
9184 : check for ability to cast large floats to 32-bit ints.
9185 echo " "
9186 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9187 if $test "$intsize" -ge 4; then
9188         xxx=int
9189 else
9190         xxx=long
9191 fi
9192 $cat >try.c <<EOCP
9193 #include <stdio.h>
9194 #include <sys/types.h>
9195 #include <signal.h>
9196 $signal_t blech(s) int s; { exit(3); }
9197 int main()
9198 {
9199         $xxx i32;
9200         double f, g;
9201         int result = 0;
9202         char str[16];
9203         signal(SIGFPE, blech);
9204
9205         /* Don't let compiler optimize the test away.  Store the number 
9206            in a writable string for gcc to pass to sscanf under HP/UX.
9207         */
9208         sprintf(str, "2147483647");
9209         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
9210         g = 10 * f;
9211         i32  = ($xxx) g;
9212
9213         /* x86 processors will probably give 0x8000 0000, which is a
9214        sign change.  We don't want that.  We want to mimic SPARC
9215            behavior here, which is to preserve the sign and give
9216            back 0x7fff ffff.
9217         */
9218         if (i32 != ($xxx) f)
9219                 result |= 1;
9220         exit(result);
9221 }
9222 EOCP
9223 set try
9224 if eval $compile_ok; then
9225         $run ./try
9226         yyy=$?
9227 else
9228         echo "(I can't seem to compile the test program--assuming it can't)"
9229         yyy=1
9230 fi
9231 case "$yyy" in
9232 0)      val="$define"
9233         echo "Yup, it can."
9234         ;;
9235 *)      val="$undef"
9236         echo "Nope, it can't."
9237         ;;
9238 esac
9239 set d_casti32
9240 eval $setvar
9241 $rm -f try try.*
9242
9243 : check for ability to cast negative floats to unsigned
9244 echo " "
9245 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
9246 $cat >try.c <<EOCP
9247 #include <stdio.h>
9248 #include <sys/types.h>
9249 #include <signal.h>
9250 $signal_t blech(s) int s; { exit(7); }
9251 $signal_t blech_in_list(s) int s; { exit(4); }
9252 unsigned long dummy_long(p) unsigned long p; { return p; }
9253 unsigned int dummy_int(p) unsigned int p; { return p; }
9254 unsigned short dummy_short(p) unsigned short p; { return p; }
9255 int main()
9256 {
9257         double f;
9258         unsigned long along;
9259         unsigned int aint;
9260         unsigned short ashort;
9261         int result = 0;
9262         char str[16];
9263         
9264         /* Frustrate gcc-2.7.2's optimizer which failed this test with
9265            a direct f = -123. assignment.  gcc-2.8.0 reportedly
9266            optimized the whole file away
9267         */
9268         /* Store the number in a writable string for gcc to pass to 
9269            sscanf under HP/UX.
9270         */
9271         sprintf(str, "-123");
9272         sscanf(str, "%lf", &f);  /* f = -123.; */
9273
9274         signal(SIGFPE, blech);
9275         along = (unsigned long)f;
9276         aint = (unsigned int)f;
9277         ashort = (unsigned short)f;
9278         if (along != (unsigned long)-123)
9279                 result |= 1;
9280         if (aint != (unsigned int)-123)
9281                 result |= 1;
9282         if (ashort != (unsigned short)-123)
9283                 result |= 1;
9284         sprintf(str, "1073741824.");
9285         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9286         f = f + f;
9287         along = 0;
9288         along = (unsigned long)f;
9289         if (along != 0x80000000)
9290                 result |= 2;
9291         f -= 1.;
9292         along = 0;
9293         along = (unsigned long)f;
9294         if (along != 0x7fffffff)
9295                 result |= 1;
9296         f += 2.;
9297         along = 0;
9298         along = (unsigned long)f;
9299         if (along != 0x80000001)
9300                 result |= 2;
9301         if (result)
9302                 exit(result);
9303         signal(SIGFPE, blech_in_list);
9304         sprintf(str, "123.");
9305         sscanf(str, "%lf", &f);  /* f = 123.; */
9306         along = dummy_long((unsigned long)f);
9307         aint = dummy_int((unsigned int)f);
9308         ashort = dummy_short((unsigned short)f);
9309         if (along != (unsigned long)123)
9310                 result |= 4;
9311         if (aint != (unsigned int)123)
9312                 result |= 4;
9313         if (ashort != (unsigned short)123)
9314                 result |= 4;
9315         exit(result);
9316
9317 }
9318 EOCP
9319 set try
9320 if eval $compile_ok; then
9321         $run ./try
9322         castflags=$?
9323 else
9324         echo "(I can't seem to compile the test program--assuming it can't)"
9325         castflags=7
9326 fi
9327 case "$castflags" in
9328 0)      val="$define"
9329         echo "Yup, it can."
9330         ;;
9331 *)      val="$undef"
9332         echo "Nope, it can't."
9333         ;;
9334 esac
9335 set d_castneg
9336 eval $setvar
9337 $rm -f try.*
9338
9339 : see if vprintf exists
9340 echo " "
9341 if set vprintf val -f d_vprintf; eval $csym; $val; then
9342         echo 'vprintf() found.' >&4
9343         val="$define"
9344         $cat >try.c <<'EOF'
9345 #include <varargs.h>
9346
9347 int main() { xxx("foo"); }
9348
9349 xxx(va_alist)
9350 va_dcl
9351 {
9352         va_list args;
9353         char buf[10];
9354
9355         va_start(args);
9356         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9357 }
9358 EOF
9359         set try
9360         if eval $compile && $run ./try; then
9361                 echo "Your vsprintf() returns (int)." >&4
9362                 val2="$undef"
9363         else
9364                 echo "Your vsprintf() returns (char*)." >&4
9365                 val2="$define"
9366         fi
9367 else
9368         echo 'vprintf() NOT found.' >&4
9369                 val="$undef"
9370                 val2="$undef"
9371 fi
9372 $rm -f try try.*
9373 set d_vprintf
9374 eval $setvar
9375 val=$val2
9376 set d_charvspr
9377 eval $setvar
9378
9379 : see if chown exists
9380 set chown d_chown
9381 eval $inlibc
9382
9383 : see if chroot exists
9384 set chroot d_chroot
9385 eval $inlibc
9386
9387 : see if chsize exists
9388 set chsize d_chsize
9389 eval $inlibc
9390
9391 : see if class exists
9392 set class d_class
9393 eval $inlibc
9394
9395 hasstruct='varname=$1; struct=$2; shift; shift;
9396 while $test $# -ge 2; do
9397         case "$1" in
9398         $define) echo "#include <$2>";;
9399         esac ;
9400     shift 2;
9401 done > try.c;
9402 echo "int main () { struct $struct foo; }" >> try.c;
9403 set try;
9404 if eval $compile; then
9405         val="$define";
9406 else
9407         val="$undef";
9408 fi;
9409 set $varname;
9410 eval $setvar;
9411 $rm -f try.c try.o'
9412
9413 : see if sys/types.h has to be included
9414 set sys/types.h i_systypes
9415 eval $inhdr
9416
9417 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9418 while $test $# -ge 2; do
9419         case "$1" in
9420         $define) echo "#include <$2>";;
9421         esac ;
9422     shift 2;
9423 done > try.c;
9424 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9425 set try;
9426 if eval $compile; then
9427         val="$define";
9428 else
9429         val="$undef";
9430 fi;
9431 set $varname;
9432 eval $setvar;
9433 $rm -f try.c try.o'
9434
9435 socketlib=''
9436 sockethdr=''
9437 : see whether socket exists
9438 echo " "
9439 $echo $n "Hmm... $c" >&4
9440 if set socket val -f d_socket; eval $csym; $val; then
9441         echo "Looks like you have Berkeley networking support." >&4
9442         d_socket="$define"
9443         if set setsockopt val -f; eval $csym; $val; then
9444                 d_oldsock="$undef"
9445         else
9446                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9447                 d_oldsock="$define"
9448         fi
9449 else
9450         if $contains socklib libc.list >/dev/null 2>&1; then
9451                 echo "Looks like you have Berkeley networking support." >&4
9452                 d_socket="$define"
9453                 : we will have to assume that it supports the 4.2 BSD interface
9454                 d_oldsock="$undef"
9455         else
9456                 echo "You don't have Berkeley networking in libc$_a..." >&4
9457                 if test "X$d_socket" = "X$define"; then
9458                    echo "...but you seem to believe that you have sockets." >&4
9459                 else
9460                         for net in net socket
9461                         do
9462                                 if test -f /usr/lib/lib$net$_a; then
9463                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9464                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9465                                         if $contains socket libc.list >/dev/null 2>&1; then
9466                                                 d_socket="$define"
9467                                                 socketlib="-l$net"
9468                                                 case "$net" in
9469                                                 net)
9470                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9471                                                         sockethdr="-I/usr/netinclude"
9472                                                         ;;
9473                                                 esac
9474                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
9475                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9476                                                         d_oldsock="$undef"
9477                                                 else
9478                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9479                                                         d_oldsock="$define"
9480                                                 fi
9481                                                 break
9482                                         fi
9483                                 fi
9484                         done
9485                         if test "X$d_socket" != "X$define"; then
9486                            echo "or anywhere else I see." >&4
9487                            d_socket="$undef"
9488                            d_oldsock="$undef"
9489                         fi
9490                 fi
9491         fi
9492 fi
9493
9494 : see if socketpair exists
9495 set socketpair d_sockpair
9496 eval $inlibc
9497
9498
9499 echo " "
9500 echo "Checking the availability of certain socket constants..." >&4
9501 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9502         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9503         $cat >try.c <<EOF
9504 #include <sys/types.h>
9505 #include <sys/socket.h>
9506 int main() {
9507     int i = $ENUM;
9508 }
9509 EOF
9510         val="$undef"
9511         set try; if eval $compile; then
9512                 val="$define"
9513         fi
9514         set d_${enum}; eval $setvar
9515         $rm -f try.c try
9516 done
9517
9518 : see if this is a sys/uio.h system
9519 set sys/uio.h i_sysuio
9520 eval $inhdr
9521
9522
9523 echo " "
9524 echo "Checking to see if your system supports struct cmsghdr..." >&4
9525 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9526 eval $hasstruct
9527 case "$d_cmsghdr_s" in
9528 "$define")      echo "Yes, it does."   ;;
9529 *)              echo "No, it doesn't." ;;
9530 esac
9531
9532
9533 : check for const keyword
9534 echo " "
9535 echo 'Checking to see if your C compiler knows about "const"...' >&4
9536 $cat >const.c <<'EOCP'
9537 typedef struct spug { int drokk; } spug;
9538 int main()
9539 {
9540         const char *foo;
9541         const spug y;
9542 }
9543 EOCP
9544 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9545         val="$define"
9546         echo "Yup, it does."
9547 else
9548         val="$undef"
9549         echo "Nope, it doesn't."
9550 fi
9551 set d_const
9552 eval $setvar
9553
9554 : see if crypt exists
9555 echo " "
9556 set crypt d_crypt
9557 eval $inlibc
9558 case "$d_crypt" in
9559 $define) cryptlib='' ;;
9560 *)      if set crypt val -f d_crypt; eval $csym; $val; then
9561                 echo 'crypt() found.' >&4
9562                 val="$define"
9563                 cryptlib=''
9564         else
9565                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9566                 if $test -z "$cryptlib"; then
9567                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9568                 else
9569                         cryptlib=-lcrypt
9570                 fi
9571                 if $test -z "$cryptlib"; then
9572                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9573                 else
9574                         cryptlib=-lcrypt
9575                 fi
9576                 if $test -z "$cryptlib"; then
9577                         cryptlib=`./loc libcrypt$_a "" $libpth`
9578                 else
9579                         cryptlib=-lcrypt
9580                 fi
9581                 if $test -z "$cryptlib"; then
9582                         echo 'crypt() NOT found.' >&4
9583                         val="$undef"
9584                 else
9585                         val="$define"
9586                 fi
9587         fi
9588         set d_crypt
9589         eval $setvar
9590         ;;
9591 esac
9592
9593 : get csh whereabouts
9594 case "$csh" in
9595 'csh') val="$undef" ;;
9596 *) val="$define" ;;
9597 esac
9598 set d_csh
9599 eval $setvar
9600 : Respect a hint or command line value for full_csh.
9601 case "$full_csh" in
9602 '') full_csh=$csh ;;
9603 esac
9604
9605 : see if cuserid exists
9606 set cuserid d_cuserid
9607 eval $inlibc
9608
9609 : see if this is a limits.h system
9610 set limits.h i_limits
9611 eval $inhdr
9612
9613 : see if this is a float.h system
9614 set float.h i_float
9615 eval $inhdr
9616
9617 : See if number of significant digits in a double precision number is known
9618 echo " "
9619 $cat >dbl_dig.c <<EOM
9620 #$i_limits I_LIMITS
9621 #$i_float I_FLOAT
9622 #ifdef I_LIMITS
9623 #include <limits.h>
9624 #endif
9625 #ifdef I_FLOAT
9626 #include <float.h>
9627 #endif
9628 #ifdef DBL_DIG
9629 printf("Contains DBL_DIG");
9630 #endif
9631 EOM
9632 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9633 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9634         echo "DBL_DIG found." >&4
9635         val="$define"
9636 else
9637         echo "DBL_DIG NOT found." >&4
9638         val="$undef"
9639 fi
9640 $rm -f dbl_dig.?
9641 set d_dbl_dig
9642 eval $setvar
9643
9644 hasproto='varname=$1; func=$2; shift; shift;
9645 while $test $# -ge 2; do
9646         case "$1" in
9647         $define) echo "#include <$2>";;
9648         esac ;
9649     shift 2;
9650 done > try.c;
9651 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9652 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9653         echo "$func() prototype found.";
9654         val="$define";
9655 else
9656         echo "$func() prototype NOT found.";
9657         val="$undef";
9658 fi;
9659 set $varname;
9660 eval $setvar;
9661 $rm -f try.c tryout.c'
9662
9663 : see if dbm.h is available
9664 : see if dbmclose exists
9665 set dbmclose d_dbmclose
9666 eval $inlibc
9667
9668 case "$d_dbmclose" in
9669 $define)
9670         set dbm.h i_dbm
9671         eval $inhdr
9672         case "$i_dbm" in
9673         $define)
9674                 val="$undef"
9675                 set i_rpcsvcdbm
9676                 eval $setvar
9677                 ;;
9678         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9679                 eval $inhdr
9680                 ;;
9681         esac
9682         ;;
9683 *)      echo "We won't be including <dbm.h>"
9684         val="$undef"
9685         set i_dbm
9686         eval $setvar
9687         val="$undef"
9688         set i_rpcsvcdbm
9689         eval $setvar
9690         ;;
9691 esac
9692
9693 : see if prototype for dbminit is available
9694 echo " "
9695 set d_dbminitproto dbminit $i_dbm dbm.h
9696 eval $hasproto
9697
9698 : see if difftime exists
9699 set difftime d_difftime
9700 eval $inlibc
9701
9702 : see if this is a dirent system
9703 echo " "
9704 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9705         val="$define"
9706         echo "<dirent.h> found." >&4
9707 else
9708         val="$undef"
9709         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9710                 echo "<sys/dir.h> found." >&4
9711                 echo " "
9712         else
9713                 xinc=`./findhdr sys/ndir.h`
9714         fi
9715         echo "<dirent.h> NOT found." >&4
9716 fi
9717 set i_dirent
9718 eval $setvar
9719
9720 : Look for type of directory structure.
9721 echo " "
9722 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9723
9724 case "$direntrytype" in
9725 ''|' ')
9726         case "$i_dirent" in
9727         $define) guess1='struct dirent' ;;
9728         *) guess1='struct direct'  ;;
9729         esac
9730         ;;
9731 *)      guess1="$direntrytype"
9732         ;;
9733 esac
9734
9735 case "$guess1" in
9736 'struct dirent') guess2='struct direct' ;;
9737 *) guess2='struct dirent' ;;
9738 esac
9739                 
9740 if $contains "$guess1" try.c >/dev/null 2>&1; then
9741         direntrytype="$guess1"
9742         echo "Your directory entries are $direntrytype." >&4
9743 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9744         direntrytype="$guess2"
9745         echo "Your directory entries seem to be $direntrytype." >&4
9746 else
9747         echo "I don't recognize your system's directory entries." >&4
9748         rp="What type is used for directory entries on this system?"
9749         dflt="$guess1"
9750         . ./myread
9751         direntrytype="$ans"
9752 fi
9753 $rm -f try.c
9754
9755
9756 : see if the directory entry stores field length
9757 echo " "
9758 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9759 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9760         echo "Good, your directory entry keeps length information in d_namlen." >&4
9761         val="$define"
9762 else
9763         echo "Your directory entry does not know about the d_namlen field." >&4
9764         val="$undef"
9765 fi
9766 set d_dirnamlen
9767 eval $setvar
9768 $rm -f try.c
9769
9770 : see if this is an sysdir system
9771 set sys/dir.h i_sysdir
9772 eval $inhdr
9773
9774 : see if this is an sysndir system
9775 set sys/ndir.h i_sysndir
9776 eval $inhdr
9777
9778 : Look for dirfd
9779 echo " "
9780 $cat >dirfd.c <<EOM
9781 #include <stdio.h>
9782 #$i_dirent I_DIRENT             /**/
9783 #$i_sysdir I_SYS_DIR            /**/
9784 #$i_sysndir I_SYS_NDIR          /**/
9785 #$i_systypes I_SYS_TYPES        /**/
9786 #if defined(I_SYS_TYPES)
9787 #include <sys/types.h>
9788 #endif
9789 #if defined(I_DIRENT)
9790 #include <dirent.h>
9791 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
9792 #include <sys/dir.h>
9793 #endif
9794 #else
9795 #ifdef I_SYS_NDIR
9796 #include <sys/ndir.h>
9797 #else
9798 #ifdef I_SYS_DIR
9799 #ifdef hp9000s500
9800 #include <ndir.h>       /* may be wrong in the future */
9801 #else
9802 #include <sys/dir.h>
9803 #endif
9804 #endif
9805 #endif
9806 #endif 
9807 int main() {
9808         DIR *dirp = opendir(".");
9809         if (dirfd(dirp) >= 0)
9810                 exit(0);
9811         else
9812                 exit(1);
9813 }
9814 EOM
9815 set dirfd
9816 if eval $compile; then
9817         val="$define"
9818 fi
9819 case "$val" in
9820 $define)        echo "dirfd() found." >&4       ;;
9821 *)              echo "dirfd() NOT found." >&4   ;;
9822 esac
9823 set d_dirfd
9824 eval $setvar
9825 $rm -f dirfd*
9826
9827 : see if dlerror exists
9828 xxx_runnm="$runnm"
9829 runnm=false
9830 set dlerror d_dlerror
9831 eval $inlibc
9832 runnm="$xxx_runnm"
9833
9834 : see if dlfcn is available
9835 set dlfcn.h i_dlfcn
9836 eval $inhdr
9837
9838 case "$usedl" in
9839 $define|y|true)
9840         $cat << EOM
9841
9842 On a few systems, the dynamically loaded modules that perl generates and uses
9843 will need a different extension than shared libs. The default will probably
9844 be appropriate.
9845
9846 EOM
9847         case "$dlext" in
9848         '')     dflt="$so" ;;
9849         *)      dflt="$dlext" ;;
9850         esac
9851         rp='What is the extension of dynamically loaded modules'
9852         . ./myread
9853         dlext="$ans"
9854         ;;
9855 *)
9856         dlext="none"
9857         ;;
9858 esac
9859
9860 : Check if dlsym need a leading underscore
9861 echo " "
9862 val="$undef"
9863
9864 case "$dlsrc" in
9865 dl_dlopen.xs)
9866         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9867         $cat >dyna.c <<'EOM'
9868 fred () { }
9869 EOM
9870
9871 $cat >fred.c<<EOM
9872
9873 #include <stdio.h>
9874 #$i_dlfcn I_DLFCN
9875 #ifdef I_DLFCN
9876 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9877 #else
9878 #include <sys/types.h>
9879 #include <nlist.h>
9880 #include <link.h>
9881 #endif
9882
9883 extern int fred() ;
9884
9885 int main()
9886 {
9887     void * handle ;
9888     void * symbol ;
9889 #ifndef RTLD_LAZY
9890     int mode = 1 ;
9891 #else
9892     int mode = RTLD_LAZY ;
9893 #endif
9894     handle = dlopen("./dyna.$dlext", mode) ;
9895     if (handle == NULL) {
9896         printf ("1\n") ;
9897         fflush (stdout) ;
9898         exit(0);
9899     }
9900     symbol = dlsym(handle, "fred") ;
9901     if (symbol == NULL) {
9902         /* try putting a leading underscore */
9903         symbol = dlsym(handle, "_fred") ;
9904         if (symbol == NULL) {
9905             printf ("2\n") ;
9906             fflush (stdout) ;
9907             exit(0);
9908         }
9909         printf ("3\n") ;
9910     }
9911     else
9912         printf ("4\n") ;
9913     fflush (stdout) ;
9914     exit(0);
9915 }
9916 EOM
9917         : Call the object file tmp-dyna.o in case dlext=o.
9918         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9919                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9920                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9921                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9922                 xxx=`$run ./fred`
9923                 case $xxx in
9924                 1)      echo "Test program failed using dlopen." >&4
9925                         echo "Perhaps you should not use dynamic loading." >&4;;
9926                 2)      echo "Test program failed using dlsym." >&4
9927                         echo "Perhaps you should not use dynamic loading." >&4;;
9928                 3)      echo "dlsym needs a leading underscore" >&4
9929                         val="$define" ;;
9930                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9931                 esac
9932         else
9933                 echo "I can't compile and run the test program." >&4
9934                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9935         fi
9936         ;;
9937 esac
9938                 
9939 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
9940
9941 set d_dlsymun
9942 eval $setvar
9943
9944 : see if prototype for drand48 is available
9945 echo " "
9946 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9947 eval $hasproto
9948
9949 : see if dup2 exists
9950 set dup2 d_dup2
9951 eval $inlibc
9952
9953 : see if eaccess exists
9954 set eaccess d_eaccess
9955 eval $inlibc
9956
9957 : see if endgrent exists
9958 set endgrent d_endgrent
9959 eval $inlibc
9960
9961 : see if endhostent exists
9962 set endhostent d_endhent
9963 eval $inlibc
9964
9965 : see if endnetent exists
9966 set endnetent d_endnent
9967 eval $inlibc
9968
9969 : see if endprotoent exists
9970 set endprotoent d_endpent
9971 eval $inlibc
9972
9973 : see if endpwent exists
9974 set endpwent d_endpwent
9975 eval $inlibc
9976
9977 : see if endservent exists
9978 set endservent d_endsent
9979 eval $inlibc
9980
9981 : Locate the flags for 'open()'
9982 echo " "
9983 $cat >try.c <<'EOCP'
9984 #include <sys/types.h>
9985 #ifdef I_FCNTL
9986 #include <fcntl.h>
9987 #endif
9988 #ifdef I_SYS_FILE
9989 #include <sys/file.h>
9990 #endif
9991 int main() {
9992         if(O_RDONLY);
9993 #ifdef O_TRUNC
9994         exit(0);
9995 #else
9996         exit(1);
9997 #endif
9998 }
9999 EOCP
10000 : check sys/file.h first to get FREAD on Sun
10001 if $test `./findhdr sys/file.h` && \
10002                 set try -DI_SYS_FILE && eval $compile; then
10003         h_sysfile=true;
10004         echo "<sys/file.h> defines the O_* constants..." >&4
10005         if $run ./try; then
10006                 echo "and you have the 3 argument form of open()." >&4
10007                 val="$define"
10008         else
10009                 echo "but not the 3 argument form of open().  Oh, well." >&4
10010                 val="$undef"
10011         fi
10012 elif $test `./findhdr fcntl.h` && \
10013                 set try -DI_FCNTL && eval $compile; then
10014         h_fcntl=true;
10015         echo "<fcntl.h> defines the O_* constants..." >&4
10016         if $run ./try; then
10017                 echo "and you have the 3 argument form of open()." >&4
10018                 val="$define"
10019         else
10020                 echo "but not the 3 argument form of open().  Oh, well." >&4
10021                 val="$undef"
10022         fi
10023 else
10024         val="$undef"
10025         echo "I can't find the O_* constant definitions!  You got problems." >&4
10026 fi
10027 set d_open3
10028 eval $setvar
10029 $rm -f try try.*
10030
10031 : see which of string.h or strings.h is needed
10032 echo " "
10033 strings=`./findhdr string.h`
10034 if $test "$strings" && $test -r "$strings"; then
10035         echo "Using <string.h> instead of <strings.h>." >&4
10036         val="$define"
10037 else
10038         val="$undef"
10039         strings=`./findhdr strings.h`
10040         if $test "$strings" && $test -r "$strings"; then
10041                 echo "Using <strings.h> instead of <string.h>." >&4
10042         else
10043                 echo "No string header found -- You'll surely have problems." >&4
10044         fi
10045 fi
10046 set i_string
10047 eval $setvar
10048 case "$i_string" in
10049 "$undef") strings=`./findhdr strings.h`;;
10050 *)        strings=`./findhdr string.h`;;
10051 esac
10052
10053 : see if this is a sys/file.h system
10054 val=''
10055 set sys/file.h val
10056 eval $inhdr
10057
10058 : do we need to include sys/file.h ?
10059 case "$val" in
10060 "$define")
10061         echo " "
10062         if $h_sysfile; then
10063                 val="$define"
10064                 echo "We'll be including <sys/file.h>." >&4
10065         else
10066                 val="$undef"
10067                 echo "We won't be including <sys/file.h>." >&4
10068         fi
10069         ;;
10070 *)
10071         h_sysfile=false
10072         ;;
10073 esac
10074 set i_sysfile
10075 eval $setvar
10076
10077 : see if fcntl.h is there
10078 val=''
10079 set fcntl.h val
10080 eval $inhdr
10081
10082 : see if we can include fcntl.h
10083 case "$val" in
10084 "$define")
10085         echo " "
10086         if $h_fcntl; then
10087                 val="$define"
10088                 echo "We'll be including <fcntl.h>." >&4
10089         else
10090                 val="$undef"
10091                 if $h_sysfile; then
10092         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
10093                 else
10094                         echo "We won't be including <fcntl.h>." >&4
10095                 fi
10096         fi
10097         ;;
10098 *)
10099         h_fcntl=false
10100         val="$undef"
10101         ;;
10102 esac
10103 set i_fcntl
10104 eval $setvar
10105
10106 : check for non-blocking I/O stuff
10107 case "$h_sysfile" in
10108 true) echo "#include <sys/file.h>" > head.c;;
10109 *)
10110        case "$h_fcntl" in
10111        true) echo "#include <fcntl.h>" > head.c;;
10112        *) echo "#include <sys/fcntl.h>" > head.c;;
10113        esac
10114        ;;
10115 esac
10116 echo " "
10117 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
10118 case "$o_nonblock" in
10119 '')
10120         $cat head.c > try.c
10121         $cat >>try.c <<EOCP
10122 #include <stdio.h>
10123 #include <stdlib.h>
10124 #$i_fcntl I_FCNTL
10125 #ifdef I_FCNTL
10126 #include <fcntl.h>
10127 #endif
10128 int main() {
10129 #ifdef O_NONBLOCK
10130         printf("O_NONBLOCK\n");
10131         exit(0);
10132 #endif
10133 #ifdef O_NDELAY
10134         printf("O_NDELAY\n");
10135         exit(0);
10136 #endif
10137 #ifdef FNDELAY
10138         printf("FNDELAY\n");
10139         exit(0);
10140 #endif
10141         exit(0);
10142 }
10143 EOCP
10144         set try
10145         if eval $compile_ok; then
10146                 o_nonblock=`$run ./try`
10147                 case "$o_nonblock" in
10148                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
10149                 *) echo "Seems like we can use $o_nonblock.";;
10150                 esac
10151         else
10152                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
10153         fi
10154         ;;
10155 *) echo "Using $hint value $o_nonblock.";;
10156 esac
10157 $rm -f try try.* .out core
10158
10159 echo " "
10160 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
10161 case "$eagain" in
10162 '')
10163         $cat head.c > try.c
10164         $cat >>try.c <<EOCP
10165 #include <errno.h>
10166 #include <sys/types.h>
10167 #include <signal.h>
10168 #include <stdio.h> 
10169 #include <stdlib.h> 
10170 #$i_fcntl I_FCNTL
10171 #ifdef I_FCNTL
10172 #include <fcntl.h>
10173 #endif
10174 #define MY_O_NONBLOCK $o_nonblock
10175 #ifndef errno  /* XXX need better Configure test */
10176 extern int errno;
10177 #endif
10178 #$i_unistd I_UNISTD
10179 #ifdef I_UNISTD
10180 #include <unistd.h>
10181 #endif
10182 #$i_string I_STRING
10183 #ifdef I_STRING
10184 #include <string.h>
10185 #else
10186 #include <strings.h>
10187 #endif
10188 $signal_t blech(x) int x; { exit(3); }
10189 EOCP
10190         $cat >> try.c <<'EOCP'
10191 int main()
10192 {
10193         int pd[2];
10194         int pu[2];
10195         char buf[1];
10196         char string[100];
10197
10198         pipe(pd);       /* Down: child -> parent */
10199         pipe(pu);       /* Up: parent -> child */
10200         if (0 != fork()) {
10201                 int ret;
10202                 close(pd[1]);   /* Parent reads from pd[0] */
10203                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
10204 #ifdef F_SETFL
10205                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
10206                         exit(1);
10207 #else
10208                 exit(4);
10209 #endif
10210                 signal(SIGALRM, blech);
10211                 alarm(5);
10212                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
10213                         exit(2);
10214                 sprintf(string, "%d\n", ret);
10215                 write(2, string, strlen(string));
10216                 alarm(0);
10217 #ifdef EAGAIN
10218                 if (errno == EAGAIN) {
10219                         printf("EAGAIN\n");
10220                         goto ok;
10221                 }
10222 #endif
10223 #ifdef EWOULDBLOCK
10224                 if (errno == EWOULDBLOCK)
10225                         printf("EWOULDBLOCK\n");
10226 #endif
10227         ok:
10228                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
10229                 sleep(2);                               /* Give it time to close our pipe */
10230                 alarm(5);
10231                 ret = read(pd[0], buf, 1);      /* Should read EOF */
10232                 alarm(0);
10233                 sprintf(string, "%d\n", ret);
10234                 write(4, string, strlen(string));
10235                 exit(0);
10236         }
10237
10238         close(pd[0]);                   /* We write to pd[1] */
10239         close(pu[1]);                   /* We read from pu[0] */
10240         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
10241         close(pd[1]);                   /* Pipe pd is now fully closed! */
10242         exit(0);                                /* Bye bye, thank you for playing! */
10243 }
10244 EOCP
10245         set try
10246         if eval $compile_ok; then
10247                 echo "$startsh" >mtry
10248                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
10249                 chmod +x mtry
10250                 ./mtry >/dev/null 2>&1
10251                 case $? in
10252                 0) eagain=`$cat try.out`;;
10253                 1) echo "Could not perform non-blocking setting!";;
10254                 2) echo "I did a successful read() for something that was not there!";;
10255                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
10256                 4) echo "Could not find F_SETFL!";;
10257                 *) echo "Something terribly wrong happened during testing.";;
10258                 esac
10259                 rd_nodata=`$cat try.ret`
10260                 echo "A read() system call with no data present returns $rd_nodata."
10261                 case "$rd_nodata" in
10262                 0|-1) ;;
10263                 *)
10264                         echo "(That's peculiar, fixing that to be -1.)"
10265                         rd_nodata=-1
10266                         ;;
10267                 esac
10268                 case "$eagain" in
10269                 '')
10270                         echo "Forcing errno EAGAIN on read() with no data available."
10271                         eagain=EAGAIN
10272                         ;;
10273                 *)
10274                         echo "Your read() sets errno to $eagain when no data is available."
10275                         ;;
10276                 esac
10277                 status=`$cat try.err`
10278                 case "$status" in
10279                 0) echo "And it correctly returns 0 to signal EOF.";;
10280                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
10281                 *) echo "However, your read() returns '$status' on EOF??";;
10282                 esac
10283                 val="$define"
10284                 if test "$status" = "$rd_nodata"; then
10285                         echo "WARNING: you can't distinguish between EOF and no data!"
10286                         val="$undef"
10287                 fi
10288         else
10289                 echo "I can't compile the test program--assuming errno EAGAIN will do."
10290                 eagain=EAGAIN
10291         fi
10292         set d_eofnblk
10293         eval $setvar
10294         ;;
10295 *)
10296         echo "Using $hint value $eagain."
10297         echo "Your read() returns $rd_nodata when no data is present."
10298         case "$d_eofnblk" in
10299         "$define") echo "And you can see EOF because read() returns 0.";;
10300         "$undef") echo "But you can't see EOF status from read() returned value.";;
10301         *)
10302                 echo "(Assuming you can't see EOF status from read anyway.)"
10303                 d_eofnblk=$undef
10304                 ;;
10305         esac
10306         ;;
10307 esac
10308 $rm -f try try.* .out core head.c mtry
10309
10310 : see if fchdir exists
10311 set fchdir d_fchdir
10312 eval $inlibc
10313
10314 : see if fchmod exists
10315 set fchmod d_fchmod
10316 eval $inlibc
10317
10318 : see if fchown exists
10319 set fchown d_fchown
10320 eval $inlibc
10321
10322 : see if this is an fcntl system
10323 set fcntl d_fcntl
10324 eval $inlibc
10325
10326 echo " "
10327 : See if fcntl-based locking works.
10328 $cat >try.c <<EOCP
10329 #include <stdlib.h>
10330 #include <unistd.h>
10331 #include <fcntl.h>
10332 #include <signal.h>
10333 $signal_t blech(x) int x; { exit(3); }
10334 int main() {
10335 #if defined(F_SETLK) && defined(F_SETLKW)
10336      struct flock flock;
10337      int retval, fd;
10338      fd = open("try.c", O_RDONLY);
10339      flock.l_type = F_RDLCK;
10340      flock.l_whence = SEEK_SET;
10341      flock.l_start = flock.l_len = 0;
10342      signal(SIGALRM, blech);
10343      alarm(10);
10344      retval = fcntl(fd, F_SETLK, &flock);
10345      close(fd);
10346      (retval < 0 ? exit(2) : exit(0));
10347 #else
10348      exit(2);
10349 #endif
10350 }
10351 EOCP
10352 echo "Checking if fcntl-based file locking works... "
10353 case "$d_fcntl" in
10354 "$define")
10355         set try
10356         if eval $compile_ok; then
10357                 if $run ./try; then
10358                         echo "Yes, it seems to work."
10359                         val="$define"
10360                 else
10361                         echo "Nope, it didn't work."
10362                         val="$undef"
10363                         case "$?" in
10364                         3) $cat >&4 <<EOM
10365 ***
10366 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
10367 *** This is (almost) impossible.
10368 *** If your NFS lock daemons are not feeling well, something like
10369 *** this may happen, please investigate.  Cannot continue, aborting.
10370 ***
10371 EOM
10372                                 exit 1
10373                                 ;;
10374                         esac
10375                 fi
10376         else
10377                 echo "I'm unable to compile the test program, so I'll assume not."
10378                 val="$undef"
10379         fi
10380         ;;
10381 *) val="$undef";
10382         echo "Nope, since you don't even have fcntl()."
10383         ;;
10384 esac
10385 set d_fcntl_can_lock
10386 eval $setvar
10387 $rm -f try*
10388
10389
10390 : see if sys/select.h has to be included
10391 set sys/select.h i_sysselct
10392 eval $inhdr
10393
10394 : see if we should include time.h, sys/time.h, or both
10395 echo " "
10396 if test "X$timeincl" = X; then
10397         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10398         $echo $n "I'm now running the test program...$c"
10399         $cat >try.c <<'EOCP'
10400 #include <sys/types.h>
10401 #ifdef I_TIME
10402 #include <time.h>
10403 #endif
10404 #ifdef I_SYSTIME
10405 #ifdef SYSTIMEKERNEL
10406 #define KERNEL
10407 #endif
10408 #include <sys/time.h>
10409 #endif
10410 #ifdef I_SYSSELECT
10411 #include <sys/select.h>
10412 #endif
10413 int main()
10414 {
10415         struct tm foo;
10416 #ifdef S_TIMEVAL
10417         struct timeval bar;
10418 #endif
10419 #ifdef S_TIMEZONE
10420         struct timezone tzp;
10421 #endif
10422         if (foo.tm_sec == foo.tm_sec)
10423                 exit(0);
10424 #ifdef S_TIMEVAL
10425         if (bar.tv_sec == bar.tv_sec)
10426                 exit(0);
10427 #endif
10428         exit(1);
10429 }
10430 EOCP
10431         flags=''
10432         for s_timezone in '-DS_TIMEZONE' ''; do
10433         sysselect=''
10434         for s_timeval in '-DS_TIMEVAL' ''; do
10435         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10436         for i_time in '' '-DI_TIME'; do
10437         for i_systime in '-DI_SYSTIME' ''; do
10438                 case "$flags" in
10439                 '') $echo $n ".$c"
10440                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10441                         if eval $compile; then
10442                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10443                                 shift
10444                                 flags="$*"
10445                                 echo " "
10446                                 $echo $n "Succeeded with $flags$c"
10447                         fi
10448                         ;;
10449                 esac
10450         done
10451         done
10452         done
10453         done
10454         done
10455         timeincl=''
10456         echo " "
10457         case "$flags" in
10458         *SYSTIMEKERNEL*) i_systimek="$define"
10459                 timeincl=`./findhdr sys/time.h`
10460                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10461         *) i_systimek="$undef";;
10462         esac
10463         case "$flags" in
10464         *I_TIME*) i_time="$define"
10465                 timeincl=`./findhdr time.h`" $timeincl"
10466                 echo "We'll include <time.h>." >&4;;
10467         *) i_time="$undef";;
10468         esac
10469         case "$flags" in
10470         *I_SYSTIME*) i_systime="$define"
10471                 timeincl=`./findhdr sys/time.h`" $timeincl"
10472                 echo "We'll include <sys/time.h>." >&4;;
10473         *) i_systime="$undef";;
10474         esac
10475         $rm -f try.c try
10476 fi
10477 : see if struct tm knows about tm_zone
10478 case "$i_systime$i_time" in
10479 *$define*) 
10480         echo " "
10481         echo "Checking to see if your struct tm has tm_zone field..." >&4
10482         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
10483         eval $hasfield
10484         ;;
10485 *)      val="$undef"
10486         set d_tm_tm_zone
10487         eval $setvar
10488         ;;
10489 esac
10490 case "$d_tm_tm_zone" in
10491 "$define")      echo "Yes, it does."   ;;
10492 *)              echo "No, it doesn't." ;;
10493 esac
10494 : see if struct tm knows about tm_gmtoff
10495 case "$i_systime$i_time" in
10496 *$define*) 
10497         echo " "
10498         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
10499         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
10500         eval $hasfield
10501         ;;
10502 *)      val="$undef"
10503         set d_tm_tm_gmtoff
10504         eval $setvar
10505         ;;
10506 esac
10507 case "$d_tm_tm_gmtoff" in
10508 "$define")      echo "Yes, it does."   ;;
10509 *)              echo "No, it doesn't." ;;
10510 esac
10511
10512 : check for fd_set items
10513 $cat <<EOM
10514
10515 Checking to see how well your C compiler handles fd_set and friends ...
10516 EOM
10517 $cat >try.c <<EOCP
10518 #$i_systime I_SYS_TIME
10519 #$i_sysselct I_SYS_SELECT
10520 #$d_socket HAS_SOCKET
10521 #include <sys/types.h>
10522 #ifdef HAS_SOCKET
10523 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10524 #endif
10525 #ifdef I_SYS_TIME
10526 #include <sys/time.h>
10527 #endif
10528 #ifdef I_SYS_SELECT
10529 #include <sys/select.h>
10530 #endif
10531 int main() {
10532         fd_set fds;
10533
10534 #ifdef TRYBITS
10535         if(fds.fds_bits);
10536 #endif
10537
10538 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10539         exit(0);
10540 #else
10541         exit(1);
10542 #endif
10543 }
10544 EOCP
10545 set try -DTRYBITS
10546 if eval $compile; then
10547         d_fds_bits="$define"
10548         d_fd_set="$define"
10549         echo "Well, your system knows about the normal fd_set typedef..." >&4
10550         if $run ./try; then
10551                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10552                 d_fd_macros="$define"
10553         else
10554                 $cat >&4 <<'EOM'
10555 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10556 EOM
10557                 d_fd_macros="$undef"
10558         fi
10559 else
10560         $cat <<'EOM'
10561 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10562 EOM
10563         set try
10564         if eval $compile; then
10565                 d_fds_bits="$undef"
10566                 d_fd_set="$define"
10567                 echo "Well, your system has some sort of fd_set available..." >&4
10568                 if $run ./try; then
10569                         echo "and you have the normal fd_set macros." >&4
10570                         d_fd_macros="$define"
10571                 else
10572                         $cat <<'EOM'
10573 but not the normal fd_set macros!  Gross!  More work for me...
10574 EOM
10575                         d_fd_macros="$undef"
10576                 fi
10577         else
10578         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10579                 d_fd_set="$undef"
10580                 d_fds_bits="$undef"
10581                 d_fd_macros="$undef"
10582         fi
10583 fi
10584 $rm -f try try.*
10585
10586 : see if fgetpos exists
10587 set fgetpos d_fgetpos
10588 eval $inlibc
10589
10590 : see if finite exists
10591 set finite d_finite
10592 eval $inlibc
10593
10594 : see if finitel exists
10595 set finitel d_finitel
10596 eval $inlibc
10597
10598 : see if flock exists
10599 set flock d_flock
10600 eval $inlibc
10601
10602 : see if prototype for flock is available
10603 echo " "
10604 set d_flockproto flock $i_sysfile sys/file.h
10605 eval $hasproto
10606
10607 : see if fork exists
10608 set fork d_fork
10609 eval $inlibc
10610
10611 : see if fp_class exists
10612 set fp_class d_fp_class
10613 eval $inlibc
10614
10615 : see if pathconf exists
10616 set pathconf d_pathconf
10617 eval $inlibc
10618
10619 : see if fpathconf exists
10620 set fpathconf d_fpathconf
10621 eval $inlibc
10622
10623 : see if fpclass exists
10624 set fpclass d_fpclass
10625 eval $inlibc
10626
10627 : see if fpclassify exists
10628 set fpclassify d_fpclassify
10629 eval $inlibc
10630
10631 : see if fpclassl exists
10632 set fpclassl d_fpclassl
10633 eval $inlibc
10634
10635
10636 : check for fpos64_t
10637 echo " "
10638 echo "Checking to see if you have fpos64_t..." >&4
10639 $cat >try.c <<EOCP
10640 #include <stdio.h>
10641 int main() { fpos64_t x = 7; }
10642 EOCP
10643 set try
10644 if eval $compile; then
10645         val="$define"
10646         echo "You have fpos64_t."
10647 else
10648         val="$undef"
10649         echo "You do not have fpos64_t."
10650         case "$fpossize" in
10651         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10652         esac
10653 fi
10654 $rm -f try.* try
10655 set d_fpos64_t
10656 eval $setvar
10657
10658 : see if frexpl exists
10659 set frexpl d_frexpl
10660 eval $inlibc
10661
10662 : see if this is a sys/param system
10663 set sys/param.h i_sysparam
10664 eval $inhdr
10665
10666 : see if this is a sys/mount.h system
10667 set sys/mount.h i_sysmount
10668 eval $inhdr
10669
10670
10671 echo " "
10672 echo "Checking to see if your system supports struct fs_data..." >&4
10673 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10674 eval $hasstruct
10675 case "$d_fs_data_s" in
10676 "$define")      echo "Yes, it does."   ;;
10677 *)              echo "No, it doesn't." ;;
10678 esac
10679
10680 : see if fseeko exists
10681 set fseeko d_fseeko
10682 eval $inlibc
10683 case "$longsize" in
10684 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10685 esac
10686
10687 : see if fsetpos exists
10688 set fsetpos d_fsetpos
10689 eval $inlibc
10690
10691
10692 : see if fstatfs exists
10693 set fstatfs d_fstatfs
10694 eval $inlibc
10695
10696
10697 : see if statvfs exists
10698 set statvfs d_statvfs
10699 eval $inlibc
10700
10701 : see if fstatvfs exists
10702 set fstatvfs d_fstatvfs
10703 eval $inlibc
10704
10705
10706 : see if fsync exists
10707 set fsync d_fsync
10708 eval $inlibc
10709
10710 : see if ftello exists
10711 set ftello d_ftello
10712 eval $inlibc
10713 case "$longsize" in
10714 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10715 esac
10716
10717 : see if getcwd exists
10718 set getcwd d_getcwd
10719 eval $inlibc
10720
10721 : see if getespwnam exists
10722 set getespwnam d_getespwnam
10723 eval $inlibc
10724
10725
10726 : see if getfsstat exists
10727 set getfsstat d_getfsstat
10728 eval $inlibc
10729
10730 : see if getgrent exists
10731 set getgrent d_getgrent
10732 eval $inlibc
10733
10734 : see if gethostbyaddr exists
10735 set gethostbyaddr d_gethbyaddr
10736 eval $inlibc
10737
10738 : see if gethostbyname exists
10739 set gethostbyname d_gethbyname
10740 eval $inlibc
10741
10742 : see if gethostent exists
10743 set gethostent d_gethent
10744 eval $inlibc
10745
10746 : see how we will look up host name
10747 echo " "
10748 call=''
10749 if set gethostname val -f d_gethname; eval $csym; $val; then
10750         echo 'gethostname() found.' >&4
10751         d_gethname="$define"
10752         call=gethostname
10753 fi
10754 if set uname val -f d_uname; eval $csym; $val; then
10755         if ./xenix; then
10756                 $cat <<'EOM'
10757 uname() was found, but you're running xenix, and older versions of xenix
10758 have a broken uname(). If you don't really know whether your xenix is old
10759 enough to have a broken system call, use the default answer.
10760
10761 EOM
10762                 dflt=y
10763                 case "$d_uname" in
10764                 "$define") dflt=n;;
10765                 esac
10766                 rp='Is your uname() broken?'
10767                 . ./myread
10768                 case "$ans" in
10769                 n*) d_uname="$define"; call=uname;;
10770                 esac
10771         else
10772                 echo 'uname() found.' >&4
10773                 d_uname="$define"
10774                 case "$call" in
10775                 '') call=uname ;;
10776                 esac
10777         fi
10778 fi
10779 case "$d_gethname" in
10780 '') d_gethname="$undef";;
10781 esac
10782 case "$d_uname" in
10783 '') d_uname="$undef";;
10784 esac
10785 case "$d_uname$d_gethname" in
10786 *define*)
10787         dflt=n
10788         cat <<EOM
10789  
10790 Every now and then someone has a $call() that lies about the hostname
10791 but can't be fixed for political or economic reasons.  If you wish, I can
10792 pretend $call() isn't there and maybe compute hostname at run-time
10793 thanks to the '$phostname' command.
10794
10795 EOM
10796         rp="Shall I ignore $call() from now on?"
10797         . ./myread
10798         case "$ans" in
10799         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10800         esac;;
10801 esac
10802 case "$phostname" in
10803 '') aphostname='';;
10804 *) case "$aphostname" in
10805         /*) ;;
10806         *) set X $phostname
10807                 shift
10808                 file=$1
10809                 shift
10810                 file=`./loc $file $file $pth`
10811                 aphostname=`echo $file $*`
10812                 ;;
10813         esac
10814         ;;
10815 esac
10816 case "$d_uname$d_gethname" in
10817 *define*) ;;
10818 *)
10819         case "$phostname" in
10820         '')
10821                 echo "There will be no way for $package to get your hostname." >&4;;
10822         *)
10823         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10824                 ;;
10825         esac;;
10826 esac
10827 case "$d_phostname" in
10828 '') d_phostname="$undef";;
10829 esac
10830
10831 : see if this is a netdb.h system
10832 set netdb.h i_netdb
10833 eval $inhdr
10834
10835 : see if prototypes for various gethostxxx netdb.h functions are available
10836 echo " "
10837 set d_gethostprotos gethostent $i_netdb netdb.h
10838 eval $hasproto
10839
10840 : see if getitimer exists
10841 set getitimer d_getitimer
10842 eval $inlibc
10843
10844 : see if getlogin exists
10845 set getlogin d_getlogin
10846 eval $inlibc
10847
10848 : see if getmnt exists
10849 set getmnt d_getmnt
10850 eval $inlibc
10851
10852 : see if getmntent exists
10853 set getmntent d_getmntent
10854 eval $inlibc
10855
10856 : see if getnetbyaddr exists
10857 set getnetbyaddr d_getnbyaddr
10858 eval $inlibc
10859
10860 : see if getnetbyname exists
10861 set getnetbyname d_getnbyname
10862 eval $inlibc
10863
10864 : see if getnetent exists
10865 set getnetent d_getnent
10866 eval $inlibc
10867
10868 : see if prototypes for various getnetxxx netdb.h functions are available
10869 echo " "
10870 set d_getnetprotos getnetent $i_netdb netdb.h
10871 eval $hasproto
10872
10873 : see if getpagesize exists
10874 set getpagesize d_getpagsz
10875 eval $inlibc
10876
10877
10878 : see if getprotobyname exists
10879 set getprotobyname d_getpbyname
10880 eval $inlibc
10881
10882 : see if getprotobynumber exists
10883 set getprotobynumber d_getpbynumber
10884 eval $inlibc
10885
10886 : see if getprotoent exists
10887 set getprotoent d_getpent
10888 eval $inlibc
10889
10890 : see if getpgid exists
10891 set getpgid d_getpgid
10892 eval $inlibc
10893
10894 : see if getpgrp2 exists
10895 set getpgrp2 d_getpgrp2
10896 eval $inlibc
10897
10898 : see if getppid exists
10899 set getppid d_getppid
10900 eval $inlibc
10901
10902 : see if getpriority exists
10903 set getpriority d_getprior
10904 eval $inlibc
10905
10906 : see if prototypes for various getprotoxxx netdb.h functions are available
10907 echo " "
10908 set d_getprotoprotos getprotoent $i_netdb netdb.h
10909 eval $hasproto
10910
10911 : see if getprpwnam exists
10912 set getprpwnam d_getprpwnam
10913 eval $inlibc
10914
10915 : see if getpwent exists
10916 set getpwent d_getpwent
10917 eval $inlibc
10918
10919
10920 : see if getservbyname exists
10921 set getservbyname d_getsbyname
10922 eval $inlibc
10923
10924 : see if getservbyport exists
10925 set getservbyport d_getsbyport
10926 eval $inlibc
10927
10928 : see if getservent exists
10929 set getservent d_getsent
10930 eval $inlibc
10931
10932 : see if prototypes for various getservxxx netdb.h functions are available
10933 echo " "
10934 set d_getservprotos getservent $i_netdb netdb.h
10935 eval $hasproto
10936
10937 : see if getspnam exists
10938 set getspnam d_getspnam
10939 eval $inlibc
10940
10941 : see if gettimeofday or ftime exists
10942 set gettimeofday d_gettimeod
10943 eval $inlibc
10944 case "$d_gettimeod" in
10945 "$undef")
10946         set ftime d_ftime 
10947         eval $inlibc
10948         ;;
10949 *)
10950         val="$undef"; set d_ftime; eval $setvar
10951         ;;
10952 esac
10953 case "$d_gettimeod$d_ftime" in
10954 "$undef$undef")
10955         echo " "
10956         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10957         ;;
10958 esac
10959
10960 : see if this is an grp system
10961 set grp.h i_grp
10962 eval $inhdr
10963
10964 case "$i_grp" in
10965 $define)
10966         xxx=`./findhdr grp.h`
10967         $cppstdin $cppflags $cppminus < $xxx >$$.h
10968
10969         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10970                 val="$define"
10971         else
10972                 val="$undef"
10973         fi
10974         set d_grpasswd
10975         eval $setvar
10976
10977         $rm -f $$.h
10978         ;;
10979 *)
10980         val="$undef";
10981         set d_grpasswd; eval $setvar
10982         ;;
10983 esac
10984
10985 : see if hasmntopt exists
10986 set hasmntopt d_hasmntopt
10987 eval $inlibc
10988
10989 : see if this is a netinet/in.h or sys/in.h system
10990 set netinet/in.h i_niin sys/in.h i_sysin
10991 eval $inhdr
10992
10993 : see if arpa/inet.h has to be included
10994 set arpa/inet.h i_arpainet
10995 eval $inhdr
10996
10997 : see if htonl --and friends-- exists
10998 val=''
10999 set htonl val
11000 eval $inlibc
11001
11002 : Maybe they are macros.
11003 case "$val" in
11004 $undef)
11005         $cat >htonl.c <<EOM
11006 #include <stdio.h>
11007 #include <sys/types.h>
11008 #$i_niin I_NETINET_IN
11009 #$i_sysin I_SYS_IN
11010 #$i_arpainet I_ARPA_INET
11011 #ifdef I_NETINET_IN
11012 #include <netinet/in.h>
11013 #endif
11014 #ifdef I_SYS_IN
11015 #include <sys/in.h>
11016 #endif
11017 #ifdef I_ARPA_INET
11018 #include <arpa/inet.h>
11019 #endif
11020 #ifdef htonl
11021 printf("Defined as a macro.");
11022 #endif
11023 EOM
11024         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
11025         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
11026                 val="$define"
11027                 echo "But it seems to be defined as a macro." >&4
11028         fi
11029         $rm -f htonl.?
11030         ;;
11031 esac
11032 set d_htonl
11033 eval $setvar
11034
11035 : index or strchr
11036 echo " "
11037 if set index val -f; eval $csym; $val; then
11038         if set strchr val -f d_strchr; eval $csym; $val; then
11039                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
11040                         val="$define"
11041                         vali="$undef"
11042                         echo "strchr() found." >&4
11043                 else
11044                         val="$undef"
11045                         vali="$define"
11046                         echo "index() found." >&4
11047                 fi
11048         else
11049                 val="$undef"
11050                 vali="$define"
11051                 echo "index() found." >&4
11052         fi
11053 else
11054         if set strchr val -f d_strchr; eval $csym; $val; then
11055                 val="$define"
11056                 vali="$undef"
11057                 echo "strchr() found." >&4
11058         else
11059                 echo "No index() or strchr() found!" >&4
11060                 val="$undef"
11061                 vali="$undef"
11062         fi
11063 fi
11064 set d_strchr; eval $setvar
11065 val="$vali"
11066 set d_index; eval $setvar
11067
11068 : check whether inet_aton exists
11069 set inet_aton d_inetaton
11070 eval $inlibc
11071
11072 : Look for isascii
11073 echo " "
11074 $cat >isascii.c <<'EOCP'
11075 #include <stdio.h>
11076 #include <ctype.h>
11077 int main() {
11078         int c = 'A';
11079         if (isascii(c))
11080                 exit(0);
11081         else
11082                 exit(1);
11083 }
11084 EOCP
11085 set isascii
11086 if eval $compile; then
11087         echo "isascii() found." >&4
11088         val="$define"
11089 else
11090         echo "isascii() NOT found." >&4
11091         val="$undef"
11092 fi
11093 set d_isascii
11094 eval $setvar
11095 $rm -f isascii*
11096
11097 : see if isfinite exists
11098 set isfinite d_isfinite
11099 eval $inlibc
11100
11101 : see if isinf exists
11102 set isinf d_isinf
11103 eval $inlibc
11104
11105 : see if isnan exists
11106 set isnan d_isnan
11107 eval $inlibc
11108
11109 : see if isnanl exists
11110 set isnanl d_isnanl
11111 eval $inlibc
11112
11113 : see if killpg exists
11114 set killpg d_killpg
11115 eval $inlibc
11116
11117 : see if lchown exists
11118 echo " "
11119 $cat > try.c <<'EOCP'
11120 /* System header to define __stub macros and hopefully few prototypes,
11121     which can conflict with char lchown(); below.  */
11122 #include <assert.h>
11123 /* Override any gcc2 internal prototype to avoid an error.  */
11124 /* We use char because int might match the return type of a gcc2
11125    builtin and then its argument prototype would still apply.  */
11126 char lchown();
11127 int main() {
11128     /*  The GNU C library defines this for functions which it implements
11129         to always fail with ENOSYS.  Some functions are actually named
11130         something starting with __ and the normal name is an alias.  */
11131 #if defined (__stub_lchown) || defined (__stub___lchown)
11132 choke me
11133 #else
11134 lchown();
11135 #endif
11136 ; return 0; }
11137 EOCP
11138 set try
11139 if eval $compile; then
11140     $echo "lchown() found." >&4
11141     val="$define"
11142 else
11143     $echo "lchown() NOT found." >&4
11144     val="$undef"
11145 fi
11146 set d_lchown
11147 eval $setvar
11148
11149 : See if number of significant digits in a double precision number is known
11150 echo " "
11151 $cat >ldbl_dig.c <<EOM
11152 #$i_limits I_LIMITS
11153 #$i_float I_FLOAT
11154 #ifdef I_LIMITS
11155 #include <limits.h>
11156 #endif
11157 #ifdef I_FLOAT
11158 #include <float.h>
11159 #endif
11160 #ifdef LDBL_DIG
11161 printf("Contains LDBL_DIG");
11162 #endif
11163 EOM
11164 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
11165 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
11166         echo "LDBL_DIG found." >&4
11167         val="$define"
11168 else
11169         echo "LDBL_DIG NOT found." >&4
11170         val="$undef"
11171 fi
11172 $rm -f ldbl_dig.?
11173 set d_ldbl_dig
11174 eval $setvar
11175
11176 : see if link exists
11177 set link d_link
11178 eval $inlibc
11179
11180 : see if localeconv exists
11181 set localeconv d_locconv
11182 eval $inlibc
11183
11184 : see if lockf exists
11185 set lockf d_lockf
11186 eval $inlibc
11187
11188 : see if prototype for lseek is available
11189 echo " "
11190 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
11191 eval $hasproto
11192
11193 : see if lstat exists
11194 set lstat d_lstat
11195 eval $inlibc
11196
11197 : see if madvise exists
11198 set madvise d_madvise
11199 eval $inlibc
11200
11201 : see if mblen exists
11202 set mblen d_mblen
11203 eval $inlibc
11204
11205 : see if mbstowcs exists
11206 set mbstowcs d_mbstowcs
11207 eval $inlibc
11208
11209 : see if mbtowc exists
11210 set mbtowc d_mbtowc
11211 eval $inlibc
11212
11213 : see if memchr exists
11214 set memchr d_memchr
11215 eval $inlibc
11216
11217 : see if memcmp exists
11218 set memcmp d_memcmp
11219 eval $inlibc
11220
11221 : see if memcpy exists
11222 set memcpy d_memcpy
11223 eval $inlibc
11224
11225 : see if memmove exists
11226 set memmove d_memmove
11227 eval $inlibc
11228
11229 : see if memset exists
11230 set memset d_memset
11231 eval $inlibc
11232
11233 : see if mkdir exists
11234 set mkdir d_mkdir
11235 eval $inlibc
11236
11237 : see if mkdtemp exists
11238 set mkdtemp d_mkdtemp
11239 eval $inlibc
11240
11241 : see if mkfifo exists
11242 set mkfifo d_mkfifo
11243 eval $inlibc
11244
11245 : see if mkstemp exists
11246 set mkstemp d_mkstemp
11247 eval $inlibc
11248
11249 : see if mkstemps exists
11250 set mkstemps d_mkstemps
11251 eval $inlibc
11252
11253 : see if mktime exists
11254 set mktime d_mktime
11255 eval $inlibc
11256
11257 : see if this is a sys/mman.h system
11258 set sys/mman.h i_sysmman
11259 eval $inhdr
11260
11261 : see if mmap exists
11262 set mmap d_mmap
11263 eval $inlibc
11264 : see what shmat returns
11265 : default to something harmless
11266 mmaptype='void *'
11267 case "$i_sysmman$d_mmap" in
11268 "$define$define")
11269         $cat >mmap.c <<'END'
11270 #include <sys/mman.h>
11271 void *mmap();
11272 END
11273         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
11274                 mmaptype='void *'
11275         else
11276                 mmaptype='caddr_t'
11277         fi
11278         echo "and it returns ($mmaptype)." >&4
11279         ;;
11280 esac
11281
11282
11283
11284 : see if mprotect exists
11285 set mprotect d_mprotect
11286 eval $inlibc
11287
11288 : see if msgctl exists
11289 set msgctl d_msgctl
11290 eval $inlibc
11291
11292 : see if msgget exists
11293 set msgget d_msgget
11294 eval $inlibc
11295
11296 : see if msgsnd exists
11297 set msgsnd d_msgsnd
11298 eval $inlibc
11299
11300 : see if msgrcv exists
11301 set msgrcv d_msgrcv
11302 eval $inlibc
11303
11304 : see how much of the 'msg*(2)' library is present.
11305 h_msg=true
11306 echo " "
11307 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
11308 *"$undef"*) h_msg=false;;
11309 esac
11310 case "$osname" in
11311 freebsd)
11312     case "`ipcs 2>&1`" in
11313     "SVID messages"*"not configured"*)
11314         echo "Your $osname does not have the msg*(2) configured." >&4
11315         h_msg=false
11316         val="$undef"
11317         set msgctl d_msgctl
11318         eval $setvar
11319         set msgget d_msgget
11320         eval $setvar
11321         set msgsnd d_msgsnd
11322         eval $setvar
11323         set msgrcv d_msgrcv
11324         eval $setvar
11325         ;;
11326     esac
11327     ;;
11328 esac
11329 : we could also check for sys/ipc.h ...
11330 if $h_msg && $test `./findhdr sys/msg.h`; then
11331         echo "You have the full msg*(2) library." >&4
11332         val="$define"
11333 else
11334         echo "You don't have the full msg*(2) library." >&4
11335         val="$undef"
11336 fi
11337 set d_msg
11338 eval $setvar
11339
11340
11341 echo " "
11342 echo "Checking to see if your system supports struct msghdr..." >&4
11343 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11344 eval $hasstruct
11345 case "$d_msghdr_s" in
11346 "$define")      echo "Yes, it does."   ;;
11347 *)              echo "No, it doesn't." ;;
11348 esac
11349
11350
11351 : see if msync exists
11352 set msync d_msync
11353 eval $inlibc
11354
11355 : see if munmap exists
11356 set munmap d_munmap
11357 eval $inlibc
11358
11359 : see if nice exists
11360 set nice d_nice
11361 eval $inlibc
11362
11363 : see if this is a langinfo.h system
11364 set langinfo.h i_langinfo
11365 eval $inhdr
11366
11367 : see if nl_langinfo exists
11368 set nl_langinfo d_nl_langinfo
11369 eval $inlibc
11370
11371 : check for length of character
11372 echo " "
11373 case "$charsize" in
11374 '')
11375         echo "Checking to see how big your characters are (hey, you never know)..." >&4
11376         $cat >try.c <<'EOCP'
11377 #include <stdio.h>
11378 int main()
11379 {
11380     printf("%d\n", (int)sizeof(char));
11381     exit(0);
11382 }
11383 EOCP
11384         set try
11385         if eval $compile_ok; then
11386                 dflt=`$run ./try`
11387         else
11388                 dflt='1'
11389                 echo "(I can't seem to compile the test program.  Guessing...)"
11390         fi
11391         ;;
11392 *)
11393         dflt="$charsize"
11394         ;;
11395 esac
11396 rp="What is the size of a character (in bytes)?"
11397 . ./myread
11398 charsize="$ans"
11399 $rm -f try.c try
11400
11401 : check for volatile keyword
11402 echo " "
11403 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11404 $cat >try.c <<'EOCP'
11405 int main()
11406 {
11407         typedef struct _goo_struct goo_struct;
11408         goo_struct * volatile goo = ((goo_struct *)0);
11409         struct _goo_struct {
11410                 long long_int;
11411                 int reg_int;
11412                 char char_var;
11413         };
11414         typedef unsigned short foo_t;
11415         char *volatile foo;
11416         volatile int bar;
11417         volatile foo_t blech;
11418         foo = foo;
11419 }
11420 EOCP
11421 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11422         val="$define"
11423         echo "Yup, it does."
11424 else
11425         val="$undef"
11426         echo "Nope, it doesn't."
11427 fi
11428 set d_volatile
11429 eval $setvar
11430 $rm -f try.*
11431
11432
11433 echo " "
11434 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11435
11436 case "$use64bitint:$d_quad:$quadtype" in
11437 define:define:?*)
11438         ivtype="$quadtype"
11439         uvtype="$uquadtype"
11440         ivsize=8
11441         uvsize=8
11442         ;;
11443 *)      ivtype="long"
11444         uvtype="unsigned long"
11445         ivsize=$longsize
11446         uvsize=$longsize
11447         ;;
11448 esac
11449
11450 case "$uselongdouble:$d_longdbl" in
11451 define:define)
11452         nvtype="long double"
11453         nvsize=$longdblsize
11454         ;;
11455 *)      nvtype=double
11456         nvsize=$doublesize
11457         ;;
11458 esac
11459
11460 $echo "(IV will be "$ivtype", $ivsize bytes)"
11461 $echo "(UV will be "$uvtype", $uvsize bytes)"
11462 $echo "(NV will be "$nvtype", $nvsize bytes)"
11463
11464 $cat >try.c <<EOCP
11465 #$i_inttypes I_INTTYPES
11466 #ifdef I_INTTYPES
11467 #include <inttypes.h>
11468 #endif
11469 #include <stdio.h>
11470 int main() {
11471 #ifdef INT8
11472    int8_t i =  INT8_MAX;
11473   uint8_t u = UINT8_MAX;
11474   printf("int8_t\n");
11475 #endif
11476 #ifdef INT16
11477    int16_t i =  INT16_MAX;
11478   uint16_t i = UINT16_MAX;
11479   printf("int16_t\n");
11480 #endif
11481 #ifdef INT32
11482    int32_t i =  INT32_MAX;
11483   uint32_t u = UINT32_MAX;
11484   printf("int32_t\n");
11485 #endif
11486 }
11487 EOCP
11488
11489 case "$i8type" in
11490 '')     case "$charsize" in
11491         1)      i8type=char
11492                 u8type="unsigned char"
11493                 i8size=$charsize
11494                 u8size=$charsize
11495                 ;;
11496         esac
11497         ;;
11498 esac
11499 case "$i8type" in
11500 '')     set try -DINT8
11501         if eval $compile; then
11502                 case "`$run ./try`" in
11503                 int8_t) i8type=int8_t
11504                         u8type=uint8_t
11505                         i8size=1
11506                         u8size=1
11507                         ;;
11508                 esac
11509         fi
11510         ;;
11511 esac
11512 case "$i8type" in
11513 '')     if $test $charsize -ge 1; then
11514                 i8type=char
11515                 u8type="unsigned char"
11516                 i8size=$charsize
11517                 u8size=$charsize
11518         fi
11519         ;;
11520 esac
11521
11522 case "$i16type" in
11523 '')     case "$shortsize" in
11524         2)      i16type=short
11525                 u16type="unsigned short"
11526                 i16size=$shortsize
11527                 u16size=$shortsize
11528                 ;;
11529         esac
11530         ;;
11531 esac
11532 case "$i16type" in
11533 '')     set try -DINT16
11534         if eval $compile; then
11535                 case "`$run ./try`" in
11536                 int16_t)
11537                         i16type=int16_t
11538                         u16type=uint16_t
11539                         i16size=2
11540                         u16size=2
11541                         ;;
11542                 esac
11543         fi
11544         ;;
11545 esac
11546 case "$i16type" in
11547 '')     if $test $shortsize -ge 2; then
11548                 i16type=short
11549                 u16type="unsigned short"
11550                 i16size=$shortsize
11551                 u16size=$shortsize
11552         fi
11553         ;;
11554 esac
11555
11556 case "$i32type" in
11557 '')     case "$longsize" in
11558         4)      i32type=long
11559                 u32type="unsigned long"
11560                 i32size=$longsize
11561                 u32size=$longsize
11562                 ;;
11563         *)      case "$intsize" in
11564                 4)      i32type=int
11565                         u32type="unsigned int"
11566                         i32size=$intsize
11567                         u32size=$intsize
11568                         ;;
11569                 esac
11570                 ;;
11571         esac
11572         ;;
11573 esac
11574 case "$i32type" in
11575 '')     set try -DINT32
11576         if eval $compile; then
11577                 case "`$run ./try`" in
11578                 int32_t)
11579                         i32type=int32_t
11580                         u32type=uint32_t
11581                         i32size=4
11582                         u32size=4
11583                         ;;
11584                 esac
11585         fi
11586         ;;
11587 esac
11588 case "$i32type" in
11589 '')     if $test $intsize -ge 4; then
11590                 i32type=int
11591                 u32type="unsigned int"
11592                 i32size=$intsize
11593                 u32size=$intsize
11594         fi
11595         ;;
11596 esac
11597
11598 case "$i64type" in
11599 '')     case "$d_quad:$quadtype" in
11600         define:?*)
11601                 i64type="$quadtype"
11602                 u64type="$uquadtype"
11603                 i64size=8
11604                 u64size=8
11605                 ;;
11606         esac
11607         ;;
11608 esac
11609
11610 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11611 : volatile so that the compiler has to store it out to memory.
11612 if test X"$d_volatile" = X"$define"; then
11613         volatile=volatile
11614 fi
11615 $cat <<EOP >try.c
11616 #include <stdio.h>
11617 #include <sys/types.h>
11618 #include <signal.h>
11619 #ifdef SIGFPE
11620 $volatile int bletched = 0;
11621 $signal_t blech(s) int s; { bletched = 1; }
11622 #endif
11623 int main() {
11624     $uvtype u = 0;
11625     $nvtype d;
11626     int     n = 8 * $uvsize;
11627     int     i;
11628 #ifdef SIGFPE
11629     signal(SIGFPE, blech);
11630 #endif
11631
11632     for (i = 0; i < n; i++) {
11633       u = u << 1 | ($uvtype)1;
11634       d = ($nvtype)u;
11635       if (($uvtype)d != u)
11636         break;
11637       if (d <= 0)
11638         break;
11639       d = ($nvtype)(u - 1);
11640       if (($uvtype)d != (u - 1))
11641         break;
11642 #ifdef SIGFPE
11643       if (bletched) {
11644         break;
11645 #endif
11646       } 
11647     }
11648     printf("%d\n", ((i == n) ? -n : i));
11649     exit(0);
11650 }
11651 EOP
11652 set try
11653
11654 d_nv_preserves_uv="$undef"
11655 if eval $compile; then
11656         d_nv_preserves_uv_bits="`$run ./try`"
11657 fi
11658 case "$d_nv_preserves_uv_bits" in
11659 \-[1-9]*)       
11660         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11661         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11662         d_nv_preserves_uv="$define"
11663         ;;
11664 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11665         d_nv_preserves_uv="$undef" ;;
11666 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11667         d_nv_preserves_uv_bits="$undef" ;;
11668 esac
11669
11670 $rm -f try.* try
11671
11672
11673 : check for off64_t
11674 echo " "
11675 echo "Checking to see if you have off64_t..." >&4
11676 $cat >try.c <<EOCP
11677 #include <sys/types.h>
11678 #include <unistd.h>
11679 int main() { off64_t x = 7; }
11680 EOCP
11681 set try
11682 if eval $compile; then
11683         val="$define"
11684         echo "You have off64_t."
11685 else
11686         val="$undef"
11687         echo "You do not have off64_t."
11688         case "$lseeksize" in
11689         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11690         esac
11691 fi
11692 $rm -f try.* try
11693 set d_off64_t
11694 eval $setvar
11695
11696 : see if POSIX threads are available
11697 set pthread.h i_pthread
11698 eval $inhdr
11699
11700
11701
11702
11703 : how to create joinable pthreads
11704 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11705         echo " "
11706         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11707         $cat >try.c <<'EOCP'
11708 #include <pthread.h>
11709 int main() {
11710     int detachstate = JOINABLE;
11711 }
11712 EOCP
11713         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11714         if eval $compile; then
11715                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11716                 val="$undef" # Yes, undef.
11717                 set d_old_pthread_create_joinable
11718                 eval $setvar
11719                 val=""
11720                 set old_pthread_create_joinable
11721                 eval $setvar
11722         else
11723                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11724                 if eval $compile; then
11725                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11726                         val="$define"
11727                         set d_old_pthread_create_joinable
11728                         eval $setvar
11729                         val=PTHREAD_CREATE_UNDETACHED
11730                         set old_pthread_create_joinable
11731                         eval $setvar
11732                 else            
11733                         set try -DJOINABLE=__UNDETACHED
11734                         if eval $compile; then
11735                                 echo "You seem to use __UNDETACHED." >&4
11736                                 val="$define"
11737                                 set d_old_pthread_create_joinable
11738                                 eval $setvar
11739                                 val=__UNDETACHED
11740                                 set old_pthread_create_joinable
11741                                 eval $setvar
11742                         else
11743                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11744                                 val="$define"
11745                                 set d_old_pthread_create_joinable
11746                                 eval $setvar
11747                                 val=0
11748                                 set old_pthread_create_joinable
11749                                 eval $setvar
11750                         fi
11751                 fi
11752         fi
11753         $rm -f try try.*
11754 else
11755     d_old_pthread_create_joinable="$undef"
11756     old_pthread_create_joinable=""
11757 fi
11758
11759 : see if pause exists
11760 set pause d_pause
11761 eval $inlibc
11762
11763 : see if pipe exists
11764 set pipe d_pipe
11765 eval $inlibc
11766
11767 : see if poll exists
11768 set poll d_poll
11769 eval $inlibc
11770
11771 : see if readlink exists
11772 set readlink d_readlink
11773 eval $inlibc
11774
11775 echo " "
11776 procselfexe=''
11777 val="$undef"
11778 case "$d_readlink" in
11779 "$define")
11780         if $issymlink /proc/self/exe ; then
11781                 $ls -l /proc/self/exe > reflect
11782                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
11783                         echo "You have Linux-like /proc/self/exe."
11784                         procselfexe='"/proc/self/exe"'
11785                         val="$define"
11786                 fi
11787         fi
11788         if $issymlink /proc/curproc/file ; then
11789                 $ls -l /proc/curproc/file > reflect
11790                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
11791                         echo "You have BSD-like /proc/curproc/file."
11792                         procselfexe='"/proc/curproc/file"'
11793                         val="$define"
11794                 fi
11795         fi
11796         ;;
11797 esac
11798 $rm -f reflect
11799 set d_procselfexe
11800 eval $setvar
11801
11802 : see if pthread_atfork exists
11803 set pthread_atfork d_pthread_atfork
11804 eval $inlibc
11805
11806
11807 : see whether the various POSIXish _yields exist
11808 $cat >try.c <<EOP
11809 #include <pthread.h>
11810 #include <stdio.h>
11811 int main() {
11812 #ifdef SCHED_YIELD
11813         sched_yield();
11814 #else
11815 #ifdef PTHREAD_YIELD
11816         pthread_yield();
11817 #else
11818 #ifdef PTHREAD_YIELD_NULL
11819         pthread_yield(NULL);
11820 #endif
11821 #endif
11822 #endif
11823 }
11824 EOP
11825 : see if sched_yield exists
11826 set try -DSCHED_YIELD
11827 if eval $compile; then
11828     val="$define"
11829     sched_yield='sched_yield()'
11830 else
11831     val="$undef"
11832 fi
11833 case "$usethreads" in
11834 $define)
11835         case "$val" in
11836         $define) echo 'sched_yield() found.' >&4        ;;
11837         *)       echo 'sched_yield() NOT found.' >&4    ;;
11838         esac
11839 esac
11840 set d_sched_yield
11841 eval $setvar
11842
11843 : see if pthread_yield exists
11844 set try -DPTHREAD_YIELD
11845 if eval $compile; then
11846     val="$define"
11847     case "$sched_yield" in
11848     '') sched_yield='pthread_yield()' ;;
11849     esac
11850 else
11851     set try -DPTHREAD_YIELD_NULL
11852     if eval $compile; then
11853         val="$define"
11854         case "$sched_yield" in
11855         '') sched_yield='pthread_yield(NULL)' ;;
11856         esac
11857     else
11858         val="$undef"
11859     fi
11860 fi
11861 case "$usethreads" in
11862 $define)
11863         case "$val" in
11864         $define) echo 'pthread_yield() found.' >&4      ;;
11865         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11866         esac
11867         ;;
11868 esac
11869 set d_pthread_yield
11870 eval $setvar
11871
11872 case "$sched_yield" in
11873 '') sched_yield=undef ;;
11874 esac
11875
11876 $rm -f try try.*
11877
11878 : see if this is a pwd.h system
11879 set pwd.h i_pwd
11880 eval $inhdr
11881
11882 case "$i_pwd" in
11883 $define)
11884         xxx=`./findhdr pwd.h`
11885         $cppstdin $cppflags $cppminus < $xxx >$$.h
11886
11887         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11888                 val="$define"
11889         else
11890                 val="$undef"
11891         fi
11892         set d_pwquota
11893         eval $setvar
11894
11895         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11896                 val="$define"
11897         else
11898                 val="$undef"
11899         fi
11900         set d_pwage
11901         eval $setvar
11902
11903         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11904                 val="$define"
11905         else
11906                 val="$undef"
11907         fi
11908         set d_pwchange
11909         eval $setvar
11910
11911         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11912                 val="$define"
11913         else
11914                 val="$undef"
11915         fi
11916         set d_pwclass
11917         eval $setvar
11918
11919         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11920                 val="$define"
11921         else
11922                 val="$undef"
11923         fi
11924         set d_pwexpire
11925         eval $setvar
11926
11927         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11928                 val="$define"
11929         else
11930                 val="$undef"
11931         fi
11932         set d_pwcomment
11933         eval $setvar
11934
11935         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11936                 val="$define"
11937         else
11938                 val="$undef"
11939         fi
11940         set d_pwgecos
11941         eval $setvar
11942
11943         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11944                 val="$define"
11945         else
11946                 val="$undef"
11947         fi
11948         set d_pwpasswd
11949         eval $setvar
11950
11951         $rm -f $$.h
11952         ;;
11953 *)
11954         val="$undef"; 
11955         set d_pwquota; eval $setvar
11956         set d_pwage; eval $setvar
11957         set d_pwchange; eval $setvar
11958         set d_pwclass; eval $setvar
11959         set d_pwexpire; eval $setvar
11960         set d_pwcomment; eval $setvar
11961         set d_pwgecos; eval $setvar
11962         set d_pwpasswd; eval $setvar
11963         ;;
11964 esac
11965
11966 : see if readdir and friends exist
11967 set readdir d_readdir
11968 eval $inlibc
11969 set seekdir d_seekdir
11970 eval $inlibc
11971 set telldir d_telldir
11972 eval $inlibc
11973 set rewinddir d_rewinddir
11974 eval $inlibc
11975
11976 : see if readv exists
11977 set readv d_readv
11978 eval $inlibc
11979
11980 : see if recvmsg exists
11981 set recvmsg d_recvmsg
11982 eval $inlibc
11983
11984 : see if rename exists
11985 set rename d_rename
11986 eval $inlibc
11987
11988 : see if rmdir exists
11989 set rmdir d_rmdir
11990 eval $inlibc
11991
11992 : see if memory.h is available.
11993 val=''
11994 set memory.h val
11995 eval $inhdr
11996
11997 : See if it conflicts with string.h
11998 case "$val" in
11999 $define)
12000         case "$strings" in
12001         '') ;;
12002         *)
12003                 $cppstdin $cppflags $cppminus < $strings > mem.h
12004                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
12005                         echo " "
12006                         echo "We won't be including <memory.h>."
12007                         val="$undef"
12008                 fi
12009                 $rm -f mem.h
12010                 ;;
12011         esac
12012 esac
12013 set i_memory
12014 eval $setvar
12015
12016 : can bcopy handle overlapping blocks?
12017 echo " "
12018 val="$undef"
12019 case "$d_memmove" in
12020 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
12021 *)      case "$d_bcopy" in
12022         "$define")
12023                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
12024                 $cat >try.c <<EOCP
12025 #$i_memory I_MEMORY
12026 #$i_stdlib I_STDLIB
12027 #$i_string I_STRING
12028 #$i_unistd I_UNISTD
12029 EOCP
12030         $cat >>try.c <<'EOCP'
12031 #include <stdio.h>
12032 #ifdef I_MEMORY
12033 #  include <memory.h>
12034 #endif
12035 #ifdef I_STDLIB
12036 #  include <stdlib.h>
12037 #endif
12038 #ifdef I_STRING
12039 #  include <string.h>
12040 #else
12041 #  include <strings.h>
12042 #endif
12043 #ifdef I_UNISTD
12044 #  include <unistd.h>  /* Needed for NetBSD */
12045 #endif
12046 int main()
12047 {
12048 char buf[128], abc[128];
12049 char *b;
12050 int len;
12051 int off;
12052 int align;
12053
12054 /* Copy "abcde..." string to char abc[] so that gcc doesn't
12055    try to store the string in read-only memory. */
12056 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
12057
12058 for (align = 7; align >= 0; align--) {
12059         for (len = 36; len; len--) {
12060                 b = buf+align;
12061                 bcopy(abc, b, len);
12062                 for (off = 1; off <= len; off++) {
12063                         bcopy(b, b+off, len);
12064                         bcopy(b+off, b, len);
12065                         if (bcmp(b, abc, len))
12066                                 exit(1);
12067                 }
12068         }
12069 }
12070 exit(0);
12071 }
12072 EOCP
12073                 set try
12074                 if eval $compile_ok; then
12075                         if ./try 2>/dev/null; then
12076                                 echo "Yes, it can."
12077                                 val="$define"
12078                         else
12079                                 echo "It can't, sorry."
12080                         fi
12081                 else
12082                         echo "(I can't compile the test program, so we'll assume not...)"
12083                 fi
12084                 ;;
12085         esac
12086         $rm -f try.* try core
12087         ;;
12088 esac
12089 set d_safebcpy
12090 eval $setvar
12091
12092 : can memcpy handle overlapping blocks?
12093 echo " "
12094 val="$undef"
12095 case "$d_memmove" in
12096 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
12097 *)      case "$d_memcpy" in
12098         "$define")
12099                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
12100                 $cat >try.c <<EOCP
12101 #$i_memory I_MEMORY
12102 #$i_stdlib I_STDLIB
12103 #$i_string I_STRING
12104 #$i_unistd I_UNISTD
12105 EOCP
12106         $cat >>try.c <<'EOCP'
12107 #include <stdio.h>
12108 #ifdef I_MEMORY
12109 #  include <memory.h>
12110 #endif
12111 #ifdef I_STDLIB
12112 #  include <stdlib.h>
12113 #endif
12114 #ifdef I_STRING
12115 #  include <string.h>
12116 #else
12117 #  include <strings.h>
12118 #endif
12119 #ifdef I_UNISTD
12120 #  include <unistd.h>  /* Needed for NetBSD */
12121 #endif
12122 int main()
12123 {
12124 char buf[128], abc[128];
12125 char *b;
12126 int len;
12127 int off;
12128 int align;
12129
12130 /* Copy "abcde..." string to char abc[] so that gcc doesn't
12131    try to store the string in read-only memory. */
12132 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
12133
12134 for (align = 7; align >= 0; align--) {
12135         for (len = 36; len; len--) {
12136                 b = buf+align;
12137                 memcpy(b, abc, len);
12138                 for (off = 1; off <= len; off++) {
12139                         memcpy(b+off, b, len);
12140                         memcpy(b, b+off, len);
12141                         if (memcmp(b, abc, len))
12142                                 exit(1);
12143                 }
12144         }
12145 }
12146 exit(0);
12147 }
12148 EOCP
12149                 set try
12150                 if eval $compile_ok; then
12151                         if ./try 2>/dev/null; then
12152                                 echo "Yes, it can."
12153                                 val="$define"
12154                         else
12155                                 echo "It can't, sorry."
12156                         fi
12157                 else
12158                         echo "(I can't compile the test program, so we'll assume not...)"
12159                 fi
12160                 ;;
12161         esac
12162         $rm -f try.* try core
12163         ;;
12164 esac
12165 set d_safemcpy
12166 eval $setvar
12167
12168 : can memcmp be trusted to compare relative magnitude?
12169 val="$undef"
12170 case "$d_memcmp" in
12171 "$define")
12172         echo " "
12173         echo "Checking if your memcmp() can compare relative magnitude..." >&4
12174         $cat >try.c <<EOCP
12175 #$i_memory I_MEMORY
12176 #$i_stdlib I_STDLIB
12177 #$i_string I_STRING
12178 #$i_unistd I_UNISTD
12179 EOCP
12180         $cat >>try.c <<'EOCP'
12181 #include <stdio.h>
12182 #ifdef I_MEMORY
12183 #  include <memory.h>
12184 #endif
12185 #ifdef I_STDLIB
12186 #  include <stdlib.h>
12187 #endif
12188 #ifdef I_STRING
12189 #  include <string.h>
12190 #else
12191 #  include <strings.h>
12192 #endif
12193 #ifdef I_UNISTD
12194 #  include <unistd.h>  /* Needed for NetBSD */
12195 #endif
12196 int main()
12197 {
12198 char a = -1;
12199 char b = 0;
12200 if ((a < b) && memcmp(&a, &b, 1) < 0)
12201         exit(1);
12202 exit(0);
12203 }
12204 EOCP
12205         set try
12206         if eval $compile_ok; then
12207                 if $run ./try 2>/dev/null; then
12208                         echo "Yes, it can."
12209                         val="$define"
12210                 else
12211                         echo "No, it can't (it uses signed chars)."
12212                 fi
12213         else
12214                 echo "(I can't compile the test program, so we'll assume not...)"
12215         fi
12216         ;;
12217 esac
12218 $rm -f try.* try core
12219 set d_sanemcmp
12220 eval $setvar
12221
12222 : see if prototype for sbrk is available
12223 echo " "
12224 set d_sbrkproto sbrk $i_unistd unistd.h
12225 eval $hasproto
12226
12227 : see if select exists
12228 set select d_select
12229 eval $inlibc
12230
12231 : see if semctl exists
12232 set semctl d_semctl
12233 eval $inlibc
12234
12235 : see if semget exists
12236 set semget d_semget
12237 eval $inlibc
12238
12239 : see if semop exists
12240 set semop d_semop
12241 eval $inlibc
12242
12243 : see how much of the 'sem*(2)' library is present.
12244 h_sem=true
12245 echo " "
12246 case "$d_semctl$d_semget$d_semop" in
12247 *"$undef"*) h_sem=false;;
12248 esac
12249 case "$osname" in
12250 freebsd)
12251     case "`ipcs 2>&1`" in
12252     "SVID messages"*"not configured"*)
12253         echo "Your $osname does not have the sem*(2) configured." >&4
12254         h_sem=false
12255         val="$undef"
12256         set semctl d_semctl
12257         eval $setvar
12258         set semget d_semget
12259         eval $setvar
12260         set semop d_semop
12261         eval $setvar
12262         ;;
12263     esac
12264     ;;
12265 esac
12266 : we could also check for sys/ipc.h ...
12267 if $h_sem && $test `./findhdr sys/sem.h`; then
12268         echo "You have the full sem*(2) library." >&4
12269         val="$define"
12270 else
12271         echo "You don't have the full sem*(2) library." >&4
12272         val="$undef"
12273 fi
12274 set d_sem
12275 eval $setvar
12276
12277 : see whether sys/sem.h defines union semun
12278 echo " "
12279 $cat > try.c <<'END'
12280 #include <sys/types.h>
12281 #include <sys/ipc.h>
12282 #include <sys/sem.h>
12283 int main () { union semun semun; semun.buf = 0; }
12284 END
12285 set try
12286 if eval $compile; then
12287     echo "You have union semun in <sys/sem.h>." >&4
12288     val="$define"
12289 else
12290     echo "You do not have union semun in <sys/sem.h>." >&4
12291     val="$undef"
12292 fi
12293 $rm -f try try.c try.h
12294 set d_union_semun
12295 eval $setvar
12296
12297 : see how to do semctl IPC_STAT
12298 case "$d_sem" in
12299 $define)
12300     : see whether semctl IPC_STAT can use union semun
12301     echo " "
12302     $cat > try.h <<END
12303 #ifndef S_IRUSR
12304 #   ifdef S_IREAD
12305 #       define S_IRUSR S_IREAD
12306 #       define S_IWUSR S_IWRITE
12307 #       define S_IXUSR S_IEXEC
12308 #   else
12309 #       define S_IRUSR 0400
12310 #       define S_IWUSR 0200
12311 #       define S_IXUSR 0100
12312 #   endif
12313 #   define S_IRGRP (S_IRUSR>>3)
12314 #   define S_IWGRP (S_IWUSR>>3)
12315 #   define S_IXGRP (S_IXUSR>>3)
12316 #   define S_IROTH (S_IRUSR>>6)
12317 #   define S_IWOTH (S_IWUSR>>6)
12318 #   define S_IXOTH (S_IXUSR>>6)
12319 #endif
12320 #ifndef S_IRWXU
12321 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
12322 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
12323 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
12324 #endif
12325 END
12326
12327     $cat > try.c <<END
12328 #include <sys/types.h>
12329 #include <sys/ipc.h>
12330 #include <sys/sem.h>
12331 #include <sys/stat.h>
12332 #include <stdio.h>
12333 #include <errno.h>
12334 #include "try.h"
12335 #ifndef errno
12336 extern int errno;
12337 #endif
12338 #$d_union_semun HAS_UNION_SEMUN
12339 int main() {
12340     union semun
12341 #ifndef HAS_UNION_SEMUN
12342     {
12343         int val;
12344         struct semid_ds *buf;
12345         unsigned short *array;
12346     }
12347 #endif
12348     arg;
12349     int sem, st;
12350
12351 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12352     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12353     if (sem > -1) {
12354         struct semid_ds argbuf;
12355         arg.buf = &argbuf;
12356 #       ifdef IPC_STAT
12357         st = semctl(sem, 0, IPC_STAT, arg);
12358         if (st == 0)
12359             printf("semun\n");
12360         else
12361 #       endif /* IPC_STAT */
12362             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12363 #       ifdef IPC_RMID
12364         if (semctl(sem, 0, IPC_RMID, arg) != 0)
12365 #       endif /* IPC_RMID */
12366             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12367     } else
12368 #endif /* IPC_PRIVATE && ... */
12369         printf("semget failed: errno = %d\n", errno);
12370   return 0;
12371 }
12372 END
12373     val="$undef"
12374     set try
12375     if eval $compile; then
12376         xxx=`$run ./try`
12377         case "$xxx" in
12378         semun) val="$define" ;;
12379         esac
12380     fi
12381     $rm -f try try.c
12382     set d_semctl_semun
12383     eval $setvar
12384     case "$d_semctl_semun" in
12385     $define)
12386         echo "You can use union semun for semctl IPC_STAT." >&4
12387         also='also'
12388         ;;
12389     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
12390         also=''
12391         ;;
12392     esac
12393
12394     : see whether semctl IPC_STAT can use struct semid_ds pointer
12395     $cat > try.c <<'END'
12396 #include <sys/types.h>
12397 #include <sys/ipc.h>
12398 #include <sys/sem.h>
12399 #include <sys/stat.h>
12400 #include "try.h"
12401 #include <stdio.h>
12402 #include <errno.h>
12403 #ifndef errno
12404 extern int errno;
12405 #endif
12406 int main() {
12407     struct semid_ds arg;
12408     int sem, st;
12409
12410 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
12411     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12412     if (sem > -1) {
12413 #       ifdef IPC_STAT
12414         st = semctl(sem, 0, IPC_STAT, &arg);
12415         if (st == 0)
12416             printf("semid_ds\n");
12417         else
12418 #       endif /* IPC_STAT */
12419             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12420 #       ifdef IPC_RMID
12421         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12422 #       endif /* IPC_RMID */
12423             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12424     } else
12425 #endif /* IPC_PRIVATE && ... */
12426         printf("semget failed: errno = %d\n", errno);
12427
12428     return 0;
12429 }
12430 END
12431     val="$undef"
12432     set try
12433     if eval $compile; then
12434         xxx=`$run ./try`
12435         case "$xxx" in
12436         semid_ds) val="$define" ;;
12437         esac
12438     fi
12439     $rm -f try try.c
12440     set d_semctl_semid_ds
12441     eval $setvar
12442     case "$d_semctl_semid_ds" in
12443     $define)
12444         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12445         ;;
12446     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12447         ;;
12448     esac
12449     $rm -f try.h
12450     ;;
12451 *)  val="$undef"
12452
12453     # We do not have the full sem*(2) library, so assume we can not
12454     # use either.
12455
12456     set d_semctl_semun
12457     eval $setvar
12458
12459     set d_semctl_semid_ds
12460     eval $setvar
12461     ;;
12462 esac
12463
12464 : see if sendmsg exists
12465 set sendmsg d_sendmsg
12466 eval $inlibc
12467
12468 : see if setegid exists
12469 set setegid d_setegid
12470 eval $inlibc
12471
12472 : see if seteuid exists
12473 set seteuid d_seteuid
12474 eval $inlibc
12475
12476 : see if setgrent exists
12477 set setgrent d_setgrent
12478 eval $inlibc
12479
12480 : see if sethostent exists
12481 set sethostent d_sethent
12482 eval $inlibc
12483
12484 : see if setitimer exists
12485 set setitimer d_setitimer
12486 eval $inlibc
12487
12488 : see if setlinebuf exists
12489 set setlinebuf d_setlinebuf
12490 eval $inlibc
12491
12492 : see if setlocale exists
12493 set setlocale d_setlocale
12494 eval $inlibc
12495
12496 : see if setnetent exists
12497 set setnetent d_setnent
12498 eval $inlibc
12499
12500 : see if setprotoent exists
12501 set setprotoent d_setpent
12502 eval $inlibc
12503
12504 : see if setpgid exists
12505 set setpgid d_setpgid
12506 eval $inlibc
12507
12508 : see if setpgrp2 exists
12509 set setpgrp2 d_setpgrp2
12510 eval $inlibc
12511
12512 : see if setpriority exists
12513 set setpriority d_setprior
12514 eval $inlibc
12515
12516 : see if setproctitle exists
12517 set setproctitle d_setproctitle
12518 eval $inlibc
12519
12520 : see if setpwent exists
12521 set setpwent d_setpwent
12522 eval $inlibc
12523
12524 : see if setregid exists
12525 set setregid d_setregid
12526 eval $inlibc
12527 set setresgid d_setresgid
12528 eval $inlibc
12529
12530 : see if setreuid exists
12531 set setreuid d_setreuid
12532 eval $inlibc
12533 set setresuid d_setresuid
12534 eval $inlibc
12535
12536 : see if setrgid exists
12537 set setrgid d_setrgid
12538 eval $inlibc
12539
12540 : see if setruid exists
12541 set setruid d_setruid
12542 eval $inlibc
12543
12544 : see if setservent exists
12545 set setservent d_setsent
12546 eval $inlibc
12547
12548 : see if setsid exists
12549 set setsid d_setsid
12550 eval $inlibc
12551
12552 : see if setvbuf exists
12553 set setvbuf d_setvbuf
12554 eval $inlibc
12555
12556 : see if sfio.h is available
12557 set sfio.h i_sfio
12558 eval $inhdr
12559
12560
12561 : see if sfio library is available
12562 case "$i_sfio" in
12563 $define)
12564         val=''
12565         set sfreserve val
12566         eval $inlibc
12567         ;;
12568 *)
12569         val="$undef"
12570         ;;
12571 esac
12572 : Ok, but do we want to use it.
12573 case "$val" in
12574 $define)
12575         case "$usesfio" in
12576         true|$define|[yY]*) dflt='y';;
12577         *) dflt='n';;
12578         esac
12579         echo "$package can use the sfio library, but it is experimental."
12580         case "$useperlio" in
12581         "$undef")
12582             echo "For sfio also the PerlIO abstraction layer is needed."
12583             echo "Earlier you said you wouldn't want that."
12584             ;;
12585         esac
12586         rp="You seem to have sfio available, do you want to try using it?"
12587         . ./myread
12588         case "$ans" in
12589         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12590                 useperlio="$define"
12591                 val="$define"
12592                 ;;
12593         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12594                 val="$undef"
12595                 ;;
12596         esac
12597         ;;
12598 *)      case "$usesfio" in
12599         true|$define|[yY]*)
12600                 echo "Sorry, cannot find sfio on this machine." >&4
12601                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12602                 val="$undef"
12603                 ;;
12604         esac
12605         ;;
12606 esac
12607 set d_sfio
12608 eval $setvar
12609 case "$d_sfio" in
12610 $define) usesfio='true';;
12611 *) usesfio='false';;
12612 esac
12613 case "$d_sfio" in
12614 $define) ;;
12615 *)      : Remove sfio from list of libraries to use
12616         case "$libs" in
12617         *-lsfio*)
12618                 echo "Removing unneeded -lsfio from library list" >&4
12619                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12620                 shift
12621                 libs="$*"
12622                 echo "libs = $libs" >&4
12623                 ;;
12624         esac
12625 ;;
12626 esac
12627
12628
12629 : see if shmctl exists
12630 set shmctl d_shmctl
12631 eval $inlibc
12632
12633 : see if shmget exists
12634 set shmget d_shmget
12635 eval $inlibc
12636
12637 : see if shmat exists
12638 set shmat d_shmat
12639 eval $inlibc
12640 : see what shmat returns
12641 case "$d_shmat" in
12642 "$define")
12643         $cat >shmat.c <<'END'
12644 #include <sys/shm.h>
12645 void *shmat();
12646 END
12647         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12648                 shmattype='void *'
12649         else
12650                 shmattype='char *'
12651         fi
12652         echo "and it returns ($shmattype)." >&4
12653         : see if a prototype for shmat is available
12654         xxx=`./findhdr sys/shm.h`
12655         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12656         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12657                 val="$define"
12658         else
12659                 val="$undef"
12660         fi
12661         $rm -f shmat.[co]
12662         ;;
12663 *)
12664         val="$undef"
12665         ;;
12666 esac
12667 set d_shmatprototype
12668 eval $setvar
12669
12670 : see if shmdt exists
12671 set shmdt d_shmdt
12672 eval $inlibc
12673
12674 : see how much of the 'shm*(2)' library is present.
12675 h_shm=true
12676 echo " "
12677 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12678 *"$undef"*) h_shm=false;;
12679 esac
12680 case "$osname" in
12681 freebsd)
12682     case "`ipcs 2>&1`" in
12683     "SVID shared memory"*"not configured"*)
12684         echo "Your $osname does not have the shm*(2) configured." >&4
12685         h_shm=false
12686         val="$undef"
12687         set shmctl d_shmctl
12688         evat $setvar
12689         set shmget d_shmget
12690         evat $setvar
12691         set shmat d_shmat
12692         evat $setvar
12693         set shmdt d_shmdt
12694         evat $setvar
12695         ;;
12696     esac
12697     ;;
12698 esac
12699 : we could also check for sys/ipc.h ...
12700 if $h_shm && $test `./findhdr sys/shm.h`; then
12701         echo "You have the full shm*(2) library." >&4
12702         val="$define"
12703 else
12704         echo "You don't have the full shm*(2) library." >&4
12705         val="$undef"
12706 fi
12707 set d_shm
12708 eval $setvar
12709
12710 echo " "
12711 : see if we have sigaction
12712 if set sigaction val -f d_sigaction; eval $csym; $val; then
12713         echo 'sigaction() found.' >&4
12714         $cat > try.c <<'EOP'
12715 #include <stdio.h>
12716 #include <sys/types.h>
12717 #include <signal.h>
12718 int main()
12719 {
12720     struct sigaction act, oact;
12721     act.sa_flags = 0;
12722     oact.sa_handler = 0;
12723     /* so that act and oact are used */
12724     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12725 }
12726 EOP
12727         set try
12728         if eval $compile_ok; then
12729                 val="$define"
12730         else
12731                 echo "But you don't seem to have a useable struct sigaction." >&4
12732                 val="$undef"
12733         fi
12734 else
12735         echo 'sigaction NOT found.' >&4
12736         val="$undef"
12737 fi
12738 set d_sigaction; eval $setvar
12739 $rm -f try try$_o try.c
12740
12741 : see if sigprocmask exists
12742 set sigprocmask d_sigprocmask
12743 eval $inlibc
12744
12745 : see if sigsetjmp exists
12746 echo " "
12747 case "$d_sigsetjmp" in
12748 '')
12749         $cat >try.c <<'EOP'
12750 #include <setjmp.h>
12751 sigjmp_buf env;
12752 int set = 1;
12753 int main()
12754 {
12755         if (sigsetjmp(env,1))
12756                 exit(set);
12757         set = 0;
12758         siglongjmp(env, 1);
12759         exit(1);
12760 }
12761 EOP
12762         set try
12763         if eval $compile; then
12764                 if $run ./try >/dev/null 2>&1; then
12765                         echo "POSIX sigsetjmp found." >&4
12766                         val="$define"
12767                 else
12768                         $cat >&4 <<EOM
12769 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12770 I'll ignore them.
12771 EOM
12772                         val="$undef"
12773                 fi
12774         else
12775                 echo "sigsetjmp not found." >&4
12776                 val="$undef"
12777         fi
12778         ;;
12779 *) val="$d_sigsetjmp"
12780         case "$d_sigsetjmp" in
12781         $define) echo "POSIX sigsetjmp found." >&4;;
12782         $undef) echo "sigsetjmp not found." >&4;;
12783         esac
12784         ;;
12785 esac
12786 set d_sigsetjmp
12787 eval $setvar
12788 $rm -f try.c try
12789
12790 : see if sockatmark exists
12791 set sockatmark d_sockatmark
12792 eval $inlibc
12793
12794 : see if prototype for sockatmark is available
12795 echo " "
12796 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12797 eval $hasproto
12798
12799 : see if socks5_init exists
12800 set socks5_init d_socks5_init
12801 eval $inlibc
12802
12803 : see if prototype for setresgid is available
12804 echo " "
12805 set d_sresgproto setresgid $i_unistd unistd.h
12806 eval $hasproto
12807
12808 : see if prototype for setresuid is available
12809 echo " "
12810 set d_sresuproto setresuid $i_unistd unistd.h
12811 eval $hasproto
12812
12813 : see if sys/stat.h is available
12814 set sys/stat.h i_sysstat
12815 eval $inhdr
12816
12817
12818 : see if stat knows about block sizes
12819 echo " "
12820 echo "Checking to see if your struct stat has st_blocks field..." >&4
12821 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12822 eval $hasfield
12823
12824
12825 : see if this is a sys/vfs.h system
12826 set sys/vfs.h i_sysvfs
12827 eval $inhdr
12828
12829
12830 : see if this is a sys/statfs.h system
12831 set sys/statfs.h i_sysstatfs
12832 eval $inhdr
12833
12834
12835 echo " "
12836 echo "Checking to see if your system supports struct statfs..." >&4
12837 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
12838 eval $hasstruct
12839 case "$d_statfs_s" in
12840 "$define")      echo "Yes, it does."   ;;
12841 *)              echo "No, it doesn't." ;;
12842 esac
12843
12844
12845
12846 : see if struct statfs knows about f_flags
12847 case "$d_statfs_s" in
12848 define) 
12849         echo " "
12850         echo "Checking to see if your struct statfs has f_flags field..." >&4
12851         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
12852         eval $hasfield
12853         ;;
12854 *)      val="$undef"
12855         set d_statfs_f_flags
12856         eval $setvar
12857         ;;
12858 esac
12859 case "$d_statfs_f_flags" in
12860 "$define")      echo "Yes, it does."   ;;
12861 *)              echo "No, it doesn't." ;;
12862 esac
12863
12864 : see if _ptr and _cnt from stdio act std
12865 echo " "
12866
12867 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12868         echo "(Looks like you have stdio.h from BSD.)"
12869         case "$stdio_ptr" in
12870         '') stdio_ptr='((fp)->_p)'
12871                 ptr_lval=$define
12872                 ;;
12873         *)      ptr_lval=$d_stdio_ptr_lval;;
12874         esac
12875         case "$stdio_cnt" in
12876         '') stdio_cnt='((fp)->_r)'
12877                 cnt_lval=$define
12878                 ;;
12879         *)      cnt_lval=$d_stdio_cnt_lval;;
12880         esac
12881         case "$stdio_base" in
12882         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12883         esac
12884         case "$stdio_bufsiz" in
12885         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12886         esac
12887 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12888         echo "(Looks like you have stdio.h from Linux.)"
12889         case "$stdio_ptr" in
12890         '') stdio_ptr='((fp)->_IO_read_ptr)'
12891                 ptr_lval=$define
12892                 ;;
12893         *)      ptr_lval=$d_stdio_ptr_lval;;
12894         esac
12895         case "$stdio_cnt" in
12896         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12897                 cnt_lval=$undef
12898                 ;;
12899         *)      cnt_lval=$d_stdio_cnt_lval;;
12900         esac
12901         case "$stdio_base" in
12902         '') stdio_base='((fp)->_IO_read_base)';;
12903         esac
12904         case "$stdio_bufsiz" in
12905         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12906         esac
12907 else
12908         case "$stdio_ptr" in
12909         '') stdio_ptr='((fp)->_ptr)'
12910                 ptr_lval=$define
12911                 ;;
12912         *)      ptr_lval=$d_stdio_ptr_lval;;
12913         esac
12914         case "$stdio_cnt" in
12915         '') stdio_cnt='((fp)->_cnt)'
12916                 cnt_lval=$define
12917                 ;;
12918         *)      cnt_lval=$d_stdio_cnt_lval;;
12919         esac
12920         case "$stdio_base" in
12921         '') stdio_base='((fp)->_base)';;
12922         esac
12923         case "$stdio_bufsiz" in
12924         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12925         esac
12926 fi
12927
12928 : test whether _ptr and _cnt really work
12929 echo "Checking how std your stdio is..." >&4
12930 $cat >try.c <<EOP
12931 #include <stdio.h>
12932 #define FILE_ptr(fp)    $stdio_ptr
12933 #define FILE_cnt(fp)    $stdio_cnt
12934 int main() {
12935         FILE *fp = fopen("try.c", "r");
12936         char c = getc(fp);
12937         if (
12938                 18 <= FILE_cnt(fp) &&
12939                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12940         )
12941                 exit(0);
12942         exit(1);
12943 }
12944 EOP
12945 val="$undef"
12946 set try
12947 if eval $compile && $to try.c; then
12948         if $run ./try; then
12949                 echo "Your stdio acts pretty std."
12950                 val="$define"
12951         else
12952                 echo "Your stdio isn't very std."
12953         fi
12954 else
12955         echo "Your stdio doesn't appear very std."
12956 fi
12957 $rm -f try.c try
12958 set d_stdstdio
12959 eval $setvar
12960
12961 : Can _ptr be used as an lvalue?
12962 case "$d_stdstdio$ptr_lval" in
12963 $define$define) val=$define ;;
12964 *) val=$undef ;;
12965 esac
12966 set d_stdio_ptr_lval
12967 eval $setvar
12968
12969 : Can _cnt be used as an lvalue?
12970 case "$d_stdstdio$cnt_lval" in
12971 $define$define) val=$define ;;
12972 *) val=$undef ;;
12973 esac
12974 set d_stdio_cnt_lval
12975 eval $setvar
12976
12977
12978 : test whether setting _ptr sets _cnt as a side effect
12979 d_stdio_ptr_lval_sets_cnt="$undef"
12980 d_stdio_ptr_lval_nochange_cnt="$undef"
12981 case "$d_stdio_ptr_lval$d_stdstdio" in
12982 $define$define)
12983         echo "Checking to see what happens if we set the stdio ptr..." >&4
12984 $cat >try.c <<EOP
12985 #include <stdio.h>
12986 /* Can we scream? */
12987 /* Eat dust sed :-) */
12988 /* In the buffer space, no one can hear you scream. */
12989 #define FILE_ptr(fp)    $stdio_ptr
12990 #define FILE_cnt(fp)    $stdio_cnt
12991 #include <sys/types.h>
12992 int main() {
12993         FILE *fp = fopen("try.c", "r");
12994         int c;
12995         char *ptr;
12996         size_t cnt;
12997         if (!fp) {
12998             puts("Fail even to read");
12999             exit(1);
13000         }
13001         c = getc(fp); /* Read away the first # */
13002         if (c == EOF) {
13003             puts("Fail even to read");
13004             exit(1);
13005         }
13006         if (!(
13007                 18 <= FILE_cnt(fp) &&
13008                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
13009         )) {
13010                 puts("Fail even to read");
13011                 exit (1);
13012         }
13013         ptr = (char*) FILE_ptr(fp);
13014         cnt = (size_t)FILE_cnt(fp);
13015
13016         FILE_ptr(fp) += 42;
13017
13018         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
13019                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
13020                 exit (1);
13021         }
13022         if (FILE_cnt(fp) <= 20) {
13023                 printf ("Fail (<20 chars to test)");
13024                 exit (1);
13025         }
13026         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
13027                 puts("Fail compare");
13028                 exit (1);
13029         }
13030         if (cnt == FILE_cnt(fp)) {
13031                 puts("Pass_unchanged");
13032                 exit (0);
13033         }       
13034         if (FILE_cnt(fp) == (cnt - 42)) {
13035                 puts("Pass_changed");
13036                 exit (0);
13037         }
13038         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
13039         return 1;
13040
13041 }
13042 EOP
13043         set try
13044         if eval $compile && $to try.c; then
13045                 case `$run ./try` in
13046                 Pass_changed)
13047                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
13048                         d_stdio_ptr_lval_sets_cnt="$define" ;;
13049                 Pass_unchanged)
13050                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
13051                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
13052                 Fail*)
13053                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
13054                 *)
13055                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
13056         esac
13057         else
13058                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
13059         fi
13060         $rm -f try.c try
13061         ;;
13062 esac
13063
13064 : see if _base is also standard
13065 val="$undef"
13066 case "$d_stdstdio" in
13067 $define)
13068         $cat >try.c <<EOP
13069 #include <stdio.h>
13070 #define FILE_base(fp)   $stdio_base
13071 #define FILE_bufsiz(fp) $stdio_bufsiz
13072 int main() {
13073         FILE *fp = fopen("try.c", "r");
13074         char c = getc(fp);
13075         if (
13076                 19 <= FILE_bufsiz(fp) &&
13077                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
13078         )
13079                 exit(0);
13080         exit(1);
13081 }
13082 EOP
13083         set try
13084         if eval $compile && $to try.c; then
13085                 if $run ./try; then
13086                         echo "And its _base field acts std."
13087                         val="$define"
13088                 else
13089                         echo "But its _base field isn't std."
13090                 fi
13091         else
13092                 echo "However, it seems to be lacking the _base field."
13093         fi
13094         $rm -f try.c try
13095         ;;
13096 esac
13097 set d_stdiobase
13098 eval $setvar
13099
13100 $cat >&4 <<EOM
13101 Checking how to access stdio streams by file descriptor number...
13102 EOM
13103 case "$stdio_stream_array" in
13104 '')     $cat >try.c <<EOCP
13105 #include <stdio.h>
13106 int main() {
13107   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
13108     printf("yes\n");
13109 }
13110 EOCP
13111         for s in _iob __iob __sF
13112         do
13113                 set try -DSTDIO_STREAM_ARRAY=$s
13114                 if eval $compile; then
13115                         case "`$run ./try`" in
13116                         yes)    stdio_stream_array=$s; break ;;
13117                         esac
13118                 fi
13119         done
13120         $rm -f try.* try$exe_ext
13121 esac
13122 case "$stdio_stream_array" in
13123 '')     $cat >&4 <<EOM
13124 I can't figure out how to access stdio streams by file descriptor number.
13125 EOM
13126         d_stdio_stream_array="$undef"
13127         ;;
13128 *)      $cat >&4 <<EOM
13129 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
13130 EOM
13131         d_stdio_stream_array="$define"
13132         ;;
13133 esac
13134
13135 : see if strcoll exists
13136 set strcoll d_strcoll
13137 eval $inlibc
13138
13139 : check for structure copying
13140 echo " "
13141 echo "Checking to see if your C compiler can copy structs..." >&4
13142 $cat >try.c <<'EOCP'
13143 int main()
13144 {
13145         struct blurfl {
13146                 int dyick;
13147         } foo, bar;
13148
13149         foo = bar;
13150 }
13151 EOCP
13152 if $cc -c try.c >/dev/null 2>&1 ; then
13153         val="$define"
13154         echo "Yup, it can."
13155 else
13156         val="$undef"
13157         echo "Nope, it can't."
13158 fi
13159 set d_strctcpy
13160 eval $setvar
13161 $rm -f try.*
13162
13163 : see if strerror and/or sys_errlist[] exist
13164 echo " "
13165 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
13166     if set strerror val -f d_strerror; eval $csym; $val; then
13167                 echo 'strerror() found.' >&4
13168                 d_strerror="$define"
13169                 d_strerrm='strerror(e)'
13170                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
13171                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
13172                         d_syserrlst="$define"
13173                 else
13174                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
13175                         d_syserrlst="$undef"
13176                 fi
13177     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
13178                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
13179                 echo 'strerror() found in string header.' >&4
13180                 d_strerror="$define"
13181                 d_strerrm='strerror(e)'
13182                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
13183                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
13184                                 d_syserrlst="$define"
13185                 else
13186                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
13187                         d_syserrlst="$undef"
13188                 fi
13189     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
13190                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
13191                 d_strerror="$undef"
13192                 d_syserrlst="$define"
13193                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
13194     else
13195                 echo 'strerror() and sys_errlist[] NOT found.' >&4
13196                 d_strerror="$undef"
13197                 d_syserrlst="$undef"
13198                 d_strerrm='"unknown"'
13199     fi
13200 fi
13201
13202 : see if strftime exists
13203 set strftime d_strftime
13204 eval $inlibc
13205
13206 : see if strtod exists
13207 set strtod d_strtod
13208 eval $inlibc
13209
13210 : see if strtol exists
13211 set strtol d_strtol
13212 eval $inlibc
13213
13214 : see if strtold exists
13215 set strtold d_strtold
13216 eval $inlibc
13217
13218 : see if strtoll exists
13219 set strtoll d_strtoll
13220 eval $inlibc
13221
13222 case "$d_longlong-$d_strtoll" in
13223 "$define-$define")
13224         $cat <<EOM
13225 Checking whether your strtoll() works okay...
13226 EOM
13227         $cat >try.c <<'EOCP'
13228 #include <errno.h>
13229 #ifdef __hpux
13230 #define strtoll __strtoll
13231 #endif
13232 #ifdef __EMX__
13233 #define strtoll _strtoll
13234 #endif
13235 #include <stdio.h>
13236 extern long long int strtoll(char *s, char **, int); 
13237 static int bad = 0;
13238 int check(char *s, long long ell, int een) {
13239         long long gll;
13240         errno = 0;
13241         gll = strtoll(s, 0, 10);
13242         if (!((gll == ell) && (errno == een)))
13243                 bad++;
13244 }
13245 int main() {
13246         check(" 1",                                      1LL, 0);
13247         check(" 0",                                      0LL, 0);
13248         check("-1",                                     -1LL, 0);
13249         check("-9223372036854775808", -9223372036854775808LL, 0);
13250         check("-9223372036854775808", -9223372036854775808LL, 0);
13251         check(" 9223372036854775807",  9223372036854775807LL, 0);
13252         check("-9223372036854775808", -9223372036854775808LL, 0);
13253         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
13254         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
13255         if (!bad)
13256                 printf("ok\n");
13257 }
13258 EOCP
13259         set try
13260         if eval $compile; then
13261                 yyy=`$run ./try`
13262                 case "$yyy" in
13263                 ok) echo "Your strtoll() seems to be working okay." ;;
13264                 *) cat <<EOM >&4
13265 Your strtoll() doesn't seem to be working okay.
13266 EOM
13267                    d_strtoll="$undef"
13268                    ;;
13269                 esac
13270         else
13271                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13272                 d_strtoll="$undef"
13273         fi
13274         ;;
13275 esac
13276
13277 : see if strtoq exists
13278 set strtoq d_strtoq
13279 eval $inlibc
13280
13281 : see if strtoul exists
13282 set strtoul d_strtoul
13283 eval $inlibc
13284
13285 case "$d_strtoul" in
13286 "$define")
13287         $cat <<EOM
13288 Checking whether your strtoul() works okay...
13289 EOM
13290         $cat >try.c <<'EOCP'
13291 #include <errno.h>
13292 #include <stdio.h>
13293 extern unsigned long int strtoul(char *s, char **, int); 
13294 static int bad = 0;
13295 void check(char *s, unsigned long eul, int een) {
13296         unsigned long gul;
13297         errno = 0;
13298         gul = strtoul(s, 0, 10);
13299         if (!((gul == eul) && (errno == een)))
13300                 bad++;
13301 }
13302 int main() {
13303         check(" 1", 1L, 0);
13304         check(" 0", 0L, 0);
13305 EOCP
13306         case "$longsize" in
13307         8)
13308             $cat >>try.c <<'EOCP'
13309         check("18446744073709551615", 18446744073709551615UL, 0);
13310         check("18446744073709551616", 18446744073709551615UL, ERANGE);
13311 #if 0 /* strtoul() for /^-/ strings is undefined. */
13312         check("-1", 18446744073709551615UL, 0);
13313         check("-18446744073709551614", 2, 0);
13314         check("-18446744073709551615", 1, 0);
13315         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
13316         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
13317 #endif
13318 EOCP
13319                 ;;
13320         4)
13321                     $cat >>try.c <<'EOCP'
13322         check("4294967295", 4294967295UL, 0);
13323         check("4294967296", 4294967295UL, ERANGE);
13324 #if 0 /* strtoul() for /^-/ strings is undefined. */
13325         check("-1", 4294967295UL, 0);
13326         check("-4294967294", 2, 0);
13327         check("-4294967295", 1, 0);
13328         check("-4294967296", 4294967295UL, ERANGE);
13329         check("-4294967297", 4294967295UL, ERANGE);
13330 #endif
13331 EOCP
13332                 ;;
13333         *)
13334 : Should we write these tests to be more portable by sprintf-ing
13335 : ~0 and then manipulating that char string as input for strtol?
13336                 ;;
13337         esac
13338         $cat >>try.c <<'EOCP'
13339         if (!bad)
13340                 printf("ok\n");
13341         return 0;
13342 }
13343 EOCP
13344         set try
13345         if eval $compile; then
13346                 case "`$run ./try`" in
13347                 ok) echo "Your strtoul() seems to be working okay." ;;
13348                 *) cat <<EOM >&4
13349 Your strtoul() doesn't seem to be working okay.
13350 EOM
13351                    d_strtoul="$undef"
13352                    ;;
13353                 esac
13354         fi
13355         ;;
13356 esac
13357
13358 : see if strtoull exists
13359 set strtoull d_strtoull
13360 eval $inlibc
13361
13362 case "$d_longlong-$d_strtoull" in
13363 "$define-$define")
13364         $cat <<EOM
13365 Checking whether your strtoull() works okay...
13366 EOM
13367         $cat >try.c <<'EOCP'
13368 #include <errno.h>
13369 #ifdef __hpux
13370 #define strtoull __strtoull
13371 #endif
13372 #include <stdio.h>
13373 extern unsigned long long int strtoull(char *s, char **, int); 
13374 static int bad = 0;
13375 int check(char *s, long long eull, int een) {
13376         long long gull;
13377         errno = 0;
13378         gull = strtoull(s, 0, 10);
13379         if (!((gull == eull) && (errno == een)))
13380                 bad++;
13381 }
13382 int main() {
13383         check(" 1",                                        1LL, 0);
13384         check(" 0",                                        0LL, 0);
13385         check("18446744073709551615",  18446744073709551615ULL, 0);
13386         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13387 #if 0 /* strtoull() for /^-/ strings is undefined. */
13388         check("-1",                    18446744073709551615ULL, 0);
13389         check("-18446744073709551614",                     2LL, 0);
13390         check("-18446744073709551615",                     1LL, 0);
13391         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13392         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13393 #endif
13394         if (!bad)
13395                 printf("ok\n");
13396 }
13397 EOCP
13398         set try
13399         if eval $compile; then
13400                 case "`$run ./try`" in
13401                 ok) echo "Your strtoull() seems to be working okay." ;;
13402                 *) cat <<EOM >&4
13403 Your strtoull() doesn't seem to be working okay.
13404 EOM
13405                    d_strtoull="$undef"
13406                    ;;
13407                 esac
13408         fi
13409         ;;
13410 esac
13411
13412 : see if strtouq exists
13413 set strtouq d_strtouq
13414 eval $inlibc
13415
13416 case "$d_strtouq" in
13417 "$define")
13418         $cat <<EOM
13419 Checking whether your strtouq() works okay...
13420 EOM
13421         $cat >try.c <<'EOCP'
13422 #include <errno.h>
13423 #include <stdio.h>
13424 extern unsigned long long int strtouq(char *s, char **, int); 
13425 static int bad = 0;
13426 void check(char *s, unsigned long long eull, int een) {
13427         unsigned long long gull;
13428         errno = 0;
13429         gull = strtouq(s, 0, 10);
13430         if (!((gull == eull) && (errno == een)))
13431                 bad++;
13432 }
13433 int main() {
13434         check(" 1",                                        1LL, 0);
13435         check(" 0",                                        0LL, 0);
13436         check("18446744073709551615",  18446744073709551615ULL, 0);
13437         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13438 #if 0 /* strtouq() for /^-/ strings is undefined. */
13439         check("-1",                    18446744073709551615ULL, 0);
13440         check("-18446744073709551614",                     2LL, 0);
13441         check("-18446744073709551615",                     1LL, 0);
13442         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13443         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13444 #endif
13445         if (!bad)
13446                 printf("ok\n");
13447         return 0;
13448 }
13449 EOCP
13450         set try
13451         if eval $compile; then
13452                 case "`$run ./try`" in
13453                 ok) echo "Your strtouq() seems to be working okay." ;;
13454                 *) cat <<EOM >&4
13455 Your strtouq() doesn't seem to be working okay.
13456 EOM
13457                    d_strtouq="$undef"
13458                    ;;
13459                 esac
13460         fi
13461         ;;
13462 esac
13463
13464 : see if strxfrm exists
13465 set strxfrm d_strxfrm
13466 eval $inlibc
13467
13468 : see if symlink exists
13469 set symlink d_symlink
13470 eval $inlibc
13471
13472 : see if syscall exists
13473 set syscall d_syscall
13474 eval $inlibc
13475
13476 : see if prototype for syscall is available
13477 echo " "
13478 set d_syscallproto syscall $i_unistd unistd.h
13479 eval $hasproto
13480
13481 : see if sysconf exists
13482 set sysconf d_sysconf
13483 eval $inlibc
13484
13485 : see if system exists
13486 set system d_system
13487 eval $inlibc
13488
13489 : see if tcgetpgrp exists
13490 set tcgetpgrp d_tcgetpgrp
13491 eval $inlibc
13492
13493 : see if tcsetpgrp exists
13494 set tcsetpgrp d_tcsetpgrp
13495 eval $inlibc
13496
13497 : see if prototype for telldir is available
13498 echo " "
13499 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13500 eval $hasproto
13501
13502 : see if this is a sys/times.h system
13503 set sys/times.h i_systimes
13504 eval $inhdr
13505
13506 : see if times exists
13507 echo " "
13508 if set times val -f d_times; eval $csym; $val; then
13509         echo 'times() found.' >&4
13510         d_times="$define"
13511         inc=''
13512         case "$i_systimes" in
13513         "$define") inc='sys/times.h';;
13514         esac
13515         rp="What is the type returned by times() on this system?"
13516         set clock_t clocktype long stdio.h sys/types.h $inc
13517         eval $typedef_ask
13518 else
13519         echo 'times() NOT found, hope that will do.' >&4
13520         d_times="$undef"
13521         clocktype='int'
13522 fi
13523
13524 : see if truncate exists
13525 set truncate d_truncate
13526 eval $inlibc
13527
13528 : see if tzname[] exists
13529 echo " "
13530 if set tzname val -a d_tzname; eval $csym; $val; then
13531         val="$define"
13532         echo 'tzname[] found.' >&4
13533 else
13534         val="$undef"
13535         echo 'tzname[] NOT found.' >&4
13536 fi
13537 set d_tzname
13538 eval $setvar
13539
13540 case "$osname" in
13541 next|rhapsody|darwin) multiarch="$define" ;;
13542 esac
13543 case "$multiarch" in
13544 ''|[nN]*) multiarch="$undef" ;;
13545 esac
13546
13547 : check for ordering of bytes in a long
13548 echo " "
13549 case "$usecrosscompile$multiarch" in
13550 *$define*)
13551         $cat <<EOM
13552 You seem to be either cross-compiling or doing a multiarchitecture build,
13553 skipping the byteorder check.
13554
13555 EOM
13556         byteorder='ffff'
13557         ;;
13558 *)
13559         case "$byteorder" in
13560         '')
13561                 $cat <<'EOM'
13562 In the following, larger digits indicate more significance.  A big-endian
13563 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13564 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13565 machines may have weird orders like 3412.  A Cray will report 87654321,
13566 an Alpha will report 12345678. If the test program works the default is
13567 probably right.
13568 I'm now running the test program...
13569 EOM
13570                 $cat >try.c <<'EOCP'
13571 #include <stdio.h>
13572 int main()
13573 {
13574         int i;
13575         union {
13576                 unsigned long l;
13577                 char c[sizeof(long)];
13578         } u;
13579
13580         if (sizeof(long) > 4)
13581                 u.l = (0x08070605L << 32) | 0x04030201L;
13582         else
13583                 u.l = 0x04030201L;
13584         for (i = 0; i < sizeof(long); i++)
13585                 printf("%c", u.c[i]+'0');
13586         printf("\n");
13587         exit(0);
13588 }
13589 EOCP
13590                 xxx_prompt=y
13591                 set try
13592                 if eval $compile && ./try > /dev/null; then
13593                         dflt=`$run ./try`
13594                         case "$dflt" in
13595                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13596                                 echo "(The test program ran ok.)"
13597                                 echo "byteorder=$dflt"
13598                                 xxx_prompt=n
13599                         ;;
13600                         ????|????????) echo "(The test program ran ok.)" ;;
13601                         *) echo "(The test program didn't run right for some reason.)" ;;
13602                         esac
13603                 else
13604                         dflt='4321'
13605                         cat <<'EOM'
13606 (I can't seem to compile the test program.  Guessing big-endian...)
13607 EOM
13608                 fi
13609                 case "$xxx_prompt" in
13610                 y)
13611                         rp="What is the order of bytes in a long?"
13612                         . ./myread
13613                         byteorder="$ans"
13614                         ;;
13615                 *)      byteorder=$dflt
13616                         ;;
13617                 esac
13618                 ;;
13619         esac
13620         $rm -f try.c try
13621         ;;
13622 esac
13623
13624
13625 $cat <<EOM
13626
13627 Checking to see whether you can access character data unalignedly...
13628 EOM
13629 case "$d_u32align" in
13630 '')   $cat >try.c <<EOCP
13631 #include <stdio.h>
13632 #define U32 $u32type
13633 #define BYTEORDER 0x$byteorder
13634 #define U8 $u8type
13635 #include <signal.h>
13636 #ifdef SIGBUS
13637 $signal_t bletch(s) int s; { exit(4); }
13638 #endif
13639 int main() {
13640 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13641     U8 buf[8];
13642     U32 *up;
13643     int i;
13644
13645     if (sizeof(U32) != 4) {
13646         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13647         exit(1);
13648     }
13649
13650     fflush(stdout);
13651
13652 #ifdef SIGBUS
13653     signal(SIGBUS, bletch);
13654 #endif
13655
13656     buf[0] = 0;
13657     buf[1] = 0;
13658     buf[2] = 0;
13659     buf[3] = 1;
13660     buf[5] = 0;
13661     buf[6] = 0;
13662     buf[7] = 0;
13663     buf[8] = 1;
13664
13665     for (i = 0; i < 4; i++) {
13666         up = (U32*)(buf + i);
13667         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13668                (*up == 1 << (8*(3-i)))  /* little-endian */
13669               )
13670            )
13671         {
13672             printf("read failed (%x)\n", *up);
13673             exit(2);
13674         }
13675     }
13676
13677     /* write test */
13678     for (i = 0; i < 4; i++) {
13679         up = (U32*)(buf + i);
13680         *up = 0xBeef;
13681         if (*up != 0xBeef) {
13682             printf("write failed (%x)\n", *up);
13683             exit(3);
13684         }
13685     }
13686
13687     exit(0);
13688 #else
13689     printf("1\n");
13690     exit(1);
13691 #endif
13692     return 0;
13693 }
13694 EOCP
13695 set try
13696 if eval $compile_ok; then
13697         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
13698         $run ./try 2>&1 >/dev/null
13699         case "$?" in
13700         0)      cat >&4 <<EOM
13701 You can access character data pretty unalignedly.
13702 EOM
13703                 d_u32align="$undef"
13704                 ;;
13705         *)      cat >&4 <<EOM
13706 It seems that you must access character data in an aligned manner.
13707 EOM
13708                 d_u32align="$define"
13709                 ;;
13710         esac
13711 else
13712         rp='Can you access character data at unaligned addresses?'
13713         dflt='n'
13714         . ./myread
13715         case "$ans" in
13716         [yY]*)  d_u32align="$undef"  ;;
13717         *)      d_u32align="$define" ;;
13718         esac
13719 fi
13720 $rm -f core core.try.* try.core
13721 ;;
13722 esac
13723
13724 : see if ualarm exists
13725 set ualarm d_ualarm
13726 eval $inlibc
13727
13728 : see if umask exists
13729 set umask d_umask
13730 eval $inlibc
13731
13732 : see if unordered exists
13733 set unordered d_unordered
13734 eval $inlibc
13735
13736 : see if usleep exists
13737 set usleep d_usleep
13738 eval $inlibc
13739
13740 : see if prototype for usleep is available
13741 echo " "
13742 set d_usleepproto usleep $i_unistd unistd.h
13743 eval $hasproto
13744
13745 : see if ustat exists
13746 set ustat d_ustat
13747 eval $inlibc
13748
13749 : backward compatibility for d_hvfork
13750 if test X$d_hvfork != X; then
13751         d_vfork="$d_hvfork"
13752         d_hvfork=''
13753 fi
13754 : see if there is a vfork
13755 val=''
13756 set vfork val
13757 eval $inlibc
13758
13759 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13760 : perl on Solaris 2.x, and probably elsewhere.
13761 case "$val" in
13762 $define)
13763         echo " "
13764         case "$usevfork" in
13765         false) dflt='n';;
13766         *) dflt='y';;
13767         esac
13768         cat <<'EOM'
13769  
13770 Perl can only use a vfork() that doesn't suffer from strict
13771 restrictions on calling functions or modifying global data in
13772 the child.  For example, glibc-2.1 contains such a vfork()
13773 that is unsuitable.  If your system provides a proper fork()
13774 call, chances are that you do NOT want perl to use vfork().
13775
13776 EOM
13777         rp="Do you still want to use vfork()?"
13778         . ./myread
13779         case "$ans" in
13780         y|Y) ;;
13781         *)
13782                 echo "Ok, we won't use vfork()."
13783                 val="$undef"
13784                 ;;
13785         esac
13786         ;;
13787 esac
13788 set d_vfork
13789 eval $setvar
13790 case "$d_vfork" in
13791 $define) usevfork='true';;
13792 *) usevfork='false';;
13793 esac
13794
13795 : see if closedir exists
13796 set closedir d_closedir
13797 eval $inlibc
13798
13799 case "$d_closedir" in
13800 "$define")
13801         echo " "
13802         echo "Checking whether closedir() returns a status..." >&4
13803         cat > try.c <<EOM
13804 #$i_dirent I_DIRENT             /**/
13805 #$i_sysdir I_SYS_DIR            /**/
13806 #$i_sysndir I_SYS_NDIR          /**/
13807 #$i_systypes I_SYS_TYPES        /**/
13808
13809 #if defined(I_SYS_TYPES)
13810 #include <sys/types.h>
13811 #endif
13812 #if defined(I_DIRENT)
13813 #include <dirent.h>
13814 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13815 #include <sys/dir.h>
13816 #endif
13817 #else
13818 #ifdef I_SYS_NDIR
13819 #include <sys/ndir.h>
13820 #else
13821 #ifdef I_SYS_DIR
13822 #ifdef hp9000s500
13823 #include <ndir.h>       /* may be wrong in the future */
13824 #else
13825 #include <sys/dir.h>
13826 #endif
13827 #endif
13828 #endif
13829 #endif 
13830 int main() { return closedir(opendir(".")); }
13831 EOM
13832         set try
13833         if eval $compile_ok; then
13834                 if $run ./try > /dev/null 2>&1 ; then
13835                         echo "Yes, it does."
13836                         val="$undef"
13837                 else
13838                         echo "No, it doesn't."
13839                         val="$define"
13840                 fi
13841         else
13842                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13843                 val="$define"
13844         fi
13845         ;;
13846 *)
13847         val="$undef";
13848         ;;
13849 esac
13850 set d_void_closedir
13851 eval $setvar
13852 $rm -f try try.*
13853 : see if there is a wait4
13854 set wait4 d_wait4
13855 eval $inlibc
13856
13857 : see if waitpid exists
13858 set waitpid d_waitpid
13859 eval $inlibc
13860
13861 : see if wcstombs exists
13862 set wcstombs d_wcstombs
13863 eval $inlibc
13864
13865 : see if wctomb exists
13866 set wctomb d_wctomb
13867 eval $inlibc
13868
13869 : see if writev exists
13870 set writev d_writev
13871 eval $inlibc
13872
13873 : preserve RCS keywords in files with variable substitution, grrr
13874 Date='$Date'
13875 Id='$Id'
13876 Log='$Log'
13877 RCSfile='$RCSfile'
13878 Revision='$Revision'
13879
13880 : check for alignment requirements
13881 echo " "
13882 case "$usecrosscompile$multiarch" in
13883 *$define*)
13884         $cat <<EOM
13885 You seem to be either cross-compiling or doing a multiarchitecture build,
13886 skipping the memory alignment check.
13887
13888 EOM
13889         case "$alignbytes" in
13890         '') alignbytes=8 ;;
13891         esac
13892         ;;
13893 *)
13894         case "$alignbytes" in
13895         '') echo "Checking alignment constraints..." >&4
13896                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13897                         $cat >try.c <<'EOCP'
13898 typedef long double NV;
13899 EOCP
13900                 else
13901                         $cat >try.c <<'EOCP'
13902 typedef double NV;
13903 EOCP
13904                 fi
13905                 $cat >>try.c <<'EOCP'
13906 #include <stdio.h>
13907 struct foobar {
13908         char foo;
13909         NV bar;
13910 } try_algn;
13911 int main()
13912 {
13913     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13914     return(0);
13915 }
13916 EOCP
13917                 set try
13918                 if eval $compile_ok; then
13919                         dflt=`$run ./try`
13920                 else
13921                         dflt='8'
13922                         echo "(I can't seem to compile the test program...)"
13923                 fi
13924                 ;;
13925         *) dflt="$alignbytes"
13926                 ;;
13927         esac
13928         rp="Doubles must be aligned on a how-many-byte boundary?"
13929         . ./myread
13930         alignbytes="$ans"
13931         $rm -f try.c try
13932         ;;
13933 esac
13934
13935
13936 : set the base revision
13937 baserev=5.0
13938
13939 : how do we catenate cpp tokens here?
13940 echo " "
13941 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13942 $cat >cpp_stuff.c <<'EOCP'
13943 #define RCAT(a,b)a/**/b
13944 #define ACAT(a,b)a ## b
13945 RCAT(Rei,ser)
13946 ACAT(Cir,cus)
13947 EOCP
13948 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13949 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13950         echo "Oh!  Smells like ANSI's been here." >&4
13951         echo "We can catify or stringify, separately or together!"
13952         cpp_stuff=42
13953 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13954         echo "Ah, yes!  The good old days!" >&4
13955         echo "However, in the good old days we don't know how to stringify and"
13956         echo "catify at the same time."
13957         cpp_stuff=1
13958 else
13959         $cat >&4 <<EOM
13960 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13961 to have to edit the values of CAT[2-5] in config.h...
13962 EOM
13963         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13964 fi
13965 $rm -f cpp_stuff.*
13966
13967 : see if this is a db.h system
13968 set db.h i_db
13969 eval $inhdr
13970
13971 case "$i_db" in
13972 $define)
13973         : Check db version.
13974         echo " "
13975         echo "Checking Berkeley DB version ..." >&4
13976         $cat >try.c <<EOCP
13977 #$d_const HASCONST
13978 #ifndef HASCONST
13979 #define const
13980 #endif
13981 #include <sys/types.h>
13982 #include <stdio.h>
13983 #include <db.h>
13984 int main(int argc, char *argv[])
13985 {
13986 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13987     int Major, Minor, Patch ;
13988     unsigned long Version ;
13989     (void)db_version(&Major, &Minor, &Patch) ;
13990     if (argc == 2) {
13991         printf("%d %d %d %d %d %d\n",
13992                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13993                Major, Minor, Patch);
13994         exit(0);
13995     }
13996     printf("You have Berkeley DB Version 2 or greater.\n");
13997
13998     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13999                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
14000     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
14001                 Major, Minor, Patch) ;
14002
14003     /* check that db.h & libdb are compatible */
14004     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
14005         printf("db.h and libdb are incompatible.\n") ;
14006         exit(3);        
14007     }
14008
14009     printf("db.h and libdb are compatible.\n") ;
14010
14011     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
14012                 + DB_VERSION_PATCH ;
14013
14014     /* needs to be >= 2.3.4 */
14015     if (Version < 2003004) {
14016     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
14017         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
14018         exit(2);        
14019     }
14020
14021     exit(0);
14022 #else
14023 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
14024     if (argc == 2) {
14025         printf("1 0 0\n");
14026         exit(0);
14027     }
14028     printf("You have Berkeley DB Version 1.\n");
14029     exit(0);    /* DB version < 2: the coast is clear. */
14030 #else
14031     exit(1);    /* <db.h> not Berkeley DB? */
14032 #endif
14033 #endif
14034 }
14035 EOCP
14036         set try
14037         if eval $compile_ok && $run ./try; then
14038                 echo 'Looks OK.' >&4
14039                 set `$run ./try 1`
14040                 db_version_major=$1
14041                 db_version_minor=$2
14042                 db_version_patch=$3
14043         else
14044                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
14045                 i_db=$undef
14046                 case " $libs " in
14047                 *"-ldb "*)
14048                         : Remove db from list of libraries to use
14049                         echo "Removing unusable -ldb from library list" >&4
14050                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
14051                         shift
14052                         libs="$*"
14053                         echo "libs = $libs" >&4
14054                         ;;
14055                 esac
14056         fi
14057         $rm -f try.*
14058         ;;
14059 esac
14060
14061 case "$i_db" in
14062 define)
14063         : Check the return type needed for hash 
14064         echo " "
14065         echo "Checking return type needed for hash for Berkeley DB ..." >&4
14066         $cat >try.c <<EOCP
14067 #$d_const HASCONST
14068 #ifndef HASCONST
14069 #define const
14070 #endif
14071 #include <sys/types.h>
14072 #include <db.h>
14073
14074 #ifndef DB_VERSION_MAJOR
14075 u_int32_t hash_cb (ptr, size)
14076 const void *ptr;
14077 size_t size;
14078 {
14079 }
14080 HASHINFO info;
14081 int main()
14082 {
14083         info.hash = hash_cb;
14084 }
14085 #endif
14086 EOCP
14087         if $cc $ccflags -c try.c >try.out 2>&1 ; then
14088                 if $contains warning try.out >>/dev/null 2>&1 ; then
14089                         db_hashtype='int'
14090                 else
14091                         db_hashtype='u_int32_t'
14092                 fi
14093         else
14094                 : XXX Maybe we should just give up here.
14095                 db_hashtype=u_int32_t
14096                 $cat try.out >&4
14097                 echo "Help:  I can't seem to compile the db test program." >&4
14098                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
14099         fi
14100         $rm -f try.*
14101         echo "Your version of Berkeley DB uses $db_hashtype for hash."
14102         ;;
14103 *)      db_hashtype=u_int32_t
14104         ;;
14105 esac
14106 case "$i_db" in
14107 define)
14108         : Check the return type needed for prefix 
14109         echo " "
14110         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
14111         cat >try.c <<EOCP
14112 #$d_const HASCONST
14113 #ifndef HASCONST
14114 #define const
14115 #endif
14116 #include <sys/types.h>
14117 #include <db.h>
14118
14119 #ifndef DB_VERSION_MAJOR
14120 size_t prefix_cb (key1, key2)
14121 const DBT *key1;
14122 const DBT *key2;
14123 {
14124 }
14125 BTREEINFO info;
14126 int main()
14127 {
14128         info.prefix = prefix_cb;
14129 }
14130 #endif
14131 EOCP
14132         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
14133                 if $contains warning try.out >>/dev/null 2>&1 ; then
14134                         db_prefixtype='int'
14135                 else
14136                         db_prefixtype='size_t'
14137                 fi
14138         else
14139                 db_prefixtype='size_t'
14140                 : XXX Maybe we should just give up here.
14141                 $cat try.out >&4
14142                 echo "Help:  I can't seem to compile the db test program." >&4
14143                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
14144         fi
14145         $rm -f try.*
14146         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
14147         ;;
14148 *)      db_prefixtype='size_t'
14149         ;;
14150 esac
14151
14152
14153 : How can we generate normalized random numbers ?
14154 echo " "
14155 echo "Looking for a random number function..." >&4
14156 case "$randfunc" in
14157 '')
14158         if set drand48 val -f; eval $csym; $val; then
14159                 dflt="drand48"
14160                 echo "Good, found drand48()." >&4
14161         elif set random val -f; eval $csym; $val; then
14162                 dflt="random"
14163                 echo "OK, found random()." >&4
14164         else
14165                 dflt="rand"
14166                 echo "Yick, looks like I have to use rand()." >&4
14167         fi
14168         echo " "
14169         ;;
14170 *)
14171         dflt="$randfunc"
14172         ;;
14173 esac
14174 cont=true
14175
14176 case "$ccflags" in
14177 *-Dmy_rand=*|*-Dmy_srand=*)
14178         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
14179         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
14180         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
14181         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
14182         ;;
14183 esac
14184
14185 while $test "$cont"; do
14186         rp="Use which function to generate random numbers?"
14187         . ./myread
14188         if $test "$ans" = "$dflt"; then
14189                 : null
14190         else
14191                 randbits=''
14192         fi
14193         randfunc="$ans"
14194         if set $ans val -f; eval $csym; $val; then
14195                 cont=''
14196         else
14197                 dflt=y
14198                 rp="I cannot find function $ans. Use that name anyway?"
14199                 . ./myread
14200                 dflt=rand
14201                 case "$ans" in
14202                         [yY]*) cont='';;
14203                 esac
14204         fi
14205         case "$cont" in
14206         '')
14207                 case "$randfunc" in
14208                 drand48)
14209                         drand01="drand48()"
14210                         seedfunc="srand48"
14211                         randbits=48
14212                         randseedtype=long
14213                         ;;
14214                 rand|random)
14215                         case "$randbits" in
14216                         '')
14217 echo "Checking to see how many bits your $randfunc() function produces..." >&4
14218                                 $cat >try.c <<EOCP
14219 #$i_unistd I_UNISTD
14220 #$i_stdlib I_STDLIB
14221 #include <stdio.h>
14222 #ifdef I_UNISTD
14223 #  include <unistd.h>
14224 #endif
14225 #ifdef I_STDLIB
14226 #  include <stdlib.h>
14227 #endif
14228 int main()
14229 {
14230         register int i;
14231         register unsigned long tmp;
14232         register unsigned long max = 0L;
14233
14234         for (i = 1000; i; i--) {
14235                 tmp = (unsigned long) $randfunc();
14236                 if (tmp > max) max = tmp;
14237         }
14238         for (i = 0; max; i++)
14239                 max /= 2;
14240         printf("%d\n",i);
14241 }
14242 EOCP
14243                                 set try
14244                                 if eval $compile_ok; then
14245                                         dflt=`try`
14246                                 else
14247                                         dflt='?'
14248                                         echo "(I can't seem to compile the test program...)"
14249                                 fi
14250                                 ;;
14251                         *)
14252                                 dflt="$randbits"
14253                                 ;;
14254                         esac
14255                         rp="How many bits does your $randfunc() function produce?"
14256                         . ./myread
14257                         randbits="$ans"
14258                         $rm -f try.c try
14259                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
14260                         seedfunc="s$randfunc"
14261                         randseedtype=unsigned
14262                         ;;
14263                 *)
14264                         dflt="31"
14265                         rp="How many bits does your $randfunc() function produce?"
14266                         . ./myread
14267                         randbits="$ans"
14268                         seedfunc="s$randfunc"
14269                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
14270                         if set $seedfunc val -f; eval $csym; $val; then
14271                                 echo "(Using $seedfunc() to seed random generator)"
14272                         else
14273                                 echo "(Warning: no $seedfunc() to seed random generator)"
14274                                 seedfunc=rand
14275                         fi
14276                         randseedtype=unsigned
14277                         ;;
14278                 esac
14279                 ;;
14280         esac
14281 done
14282
14283 echo " "
14284 echo "Determining whether or not we are on an EBCDIC system..." >&4
14285 $cat >try.c <<'EOM'
14286 int main()
14287 {
14288   if ('M'==0xd4) return 0;
14289   return 1;
14290 }
14291 EOM
14292
14293 val=$undef
14294 set try
14295 if eval $compile_ok; then
14296         if $run ./try; then
14297                 echo "You seem to speak EBCDIC." >&4
14298                 val="$define"
14299         else
14300                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
14301         fi
14302 else
14303         echo "I'm unable to compile the test program." >&4
14304         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
14305 fi
14306 $rm -f try try.*
14307 set ebcdic
14308 eval $setvar
14309
14310 echo " "
14311 $cat >&4 <<EOM
14312 Checking how to flush all pending stdio output...
14313 EOM
14314 # I only know how to find the first 32 possibly open files on SunOS.
14315 # See also hints/sunos_4_1.sh and util.c  --AD
14316 case "$osname" in
14317 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
14318 esac
14319 $cat >>try.c <<EOCP
14320 #include <stdio.h>
14321 #$i_unistd I_UNISTD
14322 #ifdef I_UNISTD
14323 # include <unistd.h>
14324 #endif
14325 #$d_sysconf HAS_SYSCONF
14326 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
14327 #ifdef HAS_STDIO_STREAM_ARRAY
14328 # define STDIO_STREAM_ARRAY $stdio_stream_array
14329 #endif
14330 int main() {
14331   FILE* p;
14332   unlink("try.out");
14333   p = fopen("try.out", "w");
14334 #ifdef TRY_FPUTC
14335   fputc('x', p);
14336 #else
14337 # ifdef TRY_FPRINTF
14338   fprintf(p, "x");
14339 # endif
14340 #endif
14341 #ifdef TRY_FFLUSH_NULL
14342   fflush(NULL);
14343 #endif
14344 #ifdef TRY_FFLUSH_ALL
14345   {
14346     long open_max = -1;
14347 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
14348     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
14349 # else
14350 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
14351     open_max = sysconf(_SC_OPEN_MAX);
14352 #  else
14353 #   ifdef FOPEN_MAX
14354     open_max = FOPEN_MAX;
14355 #   else
14356 #    ifdef OPEN_MAX
14357     open_max = OPEN_MAX;
14358 #    else
14359 #     ifdef _NFILE
14360     open_max = _NFILE;
14361 #     endif
14362 #    endif
14363 #   endif
14364 #  endif
14365 # endif 
14366 # ifdef HAS_STDIO_STREAM_ARRAY
14367     if (open_max > 0) {
14368       long i;
14369       for (i = 0; i < open_max; i++)
14370             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
14371                 STDIO_STREAM_ARRAY[i]._file < open_max &&
14372                 STDIO_STREAM_ARRAY[i]._flag)
14373                 fflush(&STDIO_STREAM_ARRAY[i]);
14374     }   
14375   }
14376 # endif
14377 #endif
14378   _exit(42);
14379 }
14380 EOCP
14381 : first we have to find out how _not_ to flush
14382 $to try.c
14383 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
14384     output=''
14385     set try -DTRY_FPUTC
14386     if eval $compile; then
14387             $run ./try 2>/dev/null
14388             code="$?"
14389             $from try.out
14390             if $test ! -s try.out -a "X$code" = X42; then
14391                 output=-DTRY_FPUTC
14392             fi
14393     fi
14394     case "$output" in
14395     '')
14396             set try -DTRY_FPRINTF
14397             if eval $compile; then
14398                     $run ./try 2>/dev/null
14399                     code="$?"
14400                     $from try.out
14401                     if $test ! -s try.out -a "X$code" = X42; then
14402                         output=-DTRY_FPRINTF
14403                     fi
14404             fi
14405         ;;
14406     esac
14407 fi
14408 : check for fflush NULL behaviour
14409 case "$fflushNULL" in
14410 '')     set try -DTRY_FFLUSH_NULL $output
14411         if eval $compile; then
14412                 $run ./try 2>/dev/null
14413                 code="$?"
14414                 $from try.out
14415                 if $test -s try.out -a "X$code" = X42; then
14416                         fflushNULL="`$cat try.out`"
14417                 else
14418                         if $test "X$code" != X42; then
14419                                 $cat >&4 <<EOM
14420 (If this test failed, don't worry, we'll try another method shortly.)
14421 EOM
14422                         fi
14423                 fi
14424         fi
14425         $rm -f core try.core core.try.*
14426         case "$fflushNULL" in
14427         x)      $cat >&4 <<EOM
14428 Your fflush(NULL) works okay for output streams.
14429 Let's see if it clobbers input pipes...
14430 EOM
14431 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14432 # bug that improperly flushes the input end of pipes.  So we avoid the
14433 # autoflush on fork/system/exec support for now. :-(
14434 $cat >tryp.c <<EOCP
14435 #include <stdio.h>
14436 int
14437 main(int argc, char **argv)
14438 {
14439     char buf[1024];
14440     int i;
14441     char *bp = buf;
14442     while (1) {
14443         while ((i = getc(stdin)) != -1
14444                && (*bp++ = i) != '\n'
14445                && bp < &buf[1024])
14446         /* DO NOTHING */ ;
14447         *bp = '\0';
14448         fprintf(stdout, "%s", buf);
14449         fflush(NULL);
14450         if (i == -1)
14451             return 0;
14452         bp = buf;
14453     }
14454 }
14455 EOCP
14456                 fflushNULL="$define"
14457                 set tryp
14458                 if eval $compile; then
14459                     $rm -f tryp.out
14460                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14461                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
14462                        $cat >&4 <<EOM
14463 fflush(NULL) seems to behave okay with input streams.
14464 EOM
14465                         fflushNULL="$define"
14466                     else
14467                         $cat >&4 <<EOM
14468 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
14469 EOM
14470                         fflushNULL="$undef"
14471                     fi
14472                 fi
14473                 $rm -f core tryp.c tryp.core core.tryp.*
14474                 ;;
14475         '')     $cat >&4 <<EOM
14476 Your fflush(NULL) isn't working (contrary to ANSI C).
14477 EOM
14478                 fflushNULL="$undef"
14479                 ;;
14480         *)      $cat >&4 <<EOM
14481 Cannot figure out whether your fflush(NULL) works or not.
14482 I'm assuming it doesn't (contrary to ANSI C).
14483 EOM
14484                 fflushNULL="$undef"
14485                 ;;
14486         esac
14487         ;;
14488 $define|true|[yY]*)
14489         fflushNULL="$define"
14490         ;;
14491 *)
14492         fflushNULL="$undef"
14493         ;;
14494 esac
14495 : check explicit looping only if NULL did not work, and if the pipe
14496 : bug does not show up on an explicit flush too
14497 case "$fflushNULL" in
14498 "$undef")
14499         $cat >tryp.c <<EOCP
14500 #include <stdio.h>
14501 int
14502 main(int argc, char **argv)
14503 {
14504     char buf[1024];
14505     int i;
14506     char *bp = buf;
14507     while (1) {
14508         while ((i = getc(stdin)) != -1
14509                && (*bp++ = i) != '\n'
14510                && bp < &buf[1024])
14511         /* DO NOTHING */ ;
14512         *bp = '\0';
14513         fprintf(stdout, "%s", buf);
14514         fflush(stdin);
14515         if (i == -1)
14516             return 0;
14517         bp = buf;
14518     }
14519 }
14520 EOCP
14521         set tryp
14522         if eval $compile; then
14523             $rm -f tryp.out
14524             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14525             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14526                $cat >&4 <<EOM
14527 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14528 EOM
14529                 : now check for fflushall behaviour
14530                 case "$fflushall" in
14531                 '')     set try -DTRY_FFLUSH_ALL $output
14532                         if eval $compile; then
14533                                 $cat >&4 <<EOM
14534 (Now testing the other method--but note that this also may fail.)
14535 EOM
14536                                 $run ./try 2>/dev/null
14537                                 code=$?
14538                                 $from try.out
14539                                 if $test -s try.out -a "X$code" = X42; then
14540                                         fflushall="`$cat try.out`"
14541                                 fi
14542                         fi
14543                         $rm -f core try.core core.try.*
14544                         case "$fflushall" in
14545                         x)      $cat >&4 <<EOM
14546 Whew. Flushing explicitly all the stdio streams works.
14547 EOM
14548                                 fflushall="$define"
14549                                 ;;
14550                         '')     $cat >&4 <<EOM
14551 Sigh. Flushing explicitly all the stdio streams doesn't work.
14552 EOM
14553                                 fflushall="$undef"
14554                                 ;;
14555                         *)      $cat >&4 <<EOM
14556 Cannot figure out whether flushing stdio streams explicitly works or not.
14557 I'm assuming it doesn't.
14558 EOM
14559                                 fflushall="$undef"
14560                                 ;;
14561                         esac
14562                         ;;
14563                 "$define"|true|[yY]*)
14564                         fflushall="$define"
14565                         ;;
14566                 *)
14567                         fflushall="$undef"
14568                         ;;
14569                 esac
14570             else
14571                 $cat >&4 <<EOM
14572 All is futile.  Even fflush(stdin) clobbers input pipes!
14573 EOM
14574                 fflushall="$undef"
14575             fi
14576         else
14577             fflushall="$undef"
14578         fi
14579         $rm -f core tryp.c tryp.core core.tryp.*
14580         ;;
14581 *)      fflushall="$undef"
14582         ;;
14583 esac
14584
14585 case "$fflushNULL$fflushall" in
14586 undefundef)
14587         $cat <<EOM
14588 OK, I give up.  I cannot figure out how to flush pending stdio output.
14589 We won't be flushing handles at all before fork/exec/popen.
14590 EOM
14591         ;;
14592 esac
14593 $rm -f try.* try$exe_ext
14594
14595 : Store the full pathname to the ar program for use in the C program
14596 : Respect a hint or command line value for full_ar.
14597 case "$full_ar" in
14598 '') full_ar=$ar ;;
14599 esac
14600
14601 : Store the full pathname to the sed program for use in the C program
14602 full_sed=$sed
14603
14604 : see what type gids are declared as in the kernel
14605 echo " "
14606 echo "Looking for the type for group ids returned by getgid()."
14607 set gid_t gidtype xxx stdio.h sys/types.h
14608 eval $typedef
14609 case "$gidtype" in
14610 xxx)
14611         xxx=`./findhdr sys/user.h`
14612         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14613         case $1 in
14614         unsigned) dflt="$1 $2" ;;
14615         *) dflt="$1" ;;
14616         esac
14617         ;;
14618 *) dflt="$gidtype";;
14619 esac
14620 case "$gidtype" in
14621 gid_t) echo "gid_t found." ;;
14622 *)      rp="What is the type for group ids returned by getgid()?"
14623         . ./myread
14624         gidtype="$ans"
14625         ;;
14626 esac
14627
14628 echo " "
14629 case "$gidtype" in
14630 *_t) zzz="$gidtype"     ;;
14631 *)   zzz="gid"          ;;
14632 esac
14633 echo "Checking the size of $zzz..." >&4 
14634 cat > try.c <<EOCP
14635 #include <sys/types.h>
14636 #include <stdio.h>
14637 int main() {
14638     printf("%d\n", (int)sizeof($gidtype));
14639     exit(0);
14640 }
14641 EOCP
14642 set try
14643 if eval $compile_ok; then
14644         yyy=`$run ./try`
14645         case "$yyy" in
14646         '')     gidsize=4
14647                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14648                 ;;
14649         *)      gidsize=$yyy
14650                 echo "Your $zzz is $gidsize bytes long."
14651                 ;;
14652         esac
14653 else
14654         gidsize=4
14655         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14656 fi
14657
14658
14659 echo " "
14660 case "$gidtype" in
14661 *_t) zzz="$gidtype"     ;;
14662 *)   zzz="gid"          ;;
14663 esac
14664 echo "Checking the sign of $zzz..." >&4 
14665 cat > try.c <<EOCP
14666 #include <sys/types.h>
14667 #include <stdio.h>
14668 int main() {
14669         $gidtype foo = -1;
14670         if (foo < 0)
14671                 printf("-1\n");
14672         else
14673                 printf("1\n");
14674 }
14675 EOCP
14676 set try
14677 if eval $compile; then
14678         yyy=`$run ./try`
14679         case "$yyy" in
14680         '')     gidsign=1
14681                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14682                 ;;
14683         *)      gidsign=$yyy
14684                 case "$gidsign" in
14685                  1) echo "Your $zzz is unsigned." ;;
14686                 -1) echo "Your $zzz is signed."   ;;
14687                 esac
14688                 ;;
14689         esac
14690 else
14691         gidsign=1
14692         echo "(I can't compile the test program--guessing unsigned.)" >&4
14693 fi
14694
14695
14696 echo " "
14697
14698 if $test X"$quadtype" != X; then
14699
14700 echo "Checking how to print 64-bit integers..." >&4
14701
14702 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14703         $cat >try.c <<'EOCP'
14704 #include <sys/types.h>
14705 #include <stdio.h>
14706 int main() {
14707   int q = 12345678901;
14708   printf("%ld\n", q);
14709 }
14710 EOCP
14711         set try
14712         if eval $compile; then
14713                 yyy=`$run ./try`
14714                 case "$yyy" in
14715                 12345678901)
14716                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14717                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14718                         echo "We will use %d."
14719                         ;;
14720                 esac
14721         fi
14722 fi
14723
14724 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14725         $cat >try.c <<'EOCP'
14726 #include <sys/types.h>
14727 #include <stdio.h>
14728 int main() {
14729   long q = 12345678901;
14730   printf("%ld\n", q);
14731 }
14732 EOCP
14733         set try
14734         if eval $compile; then
14735                 yyy=`$run ./try`
14736                 case "$yyy" in
14737                 12345678901)
14738                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14739                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14740                         echo "We will use %ld."
14741                         ;;
14742                 esac
14743         fi
14744 fi
14745
14746 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14747         $cat >try.c <<'EOCP'
14748 #include <sys/types.h>
14749 #include <inttypes.h>
14750 #include <stdio.h>
14751 int main() {
14752   int64_t q = 12345678901;
14753   printf("%" PRId64 "\n", q);
14754 }
14755 EOCP
14756         set try
14757         if eval $compile; then
14758                 yyy=`$run ./try`
14759                 case "$yyy" in
14760                 12345678901)
14761                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14762                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14763                         echo "We will use the C9X style."
14764                         ;;
14765                 esac
14766         fi
14767 fi
14768
14769 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14770         $cat >try.c <<EOCP
14771 #include <sys/types.h>
14772 #include <stdio.h>
14773 int main() {
14774   $quadtype q = 12345678901;
14775   printf("%Ld\n", q);
14776 }
14777 EOCP
14778         set try
14779         if eval $compile; then
14780                 yyy=`$run ./try`
14781                 case "$yyy" in
14782                 12345678901)
14783                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14784                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14785                         echo "We will use %Ld."
14786                         ;;
14787                 esac
14788         fi
14789 fi
14790
14791 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14792         $cat >try.c <<'EOCP'
14793 #include <sys/types.h>
14794 #include <stdio.h>
14795 int main() {
14796   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14797   printf("%lld\n", q);
14798 }
14799 EOCP
14800         set try
14801         if eval $compile; then
14802                 yyy=`$run ./try`
14803                 case "$yyy" in
14804                 12345678901)
14805                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14806                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14807                         echo "We will use the %lld style."
14808                         ;;
14809                 esac
14810         fi
14811 fi
14812
14813 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14814         $cat >try.c <<EOCP
14815 #include <sys/types.h>
14816 #include <stdio.h>
14817 int main() {
14818   $quadtype q = 12345678901;
14819   printf("%qd\n", q);
14820 }
14821 EOCP
14822         set try
14823         if eval $compile; then
14824                 yyy=`$run ./try`
14825                 case "$yyy" in
14826                 12345678901)
14827                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14828                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14829                         echo "We will use %qd."
14830                         ;;
14831                 esac
14832         fi
14833 fi
14834
14835 if $test X"$sPRId64" = X; then
14836         echo "Cannot figure out how to print 64-bit integers." >&4
14837 fi
14838
14839 $rm -f try try.*
14840
14841 fi
14842
14843 case "$sPRId64" in
14844 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14845         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14846         ;;
14847 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14848         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14849         ;;
14850 esac
14851
14852
14853 echo " "
14854 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14855
14856 if $test X"$ivsize" = X8; then
14857         ivdformat="$sPRId64"
14858         uvuformat="$sPRIu64"
14859         uvoformat="$sPRIo64"
14860         uvxformat="$sPRIx64"
14861         uvXUformat="$sPRIXU64"
14862 else
14863         if $test X"$ivsize" = X"$longsize"; then
14864                 ivdformat='"ld"'
14865                 uvuformat='"lu"'
14866                 uvoformat='"lo"'
14867                 uvxformat='"lx"'
14868                 uvXUformat='"lX"'
14869         else
14870                 if $test X"$ivsize" = X"$intsize"; then
14871                         ivdformat='"d"'
14872                         uvuformat='"u"'
14873                         uvoformat='"o"'
14874                         uvxformat='"x"'
14875                         uvXUformat='"X"'
14876                 else
14877                         : far out
14878                         if $test X"$ivsize" = X"$shortsize"; then
14879                                 ivdformat='"hd"'
14880                                 uvuformat='"hu"'
14881                                 uvoformat='"ho"'
14882                                 uvxformat='"hx"'
14883                                 uvXUformat='"hX"'
14884                         fi
14885                 fi
14886         fi
14887 fi
14888
14889 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14890         nveformat="$sPRIeldbl"
14891         nvfformat="$sPRIfldbl"
14892         nvgformat="$sPRIgldbl"
14893         nvEUformat="$sPRIEUldbl"
14894         nvFUformat="$sPRIFUldbl"
14895         nvGUformat="$sPRIGUldbl"
14896 else
14897         nveformat='"e"'
14898         nvfformat='"f"'
14899         nvgformat='"g"'
14900         nvEUformat='"E"'
14901         nvFUformat='"F"'
14902         nvGUformat='"G"'
14903 fi
14904
14905 case "$ivdformat" in
14906 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
14907     exit 1
14908     ;;
14909 esac
14910
14911
14912 echo " "
14913 $echo "Checking the format string to be used for gids..." >&4
14914
14915 case "$gidsign" in
14916 -1)     if $test X"$gidsize" = X"$ivsize"; then
14917                 gidformat="$ivdformat"
14918         else
14919                 if $test X"$gidsize" = X"$longsize"; then
14920                         gidformat='"ld"'
14921                 else
14922                         if $test X"$gidsize" = X"$intsize"; then
14923                                 gidformat='"d"'
14924                         else
14925                                 if $test X"$gidsize" = X"$shortsize"; then
14926                                         gidformat='"hd"'
14927                                 fi
14928                         fi
14929                 fi
14930         fi
14931         ;;
14932 *)      if $test X"$gidsize" = X"$uvsize"; then
14933                 gidformat="$uvuformat"
14934         else
14935                 if $test X"$gidsize" = X"$longsize"; then
14936                         gidformat='"lu"'
14937                 else
14938                         if $test X"$gidsize" = X"$intsize"; then
14939                                 gidformat='"u"'
14940                         else
14941                                 if $test X"$gidsize" = X"$shortsize"; then
14942                                         gidformat='"hu"'
14943                                 fi
14944                         fi
14945                 fi
14946         fi
14947         ;;
14948 esac
14949
14950 : see if getgroups exists
14951 set getgroups d_getgrps
14952 eval $inlibc
14953
14954 : see if setgroups exists
14955 set setgroups d_setgrps
14956 eval $inlibc
14957
14958
14959 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14960 echo " "
14961 case "$d_getgrps$d_setgrps" in
14962 *define*)
14963         case "$groupstype" in
14964         '') dflt="$gidtype" ;;
14965         *)  dflt="$groupstype" ;;
14966         esac
14967         $cat <<EOM
14968 What type of pointer is the second argument to getgroups() and setgroups()?
14969 Usually this is the same as group ids, $gidtype, but not always.
14970
14971 EOM
14972         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14973         . ./myread
14974         groupstype="$ans"
14975         ;;
14976 *)  groupstype="$gidtype";;
14977 esac
14978
14979 echo " "
14980 echo "Checking if your $make program sets \$(MAKE)..." >&4
14981 case "$make_set_make" in
14982 '')
14983         $sed 's/^X //' > testmake.mak << 'EOF'
14984 Xall:
14985 X       @echo 'maketemp="$(MAKE)"'
14986 EOF
14987         case "`$make -f testmake.mak 2>/dev/null`" in
14988         *maketemp=*) make_set_make='#' ;;
14989         *)      make_set_make="MAKE=$make" ;;
14990         esac
14991         $rm -f testmake.mak
14992         ;;
14993 esac
14994 case "$make_set_make" in
14995 '#') echo "Yup, it does.";;
14996 *) echo "Nope, it doesn't.";;
14997 esac
14998
14999 : see what type is used for mode_t
15000 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
15001 set mode_t modetype int stdio.h sys/types.h
15002 eval $typedef_ask
15003
15004 : see if stdarg is available
15005 echo " "
15006 if $test `./findhdr stdarg.h`; then
15007         echo "<stdarg.h> found." >&4
15008         valstd="$define"
15009 else
15010         echo "<stdarg.h> NOT found." >&4
15011         valstd="$undef"
15012 fi
15013
15014 : see if varags is available
15015 echo " "
15016 if $test `./findhdr varargs.h`; then
15017         echo "<varargs.h> found." >&4
15018 else
15019         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
15020 fi
15021
15022 : set up the varargs testing programs
15023 $cat > varargs.c <<EOP
15024 #ifdef I_STDARG
15025 #include <stdarg.h>
15026 #endif
15027 #ifdef I_VARARGS
15028 #include <varargs.h>
15029 #endif
15030
15031 #ifdef I_STDARG
15032 int f(char *p, ...)
15033 #else
15034 int f(va_alist)
15035 va_dcl
15036 #endif
15037 {
15038         va_list ap;
15039 #ifndef I_STDARG
15040         char *p;
15041 #endif
15042 #ifdef I_STDARG
15043         va_start(ap,p);
15044 #else
15045         va_start(ap);
15046         p = va_arg(ap, char *);
15047 #endif
15048         va_end(ap);
15049 }
15050 EOP
15051 $cat > varargs <<EOP
15052 $startsh
15053 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
15054         echo "true"
15055 else
15056         echo "false"
15057 fi
15058 $rm -f varargs$_o
15059 EOP
15060 chmod +x varargs
15061
15062 : now check which varargs header should be included
15063 echo " "
15064 i_varhdr=''
15065 case "$valstd" in
15066 "$define")
15067         if `./varargs I_STDARG`; then
15068                 val='stdarg.h'
15069         elif `./varargs I_VARARGS`; then
15070                 val='varargs.h'
15071         fi
15072         ;;
15073 *)
15074         if `./varargs I_VARARGS`; then
15075                 val='varargs.h'
15076         fi
15077         ;;
15078 esac
15079 case "$val" in
15080 '')
15081 echo "I could not find the definition for va_dcl... You have problems..." >&4
15082         val="$undef"; set i_stdarg; eval $setvar
15083         val="$undef"; set i_varargs; eval $setvar
15084         ;;
15085 *) 
15086         set i_varhdr
15087         eval $setvar
15088         case "$i_varhdr" in
15089         stdarg.h)
15090                 val="$define"; set i_stdarg; eval $setvar
15091                 val="$undef"; set i_varargs; eval $setvar
15092                 ;;
15093         varargs.h)
15094                 val="$undef"; set i_stdarg; eval $setvar
15095                 val="$define"; set i_varargs; eval $setvar
15096                 ;;
15097         esac
15098         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
15099 esac
15100 $rm -f varargs*
15101
15102 : see if we need va_copy
15103 echo " "
15104 case "$i_stdarg" in
15105 "$define")
15106         $cat >try.c <<EOCP
15107 #include <stdarg.h>
15108 #include <stdio.h>
15109 #$i_stdlib I_STDLIB
15110 #ifdef I_STDLIB
15111 #include <stdlib.h>
15112 #endif
15113 #include <signal.h>
15114
15115 int
15116 ivfprintf(FILE *f, const char *fmt, va_list *valp)
15117 {
15118   return vfprintf(f, fmt, *valp);
15119 }
15120  
15121 int    
15122 myvfprintf(FILE *f, const  char *fmt, va_list val)
15123 {
15124   return ivfprintf(f, fmt, &val);
15125 }
15126       
15127 int
15128 myprintf(char *fmt, ...) 
15129 {
15130   va_list val;
15131   va_start(val, fmt);
15132   return myvfprintf(stdout, fmt, val); 
15133 }         
15134
15135 int
15136 main(int ac, char **av)
15137 {
15138   signal(SIGSEGV, exit);
15139
15140   myprintf("%s%cs all right, then\n", "that", '\'');                            
15141   exit(0);      
15142 }
15143 EOCP
15144         set try
15145         if eval $compile && $run ./try 2>&1 >/dev/null; then
15146                 case "`$run ./try`" in
15147                 "that's all right, then")
15148                         okay=yes
15149                         ;;
15150                 esac
15151         fi
15152         case "$okay" in
15153         yes)    echo "It seems that you don't need va_copy()." >&4
15154                 need_va_copy="$undef"
15155                 ;;
15156         *)      echo "It seems that va_copy() or similar will be needed." >&4
15157                 need_va_copy="$define"
15158                 ;;
15159         esac
15160         $rm -f try.* core core.* *.core *.core.*
15161         ;;
15162 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
15163         ;;
15164 esac
15165
15166 : define a fucntion to check prototypes
15167 $cat > protochk <<EOSH
15168 $startsh
15169 cc="$cc"
15170 optimize="$optimize"
15171 ccflags="$ccflags"
15172 prototype="$prototype"
15173 define="$define"
15174 rm=$rm
15175 EOSH
15176
15177 $cat >> protochk <<'EOSH'
15178
15179 $rm -f try.c
15180 foo="$1"
15181 shift
15182 while test $# -ge 2; do
15183         case "$1" in
15184                 $define) echo "#include <$2>" >> try.c ;;
15185                 literal) echo "$2" >> try.c ;;
15186         esac
15187     shift 2
15188 done
15189 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
15190 cat >> try.c <<'EOCP'
15191 #ifdef CAN_PROTOTYPE
15192 #define _(args) args
15193 #else
15194 #define _(args) ()
15195 #endif
15196 EOCP
15197 echo "$foo" >> try.c
15198 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
15199 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
15200 status=$?
15201 $rm -f try.[co]
15202 exit $status
15203 EOSH
15204 chmod +x protochk
15205 $eunicefix protochk
15206
15207 : see what type is used for size_t
15208 rp="What is the type used for the length parameter for string functions?"
15209 set size_t sizetype 'unsigned int' stdio.h sys/types.h
15210 eval $typedef_ask
15211
15212 : check for type of arguments to gethostbyaddr. 
15213 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
15214         case "$d_gethbyaddr" in
15215         $define)
15216                 $cat <<EOM
15217
15218 Checking to see what type of arguments are accepted by gethostbyaddr().
15219 EOM
15220                 hdrs="$define sys/types.h
15221                         $d_socket sys/socket.h 
15222                         $i_niin netinet/in.h 
15223                         $i_netdb netdb.h
15224                         $i_unistd unistd.h"
15225                 : The first arg can 'char *' or 'void *'
15226                 : The second arg is some of integral type
15227                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
15228                         for yyy in size_t long int; do
15229                                 case "$netdb_host_type" in
15230                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
15231                                         if ./protochk "$try" $hdrs; then
15232                                                 echo "Your system accepts $xxx for the first arg."
15233                                                 echo "...and $yyy for the second arg."
15234                                                 netdb_host_type="$xxx"
15235                                                 netdb_hlen_type="$yyy"
15236                                         fi
15237                                         ;;
15238                                 esac
15239                         done
15240                 done
15241                 : In case none of those worked, prompt the user.
15242                 case "$netdb_host_type" in
15243                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
15244                         dflt='char *'
15245                         . ./myread
15246                         netdb_host_type=$ans
15247                         rp='What is the type for the 2nd argument to gethostbyaddr?'
15248                         dflt="$sizetype"
15249                         . ./myread
15250                         netdb_hlen_type=$ans
15251                         ;;
15252                 esac
15253                 ;;
15254         *)      : no gethostbyaddr, so pick harmless defaults
15255                 netdb_host_type='char *'
15256                 netdb_hlen_type="$sizetype"
15257                 ;;
15258         esac
15259         # Remove the "const" if needed. -- but then we'll have a 
15260         # prototype clash!
15261         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
15262 fi
15263
15264 : check for type of argument to gethostbyname. 
15265 if test "X$netdb_name_type" = X ; then
15266         case "$d_gethbyname" in
15267         $define)
15268                 $cat <<EOM
15269
15270 Checking to see what type of argument is accepted by gethostbyname().
15271 EOM
15272                 hdrs="$define sys/types.h
15273                         $d_socket sys/socket.h 
15274                         $i_niin netinet/in.h 
15275                         $i_netdb netdb.h
15276                         $i_unistd unistd.h"
15277                 for xxx in "const char *" "char *"; do
15278                         case "$netdb_name_type" in
15279                         '')     try="extern struct hostent *gethostbyname($xxx);"
15280                                 if ./protochk "$try" $hdrs; then
15281                                         echo "Your system accepts $xxx."
15282                                         netdb_name_type="$xxx"
15283                                 fi
15284                                 ;;
15285                         esac
15286                 done
15287                 : In case none of those worked, prompt the user.
15288                 case "$netdb_name_type" in
15289                 '')     rp='What is the type for the 1st argument to gethostbyname?'
15290                         dflt='char *'
15291                         . ./myread
15292                         netdb_name_type=$ans
15293                         ;;
15294                 esac
15295                 ;;
15296         *)      : no gethostbyname, so pick harmless default
15297                 netdb_name_type='char *'
15298                 ;;
15299         esac
15300 fi
15301
15302 : check for type of 1st argument to getnetbyaddr. 
15303 if test "X$netdb_net_type" = X ; then
15304         case "$d_getnbyaddr" in
15305         $define)
15306                 $cat <<EOM
15307
15308 Checking to see what type of 1st argument is accepted by getnetbyaddr().
15309 EOM
15310                 hdrs="$define sys/types.h
15311                         $d_socket sys/socket.h 
15312                         $i_niin netinet/in.h 
15313                         $i_netdb netdb.h
15314                         $i_unistd unistd.h"
15315                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
15316                         case "$netdb_net_type" in
15317                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
15318                                 if ./protochk "$try" $hdrs; then
15319                                         echo "Your system accepts $xxx."
15320                                         netdb_net_type="$xxx"
15321                                 fi
15322                                 ;;
15323                         esac
15324                 done
15325                 : In case none of those worked, prompt the user.
15326                 case "$netdb_net_type" in
15327                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
15328                         dflt='long'
15329                         . ./myread
15330                         netdb_net_type=$ans
15331                         ;;
15332                 esac
15333                 ;;
15334         *)      : no getnetbyaddr, so pick harmless default
15335                 netdb_net_type='long'
15336                 ;;
15337         esac
15338 fi
15339 : locate the preferred pager for this system
15340 case "$pager" in
15341 '')
15342         dflt=''
15343         case "$pg" in
15344         /*) dflt=$pg;;
15345         [a-zA-Z]:/*) dflt=$pg;;
15346         esac
15347         case "$more" in
15348         /*) dflt=$more;;
15349         [a-zA-Z]:/*) dflt=$more;;
15350         esac
15351         case "$less" in
15352         /*) dflt=$less;;
15353         [a-zA-Z]:/*) dflt=$less;;
15354         esac
15355         case "$dflt" in
15356         '') dflt=/usr/ucb/more;;
15357         esac
15358         ;;
15359 *) dflt="$pager";;
15360 esac
15361 echo " "
15362 fn=f/
15363 rp='What pager is used on your system?'
15364 . ./getfile
15365 pager="$ans"
15366
15367 : see what type pids are declared as in the kernel
15368 rp="What is the type of process ids on this system?"
15369 set pid_t pidtype int stdio.h sys/types.h
15370 eval $typedef_ask
15371
15372 : Find earliest binary compatible site_perl subdirectory perl can use.
15373 case "$bincompat5005" in
15374 "$define") xs_apiversion='5.005' ;;
15375 *) xs_apiversion=$version ;;   # The current site_perl version.
15376 esac
15377 : Find earliest pure perl site_perl subdirectory perl can use.
15378 : The versioned directories started at 5.005.
15379 pm_apiversion='5.005'
15380
15381 : see if ar generates random libraries by itself
15382 echo " "
15383 echo "Checking how to generate random libraries on your machine..." >&4
15384 echo 'int bar1() { return bar2(); }' > bar1.c
15385 echo 'int bar2() { return 2; }' > bar2.c
15386 $cat > foo.c <<'EOP'
15387 int main() { printf("%d\n", bar1()); exit(0); }
15388 EOP
15389 $cc $ccflags -c bar1.c >/dev/null 2>&1
15390 $cc $ccflags -c bar2.c >/dev/null 2>&1
15391 $cc $ccflags -c foo.c >/dev/null 2>&1
15392 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
15393 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15394         $run ./foobar >/dev/null 2>&1; then
15395         echo "$ar appears to generate random libraries itself."
15396         orderlib=false
15397         ranlib=":"
15398 elif $ar ts bar$_a >/dev/null 2>&1 &&
15399         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15400         $run ./foobar >/dev/null 2>&1; then
15401                 echo "a table of contents needs to be added with '$ar ts'."
15402                 orderlib=false
15403                 ranlib="$ar ts"
15404 else
15405         case "$ranlib" in
15406         :) ranlib='';;
15407         '')
15408                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15409                 $test -f $ranlib || ranlib=''
15410                 ;;
15411         esac
15412         if $test -n "$ranlib"; then
15413                 echo "your system has '$ranlib'; we'll use that."
15414                 orderlib=false
15415         else
15416                 echo "your system doesn't seem to support random libraries"
15417                 echo "so we'll use lorder and tsort to order the libraries."
15418                 orderlib=true
15419                 ranlib=":"
15420         fi
15421 fi
15422 $rm -f foo* bar* 
15423
15424 : check for type of arguments to select. 
15425 case "$selecttype" in
15426 '') case "$d_select" in
15427         $define)
15428                 echo " "
15429                 $cat <<EOM
15430 Checking to see what type of arguments are accepted by select().
15431 EOM
15432                 hdrs="$define sys/types.h
15433                         $i_systime sys/time.h 
15434                         $i_sysselct sys/select.h
15435                         $d_socket sys/socket.h"
15436                 : The first arg can be int, unsigned, or size_t
15437                 : The last arg may or may not be 'const'
15438                 val=''
15439                 : void pointer has been seen but using that
15440                 : breaks the selectminbits test
15441                 for xxx in 'fd_set *' 'int *'; do
15442                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15443                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
15444                                         case "$val" in
15445                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15446                                                 if ./protochk "$try" $hdrs; then
15447                                                         echo "Your system accepts $xxx."
15448                                                         val="$xxx"
15449                                                 fi
15450                                                 ;;
15451                                         esac
15452                                 done
15453                         done
15454                 done
15455                 case "$val" in
15456                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15457                         case "$d_fd_set" in
15458                                 $define) dflt="fd_set *" ;;
15459                                 *)              dflt="int *" ;;
15460                         esac
15461                         . ./myread
15462                         val=$ans
15463                         ;;
15464                 esac
15465                 selecttype="$val"
15466                 ;;
15467         *)      : no select, so pick a harmless default
15468                 selecttype='int *'
15469                 ;;
15470         esac
15471         ;;
15472 esac
15473
15474 : check for the select 'width'
15475 case "$selectminbits" in
15476 '') case "$d_select" in
15477         $define)
15478                 $cat <<EOM
15479
15480 Checking to see on how many bits at a time your select() operates...
15481 EOM
15482                 $cat >try.c <<EOCP
15483 #include <sys/types.h>
15484 #$i_time I_TIME
15485 #$i_systime I_SYS_TIME
15486 #$i_systimek I_SYS_TIME_KERNEL
15487 #ifdef I_TIME
15488 #   include <time.h>
15489 #endif
15490 #ifdef I_SYS_TIME
15491 #   ifdef I_SYS_TIME_KERNEL
15492 #       define KERNEL
15493 #   endif
15494 #   include <sys/time.h>
15495 #   ifdef I_SYS_TIME_KERNEL
15496 #       undef KERNEL
15497 #   endif
15498 #endif
15499 #$i_sysselct I_SYS_SELECT
15500 #ifdef I_SYS_SELECT
15501 #include <sys/select.h>
15502 #endif
15503 #$d_socket HAS_SOCKET
15504 #ifdef HAS_SOCKET
15505 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15506 #endif
15507 #include <stdio.h>
15508 $selecttype b;
15509 #define S sizeof(*(b))
15510 #define MINBITS 64
15511 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15512 #define NBITS  (NBYTES * 8)
15513 int main() {
15514     char s[NBYTES];
15515     struct timeval t;
15516     int i;
15517     FILE* fp;
15518     int fd;
15519
15520     fclose(stdin);
15521     fp = fopen("try.c", "r");
15522     if (fp == 0)
15523       exit(1);
15524     fd = fileno(fp);
15525     if (fd < 0)
15526       exit(2);
15527     b = ($selecttype)s;
15528     for (i = 0; i < NBITS; i++)
15529         FD_SET(i, b);
15530     t.tv_sec  = 0;
15531     t.tv_usec = 0;
15532     select(fd + 1, b, 0, 0, &t);
15533     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15534     printf("%d\n", i + 1);
15535     return 0;
15536 }
15537 EOCP
15538                 set try
15539                 if eval $compile_ok; then
15540                         selectminbits=`$run ./try`
15541                         case "$selectminbits" in
15542                         '')     cat >&4 <<EOM
15543 Cannot figure out on how many bits at a time your select() operates.
15544 I'll play safe and guess it is 32 bits.
15545 EOM
15546                                 selectminbits=32
15547                                 bits="32 bits"
15548                                 ;;
15549                         1)      bits="1 bit" ;;
15550                         *)      bits="$selectminbits bits" ;;
15551                         esac
15552                         echo "Your select() operates on $bits at a time." >&4
15553                 else
15554                         rp='What is the minimum number of bits your select() operates on?'
15555                         case "$byteorder" in
15556                         1234|12345678)  dflt=32 ;;
15557                         *)              dflt=1  ;;
15558                         esac
15559                         . ./myread
15560                         val=$ans
15561                         selectminbits="$val"
15562                 fi
15563                 $rm -f try.* try
15564                 ;;
15565         *)      : no select, so pick a harmless default
15566                 selectminbits='32'
15567                 ;;
15568         esac
15569         ;;
15570 esac
15571
15572 : Trace out the files included by signal.h, then look for SIGxxx names.
15573 : Remove SIGARRAYSIZE used by HPUX.
15574 : Remove SIGSTKSIZE used by Linux.
15575 : Remove SIGSTKSZ used by Posix.
15576 : Remove SIGTYP void lines used by OS2.
15577 : Some cpps, like os390, dont give the file name anywhere
15578 if [ "X$fieldn" = X ]; then
15579         : Just make some guesses.  We check them later.
15580         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15581 else
15582         xxx=`echo '#include <signal.h>' |
15583         $cppstdin $cppminus $cppflags 2>/dev/null |
15584         $grep '^[       ]*#.*include' | 
15585         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15586 fi
15587 : Check this list of files to be sure we have parsed the cpp output ok.
15588 : This will also avoid potentially non-existent files, such 
15589 : as ../foo/bar.h
15590 xxxfiles=''
15591 for xx in $xxx /dev/null ; do
15592         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15593 done
15594 : If we have found no files, at least try signal.h
15595 case "$xxxfiles" in
15596 '')     xxxfiles=`./findhdr signal.h` ;;
15597 esac
15598 xxx=`awk '
15599 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15600         print substr($2, 4, 20)
15601 }
15602 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15603         print substr($3, 4, 20)
15604 }' $xxxfiles`
15605 : Append some common names just in case the awk scan failed.
15606 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15607 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15608 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15609 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15610 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15611
15612 : generate a few handy files for later
15613 $cat > signal.c <<'EOCP'
15614 #include <sys/types.h>
15615 #include <signal.h>
15616 #include <stdio.h>
15617 int main() {
15618
15619 /* Strange style to avoid deeply-nested #if/#else/#endif */
15620 #ifndef NSIG
15621 #  ifdef _NSIG
15622 #    define NSIG (_NSIG)
15623 #  endif
15624 #endif
15625
15626 #ifndef NSIG
15627 #  ifdef SIGMAX
15628 #    define NSIG (SIGMAX+1)
15629 #  endif
15630 #endif
15631
15632 #ifndef NSIG
15633 #  ifdef SIG_MAX
15634 #    define NSIG (SIG_MAX+1)
15635 #  endif
15636 #endif
15637
15638 #ifndef NSIG
15639 #  ifdef MAXSIG
15640 #    define NSIG (MAXSIG+1)
15641 #  endif
15642 #endif
15643
15644 #ifndef NSIG
15645 #  ifdef MAX_SIG
15646 #    define NSIG (MAX_SIG+1)
15647 #  endif
15648 #endif
15649
15650 #ifndef NSIG
15651 #  ifdef SIGARRAYSIZE
15652 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15653 #  endif
15654 #endif
15655
15656 #ifndef NSIG
15657 #  ifdef _sys_nsig
15658 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15659 #  endif
15660 #endif
15661
15662 /* Default to some arbitrary number that's big enough to get most
15663    of the common signals.
15664 */
15665 #ifndef NSIG
15666 #    define NSIG 50
15667 #endif
15668
15669 printf("NSIG %d\n", NSIG);
15670
15671 #ifndef JUST_NSIG
15672
15673 EOCP
15674
15675 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15676 {
15677         printf "#ifdef SIG"; printf $1; printf "\n"
15678         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15679         printf $1; printf ");\n"
15680         printf "#endif\n"
15681 }
15682 END {
15683         printf "#endif /* JUST_NSIG */\n";
15684         printf "exit(0);\n}\n";
15685 }
15686 ' >>signal.c
15687 $cat >signal.awk <<'EOP'
15688 BEGIN { ndups = 0 }
15689 $1 ~ /^NSIG$/ { nsig = $2 }
15690 ($1 !~ /^NSIG$/) && (NF == 2) {
15691     if ($2 > maxsig) { maxsig = $2 }
15692     if (sig_name[$2]) {
15693         dup_name[ndups] = $1
15694         dup_num[ndups] = $2
15695         ndups++ 
15696     }
15697     else {
15698         sig_name[$2] = $1
15699         sig_num[$2] = $2
15700     }
15701 }
15702 END { 
15703     if (nsig == 0) {
15704         nsig = maxsig + 1
15705     }
15706     printf("NSIG %d\n", nsig);
15707     for (n = 1; n < nsig; n++) {
15708         if (sig_name[n]) {
15709             printf("%s %d\n", sig_name[n], sig_num[n])
15710         }
15711         else {
15712             printf("NUM%d %d\n", n, n) 
15713         }
15714     }
15715     for (n = 0; n < ndups; n++) {
15716         printf("%s %d\n", dup_name[n], dup_num[n])
15717     }
15718 }
15719 EOP
15720 $cat >signal_cmd <<EOS
15721 $startsh
15722 if $test -s signal.lst; then
15723     echo "Using your existing signal.lst file"
15724         exit 0
15725 fi
15726 xxx="$xxx"
15727 EOS
15728 $cat >>signal_cmd <<'EOS'
15729
15730 set signal
15731 if eval $compile_ok; then
15732         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
15733 else
15734         echo "(I can't seem be able to compile the whole test program)" >&4
15735         echo "(I'll try it in little pieces.)" >&4
15736         set signal -DJUST_NSIG
15737         if eval $compile_ok; then
15738                 $run ./signal$_exe > signal.nsg
15739                 $cat signal.nsg
15740         else
15741                 echo "I can't seem to figure out how many signals you have." >&4
15742                 echo "Guessing 50." >&4
15743                 echo 'NSIG 50' > signal.nsg
15744         fi
15745         : Now look at all the signal names, one at a time.
15746         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15747                 $cat > signal.c <<EOCP
15748 #include <sys/types.h>
15749 #include <signal.h>
15750 #include <stdio.h>
15751 int main() {
15752 printf("$xx %d\n", SIG${xx});
15753 return 0;
15754 }
15755 EOCP
15756                 set signal
15757                 if eval $compile; then
15758                         echo "SIG${xx} found."
15759                         $run ./signal$_exe  >> signal.ls1
15760                 else
15761                         echo "SIG${xx} NOT found."
15762                 fi
15763         done
15764         if $test -s signal.ls1; then
15765                 $cat signal.nsg signal.ls1 |
15766                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
15767         fi
15768
15769 fi
15770 if $test -s signal.lst; then
15771         :
15772 else
15773         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15774         echo 'kill -l' >signal
15775         set X `csh -f <signal`
15776         $rm -f signal
15777         shift
15778         case $# in
15779         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15780         esac
15781         echo $@ | $tr ' ' $trnl | \
15782             $awk '{ printf "%s %d\n", $1, ++s; }
15783                   END { printf "NSIG %d\n", ++s }' >signal.lst
15784 fi
15785 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15786 EOS
15787 chmod a+x signal_cmd
15788 $eunicefix signal_cmd
15789
15790 : generate list of signal names
15791 echo " "
15792 case "$sig_name_init" in
15793 '') doinit=yes ;;
15794 *)  case "$sig_num_init" in
15795     ''|*,*) doinit=yes ;;
15796     esac ;;
15797 esac
15798 case "$doinit" in
15799 yes)
15800         echo "Generating a list of signal names and numbers..." >&4
15801         . ./signal_cmd
15802         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15803         sig_name=`$awk 'BEGIN { printf "ZERO " }
15804                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15805         sig_num=`$awk  'BEGIN { printf "0 " }
15806                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15807         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15808                              !/^NSIG/   { printf "\"%s\", ", $1 }
15809                              END        { printf "0\n" }' signal.lst`
15810         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15811                              !/^NSIG/   { printf "%d, ", $2}
15812                              END        { printf "0\n"}' signal.lst`
15813         ;;
15814 esac
15815 echo "The following $sig_count signals are available:"
15816 echo " "
15817 echo $sig_name | $awk \
15818 'BEGIN { linelen = 0 }
15819 {
15820         for (i = 1; i <= NF; i++) {
15821                 name = "SIG" $i " "
15822                 linelen = linelen + length(name)
15823                 if (linelen > 70) {
15824                         printf "\n"
15825                         linelen = length(name)
15826                 }
15827                 printf "%s", name
15828         }
15829         printf "\n"
15830 }'
15831 sig_size=`echo $sig_name | awk '{print NF}'`
15832 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15833
15834 echo " "
15835 case "$sizetype" in
15836 *_t) zzz="$sizetype"    ;;
15837 *)   zzz="filesize"     ;;
15838 esac
15839 echo "Checking the size of $zzz..." >&4 
15840 cat > try.c <<EOCP
15841 #include <sys/types.h>
15842 #include <stdio.h>
15843 int main() {
15844     printf("%d\n", (int)sizeof($sizetype));
15845     exit(0);
15846 }
15847 EOCP
15848 set try
15849 if eval $compile_ok; then
15850         yyy=`$run ./try`
15851         case "$yyy" in
15852         '')     sizesize=4
15853                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15854                 ;;
15855         *)      sizesize=$yyy
15856                 echo "Your $zzz size is $sizesize bytes."
15857                 ;;
15858         esac
15859 else
15860         sizesize=4
15861         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15862 fi
15863
15864
15865 : check for socklen_t
15866 echo " "
15867 echo "Checking to see if you have socklen_t..." >&4
15868 $cat >try.c <<EOCP
15869 #include <sys/types.h>
15870 #$d_socket HAS_SOCKET
15871 #ifdef HAS_SOCKET
15872 #include <sys/socket.h>
15873 #endif
15874 int main() { socklen_t x = 16; }
15875 EOCP
15876 set try
15877 if eval $compile; then
15878         val="$define"
15879         echo "You have socklen_t."
15880 else
15881         val="$undef"
15882         echo "You do not have socklen_t."
15883         case "$sizetype" in
15884         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15885         esac
15886 fi
15887 $rm -f try try.*
15888 set d_socklen_t
15889 eval $setvar
15890
15891 : see if this is a socks.h system
15892 set socks.h i_socks
15893 eval $inhdr
15894
15895 : check for type of the size argument to socket calls
15896 case "$d_socket" in
15897 "$define")
15898         $cat <<EOM
15899
15900 Checking to see what type is the last argument of accept().
15901 EOM
15902         yyy=''
15903         case "$d_socklen_t" in
15904         "$define") yyy="$yyy socklen_t"
15905         esac
15906         yyy="$yyy $sizetype int long unsigned"
15907         for xxx in $yyy; do
15908                 case "$socksizetype" in
15909                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15910                         case "$usesocks" in
15911                         "$define")
15912                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15913                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15914                                         socksizetype="$xxx"
15915                                 fi
15916                                 ;;
15917                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15918                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15919                                         socksizetype="$xxx"
15920                                 fi
15921                                 ;;
15922                         esac
15923                         ;;
15924                 esac
15925         done
15926 : In case none of those worked, prompt the user.
15927         case "$socksizetype" in
15928         '')     rp='What is the type for socket address structure sizes?'
15929                 dflt='int'
15930                 . ./myread
15931                 socksizetype=$ans
15932                 ;;
15933         esac
15934         ;;
15935 *)      : no sockets, so pick relatively harmless default
15936         socksizetype='int'
15937         ;;
15938 esac
15939
15940 : see what type is used for signed size_t
15941 set ssize_t ssizetype int stdio.h sys/types.h
15942 eval $typedef
15943 dflt="$ssizetype"
15944 $cat > try.c <<EOM
15945 #include <stdio.h>
15946 #include <sys/types.h>
15947 #define Size_t $sizetype
15948 #define SSize_t $dflt
15949 int main()
15950 {
15951         if (sizeof(Size_t) == sizeof(SSize_t))
15952                 printf("$dflt\n");
15953         else if (sizeof(Size_t) == sizeof(int))
15954                 printf("int\n");
15955         else 
15956                 printf("long\n");
15957         exit(0);
15958 }
15959 EOM
15960 echo " "
15961 set try
15962 if eval $compile_ok && $run ./try > /dev/null; then
15963         ssizetype=`$run ./try`
15964         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15965 else
15966         $cat >&4 <<EOM
15967 Help! I can't compile and run the ssize_t test program: please enlighten me!
15968 (This is probably a misconfiguration in your system or libraries, and
15969 you really ought to fix it.  Still, I'll try anyway.)
15970
15971 I need a type that is the same size as $sizetype, but is guaranteed to
15972 be signed.  Common values are ssize_t, int and long.
15973
15974 EOM
15975         rp="What signed type is the same size as $sizetype?"
15976         . ./myread
15977         ssizetype="$ans"
15978 fi
15979 $rm -f try try.*
15980
15981 : see what type of char stdio uses.
15982 echo " "
15983 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15984 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15985         echo "Your stdio uses unsigned chars." >&4
15986         stdchar="unsigned char"
15987 else
15988         echo "Your stdio uses signed chars." >&4
15989         stdchar="char"
15990 fi
15991 $rm -f stdioh
15992
15993
15994
15995 : see if time exists
15996 echo " "
15997 if test "X$d_time" = X -o X"$timetype" = X; then
15998     if set time val -f d_time; eval $csym; $val; then
15999                 echo 'time() found.' >&4
16000                 val="$define"
16001                 rp="What is the type returned by time() on this system?"
16002                 set time_t timetype long stdio.h sys/types.h
16003                 eval $typedef_ask
16004     else
16005                 echo 'time() not found, hope that will do.' >&4
16006                 val="$undef"
16007                 timetype='int';
16008     fi
16009     set d_time
16010     eval $setvar
16011 fi
16012
16013 : see what type uids are declared as in the kernel
16014 echo " "
16015 echo "Looking for the type for user ids returned by getuid()."
16016 set uid_t uidtype xxx stdio.h sys/types.h
16017 eval $typedef
16018 case "$uidtype" in
16019 xxx)
16020         xxx=`./findhdr sys/user.h`
16021         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
16022         case $1 in
16023         unsigned) dflt="$1 $2" ;;
16024         *) dflt="$1" ;;
16025         esac
16026         ;;
16027 *) dflt="$uidtype";;
16028 esac
16029 case "$uidtype" in
16030 uid_t)  echo "uid_t found." ;;
16031 *)      rp="What is the type for user ids returned by getuid()?"
16032         . ./myread
16033         uidtype="$ans"
16034         ;;
16035 esac
16036
16037 echo " "
16038 case "$uidtype" in
16039 *_t) zzz="$uidtype"     ;;
16040 *)   zzz="uid"          ;;
16041 esac
16042 echo "Checking the size of $zzz..." >&4 
16043 cat > try.c <<EOCP
16044 #include <sys/types.h>
16045 #include <stdio.h>
16046 int main() {
16047     printf("%d\n", (int)sizeof($uidtype));
16048     exit(0);
16049 }
16050 EOCP
16051 set try
16052 if eval $compile_ok; then
16053         yyy=`$run ./try`
16054         case "$yyy" in
16055         '')     uidsize=4
16056                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
16057                 ;;
16058         *)      uidsize=$yyy
16059                 echo "Your $zzz is $uidsize bytes long."
16060                 ;;
16061         esac
16062 else
16063         uidsize=4
16064         echo "(I can't compile the test program--guessing $uidsize.)" >&4
16065 fi
16066
16067 echo " "
16068 case "$uidtype" in
16069 *_t) zzz="$uidtype"     ;;
16070 *)   zzz="uid"          ;;
16071 esac
16072 echo "Checking the sign of $zzz..." >&4
16073 cat > try.c <<EOCP
16074 #include <sys/types.h>
16075 #include <stdio.h>
16076 int main() {
16077         $uidtype foo = -1;
16078         if (foo < 0)
16079                 printf("-1\n");
16080         else
16081                 printf("1\n");
16082 }
16083 EOCP
16084 set try
16085 if eval $compile; then
16086         yyy=`$run ./try`
16087         case "$yyy" in
16088         '')     uidsign=1
16089                 echo "(I can't execute the test program--guessing unsigned.)" >&4
16090                 ;;
16091         *)      uidsign=$yyy
16092                 case "$uidsign" in
16093                  1) echo "Your $zzz is unsigned." ;;
16094                 -1) echo "Your $zzz is signed."   ;;
16095                 esac
16096                 ;;
16097         esac
16098 else
16099         uidsign=1
16100         echo "(I can't compile the test program--guessing unsigned.)" >&4
16101 fi
16102
16103
16104
16105 echo " "
16106 $echo "Checking the format string to be used for uids..." >&4
16107
16108 case "$uidsign" in
16109 -1)     if $test X"$uidsize" = X"$ivsize"; then
16110                 uidformat="$ivdformat"
16111         else
16112                 if $test X"$uidsize" = X"$longsize"; then
16113                         uidformat='"ld"'
16114                 else
16115                         if $test X"$uidsize" = X"$intsize"; then
16116                                 uidformat='"d"'
16117                         else
16118                                 if $test X"$uidsize" = X"$shortsize"; then
16119                                         uidformat='"hd"'
16120                                 fi
16121                         fi
16122                 fi
16123         fi
16124         ;;
16125 *)      if $test X"$uidsize" = X"$uvsize"; then
16126                 uidformat="$uvuformat"
16127         else
16128                 if $test X"$uidsize" = X"$longsize"; then
16129                         uidformat='"lu"'
16130                 else
16131                         if $test X"$uidsize" = X"$intsize"; then
16132                                 uidformat='"u"'
16133                         else
16134                                 if $test X"$uidsize" = X"$shortsize"; then
16135                                         uidformat='"hu"'
16136                                 fi
16137                         fi
16138                 fi
16139         fi
16140         ;;
16141 esac
16142
16143 : determine compiler compiler
16144 case "$yacc" in
16145 '')
16146         dflt=yacc;;
16147 *)
16148         dflt="$yacc";;
16149 esac
16150 echo " "
16151 comp='yacc'
16152 if $test -f "$byacc$_exe"; then
16153         dflt="$byacc"
16154         comp="byacc or $comp"
16155 fi
16156 if $test -f "$bison$_exe"; then
16157         comp="$comp or bison -y"
16158 fi
16159 rp="Which compiler compiler ($comp) shall I use?"
16160 . ./myread
16161 yacc="$ans"
16162 case "$yacc" in
16163 *bis*)
16164         case "$yacc" in
16165         *-y*) ;;
16166         *)
16167                 yacc="$yacc -y"
16168                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
16169                 ;;
16170         esac
16171         ;;
16172 esac
16173
16174 : see if this is a fp.h system
16175 set fp.h i_fp
16176 eval $inhdr
16177
16178 : see if this is a fp_class.h system
16179 set fp_class.h i_fp_class
16180 eval $inhdr
16181
16182 : see if this is a ieeefp.h system
16183 case "$i_ieeefp" in
16184 '' ) set ieeefp.h i_ieeefp
16185      eval $inhdr
16186      ;;
16187 esac
16188
16189 : see if this is a libutil.h system
16190 set libutil.h i_libutil
16191 eval $inhdr
16192
16193 : see if locale.h is available
16194 set locale.h i_locale
16195 eval $inhdr
16196
16197 : see if mach cthreads are available
16198 if test "X$usethreads" = "X$define"; then
16199         set mach/cthreads.h i_machcthr
16200         eval $inhdr
16201 else
16202         i_machcthr="$undef"
16203 fi
16204
16205
16206
16207 : see if this is a math.h system
16208 set math.h i_math
16209 eval $inhdr
16210
16211 : see if this is a mntent.h system
16212 set mntent.h i_mntent
16213 eval $inhdr
16214
16215 : see if ndbm.h is available
16216 set ndbm.h t_ndbm
16217 eval $inhdr
16218
16219 case "$t_ndbm" in
16220 $undef)
16221     # Some Linux distributions such as RedHat 7.1 put the
16222     # ndbm.h header in /usr/include/gdbm/ndbm.h.
16223     if $test -f /usr/include/gdbm/ndbm.h; then
16224         echo '<gdbm/ndbm.h> found.'
16225         ccflags="$ccflags -I/usr/include/gdbm"
16226         cppflags="$cppflags -I/usr/include/gdbm"
16227         t_ndbm=$define
16228     fi
16229     ;;
16230 esac
16231
16232 case "$t_ndbm" in
16233 $define)
16234         : see if dbm_open exists
16235         set dbm_open d_dbm_open
16236         eval $inlibc
16237         case "$d_dbm_open" in
16238         $undef)
16239                 t_ndbm="$undef"
16240                 echo "We won't be including <ndbm.h>"
16241                 ;;
16242         esac
16243         ;;
16244 esac
16245 val="$t_ndbm"
16246 set i_ndbm
16247 eval $setvar
16248
16249 : see if net/errno.h is available
16250 val=''
16251 set net/errno.h val
16252 eval $inhdr
16253
16254 : Unfortunately, it causes problems on some systems.  Arrgh.
16255 case "$val" in
16256 $define)
16257         cat > try.c <<'EOM'
16258 #include <stdio.h>
16259 #include <errno.h>
16260 #include <net/errno.h>
16261 int func()
16262 {
16263         return ENOTSOCK;
16264 }
16265 EOM
16266         if $cc $ccflags -c try.c >/dev/null 2>&1; then
16267                 echo "We'll be including <net/errno.h>." >&4
16268         else
16269                 echo "We won't be including <net/errno.h>." >&4
16270                 val="$undef"
16271         fi
16272         $rm -f try.* try
16273         ;;
16274 esac
16275 set i_neterrno
16276 eval $setvar
16277
16278 : see if netinet/tcp.h is available
16279 set netinet/tcp.h i_netinettcp
16280 eval $inhdr
16281
16282 : see if this is a poll.h system
16283 set poll.h i_poll
16284 eval $inhdr
16285
16286 : see if this is a prot.h system
16287 set prot.h i_prot
16288 eval $inhdr
16289
16290 echo " "
16291 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
16292 $cat <<'EOSH' > Cppsym.know
16293 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
16294 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
16295 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
16296 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
16297 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
16298 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
16299 bull c cadmus clipper CMU COFF COMPILER_VERSION
16300 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
16301 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
16302 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
16303 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
16304 GLIBC GLIBC_MINOR
16305 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
16306 H3050R H3050RX hbullx20 hcx host_mips
16307 hp200 hp300 hp700 HP700 hp800 hp9000
16308 hp9000s200 hp9000s300 hp9000s400 hp9000s500
16309 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
16310 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
16311 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
16312 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
16313 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
16314 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
16315 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
16316 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
16317 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
16318 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
16319 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
16320 MATH_HAS_NO_SIDE_EFFECTS
16321 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
16322 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
16323 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
16324 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
16325 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
16326 NetBSD news1500 news1700 news1800 news1900 news3700
16327 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
16328 ns32016 ns32332 ns32k nsc32000
16329 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
16330 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
16331 pc532 pdp11 PGC PIC plexus PORTAR posix
16332 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
16333 POSIX_C_SOURCE POSIX_SOURCE POWER
16334 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
16335 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
16336 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
16337 sony sony_news sonyrisc sparc sparclite spectrum
16338 stardent stdc STDC_EXT stratos sun sun3 sun386
16339 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
16340 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
16341 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
16342 sysV68 sysV88 Tek4132 Tek4300 titan
16343 TM3200 TM5400 TM5600
16344 tower tower32 tower32_200 tower32_600 tower32_700
16345 tower32_800 tower32_850 tss
16346 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
16347 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
16348 unix UNIX95 UNIX99 unixpc unos
16349 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
16350 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
16351 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
16352 USGr4 USGr4_2
16353 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
16354 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
16355 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
16356 z8000
16357 EOSH
16358 # Maybe put other stuff here too.
16359 cat <<EOSH >>Cppsym.know
16360 $osname
16361 EOSH
16362 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
16363 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
16364 $cat Cppsym.know > Cppsym.c
16365 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
16366 $rm -f Cppsym.a Cppsym.b Cppsym.c
16367 cat <<EOSH > Cppsym
16368 $startsh
16369 if $test \$# -gt 0; then
16370     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
16371     if $test -s Cppsym.got; then
16372         $rm -f Cppsym.got
16373         exit 0
16374     fi
16375     $rm -f Cppsym.got
16376     exit 1
16377 else
16378     $tr " " "$trnl" | ./Cppsym.try
16379     exit 0
16380 fi
16381 EOSH
16382 chmod +x Cppsym
16383 $eunicefix Cppsym
16384 cat <<EOSH > Cppsym.try
16385 $startsh
16386 cat <<'EOCP' > try.c
16387 #include <stdio.h>
16388 int main() {
16389 EOCP
16390 $awk \\
16391 EOSH
16392 cat <<'EOSH' >> Cppsym.try
16393 'length($1) > 0 {
16394     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
16395     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
16396     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
16397     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
16398 }'       >> try.c
16399 echo 'return 0;}' >> try.c
16400 EOSH
16401 cat <<EOSH >> Cppsym.try
16402 ccflags="$ccflags"
16403 case "$osname-$gccversion" in
16404 irix-) ccflags="\$ccflags -woff 1178" ;;
16405 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16406 esac
16407 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
16408 EOSH
16409 chmod +x Cppsym.try
16410 $eunicefix Cppsym.try
16411 ./Cppsym < Cppsym.know > Cppsym.true
16412 : now check the C compiler for additional symbols
16413 postprocess_cc_v=''
16414 case "$osname" in
16415 aix) postprocess_cc_v="|$tr , ' '" ;;
16416 esac
16417 $cat >ccsym <<EOS
16418 $startsh
16419 $cat >tmp.c <<EOF
16420 extern int foo;
16421 EOF
16422 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16423 do
16424         case "\$i" in
16425         -D*) echo "\$i" | $sed 's/^-D//';;
16426         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16427         esac
16428 done
16429 $rm -f try.c
16430 EOS
16431 postprocess_cc_v=''
16432 chmod +x ccsym
16433 $eunicefix ccsym
16434 ./ccsym > ccsym1.raw
16435 if $test -s ccsym1.raw; then
16436        $sort ccsym1.raw | $uniq >ccsym.raw
16437 else
16438        mv ccsym1.raw ccsym.raw
16439 fi
16440
16441 $awk '/\=/ { print $0; next }
16442         { print $0"=1" }' ccsym.raw >ccsym.list
16443 $awk '/\=/ { print $0; next }
16444         { print $0"=1" }' Cppsym.true >ccsym.true
16445 $comm -13 ccsym.true ccsym.list >ccsym.own
16446 $comm -12 ccsym.true ccsym.list >ccsym.com
16447 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16448 also=''
16449 if $test -z ccsym.raw; then
16450         echo "Your C compiler doesn't seem to define any symbols!" >&4
16451         echo " "
16452         echo "However, your C preprocessor defines the following symbols:"
16453         $cat Cppsym.true
16454         ccsymbols=''
16455         cppsymbols=`$cat Cppsym.true`
16456         cppsymbols=`echo $cppsymbols`
16457         cppccsymbols="$cppsymbols"
16458 else
16459         if $test -s ccsym.com; then
16460                 echo "Your C compiler and pre-processor define these symbols:"
16461                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16462                 also='also '
16463                 symbols='ones'
16464                 cppccsymbols=`$cat ccsym.com`
16465                 cppccsymbols=`echo $cppccsymbols`
16466                 $test "$silent" || sleep 1
16467         fi
16468         if $test -s ccsym.cpp; then
16469                 $test "$also" && echo " "
16470                 echo "Your C pre-processor ${also}defines the following symbols:"
16471                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16472                 also='further '
16473                 cppsymbols=`$cat ccsym.cpp`
16474                 cppsymbols=`echo $cppsymbols`
16475                 $test "$silent" || sleep 1
16476         fi
16477         if $test -s ccsym.own; then
16478                 $test "$also" && echo " "
16479                 echo "Your C compiler ${also}defines the following cpp symbols:"
16480                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16481                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16482                 ccsymbols=`$cat ccsym.own`
16483                 ccsymbols=`echo $ccsymbols`
16484                 $test "$silent" || sleep 1
16485         fi
16486 fi
16487
16488 : see if this is a termio system
16489 val="$undef"
16490 val2="$undef"
16491 val3="$undef"
16492 if $test `./findhdr termios.h`; then
16493         set tcsetattr i_termios
16494         eval $inlibc
16495         val3="$i_termios"
16496 fi
16497 echo " "
16498 case "$val3" in
16499 "$define") echo "You have POSIX termios.h... good!" >&4;;
16500 *) if ./Cppsym pyr; then
16501                 case "`/bin/universe`" in
16502                 ucb) if $test `./findhdr sgtty.h`; then
16503                                 val2="$define"
16504                                 echo "<sgtty.h> found." >&4
16505                         else
16506                                 echo "System is pyramid with BSD universe."
16507                                 echo "<sgtty.h> not found--you could have problems." >&4
16508                         fi;;
16509                 *) if $test `./findhdr termio.h`; then
16510                                 val="$define"
16511                                 echo "<termio.h> found." >&4
16512                         else
16513                                 echo "System is pyramid with USG universe."
16514                                 echo "<termio.h> not found--you could have problems." >&4
16515                         fi;;
16516                 esac
16517         elif ./usg; then
16518                 if $test `./findhdr termio.h`; then
16519                         echo "<termio.h> found." >&4
16520                         val="$define"
16521                 elif $test `./findhdr sgtty.h`; then
16522                         echo "<sgtty.h> found." >&4
16523                         val2="$define"
16524                 else
16525 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16526                 fi
16527         else
16528                 if $test `./findhdr sgtty.h`; then
16529                         echo "<sgtty.h> found." >&4
16530                         val2="$define"
16531                 elif $test `./findhdr termio.h`; then
16532                         echo "<termio.h> found." >&4
16533                         val="$define"
16534                 else
16535 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16536                 fi
16537         fi;;
16538 esac
16539 set i_termio; eval $setvar
16540 val=$val2; set i_sgtty; eval $setvar
16541 val=$val3; set i_termios; eval $setvar
16542
16543 : see if this is a shadow.h system
16544 set shadow.h i_shadow
16545 eval $inhdr
16546
16547 : see if stddef is available
16548 set stddef.h i_stddef
16549 eval $inhdr
16550
16551 : see if this is a sunmath.h system
16552 set sunmath.h i_sunmath
16553 eval $inhdr
16554
16555 : see if sys/access.h is available
16556 set sys/access.h i_sysaccess
16557 eval $inhdr
16558
16559 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16560 set sys/filio.h i_sysfilio
16561 eval $inhdr
16562 echo " "
16563 if $test `./findhdr sys/ioctl.h`; then
16564         val="$define"
16565         echo '<sys/ioctl.h> found.' >&4
16566 else
16567         val="$undef"
16568         if $test $i_sysfilio = "$define"; then
16569             echo '<sys/ioctl.h> NOT found.' >&4
16570         else
16571                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16572                 $test $i_termio = "$define" && xxx="termio.h"
16573                 $test $i_termios = "$define" && xxx="termios.h"
16574 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16575         fi
16576 fi
16577 set i_sysioctl
16578 eval $setvar
16579
16580 : see if socket ioctl defs are in sys/sockio.h
16581 echo " "
16582 xxx=`./findhdr sys/sockio.h`
16583 if $test "$xxx"; then
16584         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16585                 val="$define"
16586                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16587         else
16588                 val="$undef"
16589                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16590         fi
16591 else
16592         val="$undef"
16593         $cat <<EOM
16594 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16595 EOM
16596 fi
16597 set i_syssockio
16598 eval $setvar
16599
16600
16601 : see if this is a syslog.h system
16602 set syslog.h i_syslog
16603 eval $inhdr
16604
16605
16606 : see if this is a sys/mode.h system
16607 set sys/mode.h i_sysmode
16608 eval $inhdr
16609
16610 : see if sys/resource.h has to be included
16611 set sys/resource.h i_sysresrc
16612 eval $inhdr
16613
16614 : see if sys/security.h is available
16615 set sys/security.h i_syssecrt
16616 eval $inhdr
16617
16618 : see if this is a sys/statvfs.h system
16619 set sys/statvfs.h i_sysstatvfs
16620 eval $inhdr
16621
16622 : see if this is a sys/un.h system
16623 set sys/un.h i_sysun
16624 eval $inhdr
16625
16626
16627 : see if this is a sys/utsname.h system
16628 set sys/utsname.h i_sysutsname
16629 eval $inhdr
16630
16631 : see if this is a syswait system
16632 set sys/wait.h i_syswait
16633 eval $inhdr
16634
16635 : see if this is a ustat.h system
16636 set ustat.h i_ustat
16637 eval $inhdr
16638
16639 : see if this is an utime system
16640 set utime.h i_utime
16641 eval $inhdr
16642
16643 : see if this is a values.h system
16644 set values.h i_values
16645 eval $inhdr
16646
16647 : see if this is a vfork system
16648 case "$d_vfork" in
16649 "$define")
16650         set vfork.h i_vfork
16651         eval $inhdr
16652         ;;
16653 *)
16654         i_vfork="$undef"
16655         ;;
16656 esac
16657
16658 : see if gdbm.h is available
16659 set gdbm.h t_gdbm
16660 eval $inhdr
16661 case "$t_gdbm" in
16662 $define)
16663         : see if gdbm_open exists
16664         set gdbm_open d_gdbm_open
16665         eval $inlibc
16666         case "$d_gdbm_open" in
16667         $undef)
16668                 t_gdbm="$undef"
16669                 echo "We won't be including <gdbm.h>"
16670                 ;;
16671         esac
16672         ;;
16673 esac
16674 val="$t_gdbm"
16675 set i_gdbm
16676 eval $setvar
16677
16678 echo " "
16679 echo "Looking for extensions..." >&4
16680 : If we are using the old config.sh, known_extensions may contain
16681 : old or inaccurate or duplicate values.
16682 known_extensions=''
16683 nonxs_extensions=''
16684 : We do not use find because it might not be available.
16685 : We do not just use MANIFEST because the user may have dropped
16686 : some additional extensions into the source tree and expect them
16687 : to be built.
16688
16689 : Function to recursively find available extensions, ignoring DynaLoader
16690 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16691 find_extensions='
16692     for xxx in *; do
16693        case "$xxx" in
16694            DynaLoader|dynaload) ;;
16695            *)
16696            if $test -f $xxx/$xxx.xs; then
16697                known_extensions="$known_extensions $1$xxx";
16698            elif $test -f $xxx/Makefile.PL; then
16699                nonxs_extensions="$nonxs_extensions $1$xxx";
16700            else
16701                if $test -d $xxx -a $# -lt 10; then
16702                    set $1$xxx/ $*;
16703                    cd "$xxx";
16704                    eval $find_extensions;
16705                    cd ..;
16706                    shift;
16707                fi;
16708            fi
16709            ;;
16710        esac;
16711     done'
16712 tdir=`pwd`
16713 cd "$rsrc/ext"
16714 set X
16715 shift
16716 eval $find_extensions
16717 # Special case:  Add in threads/shared since it is not picked up by the
16718 # recursive find above (and adding in general recursive finding breaks
16719 # SDBM_File/sdbm).  A.D.  10/25/2001.
16720 # Encode::XX need explicit mentions for the same reason.
16721 # --jhi 2002-03-04
16722 known_extensions="$known_extensions threads/shared Encode/CN Encode/JP Encode/KR Encode/TW"
16723 set X $nonxs_extensions
16724 shift
16725 nonxs_extensions="$*"
16726 set X $known_extensions
16727 shift
16728 known_extensions="$*"
16729 cd "$tdir"
16730
16731 : Now see which are supported on this system.
16732 avail_ext=''
16733 for xxx in $known_extensions ; do
16734         case "$xxx" in
16735         DB_File|db_file)
16736                 case "$i_db" in
16737                 $define) avail_ext="$avail_ext $xxx" ;;
16738                 esac
16739                 ;;
16740         GDBM_File|gdbm_fil)
16741                 case "$i_gdbm" in 
16742                 $define) avail_ext="$avail_ext $xxx" ;;
16743                 esac
16744                 ;;
16745         I18N/Langinfo|i18n_lan)
16746                 case "$i_langinfo$d_nl_langinfo" in 
16747                 $define$define) avail_ext="$avail_ext $xxx" ;;
16748                 esac
16749                 ;;
16750         NDBM_File|ndbm_fil)
16751                 case "$i_ndbm" in
16752                 $define)
16753                     case "$osname-$use64bitint" in
16754                     cygwin-*|hpux-define)
16755                         case "$libs" in
16756                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16757                         esac
16758                         ;;
16759                     *) avail_ext="$avail_ext $xxx" ;;
16760                     esac
16761                     ;;
16762                 esac
16763                 ;;
16764         ODBM_File|odbm_fil) 
16765                 case "${i_dbm}${i_rpcsvcdbm}" in
16766                 *"${define}"*)
16767                     case "$osname-$use64bitint" in
16768                     cygwin-*|hpux-define)
16769                         case "$libs" in
16770                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16771                         esac
16772                         ;;
16773                     *) avail_ext="$avail_ext $xxx" ;;
16774                     esac
16775                     ;;
16776                 esac
16777                 ;;
16778         POSIX|posix)
16779                 case "$useposix" in
16780                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16781                 esac
16782                 ;;
16783         Opcode|opcode)
16784                 case "$useopcode" in
16785                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16786                 esac
16787                 ;;
16788         Socket|socket)
16789                 case "$d_socket" in 
16790                 true|$define|y)
16791                     case "$osname" in
16792                     beos) ;; # not unless BONE
16793                     *) avail_ext="$avail_ext $xxx" ;;
16794                     esac
16795                     ;;
16796                 esac
16797                 ;;
16798         Sys/Syslog|sys/syslog)
16799                 : XXX syslog requires socket
16800                 case "$d_socket" in 
16801                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16802                 esac
16803                 ;;
16804         Thread|thread)
16805                 case "$usethreads" in
16806                 true|$define|y)
16807                         case "$useithreads" in
16808                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16809                         esac
16810                 esac
16811                 ;;
16812         threads|threads/shared)
16813                 case "$usethreads" in
16814                 true|$define|y)
16815                         case "$useithreads" in
16816                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16817                         esac
16818                 esac
16819                 ;;
16820         IPC/SysV|ipc/sysv)
16821                 : XXX Do we need a useipcsysv variable here
16822                 case "${d_msg}${d_sem}${d_shm}" in 
16823                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16824                 esac
16825                 ;;
16826         *)      avail_ext="$avail_ext $xxx"
16827                 ;;
16828         esac
16829 done
16830
16831 set X $avail_ext
16832 shift
16833 avail_ext="$*"
16834
16835 : Now see which nonxs extensions are supported on this system.
16836 : For now assume all are.
16837 nonxs_ext=''
16838 for xxx in $nonxs_extensions ; do
16839         case "$xxx" in
16840         *)      nonxs_ext="$nonxs_ext $xxx"
16841                 ;;
16842         esac
16843 done
16844
16845 set X $nonxs_ext
16846 shift
16847 nonxs_ext="$*"
16848
16849 case $usedl in
16850 $define)
16851         $cat <<EOM
16852 A number of extensions are supplied with $package.  You may choose to
16853 compile these extensions for dynamic loading (the default), compile
16854 them into the $package executable (static loading), or not include
16855 them at all.  Answer "none" to include no extensions.
16856 Note that DynaLoader is always built and need not be mentioned here.
16857
16858 EOM
16859         case "$dynamic_ext" in
16860         '') dflt="$avail_ext" ;;
16861         *)      dflt="$dynamic_ext"
16862                 # Perhaps we are reusing an old out-of-date config.sh.
16863                 case "$hint" in
16864                 previous)
16865                         if test X"$dynamic_ext" != X"$avail_ext"; then
16866                                 $cat <<EOM
16867 NOTICE:  Your previous config.sh list may be incorrect. 
16868 The extensions now available to you are 
16869         ${avail_ext}
16870 but the default list from your previous config.sh is
16871         ${dynamic_ext} 
16872
16873 EOM
16874                         fi
16875                         ;;
16876                 esac
16877                 ;;
16878         esac
16879         case "$dflt" in
16880         '')     dflt=none;;
16881         esac
16882         rp="What extensions do you wish to load dynamically?"
16883         . ./myread
16884         case "$ans" in
16885         none) dynamic_ext=' ' ;;
16886         *) dynamic_ext="$ans" ;;
16887         esac
16888
16889         case "$static_ext" in
16890         '')
16891                 : Exclude those already listed in dynamic linking
16892                 dflt=''
16893                 for xxx in $avail_ext; do
16894                         case " $dynamic_ext " in
16895                         *" $xxx "*) ;;
16896                         *) dflt="$dflt $xxx" ;;
16897                         esac
16898                 done
16899                 set X $dflt
16900                 shift
16901                 dflt="$*"
16902                 ;;
16903         *)  dflt="$static_ext" 
16904                 ;;
16905         esac
16906
16907         case "$dflt" in
16908         '')     dflt=none;;
16909         esac
16910         rp="What extensions do you wish to load statically?"
16911         . ./myread
16912         case "$ans" in
16913         none) static_ext=' ' ;;
16914         *) static_ext="$ans" ;;
16915         esac
16916         ;;
16917 *)
16918         $cat <<EOM
16919 A number of extensions are supplied with $package.  Answer "none" 
16920 to include no extensions. 
16921 Note that DynaLoader is always built and need not be mentioned here.
16922
16923 EOM
16924         case "$static_ext" in
16925         '') dflt="$avail_ext" ;;
16926         *)      dflt="$static_ext"
16927                 # Perhaps we are reusing an old out-of-date config.sh.
16928                 case "$hint" in
16929                 previous)
16930                         if test X"$static_ext" != X"$avail_ext"; then
16931                                 $cat <<EOM
16932 NOTICE:  Your previous config.sh list may be incorrect. 
16933 The extensions now available to you are 
16934         ${avail_ext}
16935 but the default list from your previous config.sh is
16936         ${static_ext} 
16937
16938 EOM
16939                         fi
16940                         ;;
16941                 esac
16942                 ;;
16943         esac
16944         : Exclude those that are not xs extensions
16945         case "$dflt" in
16946         '')     dflt=none;;
16947         esac
16948         rp="What extensions do you wish to include?"
16949         . ./myread
16950         case "$ans" in
16951         none) static_ext=' ' ;;
16952         *) static_ext="$ans" ;;
16953         esac
16954         ;;
16955 esac
16956
16957 set X $dynamic_ext $static_ext $nonxs_ext
16958 shift
16959 extensions="$*"
16960
16961 : Remove libraries needed only for extensions
16962 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16963 : The exception is SunOS 4.x, which needs them.
16964 case "${osname}X${osvers}" in
16965 sunos*X4*)
16966     perllibs="$libs"
16967     ;;
16968 *) case "$usedl" in
16969     $define|true|[yY]*)
16970             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16971             shift
16972             perllibs="$*"
16973             ;;
16974     *)  perllibs="$libs"
16975             ;;
16976     esac
16977     ;;
16978 esac
16979
16980 : Remove build directory name from cppstdin so it can be used from
16981 : either the present location or the final installed location.
16982 echo " "
16983 : Get out of the UU directory to get correct path name.
16984 cd ..
16985 case "$cppstdin" in
16986 `pwd`/cppstdin)
16987         echo "Stripping down cppstdin path name"
16988         cppstdin=cppstdin
16989         ;;
16990 esac
16991 cd UU
16992
16993 : end of configuration questions
16994 echo " "
16995 echo "End of configuration questions."
16996 echo " "
16997
16998 : back to where it started
16999 if test -d ../UU; then
17000         cd ..
17001 fi
17002
17003 : configuration may be patched via a 'config.arch' file
17004 if $test -f config.arch; then
17005         echo "I see a config.arch file, loading it."
17006         . ./config.arch
17007 fi
17008
17009 : configuration may be patched via a 'config.over' file
17010 if $test -f config.over; then
17011         echo " "
17012         dflt=y
17013         rp='I see a config.over file.  Do you wish to load it?'
17014         . UU/myread
17015         case "$ans" in
17016         n*) echo "OK, I'll ignore it.";;
17017         *)      . ./config.over
17018                 echo "Configuration override changes have been loaded."
17019                 ;;
17020         esac
17021 fi
17022
17023 : in case they want portability, strip down executable paths
17024 case "$d_portable" in
17025 "$define")
17026         echo " "
17027         echo "Stripping down executable paths..." >&4
17028         for file in $loclist $trylist; do
17029                 eval temp=\$$file
17030                 eval $file=`basename $temp`
17031         done
17032         ;;
17033 esac
17034
17035 : create config.sh file
17036 echo " "
17037 echo "Creating config.sh..." >&4
17038 $spitshell <<EOT >config.sh
17039 $startsh
17040 #
17041 # This file was produced by running the Configure script. It holds all the
17042 # definitions figured out by Configure. Should you modify one of these values,
17043 # do not forget to propagate your changes by running "Configure -der". You may
17044 # instead choose to run each of the .SH files by yourself, or "Configure -S".
17045 #
17046
17047 # Package name      : $package
17048 # Source directory  : $src
17049 # Configuration time: $cf_time
17050 # Configured by     : $cf_by
17051 # Target system     : $myuname
17052
17053 Author='$Author'
17054 Date='$Date'
17055 Header='$Header'
17056 Id='$Id'
17057 Locker='$Locker'
17058 Log='$Log'
17059 Mcc='$Mcc'
17060 RCSfile='$RCSfile'
17061 Revision='$Revision'
17062 Source='$Source'
17063 State='$State'
17064 _a='$_a'
17065 _exe='$_exe'
17066 _o='$_o'
17067 afs='$afs'
17068 afsroot='$afsroot'
17069 alignbytes='$alignbytes'
17070 ansi2knr='$ansi2knr'
17071 aphostname='$aphostname'
17072 api_revision='$api_revision'
17073 api_subversion='$api_subversion'
17074 api_version='$api_version'
17075 api_versionstring='$api_versionstring'
17076 ar='$ar'
17077 archlib='$archlib'
17078 archlibexp='$archlibexp'
17079 archname64='$archname64'
17080 archname='$archname'
17081 archobjs='$archobjs'
17082 awk='$awk'
17083 baserev='$baserev'
17084 bash='$bash'
17085 bin='$bin'
17086 bincompat5005='$bincompat5005'
17087 binexp='$binexp'
17088 bison='$bison'
17089 byacc='$byacc'
17090 byteorder='$byteorder'
17091 c='$c'
17092 castflags='$castflags'
17093 cat='$cat'
17094 cc='$cc'
17095 cccdlflags='$cccdlflags'
17096 ccdlflags='$ccdlflags'
17097 ccflags='$ccflags'
17098 ccflags_uselargefiles='$ccflags_uselargefiles'
17099 ccname='$ccname'
17100 ccsymbols='$ccsymbols'
17101 ccversion='$ccversion'
17102 cf_by='$cf_by'
17103 cf_email='$cf_email'
17104 cf_time='$cf_time'
17105 charsize='$charsize'
17106 chgrp='$chgrp'
17107 chmod='$chmod'
17108 chown='$chown'
17109 clocktype='$clocktype'
17110 comm='$comm'
17111 compress='$compress'
17112 contains='$contains'
17113 cp='$cp'
17114 cpio='$cpio'
17115 cpp='$cpp'
17116 cpp_stuff='$cpp_stuff'
17117 cppccsymbols='$cppccsymbols'
17118 cppflags='$cppflags'
17119 cpplast='$cpplast'
17120 cppminus='$cppminus'
17121 cpprun='$cpprun'
17122 cppstdin='$cppstdin'
17123 cppsymbols='$cppsymbols'
17124 cryptlib='$cryptlib'
17125 csh='$csh'
17126 d_Gconvert='$d_Gconvert'
17127 d_PRIEUldbl='$d_PRIEUldbl'
17128 d_PRIFUldbl='$d_PRIFUldbl'
17129 d_PRIGUldbl='$d_PRIGUldbl'
17130 d_PRIXU64='$d_PRIXU64'
17131 d_PRId64='$d_PRId64'
17132 d_PRIeldbl='$d_PRIeldbl'
17133 d_PRIfldbl='$d_PRIfldbl'
17134 d_PRIgldbl='$d_PRIgldbl'
17135 d_PRIi64='$d_PRIi64'
17136 d_PRIo64='$d_PRIo64'
17137 d_PRIu64='$d_PRIu64'
17138 d_PRIx64='$d_PRIx64'
17139 d_SCNfldbl='$d_SCNfldbl'
17140 d__fwalk='$d__fwalk'
17141 d_access='$d_access'
17142 d_accessx='$d_accessx'
17143 d_alarm='$d_alarm'
17144 d_archlib='$d_archlib'
17145 d_atolf='$d_atolf'
17146 d_atoll='$d_atoll'
17147 d_attribut='$d_attribut'
17148 d_bcmp='$d_bcmp'
17149 d_bcopy='$d_bcopy'
17150 d_bincompat5005='$d_bincompat5005'
17151 d_bsd='$d_bsd'
17152 d_bsdgetpgrp='$d_bsdgetpgrp'
17153 d_bsdsetpgrp='$d_bsdsetpgrp'
17154 d_bzero='$d_bzero'
17155 d_casti32='$d_casti32'
17156 d_castneg='$d_castneg'
17157 d_charvspr='$d_charvspr'
17158 d_chown='$d_chown'
17159 d_chroot='$d_chroot'
17160 d_chsize='$d_chsize'
17161 d_class='$d_class'
17162 d_closedir='$d_closedir'
17163 d_cmsghdr_s='$d_cmsghdr_s'
17164 d_const='$d_const'
17165 d_crypt='$d_crypt'
17166 d_csh='$d_csh'
17167 d_cuserid='$d_cuserid'
17168 d_dbl_dig='$d_dbl_dig'
17169 d_dbminitproto='$d_dbminitproto'
17170 d_difftime='$d_difftime'
17171 d_dirfd='$d_dirfd'
17172 d_dirnamlen='$d_dirnamlen'
17173 d_dlerror='$d_dlerror'
17174 d_dlopen='$d_dlopen'
17175 d_dlsymun='$d_dlsymun'
17176 d_dosuid='$d_dosuid'
17177 d_drand48proto='$d_drand48proto'
17178 d_dup2='$d_dup2'
17179 d_eaccess='$d_eaccess'
17180 d_endgrent='$d_endgrent'
17181 d_endhent='$d_endhent'
17182 d_endnent='$d_endnent'
17183 d_endpent='$d_endpent'
17184 d_endpwent='$d_endpwent'
17185 d_endsent='$d_endsent'
17186 d_eofnblk='$d_eofnblk'
17187 d_eunice='$d_eunice'
17188 d_fchdir='$d_fchdir'
17189 d_fchmod='$d_fchmod'
17190 d_fchown='$d_fchown'
17191 d_fcntl='$d_fcntl'
17192 d_fcntl_can_lock='$d_fcntl_can_lock'
17193 d_fd_macros='$d_fd_macros'
17194 d_fd_set='$d_fd_set'
17195 d_fds_bits='$d_fds_bits'
17196 d_fgetpos='$d_fgetpos'
17197 d_finite='$d_finite'
17198 d_finitel='$d_finitel'
17199 d_flexfnam='$d_flexfnam'
17200 d_flock='$d_flock'
17201 d_flockproto='$d_flockproto'
17202 d_fork='$d_fork'
17203 d_fp_class='$d_fp_class'
17204 d_fpathconf='$d_fpathconf'
17205 d_fpclass='$d_fpclass'
17206 d_fpclassify='$d_fpclassify'
17207 d_fpclassl='$d_fpclassl'
17208 d_fpos64_t='$d_fpos64_t'
17209 d_frexpl='$d_frexpl'
17210 d_fs_data_s='$d_fs_data_s'
17211 d_fseeko='$d_fseeko'
17212 d_fsetpos='$d_fsetpos'
17213 d_fstatfs='$d_fstatfs'
17214 d_fstatvfs='$d_fstatvfs'
17215 d_fsync='$d_fsync'
17216 d_ftello='$d_ftello'
17217 d_ftime='$d_ftime'
17218 d_getcwd='$d_getcwd'
17219 d_getespwnam='$d_getespwnam'
17220 d_getfsstat='$d_getfsstat'
17221 d_getgrent='$d_getgrent'
17222 d_getgrps='$d_getgrps'
17223 d_gethbyaddr='$d_gethbyaddr'
17224 d_gethbyname='$d_gethbyname'
17225 d_gethent='$d_gethent'
17226 d_gethname='$d_gethname'
17227 d_gethostprotos='$d_gethostprotos'
17228 d_getitimer='$d_getitimer'
17229 d_getlogin='$d_getlogin'
17230 d_getmnt='$d_getmnt'
17231 d_getmntent='$d_getmntent'
17232 d_getnbyaddr='$d_getnbyaddr'
17233 d_getnbyname='$d_getnbyname'
17234 d_getnent='$d_getnent'
17235 d_getnetprotos='$d_getnetprotos'
17236 d_getpagsz='$d_getpagsz'
17237 d_getpbyname='$d_getpbyname'
17238 d_getpbynumber='$d_getpbynumber'
17239 d_getpent='$d_getpent'
17240 d_getpgid='$d_getpgid'
17241 d_getpgrp2='$d_getpgrp2'
17242 d_getpgrp='$d_getpgrp'
17243 d_getppid='$d_getppid'
17244 d_getprior='$d_getprior'
17245 d_getprotoprotos='$d_getprotoprotos'
17246 d_getprpwnam='$d_getprpwnam'
17247 d_getpwent='$d_getpwent'
17248 d_getsbyname='$d_getsbyname'
17249 d_getsbyport='$d_getsbyport'
17250 d_getsent='$d_getsent'
17251 d_getservprotos='$d_getservprotos'
17252 d_getspnam='$d_getspnam'
17253 d_gettimeod='$d_gettimeod'
17254 d_gnulibc='$d_gnulibc'
17255 d_grpasswd='$d_grpasswd'
17256 d_hasmntopt='$d_hasmntopt'
17257 d_htonl='$d_htonl'
17258 d_index='$d_index'
17259 d_inetaton='$d_inetaton'
17260 d_int64_t='$d_int64_t'
17261 d_isascii='$d_isascii'
17262 d_isfinite='$d_isfinite'
17263 d_isinf='$d_isinf'
17264 d_isnan='$d_isnan'
17265 d_isnanl='$d_isnanl'
17266 d_killpg='$d_killpg'
17267 d_lchown='$d_lchown'
17268 d_ldbl_dig='$d_ldbl_dig'
17269 d_link='$d_link'
17270 d_locconv='$d_locconv'
17271 d_lockf='$d_lockf'
17272 d_longdbl='$d_longdbl'
17273 d_longlong='$d_longlong'
17274 d_lseekproto='$d_lseekproto'
17275 d_lstat='$d_lstat'
17276 d_madvise='$d_madvise'
17277 d_mblen='$d_mblen'
17278 d_mbstowcs='$d_mbstowcs'
17279 d_mbtowc='$d_mbtowc'
17280 d_memchr='$d_memchr'
17281 d_memcmp='$d_memcmp'
17282 d_memcpy='$d_memcpy'
17283 d_memmove='$d_memmove'
17284 d_memset='$d_memset'
17285 d_mkdir='$d_mkdir'
17286 d_mkdtemp='$d_mkdtemp'
17287 d_mkfifo='$d_mkfifo'
17288 d_mkstemp='$d_mkstemp'
17289 d_mkstemps='$d_mkstemps'
17290 d_mktime='$d_mktime'
17291 d_mmap='$d_mmap'
17292 d_modfl='$d_modfl'
17293 d_modfl_pow32_bug='$d_modfl_pow32_bug'
17294 d_mprotect='$d_mprotect'
17295 d_msg='$d_msg'
17296 d_msg_ctrunc='$d_msg_ctrunc'
17297 d_msg_dontroute='$d_msg_dontroute'
17298 d_msg_oob='$d_msg_oob'
17299 d_msg_peek='$d_msg_peek'
17300 d_msg_proxy='$d_msg_proxy'
17301 d_msgctl='$d_msgctl'
17302 d_msgget='$d_msgget'
17303 d_msghdr_s='$d_msghdr_s'
17304 d_msgrcv='$d_msgrcv'
17305 d_msgsnd='$d_msgsnd'
17306 d_msync='$d_msync'
17307 d_munmap='$d_munmap'
17308 d_mymalloc='$d_mymalloc'
17309 d_nice='$d_nice'
17310 d_nl_langinfo='$d_nl_langinfo'
17311 d_nv_preserves_uv='$d_nv_preserves_uv'
17312 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
17313 d_off64_t='$d_off64_t'
17314 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
17315 d_oldpthreads='$d_oldpthreads'
17316 d_oldsock='$d_oldsock'
17317 d_open3='$d_open3'
17318 d_pathconf='$d_pathconf'
17319 d_pause='$d_pause'
17320 d_perl_otherlibdirs='$d_perl_otherlibdirs'
17321 d_phostname='$d_phostname'
17322 d_pipe='$d_pipe'
17323 d_poll='$d_poll'
17324 d_portable='$d_portable'
17325 d_procselfexe='$d_procselfexe'
17326 d_pthread_atfork='$d_pthread_atfork'
17327 d_pthread_yield='$d_pthread_yield'
17328 d_pwage='$d_pwage'
17329 d_pwchange='$d_pwchange'
17330 d_pwclass='$d_pwclass'
17331 d_pwcomment='$d_pwcomment'
17332 d_pwexpire='$d_pwexpire'
17333 d_pwgecos='$d_pwgecos'
17334 d_pwpasswd='$d_pwpasswd'
17335 d_pwquota='$d_pwquota'
17336 d_qgcvt='$d_qgcvt'
17337 d_quad='$d_quad'
17338 d_readdir='$d_readdir'
17339 d_readlink='$d_readlink'
17340 d_readv='$d_readv'
17341 d_recvmsg='$d_recvmsg'
17342 d_rename='$d_rename'
17343 d_rewinddir='$d_rewinddir'
17344 d_rmdir='$d_rmdir'
17345 d_safebcpy='$d_safebcpy'
17346 d_safemcpy='$d_safemcpy'
17347 d_sanemcmp='$d_sanemcmp'
17348 d_sbrkproto='$d_sbrkproto'
17349 d_sched_yield='$d_sched_yield'
17350 d_scm_rights='$d_scm_rights'
17351 d_seekdir='$d_seekdir'
17352 d_select='$d_select'
17353 d_sem='$d_sem'
17354 d_semctl='$d_semctl'
17355 d_semctl_semid_ds='$d_semctl_semid_ds'
17356 d_semctl_semun='$d_semctl_semun'
17357 d_semget='$d_semget'
17358 d_semop='$d_semop'
17359 d_sendmsg='$d_sendmsg'
17360 d_setegid='$d_setegid'
17361 d_seteuid='$d_seteuid'
17362 d_setgrent='$d_setgrent'
17363 d_setgrps='$d_setgrps'
17364 d_sethent='$d_sethent'
17365 d_setitimer='$d_setitimer'
17366 d_setlinebuf='$d_setlinebuf'
17367 d_setlocale='$d_setlocale'
17368 d_setnent='$d_setnent'
17369 d_setpent='$d_setpent'
17370 d_setpgid='$d_setpgid'
17371 d_setpgrp2='$d_setpgrp2'
17372 d_setpgrp='$d_setpgrp'
17373 d_setprior='$d_setprior'
17374 d_setproctitle='$d_setproctitle'
17375 d_setpwent='$d_setpwent'
17376 d_setregid='$d_setregid'
17377 d_setresgid='$d_setresgid'
17378 d_setresuid='$d_setresuid'
17379 d_setreuid='$d_setreuid'
17380 d_setrgid='$d_setrgid'
17381 d_setruid='$d_setruid'
17382 d_setsent='$d_setsent'
17383 d_setsid='$d_setsid'
17384 d_setvbuf='$d_setvbuf'
17385 d_sfio='$d_sfio'
17386 d_shm='$d_shm'
17387 d_shmat='$d_shmat'
17388 d_shmatprototype='$d_shmatprototype'
17389 d_shmctl='$d_shmctl'
17390 d_shmdt='$d_shmdt'
17391 d_shmget='$d_shmget'
17392 d_sigaction='$d_sigaction'
17393 d_sigprocmask='$d_sigprocmask'
17394 d_sigsetjmp='$d_sigsetjmp'
17395 d_sockatmark='$d_sockatmark'
17396 d_sockatmarkproto='$d_sockatmarkproto'
17397 d_socket='$d_socket'
17398 d_socklen_t='$d_socklen_t'
17399 d_sockpair='$d_sockpair'
17400 d_socks5_init='$d_socks5_init'
17401 d_sqrtl='$d_sqrtl'
17402 d_sresgproto='$d_sresgproto'
17403 d_sresuproto='$d_sresuproto'
17404 d_statblks='$d_statblks'
17405 d_statfs_f_flags='$d_statfs_f_flags'
17406 d_statfs_s='$d_statfs_s'
17407 d_statvfs='$d_statvfs'
17408 d_stdio_cnt_lval='$d_stdio_cnt_lval'
17409 d_stdio_ptr_lval='$d_stdio_ptr_lval'
17410 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17411 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
17412 d_stdio_stream_array='$d_stdio_stream_array'
17413 d_stdiobase='$d_stdiobase'
17414 d_stdstdio='$d_stdstdio'
17415 d_strchr='$d_strchr'
17416 d_strcoll='$d_strcoll'
17417 d_strctcpy='$d_strctcpy'
17418 d_strerrm='$d_strerrm'
17419 d_strerror='$d_strerror'
17420 d_strftime='$d_strftime'
17421 d_strtod='$d_strtod'
17422 d_strtol='$d_strtol'
17423 d_strtold='$d_strtold'
17424 d_strtoll='$d_strtoll'
17425 d_strtoq='$d_strtoq'
17426 d_strtoul='$d_strtoul'
17427 d_strtoull='$d_strtoull'
17428 d_strtouq='$d_strtouq'
17429 d_strxfrm='$d_strxfrm'
17430 d_suidsafe='$d_suidsafe'
17431 d_symlink='$d_symlink'
17432 d_syscall='$d_syscall'
17433 d_syscallproto='$d_syscallproto'
17434 d_sysconf='$d_sysconf'
17435 d_sysernlst='$d_sysernlst'
17436 d_syserrlst='$d_syserrlst'
17437 d_system='$d_system'
17438 d_tcgetpgrp='$d_tcgetpgrp'
17439 d_tcsetpgrp='$d_tcsetpgrp'
17440 d_telldir='$d_telldir'
17441 d_telldirproto='$d_telldirproto'
17442 d_time='$d_time'
17443 d_times='$d_times'
17444 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
17445 d_tm_tm_zone='$d_tm_tm_zone'
17446 d_truncate='$d_truncate'
17447 d_tzname='$d_tzname'
17448 d_u32align='$d_u32align'
17449 d_ualarm='$d_ualarm'
17450 d_umask='$d_umask'
17451 d_uname='$d_uname'
17452 d_union_semun='$d_union_semun'
17453 d_unordered='$d_unordered'
17454 d_usleep='$d_usleep'
17455 d_usleepproto='$d_usleepproto'
17456 d_ustat='$d_ustat'
17457 d_vendorarch='$d_vendorarch'
17458 d_vendorbin='$d_vendorbin'
17459 d_vendorlib='$d_vendorlib'
17460 d_vfork='$d_vfork'
17461 d_void_closedir='$d_void_closedir'
17462 d_voidsig='$d_voidsig'
17463 d_voidtty='$d_voidtty'
17464 d_volatile='$d_volatile'
17465 d_vprintf='$d_vprintf'
17466 d_wait4='$d_wait4'
17467 d_waitpid='$d_waitpid'
17468 d_wcstombs='$d_wcstombs'
17469 d_wctomb='$d_wctomb'
17470 d_writev='$d_writev'
17471 d_xenix='$d_xenix'
17472 date='$date'
17473 db_hashtype='$db_hashtype'
17474 db_prefixtype='$db_prefixtype'
17475 db_version_major='$db_version_major'
17476 db_version_minor='$db_version_minor'
17477 db_version_patch='$db_version_patch'
17478 defvoidused='$defvoidused'
17479 direntrytype='$direntrytype'
17480 dlext='$dlext'
17481 dlsrc='$dlsrc'
17482 doublesize='$doublesize'
17483 drand01='$drand01'
17484 dynamic_ext='$dynamic_ext'
17485 eagain='$eagain'
17486 ebcdic='$ebcdic'
17487 echo='$echo'
17488 egrep='$egrep'
17489 emacs='$emacs'
17490 eunicefix='$eunicefix'
17491 exe_ext='$exe_ext'
17492 expr='$expr'
17493 extensions='$extensions'
17494 extras='$extras'
17495 fflushNULL='$fflushNULL'
17496 fflushall='$fflushall'
17497 find='$find'
17498 firstmakefile='$firstmakefile'
17499 flex='$flex'
17500 fpossize='$fpossize'
17501 fpostype='$fpostype'
17502 freetype='$freetype'
17503 from='$from'
17504 full_ar='$full_ar'
17505 full_csh='$full_csh'
17506 full_sed='$full_sed'
17507 gccosandvers='$gccosandvers'
17508 gccversion='$gccversion'
17509 gidformat='$gidformat'
17510 gidsign='$gidsign'
17511 gidsize='$gidsize'
17512 gidtype='$gidtype'
17513 glibpth='$glibpth'
17514 gmake='$gmake'
17515 grep='$grep'
17516 groupcat='$groupcat'
17517 groupstype='$groupstype'
17518 gzip='$gzip'
17519 h_fcntl='$h_fcntl'
17520 h_sysfile='$h_sysfile'
17521 hint='$hint'
17522 hostcat='$hostcat'
17523 i16size='$i16size'
17524 i16type='$i16type'
17525 i32size='$i32size'
17526 i32type='$i32type'
17527 i64size='$i64size'
17528 i64type='$i64type'
17529 i8size='$i8size'
17530 i8type='$i8type'
17531 i_arpainet='$i_arpainet'
17532 i_bsdioctl='$i_bsdioctl'
17533 i_db='$i_db'
17534 i_dbm='$i_dbm'
17535 i_dirent='$i_dirent'
17536 i_dld='$i_dld'
17537 i_dlfcn='$i_dlfcn'
17538 i_fcntl='$i_fcntl'
17539 i_float='$i_float'
17540 i_fp='$i_fp'
17541 i_fp_class='$i_fp_class'
17542 i_gdbm='$i_gdbm'
17543 i_grp='$i_grp'
17544 i_ieeefp='$i_ieeefp'
17545 i_inttypes='$i_inttypes'
17546 i_langinfo='$i_langinfo'
17547 i_libutil='$i_libutil'
17548 i_limits='$i_limits'
17549 i_locale='$i_locale'
17550 i_machcthr='$i_machcthr'
17551 i_malloc='$i_malloc'
17552 i_math='$i_math'
17553 i_memory='$i_memory'
17554 i_mntent='$i_mntent'
17555 i_ndbm='$i_ndbm'
17556 i_netdb='$i_netdb'
17557 i_neterrno='$i_neterrno'
17558 i_netinettcp='$i_netinettcp'
17559 i_niin='$i_niin'
17560 i_poll='$i_poll'
17561 i_prot='$i_prot'
17562 i_pthread='$i_pthread'
17563 i_pwd='$i_pwd'
17564 i_rpcsvcdbm='$i_rpcsvcdbm'
17565 i_sfio='$i_sfio'
17566 i_sgtty='$i_sgtty'
17567 i_shadow='$i_shadow'
17568 i_socks='$i_socks'
17569 i_stdarg='$i_stdarg'
17570 i_stddef='$i_stddef'
17571 i_stdlib='$i_stdlib'
17572 i_string='$i_string'
17573 i_sunmath='$i_sunmath'
17574 i_sysaccess='$i_sysaccess'
17575 i_sysdir='$i_sysdir'
17576 i_sysfile='$i_sysfile'
17577 i_sysfilio='$i_sysfilio'
17578 i_sysin='$i_sysin'
17579 i_sysioctl='$i_sysioctl'
17580 i_syslog='$i_syslog'
17581 i_sysmman='$i_sysmman'
17582 i_sysmode='$i_sysmode'
17583 i_sysmount='$i_sysmount'
17584 i_sysndir='$i_sysndir'
17585 i_sysparam='$i_sysparam'
17586 i_sysresrc='$i_sysresrc'
17587 i_syssecrt='$i_syssecrt'
17588 i_sysselct='$i_sysselct'
17589 i_syssockio='$i_syssockio'
17590 i_sysstat='$i_sysstat'
17591 i_sysstatfs='$i_sysstatfs'
17592 i_sysstatvfs='$i_sysstatvfs'
17593 i_systime='$i_systime'
17594 i_systimek='$i_systimek'
17595 i_systimes='$i_systimes'
17596 i_systypes='$i_systypes'
17597 i_sysuio='$i_sysuio'
17598 i_sysun='$i_sysun'
17599 i_sysutsname='$i_sysutsname'
17600 i_sysvfs='$i_sysvfs'
17601 i_syswait='$i_syswait'
17602 i_termio='$i_termio'
17603 i_termios='$i_termios'
17604 i_time='$i_time'
17605 i_unistd='$i_unistd'
17606 i_ustat='$i_ustat'
17607 i_utime='$i_utime'
17608 i_values='$i_values'
17609 i_varargs='$i_varargs'
17610 i_varhdr='$i_varhdr'
17611 i_vfork='$i_vfork'
17612 ignore_versioned_solibs='$ignore_versioned_solibs'
17613 inc_version_list='$inc_version_list'
17614 inc_version_list_init='$inc_version_list_init'
17615 incpath='$incpath'
17616 inews='$inews'
17617 installarchlib='$installarchlib'
17618 installbin='$installbin'
17619 installman1dir='$installman1dir'
17620 installman3dir='$installman3dir'
17621 installprefix='$installprefix'
17622 installprefixexp='$installprefixexp'
17623 installprivlib='$installprivlib'
17624 installscript='$installscript'
17625 installsitearch='$installsitearch'
17626 installsitebin='$installsitebin'
17627 installsitelib='$installsitelib'
17628 installstyle='$installstyle'
17629 installusrbinperl='$installusrbinperl'
17630 installvendorarch='$installvendorarch'
17631 installvendorbin='$installvendorbin'
17632 installvendorlib='$installvendorlib'
17633 intsize='$intsize'
17634 issymlink='$issymlink'
17635 ivdformat='$ivdformat'
17636 ivsize='$ivsize'
17637 ivtype='$ivtype'
17638 known_extensions='$known_extensions'
17639 ksh='$ksh'
17640 ld='$ld'
17641 lddlflags='$lddlflags'
17642 ldflags='$ldflags'
17643 ldflags_uselargefiles='$ldflags_uselargefiles'
17644 ldlibpthname='$ldlibpthname'
17645 less='$less'
17646 lib_ext='$lib_ext'
17647 libc='$libc'
17648 libperl='$libperl'
17649 libpth='$libpth'
17650 libs='$libs'
17651 libsdirs='$libsdirs'
17652 libsfiles='$libsfiles'
17653 libsfound='$libsfound'
17654 libspath='$libspath'
17655 libswanted='$libswanted'
17656 libswanted_uselargefiles='$libswanted_uselargefiles'
17657 line='$line'
17658 lint='$lint'
17659 lkflags='$lkflags'
17660 ln='$ln'
17661 lns='$lns'
17662 locincpth='$locincpth'
17663 loclibpth='$loclibpth'
17664 longdblsize='$longdblsize'
17665 longlongsize='$longlongsize'
17666 longsize='$longsize'
17667 lp='$lp'
17668 lpr='$lpr'
17669 ls='$ls'
17670 lseeksize='$lseeksize'
17671 lseektype='$lseektype'
17672 mail='$mail'
17673 mailx='$mailx'
17674 make='$make'
17675 make_set_make='$make_set_make'
17676 mallocobj='$mallocobj'
17677 mallocsrc='$mallocsrc'
17678 malloctype='$malloctype'
17679 man1dir='$man1dir'
17680 man1direxp='$man1direxp'
17681 man1ext='$man1ext'
17682 man3dir='$man3dir'
17683 man3direxp='$man3direxp'
17684 man3ext='$man3ext'
17685 mips_type='$mips_type'
17686 mkdir='$mkdir'
17687 mmaptype='$mmaptype'
17688 modetype='$modetype'
17689 more='$more'
17690 multiarch='$multiarch'
17691 mv='$mv'
17692 myarchname='$myarchname'
17693 mydomain='$mydomain'
17694 myhostname='$myhostname'
17695 myuname='$myuname'
17696 n='$n'
17697 need_va_copy='$need_va_copy'
17698 netdb_hlen_type='$netdb_hlen_type'
17699 netdb_host_type='$netdb_host_type'
17700 netdb_name_type='$netdb_name_type'
17701 netdb_net_type='$netdb_net_type'
17702 nm='$nm'
17703 nm_opt='$nm_opt'
17704 nm_so_opt='$nm_so_opt'
17705 nonxs_ext='$nonxs_ext'
17706 nroff='$nroff'
17707 nvEUformat='$nvEUformat'
17708 nvFUformat='$nvFUformat'
17709 nvGUformat='$nvGUformat'
17710 nveformat='$nveformat'
17711 nvfformat='$nvfformat'
17712 nvgformat='$nvgformat'
17713 nvsize='$nvsize'
17714 nvtype='$nvtype'
17715 o_nonblock='$o_nonblock'
17716 obj_ext='$obj_ext'
17717 old_pthread_create_joinable='$old_pthread_create_joinable'
17718 optimize='$optimize'
17719 orderlib='$orderlib'
17720 osname='$osname'
17721 osvers='$osvers'
17722 otherlibdirs='$otherlibdirs'
17723 package='$package'
17724 pager='$pager'
17725 passcat='$passcat'
17726 patchlevel='$patchlevel'
17727 path_sep='$path_sep'
17728 perl5='$perl5'
17729 perl='$perl'
17730 perl_patchlevel='$perl_patchlevel'
17731 perladmin='$perladmin'
17732 perllibs='$perllibs'
17733 perlpath='$perlpath'
17734 pg='$pg'
17735 phostname='$phostname'
17736 pidtype='$pidtype'
17737 plibpth='$plibpth'
17738 pm_apiversion='$pm_apiversion'
17739 pmake='$pmake'
17740 pr='$pr'
17741 prefix='$prefix'
17742 prefixexp='$prefixexp'
17743 privlib='$privlib'
17744 privlibexp='$privlibexp'
17745 procselfexe='$procselfexe'
17746 prototype='$prototype'
17747 ptrsize='$ptrsize'
17748 quadkind='$quadkind'
17749 quadtype='$quadtype'
17750 randbits='$randbits'
17751 randfunc='$randfunc'
17752 randseedtype='$randseedtype'
17753 ranlib='$ranlib'
17754 rd_nodata='$rd_nodata'
17755 revision='$revision'
17756 rm='$rm'
17757 rmail='$rmail'
17758 run='$run'
17759 runnm='$runnm'
17760 sPRIEUldbl='$sPRIEUldbl'
17761 sPRIFUldbl='$sPRIFUldbl'
17762 sPRIGUldbl='$sPRIGUldbl'
17763 sPRIXU64='$sPRIXU64'
17764 sPRId64='$sPRId64'
17765 sPRIeldbl='$sPRIeldbl'
17766 sPRIfldbl='$sPRIfldbl'
17767 sPRIgldbl='$sPRIgldbl'
17768 sPRIi64='$sPRIi64'
17769 sPRIo64='$sPRIo64'
17770 sPRIu64='$sPRIu64'
17771 sPRIx64='$sPRIx64'
17772 sSCNfldbl='$sSCNfldbl'
17773 sched_yield='$sched_yield'
17774 scriptdir='$scriptdir'
17775 scriptdirexp='$scriptdirexp'
17776 sed='$sed'
17777 seedfunc='$seedfunc'
17778 selectminbits='$selectminbits'
17779 selecttype='$selecttype'
17780 sendmail='$sendmail'
17781 sh='$sh'
17782 shar='$shar'
17783 sharpbang='$sharpbang'
17784 shmattype='$shmattype'
17785 shortsize='$shortsize'
17786 shrpenv='$shrpenv'
17787 shsharp='$shsharp'
17788 sig_count='$sig_count'
17789 sig_name='$sig_name'
17790 sig_name_init='$sig_name_init'
17791 sig_num='$sig_num'
17792 sig_num_init='$sig_num_init'
17793 sig_size='$sig_size'
17794 signal_t='$signal_t'
17795 sitearch='$sitearch'
17796 sitearchexp='$sitearchexp'
17797 sitebin='$sitebin'
17798 sitebinexp='$sitebinexp'
17799 sitelib='$sitelib'
17800 sitelib_stem='$sitelib_stem'
17801 sitelibexp='$sitelibexp'
17802 siteprefix='$siteprefix'
17803 siteprefixexp='$siteprefixexp'
17804 sizesize='$sizesize'
17805 sizetype='$sizetype'
17806 sleep='$sleep'
17807 smail='$smail'
17808 so='$so'
17809 sockethdr='$sockethdr'
17810 socketlib='$socketlib'
17811 socksizetype='$socksizetype'
17812 sort='$sort'
17813 spackage='$spackage'
17814 spitshell='$spitshell'
17815 src='$src'
17816 ssizetype='$ssizetype'
17817 startperl='$startperl'
17818 startsh='$startsh'
17819 static_ext='$static_ext'
17820 stdchar='$stdchar'
17821 stdio_base='$stdio_base'
17822 stdio_bufsiz='$stdio_bufsiz'
17823 stdio_cnt='$stdio_cnt'
17824 stdio_filbuf='$stdio_filbuf'
17825 stdio_ptr='$stdio_ptr'
17826 stdio_stream_array='$stdio_stream_array'
17827 strings='$strings'
17828 submit='$submit'
17829 subversion='$subversion'
17830 sysman='$sysman'
17831 tail='$tail'
17832 tar='$tar'
17833 targetarch='$targetarch'
17834 tbl='$tbl'
17835 tee='$tee'
17836 test='$test'
17837 timeincl='$timeincl'
17838 timetype='$timetype'
17839 to='$to'
17840 touch='$touch'
17841 tr='$tr'
17842 trnl='$trnl'
17843 troff='$troff'
17844 u16size='$u16size'
17845 u16type='$u16type'
17846 u32size='$u32size'
17847 u32type='$u32type'
17848 u64size='$u64size'
17849 u64type='$u64type'
17850 u8size='$u8size'
17851 u8type='$u8type'
17852 uidformat='$uidformat'
17853 uidsign='$uidsign'
17854 uidsize='$uidsize'
17855 uidtype='$uidtype'
17856 uname='$uname'
17857 uniq='$uniq'
17858 uquadtype='$uquadtype'
17859 use5005threads='$use5005threads'
17860 use64bitall='$use64bitall'
17861 use64bitint='$use64bitint'
17862 usecrosscompile='$usecrosscompile'
17863 usedl='$usedl'
17864 useithreads='$useithreads'
17865 uselargefiles='$uselargefiles'
17866 uselongdouble='$uselongdouble'
17867 usemorebits='$usemorebits'
17868 usemultiplicity='$usemultiplicity'
17869 usemymalloc='$usemymalloc'
17870 usenm='$usenm'
17871 useopcode='$useopcode'
17872 useperlio='$useperlio'
17873 useposix='$useposix'
17874 usereentrant='$usereentrant'
17875 usesfio='$usesfio'
17876 useshrplib='$useshrplib'
17877 usesocks='$usesocks'
17878 usethreads='$usethreads'
17879 usevendorprefix='$usevendorprefix'
17880 usevfork='$usevfork'
17881 usrinc='$usrinc'
17882 uuname='$uuname'
17883 uvXUformat='$uvXUformat'
17884 uvoformat='$uvoformat'
17885 uvsize='$uvsize'
17886 uvtype='$uvtype'
17887 uvuformat='$uvuformat'
17888 uvxformat='$uvxformat'
17889 vendorarch='$vendorarch'
17890 vendorarchexp='$vendorarchexp'
17891 vendorbin='$vendorbin'
17892 vendorbinexp='$vendorbinexp'
17893 vendorlib='$vendorlib'
17894 vendorlib_stem='$vendorlib_stem'
17895 vendorlibexp='$vendorlibexp'
17896 vendorprefix='$vendorprefix'
17897 vendorprefixexp='$vendorprefixexp'
17898 version='$version'
17899 version_patchlevel_string='$version_patchlevel_string'
17900 versiononly='$versiononly'
17901 vi='$vi'
17902 voidflags='$voidflags'
17903 xlibpth='$xlibpth'
17904 xs_apiversion='$xs_apiversion'
17905 yacc='$yacc'
17906 yaccflags='$yaccflags'
17907 zcat='$zcat'
17908 zip='$zip'
17909 EOT
17910
17911 : Add in command line options if available
17912 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17913
17914 : add special variables
17915 $test -f $src/patchlevel.h && \
17916 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17917 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17918 echo "PERL_CONFIG_SH=true" >>config.sh
17919
17920 : propagate old symbols
17921 if $test -f UU/config.sh; then
17922         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17923         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17924         $sort | $uniq -u >UU/oldsyms
17925         set X `cat UU/oldsyms`
17926         shift
17927         case $# in
17928         0) ;;
17929         *)
17930                 cat <<EOM
17931 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17932 EOM
17933                 echo "# Variables propagated from previous config.sh file." >>config.sh
17934                 for sym in `cat UU/oldsyms`; do
17935                         echo "    Propagating $hint variable "'$'"$sym..."
17936                         eval 'tmp="$'"${sym}"'"'
17937                         echo "$tmp" | \
17938                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17939                 done
17940                 ;;
17941         esac
17942 fi
17943
17944 : Finish up by extracting the .SH files
17945 case "$alldone" in
17946 exit)
17947         $rm -rf UU
17948         echo "Extraction done."
17949         exit 0
17950         ;;
17951 cont)
17952         ;;
17953 '')
17954         dflt=''
17955         nostick=true
17956         $cat <<EOM
17957
17958 If you'd like to make any changes to the config.sh file before I begin
17959 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17960
17961 EOM
17962         rp="Press return or use a shell escape to edit config.sh:"
17963         . UU/myread
17964         nostick=''
17965         case "$ans" in
17966         '') ;;
17967         *) : in case they cannot read
17968                 sh 1>&4 -c "$ans";;
17969         esac
17970         ;;
17971 esac
17972
17973 : if this fails, just run all the .SH files by hand
17974 . ./config.sh
17975
17976 echo " "
17977 exec 1>&4
17978 pwd=`pwd`
17979 . ./UU/extract
17980 cd "$pwd"
17981
17982 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17983         dflt=y
17984         case "$silent" in
17985         true) ;;
17986         *)
17987                 $cat <<EOM
17988
17989 Now you need to generate make dependencies by running "$make depend".
17990 You might prefer to run it in background: "$make depend > makedepend.out &"
17991 It can take a while, so you might not want to run it right now.
17992
17993 EOM
17994                 ;;
17995         esac
17996         rp="Run $make depend now?"
17997         . UU/myread
17998         case "$ans" in
17999         y*)
18000                 $make depend && echo "Now you must run '$make'."
18001                 ;;
18002         *)
18003                 echo "You must run '$make depend' then '$make'."
18004                 ;;
18005         esac
18006 elif test -f [Mm]akefile; then
18007         echo " "
18008         echo "Now you must run a $make."
18009 else
18010         echo "Configure done."
18011 fi
18012
18013 if $test -f Policy.sh; then
18014     $cat <<EOM
18015
18016 If you compile $package on a different machine or from a different object
18017 directory, copy the Policy.sh file from this object directory to the
18018 new one before you run Configure -- this will help you with most of
18019 the policy defaults.
18020
18021 EOM
18022 fi
18023 if $test -f config.msg; then
18024     echo "Hmm.  I also noted the following information while running:"
18025     echo " "
18026     $cat config.msg >&4
18027     $rm -f config.msg
18028 fi
18029 $rm -f kit*isdone ark*isdone
18030 $rm -rf UU
18031
18032 : End of Configure
18033