7f0c024a737795dd33141ba932ef260a20594781
[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 Fri Jun 22 01:49:37 EET DST 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccname=''
164 ccversion=''
165 ccsymbols=''
166 cppccsymbols=''
167 cppsymbols=''
168 from=''
169 run=''
170 targetarch=''
171 to=''
172 usecrosscompile=''
173 perllibs=''
174 dynamic_ext=''
175 extensions=''
176 known_extensions=''
177 nonxs_ext=''
178 static_ext=''
179 useopcode=''
180 useposix=''
181 d_bsd=''
182 d_eunice=''
183 d_xenix=''
184 eunicefix=''
185 Mcc=''
186 ar=''
187 awk=''
188 bash=''
189 bison=''
190 byacc=''
191 cat=''
192 chgrp=''
193 chmod=''
194 chown=''
195 comm=''
196 compress=''
197 cp=''
198 cpio=''
199 cpp=''
200 csh=''
201 date=''
202 echo=''
203 egrep=''
204 emacs=''
205 expr=''
206 find=''
207 flex=''
208 grep=''
209 gzip=''
210 inews=''
211 ksh=''
212 less=''
213 line=''
214 lint=''
215 ln=''
216 lp=''
217 lpr=''
218 ls=''
219 mail=''
220 mailx=''
221 make=''
222 mkdir=''
223 more=''
224 mv=''
225 nm=''
226 nroff=''
227 perl=''
228 pg=''
229 pmake=''
230 pr=''
231 rm=''
232 rmail=''
233 sed=''
234 sendmail=''
235 shar=''
236 sleep=''
237 smail=''
238 sort=''
239 submit=''
240 tail=''
241 tar=''
242 tbl=''
243 tee=''
244 test=''
245 touch=''
246 tr=''
247 troff=''
248 uname=''
249 uniq=''
250 uuname=''
251 vi=''
252 zcat=''
253 zip=''
254 full_ar=''
255 full_sed=''
256 libswanted=''
257 hint=''
258 myuname=''
259 osname=''
260 osvers=''
261 Author=''
262 Date=''
263 Header=''
264 Id=''
265 Locker=''
266 Log=''
267 RCSfile=''
268 Revision=''
269 Source=''
270 State=''
271 _a=''
272 _exe=''
273 _o=''
274 archobjs=''
275 exe_ext=''
276 firstmakefile=''
277 lib_ext=''
278 obj_ext=''
279 path_sep=''
280 afs=''
281 afsroot=''
282 alignbytes=''
283 ansi2knr=''
284 archlib=''
285 archlibexp=''
286 d_archlib=''
287 installarchlib=''
288 archname=''
289 myarchname=''
290 d_atolf=''
291 d_atoll=''
292 baserev=''
293 bin=''
294 binexp=''
295 installbin=''
296 bincompat5005=''
297 d_bincompat5005=''
298 byteorder=''
299 cc=''
300 ccflags=''
301 cppflags=''
302 ldflags=''
303 lkflags=''
304 locincpth=''
305 optimize=''
306 cf_email=''
307 cf_by=''
308 cf_time=''
309 charsize=''
310 contains=''
311 cpp_stuff=''
312 cpplast=''
313 cppminus=''
314 cpprun=''
315 cppstdin=''
316 d__fwalk=''
317 d_access=''
318 d_accessx=''
319 d_alarm=''
320 d_attribut=''
321 d_bcmp=''
322 d_bcopy=''
323 d_bzero=''
324 d_casti32=''
325 castflags=''
326 d_castneg=''
327 d_chown=''
328 d_chroot=''
329 d_chsize=''
330 d_closedir=''
331 d_void_closedir=''
332 d_cmsghdr_s=''
333 d_const=''
334 cryptlib=''
335 d_crypt=''
336 d_csh=''
337 full_csh=''
338 d_cuserid=''
339 d_dbl_dig=''
340 d_dbminitproto=''
341 d_difftime=''
342 d_dlerror=''
343 d_dlopen=''
344 d_dlsymun=''
345 d_dosuid=''
346 d_suidsafe=''
347 d_drand48proto=''
348 d_dup2=''
349 d_eaccess=''
350 d_endgrent=''
351 d_endhent=''
352 d_endnent=''
353 d_endpent=''
354 d_endpwent=''
355 d_endsent=''
356 d_fchdir=''
357 d_fchmod=''
358 d_fchown=''
359 d_fcntl=''
360 d_fcntl_can_lock=''
361 d_fd_macros=''
362 d_fd_set=''
363 d_fds_bits=''
364 d_fgetpos=''
365 d_flexfnam=''
366 d_flock=''
367 d_flockproto=''
368 d_fork=''
369 d_fpos64_t=''
370 d_frexpl=''
371 d_fs_data_s=''
372 d_fseeko=''
373 d_fsetpos=''
374 d_fstatfs=''
375 d_fsync=''
376 d_ftello=''
377 d_ftime=''
378 d_gettimeod=''
379 d_Gconvert=''
380 d_getcwd=''
381 d_getespwnam=''
382 d_getfsstat=''
383 d_getgrent=''
384 d_getgrps=''
385 d_gethbyaddr=''
386 d_gethbyname=''
387 d_gethent=''
388 aphostname=''
389 d_gethname=''
390 d_phostname=''
391 d_uname=''
392 d_gethostprotos=''
393 d_getitimer=''
394 d_getlogin=''
395 d_getmnt=''
396 d_getmntent=''
397 d_getnbyaddr=''
398 d_getnbyname=''
399 d_getnent=''
400 d_getnetprotos=''
401 d_getpagsz=''
402 d_getpent=''
403 d_getpgid=''
404 d_getpgrp2=''
405 d_bsdgetpgrp=''
406 d_getpgrp=''
407 d_getppid=''
408 d_getprior=''
409 d_getpbyname=''
410 d_getpbynumber=''
411 d_getprotoprotos=''
412 d_getprpwnam=''
413 d_getpwent=''
414 d_getsent=''
415 d_getservprotos=''
416 d_getspnam=''
417 d_getsbyname=''
418 d_getsbyport=''
419 d_gnulibc=''
420 d_hasmntopt=''
421 d_htonl=''
422 d_iconv=''
423 d_inetaton=''
424 d_int64_t=''
425 d_isascii=''
426 d_isnan=''
427 d_isnanl=''
428 d_killpg=''
429 d_lchown=''
430 d_ldbl_dig=''
431 d_link=''
432 d_locconv=''
433 d_lockf=''
434 d_longdbl=''
435 longdblsize=''
436 d_longlong=''
437 longlongsize=''
438 d_lseekproto=''
439 d_lstat=''
440 d_madvise=''
441 d_mblen=''
442 d_mbstowcs=''
443 d_mbtowc=''
444 d_memchr=''
445 d_memcmp=''
446 d_memcpy=''
447 d_memmove=''
448 d_memset=''
449 d_mkdir=''
450 d_mkdtemp=''
451 d_mkfifo=''
452 d_mkstemp=''
453 d_mkstemps=''
454 d_mktime=''
455 d_mmap=''
456 mmaptype=''
457 d_modfl=''
458 d_modfl_pow32_bug=''
459 d_mprotect=''
460 d_msg=''
461 d_msgctl=''
462 d_msgget=''
463 d_msghdr_s=''
464 d_msgrcv=''
465 d_msgsnd=''
466 d_msync=''
467 d_munmap=''
468 d_nice=''
469 d_off64_t=''
470 d_open3=''
471 d_fpathconf=''
472 d_pathconf=''
473 d_pause=''
474 d_pipe=''
475 d_poll=''
476 d_portable=''
477 d_old_pthread_create_joinable=''
478 old_pthread_create_joinable=''
479 d_pthread_yield=''
480 d_sched_yield=''
481 sched_yield=''
482 d_qgcvt=''
483 d_readdir=''
484 d_rewinddir=''
485 d_seekdir=''
486 d_telldir=''
487 d_readlink=''
488 d_readv=''
489 d_recvmsg=''
490 d_rename=''
491 d_rmdir=''
492 d_safebcpy=''
493 d_safemcpy=''
494 d_sanemcmp=''
495 d_sbrkproto=''
496 d_select=''
497 d_sem=''
498 d_semctl=''
499 d_semget=''
500 d_semop=''
501 d_sendmsg=''
502 d_setegid=''
503 d_seteuid=''
504 d_setgrent=''
505 d_setgrps=''
506 d_sethent=''
507 d_setitimer=''
508 d_setlinebuf=''
509 d_setlocale=''
510 d_setnent=''
511 d_setpent=''
512 d_setpgid=''
513 d_setpgrp2=''
514 d_bsdsetpgrp=''
515 d_setpgrp=''
516 d_setprior=''
517 d_setproctitle=''
518 d_setpwent=''
519 d_setregid=''
520 d_setresgid=''
521 d_setresuid=''
522 d_setreuid=''
523 d_setrgid=''
524 d_setruid=''
525 d_setsent=''
526 d_setsid=''
527 d_setvbuf=''
528 d_sfio=''
529 usesfio=''
530 d_shm=''
531 d_shmat=''
532 d_shmatprototype=''
533 shmattype=''
534 d_shmctl=''
535 d_shmdt=''
536 d_shmget=''
537 d_sigaction=''
538 d_sigprocmask=''
539 d_sigsetjmp=''
540 d_sockatmark=''
541 d_sockatmarkproto=''
542 d_msg_ctrunc=''
543 d_msg_dontroute=''
544 d_msg_oob=''
545 d_msg_peek=''
546 d_msg_proxy=''
547 d_oldsock=''
548 d_scm_rights=''
549 d_socket=''
550 d_sockpair=''
551 sockethdr=''
552 socketlib=''
553 d_socklen_t=''
554 d_socks5_init=''
555 d_sqrtl=''
556 d_sresgproto=''
557 d_sresuproto=''
558 d_statblks=''
559 d_statfs_f_flags=''
560 d_statfs_s=''
561 d_fstatvfs=''
562 d_statvfs=''
563 d_stdio_cnt_lval=''
564 d_stdio_ptr_lval=''
565 d_stdio_ptr_lval_nochange_cnt=''
566 d_stdio_ptr_lval_sets_cnt=''
567 d_stdiobase=''
568 d_stdstdio=''
569 stdio_base=''
570 stdio_bufsiz=''
571 stdio_cnt=''
572 stdio_filbuf=''
573 stdio_ptr=''
574 d_index=''
575 d_strchr=''
576 d_strcoll=''
577 d_strctcpy=''
578 d_strerrm=''
579 d_strerror=''
580 d_sysernlst=''
581 d_syserrlst=''
582 d_strftime=''
583 d_strtod=''
584 d_strtol=''
585 d_strtold=''
586 d_strtoll=''
587 d_strtoq=''
588 d_strtoul=''
589 d_strtoull=''
590 d_strtouq=''
591 d_strxfrm=''
592 d_symlink=''
593 d_syscall=''
594 d_syscallproto=''
595 d_sysconf=''
596 d_system=''
597 d_tcgetpgrp=''
598 d_tcsetpgrp=''
599 d_telldirproto=''
600 d_time=''
601 timetype=''
602 clocktype=''
603 d_times=''
604 d_truncate=''
605 d_tzname=''
606 d_u32align=''
607 d_ualarm=''
608 d_umask=''
609 d_semctl_semid_ds=''
610 d_semctl_semun=''
611 d_union_semun=''
612 d_usleep=''
613 d_usleepproto=''
614 d_ustat=''
615 d_vfork=''
616 usevfork=''
617 d_voidsig=''
618 signal_t=''
619 d_volatile=''
620 d_charvspr=''
621 d_vprintf=''
622 d_wait4=''
623 d_waitpid=''
624 d_wcstombs=''
625 d_wctomb=''
626 d_writev=''
627 dlext=''
628 cccdlflags=''
629 ccdlflags=''
630 dlsrc=''
631 ld=''
632 lddlflags=''
633 usedl=''
634 doublesize=''
635 ebcdic=''
636 fflushNULL=''
637 fflushall=''
638 fpossize=''
639 fpostype=''
640 gccosandvers=''
641 gccversion=''
642 gidformat=''
643 gidsign=''
644 gidsize=''
645 gidtype=''
646 groupstype=''
647 h_fcntl=''
648 h_sysfile=''
649 i_arpainet=''
650 db_hashtype=''
651 db_prefixtype=''
652 db_version_major=''
653 db_version_minor=''
654 db_version_patch=''
655 i_db=''
656 i_dbm=''
657 i_rpcsvcdbm=''
658 d_dirnamlen=''
659 direntrytype=''
660 i_dirent=''
661 i_dld=''
662 i_dlfcn=''
663 i_fcntl=''
664 i_float=''
665 i_gdbm=''
666 d_grpasswd=''
667 i_grp=''
668 i_iconv=''
669 i_ieeefp=''
670 i_inttypes=''
671 i_libutil=''
672 i_limits=''
673 i_locale=''
674 i_machcthr=''
675 i_malloc=''
676 i_math=''
677 i_memory=''
678 i_mntent=''
679 i_ndbm=''
680 i_netdb=''
681 i_neterrno=''
682 i_netinettcp=''
683 i_niin=''
684 i_sysin=''
685 i_poll=''
686 i_prot=''
687 i_pthread=''
688 d_pwage=''
689 d_pwchange=''
690 d_pwclass=''
691 d_pwcomment=''
692 d_pwexpire=''
693 d_pwgecos=''
694 d_pwpasswd=''
695 d_pwquota=''
696 i_pwd=''
697 i_sfio=''
698 i_shadow=''
699 i_socks=''
700 i_stddef=''
701 i_stdlib=''
702 i_string=''
703 strings=''
704 i_sunmath=''
705 i_sysaccess=''
706 i_sysdir=''
707 i_sysfile=''
708 d_voidtty=''
709 i_bsdioctl=''
710 i_sysfilio=''
711 i_sysioctl=''
712 i_syssockio=''
713 i_syslog=''
714 i_sysmman=''
715 i_sysmode=''
716 i_sysmount=''
717 i_sysndir=''
718 i_sysparam=''
719 i_sysresrc=''
720 i_syssecrt=''
721 i_sysselct=''
722 i_sysstat=''
723 i_sysstatfs=''
724 i_sysstatvfs=''
725 i_systimes=''
726 i_systypes=''
727 i_sysuio=''
728 i_sysun=''
729 i_sysutsname=''
730 i_sysvfs=''
731 i_syswait=''
732 i_sgtty=''
733 i_termio=''
734 i_termios=''
735 i_systime=''
736 i_systimek=''
737 i_time=''
738 timeincl=''
739 i_unistd=''
740 i_ustat=''
741 i_utime=''
742 i_values=''
743 i_stdarg=''
744 i_varargs=''
745 i_varhdr=''
746 i_vfork=''
747 inc_version_list=''
748 inc_version_list_init=''
749 installprefix=''
750 installprefixexp=''
751 installstyle=''
752 installusrbinperl=''
753 intsize=''
754 longsize=''
755 shortsize=''
756 issymlink=''
757 libc=''
758 ldlibpthname=''
759 libperl=''
760 shrpenv=''
761 useshrplib=''
762 glibpth=''
763 libpth=''
764 loclibpth=''
765 plibpth=''
766 xlibpth=''
767 ignore_versioned_solibs=''
768 libs=''
769 libsdirs=''
770 libsfiles=''
771 libsfound=''
772 libspath=''
773 lns=''
774 d_PRIEUldbl=''
775 d_PRIFUldbl=''
776 d_PRIGUldbl=''
777 d_PRIeldbl=''
778 d_PRIfldbl=''
779 d_PRIgldbl=''
780 d_SCNfldbl=''
781 sPRIEUldbl=''
782 sPRIFUldbl=''
783 sPRIGUldbl=''
784 sPRIeldbl=''
785 sPRIfldbl=''
786 sPRIgldbl=''
787 sSCNfldbl=''
788 lseeksize=''
789 lseektype=''
790 make_set_make=''
791 d_mymalloc=''
792 freetype=''
793 mallocobj=''
794 mallocsrc=''
795 malloctype=''
796 usemymalloc=''
797 installman1dir=''
798 man1dir=''
799 man1direxp=''
800 man1ext=''
801 installman3dir=''
802 man3dir=''
803 man3direxp=''
804 man3ext=''
805 modetype=''
806 multiarch=''
807 mydomain=''
808 myhostname=''
809 phostname=''
810 c=''
811 n=''
812 d_eofnblk=''
813 eagain=''
814 o_nonblock=''
815 rd_nodata=''
816 need_va_copy=''
817 netdb_hlen_type=''
818 netdb_host_type=''
819 netdb_name_type=''
820 netdb_net_type=''
821 groupcat=''
822 hostcat=''
823 passcat=''
824 orderlib=''
825 ranlib=''
826 d_perl_otherlibdirs=''
827 otherlibdirs=''
828 package=''
829 spackage=''
830 pager=''
831 api_revision=''
832 api_subversion=''
833 api_version=''
834 api_versionstring=''
835 patchlevel=''
836 perl_patchlevel=''
837 revision=''
838 subversion=''
839 version=''
840 perl5=''
841 perladmin=''
842 perlpath=''
843 d_nv_preserves_uv=''
844 d_nv_preserves_uv_bits=''
845 i16size=''
846 i16type=''
847 i32size=''
848 i32type=''
849 i64size=''
850 i64type=''
851 i8size=''
852 i8type=''
853 ivsize=''
854 ivtype=''
855 nvsize=''
856 nvtype=''
857 u16size=''
858 u16type=''
859 u32size=''
860 u32type=''
861 u64size=''
862 u64type=''
863 u8size=''
864 u8type=''
865 uvsize=''
866 uvtype=''
867 ivdformat=''
868 nvEUformat=''
869 nvFUformat=''
870 nvGUformat=''
871 nveformat=''
872 nvfformat=''
873 nvgformat=''
874 uvXUformat=''
875 uvoformat=''
876 uvuformat=''
877 uvxformat=''
878 pidtype=''
879 prefix=''
880 prefixexp=''
881 installprivlib=''
882 privlib=''
883 privlibexp=''
884 prototype=''
885 ptrsize=''
886 d_PRIXU64=''
887 d_PRId64=''
888 d_PRIi64=''
889 d_PRIo64=''
890 d_PRIu64=''
891 d_PRIx64=''
892 sPRIXU64=''
893 sPRId64=''
894 sPRIi64=''
895 sPRIo64=''
896 sPRIu64=''
897 sPRIx64=''
898 d_quad=''
899 quadkind=''
900 quadtype=''
901 uquadtype=''
902 drand01=''
903 randbits=''
904 randfunc=''
905 randseedtype=''
906 seedfunc=''
907 installscript=''
908 scriptdir=''
909 scriptdirexp=''
910 selectminbits=''
911 selecttype=''
912 sh=''
913 sig_count=''
914 sig_name=''
915 sig_name_init=''
916 sig_num=''
917 sig_num_init=''
918 sig_size=''
919 installsitearch=''
920 sitearch=''
921 sitearchexp=''
922 installsitebin=''
923 sitebin=''
924 sitebinexp=''
925 installsitelib=''
926 sitelib=''
927 sitelib_stem=''
928 sitelibexp=''
929 siteprefix=''
930 siteprefixexp=''
931 sizesize=''
932 sizetype=''
933 so=''
934 socksizetype=''
935 sharpbang=''
936 shsharp=''
937 spitshell=''
938 src=''
939 ssizetype=''
940 startperl=''
941 startsh=''
942 stdchar=''
943 d_stdio_stream_array=''
944 stdio_stream_array=''
945 sysman=''
946 trnl=''
947 uidformat=''
948 uidsign=''
949 uidsize=''
950 uidtype=''
951 archname64=''
952 use64bitall=''
953 use64bitint=''
954 ccflags_uselargefiles=''
955 ldflags_uselargefiles=''
956 libswanted_uselargefiles=''
957 uselargefiles=''
958 uselongdouble=''
959 usemorebits=''
960 usemultiplicity=''
961 nm_opt=''
962 nm_so_opt=''
963 runnm=''
964 usenm=''
965 useperlio=''
966 usesocks=''
967 d_oldpthreads=''
968 use5005threads=''
969 useithreads=''
970 usereentrant=''
971 usethreads=''
972 incpath=''
973 mips_type=''
974 usrinc=''
975 d_vendorarch=''
976 installvendorarch=''
977 vendorarch=''
978 vendorarchexp=''
979 d_vendorbin=''
980 installvendorbin=''
981 vendorbin=''
982 vendorbinexp=''
983 d_vendorlib=''
984 installvendorlib=''
985 vendorlib=''
986 vendorlib_stem=''
987 vendorlibexp=''
988 usevendorprefix=''
989 vendorprefix=''
990 vendorprefixexp=''
991 versiononly=''
992 defvoidused=''
993 voidflags=''
994 pm_apiversion=''
995 xs_apiversion=''
996 yacc=''
997 yaccflags=''
998 CONFIG=''
999
1000 define='define'
1001 undef='undef'
1002 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1003 rmlist=''
1004
1005 : We must find out about Eunice early
1006 eunicefix=':'
1007 if test -f /etc/unixtovms; then
1008         eunicefix=/etc/unixtovms
1009 fi
1010 if test -f /etc/unixtovms.exe; then
1011         eunicefix=/etc/unixtovms.exe
1012 fi
1013
1014 i_whoami=''
1015 ccname=''
1016 ccversion=''
1017 perllibs=''
1018 : set useposix=false in your hint file to disable the POSIX extension.
1019 useposix=true
1020 : set useopcode=false in your hint file to disable the Opcode extension.
1021 useopcode=true
1022 : Trailing extension.  Override this in a hint file, if needed.
1023 _exe=''
1024 : Extra object files, if any, needed on this platform.
1025 archobjs=''
1026 archname=''
1027 : Possible local include directories to search.
1028 : Set locincpth to "" in a hint file to defeat local include searches.
1029 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1030 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1031 :
1032 : no include file wanted by default
1033 inclwanted=''
1034
1035 groupstype=''
1036 libnames=''
1037 : change the next line if compiling for Xenix/286 on Xenix/386
1038 xlibpth='/usr/lib/386 /lib/386'
1039 : Possible local library directories to search.
1040 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1041 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1042
1043 : general looking path for locating libraries
1044 glibpth="/lib /usr/lib $xlibpth"
1045 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1046 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1047 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1048
1049 : Private path used by Configure to find libraries.  Its value
1050 : is prepended to libpth. This variable takes care of special
1051 : machines, like the mips.  Usually, it should be empty.
1052 plibpth=''
1053
1054 : default library list
1055 libswanted=''
1056 : some systems want to use only the non-versioned libso:s
1057 ignore_versioned_solibs=''
1058 archname64=''
1059 ccflags_uselargefiles=''
1060 ldflags_uselargefiles=''
1061 libswanted_uselargefiles=''
1062 : set usemultiplicity on the Configure command line to enable multiplicity.
1063 : set usesocks on the Configure command line to enable socks.
1064 : set usethreads on the Configure command line to enable threads.
1065 usereentrant='undef'
1066 : full support for void wanted by default
1067 defvoidused=15
1068
1069 : List of libraries we want.
1070 : If anyone needs -lnet, put it in a hint file.
1071 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1072 libswanted="$libswanted dld ld sun m c cposix posix"
1073 libswanted="$libswanted ndir dir crypt sec"
1074 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1075 : We probably want to search /usr/shlib before most other libraries.
1076 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1077 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1078 glibpth="/usr/shlib $glibpth"
1079 : Do not use vfork unless overridden by a hint file.
1080 usevfork=false
1081
1082 : Find the basic shell for Bourne shell scripts
1083 case "$sh" in
1084 '')
1085         case "$SYSTYPE" in
1086         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1087         *) xxx='/bin/sh';;
1088         esac
1089         if test -f "$xxx"; then
1090                 sh="$xxx"
1091         else
1092                 : Build up a list and do a single loop so we can 'break' out.
1093                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1094                 for xxx in sh bash ksh pdksh ash; do
1095                         for p in $pth; do
1096                                 try="$try ${p}/${xxx}"
1097                         done
1098                 done
1099                 for xxx in $try; do
1100                         if test -f "$xxx"; then
1101                                 sh="$xxx";
1102                                 break
1103                         elif test -f "$xxx.exe"; then
1104                                 sh="$xxx";
1105                                 break
1106                         fi
1107                 done
1108         fi
1109         ;;
1110 esac
1111
1112 case "$sh" in
1113 '')     cat <<EOM >&2
1114 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1115
1116 Usually it's in /bin/sh.  How did you even get this far?
1117 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1118 we'll try to straighten this all out.
1119 EOM
1120         exit 1
1121         ;;
1122 esac
1123
1124 : see if sh knows # comments
1125 if `$sh -c '#' >/dev/null 2>&1`; then
1126         shsharp=true
1127         spitshell=cat
1128         xcat=/bin/cat
1129         test -f $xcat || xcat=/usr/bin/cat
1130         echo "#!$xcat" >sharp
1131         $eunicefix sharp
1132         chmod +x sharp
1133         ./sharp > today
1134         if test -s today; then
1135                 sharpbang='#!'
1136         else
1137                 echo "#! $xcat" > sharp
1138                 $eunicefix sharp
1139                 chmod +x sharp
1140                 ./sharp > today
1141                 if test -s today; then
1142                         sharpbang='#! '
1143                 else
1144                         sharpbang=': use '
1145                 fi
1146         fi
1147 else
1148         echo " "
1149         echo "Your $sh doesn't grok # comments--I will strip them later on."
1150         shsharp=false
1151         cd ..
1152         echo "exec grep -v '^[  ]*#'" >spitshell
1153         chmod +x spitshell
1154         $eunicefix spitshell
1155         spitshell=`pwd`/spitshell
1156         cd UU
1157         echo "I presume that if # doesn't work, #! won't work either!"
1158         sharpbang=': use '
1159 fi
1160 rm -f sharp today
1161
1162 : figure out how to guarantee sh startup
1163 case "$startsh" in
1164 '') startsh=${sharpbang}${sh} ;;
1165 *)
1166 esac
1167 cat >sharp <<EOSS
1168 $startsh
1169 set abc
1170 test "$?abc" != 1
1171 EOSS
1172
1173 chmod +x sharp
1174 $eunicefix sharp
1175 if ./sharp; then
1176         : echo "Yup, it does."
1177 else
1178         echo "Hmm... '$startsh' does not guarantee sh startup..."
1179         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1180 fi
1181 rm -f sharp
1182
1183
1184 : Save command line options in file UU/cmdline.opt for later use in
1185 : generating config.sh.
1186 cat > cmdline.opt <<EOSH
1187 # Configure command line arguments.
1188 config_arg0='$0'
1189 config_args='$*'
1190 config_argc=$#
1191 EOSH
1192 argn=1
1193 for arg in "$@"; do
1194         cat >>cmdline.opt <<EOSH
1195 config_arg$argn='$arg'
1196 EOSH
1197         argn=`expr $argn + 1`
1198 done
1199
1200 : produce awk script to parse command line options
1201 cat >options.awk <<'EOF'
1202 BEGIN {
1203         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1204
1205         len = length(optstr);
1206         for (i = 1; i <= len; i++) {
1207                 c = substr(optstr, i, 1);
1208                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1209                 if (a == ":") {
1210                         arg[c] = 1;
1211                         i++;
1212                 }
1213                 opt[c] = 1;
1214         }
1215 }
1216 {
1217         expect = 0;
1218         str = $0;
1219         if (substr(str, 1, 1) != "-") {
1220                 printf("'%s'\n", str);
1221                 next;
1222         }
1223         len = length($0);
1224         for (i = 2; i <= len; i++) {
1225                 c = substr(str, i, 1);
1226                 if (!opt[c]) {
1227                         printf("-%s\n", substr(str, i));
1228                         next;
1229                 }
1230                 printf("-%s\n", c);
1231                 if (arg[c]) {
1232                         if (i < len)
1233                                 printf("'%s'\n", substr(str, i + 1));
1234                         else
1235                                 expect = 1;
1236                         next;
1237                 }
1238         }
1239 }
1240 END {
1241         if (expect)
1242                 print "?";
1243 }
1244 EOF
1245
1246 : process the command line options
1247 set X `for arg in "$@"; do echo "X$arg"; done |
1248         sed -e s/X// | awk -f options.awk`
1249 eval "set $*"
1250 shift
1251 rm -f options.awk
1252
1253 : set up default values
1254 fastread=''
1255 reuseval=false
1256 config_sh=''
1257 alldone=''
1258 error=''
1259 silent=''
1260 extractsh=''
1261 override=''
1262 knowitall=''
1263 rm -f optdef.sh posthint.sh
1264 cat >optdef.sh <<EOS
1265 $startsh
1266 EOS
1267
1268
1269 : option parsing
1270 while test $# -gt 0; do
1271         case "$1" in
1272         -d) shift; fastread=yes;;
1273         -e) shift; alldone=cont;;
1274         -f)
1275                 shift
1276                 cd ..
1277                 if test -r "$1"; then
1278                         config_sh="$1"
1279                 else
1280                         echo "$me: cannot read config file $1." >&2
1281                         error=true
1282                 fi
1283                 cd UU
1284                 shift;;
1285         -h) shift; error=true;;
1286         -r) shift; reuseval=true;;
1287         -s) shift; silent=true; realsilent=true;;
1288         -E) shift; alldone=exit;;
1289         -K) shift; knowitall=true;;
1290         -O) shift; override=true;;
1291         -S) shift; silent=true; extractsh=true;;
1292         -D)
1293                 shift
1294                 case "$1" in
1295                 *=)
1296                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1297                         echo "$me: ignoring -D $1" >&2
1298                         ;;
1299                 *=*) echo "$1" | \
1300                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1301                 *) echo "$1='define'" >> optdef.sh;;
1302                 esac
1303                 shift
1304                 ;;
1305         -U)
1306                 shift
1307                 case "$1" in
1308                 *=) echo "$1" >> optdef.sh;;
1309                 *=*)
1310                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1311                         echo "$me: ignoring -U $1" >&2
1312                         ;;
1313                 *) echo "$1='undef'" >> optdef.sh;;
1314                 esac
1315                 shift
1316                 ;;
1317         -A)
1318             shift
1319             xxx=''
1320             yyy="$1"
1321             zzz=''
1322             uuu=undef
1323             case "$yyy" in
1324             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1325                  case "$zzz" in
1326                  *:*) zzz='' ;;
1327                  *)   xxx=append
1328                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1329                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1330                  esac
1331                  ;;
1332             esac
1333             case "$xxx" in
1334             '')  case "$yyy" in
1335                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1336                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1337                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1338                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1339                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1340                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1341                  esac
1342                  ;;       
1343             esac
1344             case "$xxx" in
1345             append)
1346                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1347             clear)
1348                 echo "$yyy=''"                  >> posthint.sh ;;
1349             define)
1350                 case "$zzz" in
1351                 '') zzz=define ;;
1352                 esac
1353                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1354             eval)
1355                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1356             prepend)
1357                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1358             undef)
1359                 case "$zzz" in
1360                 '') zzz="$uuu" ;;
1361                 esac
1362                 echo "$yyy=$zzz"                >> posthint.sh ;;
1363             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1364             esac
1365             shift
1366             ;;
1367         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1368             exit 0;;
1369         --) break;;
1370         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1371         *) break;;
1372         esac
1373 done
1374
1375 case "$error" in
1376 true)
1377         cat >&2 <<EOM
1378 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1379                  [-U symbol] [-U symbol=] [-A command:symbol...]
1380   -d : use defaults for all answers.
1381   -e : go on without questioning past the production of config.sh.
1382   -f : specify an alternate default configuration file.
1383   -h : print this help message and exit (with an error status).
1384   -r : reuse C symbols value if possible (skips costly nm extraction).
1385   -s : silent mode, only echoes questions and essential information.
1386   -D : define symbol to have some value:
1387          -D symbol         symbol gets the value 'define'
1388          -D symbol=value   symbol gets the value 'value'
1389   -E : stop at the end of questions, after having produced config.sh.
1390   -K : do not use unless you know what you are doing.
1391   -O : let -D and -U override definitions from loaded configuration file.
1392   -S : perform variable substitutions on all .SH files (can mix with -f)
1393   -U : undefine symbol:
1394          -U symbol    symbol gets the value 'undef'
1395          -U symbol=   symbol gets completely empty
1396   -A : manipulate symbol after the platform specific hints have been applied:
1397          -A symbol=value                append " "value to symbol
1398          -A append:symbol=value         append value to symbol
1399          -A define:symbol=value         define symbol to have value
1400          -A clear:symbol                define symbol to be ''
1401          -A define:symbol               define symbol to be 'define'
1402          -A eval:symbol=value           define symbol to be eval of value
1403          -A prepend:symbol=value        prepend value to symbol
1404          -A undef:symbol                define symbol to be 'undef'
1405          -A undef:symbol=               define symbol to be ''
1406   -V : print version number and exit (with a zero status).
1407 EOM
1408         exit 1
1409         ;;
1410 esac
1411
1412 : Sanity checks
1413 case "$fastread$alldone" in
1414 yescont|yesexit) ;;
1415 *)
1416         case "$extractsh" in
1417         true) ;;
1418         *)
1419                 if test ! -t 0; then
1420                         echo "Say 'sh Configure', not 'sh <Configure'"
1421                         exit 1
1422                 fi
1423                 ;;
1424         esac
1425         ;;
1426 esac
1427
1428 exec 4>&1
1429 case "$silent" in
1430 true) exec 1>/dev/null;;
1431 esac
1432
1433 : run the defines and the undefines, if any, but leave the file out there...
1434 touch optdef.sh
1435 . ./optdef.sh
1436 : create the posthint manipulation script and leave the file out there...
1437 touch posthint.sh
1438
1439 : set package name
1440 package=perl5
1441 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1442 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1443 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1444 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1445 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1446 esac
1447
1448 : Some greps do not return status, grrr.
1449 echo "grimblepritz" >grimble
1450 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1451         contains=contains
1452 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1453         contains=grep
1454 else
1455         contains=contains
1456 fi
1457 rm -f grimble
1458 : the following should work in any shell
1459 case "$contains" in
1460 contains*)
1461         echo " "
1462         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1463         cat >contains <<'EOSS'
1464 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1465 EOSS
1466 chmod +x contains
1467 esac
1468
1469 : Find the path to the source tree
1470 case "$src" in
1471 '') case "$0" in
1472     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1473          case "$src" in
1474          /*)    ;;
1475          .)     ;;
1476          *)     src=`cd ../$src && pwd` ;;
1477          esac
1478          ;;
1479     *)   src='.';;
1480     esac;;
1481 esac
1482 case "$src" in
1483 '')     src=/
1484         rsrc=/
1485         ;;
1486 /*) rsrc="$src";;
1487 *) rsrc="../$src";;
1488 esac
1489 if test -f $rsrc/Configure && \
1490         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1491 then
1492    : found it, so we are ok.
1493 else
1494         rsrc=''
1495         for src in . .. ../.. ../../.. ../../../..; do
1496                 if test -f ../$src/Configure && \
1497                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1498                 then
1499                         rsrc=../$src
1500                         break
1501                 fi
1502         done
1503 fi
1504 case "$rsrc" in
1505 '')
1506         cat <<EOM >&4
1507
1508 Sorry, I can't seem to locate the source dir for $package.  Please start
1509 Configure with an explicit path -- i.e. /some/path/Configure.
1510
1511 EOM
1512         exit 1
1513         ;;
1514 ../.)   rsrc='..';;
1515 *)
1516         echo " "
1517         echo "Sources for $package found in \"$src\"." >&4
1518         ;;
1519 esac
1520
1521 : script used to extract .SH files with variable substitutions
1522 cat >extract <<'EOS'
1523 PERL_CONFIG_SH=true
1524 echo "Doing variable substitutions on .SH files..."
1525 if test -f MANIFEST; then
1526         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1527 else
1528         echo "(Looking for .SH files under the source directory.)"
1529         set x `(cd $src; find . -name "*.SH" -print)`
1530 fi
1531 shift
1532 case $# in
1533 0) set x `(cd $src; echo *.SH)`; shift;;
1534 esac
1535 if test ! -f $src/$1; then
1536         shift
1537 fi
1538 mkdir_p='
1539 name=$1;
1540 create="";
1541 while test $name; do
1542         if test ! -d "$name"; then
1543                 create="$name $create";
1544                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1545                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1546         else
1547                 name="";
1548         fi;
1549 done;
1550 for file in $create; do
1551         mkdir $file;
1552 done
1553 '
1554 for file in $*; do
1555         case "$src" in
1556         ".")
1557                 case "$file" in
1558                 */*)
1559                         dir=`expr X$file : 'X\(.*\)/'`
1560                         file=`expr X$file : 'X.*/\(.*\)'`
1561                         (cd $dir && . ./$file)
1562                         ;;
1563                 *)
1564                         . ./$file
1565                         ;;
1566                 esac
1567                 ;;
1568         *)
1569                 case "$file" in
1570                 */*)
1571                         dir=`expr X$file : 'X\(.*\)/'`
1572                         file=`expr X$file : 'X.*/\(.*\)'`
1573                         (set x $dir; shift; eval $mkdir_p)
1574                         sh <$src/$dir/$file
1575                         ;;
1576                 *)
1577                         sh <$src/$file
1578                         ;;
1579                 esac
1580                 ;;
1581         esac
1582 done
1583 if test -f $src/config_h.SH; then
1584         if test ! -f config.h; then
1585         : oops, they left it out of MANIFEST, probably, so do it anyway.
1586         . $src/config_h.SH
1587         fi
1588 fi
1589 EOS
1590
1591 : extract files and exit if asked to do so
1592 case "$extractsh" in
1593 true)
1594         case "$realsilent" in
1595         true) ;;
1596         *) exec 1>&4;;
1597         esac
1598         case "$config_sh" in
1599         '') config_sh='config.sh';;
1600         esac
1601         echo " "
1602         echo "Fetching answers from $config_sh..."
1603         cd ..
1604         . $config_sh
1605         test "$override" && . ./optdef.sh
1606         echo " "
1607         . UU/extract
1608         rm -rf UU
1609         echo "Extraction done."
1610         exit 0
1611         ;;
1612 esac
1613
1614 : Eunice requires " " instead of "", can you believe it
1615 echo " "
1616 : Here we go...
1617 echo "Beginning of configuration questions for $package."
1618
1619 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1620
1621 : first determine how to suppress newline on echo command
1622 echo " "
1623 echo "Checking echo to see how to suppress newlines..."
1624 (echo "hi there\c" ; echo " ") >.echotmp
1625 if $contains c .echotmp >/dev/null 2>&1 ; then
1626         echo "...using -n."
1627         n='-n'
1628         c=''
1629 else
1630         cat <<'EOM'
1631 ...using \c
1632 EOM
1633         n=''
1634         c='\c'
1635 fi
1636 echo $n "The star should be here-->$c"
1637 echo '*'
1638 rm -f .echotmp
1639
1640 : Now test for existence of everything in MANIFEST
1641 echo " "
1642 if test -f $rsrc/MANIFEST; then
1643         echo "First let's make sure your kit is complete.  Checking..." >&4
1644         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1645         rm -f missing
1646         tmppwd=`pwd`
1647         for filelist in x??; do
1648                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1649         done
1650         if test -s missing; then
1651                 cat missing >&4
1652                 cat >&4 <<'EOM'
1653
1654 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1655
1656 You have the option of continuing the configuration process, despite the
1657 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1658 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1659 and contact the author (perlbug@perl.org).
1660
1661 EOM
1662                 echo $n "Continue? [n] $c" >&4
1663                 read ans
1664                 case "$ans" in
1665                 y*)
1666                         echo "Continuing..." >&4
1667                         rm -f missing
1668                         ;;
1669                 *)
1670                         echo "ABORTING..." >&4
1671                         kill $$
1672                         ;;
1673                 esac
1674         else
1675                 echo "Looks good..."
1676         fi
1677 else
1678         echo "There is no MANIFEST file.  I hope your kit is complete !"
1679 fi
1680 rm -f missing x??
1681
1682 echo " "
1683 : Find the appropriate value for a newline for tr
1684 if test -n "$DJGPP"; then
1685        trnl='\012'
1686 fi
1687 if test X"$trnl" = X; then
1688         case "`echo foo|tr '\n' x 2>/dev/null`" in
1689         foox) trnl='\n' ;;
1690         esac
1691 fi
1692 if test X"$trnl" = X; then
1693         case "`echo foo|tr '\012' x 2>/dev/null`" in
1694         foox) trnl='\012' ;;
1695         esac
1696 fi
1697 if test X"$trnl" = X; then
1698         cat <<EOM >&2
1699
1700 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1701
1702 EOM
1703         exit 1
1704 fi
1705
1706 : compute the number of columns on the terminal for proper question formatting
1707 case "$COLUMNS" in
1708 '') COLUMNS='80';;
1709 esac
1710
1711 : set up the echo used in my read
1712 myecho="case \"\$xxxm\" in
1713 '') echo $n \"\$rp $c\" >&4;;
1714 *) case \"\$rp\" in
1715         '') echo $n \"[\$xxxm] $c\";;
1716         *)
1717                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1718                         echo \"\$rp\" >&4
1719                         echo $n \"[\$xxxm] $c\" >&4
1720                 else
1721                         echo $n \"\$rp [\$xxxm] $c\" >&4
1722                 fi
1723                 ;;
1724         esac;;
1725 esac"
1726
1727 : now set up to do reads with possible shell escape and default assignment
1728 cat <<EOSC >myread
1729 $startsh
1730 xxxm=\$dflt
1731 $myecho
1732 ans='!'
1733 case "\$fastread" in
1734 yes) case "\$dflt" in
1735         '') ;;
1736         *) ans='';
1737                 case "\$silent-\$rp" in
1738                 true-) ;;
1739                 *) echo " " >&4;;
1740                 esac;;
1741         esac;;
1742 *) case "\$silent" in
1743         true) case "\$rp" in
1744                 '') ans='';;
1745                 esac;;
1746         esac;;
1747 esac
1748 while expr "X\$ans" : "X!" >/dev/null; do
1749         read answ
1750         set x \$xxxm
1751         shift
1752         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1753         case  "\$answ" in
1754         "!")
1755                 sh 1>&4
1756                 echo " "
1757                 $myecho
1758                 ;;
1759         !*)
1760                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1761                 shift
1762                 sh 1>&4 -c "\$*"
1763                 echo " "
1764                 $myecho
1765                 ;;
1766         "\$ans")
1767                 case "\$ans" in
1768                 \\&*)
1769                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1770                         shift
1771                         case "\$1" in
1772                         -d)
1773                                 fastread=yes
1774                                 echo "(OK, I'll run with -d after this question.)" >&4
1775                                 ;;
1776                         -*)
1777                                 echo "*** Sorry, \$1 not supported yet." >&4
1778                                 ;;
1779                         esac
1780                         $myecho
1781                         ans=!
1782                         ;;
1783                 esac;;
1784         *)
1785                 case "\$aok" in
1786                 y)
1787                         echo "*** Substitution done -- please confirm."
1788                         xxxm="\$ans"
1789                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1790                         xxxm="\$ans"
1791                         ans=!
1792                         ;;
1793                 *)
1794                         echo "*** Error -- try again."
1795                         ans=!
1796                         ;;
1797                 esac
1798                 $myecho
1799                 ;;
1800         esac
1801         case "\$ans\$xxxm\$nostick" in
1802         '')
1803                 ans=!
1804                 $myecho
1805                 ;;
1806         esac
1807 done
1808 case "\$ans" in
1809 '') ans="\$xxxm";;
1810 esac
1811 EOSC
1812
1813 : create .config dir to save info across Configure sessions
1814 test -d ../.config || mkdir ../.config
1815 cat >../.config/README <<EOF
1816 This directory created by Configure to save information that should
1817 persist across sessions for $package.
1818
1819 You may safely delete it if you wish.
1820 EOF
1821
1822 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1823 case "$usedevel" in
1824 $define|true|[yY]*) ;;
1825 *) case "$xversion" in
1826    *[13579])
1827         cat >&4 <<EOH
1828 *** WHOA THERE!!! ***
1829
1830     This is an UNSTABLE DEVELOPMENT release.
1831     The version of this $package distribution is $xversion, that is, odd,
1832     (as opposed to even) and that signifies a development release.
1833     If you want a maintenance release, you want an even-numbered version.
1834
1835     Do ***NOT*** install this into production use.
1836     Data corruption and crashes are possible.
1837
1838     It is most seriously suggested that you do not continue any further
1839     unless you want to help in developing and debugging Perl.
1840
1841     If you *still* want to build perl, you can answer 'y' now,
1842     or pass -Dusedevel to Configure.
1843
1844 EOH
1845         rp='Do you really want to continue?'
1846         dflt='n'
1847         . ./myread
1848         case "$ans" in
1849         [yY]) echo >&4 "Okay, continuing."
1850               usedevel="$define" ;;
1851         *) echo >&4 "Okay, bye."
1852            exit 1
1853            ;;
1854         esac
1855         ;;
1856     esac
1857     ;;
1858 esac
1859 case "$usedevel" in
1860 $define|true|[yY]*)
1861         case "$versiononly" in
1862         '') versiononly="$define" ;;
1863         esac
1864         case "$installusrbinperl" in
1865         '') installusrbinperl="$undef" ;;
1866         esac
1867         ;;
1868 esac
1869
1870 : general instructions
1871 needman=true
1872 firsttime=true
1873 user=`(logname) 2>/dev/null`
1874 case "$user" in
1875 '') user=`whoami 2>&1`;;
1876 esac
1877 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1878         firsttime=false
1879         echo " "
1880         rp='Would you like to see the instructions?'
1881         dflt=n
1882         . ./myread
1883         case "$ans" in
1884         [yY]*) ;;
1885         *) needman=false;;
1886         esac
1887 fi
1888 if $needman; then
1889         cat <<EOH
1890
1891 This installation shell script will examine your system and ask you questions
1892 to determine how the perl5 package should be installed. If you get
1893 stuck on a question, you may use a ! shell escape to start a subshell or
1894 execute a command.  Many of the questions will have default answers in square
1895 brackets; typing carriage return will give you the default.
1896
1897 On some of the questions which ask for file or directory names you are allowed
1898 to use the ~name construct to specify the login directory belonging to "name",
1899 even if you don't have a shell which knows about that.  Questions where this is
1900 allowed will be marked "(~name ok)".
1901
1902 EOH
1903         rp=''
1904         dflt='Type carriage return to continue'
1905         . ./myread
1906         cat <<'EOH'
1907
1908 The prompter used in this script allows you to use shell variables and
1909 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1910 in the default answer, as if the default line was a set of arguments given to a
1911 script shell.  This means you may also use $* to repeat the whole default line,
1912 so you do not have to re-type everything to add something to the default.
1913
1914 Everytime there is a substitution, you will have to confirm.  If there is an
1915 error (e.g. an unmatched backtick), the default answer will remain unchanged
1916 and you will be prompted again.
1917
1918 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1919 the questions and use the computed defaults (or the previous answers if there
1920 was already a config.sh file). Type 'Configure -h' for a list of options.
1921 You may also start interactively and then answer '& -d' at any prompt to turn
1922 on the non-interactive behaviour for the remainder of the execution.
1923
1924 EOH
1925         . ./myread
1926         cat <<EOH
1927
1928 Much effort has been expended to ensure that this shell script will run on any
1929 Unix system.  If despite that it blows up on yours, your best bet is to edit
1930 Configure and run it again.  If you can't run Configure for some reason,
1931 you'll have to generate a config.sh file by hand.  Whatever problems you
1932 have, let me (perlbug@perl.org) know how I blew it.
1933
1934 This installation script affects things in two ways:
1935
1936 1) it may do direct variable substitutions on some of the files included
1937    in this kit.
1938 2) it builds a config.h file for inclusion in C programs.  You may edit
1939    any of these files as the need arises after running this script.
1940
1941 If you make a mistake on a question, there is no easy way to back up to it
1942 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1943 files.  Configure will offer to let you do this before it runs the SH files.
1944
1945 EOH
1946         dflt='Type carriage return to continue'
1947         . ./myread
1948         case "$firsttime" in
1949         true) echo $user >>../.config/instruct;;
1950         esac
1951 fi
1952
1953 : find out where common programs are
1954 echo " "
1955 echo "Locating common programs..." >&4
1956 cat <<EOSC >loc
1957 $startsh
1958 case \$# in
1959 0) exit 1;;
1960 esac
1961 thing=\$1
1962 shift
1963 dflt=\$1
1964 shift
1965 for dir in \$*; do
1966         case "\$thing" in
1967         .)
1968         if test -d \$dir/\$thing; then
1969                 echo \$dir
1970                 exit 0
1971         fi
1972         ;;
1973         *)
1974         for thisthing in \$dir/\$thing; do
1975                 : just loop through to pick last item
1976         done
1977         if test -f \$thisthing; then
1978                 echo \$thisthing
1979                 exit 0
1980         elif test -f \$dir/\$thing.exe; then
1981                 if test -n "$DJGPP"; then
1982                         echo \$dir/\$thing.exe
1983                 else
1984                         : on Eunice apparently
1985                         echo \$dir/\$thing
1986                 fi
1987                 exit 0
1988         fi
1989         ;;
1990         esac
1991 done
1992 echo \$dflt
1993 exit 1
1994 EOSC
1995 chmod +x loc
1996 $eunicefix loc
1997 loclist="
1998 awk
1999 cat
2000 comm
2001 cp
2002 echo
2003 expr
2004 grep
2005 ls
2006 make
2007 mkdir
2008 rm
2009 sed
2010 sort
2011 touch
2012 tr
2013 uniq
2014 "
2015 trylist="
2016 Mcc
2017 ar
2018 bison
2019 byacc
2020 cpp
2021 csh
2022 date
2023 egrep
2024 gzip
2025 less
2026 ln
2027 more
2028 nm
2029 nroff
2030 pg
2031 test
2032 uname
2033 zip
2034 "
2035 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2036 pth="$pth /lib /usr/lib"
2037 for file in $loclist; do
2038         eval xxx=\$$file
2039         case "$xxx" in
2040         /*|?:[\\/]*)
2041                 if test -f "$xxx"; then
2042                         : ok
2043                 else
2044                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2045                         xxx=`./loc $file $file $pth`
2046                 fi
2047                 ;;
2048         '') xxx=`./loc $file $file $pth`;;
2049         *) xxx=`./loc $xxx $xxx $pth`;;
2050         esac
2051         eval $file=$xxx
2052         eval _$file=$xxx
2053         case "$xxx" in
2054         /*)
2055                 echo $file is in $xxx.
2056                 ;;
2057         ?:[\\/]*)
2058                 echo $file is in $xxx.
2059                 ;;
2060         *)
2061                 echo "I don't know where '$file' is, and my life depends on it." >&4
2062                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2063                 exit 1
2064                 ;;
2065         esac
2066 done
2067 echo " "
2068 echo "Don't worry if any of the following aren't found..."
2069 say=offhand
2070 for file in $trylist; do
2071         eval xxx=\$$file
2072         case "$xxx" in
2073         /*|?:[\\/]*)
2074                 if test -f "$xxx"; then
2075                         : ok
2076                 else
2077                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2078                         xxx=`./loc $file $file $pth`
2079                 fi
2080                 ;;
2081         '') xxx=`./loc $file $file $pth`;;
2082         *) xxx=`./loc $xxx $xxx $pth`;;
2083         esac
2084         eval $file=$xxx
2085         eval _$file=$xxx
2086         case "$xxx" in
2087         /*)
2088                 echo $file is in $xxx.
2089                 ;;
2090         ?:[\\/]*)
2091                 echo $file is in $xxx.
2092                 ;;
2093         *)
2094                 echo "I don't see $file out there, $say."
2095                 say=either
2096                 ;;
2097         esac
2098 done
2099 case "$egrep" in
2100 egrep)
2101         echo "Substituting grep for egrep."
2102         egrep=$grep
2103         ;;
2104 esac
2105 case "$ln" in
2106 ln)
2107         echo "Substituting cp for ln."
2108         ln=$cp
2109         ;;
2110 esac
2111 case "$test" in
2112 test)
2113         echo "Hopefully test is built into your sh."
2114         ;;
2115 *)
2116         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2117                 echo "Using the test built into your sh."
2118                 test=test
2119                 _test=test
2120         fi
2121         ;;
2122 esac
2123 case "$echo" in
2124 echo)
2125         echo "Hopefully echo is built into your sh."
2126         ;;
2127 '') ;;
2128 *)
2129         echo " "
2130 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2131         $echo $n "hi there$c" >foo1
2132         echo $n "hi there$c" >foo2
2133         if cmp foo1 foo2 >/dev/null 2>&1; then
2134                 echo "They are compatible.  In fact, they may be identical."
2135         else
2136                 case "$n" in
2137                 '-n') n='' c='\c';;
2138                 *) n='-n' c='';;
2139                 esac
2140                 cat <<FOO
2141 They are not compatible!  You are probably running ksh on a non-USG system.
2142 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2143 have echo built in and we may have to run some Bourne shell scripts.  That
2144 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2145
2146 FOO
2147                 $echo $n "The star should be here-->$c"
2148                 $echo "*"
2149         fi
2150         $rm -f foo1 foo2
2151         ;;
2152 esac
2153
2154 cat <<EOS >checkcc
2155 $startsh
2156 EOS
2157 cat <<'EOSC' >>checkcc
2158 case "$cc" in
2159 '') ;;
2160 *)  $rm -f try try.*
2161     $cat >try.c <<EOM
2162 int main(int argc, char *argv[]) {
2163   return 0;
2164 }
2165 EOM
2166     if $cc -o try $ccflags $ldflags try.c; then
2167        :
2168     else
2169         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2170         despair=yes
2171         trygcc=yes
2172         case "$cc" in
2173         *gcc*) trygcc=no ;;
2174         esac
2175         case "`$cc -v -c try.c 2>&1`" in
2176         *gcc*) trygcc=no ;;
2177         esac
2178         if $test X"$trygcc" = Xyes; then
2179             if gcc -o try -c try.c; then
2180                 echo " "
2181                 echo "You seem to have a working gcc, though." >&4
2182                 rp="Would you like to use it?"
2183                 dflt=y
2184                 if $test -f myread; then
2185                     . ./myread
2186                 else
2187                     if $test -f UU/myread; then
2188                         . ./UU/myread
2189                     else
2190                         echo "Cannot find myread, sorry.  Aborting." >&2
2191                         exit 1
2192                     fi
2193                 fi  
2194                 case "$ans" in
2195                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2196                 esac
2197             fi
2198         fi
2199         if $test X"$despair" = Xyes; then
2200             $cat >&4 <<EOM
2201 You need to find a working C compiler.
2202 Either (purchase and) install the C compiler supplied by your OS vendor,
2203 or for a free C compiler try http://gcc.gnu.org/
2204 I cannot continue any further, aborting.
2205 EOM
2206             exit 1
2207         fi
2208     fi
2209     $rm -f try try.*
2210     ;;
2211 esac
2212 EOSC
2213
2214 : determine whether symbolic links are supported
2215 echo " "
2216 $touch blurfl
2217 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2218         echo "Symbolic links are supported." >&4
2219         lns="$ln -s"
2220 else
2221         echo "Symbolic links are NOT supported." >&4
2222         lns="$ln"
2223 fi
2224 $rm -f blurfl sym
2225
2226 : determine whether symbolic links are supported
2227 echo " "
2228 case "$lns" in
2229 *"ln -s")
2230         echo "Checking how to test for symbolic links..." >&4
2231         $lns blurfl sym
2232         if $test "X$issymlink" = X; then
2233                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2234                 if test $? = 0; then
2235                         issymlink="test -h"
2236                 fi              
2237         fi
2238         if $test "X$issymlink" = X; then
2239                 if  $test -h >/dev/null 2>&1; then
2240                         issymlink="$test -h"
2241                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2242                 fi              
2243         fi
2244         if $test "X$issymlink" = X; then
2245                 if $test -L sym 2>/dev/null; then
2246                         issymlink="$test -L"
2247                 fi
2248         fi
2249         if $test "X$issymlink" != X; then
2250                 echo "You can test for symbolic links with '$issymlink'." >&4
2251         else
2252                 echo "I do not know how you can test for symbolic links." >&4
2253         fi
2254         $rm -f blurfl sym
2255         ;;
2256 *)      echo "No symbolic links, so not testing for their testing..." >&4
2257         ;;
2258 esac
2259 echo " "
2260
2261
2262 case "$mksymlinks" in
2263 $define|true|[yY]*)
2264         case "$src" in
2265         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2266                 exit 1
2267                 ;;
2268         *)      case "$lns:$issymlink" in
2269                 *"ln -s:"*"test -"?)
2270                         echo "Creating the symbolic links..." >&4
2271                         echo "(First creating the subdirectories...)" >&4
2272                         cd ..
2273                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2274                                 read directory
2275                                 test -z "$directory" && break
2276                                 mkdir -p $directory
2277                         done
2278                         # Sanity check 1.
2279                         if test ! -d t/base; then
2280                                 echo "Failed to create the subdirectories.  Aborting." >&4
2281                                 exit 1
2282                         fi
2283                         echo "(Then creating the symlinks...)" >&4
2284                         awk '{print $1}' $src/MANIFEST | while true; do
2285                                 read filename
2286                                 test -z "$filename" && break
2287                                 if test -f $filename; then
2288                                         if $issymlink $filename; then
2289                                                 rm -f $filename
2290                                         fi
2291                                 fi
2292                                 if test -f $filename; then
2293                                         echo "$filename already exists, not symlinking."
2294                                 else
2295                                         ln -s $src/$filename $filename
2296                                 fi
2297                         done
2298                         # Sanity check 2.
2299                         if test ! -f t/base/commonsense.t; then
2300                                 echo "Failed to create the symlinks.  Aborting." >&4
2301                                 exit 1
2302                         fi
2303                         cd UU
2304                         ;;
2305                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2306                         ;;
2307                 esac
2308                 ;;
2309         esac
2310         ;;
2311 esac
2312
2313
2314 case "$usecrosscompile" in
2315 $define|true|[yY]*)
2316         $echo "Cross-compiling..."
2317         croak=''
2318         case "$cc" in
2319         *-*-gcc) # A cross-compiling gcc, probably.
2320             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2321             ar=$targetarch-ar
2322             # leave out ld, choosing it is more complex
2323             nm=$targetarch-nm
2324             ranlib=$targetarch-ranlib
2325             $echo 'extern int foo;' > try.c
2326             set X `$cc -v -E perl.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2327             shift
2328             if $test $# -gt 0; then
2329                 incpth="$incpth $*"
2330                 incpth="$echo $incpth|$sed 's/^ //'"
2331                 echo "Guessing incpth $incpth" >&4
2332                 for i in $*; do
2333                     j=`$echo $i|$sed 's,/include$,/lib,'`
2334                     if $test -d $j; then
2335                         libpth="$libpth $j"
2336                     fi
2337                 done   
2338                 libpth="$echo $libpth|$sed 's/^ //'"
2339                 echo "Guessing libpth $libpth." >&4
2340             fi
2341             $rm -f try.c
2342             ;;
2343         esac
2344         case "$targetarch" in
2345         '') echo "Targetarch not defined." >&4; croak=y ;;
2346         *)  echo "Using targetarch $targetarch." >&4 ;;
2347         esac
2348         case "$incpth" in
2349         '') echo "Incpth not defined." >&4; croak=y ;;
2350         *)  echo "Using incpth $incpth." >&4 ;;
2351         esac
2352         case "$libpth" in
2353         '') echo "Libpth not defined." >&4; croak=y ;;
2354         *)  echo "Using libpth $libpth." >&4 ;;
2355         esac
2356         case "$usrinc" in
2357         '') for i in $incpth; do
2358                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2359                     usrinc=$i
2360                     echo "Guessing usrinc $usrinc." >&4
2361                     break
2362                 fi
2363             done
2364             case "$usrinc" in
2365             '') echo "Usrinc not defined." >&4; croak=y ;;
2366             esac
2367             ;;
2368         *)  echo "Using usrinc $usrinc." >&4 ;;
2369         esac
2370         case "$targethost" in
2371         '') echo "Targethost not defined." >&4; croak=y ;;
2372         *)  echo "Using targethost $targethost." >&4
2373         esac
2374         locincpth=' '
2375         loclibpth=' '
2376         case "$croak" in
2377         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2378         esac
2379         case "$src" in
2380         /*) run=$src/Cross/run
2381             targetmkdir=$src/Cross/mkdir
2382             to=$src/Cross/to
2383             from=$src/Cross/from
2384             ;;
2385         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2386             run=$pwd/Cross/run
2387             targetmkdir=$pwd/Cross/mkdirkrun
2388             to=$pwd/Cross/to
2389             from=$pwd/Cross/from
2390             ;;
2391         esac
2392         case "$targetrun" in
2393         '') targetrun=ssh ;;
2394         esac
2395         case "$targetto" in
2396         '') targetto=scp ;;
2397         esac
2398         case "$targetfrom" in
2399         '') targetfrom=scp ;;
2400         esac
2401         run=$run-$targetrun
2402         to=$to-$targetto
2403         from=$from-$targetfrom
2404         case "$targetdir" in
2405         '')  targetdir=/tmp
2406              echo "Guessing targetdir $targetdir." >&4
2407              ;;
2408         esac
2409         case "$targetuser" in
2410         '')  targetuser=root
2411              echo "Guessing targetuser $targetuser." >&4
2412              ;;
2413         esac
2414         case "$targetfrom" in
2415         scp)    q=-q ;;
2416         *)      q='' ;;
2417         esac
2418         case "$targetrun" in
2419         ssh|rsh)
2420             cat >$run <<EOF
2421 #!/bin/sh
2422 case "\$1" in
2423 -cwd)
2424   shift
2425   cwd=\$1
2426   shift
2427   ;;
2428 esac
2429 case "\$cwd" in
2430 '') cwd=$targetdir ;;
2431 esac
2432 exe=\$1
2433 shift
2434 if $test ! -f \$exe.xok; then
2435   $to \$exe
2436   $touch \$exe.xok
2437 fi
2438 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2439 EOF
2440             ;;
2441         *)  echo "Unknown targetrun '$targetrun'" >&4
2442             exit 1
2443             ;;
2444         esac
2445         case "$targetmkdir" in
2446         */Cross/mkdir)
2447             cat >$targetmkdir <<EOF
2448 #!/bin/sh
2449 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2450 EOF
2451             ;;
2452         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2453             exit 1
2454             ;;
2455         esac
2456         case "$targetto" in
2457         scp|rcp)
2458             cat >$to <<EOF
2459 #!/bin/sh
2460 for f in \$@
2461 do
2462   case "\$f" in
2463   /*)
2464     $targetmkdir \`dirname \$f\`
2465     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2466     ;;
2467   *)
2468     $targetmkdir $targetdir/\`dirname \$f\`
2469     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2470     ;;
2471   esac
2472 done
2473 exit 0
2474 EOF
2475             ;;
2476         cp) cat >$to <<EOF
2477 #!/bin/sh
2478 for f in \$@
2479 do
2480   case "\$f" in
2481   /*)
2482     $mkdir -p $targetdir/\`dirname \$f\`
2483     $cp \$f $targetdir/\$f || exit 1
2484     ;;
2485   *)
2486     $targetmkdir $targetdir/\`dirname \$f\`
2487     $cp \$f $targetdir/\$f || exit 1
2488     ;;
2489   esac
2490 done
2491 exit 0
2492 EOF
2493             ;;
2494         *)  echo "Unknown targetto '$targetto'" >&4
2495             exit 1
2496             ;;
2497         esac
2498         case "$targetfrom" in
2499         scp|rcp)
2500           cat >$from <<EOF
2501 #!/bin/sh
2502 for f in \$@
2503 do
2504   $rm -f \$f
2505   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2506 done
2507 exit 0
2508 EOF
2509             ;;
2510         cp) cat >$from <<EOF
2511 #!/bin/sh
2512 for f in \$@
2513 do
2514   $rm -f \$f
2515   cp $targetdir/\$f . || exit 1
2516 done
2517 exit 0
2518 EOF
2519             ;;
2520         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2521             exit 1
2522             ;;
2523         esac
2524         if $test ! -f $run; then
2525             echo "Target 'run' script '$run' not found." >&4
2526         else
2527             chmod a+rx $run
2528         fi
2529         if $test ! -f $to; then
2530             echo "Target 'to' script '$to' not found." >&4
2531         else
2532             chmod a+rx $to
2533         fi
2534         if $test ! -f $from; then
2535             echo "Target 'from' script '$from' not found." >&4
2536         else
2537             chmod a+rx $from
2538         fi
2539         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2540             exit 1
2541         fi
2542         cat >&4 <<EOF
2543 Using '$run' for remote execution, and '$from' and '$to'
2544 for remote file transfer.
2545 EOF
2546         ;;
2547 *)      run=''
2548         to=:
2549         from=:
2550         usecrosscompile='undef'
2551         targetarch=''
2552         ;;
2553 esac
2554
2555 : see whether [:lower:] and [:upper:] are supported character classes
2556 echo " "
2557 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2558 ABYZ)
2559         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2560         up='[:upper:]'
2561         low='[:lower:]'
2562         ;;
2563 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2564         # (0xc9 and 0xd1), therefore that is a nice testing point.
2565         if test "X$up" = X -o "X$low" = X; then
2566             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2567             ij) up='[A-Z]'
2568                 low='[a-z]'
2569                 ;;
2570             esac
2571         fi
2572         if test "X$up" = X -o "X$low" = X; then
2573             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2574             ij) up='A-Z'
2575                 low='a-z'
2576                 ;;
2577             esac
2578         fi
2579         if test "X$up" = X -o "X$low" = X; then
2580             case "`echo IJ | od -x 2>/dev/null`" in
2581             *C9D1*|*c9d1*)
2582                 echo "Hey, this might be EBCDIC." >&4
2583                 if test "X$up" = X -o "X$low" = X; then
2584                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2585                     ij) up='[A-IJ-RS-Z]'
2586                         low='[a-ij-rs-z]'
2587                         ;;
2588                     esac
2589                 fi
2590                 if test "X$up" = X -o "X$low" = X; then
2591                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2592                     ij) up='A-IJ-RS-Z'
2593                         low='a-ij-rs-z'
2594                         ;;
2595                     esac
2596                 fi
2597                 ;;
2598             esac
2599         fi
2600 esac
2601 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2602 ij)
2603     echo "Using $up and $low to convert case." >&4
2604     ;;
2605 *)
2606     echo "I don't know how to translate letters from upper to lower case." >&4
2607     echo "Your tr is not acting any way I know of." >&4
2608     exit 1
2609     ;;
2610 esac
2611 : set up the translation script tr, must be called with ./tr of course
2612 cat >tr <<EOSC
2613 $startsh
2614 case "\$1\$2" in
2615 '[A-Z][a-z]') exec $tr '$up' '$low';;
2616 '[a-z][A-Z]') exec $tr '$low' '$up';;
2617 esac
2618 exec $tr "\$@"
2619 EOSC
2620 chmod +x tr
2621 $eunicefix tr
2622
2623 : Try to determine whether config.sh was made on this system
2624 case "$config_sh" in
2625 '')
2626 myuname=`$uname -a 2>/dev/null`
2627 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2628 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2629 # because the A-Z/a-z are not consecutive.
2630 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2631         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2632 newmyuname="$myuname"
2633 dflt=n
2634 case "$knowitall" in
2635 '')
2636         if test -f ../config.sh; then
2637                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2638                         eval "`grep myuname= ../config.sh`"
2639                 fi
2640                 if test "X$myuname" = "X$newmyuname"; then
2641                         dflt=y
2642                 fi
2643         fi
2644         ;;
2645 *) dflt=y;;
2646 esac
2647
2648 : Get old answers from old config file if Configure was run on the
2649 : same system, otherwise use the hints.
2650 hint=default
2651 cd ..
2652 if test -f config.sh; then
2653         echo " "
2654         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2655         . UU/myread
2656         case "$ans" in
2657         n*|N*) echo "OK, I'll ignore it."
2658                 mv config.sh config.sh.old
2659                 myuname="$newmyuname"
2660                 ;;
2661         *)  echo "Fetching default answers from your old config.sh file..." >&4
2662                 tmp_n="$n"
2663                 tmp_c="$c"
2664                 tmp_sh="$sh"
2665                 . ./config.sh
2666                 cp config.sh UU
2667                 n="$tmp_n"
2668                 c="$tmp_c"
2669                 : Older versions did not always set $sh.  Catch re-use of such
2670                 : an old config.sh.
2671                 case "$sh" in
2672                 '') sh="$tmp_sh" ;;
2673                 esac
2674                 hint=previous
2675                 ;;
2676         esac
2677 fi
2678 . ./UU/checkcc
2679 if test ! -f config.sh; then
2680         $cat <<EOM
2681
2682 First time through, eh?  I have some defaults handy for some systems
2683 that need some extra help getting the Configure answers right:
2684
2685 EOM
2686         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2687         dflt=''
2688         : Half the following guesses are probably wrong... If you have better
2689         : tests or hints, please send them to perlbug@perl.org
2690         : The metaconfig authors would also appreciate a copy...
2691         $test -f /irix && osname=irix
2692         $test -f /xenix && osname=sco_xenix
2693         $test -f /dynix && osname=dynix
2694         $test -f /dnix && osname=dnix
2695         $test -f /lynx.os && osname=lynxos
2696         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2697         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2698         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2699         $test -f /bin/mips && /bin/mips && osname=mips
2700         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2701                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2702         $test -d /usr/apollo/bin && osname=apollo
2703         $test -f /etc/saf/_sactab && osname=svr4
2704         $test -d /usr/include/minix && osname=minix
2705         if $test -d /MachTen -o -d /MachTen_Folder; then
2706                 osname=machten
2707                 if $test -x /sbin/version; then
2708                         osvers=`/sbin/version | $awk '{print $2}' |
2709                         $sed -e 's/[A-Za-z]$//'`
2710                 elif $test -x /usr/etc/version; then
2711                         osvers=`/usr/etc/version | $awk '{print $2}' |
2712                         $sed -e 's/[A-Za-z]$//'`
2713                 else
2714                         osvers="$2.$3"
2715                 fi
2716         fi
2717
2718         $test -f /sys/posix.dll &&
2719                 $test -f /usr/bin/what &&
2720                 set X `/usr/bin/what /sys/posix.dll` &&
2721                 $test "$3" = UWIN &&
2722                 osname=uwin &&
2723                 osvers="$5"
2724
2725         if $test -f $uname; then
2726                 set X $myuname
2727                 shift
2728
2729                 case "$5" in
2730                 fps*) osname=fps ;;
2731                 mips*)
2732                         case "$4" in
2733                         umips) osname=umips ;;
2734                         *) osname=mips ;;
2735                         esac;;
2736                 [23]100) osname=mips ;;
2737                 next*) osname=next ;;
2738                 i386*)
2739                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2740                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2741                                 osname='sco'
2742                                 osvers=$tmp
2743                         elif $test -f /etc/kconfig; then
2744                                 osname=isc
2745                                 if test "$lns" = "$ln -s"; then
2746                                         osvers=4
2747                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2748                                         osvers=3
2749                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2750                                         osvers=2
2751                                 fi
2752                         fi
2753                         tmp=''
2754                         ;;
2755                 pc*)
2756                         if test -n "$DJGPP"; then
2757                                 osname=dos
2758                                 osvers=djgpp
2759                         fi
2760                         ;;
2761                 esac
2762
2763                 case "$1" in
2764                 aix) osname=aix
2765                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2766                         case "$tmp" in
2767                         'not found') osvers="$4"."$3" ;;
2768                         '<3240'|'<>3240') osvers=3.2.0 ;;
2769                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2770                         '=3250'|'>3250') osvers=3.2.5 ;;
2771                         *) osvers=$tmp;;
2772                         esac
2773                         ;;
2774                 bsd386) osname=bsd386
2775                         osvers=`$uname -r`
2776                         ;;
2777                 cygwin*) osname=cygwin
2778                         osvers="$3"
2779                         ;;
2780                 *dc.osx) osname=dcosx
2781                         osvers="$3"
2782                         ;;
2783                 dnix) osname=dnix
2784                         osvers="$3"
2785                         ;;
2786                 domainos) osname=apollo
2787                         osvers="$3"
2788                         ;;
2789                 dgux) osname=dgux 
2790                         osvers="$3"
2791                         ;;
2792                 dynixptx*) osname=dynixptx
2793                         osvers=`echo "$4"|sed 's/^v//'`
2794                         ;;
2795                 freebsd) osname=freebsd 
2796                         osvers="$3" ;;
2797                 genix) osname=genix ;;
2798                 hp*) osname=hpux 
2799                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2800                         ;;
2801                 irix*) osname=irix
2802                         case "$3" in
2803                         4*) osvers=4 ;;
2804                         5*) osvers=5 ;;
2805                         *)      osvers="$3" ;;
2806                         esac
2807                         ;;
2808                 linux) osname=linux
2809                         case "$3" in
2810                         *)      osvers="$3" ;;
2811                         esac
2812                         ;;
2813                 MiNT) osname=mint
2814                         ;;
2815                 netbsd*) osname=netbsd
2816                         osvers="$3"
2817                         ;;
2818                 news-os) osvers="$3"
2819                         case "$3" in
2820                         4*) osname=newsos4 ;;
2821                         *) osname=newsos ;;
2822                         esac
2823                         ;;
2824                 next*) osname=next ;;
2825                 nonstop-ux) osname=nonstopux ;;
2826                 POSIX-BC | posix-bc ) osname=posix-bc
2827                         osvers="$3"
2828                         ;;
2829                 powerux | power_ux | powermax_os | powermaxos | \
2830                 powerunix | power_unix) osname=powerux
2831                         osvers="$3"
2832                         ;;
2833                 qnx) osname=qnx
2834                         osvers="$4"
2835                         ;;
2836                 solaris) osname=solaris
2837                         case "$3" in
2838                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2839                         *)      osvers="$3" ;;
2840                         esac
2841                         ;;
2842                 sunos) osname=sunos
2843                         case "$3" in
2844                         5*) osname=solaris
2845                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2846                         *)      osvers="$3" ;;
2847                         esac
2848                         ;;
2849                 titanos) osname=titanos
2850                         case "$3" in
2851                         1*) osvers=1 ;;
2852                         2*) osvers=2 ;;
2853                         3*) osvers=3 ;;
2854                         4*) osvers=4 ;;
2855                         *)      osvers="$3" ;;
2856                         esac
2857                         ;;
2858                 ultrix) osname=ultrix
2859                         osvers="$3"
2860                         ;;
2861                 osf1|mls+)      case "$5" in
2862                                 alpha)
2863                                         osname=dec_osf
2864                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2865                                         case "$osvers" in
2866                                         [1-9].[0-9]*) ;;
2867                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2868                                         esac
2869                                         ;;
2870                         hp*)    osname=hp_osf1  ;;
2871                         mips)   osname=mips_osf1 ;;
2872                         esac
2873                         ;;
2874                 unixware) osname=svr5
2875                         osvers="$4"
2876                         ;;
2877                 uts) osname=uts
2878                         osvers="$3"
2879                         ;;
2880                 $2) case "$osname" in
2881                         *isc*) ;;
2882                         *freebsd*) ;;
2883                         svr*)
2884                                 : svr4.x or possibly later
2885                                 case "svr$3" in 
2886                                 ${osname}*)
2887                                         osname=svr$3
2888                                         osvers=$4
2889                                         ;;
2890                                 esac
2891                                 case "$osname" in
2892                                 svr4.0)
2893                                         : Check for ESIX
2894                                         if test -f /stand/boot ; then
2895                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2896                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2897                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2898                                                         if test -n "$isesix"; then
2899                                                                 osname=esix4
2900                                                         fi
2901                                                 fi
2902                                         fi
2903                                         ;;
2904                                 esac
2905                                 ;;
2906                         *)      if test -f /etc/systemid; then
2907                                         osname=sco
2908                                         set `echo $3 | $sed 's/\./ /g'` $4
2909                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2910                                                 osvers=$1.$2.$3
2911                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2912                                                 osvers=$1.$2
2913                                         elif $test -f $src/hints/sco_$1.sh; then
2914                                                 osvers=$1
2915                                         fi
2916                                 else
2917                                         case "$osname" in
2918                                         '') : Still unknown.  Probably a generic Sys V.
2919                                                 osname="sysv"
2920                                                 osvers="$3"
2921                                                 ;;
2922                                         esac
2923                                 fi
2924                                 ;;
2925                         esac
2926                         ;;
2927                 *)      case "$osname" in
2928                         '') : Still unknown.  Probably a generic BSD.
2929                                 osname="$1"
2930                                 osvers="$3"
2931                                 ;;
2932                         esac
2933                         ;;
2934                 esac
2935         else
2936                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2937                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2938                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2939                                 osname=news_os
2940                         fi
2941                         $rm -f UU/kernel.what
2942                 elif test -d c:/.; then
2943                         set X $myuname
2944                         osname=os2
2945                         osvers="$5"
2946                 fi
2947         fi
2948         
2949         case "$targetarch" in
2950         '') ;;
2951         *)  hostarch=$osname
2952             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2953             osvers=''
2954             ;;
2955         esac
2956
2957         : Now look for a hint file osname_osvers, unless one has been
2958         : specified already.
2959         case "$hintfile" in
2960         ''|' ')
2961                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2962                 : Also try without trailing minor version numbers.
2963                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2964                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2965                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2966                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2967                 case "$file" in
2968                 '') dflt=none ;;
2969                 *)  case "$osvers" in
2970                         '') dflt=$file
2971                                 ;;
2972                         *)  if $test -f $src/hints/$file.sh ; then
2973                                         dflt=$file
2974                                 elif $test -f $src/hints/$xfile.sh ; then
2975                                         dflt=$xfile
2976                                 elif $test -f $src/hints/$xxfile.sh ; then
2977                                         dflt=$xxfile
2978                                 elif $test -f $src/hints/$xxxfile.sh ; then
2979                                         dflt=$xxxfile
2980                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2981                                         dflt=$xxxxfile
2982                                 elif $test -f "$src/hints/${osname}.sh" ; then
2983                                         dflt="${osname}"
2984                                 else
2985                                         dflt=none
2986                                 fi
2987                                 ;;
2988                         esac
2989                         ;;
2990                 esac
2991                 if $test -f Policy.sh ; then
2992                         case "$dflt" in
2993                         *Policy*) ;;
2994                         none) dflt="Policy" ;;
2995                         *) dflt="Policy $dflt" ;;
2996                         esac
2997                 fi
2998                 ;;
2999         *)
3000                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3001                 ;;
3002         esac
3003
3004         if $test -f Policy.sh ; then
3005                 $cat <<EOM
3006
3007 There's also a Policy hint file available, which should make the
3008 site-specific (policy) questions easier to answer.
3009 EOM
3010
3011         fi
3012
3013         $cat <<EOM
3014
3015 You may give one or more space-separated answers, or "none" if appropriate.
3016 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3017 is a good thing.  DO NOT give a wrong version or a wrong OS.
3018
3019 EOM
3020
3021         rp="Which of these apply, if any?"
3022         . UU/myread
3023         tans=$ans
3024         for file in $tans; do
3025                 if $test X$file = XPolicy -a -f Policy.sh; then
3026                         . Policy.sh
3027                         $cat Policy.sh >> UU/config.sh
3028                 elif $test -f $src/hints/$file.sh; then
3029                         . $src/hints/$file.sh
3030                         $cat $src/hints/$file.sh >> UU/config.sh
3031                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3032                         : nothing
3033                 else
3034                         : Give one chance to correct a possible typo.
3035                         echo "$file.sh does not exist"
3036                         dflt=$file
3037                         rp="hint to use instead?"
3038                         . UU/myread
3039                         for file in $ans; do
3040                                 if $test -f "$src/hints/$file.sh"; then
3041                                         . $src/hints/$file.sh
3042                                         $cat $src/hints/$file.sh >> UU/config.sh
3043                                 elif $test X$ans = X -o X$ans = Xnone ; then
3044                                         : nothing
3045                                 else
3046                                         echo "$file.sh does not exist -- ignored."
3047                                 fi
3048                         done
3049                 fi
3050         done
3051
3052         hint=recommended
3053         : Remember our hint file for later.
3054         if $test -f "$src/hints/$file.sh" ; then
3055                 hintfile="$file"
3056         else
3057                 hintfile=''
3058         fi
3059 fi
3060 cd UU
3061 ;;
3062 *)
3063         echo " "
3064         echo "Fetching default answers from $config_sh..." >&4
3065         tmp_n="$n"
3066         tmp_c="$c"
3067         cd ..
3068         cp $config_sh config.sh 2>/dev/null
3069         chmod +w config.sh
3070         . ./config.sh
3071         cd UU
3072         cp ../config.sh .
3073         n="$tmp_n"
3074         c="$tmp_c"
3075         hint=previous
3076         ;;
3077 esac
3078 test "$override" && . ./optdef.sh
3079
3080 : Restore computed paths
3081 for file in $loclist $trylist; do
3082         eval $file="\$_$file"
3083 done
3084
3085 cat << EOM
3086
3087 Configure uses the operating system name and version to set some defaults.
3088 The default value is probably right if the name rings a bell. Otherwise,
3089 since spelling matters for me, either accept the default or answer "none"
3090 to leave it blank.
3091
3092 EOM
3093 case "$osname" in
3094         ''|' ')
3095                 case "$hintfile" in
3096                 ''|' '|none) dflt=none ;;
3097                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3098                 esac
3099                 ;;
3100         *) dflt="$osname" ;;
3101 esac
3102 rp="Operating system name?"
3103 . ./myread
3104 case "$ans" in
3105 none)  osname='' ;;
3106 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3107 esac
3108 echo " "
3109 case "$osvers" in
3110         ''|' ')
3111                 case "$hintfile" in
3112                 ''|' '|none) dflt=none ;;
3113                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3114                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3115                         case "$dflt" in
3116                         ''|' ') dflt=none ;;
3117                         esac
3118                         ;;
3119                 esac
3120                 ;;
3121         *) dflt="$osvers" ;;
3122 esac
3123 rp="Operating system version?"
3124 . ./myread
3125 case "$ans" in
3126 none)  osvers='' ;;
3127 *) osvers="$ans" ;;
3128 esac
3129
3130
3131 . ./posthint.sh
3132
3133 : who configured the system
3134 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3135 cf_by=`(logname) 2>/dev/null`
3136 case "$cf_by" in
3137 "")
3138         cf_by=`(whoami) 2>/dev/null`
3139         case "$cf_by" in
3140         "") cf_by=unknown ;;
3141         esac ;;
3142 esac
3143
3144 : set up the script used to warn in case of inconsistency
3145 cat <<EOS >whoa
3146 $startsh
3147 EOS
3148 cat <<'EOSC' >>whoa
3149 dflt=y
3150 echo " "
3151 echo "*** WHOA THERE!!! ***" >&4
3152 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3153 rp="    Keep the $hint value?"
3154 . ./myread
3155 case "$ans" in
3156 y) td=$was; tu=$was;;
3157 esac
3158 EOSC
3159
3160 : function used to set $1 to $val
3161 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3162 case "$val$was" in
3163 $define$undef) . ./whoa; eval "$var=\$td";;
3164 $undef$define) . ./whoa; eval "$var=\$tu";;
3165 *) eval "$var=$val";;
3166 esac'
3167
3168 case "$usethreads" in
3169 $define|true|[yY]*)     dflt='y';;
3170 *) dflt='n';;
3171 esac
3172 cat <<EOM
3173
3174 Perl can be built to take advantage of threads on some systems.
3175 To do so, Configure can be run with -Dusethreads.
3176
3177 Note that threading is a highly experimental feature, and
3178 some known race conditions still remain.  If you choose to try
3179 it, be very sure to not actually deploy it for production
3180 purposes.  README.threads has more details, and is required
3181 reading if you enable threads.
3182
3183 If this doesn't make any sense to you, just accept the default '$dflt'.
3184 EOM
3185 rp='Build a threading Perl?'
3186 . ./myread
3187 case "$ans" in
3188 y|Y)    val="$define" ;;
3189 *)      val="$undef" ;;
3190 esac
3191 set usethreads
3192 eval $setvar
3193
3194 case "$usethreads" in
3195 $define)
3196         $cat <<EOM
3197
3198 As of 5.5.640, Perl has two different internal threading implementations,
3199 the 5.005 version (5005threads) and an interpreter-based version
3200 (ithreads) that has one interpreter per thread.  Both are very 
3201 experimental.  This arrangement exists to help developers work out
3202 which one is better.
3203
3204 If you're a casual user, you probably don't want interpreter-threads
3205 at this time.  There doesn't yet exist a way to create threads from
3206 within Perl in this model, i.e., "use Thread;" will NOT work.
3207 EOM
3208         : Default to ithreads unless overridden on command line or with
3209         : old config.sh
3210         dflt='y'
3211         case "$use5005threads" in
3212                 $define|true|[yY]*) dflt='n';;
3213         esac
3214         case "$useithreads" in
3215                 $undef|false|[nN]*) dflt='n';;
3216         esac
3217         rp='Use interpreter-based ithreads?'
3218         . ./myread
3219         case "$ans" in
3220         y|Y)    val="$define" ;;
3221         *)      val="$undef" ;;
3222         esac
3223         set useithreads
3224         eval $setvar
3225         : Now set use5005threads to the opposite value.
3226         case "$useithreads" in
3227         $define) val="$undef" ;;
3228         *) val="$define" ;;
3229         esac
3230         set use5005threads
3231         eval $setvar
3232         ;;
3233 *)
3234         useithreads="$undef"
3235         use5005threads="$undef"
3236         ;;
3237 esac
3238
3239 case "$useithreads$use5005threads" in
3240 "$define$define")
3241         $cat >&4 <<EOM
3242
3243 You cannot have both the ithreads and the 5.005 threads enabled
3244 at the same time.  Disabling the 5.005 threads since they are
3245 much less stable than the ithreads.
3246
3247 EOM
3248         use5005threads="$undef"
3249         ;;
3250 esac
3251
3252 case "$d_oldpthreads" in
3253 '')     : Configure tests would be welcome here.  For now, assume undef.
3254         val="$undef" ;;
3255 *)      val="$d_oldpthreads" ;;
3256 esac
3257 set d_oldpthreads
3258 eval $setvar
3259
3260
3261 case "$usethreads" in
3262 "$define"|true|[yY]*)
3263 : Look for a hint-file generated 'call-back-unit'.  If the
3264 : user has specified that a threading perl is to be built,
3265 : we may need to set or change some other defaults.
3266         if $test -f usethreads.cbu; then
3267                 echo "Your platform has some specific hints for threaded builds, using them..."
3268                 . ./usethreads.cbu
3269         else
3270                 $cat <<EOM
3271 (Your platform doesn't have any specific hints for threaded builds.
3272  Assuming POSIX threads, then.)
3273 EOM
3274         fi
3275         ;;
3276 esac
3277
3278 cat <<EOM
3279
3280 Perl can be built so that multiple Perl interpreters can coexist
3281 within the same Perl executable.
3282 EOM
3283
3284 case "$useithreads" in
3285 $define)
3286         cat <<EOM
3287 This multiple interpreter support is required for interpreter-based threads.
3288 EOM
3289         val="$define"
3290         ;;
3291 *)      case "$usemultiplicity" in
3292         $define|true|[yY]*)     dflt='y';;
3293         *) dflt='n';;
3294         esac
3295         echo " "
3296         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3297         rp='Build Perl for multiplicity?'
3298         . ./myread
3299         case "$ans" in
3300         y|Y)    val="$define" ;;
3301         *)      val="$undef" ;;
3302         esac
3303         ;;
3304 esac
3305 set usemultiplicity
3306 eval $setvar
3307
3308 : make some quick guesses about what we are up against
3309 echo " "
3310 $echo $n "Hmm...  $c"
3311 echo exit 1 >bsd
3312 echo exit 1 >usg
3313 echo exit 1 >v7
3314 echo exit 1 >osf1
3315 echo exit 1 >eunice
3316 echo exit 1 >xenix
3317 echo exit 1 >venix
3318 echo exit 1 >os2
3319 d_bsd="$undef"
3320 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3321 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3322 then
3323         echo "Looks kind of like an OSF/1 system, but we'll see..."
3324         echo exit 0 >osf1
3325 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3326         xxx=`./loc addbib blurfl $pth`
3327         if $test -f $xxx; then
3328         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3329                 echo exit 0 >bsd
3330                 echo exit 0 >usg
3331         else
3332                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3333                         echo "Looks kind of like an extended USG system, but we'll see..."
3334                 else
3335                         echo "Looks kind of like a USG system, but we'll see..."
3336                 fi
3337                 echo exit 0 >usg
3338         fi
3339 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3340         echo "Looks kind of like a BSD system, but we'll see..."
3341         d_bsd="$define"
3342         echo exit 0 >bsd
3343 else
3344         echo "Looks kind of like a Version 7 system, but we'll see..."
3345         echo exit 0 >v7
3346 fi
3347 case "$eunicefix" in
3348 *unixtovms*)
3349         $cat <<'EOI'
3350 There is, however, a strange, musty smell in the air that reminds me of
3351 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3352 EOI
3353         echo exit 0 >eunice
3354         d_eunice="$define"
3355 : it so happens the Eunice I know will not run shell scripts in Unix format
3356         ;;
3357 *)
3358         echo " "
3359         echo "Congratulations.  You aren't running Eunice."
3360         d_eunice="$undef"
3361         ;;
3362 esac
3363 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3364 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3365 : semicolon as a patch separator
3366 case "$p_" in
3367 :) ;;
3368 *)
3369         $cat <<'EOI'
3370 I have the feeling something is not exactly right, however...don't tell me...
3371 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3372 (Or you may be running DOS with DJGPP.)
3373 EOI
3374         echo exit 0 >os2
3375         ;;
3376 esac
3377 if test -f /xenix; then
3378         echo "Actually, this looks more like a XENIX system..."
3379         echo exit 0 >xenix
3380         d_xenix="$define"
3381 else
3382         echo " "
3383         echo "It's not Xenix..."
3384         d_xenix="$undef"
3385 fi
3386 chmod +x xenix
3387 $eunicefix xenix
3388 if test -f /venix; then
3389         echo "Actually, this looks more like a VENIX system..."
3390         echo exit 0 >venix
3391 else
3392         echo " "
3393         if ./xenix; then
3394                 : null
3395         else
3396                 echo "Nor is it Venix..."
3397         fi
3398 fi
3399 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3400 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3401 $rm -f foo
3402
3403 case "$cc" in
3404 '') dflt=cc;;
3405 *) dflt="$cc";;
3406 esac
3407 rp="Use which C compiler?"
3408 . ./myread
3409 cc="$ans"
3410 : Look for a hint-file generated 'call-back-unit'.  Now that the
3411 : user has specified the compiler, we may need to set or change some
3412 : other defaults.
3413 if $test -f cc.cbu; then
3414     . ./cc.cbu
3415 fi
3416 . ./checkcc
3417
3418 echo " "
3419 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3420 $cat >try.c <<EOM
3421 #include <stdio.h>
3422 int main() {
3423 #ifdef __GNUC__
3424 #ifdef __VERSION__
3425         printf("%s\n", __VERSION__);
3426 #else
3427         printf("%s\n", "1");
3428 #endif
3429 #endif
3430         exit(0);
3431 }
3432 EOM
3433 if $cc -o try $ccflags $ldflags try.c; then
3434         gccversion=`$run ./try`
3435         case "$gccversion" in
3436         '') echo "You are not using GNU cc." ;;
3437         *)  echo "You are using GNU cc $gccversion."
3438             ccname=gcc  
3439             ;;
3440         esac
3441 else
3442         echo " "
3443         echo "*** WHOA THERE!!! ***" >&4
3444         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3445         case "$knowitall" in
3446         '')
3447         echo "    You'd better start hunting for one and let me know about it." >&4
3448                 exit 1
3449                 ;;
3450         esac
3451 fi
3452 $rm -f try try.*
3453 case "$gccversion" in
3454 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3455 esac
3456 case "$gccversion" in
3457 '') gccosandvers='' ;;
3458 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3459    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3460    gccshortvers=''
3461    case "$gccosandvers" in
3462    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3463    $osname$osvers) ;; # looking good
3464    $osname*) cat <<EOM >&4
3465
3466 *** WHOA THERE!!! ***
3467
3468     Your gcc has not been compiled for the exact release of
3469     your operating system ($gccosandvers versus $osname$osvers).
3470
3471     In general it is a good idea to keep gcc synchronized with
3472     the operating system because otherwise serious problems
3473     may ensue when trying to compile software, like Perl.
3474
3475     I'm trying to be optimistic here, though, and will continue.
3476     If later during the configuration and build icky compilation
3477     problems appear (headerfile conflicts being the most common
3478     manifestation), I suggest reinstalling the gcc to match
3479     your operating system release.
3480
3481 EOM
3482       ;;
3483    *) gccosandvers='' ;; # failed to parse, better be silent
3484    esac
3485    ;;
3486 esac
3487 case "$ccname" in
3488 '') ccname="$cc" ;;
3489 esac
3490
3491 case "$gccversion" in
3492 '') ;;
3493 *)  case "$ccflags" in
3494     *-Wall*) ;;
3495     *) ccflags="$ccflags -Wall" ;;
3496     esac
3497     ;;
3498 esac
3499
3500 : see how we invoke the C preprocessor
3501 echo " "
3502 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3503 cat <<'EOT' >testcpp.c
3504 #define ABC abc
3505 #define XYZ xyz
3506 ABC.XYZ
3507 EOT
3508 cd ..
3509 if test ! -f cppstdin; then
3510         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3511                 # AIX cc -E doesn't show the absolute headerfile
3512                 # locations but we'll cheat by using the -M flag.
3513                 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
3514         else
3515                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3516         fi
3517 else
3518         echo "Keeping your $hint cppstdin wrapper."
3519 fi
3520 chmod 755 cppstdin
3521 wrapper=`pwd`/cppstdin
3522 ok='false'
3523 cd UU
3524
3525 if $test "X$cppstdin" != "X" && \
3526         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3527         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3528 then
3529         echo "You used to use $cppstdin $cppminus so we'll use that again."
3530         case "$cpprun" in
3531         '') echo "But let's see if we can live without a wrapper..." ;;
3532         *)
3533                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3534                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3535                 then
3536                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3537                         ok='true'
3538                 else
3539                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3540                 fi
3541                 ;;
3542         esac
3543 else
3544         case "$cppstdin" in
3545         '') ;;
3546         *)
3547                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3548                 ;;
3549         esac
3550 fi
3551
3552 if $ok; then
3553         : nothing
3554 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3555         $cc -E <testcpp.c >testcpp.out 2>&1; \
3556         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3557         echo "Yup, it does."
3558         x_cpp="$cc -E"
3559         x_minus='';
3560 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3561         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3562         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3563         echo "Yup, it does."
3564         x_cpp="$cc -E"
3565         x_minus='-';
3566 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3567         $cc -P <testcpp.c >testcpp.out 2>&1; \
3568         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3569         echo "Yipee, that works!"
3570         x_cpp="$cc -P"
3571         x_minus='';
3572 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3573         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3574         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3575         echo "At long last!"
3576         x_cpp="$cc -P"
3577         x_minus='-';
3578 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3579         $cpp <testcpp.c >testcpp.out 2>&1; \
3580         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3581         echo "It works!"
3582         x_cpp="$cpp"
3583         x_minus='';
3584 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3585         $cpp - <testcpp.c >testcpp.out 2>&1; \
3586         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3587         echo "Hooray, it works!  I was beginning to wonder."
3588         x_cpp="$cpp"
3589         x_minus='-';
3590 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3591         $wrapper <testcpp.c >testcpp.out 2>&1; \
3592         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3593         x_cpp="$wrapper"
3594         x_minus=''
3595         echo "Eureka!"
3596 else
3597         dflt=''
3598         rp="No dice.  I can't find a C preprocessor.  Name one:"
3599         . ./myread
3600         x_cpp="$ans"
3601         x_minus=''
3602         $x_cpp <testcpp.c >testcpp.out 2>&1
3603         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3604                 echo "OK, that will do." >&4
3605         else
3606 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3607                 exit 1
3608         fi
3609 fi
3610
3611 case "$ok" in
3612 false)
3613         cppstdin="$x_cpp"
3614         cppminus="$x_minus"
3615         cpprun="$x_cpp"
3616         cpplast="$x_minus"
3617         set X $x_cpp
3618         shift
3619         case "$1" in
3620         "$cpp")
3621                 echo "Perhaps can we force $cc -E using a wrapper..."
3622                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3623                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3624                 then
3625                         echo "Yup, we can."
3626                         cppstdin="$wrapper"
3627                         cppminus='';
3628                 else
3629                         echo "Nope, we'll have to live without it..."
3630                 fi
3631                 ;;
3632         esac
3633         case "$cpprun" in
3634         "$wrapper")
3635                 cpprun=''
3636                 cpplast=''
3637                 ;;
3638         esac
3639         ;;
3640 esac
3641
3642 case "$cppstdin" in
3643 "$wrapper"|'cppstdin') ;;
3644 *) $rm -f $wrapper;;
3645 esac
3646 $rm -f testcpp.c testcpp.out
3647
3648 : decide how portable to be.  Allow command line overrides.
3649 case "$d_portable" in
3650 "$undef") ;;
3651 *)      d_portable="$define" ;;
3652 esac
3653
3654 : set up shell script to do ~ expansion
3655 cat >filexp <<EOSS
3656 $startsh
3657 : expand filename
3658 case "\$1" in
3659  ~/*|~)
3660         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3661         ;;
3662  ~*)
3663         if $test -f /bin/csh; then
3664                 /bin/csh -f -c "glob \$1"
3665                 failed=\$?
3666                 echo ""
3667                 exit \$failed
3668         else
3669                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3670                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3671                 if $test ! -d "\$dir"; then
3672                         me=\`basename \$0\`
3673                         echo "\$me: can't locate home directory for: \$name" >&2
3674                         exit 1
3675                 fi
3676                 case "\$1" in
3677                 */*)
3678                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3679                         ;;
3680                 *)
3681                         echo \$dir
3682                         ;;
3683                 esac
3684         fi
3685         ;;
3686 *)
3687         echo \$1
3688         ;;
3689 esac
3690 EOSS
3691 chmod +x filexp
3692 $eunicefix filexp
3693
3694 : now set up to get a file name
3695 cat <<EOS >getfile
3696 $startsh
3697 EOS
3698 cat <<'EOSC' >>getfile
3699 tilde=''
3700 fullpath=''
3701 already=''
3702 skip=''
3703 none_ok=''
3704 exp_file=''
3705 nopath_ok=''
3706 orig_rp="$rp"
3707 orig_dflt="$dflt"
3708 case "$gfpth" in
3709 '') gfpth='.' ;;
3710 esac
3711
3712 case "$fn" in
3713 *\(*)
3714         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3715         fn=`echo $fn | sed 's/(.*)//'`
3716         ;;
3717 esac
3718
3719 case "$fn" in
3720 *:*)
3721         loc_file=`expr $fn : '.*:\(.*\)'`
3722         fn=`expr $fn : '\(.*\):.*'`
3723         ;;
3724 esac
3725
3726 case "$fn" in
3727 *~*) tilde=true;;
3728 esac
3729 case "$fn" in
3730 */*) fullpath=true;;
3731 esac
3732 case "$fn" in
3733 *+*) skip=true;;
3734 esac
3735 case "$fn" in
3736 *n*) none_ok=true;;
3737 esac
3738 case "$fn" in
3739 *e*) exp_file=true;;
3740 esac
3741 case "$fn" in
3742 *p*) nopath_ok=true;;
3743 esac
3744
3745 case "$fn" in
3746 *f*) type='File';;
3747 *d*) type='Directory';;
3748 *l*) type='Locate';;
3749 esac
3750
3751 what="$type"
3752 case "$what" in
3753 Locate) what='File';;
3754 esac
3755
3756 case "$exp_file" in
3757 '')
3758         case "$d_portable" in
3759         "$define") ;;
3760         *) exp_file=true;;
3761         esac
3762         ;;
3763 esac
3764
3765 cd ..
3766 while test "$type"; do
3767         redo=''
3768         rp="$orig_rp"
3769         dflt="$orig_dflt"
3770         case "$tilde" in
3771         true) rp="$rp (~name ok)";;
3772         esac
3773         . UU/myread
3774         if test -f UU/getfile.ok && \
3775                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3776         then
3777                 value="$ans"
3778                 ansexp="$ans"
3779                 break
3780         fi
3781         case "$ans" in
3782         none)
3783                 value=''
3784                 ansexp=''
3785                 case "$none_ok" in
3786                 true) type='';;
3787                 esac
3788                 ;;
3789         *)
3790                 case "$tilde" in
3791                 '') value="$ans"
3792                         ansexp="$ans";;
3793                 *)
3794                         value=`UU/filexp $ans`
3795                         case $? in
3796                         0)
3797                                 if test "$ans" != "$value"; then
3798                                         echo "(That expands to $value on this system.)"
3799                                 fi
3800                                 ;;
3801                         *) value="$ans";;
3802                         esac
3803                         ansexp="$value"
3804                         case "$exp_file" in
3805                         '') value="$ans";;
3806                         esac
3807                         ;;
3808                 esac
3809                 case "$fullpath" in
3810                 true)
3811                         case "$ansexp" in
3812                         /*) value="$ansexp" ;;
3813                         [a-zA-Z]:/*) value="$ansexp" ;;
3814                         *)
3815                                 redo=true
3816                                 case "$already" in
3817                                 true)
3818                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3819                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3820                                         ;;
3821                                 *)
3822                                 echo "Please give a full path name, starting with slash." >&4
3823                                         case "$tilde" in
3824                                         true)
3825                                 echo "Note that using ~name is ok provided it expands well." >&4
3826                                                 already=true
3827                                                 ;;
3828                                         esac
3829                                 esac
3830                                 ;;
3831                         esac
3832                         ;;
3833                 esac
3834                 case "$redo" in
3835                 '')
3836                         case "$type" in
3837                         File)
3838                                 for fp in $gfpth; do
3839                                         if test "X$fp" = X.; then
3840                                             pf="$ansexp"
3841                                         else    
3842                                             pf="$fp/$ansexp"
3843                                         fi
3844                                         if test -f "$pf"; then
3845                                                 type=''
3846                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3847                                         then
3848                                                 echo "($value is not a plain file, but that's ok.)"
3849                                                 type=''
3850                                         fi
3851                                         if test X"$type" = X; then
3852                                             value="$pf"
3853                                             break
3854                                         fi
3855                                 done
3856                                 ;;
3857                         Directory)
3858                                 for fp in $gfpth; do
3859                                         if test "X$fp" = X.; then
3860                                             dir="$ans"
3861                                             direxp="$ansexp"
3862                                         else    
3863                                             dir="$fp/$ansexp"
3864                                             direxp="$fp/$ansexp"
3865                                         fi
3866                                         if test -d "$direxp"; then
3867                                                 type=''
3868                                                 value="$dir"
3869                                                 break
3870                                         fi
3871                                 done
3872                                 ;;
3873                         Locate)
3874                                 if test -d "$ansexp"; then
3875                                         echo "(Looking for $loc_file in directory $value.)"
3876                                         value="$value/$loc_file"
3877                                         ansexp="$ansexp/$loc_file"
3878                                 fi
3879                                 if test -f "$ansexp"; then
3880                                         type=''
3881                                 fi
3882                                 case "$nopath_ok" in
3883                                 true)   case "$value" in
3884                                         */*) ;;
3885                                         *)      echo "Assuming $value will be in people's path."
3886                                                 type=''
3887                                                 ;;
3888                                         esac
3889                                         ;;
3890                                 esac
3891                                 ;;
3892                         esac
3893
3894                         case "$skip" in
3895                         true) type='';
3896                         esac
3897
3898                         case "$type" in
3899                         '') ;;
3900                         *)
3901                                 if test "$fastread" = yes; then
3902                                         dflt=y
3903                                 else
3904                                         dflt=n
3905                                 fi
3906                                 rp="$what $value doesn't exist.  Use that name anyway?"
3907                                 . UU/myread
3908                                 dflt=''
3909                                 case "$ans" in
3910                                 y*) type='';;
3911                                 *) echo " ";;
3912                                 esac
3913                                 ;;
3914                         esac
3915                         ;;
3916                 esac
3917                 ;;
3918         esac
3919 done
3920 cd UU
3921 ans="$value"
3922 rp="$orig_rp"
3923 dflt="$orig_dflt"
3924 rm -f getfile.ok
3925 test "X$gfpthkeep" != Xy && gfpth=""
3926 EOSC
3927
3928 : What should the include directory be ?
3929 echo " "
3930 $echo $n "Hmm...  $c"
3931 dflt='/usr/include'
3932 incpath=''
3933 mips_type=''
3934 if $test -f /bin/mips && /bin/mips; then
3935         echo "Looks like a MIPS system..."
3936         $cat >usr.c <<'EOCP'
3937 #ifdef SYSTYPE_BSD43
3938 /bsd43
3939 #endif
3940 EOCP
3941         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3942                 dflt='/bsd43/usr/include'
3943                 incpath='/bsd43'
3944                 mips_type='BSD 4.3'
3945         else
3946                 mips_type='System V'
3947         fi
3948         $rm -f usr.c usr.out
3949         echo "and you're compiling with the $mips_type compiler and libraries."
3950         xxx_prompt=y
3951         echo "exit 0" >mips
3952 else
3953         echo "Doesn't look like a MIPS system."
3954         xxx_prompt=n
3955         echo "exit 1" >mips
3956 fi
3957 chmod +x mips
3958 $eunicefix mips
3959 case "$usrinc" in
3960 '') ;;
3961 *) dflt="$usrinc";;
3962 esac
3963 case "$xxx_prompt" in
3964 y)      fn=d/
3965         echo " "
3966         rp='Where are the include files you want to use?'
3967         . ./getfile
3968         usrinc="$ans"
3969         ;;
3970 *)      usrinc="$dflt"
3971         ;;
3972 esac
3973
3974 : Set private lib path
3975 case "$plibpth" in
3976 '') if ./mips; then
3977                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3978         fi;;
3979 esac
3980 case "$libpth" in
3981 ' ') dlist='';;
3982 '') dlist="$loclibpth $plibpth $glibpth";;
3983 *) dlist="$libpth";;
3984 esac
3985
3986 : Now check and see which directories actually exist, avoiding duplicates
3987 libpth=''
3988 for xxx in $dlist
3989 do
3990     if $test -d $xxx; then
3991                 case " $libpth " in
3992                 *" $xxx "*) ;;
3993                 *) libpth="$libpth $xxx";;
3994                 esac
3995     fi
3996 done
3997 $cat <<'EOM'
3998
3999 Some systems have incompatible or broken versions of libraries.  Among
4000 the directories listed in the question below, please remove any you
4001 know not to be holding relevant libraries, and add any that are needed.
4002 Say "none" for none.
4003
4004 EOM
4005 case "$libpth" in
4006 '') dflt='none';;
4007 *)
4008         set X $libpth
4009         shift
4010         dflt=${1+"$@"}
4011         ;;
4012 esac
4013 rp="Directories to use for library searches?"
4014 . ./myread
4015 case "$ans" in
4016 none) libpth=' ';;
4017 *) libpth="$ans";;
4018 esac
4019
4020 : compute shared library extension
4021 case "$so" in
4022 '')
4023         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4024                 dflt='sl'
4025         else
4026                 dflt='so'
4027         fi
4028         ;;
4029 *) dflt="$so";;
4030 esac
4031 $cat <<EOM
4032
4033 On some systems, shared libraries may be available.  Answer 'none' if
4034 you want to suppress searching of shared libraries for the remainder
4035 of this configuration.
4036
4037 EOM
4038 rp='What is the file extension used for shared libraries?'
4039 . ./myread
4040 so="$ans"
4041
4042 : Define several unixisms.
4043 : Hints files or command line option can be used to override them.
4044 : The convoluted testing is in case hints files set either the old
4045 : or the new name.
4046 case "$_exe" in
4047 '')     case "$exe_ext" in
4048     '') ;;
4049         *)      _exe="$exe_ext" ;;
4050         esac
4051         ;;
4052 esac
4053 case "$_a" in
4054 '')     case "$lib_ext" in
4055     '') _a='.a';;
4056         *)      _a="$lib_ext" ;;
4057         esac
4058         ;;
4059 esac
4060 case "$_o" in
4061 '') case "$obj_ext" in
4062         '')     _o='.o';;
4063         *)      _o="$obj_ext";;
4064         esac
4065         ;;
4066 esac
4067 case "$p_" in
4068 '') case "$path_sep" in
4069         '')     p_=':';;
4070         *)      p_="$path_sep";;
4071         esac
4072         ;;
4073 esac
4074 exe_ext=$_exe
4075 lib_ext=$_a
4076 obj_ext=$_o
4077 path_sep=$p_
4078
4079 : Which makefile gets called first.  This is used by make depend.
4080 case "$firstmakefile" in
4081 '') firstmakefile='makefile';;
4082 esac
4083
4084 case "$usesocks" in
4085 $define|true|[yY]*)     dflt='y';;
4086 *) dflt='n';;
4087 esac
4088 cat <<EOM
4089
4090 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4091 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4092 to use the PerlIO abstraction layer, this will be implicitly selected.
4093
4094 If this doesn't make any sense to you, just accept the default '$dflt'.
4095 EOM
4096 rp='Build Perl for SOCKS?'
4097 . ./myread
4098 case "$ans" in
4099 y|Y)    val="$define" ;;     
4100 *)      val="$undef" ;;
4101 esac
4102 set usesocks
4103 eval $setvar
4104
4105 case "$usesocks" in
4106 $define|true|[yY]*) useperlio="$define";;
4107 esac
4108
4109 : Looking for optional libraries
4110 echo " "
4111 echo "Checking for optional libraries..." >&4
4112 case "$libs" in
4113 ' '|'') dflt='';;
4114 *) dflt="$libs";;
4115 esac
4116 case "$libswanted" in
4117 '') libswanted='c_s';;
4118 esac
4119 case "$usesocks" in
4120 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4121 esac
4122 libsfound=''
4123 libsfiles=''
4124 libsdirs=''
4125 libspath=''
4126 for thisdir in $libpth $xlibpth; do
4127   test -d $thisdir && libspath="$libspath $thisdir"
4128 done
4129 for thislib in $libswanted; do
4130         for thisdir in $libspath; do
4131             xxx=''
4132             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4133                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4134                 $test -f "$xxx" && eval $libscheck
4135                 $test -f "$xxx" && libstyle=shared
4136             fi
4137             if test ! -f "$xxx"; then
4138                 xxx=$thisdir/lib$thislib.$so
4139                 $test -f "$xxx" && eval $libscheck
4140                 $test -f "$xxx" && libstyle=shared
4141             fi  
4142             if test ! -f "$xxx"; then
4143                 xxx=$thisdir/lib$thislib$_a
4144                 $test -f "$xxx" && eval $libscheck
4145                 $test -f "$xxx" && libstyle=static
4146             fi
4147             if test ! -f "$xxx"; then
4148                 xxx=$thisdir/$thislib$_a
4149                 $test -f "$xxx" && eval $libscheck
4150                 $test -f "$xxx" && libstyle=static
4151             fi
4152             if test ! -f "$xxx"; then
4153                 xxx=$thisdir/lib${thislib}_s$_a
4154                 $test -f "$xxx" && eval $libscheck
4155                 $test -f "$xxx" && libstyle=static
4156                 $test -f "$xxx" && thislib=${thislib}_s
4157             fi
4158             if test ! -f "$xxx"; then
4159                 xxx=$thisdir/Slib$thislib$_a
4160                 $test -f "$xxx" && eval $libscheck
4161                 $test -f "$xxx" && libstyle=static
4162             fi
4163             if $test -f "$xxx"; then
4164                 case "$libstyle" in
4165                 shared) echo "Found -l$thislib (shared)." ;;
4166                 static) echo "Found -l$thislib." ;;
4167                 *)      echo "Found -l$thislib ($libstyle)." ;;
4168                 esac
4169                 case " $dflt " in
4170                 *"-l$thislib "*);;
4171                 *) dflt="$dflt -l$thislib"
4172                    libsfound="$libsfound $xxx"
4173                    yyy=`basename $xxx`
4174                    libsfiles="$libsfiles $yyy"
4175                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4176                    case " $libsdirs " in
4177                    *" $yyy "*) ;;
4178                    *) libsdirs="$libsdirs $yyy" ;;
4179                    esac
4180                    ;;
4181                 esac
4182                 break
4183             fi  
4184         done
4185         if $test ! -f "$xxx"; then
4186             echo "No -l$thislib."
4187         fi
4188 done
4189 set X $dflt
4190 shift
4191 dflt="$*"
4192 case "$libs" in
4193 '') dflt="$dflt";;
4194 *) dflt="$libs";;
4195 esac
4196 case "$dflt" in
4197 ' '|'') dflt='none';;
4198 esac
4199
4200 $cat <<EOM
4201
4202 In order to compile $package on your machine, a number of libraries
4203 are usually needed.  Include any other special libraries here as well.
4204 Say "none" for none.  The default list is almost always right.
4205 EOM
4206
4207 echo " "
4208 rp="What libraries to use?"
4209 . ./myread
4210 case "$ans" in
4211 none) libs=' ';;
4212 *) libs="$ans";;
4213 esac
4214
4215 : determine optimization, if desired, or use for debug flag also
4216 case "$optimize" in
4217 ' '|$undef) dflt='none';;
4218 '') dflt='-O';;
4219 *) dflt="$optimize";;
4220 esac
4221 $cat <<EOH
4222
4223 By default, $package compiles with the -O flag to use the optimizer.
4224 Alternately, you might want to use the symbolic debugger, which uses
4225 the -g flag (on traditional Unix systems).  Either flag can be
4226 specified here.  To use neither flag, specify the word "none".
4227
4228 EOH
4229 rp="What optimizer/debugger flag should be used?"
4230 . ./myread
4231 optimize="$ans"
4232 case "$optimize" in
4233 'none') optimize=" ";;
4234 esac
4235
4236 dflt=''
4237 : We will not override a previous value, but we might want to
4238 : augment a hint file
4239 case "$hint" in
4240 default|recommended)
4241         case "$gccversion" in
4242         1*) dflt='-fpcc-struct-return' ;;
4243         esac
4244         case "$optimize" in
4245         *-g*) dflt="$dflt -DDEBUGGING";;
4246         esac
4247         case "$gccversion" in
4248         2*) if test -d /etc/conf/kconfig.d &&
4249                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4250                 then
4251                         dflt="$dflt -posix"
4252                 fi
4253                 ;;
4254         esac
4255         case "$gccversion" in
4256         1*) ;;
4257         2.[0-8]*) ;;
4258         ?*)     echo " "
4259                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4260                 echo 'int main(void) { return 0; }' > gcctest.c
4261                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4262                         echo "Yes, it does." 2>&1
4263                         case "$ccflags" in
4264                         *strict-aliasing*) 
4265                                 echo "Leaving current flags $ccflags alone." 2>&1
4266                                 ;;
4267                         *) dflt="$dflt -fno-strict-aliasing" ;;
4268                         esac
4269                 else
4270                         echo "Nope, it doesn't, but that's ok." 2>&1
4271                 fi
4272                 ;;
4273         esac
4274         ;;
4275 esac
4276
4277 case "$mips_type" in
4278 *BSD*|'') inclwanted="$locincpth $usrinc";;
4279 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4280 esac
4281 for thisincl in $inclwanted; do
4282         if $test -d $thisincl; then
4283                 if $test x$thisincl != x$usrinc; then
4284                         case "$dflt" in
4285                         *" -I$thisincl "*);;
4286                         *) dflt="$dflt -I$thisincl ";;
4287                         esac
4288                 fi
4289         fi
4290 done
4291
4292 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4293         xxx=true;
4294 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4295         xxx=true;
4296 else
4297         xxx=false;
4298 fi;
4299 if $xxx; then
4300         case "$dflt" in
4301         *$2*);;
4302         *) dflt="$dflt -D$2";;
4303         esac;
4304 fi'
4305
4306 set signal.h LANGUAGE_C; eval $inctest
4307
4308 case "$usesocks" in
4309 $define)
4310         ccflags="$ccflags -DSOCKS"
4311         ;;
4312 esac
4313
4314 case "$hint" in
4315 default|recommended) dflt="$ccflags $dflt" ;;
4316 *) dflt="$ccflags";;
4317 esac
4318
4319 case "$dflt" in
4320 ''|' ') dflt=none;;
4321 esac
4322
4323 $cat <<EOH
4324
4325 Your C compiler may want other flags.  For this question you should include
4326 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4327 but you should NOT include libraries or ld flags like -lwhatever.  If you
4328 want $package to honor its debug switch, you should include -DDEBUGGING here.
4329 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4330
4331 To use no flags, specify the word "none".
4332
4333 EOH
4334 set X $dflt
4335 shift
4336 dflt=${1+"$@"}
4337 rp="Any additional cc flags?"
4338 . ./myread
4339 case "$ans" in
4340 none) ccflags='';;
4341 *) ccflags="$ans";;
4342 esac
4343
4344 : the following weeds options from ccflags that are of no interest to cpp
4345 case "$cppflags" in
4346 '') cppflags="$ccflags" ;;
4347 *)  cppflags="$cppflags $ccflags" ;;
4348 esac
4349 case "$gccversion" in
4350 1*) cppflags="$cppflags -D__GNUC__"
4351 esac
4352 case "$mips_type" in
4353 '');;
4354 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4355 esac
4356 case "$cppflags" in
4357 '');;
4358 *)
4359         echo " "
4360         echo "Let me guess what the preprocessor flags are..." >&4
4361         set X $cppflags
4362         shift
4363         cppflags=''
4364         $cat >cpp.c <<'EOM'
4365 #define BLURFL foo
4366
4367 BLURFL xx LFRULB
4368 EOM
4369         previous=''
4370         for flag in $*
4371         do
4372                 case "$flag" in
4373                 -*) ftry="$flag";;
4374                 *) ftry="$previous $flag";;
4375                 esac
4376                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4377                         >cpp1.out 2>/dev/null && \
4378                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4379                         >cpp2.out 2>/dev/null && \
4380                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4381                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4382                 then
4383                         cppflags="$cppflags $ftry"
4384                         previous=''
4385                 else
4386                         previous="$flag"
4387                 fi
4388         done
4389         set X $cppflags
4390         shift
4391         cppflags=${1+"$@"}
4392         case "$cppflags" in
4393         *-*)  echo "They appear to be: $cppflags";;
4394         esac
4395         $rm -f cpp.c cpp?.out
4396         ;;
4397 esac
4398
4399 : flags used in final linking phase
4400 case "$ldflags" in
4401 '') if ./venix; then
4402                 dflt='-i -z'
4403         else
4404                 dflt=''
4405         fi
4406         case "$ccflags" in
4407         *-posix*) dflt="$dflt -posix" ;;
4408         esac
4409         ;;
4410 *) dflt="$ldflags";;
4411 esac
4412
4413 : Try to guess additional flags to pick up local libraries.
4414 for thislibdir in $libpth; do
4415         case " $loclibpth " in
4416         *" $thislibdir "*)
4417                 case "$dflt " in 
4418                 *"-L$thislibdir "*) ;;
4419                 *)  dflt="$dflt -L$thislibdir" ;;
4420                 esac
4421                 ;;
4422         esac
4423 done
4424
4425 case "$dflt" in
4426 '') dflt='none' ;;
4427 esac
4428
4429 $cat <<EOH
4430
4431 Your C linker may need flags.  For this question you should
4432 include -L/whatever and any other flags used by the C linker, but you
4433 should NOT include libraries like -lwhatever.
4434
4435 Make sure you include the appropriate -L/path flags if your C linker
4436 does not normally search all of the directories you specified above,
4437 namely
4438         $libpth
4439 To use no flags, specify the word "none".
4440
4441 EOH
4442
4443 rp="Any additional ld flags (NOT including libraries)?"
4444 . ./myread
4445 case "$ans" in
4446 none) ldflags='';;
4447 *) ldflags="$ans";;
4448 esac
4449 rmlist="$rmlist pdp11"
4450
4451 : coherency check
4452 echo " "
4453 echo "Checking your choice of C compiler and flags for coherency..." >&4
4454 $cat > try.c <<'EOF'
4455 #include <stdio.h>
4456 int main() { printf("Ok\n"); exit(0); }
4457 EOF
4458 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4459 shift
4460 $cat >try.msg <<'EOM'
4461 I've tried to compile and run the following simple program:
4462
4463 EOM
4464 $cat try.c >> try.msg
4465
4466 $cat >> try.msg <<EOM
4467
4468 I used the command:
4469
4470         $*
4471         $run ./try
4472
4473 and I got the following output:
4474
4475 EOM
4476 dflt=y
4477 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4478         if $sh -c "$run ./try" >>try.msg 2>&1; then
4479                 xxx=`$run ./try`
4480                 case "$xxx" in
4481                 "Ok") dflt=n ;;
4482                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4483                         case " $libs " in
4484                         *" -lsfio "*)
4485                                 cat >> try.msg <<'EOQS'
4486 If $libs contains -lsfio, and sfio is mis-configured, then it
4487 sometimes (apparently) runs and exits with a 0 status, but with no
4488 output!  It may have to do with sfio's use of _exit vs. exit.
4489
4490 EOQS
4491                                 rp="You have a big problem.  Shall I abort Configure"
4492                                 dflt=y
4493                                 ;;
4494                         esac
4495                         ;;
4496                 esac
4497         else
4498                 echo "The program compiled OK, but exited with status $?." >>try.msg
4499                 rp="You have a problem.  Shall I abort Configure"
4500                 dflt=y
4501         fi
4502 else
4503         echo "I can't compile the test program." >>try.msg
4504         rp="You have a BIG problem.  Shall I abort Configure"
4505         dflt=y
4506 fi
4507 case "$dflt" in
4508 y)
4509         $cat try.msg >&4
4510         case "$knowitall" in
4511         '')
4512                 echo "(The supplied flags or libraries might be incorrect.)"
4513                 ;;
4514         *) dflt=n;;
4515         esac
4516         echo " "
4517         . ./myread
4518         case "$ans" in
4519         n*|N*) ;;
4520         *)      echo "Ok.  Stopping Configure." >&4
4521                 exit 1
4522                 ;;
4523         esac
4524         ;;
4525 n) echo "OK, that should do.";;
4526 esac
4527 $rm -f try try.* core
4528
4529 : define an is-a-typedef? function
4530 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4531 case "$inclist" in
4532 "") inclist="sys/types.h";;
4533 esac;
4534 eval "varval=\$$var";
4535 case "$varval" in
4536 "")
4537         $rm -f temp.c;
4538         for inc in $inclist; do
4539                 echo "#include <$inc>" >>temp.c;
4540         done;
4541         echo "#ifdef $type" >> temp.c;
4542         echo "printf(\"We have $type\");" >> temp.c;
4543         echo "#endif" >> temp.c;
4544         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4545         if $contains $type temp.E >/dev/null 2>&1; then
4546                 eval "$var=\$type";
4547         else
4548                 eval "$var=\$def";
4549         fi;
4550         $rm -f temp.?;;
4551 *) eval "$var=\$varval";;
4552 esac'
4553
4554 : define an is-a-typedef? function that prompts if the type is not available.
4555 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4556 case "$inclist" in
4557 "") inclist="sys/types.h";;
4558 esac;
4559 eval "varval=\$$var";
4560 case "$varval" in
4561 "")
4562         $rm -f temp.c;
4563         for inc in $inclist; do
4564                 echo "#include <$inc>" >>temp.c;
4565         done;
4566         echo "#ifdef $type" >> temp.c;
4567         echo "printf(\"We have $type\");" >> temp.c;
4568         echo "#endif" >> temp.c;
4569         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4570         echo " " ;
4571         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4572         if $contains $type temp.E >/dev/null 2>&1; then
4573                 echo "$type found." >&4;
4574                 eval "$var=\$type";
4575         else
4576                 echo "$type NOT found." >&4;
4577                 dflt="$def";
4578                 . ./myread ;
4579                 eval "$var=\$ans";
4580         fi;
4581         $rm -f temp.?;;
4582 *) eval "$var=\$varval";;
4583 esac'
4584
4585 : define a shorthand compile call
4586 compile='
4587 mc_file=$1;
4588 shift;
4589 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4590 : define a shorthand compile call for compilations that should be ok.
4591 compile_ok='
4592 mc_file=$1;
4593 shift;
4594 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4595
4596 : check for lengths of integral types
4597 echo " "
4598 case "$intsize" in
4599 '')
4600         echo "Checking to see how big your integers are..." >&4
4601         $cat >try.c <<'EOCP'
4602 #include <stdio.h>
4603 int main()
4604 {
4605         printf("intsize=%d;\n", (int)sizeof(int));
4606         printf("longsize=%d;\n", (int)sizeof(long));
4607         printf("shortsize=%d;\n", (int)sizeof(short));
4608         exit(0);
4609 }
4610 EOCP
4611         set try
4612         if eval $compile_ok && $run ./try > /dev/null; then
4613                 eval `$run ./try`
4614                 echo "Your integers are $intsize bytes long."
4615                 echo "Your long integers are $longsize bytes long."
4616                 echo "Your short integers are $shortsize bytes long."
4617         else
4618                 $cat >&4 <<EOM
4619 !
4620 Help! I can't compile and run the intsize test program: please enlighten me!
4621 (This is probably a misconfiguration in your system or libraries, and
4622 you really ought to fix it.  Still, I'll try anyway.)
4623 !
4624 EOM
4625                 dflt=4
4626                 rp="What is the size of an integer (in bytes)?"
4627                 . ./myread
4628                 intsize="$ans"
4629                 dflt=$intsize
4630                 rp="What is the size of a long integer (in bytes)?"
4631                 . ./myread
4632                 longsize="$ans"
4633                 dflt=2
4634                 rp="What is the size of a short integer (in bytes)?"
4635                 . ./myread
4636                 shortsize="$ans"
4637         fi
4638         ;;
4639 esac
4640 $rm -f try try.*
4641
4642 : see what type lseek is declared as in the kernel
4643 rp="What is the type used for lseek's offset on this system?"
4644 set off_t lseektype long stdio.h sys/types.h
4645 eval $typedef_ask
4646
4647 echo " "
4648 echo "Checking to see how big your file offsets are..." >&4
4649 $cat >try.c <<EOCP
4650 #include <sys/types.h>
4651 #include <stdio.h>
4652 int main()
4653 {
4654     printf("%d\n", (int)sizeof($lseektype));
4655     return(0); 
4656 }
4657 EOCP
4658 set try
4659 if eval $compile_ok; then
4660         lseeksize=`$run ./try`
4661         echo "Your file offsets are $lseeksize bytes long."
4662 else
4663         dflt=$longsize
4664         echo " "
4665         echo "(I can't seem to compile the test program.  Guessing...)"
4666         rp="What is the size of your file offsets (in bytes)?"
4667         . ./myread
4668         lseeksize="$ans"
4669 fi
4670 $rm -f try.c try
4671
4672 : see what type file positions are declared as in the library
4673 rp="What is the type for file position used by fsetpos()?"
4674 set fpos_t fpostype long stdio.h sys/types.h
4675 eval $typedef_ask
4676
4677 echo " "
4678 case "$fpostype" in
4679 *_t) zzz="$fpostype"    ;;
4680 *)   zzz="fpos_t"       ;;
4681 esac
4682 echo "Checking the size of $zzz..." >&4 
4683 cat > try.c <<EOCP
4684 #include <sys/types.h>
4685 #include <stdio.h>
4686 int main() {
4687     printf("%d\n", (int)sizeof($fpostype));
4688     exit(0);
4689 }
4690 EOCP
4691 set try
4692 if eval $compile_ok; then
4693         yyy=`$run ./try`
4694         case "$yyy" in
4695         '')     fpossize=4
4696                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4697                 ;;
4698         *)      fpossize=$yyy
4699                 echo "Your $zzz is $fpossize bytes long."
4700                 ;;
4701         esac
4702 else
4703         dflt="$longsize"
4704         echo " " >&4
4705         echo "(I can't compile the test program.  Guessing...)" >&4
4706         rp="What is the size of your file positions (in bytes)?"
4707         . ./myread
4708         fpossize="$ans"
4709 fi
4710
4711
4712
4713 # Backward compatibility (uselfs is deprecated).
4714 case "$uselfs" in
4715 "$define"|true|[yY]*)
4716         cat <<EOM >&4
4717
4718 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4719 EOM
4720         uselargefiles="$define"
4721         ;;
4722 esac                          
4723
4724 case "$lseeksize:$fpossize" in
4725 8:8) cat <<EOM
4726
4727 You can have files larger than 2 gigabytes.
4728 EOM
4729    val="$define" ;;
4730 *)    case "$uselargefiles" in
4731    "$undef"|false|[nN]*) dflt='n' ;;
4732    *)   dflt='y' ;;
4733    esac
4734    cat <<EOM
4735
4736 Perl can be built to understand large files (files larger than 2 gigabytes)
4737 on some systems.  To do so, Configure can be run with -Duselargefiles.
4738
4739 If this doesn't make any sense to you, just accept the default '$dflt'.
4740 EOM
4741    rp='Try to understand large files, if available?'
4742    . ./myread
4743    case "$ans" in
4744    y|Y)         val="$define" ;;
4745    *)           val="$undef"  ;;
4746    esac
4747    ;;
4748 esac
4749 set uselargefiles
4750 eval $setvar
4751 case "$uselargefiles" in
4752 "$define")
4753 : Look for a hint-file generated 'call-back-unit'.  If the
4754 : user has specified that a large files perl is to be built,
4755 : we may need to set or change some other defaults.
4756         if $test -f uselargefiles.cbu; then
4757                 echo "Your platform has some specific hints for large file builds, using them..."
4758                 . ./uselargefiles.cbu
4759                 echo " "
4760                 echo "Rechecking to see how big your file offsets are..." >&4
4761                 $cat >try.c <<EOCP
4762 #include <sys/types.h>
4763 #include <stdio.h>
4764 int main()
4765 {
4766     printf("%d\n", (int)sizeof($lseektype));
4767     return(0); 
4768 }
4769 EOCP
4770                 set try
4771                 if eval $compile_ok; then
4772                         lseeksize=`$run ./try`
4773                         $echo "Your file offsets are now $lseeksize bytes long."
4774                 else
4775                         dflt="$lseeksize"
4776                         echo " "
4777                         echo "(I can't seem to compile the test program.  Guessing...)"
4778                         rp="What is the size of your file offsets (in bytes)?"
4779                         . ./myread
4780                         lseeksize="$ans"
4781                 fi
4782                 case "$fpostype" in
4783                 *_t) zzz="$fpostype"    ;;
4784                 *)   zzz="fpos_t"       ;;
4785                 esac
4786                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4787                 $cat > try.c <<EOCP
4788 #include <sys/types.h>
4789 #include <stdio.h>
4790 int main() {
4791     printf("%d\n", (int)sizeof($fpostype));
4792     exit(0);
4793 }
4794 EOCP
4795                 set try
4796                 if eval $compile_ok; then
4797                         yyy=`$run ./try`
4798                         dflt="$lseeksize"
4799                         case "$yyy" in
4800                         '')     echo " "
4801                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4802                                 ;;
4803                         *)      fpossize=$yyy
4804                                 echo " $fpossize bytes." >&4
4805                                 ;;
4806                         esac
4807                 else
4808                         dflt="$fpossize"
4809                         echo " "
4810                         echo "(I can't compile the test program.  Guessing...)" >&4
4811                         rp="What is the size of your file positions (in bytes)?"
4812                         . ./myread
4813                         fpossize="$ans"
4814                 fi
4815                 $rm -f try.c try
4816         fi
4817         ;;
4818 esac
4819
4820
4821 case "$usemorebits" in
4822 "$define"|true|[yY]*)
4823         use64bitint="$define"
4824         uselongdouble="$define"
4825         usemorebits="$define"
4826         ;;
4827 *)      usemorebits="$undef"
4828         ;;
4829 esac
4830
4831 : check for void type
4832 echo " "
4833 echo "Checking to see how well your C compiler groks the void type..." >&4
4834 case "$voidflags" in
4835 '')
4836         $cat >try.c <<'EOCP'
4837 #if TRY & 1
4838 void sub() {
4839 #else
4840 sub() {
4841 #endif
4842         extern void moo();      /* function returning void */
4843         void (*goo)();          /* ptr to func returning void */
4844 #if TRY & 8
4845         void *hue;              /* generic ptr */
4846 #endif
4847 #if TRY & 2
4848         void (*foo[10])();
4849 #endif
4850
4851 #if TRY & 4
4852         if(goo == moo) {
4853                 exit(0);
4854         }
4855 #endif
4856         exit(0);
4857 }
4858 int main() { sub(); }
4859 EOCP
4860         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4861                 voidflags=$defvoidused
4862         echo "Good.  It appears to support void to the level $package wants.">&4
4863                 if $contains warning .out >/dev/null 2>&1; then
4864                         echo "However, you might get some warnings that look like this:"
4865                         $cat .out
4866                 fi
4867         else
4868 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4869                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4870                         echo "It supports 1..."
4871                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4872                                 echo "It also supports 2..."
4873                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4874                                         voidflags=7
4875                                         echo "And it supports 4 but not 8 definitely."
4876                                 else
4877                                         echo "It doesn't support 4..."
4878                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4879                                                 voidflags=11
4880                                                 echo "But it supports 8."
4881                                         else
4882                                                 voidflags=3
4883                                                 echo "Neither does it support 8."
4884                                         fi
4885                                 fi
4886                         else
4887                                 echo "It does not support 2..."
4888                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4889                                         voidflags=13
4890                                         echo "But it supports 4 and 8."
4891                                 else
4892                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4893                                                 voidflags=5
4894                                                 echo "And it supports 4 but has not heard about 8."
4895                                         else
4896                                                 echo "However it supports 8 but not 4."
4897                                         fi
4898                                 fi
4899                         fi
4900                 else
4901                         echo "There is no support at all for void."
4902                         voidflags=0
4903                 fi
4904         fi
4905 esac
4906 case "$voidflags" in
4907 "$defvoidused") ;;
4908 *)      $cat >&4 <<'EOM'
4909   Support flag bits are:
4910     1: basic void declarations.
4911     2: arrays of pointers to functions returning void.
4912     4: operations between pointers to and addresses of void functions.
4913     8: generic void pointers.
4914 EOM
4915         dflt="$voidflags";
4916         rp="Your void support flags add up to what?"
4917         . ./myread
4918         voidflags="$ans"
4919         ;;
4920 esac
4921 $rm -f try.* .out
4922
4923 : check for length of pointer
4924 echo " "
4925 case "$ptrsize" in
4926 '')
4927         echo "Checking to see how big your pointers are..." >&4
4928         if test "$voidflags" -gt 7; then
4929                 echo '#define VOID_PTR char *' > try.c
4930         else
4931                 echo '#define VOID_PTR void *' > try.c
4932         fi
4933         $cat >>try.c <<'EOCP'
4934 #include <stdio.h>
4935 int main()
4936 {
4937     printf("%d\n", (int)sizeof(VOID_PTR));
4938     exit(0);
4939 }
4940 EOCP
4941         set try
4942         if eval $compile_ok; then
4943                 ptrsize=`$run ./try`
4944                 echo "Your pointers are $ptrsize bytes long."
4945         else
4946                 dflt='4'
4947                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4948                 rp="What is the size of a pointer (in bytes)?"
4949                 . ./myread
4950                 ptrsize="$ans"
4951         fi
4952         ;;
4953 esac
4954 $rm -f try.c try
4955
4956 : check for long long
4957 echo " "
4958 echo "Checking to see if you have long long..." >&4
4959 echo 'int main() { long long x = 7; return 0; }' > try.c
4960 set try
4961 if eval $compile; then
4962         val="$define"
4963         echo "You have long long."
4964 else
4965         val="$undef"
4966         echo "You do not have long long."
4967 fi
4968 $rm try.*
4969 set d_longlong
4970 eval $setvar
4971
4972 : check for length of long long
4973 case "${d_longlong}${longlongsize}" in
4974 $define)
4975         echo " "
4976         echo "Checking to see how big your long longs are..." >&4
4977         $cat >try.c <<'EOCP'
4978 #include <stdio.h>
4979 int main()
4980 {
4981     printf("%d\n", (int)sizeof(long long));
4982     return(0);
4983 }
4984 EOCP
4985         set try
4986         if eval $compile_ok; then
4987                 longlongsize=`$run ./try`
4988                 echo "Your long longs are $longlongsize bytes long."
4989         else
4990                 dflt='8'
4991                 echo " "
4992                 echo "(I can't seem to compile the test program.  Guessing...)"
4993                 rp="What is the size of a long long (in bytes)?"
4994                 . ./myread
4995                 longlongsize="$ans"
4996         fi
4997         if $test "X$longsize" = "X$longlongsize"; then
4998                 echo "(That isn't any different from an ordinary long.)"
4999         fi      
5000         ;;
5001 esac
5002 $rm -f try.* try
5003
5004 : determine filename position in cpp output
5005 echo " "
5006 echo "Computing filename position in cpp output for #include directives..." >&4
5007 echo '#include <stdio.h>' > foo.c
5008 $cat >fieldn <<EOF
5009 $startsh
5010 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5011 $grep '^[       ]*#.*stdio\.h' | \
5012 while read cline; do
5013         pos=1
5014         set \$cline
5015         while $test \$# -gt 0; do
5016                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5017                         echo "\$pos"
5018                         exit 0
5019                 fi
5020                 shift
5021                 pos=\`expr \$pos + 1\`
5022         done
5023 done
5024 EOF
5025 chmod +x fieldn
5026 fieldn=`./fieldn`
5027 $rm -f foo.c fieldn
5028 case $fieldn in
5029 '') pos='???';;
5030 1) pos=first;;
5031 2) pos=second;;
5032 3) pos=third;;
5033 *) pos="${fieldn}th";;
5034 esac
5035 echo "Your cpp writes the filename in the $pos field of the line."
5036
5037 : locate header file
5038 $cat >findhdr <<EOF
5039 $startsh
5040 wanted=\$1
5041 name=''
5042 for usrincdir in $usrinc
5043 do
5044         if test -f \$usrincdir/\$wanted; then
5045                 echo "\$usrincdir/\$wanted"
5046                 exit 0
5047         fi
5048 done
5049 awkprg='{ print \$$fieldn }'
5050 echo "#include <\$wanted>" > foo\$\$.c
5051 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5052 $grep "^[       ]*#.*\$wanted" | \
5053 while read cline; do
5054         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5055         case "\$name" in
5056         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5057         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5058         *) exit 2;;
5059         esac;
5060 done;
5061 #
5062 # status = 0: grep returned 0 lines, case statement not executed
5063 # status = 1: headerfile found
5064 # status = 2: while loop executed, no headerfile found
5065 #
5066 status=\$?
5067 $rm -f foo\$\$.c;
5068 if test \$status -eq 1; then
5069         exit 0;
5070 fi
5071 exit 1
5072 EOF
5073 chmod +x findhdr
5074
5075 : define an alternate in-header-list? function
5076 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5077 cont=true; xxf="echo \"<\$1> found.\" >&4";
5078 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5079 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5080 esac;
5081 case $# in 4) instead=instead;; *) instead="at last";; esac;
5082 while $test "$cont"; do
5083         xxx=`./findhdr $1`
5084         var=$2; eval "was=\$$2";
5085         if $test "$xxx" && $test -r "$xxx";
5086         then eval $xxf;
5087         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5088                 cont="";
5089         else eval $xxnf;
5090         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5091         set $yyy; shift; shift; yyy=$@;
5092         case $# in 0) cont="";;
5093         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5094                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5095         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5096                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5097         esac;
5098 done;
5099 while $test "$yyy";
5100 do set $yyy; var=$2; eval "was=\$$2";
5101         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5102         set $yyy; shift; shift; yyy=$@;
5103 done'
5104
5105 : see if inttypes.h is available
5106 : we want a real compile instead of Inhdr because some systems
5107 : have an inttypes.h which includes non-existent headers
5108 echo " "
5109 $cat >try.c <<EOCP
5110 #include <inttypes.h>
5111 int main() {
5112         static int32_t foo32 = 0x12345678;
5113 }
5114 EOCP
5115 set try
5116 if eval $compile; then
5117         echo "<inttypes.h> found." >&4
5118         val="$define"
5119 else
5120         echo "<inttypes.h> NOT found." >&4
5121         val="$undef"
5122 fi
5123 $rm -f try.c try
5124 set i_inttypes
5125 eval $setvar
5126
5127 : check for int64_t
5128 echo " "
5129 echo "Checking to see if you have int64_t..." >&4
5130 $cat >try.c <<EOCP
5131 #include <sys/types.h>
5132 #$i_inttypes I_INTTYPES
5133 #ifdef I_INTTYPES
5134 #include <inttypes.h>
5135 #endif
5136 int main() { int64_t x = 7; }
5137 EOCP
5138 set try
5139 if eval $compile; then
5140         val="$define"
5141         echo "You have int64_t."
5142 else
5143         val="$undef"
5144         echo "You do not have int64_t."
5145 fi
5146 $rm -f try try.*
5147 set d_int64_t
5148 eval $setvar
5149
5150
5151 echo " "
5152 echo "Checking which 64-bit integer type we could use..." >&4
5153
5154 case "$intsize" in
5155 8) val=int
5156    set quadtype
5157    eval $setvar
5158    val='"unsigned int"'
5159    set uquadtype
5160    eval $setvar
5161    quadkind=1
5162    ;;
5163 *) case "$longsize" in
5164    8) val=long
5165       set quadtype
5166       eval $setvar
5167       val='"unsigned long"'
5168       set uquadtype
5169       eval $setvar
5170       quadkind=2
5171       ;;
5172    *) case "$d_longlong:$longlongsize" in
5173       define:8)
5174         val='"long long"'
5175         set quadtype
5176         eval $setvar
5177         val='"unsigned long long"'
5178         set uquadtype
5179         eval $setvar
5180         quadkind=3
5181         ;;
5182       *) case "$d_int64_t" in
5183          define)
5184            val=int64_t
5185            set quadtype
5186            eval $setvar
5187            val=uint64_t
5188            set uquadtype
5189            eval $setvar
5190            quadkind=4
5191            ;;
5192          esac
5193          ;;
5194       esac
5195       ;;
5196    esac
5197    ;;
5198 esac
5199
5200 case "$quadtype" in
5201 '')     echo "Alas, no 64-bit integer types in sight." >&4
5202         d_quad="$undef"
5203         ;;
5204 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5205         d_quad="$define"
5206         ;;
5207 esac
5208
5209
5210 case "$uselonglong" in
5211 "$define"|true|[yY]*)
5212         cat <<EOM >&4
5213
5214 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5215 EOM
5216         use64bitint="$define"
5217         ;;
5218 esac                          
5219 case "$use64bits" in
5220 "$define"|true|[yY]*)
5221         cat <<EOM >&4
5222
5223 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5224 EOM
5225         use64bitint="$define"
5226         ;;
5227 esac                          
5228 case "$use64bitints" in
5229 "$define"|true|[yY]*)
5230         cat <<EOM >&4
5231
5232 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5233 EOM
5234         use64bitint="$define"
5235         ;;
5236 esac                          
5237 case "$use64bitsint" in
5238 "$define"|true|[yY]*)
5239         cat <<EOM >&4
5240
5241 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5242 EOM
5243         use64bitint="$define"
5244         ;;
5245 esac                          
5246 case "$uselonglongs" in
5247 "$define"|true|[yY]*)
5248         cat <<EOM >&4
5249
5250 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5251 EOM
5252         use64bitint="$define"
5253         ;;
5254 esac                          
5255 case "$use64bitsall" in
5256 "$define"|true|[yY]*)
5257         cat <<EOM >&4
5258
5259 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5260 EOM
5261         use64bitall="$define"
5262         ;;
5263 esac                          
5264
5265 case "$ccflags" in
5266 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5267 esac
5268 case "$use64bitall" in
5269 "$define"|true|[yY]*) use64bitint="$define" ;;
5270 esac
5271
5272 case "$longsize" in
5273 8) cat <<EOM
5274
5275 You have natively 64-bit long integers.
5276 EOM
5277    val="$define"
5278    ;;
5279 *) case "$use64bitint" in
5280    "$define"|true|[yY]*) dflt='y';;
5281    *) dflt='n';;
5282    esac
5283    case "$d_quad" in
5284    "$define") ;;
5285    *) dflt='n' ;;
5286    esac
5287    cat <<EOM
5288
5289 Perl can be built to take advantage of 64-bit integer types
5290 on some systems.  To do so, Configure can be run with -Duse64bitint.
5291 Choosing this option will most probably introduce binary incompatibilities.
5292
5293 If this doesn't make any sense to you, just accept the default '$dflt'.
5294 (The default has been chosen based on your configuration.)
5295 EOM
5296    rp='Try to use 64-bit integers, if available?'
5297    . ./myread
5298    case "$ans" in
5299    [yY]*) val="$define" ;;
5300    *)     val="$undef"  ;;
5301    esac
5302    ;;
5303 esac
5304 set use64bitint
5305 eval $setvar
5306
5307 case "$use64bitall" in
5308 "$define"|true|[yY]*) dflt='y' ;;
5309 *) case "$longsize" in
5310    8) dflt='y' ;;
5311    *) dflt='n' ;;
5312    esac
5313    ;;
5314 esac    
5315 cat <<EOM
5316
5317 You may also choose to try maximal 64-bitness.  It means using as much
5318 64-bitness as possible on the platform.  This in turn means even more
5319 binary incompatibilities.  On the other hand, your platform may not
5320 have any more 64-bitness available than what you already have chosen.
5321
5322 If this doesn't make any sense to you, just accept the default '$dflt'.
5323 (The default has been chosen based on your configuration.)
5324 EOM
5325 rp='Try to use maximal 64-bit support, if available?'
5326 . ./myread
5327 case "$ans" in
5328 [yY]*) val="$define" ;;
5329 *)     val="$undef"  ;;
5330 esac
5331 set use64bitall
5332 eval $setvar
5333 case "$use64bitall" in
5334 "$define")
5335         case "$use64bitint" in
5336         "$undef")
5337                 cat <<EOM
5338
5339 Since you have chosen a maximally 64-bit build, I'm also turning on
5340 the use of 64-bit integers.
5341 EOM
5342                 use64bitint="$define" ;;
5343         esac
5344         ;;
5345 esac
5346
5347 case "$use64bitall" in
5348 "$define"|true|[yY]*)
5349         case "$ptrsize" in
5350         4)      cat <<EOM >&4
5351
5352 *** You have chosen a maximally 64-bit build, but your pointers
5353 *** are only 4 bytes wide, disabling maximal 64-bitness.
5354
5355 EOM
5356                 use64bitall="$undef"
5357                 case "$use64bitint" in
5358                 "$define"|true|[yY]*) ;;
5359                 *)      cat <<EOM >&4
5360
5361 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5362
5363 EOM
5364                         use64bitint="$define"
5365                         ;;
5366                 esac
5367                 ;;
5368         esac
5369         ;;
5370 esac
5371
5372 case "$use64bitint" in
5373 "$define"|true|[yY]*)
5374 : Look for a hint-file generated 'call-back-unit'.  If the
5375 : user has specified that a 64-bit perl is to be built,
5376 : we may need to set or change some other defaults.
5377         if $test -f use64bitint.cbu; then
5378                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5379                 . ./use64bitint.cbu
5380         fi
5381         case "$longsize" in
5382         4) case "$archname64" in
5383            '') archname64=64int ;;
5384            esac
5385            ;;
5386         esac
5387         ;;
5388 esac
5389
5390 case "$use64bitall" in
5391 "$define"|true|[yY]*)
5392 : Look for a hint-file generated 'call-back-unit'.  If the
5393 : user has specified that a maximally 64-bit perl is to be built,
5394 : we may need to set or change some other defaults.
5395         if $test -f use64bitall.cbu; then
5396                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5397                 . ./use64bitall.cbu
5398         fi
5399         case "$longsize" in
5400         4) case "$archname64" in
5401            ''|64int) archname64=64all ;;
5402            esac
5403            ;;
5404         esac
5405         ;;
5406 esac
5407
5408 echo " "
5409 echo "Checking for GNU C Library..." >&4
5410 cat >try.c <<EOM
5411 #include <stdio.h>
5412 int main()
5413 {
5414 #ifdef __GLIBC__
5415     exit(0);
5416 #else
5417     exit(1);
5418 #endif
5419 }
5420 EOM
5421 set try
5422 if eval $compile_ok && $run ./try; then
5423         val="$define"
5424         echo "You are using the GNU C Library"
5425 else
5426         val="$undef"
5427         echo "You are not using the GNU C Library"
5428 fi
5429 $rm -f try try.*
5430 set d_gnulibc
5431 eval $setvar
5432
5433 : see if nm is to be used to determine whether a symbol is defined or not
5434 case "$usenm" in
5435 '')
5436         dflt=''
5437         case "$d_gnulibc" in
5438         "$define")
5439                 echo " "
5440                 echo "nm probably won't work on the GNU C Library." >&4
5441                 dflt=n
5442                 ;;
5443         esac
5444         case "$dflt" in
5445         '') 
5446                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5447                         echo " "
5448                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5449                         echo "'nm' won't be sufficient on this sytem." >&4
5450                         dflt=n
5451                 fi
5452                 ;;
5453         esac
5454         case "$dflt" in
5455         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5456                 if $test $dflt -gt 20; then
5457                         dflt=y
5458                 else
5459                         dflt=n
5460                 fi
5461                 ;;
5462         esac
5463         ;;
5464 *)
5465         case "$usenm" in
5466         true|$define) dflt=y;;
5467         *) dflt=n;;
5468         esac
5469         ;;
5470 esac
5471 $cat <<EOM
5472
5473 I can use $nm to extract the symbols from your C libraries. This
5474 is a time consuming task which may generate huge output on the disk (up
5475 to 3 megabytes) but that should make the symbols extraction faster. The
5476 alternative is to skip the 'nm' extraction part and to compile a small
5477 test program instead to determine whether each symbol is present. If
5478 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5479 this may be the best solution.
5480
5481 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5482
5483 EOM
5484 rp="Shall I use $nm to extract C symbols from the libraries?"
5485 . ./myread
5486 case "$ans" in
5487 [Nn]*) usenm=false;;
5488 *) usenm=true;;
5489 esac
5490
5491 runnm=$usenm
5492 case "$reuseval" in
5493 true) runnm=false;;
5494 esac
5495
5496 : nm options which may be necessary
5497 case "$nm_opt" in
5498 '') if $test -f /mach_boot; then
5499                 nm_opt=''       # Mach
5500         elif $test -d /usr/ccs/lib; then
5501                 nm_opt='-p'     # Solaris (and SunOS?)
5502         elif $test -f /dgux; then
5503                 nm_opt='-p'     # DG-UX
5504         elif $test -f /lib64/rld; then
5505                 nm_opt='-p'     # 64-bit Irix
5506         else
5507                 nm_opt=''
5508         fi;;
5509 esac
5510
5511 : nm options which may be necessary for shared libraries but illegal
5512 : for archive libraries.  Thank you, Linux.
5513 case "$nm_so_opt" in
5514 '')     case "$myuname" in
5515         *linux*)
5516                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5517                         nm_so_opt='--dynamic'
5518                 fi
5519                 ;;
5520         esac
5521         ;;
5522 esac
5523
5524 case "$runnm" in
5525 true)
5526 : get list of predefined functions in a handy place
5527 echo " "
5528 case "$libc" in
5529 '') libc=unknown
5530         case "$libs" in
5531         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5532         esac
5533         ;;
5534 esac
5535 case "$libs" in
5536 '') ;;
5537 *)  for thislib in $libs; do
5538         case "$thislib" in
5539         -lc|-lc_s)
5540                 : Handle C library specially below.
5541                 ;;
5542         -l*)
5543                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5544                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5545                         :
5546                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5547                         :
5548                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5549                         :
5550                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5551                         :
5552                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5553                         :
5554                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5555                         :
5556                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5557                         :
5558                 else
5559                         try=''
5560                 fi
5561                 libnames="$libnames $try"
5562                 ;;
5563         *) libnames="$libnames $thislib" ;;
5564         esac
5565         done
5566         ;;
5567 esac
5568 xxx=normal
5569 case "$libc" in
5570 unknown)
5571         set /lib/libc.$so
5572         for xxx in $libpth; do
5573                 $test -r $1 || set $xxx/libc.$so
5574                 : The messy sed command sorts on library version numbers.
5575                 $test -r $1 || \
5576                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5577                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5578                                 h
5579                                 s/[0-9][0-9]*/0000&/g
5580                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5581                                 G
5582                                 s/\n/ /' | \
5583                          $sort | $sed -e 's/^.* //'`
5584                 eval set \$$#
5585         done
5586         $test -r $1 || set /usr/ccs/lib/libc.$so
5587         $test -r $1 || set /lib/libsys_s$_a
5588         ;;
5589 *)
5590         set blurfl
5591         ;;
5592 esac
5593 if $test -r "$1"; then
5594         echo "Your (shared) C library seems to be in $1."
5595         libc="$1"
5596 elif $test -r /lib/libc && $test -r /lib/clib; then
5597         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5598         xxx=apollo
5599         libc='/lib/clib /lib/libc'
5600         if $test -r /lib/syslib; then
5601                 echo "(Your math library is in /lib/syslib.)"
5602                 libc="$libc /lib/syslib"
5603         fi
5604 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5605         echo "Your C library seems to be in $libc, as you said before."
5606 elif $test -r $incpath/usr/lib/libc$_a; then
5607         libc=$incpath/usr/lib/libc$_a;
5608         echo "Your C library seems to be in $libc.  That's fine."
5609 elif $test -r /lib/libc$_a; then
5610         libc=/lib/libc$_a;
5611         echo "Your C library seems to be in $libc.  You're normal."
5612 else
5613         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5614                 :
5615         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5616                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5617         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5618                 :
5619         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5620                 :
5621         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5622                 :
5623         else
5624                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5625         fi
5626         if $test -r "$tans"; then
5627                 echo "Your C library seems to be in $tans, of all places."
5628                 libc=$tans
5629         else
5630                 libc='blurfl'
5631         fi
5632 fi
5633 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5634         dflt="$libc"
5635         cat <<EOM
5636
5637 If the guess above is wrong (which it might be if you're using a strange
5638 compiler, or your machine supports multiple models), you can override it here.
5639
5640 EOM
5641 else
5642         dflt=''
5643         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5644         cat >&4 <<EOM
5645 I can't seem to find your C library.  I've looked in the following places:
5646
5647 EOM
5648         $sed 's/^/      /' libpath
5649         cat <<EOM
5650
5651 None of these seems to contain your C library. I need to get its name...
5652
5653 EOM
5654 fi
5655 fn=f
5656 rp='Where is your C library?'
5657 . ./getfile
5658 libc="$ans"
5659
5660 echo " "
5661 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5662 set X `cat libnames`
5663 shift
5664 xxx=files
5665 case $# in 1) xxx=file; esac
5666 echo "Extracting names from the following $xxx for later perusal:" >&4
5667 echo " "
5668 $sed 's/^/      /' libnames >&4
5669 echo " "
5670 $echo $n "This may take a while...$c" >&4
5671
5672 for file in $*; do
5673         case $file in
5674         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5675         *) $nm $nm_opt $file 2>/dev/null;;
5676         esac
5677 done >libc.tmp
5678
5679 $echo $n ".$c"
5680 $grep fprintf libc.tmp > libc.ptf
5681 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5682 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5683 xxx='[ADTSIW]'
5684 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5685         eval $xscan;\
5686         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5687                 eval $xrun
5688 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5689         eval $xscan;\
5690         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5691                 eval $xrun
5692 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5693         eval $xscan;\
5694         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5695                 eval $xrun
5696 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5697         eval $xscan;\
5698         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5699                 eval $xrun
5700 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5701         eval $xscan;\
5702         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5703                 eval $xrun
5704 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5705         eval $xscan;\
5706         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5707                 eval $xrun
5708 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5709                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5710         eval $xscan;\
5711         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5712                 eval $xrun
5713 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5714         eval $xscan;\
5715         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5716                 eval $xrun
5717 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5718         eval $xscan;\
5719         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5720                 eval $xrun
5721 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5722         eval $xscan;\
5723         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5724                 eval $xrun
5725 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5726         eval $xscan;\
5727         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5728                 eval $xrun
5729 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5730         eval $xscan;\
5731         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5732                 eval $xrun
5733 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5734         eval $xscan;\
5735         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5736                 eval $xrun
5737 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5738         eval $xscan;\
5739         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5740                 eval $xrun
5741 else
5742         $nm -p $* 2>/dev/null >libc.tmp
5743         $grep fprintf libc.tmp > libc.ptf
5744         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5745                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5746         then
5747                 nm_opt='-p'
5748                 eval $xrun
5749         else
5750                 echo " "
5751                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5752                 com=''
5753                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5754                         for thisname in $libnames $libc; do
5755                                 $ar t $thisname >>libc.tmp
5756                         done
5757                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5758                         echo "Ok." >&4
5759                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5760                         # Repeat libc to extract forwarders to DLL entries too
5761                         for thisname in $libnames $libc; do
5762                                 $ar tv $thisname >>libc.tmp
5763                                 # Revision 50 of EMX has bug in $ar.
5764                                 # it will not extract forwarders to DLL entries
5765                                 # Use emximp which will extract exactly them.
5766                                 emximp -o tmp.imp $thisname \
5767                                     2>/dev/null && \
5768                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5769                                     < tmp.imp >>libc.tmp
5770                                 $rm tmp.imp
5771                         done
5772                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5773                         echo "Ok." >&4
5774                 else
5775                         echo "$ar didn't seem to work right." >&4
5776                         echo "Maybe this is a Cray...trying bld instead..." >&4
5777                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5778                         then
5779                                 for thisname in $libnames; do
5780                                         bld t $libnames | \
5781                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5782                                         $ar t $thisname >>libc.tmp
5783                                 done
5784                                 echo "Ok." >&4
5785                         else
5786                                 echo "That didn't work either.  Giving up." >&4
5787                                 exit 1
5788                         fi
5789                 fi
5790         fi
5791 fi
5792 nm_extract="$com"
5793 if $test -f /lib/syscalls.exp; then
5794         echo " "
5795         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5796         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5797 fi
5798 ;;
5799 esac
5800 $rm -f libnames libpath
5801
5802 : is a C symbol defined?
5803 csym='tlook=$1;
5804 case "$3" in
5805 -v) tf=libc.tmp; tc=""; tdc="";;
5806 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5807 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5808 esac;
5809 tx=yes;
5810 case "$reuseval-$4" in
5811 true-) ;;
5812 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5813 esac;
5814 case "$tx" in
5815 yes)
5816         case "$runnm" in
5817         true)
5818                 if $contains $tlook $tf >/dev/null 2>&1;
5819                 then tval=true;
5820                 else tval=false;
5821                 fi;;
5822         *)
5823                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5824                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5825                 then tval=true;
5826                 else tval=false;
5827                 fi;
5828                 $rm -f t t.c;;
5829         esac;;
5830 *)
5831         case "$tval" in
5832         $define) tval=true;;
5833         *) tval=false;;
5834         esac;;
5835 esac;
5836 eval "$2=$tval"'
5837
5838 : define an is-in-libc? function
5839 inlibc='echo " "; td=$define; tu=$undef;
5840 sym=$1; var=$2; eval "was=\$$2";
5841 tx=yes;
5842 case "$reuseval$was" in
5843 true) ;;
5844 true*) tx=no;;
5845 esac;
5846 case "$tx" in
5847 yes)
5848         set $sym tres -f;
5849         eval $csym;
5850         case "$tres" in
5851         true)
5852                 echo "$sym() found." >&4;
5853                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5854         *)
5855                 echo "$sym() NOT found." >&4;
5856                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5857         esac;;
5858 *)
5859         case "$was" in
5860         $define) echo "$sym() found." >&4;;
5861         *) echo "$sym() NOT found." >&4;;
5862         esac;;
5863 esac'
5864
5865 : see if sqrtl exists
5866 set sqrtl d_sqrtl
5867 eval $inlibc
5868
5869 case "$ccflags" in
5870 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5871 esac
5872
5873 case "$uselongdouble" in
5874 $define|true|[yY]*)     dflt='y';;
5875 *) dflt='n';;
5876 esac
5877 cat <<EOM
5878
5879 Perl can be built to take advantage of long doubles which
5880 (if available) may give more accuracy and range for floating point numbers.
5881
5882 If this doesn't make any sense to you, just accept the default '$dflt'.
5883 EOM
5884 rp='Try to use long doubles if available?'
5885 . ./myread
5886 case "$ans" in
5887 y|Y)    val="$define"   ;;
5888 *)      val="$undef"    ;;
5889 esac
5890 set uselongdouble
5891 eval $setvar
5892
5893 case "$uselongdouble" in
5894 true|[yY]*) uselongdouble="$define" ;;
5895 esac
5896
5897 case "$uselongdouble" in
5898 $define)
5899 : Look for a hint-file generated 'call-back-unit'.  If the
5900 : user has specified that long doubles should be used,
5901 : we may need to set or change some other defaults.
5902         if $test -f uselongdouble.cbu; then
5903                 echo "Your platform has some specific hints for long doubles, using them..."
5904                 . ./uselongdouble.cbu
5905         else
5906                 $cat <<EOM
5907 (Your platform doesn't have any specific hints for long doubles.)
5908 EOM
5909         fi
5910         ;;
5911 esac
5912
5913 case "$uselongdouble:$d_sqrtl" in
5914 $define:$undef)
5915                 $cat <<EOM >&4
5916
5917 *** You requested the use of long doubles but you do not seem to have
5918 *** the mathematic functions for long doubles.  I'm disabling the use
5919 *** of long doubles.
5920
5921 EOM
5922         uselongdouble=$undef
5923         ;;
5924 esac
5925
5926 : check for length of double
5927 echo " "
5928 case "$doublesize" in
5929 '')
5930         echo "Checking to see how big your double precision numbers are..." >&4
5931         $cat >try.c <<'EOCP'
5932 #include <stdio.h>
5933 int main()
5934 {
5935     printf("%d\n", (int)sizeof(double));
5936     exit(0);
5937 }
5938 EOCP
5939         set try
5940         if eval $compile_ok; then
5941                 doublesize=`$run ./try`
5942                 echo "Your double is $doublesize bytes long."
5943         else
5944                 dflt='8'
5945                 echo "(I can't seem to compile the test program.  Guessing...)"
5946                 rp="What is the size of a double precision number (in bytes)?"
5947                 . ./myread
5948                 doublesize="$ans"
5949         fi
5950         ;;
5951 esac
5952 $rm -f try.c try
5953
5954 : check for long doubles
5955 echo " "
5956 echo "Checking to see if you have long double..." >&4
5957 echo 'int main() { long double x = 7.0; }' > try.c
5958 set try
5959 if eval $compile; then
5960         val="$define"
5961         echo "You have long double."
5962 else
5963         val="$undef"
5964         echo "You do not have long double."
5965 fi
5966 $rm try.*
5967 set d_longdbl
5968 eval $setvar
5969
5970 : check for length of long double
5971 case "${d_longdbl}${longdblsize}" in
5972 $define)
5973         echo " "
5974         echo "Checking to see how big your long doubles are..." >&4
5975         $cat >try.c <<'EOCP'
5976 #include <stdio.h>
5977 int main()
5978 {
5979         printf("%d\n", sizeof(long double));
5980 }
5981 EOCP
5982         set try
5983         set try
5984         if eval $compile; then
5985                 longdblsize=`$run ./try`
5986                 echo "Your long doubles are $longdblsize bytes long."
5987         else
5988                 dflt='8'
5989                 echo " "
5990                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5991                 rp="What is the size of a long double (in bytes)?"
5992                 . ./myread
5993                 longdblsize="$ans"
5994         fi
5995         if $test "X$doublesize" = "X$longdblsize"; then
5996                 echo "(That isn't any different from an ordinary double.)"
5997         fi      
5998         ;;
5999 esac
6000 $rm -f try.* try
6001
6002 case "$useperlio" in
6003 $define|true|[yY]*|'')  dflt='y';;
6004 *) dflt='n';;
6005 esac
6006 cat <<EOM
6007
6008 Previous version of $package used the standard IO mechanisms as
6009 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
6010 alternate IO mechanisms via the PerlIO abstraction layer, but the
6011 stdio mechanism is still available if needed.  The abstraction layer
6012 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
6013 Using PerlIO with sfio may cause problems with some extension modules.
6014
6015 If this doesn't make any sense to you, just accept the default '$dflt'.
6016 EOM
6017 rp='Use the PerlIO abstraction layer?'
6018 . ./myread
6019 case "$ans" in
6020 y|Y) 
6021         val="$define"
6022         ;;
6023 *)      
6024         echo "Ok, doing things the stdio way."
6025         val="$undef"
6026         ;;
6027 esac
6028 set useperlio
6029 eval $setvar 
6030
6031 case "$usesocks" in
6032 $define|true|[yY]*)
6033         case "$useperlio" in
6034         $define|true|[yY]*) ;;
6035         *)      cat >&4 <<EOM
6036
6037 You are using the SOCKS proxy protocol library which means that you
6038 should also use the PerlIO layer.  You may be headed for trouble.
6039
6040 EOM
6041                 ;;
6042         esac
6043         ;;
6044 esac
6045
6046         
6047 : determine the architecture name
6048 echo " "
6049 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6050         tarch=`arch`"-$osname"
6051 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6052         if uname -m > tmparch 2>&1 ; then
6053                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6054                         -e 's/$/'"-$osname/" tmparch`
6055         else
6056                 tarch="$osname"
6057         fi
6058         $rm -f tmparch
6059 else
6060         tarch="$osname"
6061 fi
6062 case "$myarchname" in
6063 ''|"$tarch") ;;
6064 *)
6065         echo "(Your architecture name used to be $myarchname.)"
6066         archname=''
6067         ;;
6068 esac
6069 case "$targetarch" in
6070 '') ;;
6071 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6072 esac
6073 myarchname="$tarch"
6074 case "$archname" in
6075 '') dflt="$tarch";;
6076 *) dflt="$archname";;
6077 esac
6078 rp='What is your architecture name'
6079 . ./myread
6080 archname="$ans"
6081 case "$usethreads" in
6082 $define)
6083         echo "Threads selected." >&4
6084         case "$archname" in
6085         *-thread*) echo "...and architecture name already has -thread." >&4
6086                 ;;
6087         *)      archname="$archname-thread"
6088                 echo "...setting architecture name to $archname." >&4
6089                 ;;
6090         esac
6091         ;;
6092 esac
6093 case "$usemultiplicity" in
6094 $define)
6095         echo "Multiplicity selected." >&4
6096         case "$archname" in
6097         *-multi*) echo "...and architecture name already has -multi." >&4
6098                 ;;
6099         *)      archname="$archname-multi"
6100                 echo "...setting architecture name to $archname." >&4
6101                 ;;
6102         esac
6103         ;;
6104 esac
6105 case "$use64bitint$use64bitall" in
6106 *"$define"*)
6107         case "$archname64" in
6108         '')
6109                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6110                 ;;
6111         *)
6112                 case "$use64bitint" in
6113                 "$define") echo "64 bit integers selected." >&4 ;;
6114                 esac
6115                 case "$use64bitall" in
6116                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6117                 esac
6118                 case "$archname" in
6119                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6120                         ;;
6121                 *)      archname="$archname-$archname64"
6122                         echo "...setting architecture name to $archname." >&4
6123                         ;;
6124                 esac
6125                 ;;
6126         esac
6127 esac
6128 case "$uselongdouble" in
6129 $define)
6130         echo "Long doubles selected." >&4
6131         case "$longdblsize" in
6132         $doublesize)
6133                 "...but long doubles are equal to doubles, not changing architecture name." >&4
6134                 ;;
6135         *)
6136                 case "$archname" in
6137                 *-ld*) echo "...and architecture name already has -ld." >&4
6138                         ;;
6139                 *)      archname="$archname-ld"
6140                         echo "...setting architecture name to $archname." >&4
6141                         ;;
6142                 esac
6143                 ;;
6144         esac
6145         ;;
6146 esac
6147 case "$useperlio" in
6148 $define)
6149         echo "Perlio selected." >&4
6150         ;;
6151 *)
6152         echo "Perlio not selected, using stdio." >&4
6153         case "$archname" in
6154         *-stdio*) echo "...and architecture name already has -stdio." >&4
6155                 ;;
6156         *)      archname="$archname-stdio"
6157                 echo "...setting architecture name to $archname." >&4
6158                 ;;
6159         esac
6160         ;;
6161 esac
6162
6163 : determine root of directory hierarchy where package will be installed.
6164 case "$prefix" in
6165 '')
6166         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6167         ;;
6168 *)
6169         dflt="$prefix"
6170         ;;
6171 esac
6172 $cat <<EOM
6173
6174 By default, $package will be installed in $dflt/bin, manual pages
6175 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6176 installation directories. Typically this is something like /usr/local.
6177 If you wish to have binaries under /usr/bin but other parts of the
6178 installation under /usr/local, that's ok: you will be prompted
6179 separately for each of the installation directories, the prefix being
6180 only used to set the defaults.
6181
6182 EOM
6183 fn=d~
6184 rp='Installation prefix to use?'
6185 . ./getfile
6186 oldprefix=''
6187 case "$prefix" in
6188 '') ;;
6189 *)
6190         case "$ans" in
6191         "$prefix") ;;
6192         *) oldprefix="$prefix";;
6193         esac
6194         ;;
6195 esac
6196 prefix="$ans"
6197 prefixexp="$ansexp"
6198
6199 case "$afsroot" in
6200 '')     afsroot=/afs ;;
6201 *)      afsroot=$afsroot ;;
6202 esac
6203
6204 : is AFS running?
6205 echo " "
6206 case "$afs" in
6207 $define|true)   afs=true ;;
6208 $undef|false)   afs=false ;;
6209 *)      if test -d $afsroot; then
6210                 afs=true
6211         else
6212                 afs=false
6213         fi
6214         ;;
6215 esac
6216 if $afs; then
6217         echo "AFS may be running... I'll be extra cautious then..." >&4
6218 else
6219         echo "AFS does not seem to be running..." >&4
6220 fi
6221
6222 : determine installation prefix for where package is to be installed.
6223 if $afs; then 
6224 $cat <<EOM
6225
6226 Since you are running AFS, I need to distinguish the directory in which
6227 files will reside from the directory in which they are installed (and from
6228 which they are presumably copied to the former directory by occult means).
6229
6230 EOM
6231         case "$installprefix" in
6232         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6233         *) dflt="$installprefix";;
6234         esac
6235 else
6236 $cat <<EOM
6237
6238 In some special cases, particularly when building $package for distribution,
6239 it is convenient to distinguish between the directory in which files should 
6240 be installed from the directory ($prefix) in which they 
6241 will eventually reside.  For most users, these two directories are the same.
6242
6243 EOM
6244         case "$installprefix" in
6245         '') dflt=$prefix ;;
6246         *) dflt=$installprefix;;
6247         esac
6248 fi
6249 fn=d~
6250 rp='What installation prefix should I use for installing files?'
6251 . ./getfile
6252 installprefix="$ans"
6253 installprefixexp="$ansexp"
6254
6255 : set the prefixit variable, to compute a suitable default value
6256 prefixit='case "$3" in
6257 ""|none)
6258         case "$oldprefix" in
6259         "") eval "$1=\"\$$2\"";;
6260         *)
6261                 case "$3" in
6262                 "") eval "$1=";;
6263                 none)
6264                         eval "tp=\"\$$2\"";
6265                         case "$tp" in
6266                         ""|" ") eval "$1=\"\$$2\"";;
6267                         *) eval "$1=";;
6268                         esac;;
6269                 esac;;
6270         esac;;
6271 *)
6272         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6273         case "$tp" in
6274         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6275         /*-$oldprefix/*|\~*-$oldprefix/*)
6276                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6277         *) eval "$1=\"\$$2\"";;
6278         esac;;
6279 esac'
6280
6281
6282 : get the patchlevel
6283 echo " "
6284 echo "Getting the current patchlevel..." >&4
6285 if $test -r $rsrc/patchlevel.h;then
6286         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6287         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6288         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6289         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6290         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6291         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6292        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6293 else
6294         revision=0
6295         patchlevel=0
6296         subversion=0
6297         api_revision=0
6298         api_version=0
6299         api_subversion=0
6300         perl_patchlevel=0
6301         $echo "(You do not have patchlevel.h.  Eek.)"
6302 fi
6303 if $test -r $rsrc/.patch ; then  
6304         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6305                 perl_patchlevel=`cat $rsrc/.patch`
6306         fi
6307 fi
6308 case "$perl_patchlevel" in
6309 0)  ;;
6310 '') $echo "(You have $package version $patchlevel subversion $subversion.)" ;;
6311 *)  $echo "(You have $package version $patchlevel subversion $subversion patchlevel $perl_patchlevel.)" ;;
6312 esac
6313 case "$osname" in
6314 dos|vms)
6315         : XXX Should be a Configure test for double-dots in filenames.
6316         version=`echo $revision $patchlevel $subversion | \
6317                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6318         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6319                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6320         ;;
6321 *)
6322         version=`echo $revision $patchlevel $subversion | \
6323                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6324         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6325                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6326         ;;
6327 esac
6328 : Special case the 5.005_xx maintenance series, which used 5.005
6329 : without any subversion label as a subdirectory in $sitelib
6330 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6331         api_versionstring='5.005'
6332 fi
6333
6334 : determine installation style
6335 : For now, try to deduce it from prefix unless it is already set.
6336 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6337 case "$installstyle" in
6338 '')     case "$prefix" in
6339                 *perl*) dflt='lib';;
6340                 *) dflt='lib/perl5' ;;
6341         esac
6342         ;;
6343 *)      dflt="$installstyle" ;;
6344 esac
6345 : Probably not worth prompting for this since we prompt for all
6346 : the directories individually, and the prompt would be too long and
6347 : confusing anyway.
6348 installstyle=$dflt
6349
6350 : determine where private library files go
6351 : Usual default is /usr/local/lib/perl5/$version.
6352 : Also allow things like /opt/perl/lib/$version, since 
6353 : /opt/perl/lib/perl5... would be redundant.
6354 : The default "style" setting is made in installstyle.U
6355 case "$installstyle" in
6356 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6357 *)       set dflt privlib lib/$version ;;
6358 esac
6359 eval $prefixit
6360 $cat <<EOM
6361
6362 There are some auxiliary files for $package that need to be put into a
6363 private library directory that is accessible by everyone.
6364
6365 EOM
6366 fn=d~+
6367 rp='Pathname where the private library files will reside?'
6368 . ./getfile
6369 privlib="$ans"
6370 privlibexp="$ansexp"
6371 : Change installation prefix, if necessary.
6372 if $test X"$prefix" != X"$installprefix"; then
6373         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6374 else
6375         installprivlib="$privlibexp"
6376 fi
6377
6378 : set the prefixup variable, to restore leading tilda escape
6379 prefixup='case "$prefixexp" in
6380 "$prefix") ;;
6381 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6382 esac'
6383
6384 : determine where public architecture dependent libraries go
6385 set archlib archlib
6386 eval $prefixit
6387 : privlib default is /usr/local/lib/$package/$version
6388 : archlib default is /usr/local/lib/$package/$version/$archname
6389 : privlib may have an optional trailing /share.
6390 tdflt=`echo $privlib | $sed 's,/share$,,'`
6391 tdflt=$tdflt/$archname
6392 case "$archlib" in
6393 '')     dflt=$tdflt
6394         ;;
6395 *)      dflt="$archlib"
6396     ;;
6397 esac
6398 $cat <<EOM
6399
6400 $spackage contains architecture-dependent library files.  If you are
6401 sharing libraries in a heterogeneous environment, you might store
6402 these files in a separate location.  Otherwise, you can just include
6403 them with the rest of the public library files.
6404
6405 EOM
6406 fn=d+~
6407 rp='Where do you want to put the public architecture-dependent libraries?'
6408 . ./getfile
6409 archlib="$ans"
6410 archlibexp="$ansexp"
6411 if $test X"$archlib" = X"$privlib"; then
6412         d_archlib="$undef"
6413 else
6414         d_archlib="$define"
6415 fi
6416 : Change installation prefix, if necessary.
6417 if $test X"$prefix" != X"$installprefix"; then
6418         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6419 else
6420         installarchlib="$archlibexp"
6421 fi
6422
6423
6424 : Binary compatibility with 5.005 is not possible for builds
6425 : with advanced features
6426 case "$usethreads$usemultiplicity" in
6427 *define*)
6428         bincompat5005="$undef"
6429         d_bincompat5005="$undef"
6430         ;;
6431 *)      $cat <<EOM
6432
6433 This version of Perl can be compiled for binary compatibility with 5.005.
6434 If you decide to do so, you will be able to continue using most of the
6435 extensions that were compiled for Perl 5.005.
6436
6437 EOM
6438         case "$bincompat5005$d_bincompat5005" in
6439         *"$undef"*) dflt=n ;;
6440         *) dflt=y ;;
6441         esac
6442         rp='Binary compatibility with Perl 5.005?'
6443         . ./myread
6444         case "$ans" in
6445         y*) val="$define" ;;
6446         *)  val="$undef" ;;
6447         esac
6448         set d_bincompat5005
6449         eval $setvar
6450         case "$d_bincompat5005" in
6451         "$define")
6452                 bincompat5005="$define"
6453                 ;;
6454         *)      bincompat5005="$undef"
6455                 d_bincompat5005="$undef"
6456                 ;;
6457         esac
6458         ;;
6459 esac
6460
6461
6462 : see if setuid scripts can be secure
6463 $cat <<EOM
6464
6465 Some kernels have a bug that prevents setuid #! scripts from being
6466 secure.  Some sites have disabled setuid #! scripts because of this.
6467
6468 First let's decide if your kernel supports secure setuid #! scripts.
6469 (If setuid #! scripts would be secure but have been disabled anyway,
6470 don't say that they are secure if asked.)
6471
6472 EOM
6473
6474 val="$undef"
6475 if $test -d /dev/fd; then
6476         echo "#!$ls" >reflect
6477         chmod +x,u+s reflect
6478         ./reflect >flect 2>&1
6479         if $contains "/dev/fd" flect >/dev/null; then
6480                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6481                 val="$define"
6482         else
6483                 $cat <<EOM
6484 If you are not sure if they are secure, I can check but I'll need a
6485 username and password different from the one you are using right now.
6486 If you don't have such a username or don't want me to test, simply
6487 enter 'none'.
6488
6489 EOM
6490                 rp='Other username to test security of setuid scripts with?'
6491                 dflt='none'
6492                 . ./myread
6493                 case "$ans" in
6494                 n|none)
6495                         case "$d_suidsafe" in
6496                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6497                                 dflt=n;;
6498                         "$undef")
6499                                 echo "Well, the $hint value is *not* secure." >&4
6500                                 dflt=n;;
6501                         *)      echo "Well, the $hint value *is* secure." >&4
6502                                 dflt=y;;
6503                         esac
6504                         ;;
6505                 *)
6506                         $rm -f reflect flect
6507                         echo "#!$ls" >reflect
6508                         chmod +x,u+s reflect
6509                         echo >flect
6510                         chmod a+w flect
6511                         echo '"su" will (probably) prompt you for '"$ans's password."
6512                         su $ans -c './reflect >flect'
6513                         if $contains "/dev/fd" flect >/dev/null; then
6514                                 echo "Okay, it looks like setuid scripts are secure." >&4
6515                                 dflt=y
6516                         else
6517                                 echo "I don't think setuid scripts are secure." >&4
6518                                 dflt=n
6519                         fi
6520                         ;;
6521                 esac
6522                 rp='Does your kernel have *secure* setuid scripts?'
6523                 . ./myread
6524                 case "$ans" in
6525                 [yY]*)  val="$define";;
6526                 *)      val="$undef";;
6527                 esac
6528         fi
6529 else
6530         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6531         echo "(That's for file descriptors, not floppy disks.)"
6532         val="$undef"
6533 fi
6534 set d_suidsafe
6535 eval $setvar
6536
6537 $rm -f reflect flect
6538
6539 : now see if they want to do setuid emulation
6540 echo " "
6541 val="$undef"
6542 case "$d_suidsafe" in
6543 "$define")
6544         val="$undef"
6545         echo "No need to emulate SUID scripts since they are secure here." >& 4
6546         ;;
6547 *)
6548         $cat <<EOM
6549 Some systems have disabled setuid scripts, especially systems where
6550 setuid scripts cannot be secure.  On systems where setuid scripts have
6551 been disabled, the setuid/setgid bits on scripts are currently
6552 useless.  It is possible for $package to detect those bits and emulate
6553 setuid/setgid in a secure fashion.  This emulation will only work if
6554 setuid scripts have been disabled in your kernel.
6555
6556 EOM
6557         case "$d_dosuid" in
6558         "$define") dflt=y ;;
6559         *) dflt=n ;;
6560         esac
6561         rp="Do you want to do setuid/setgid emulation?"
6562         . ./myread
6563         case "$ans" in
6564         [yY]*)  val="$define";;
6565         *)      val="$undef";;
6566         esac
6567         ;;
6568 esac
6569 set d_dosuid
6570 eval $setvar
6571
6572 : see if this is a malloc.h system
6573 set malloc.h i_malloc
6574 eval $inhdr
6575
6576 : see if stdlib is available
6577 set stdlib.h i_stdlib
6578 eval $inhdr
6579
6580 : determine which malloc to compile in
6581 echo " "
6582 case "$usemymalloc" in
6583 [yY]*|true|$define)     dflt='y' ;;
6584 [nN]*|false|$undef)     dflt='n' ;;
6585 *)      case "$ptrsize" in
6586         4) dflt='y' ;;
6587         *) dflt='n' ;;
6588         esac
6589         ;;
6590 esac
6591 rp="Do you wish to attempt to use the malloc that comes with $package?"
6592 . ./myread
6593 usemymalloc="$ans"
6594 case "$ans" in
6595 y*|true)
6596         usemymalloc='y'
6597         mallocsrc='malloc.c'
6598         mallocobj="malloc$_o"
6599         d_mymalloc="$define"
6600         case "$libs" in
6601         *-lmalloc*)
6602                 : Remove malloc from list of libraries to use
6603                 echo "Removing unneeded -lmalloc from library list" >&4
6604                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6605                 shift
6606                 libs="$*"
6607                 echo "libs = $libs" >&4
6608                 ;;
6609         esac
6610         ;;
6611 *)
6612         usemymalloc='n'
6613         mallocsrc=''
6614         mallocobj=''
6615         d_mymalloc="$undef"
6616         ;;
6617 esac
6618
6619 : compute the return types of malloc and free
6620 echo " "
6621 $cat >malloc.c <<END
6622 #$i_malloc I_MALLOC
6623 #$i_stdlib I_STDLIB
6624 #include <stdio.h>
6625 #include <sys/types.h>
6626 #ifdef I_MALLOC
6627 #include <malloc.h>
6628 #endif
6629 #ifdef I_STDLIB
6630 #include <stdlib.h>
6631 #endif
6632 #ifdef TRY_MALLOC
6633 void *malloc();
6634 #endif
6635 #ifdef TRY_FREE
6636 void free();
6637 #endif
6638 END
6639 case "$malloctype" in
6640 '')
6641         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6642                 malloctype='void *'
6643         else
6644                 malloctype='char *'
6645         fi
6646         ;;
6647 esac
6648 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6649
6650 case "$freetype" in
6651 '')
6652         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6653                 freetype='void'
6654         else
6655                 freetype='int'
6656         fi
6657         ;;
6658 esac
6659 echo "Your system uses $freetype free(), it would seem." >&4
6660 $rm -f malloc.[co]
6661 $cat <<EOM
6662
6663 After $package is installed, you may wish to install various
6664 add-on modules and utilities.  Typically, these add-ons will
6665 be installed under $prefix with the rest
6666 of this package.  However, you may wish to install such add-ons
6667 elsewhere under a different prefix.
6668
6669 If you do not wish to put everything under a single prefix, that's
6670 ok.  You will be prompted for the individual locations; this siteprefix
6671 is only used to suggest the defaults.
6672
6673 The default should be fine for most people.
6674
6675 EOM
6676 fn=d~+
6677 rp='Installation prefix to use for add-on modules and utilities?'
6678 : XXX Here might be another good place for an installstyle setting.
6679 case "$siteprefix" in
6680 '') dflt=$prefix ;;
6681 *)  dflt=$siteprefix ;;
6682 esac
6683 . ./getfile
6684 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6685 oldsiteprefix=''
6686 case "$siteprefix" in
6687 '') ;;
6688 *)      case "$ans" in
6689         "$prefix") ;;
6690         *) oldsiteprefix="$prefix";;
6691         esac
6692         ;;
6693 esac
6694 siteprefix="$ans"
6695 siteprefixexp="$ansexp"
6696
6697 : determine where site specific libraries go.
6698 : Usual default is /usr/local/lib/perl5/site_perl/$version
6699 : The default "style" setting is made in installstyle.U
6700 : XXX No longer works with Prefixit stuff.
6701 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6702 case "$sitelib" in
6703 '') case "$installstyle" in
6704         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6705         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6706         esac
6707         ;;
6708 *)      dflt="$sitelib"
6709         ;;
6710 esac
6711 $cat <<EOM
6712
6713 The installation process will create a directory for
6714 site-specific extensions and modules.  Most users find it convenient
6715 to place all site-specific files in this directory rather than in the
6716 main distribution directory.
6717
6718 EOM
6719 fn=d~+
6720 rp='Pathname for the site-specific library files?'
6721 . ./getfile
6722 sitelib="$ans"
6723 sitelibexp="$ansexp"
6724 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6725 : Change installation prefix, if necessary.
6726 if $test X"$prefix" != X"$installprefix"; then
6727         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6728 else
6729         installsitelib="$sitelibexp"
6730 fi
6731
6732 : determine where site specific architecture-dependent libraries go.
6733 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6734 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6735 : sitelib may have an optional trailing /share.
6736 case "$sitearch" in
6737 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6738         dflt="$dflt/$archname"
6739         ;;
6740 *)      dflt="$sitearch"
6741         ;;
6742 esac
6743 set sitearch sitearch none
6744 eval $prefixit
6745 $cat <<EOM
6746
6747 The installation process will also create a directory for
6748 architecture-dependent site-specific extensions and modules.
6749
6750 EOM
6751 fn=d~+
6752 rp='Pathname for the site-specific architecture-dependent library files?'
6753 . ./getfile
6754 sitearch="$ans"
6755 sitearchexp="$ansexp"
6756 : Change installation prefix, if necessary.
6757 if $test X"$prefix" != X"$installprefix"; then
6758         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6759 else
6760         installsitearch="$sitearchexp"
6761 fi
6762
6763 $cat <<EOM
6764
6765 The installation process will also create a directory for
6766 vendor-supplied add-ons.  Vendors who supply perl with their system
6767 may find it convenient to place all vendor-supplied files in this
6768 directory rather than in the main distribution directory.  This will
6769 ease upgrades between binary-compatible maintenance versions of perl.
6770
6771 Of course you may also use these directories in whatever way you see
6772 fit.  For example, you might use them to access modules shared over a
6773 company-wide network.
6774
6775 The default answer should be fine for most people.
6776 This causes further questions about vendor add-ons to be skipped
6777 and no vendor-specific directories will be configured for perl.
6778
6779 EOM
6780 rp='Do you want to configure vendor-specific add-on directories?'
6781 case "$usevendorprefix" in
6782 define|true|[yY]*) dflt=y ;;
6783 *)      : User may have set vendorprefix directly on Configure command line.
6784         case "$vendorprefix" in
6785         ''|' ') dflt=n ;;
6786         *)      dflt=y ;;
6787         esac
6788         ;;
6789 esac
6790 . ./myread
6791 case "$ans" in
6792 [yY]*)  fn=d~+
6793         rp='Installation prefix to use for vendor-supplied add-ons?'
6794         case "$vendorprefix" in
6795         '') dflt='' ;;
6796         *)  dflt=$vendorprefix ;;
6797         esac
6798         . ./getfile
6799         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6800         oldvendorprefix=''
6801         case "$vendorprefix" in
6802         '') ;;
6803         *)      case "$ans" in
6804                 "$prefix") ;;
6805                 *) oldvendorprefix="$prefix";;
6806                 esac
6807                 ;;
6808         esac
6809         usevendorprefix="$define"
6810         vendorprefix="$ans"
6811         vendorprefixexp="$ansexp"
6812         ;;
6813 *)      usevendorprefix="$undef"
6814         vendorprefix=''
6815         vendorprefixexp=''
6816         ;;
6817 esac
6818
6819 case "$vendorprefix" in
6820 '')     d_vendorlib="$undef"
6821         vendorlib=''
6822         vendorlibexp=''
6823         ;;
6824 *)      d_vendorlib="$define"
6825         : determine where vendor-supplied modules go.
6826         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6827         case "$vendorlib" in
6828         '')
6829                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6830                 case "$installstyle" in
6831                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6832                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6833                 esac
6834                 ;;
6835         *)      dflt="$vendorlib"
6836                 ;;
6837         esac
6838         fn=d~+
6839         rp='Pathname for the vendor-supplied library files?'
6840         . ./getfile
6841         vendorlib="$ans"
6842         vendorlibexp="$ansexp"
6843         ;;
6844 esac
6845 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6846 : Change installation prefix, if necessary.
6847 if $test X"$prefix" != X"$installprefix"; then
6848         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6849 else
6850         installvendorlib="$vendorlibexp"
6851 fi
6852
6853 case "$vendorprefix" in
6854 '')     d_vendorarch="$undef"
6855         vendorarch=''
6856         vendorarchexp=''
6857         ;;
6858 *)      d_vendorarch="$define"
6859         : determine where vendor-supplied architecture-dependent libraries go.
6860         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6861         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6862         : vendorlib may have an optional trailing /share.
6863         case "$vendorarch" in
6864         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6865                 dflt="$dflt/$archname"
6866                 ;;
6867         *)      dflt="$vendorarch" ;;
6868         esac
6869         fn=d~+
6870         rp='Pathname for vendor-supplied architecture-dependent files?'
6871         . ./getfile
6872         vendorarch="$ans"
6873         vendorarchexp="$ansexp"
6874         ;;
6875 esac
6876 : Change installation prefix, if necessary.
6877 if $test X"$prefix" != X"$installprefix"; then
6878         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6879 else
6880         installvendorarch="$vendorarchexp"
6881 fi
6882
6883 : Final catch-all directories to search
6884 $cat <<EOM
6885
6886 Lastly, you can have perl look in other directories for extensions and
6887 modules in addition to those already specified.
6888 These directories will be searched after 
6889         $sitearch 
6890         $sitelib 
6891 EOM
6892 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6893 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6894 echo ' '
6895 case "$otherlibdirs" in
6896 ''|' ') dflt='none' ;;
6897 *)      dflt="$otherlibdirs" ;;
6898 esac
6899 $cat <<EOM
6900 Enter a colon-separated set of extra paths to include in perl's @INC
6901 search path, or enter 'none' for no extra paths.
6902
6903 EOM
6904
6905 rp='Colon-separated list of additional directories for perl to search?'
6906 . ./myread
6907 case "$ans" in
6908 ' '|''|none)    otherlibdirs=' ' ;;     
6909 *)      otherlibdirs="$ans" ;;
6910 esac
6911 case "$otherlibdirs" in
6912 ' ') val=$undef ;;
6913 *)      val=$define ;;
6914 esac
6915 set d_perl_otherlibdirs
6916 eval $setvar
6917
6918 : Cruising for prototypes
6919 echo " "
6920 echo "Checking out function prototypes..." >&4
6921 $cat >prototype.c <<'EOCP'
6922 int main(int argc, char *argv[]) {
6923         exit(0);}
6924 EOCP
6925 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6926         echo "Your C compiler appears to support function prototypes."
6927         val="$define"
6928 else
6929         echo "Your C compiler doesn't seem to understand function prototypes."
6930         val="$undef"
6931 fi
6932 set prototype
6933 eval $setvar
6934 $rm -f prototype*
6935
6936 case "$prototype" in
6937 "$define") ;;
6938 *)      ansi2knr='ansi2knr'
6939         echo " "
6940         cat <<EOM >&4
6941
6942 $me:  FATAL ERROR:
6943 This version of $package can only be compiled by a compiler that 
6944 understands function prototypes.  Unfortunately, your C compiler 
6945         $cc $ccflags
6946 doesn't seem to understand them.  Sorry about that.
6947
6948 If GNU cc is available for your system, perhaps you could try that instead.  
6949
6950 Eventually, we hope to support building Perl with pre-ANSI compilers.
6951 If you would like to help in that effort, please contact <perlbug@perl.org>.
6952
6953 Aborting Configure now.
6954 EOM
6955         exit 2
6956         ;;
6957 esac
6958
6959 : determine where public executables go
6960 echo " "
6961 set dflt bin bin
6962 eval $prefixit
6963 fn=d~
6964 rp='Pathname where the public executables will reside?'
6965 . ./getfile
6966 if $test "X$ansexp" != "X$binexp"; then
6967         installbin=''
6968 fi
6969 bin="$ans"
6970 binexp="$ansexp"
6971 : Change installation prefix, if necessary.
6972 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6973 if $test X"$prefix" != X"$installprefix"; then
6974         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6975 else
6976         installbin="$binexp"
6977 fi
6978
6979 : Find perl5.005 or later.
6980 echo "Looking for a previously installed perl5.005 or later... "
6981 case "$perl5" in
6982 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6983                 : Check if this perl is recent and can load a simple module
6984                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6985                         perl5=$tdir/perl
6986                         break;
6987                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6988                         perl5=$tdir/perl5
6989                         break;
6990                 fi
6991         done
6992         ;;
6993 *)      perl5="$perl5"
6994         ;;
6995 esac
6996 case "$perl5" in
6997 '')     echo "None found.  That's ok.";;
6998 *)      echo "Using $perl5." ;;
6999 esac
7000
7001 : Determine list of previous versions to include in @INC
7002 $cat > getverlist <<EOPL
7003 #!$perl5 -w
7004 use File::Basename;
7005 \$api_versionstring = "$api_versionstring";
7006 \$version = "$version";
7007 \$stem = "$sitelib_stem";
7008 \$archname = "$archname";
7009 EOPL
7010         $cat >> getverlist <<'EOPL'
7011 # Can't have leading @ because metaconfig interprets it as a command!
7012 ;@inc_version_list=();
7013 # XXX Redo to do opendir/readdir? 
7014 if (-d $stem) {
7015     chdir($stem);
7016     ;@candidates = glob("5.*");
7017 }
7018 else {
7019     ;@candidates = ();
7020 }
7021
7022 # XXX ToDo:  These comparisons must be reworked when two-digit
7023 # subversions come along, so that 5.7.10 compares as greater than
7024 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
7025 # widespread that we can use the built-in version vectors rather
7026 # than reinventing them here.  For 5.6.0, however, we must
7027 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
7028 foreach $d (@candidates) {
7029     if ($d lt $version) {
7030         if ($d ge $api_versionstring) {
7031             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7032         }
7033         elsif ($d ge "5.005") {
7034             unshift(@inc_version_list, grep { -d } $d);
7035         }
7036     }
7037     else {
7038         # Skip newer version.  I.e. don't look in
7039         # 5.7.0 if we're installing 5.6.1.
7040     }
7041 }
7042
7043 if (@inc_version_list) {
7044     print join(' ', @inc_version_list);
7045 }
7046 else {
7047     # Blank space to preserve value for next Configure run.
7048     print " ";
7049 }
7050 EOPL
7051 chmod +x getverlist
7052 case "$inc_version_list" in
7053 '')     if test -x "$perl5$exe_ext"; then
7054                 dflt=`$perl5 getverlist`
7055         else
7056                 dflt='none'
7057         fi
7058         ;;
7059 $undef) dflt='none' ;;
7060 *)  eval dflt=\"$inc_version_list\" ;;
7061 esac
7062 case "$dflt" in
7063 ''|' ') dflt=none ;;
7064 esac
7065 case "$dflt" in
7066 5.005) case "$bincompat5005" in
7067        $define|true|[yY]*) ;;
7068        *) dflt=none ;;
7069        esac
7070        ;;
7071 esac
7072 $cat <<'EOM'
7073
7074 In order to ease the process of upgrading, this version of perl 
7075 can be configured to use modules built and installed with earlier 
7076 versions of perl that were installed under $prefix.  Specify here
7077 the list of earlier versions that this version of perl should check.
7078 If Configure detected no earlier versions of perl installed under
7079 $prefix, then the list will be empty.  Answer 'none' to tell perl
7080 to not search earlier versions.
7081
7082 The default should almost always be sensible, so if you're not sure,
7083 just accept the default.
7084 EOM
7085
7086 rp='List of earlier versions to include in @INC?'
7087 . ./myread
7088 case "$ans" in
7089 [Nn]one|''|' ') inc_version_list=' ' ;;
7090 *) inc_version_list="$ans" ;;
7091 esac
7092 case "$inc_version_list" in
7093 ''|' ') 
7094         inc_version_list_init='0';;
7095 *)      inc_version_list_init=`echo $inc_version_list |
7096                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7097         ;;
7098 esac
7099 $rm -f getverlist
7100
7101 : determine whether to install perl also as /usr/bin/perl
7102
7103 echo " "
7104 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7105         $cat <<EOM
7106 Many scripts expect perl to be installed as /usr/bin/perl.
7107 I can install the perl you are about to compile also as /usr/bin/perl
7108 (in addition to $installbin/perl).
7109 EOM
7110         case "$installusrbinperl" in
7111         "$undef"|[nN]*) dflt='n';;
7112         *)              dflt='y';;
7113         esac
7114         rp="Do you want to install perl as /usr/bin/perl?"
7115         . ./myread
7116         case "$ans" in
7117         [yY]*)  val="$define";;
7118         *)      val="$undef" ;;
7119         esac
7120 else
7121         val="$undef"
7122 fi
7123 set installusrbinperl
7124 eval $setvar
7125
7126 : see if dld is available
7127 set dld.h i_dld
7128 eval $inhdr
7129
7130 : see if dlopen exists
7131 xxx_runnm="$runnm"
7132 runnm=false
7133 set dlopen d_dlopen
7134 eval $inlibc
7135 runnm="$xxx_runnm"
7136
7137 : determine which dynamic loading, if any, to compile in
7138 echo " "
7139 dldir="ext/DynaLoader"
7140 case "$usedl" in
7141 $define|y|true)
7142         dflt='y'
7143         usedl="$define"
7144         ;;
7145 $undef|n|false)
7146         dflt='n'
7147         usedl="$undef"
7148         ;;
7149 *) 
7150         dflt='n'
7151         case "$d_dlopen" in
7152             $define) dflt='y' ;;
7153         esac
7154         case "$i_dld" in
7155             $define) dflt='y' ;;
7156         esac
7157         : Does a dl_xxx.xs file exist for this operating system
7158         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7159         ;;
7160 esac
7161 rp="Do you wish to use dynamic loading?"
7162 . ./myread
7163 usedl="$ans"
7164 case "$ans" in
7165 y*) usedl="$define"
7166         case "$dlsrc" in
7167         '')
7168                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7169                         dflt="$dldir/dl_${osname}.xs"
7170                 elif $test "$d_dlopen" = "$define" ; then
7171                         dflt="$dldir/dl_dlopen.xs"
7172                 elif $test "$i_dld" = "$define" ; then
7173                         dflt="$dldir/dl_dld.xs"
7174                 else
7175                         dflt=''
7176                 fi
7177                 ;;
7178         *)      dflt="$dldir/$dlsrc"
7179                 ;;
7180         esac
7181     echo "The following dynamic loading files are available:"
7182         : Can not go over to $dldir because getfile has path hard-coded in.
7183         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7184         rp="Source file to use for dynamic loading"
7185         fn="fne"
7186         gfpth="$src"
7187         . ./getfile
7188         usedl="$define"
7189         : emulate basename
7190         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7191
7192         $cat << EOM
7193
7194 Some systems may require passing special flags to $cc -c to
7195 compile modules that will be used to create a shared library.
7196 To use no flags, say "none".
7197
7198 EOM
7199     case "$cccdlflags" in
7200     '') case "$gccversion" in
7201                 '') case "$osname" in
7202                         hpux)   dflt='+z' ;;
7203                         next)   dflt='none' ;;
7204                         irix*)  dflt='-KPIC' ;;
7205                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7206                         sunos)  dflt='-pic' ;;
7207                         *)      dflt='none' ;;
7208                     esac
7209                         ;;
7210                 *)  case "$osname" in
7211                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7212                         *)      dflt='-fpic' ;;
7213                     esac ;;
7214             esac ;;
7215         ' ') dflt='none' ;;
7216     *)  dflt="$cccdlflags" ;;
7217     esac
7218     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7219     . ./myread
7220     case "$ans" in
7221     none) cccdlflags=' ' ;;
7222     *) cccdlflags="$ans" ;;
7223     esac
7224
7225     cat << EOM
7226
7227 Some systems use ld to create libraries that can be dynamically loaded,
7228 while other systems (such as those using ELF) use $cc.
7229
7230 EOM
7231         case "$ld" in
7232         '')     $cat >try.c <<'EOM'
7233 /* Test for whether ELF binaries are produced */
7234 #include <fcntl.h>
7235 #include <stdlib.h>
7236 int main() {
7237         char b[4];
7238         int i = open("a.out",O_RDONLY);
7239         if(i == -1) 
7240                 exit(1); /* fail */
7241         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7242                 exit(0); /* succeed (yes, it's ELF) */
7243         else
7244                 exit(1); /* fail */
7245 }
7246 EOM
7247                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7248                         cat <<EOM
7249 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7250 EOM
7251                         dflt="$cc"
7252                 else
7253                         echo "I'll use ld to build dynamic libraries."
7254                         dflt='ld'
7255                 fi
7256                 rm -f try.c a.out
7257                 ;;
7258         *)      dflt="$ld"
7259                 ;;
7260         esac
7261
7262     rp="What command should be used to create dynamic libraries?"
7263     . ./myread
7264         ld="$ans"
7265
7266     cat << EOM
7267
7268 Some systems may require passing special flags to $ld to create a
7269 library that can be dynamically loaded.  If your ld flags include
7270 -L/other/path options to locate libraries outside your loader's normal
7271 search path, you may need to specify those -L options here as well.  To
7272 use no flags, say "none".
7273
7274 EOM
7275     case "$lddlflags" in
7276     '') case "$osname" in
7277                         beos) dflt='-nostart' ;;
7278                         hpux) dflt='-b';
7279                               case "$gccversion" in
7280                               '') dflt="$dflt +vnocompatwarnings" ;;
7281                               esac
7282                               ;;        
7283                         linux|irix*)    dflt='-shared' ;;
7284                         next)  dflt='none' ;;
7285                         solaris) dflt='-G' ;;
7286                         sunos) dflt='-assert nodefinitions' ;;
7287                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7288                 *)     dflt='none' ;;
7289                         esac
7290                         ;;
7291     *) dflt="$lddlflags" ;;
7292     esac
7293
7294         : Try to guess additional flags to pick up local libraries.
7295         : Be careful not to append to a plain 'none'
7296         case "$dflt" in
7297         none) dflt='' ;;
7298         esac
7299         for thisflag in $ldflags; do
7300                 case "$thisflag" in
7301                 -L*|-R*)
7302                         case " $dflt " in
7303                         *" $thisflag "*) ;;
7304                         *) dflt="$dflt $thisflag" ;;
7305                         esac
7306                         ;;
7307                 esac
7308         done
7309
7310         case "$dflt" in
7311         ''|' ') dflt='none' ;;
7312         esac
7313
7314     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7315     . ./myread
7316     case "$ans" in
7317     none) lddlflags=' ' ;;
7318     *) lddlflags="$ans" ;;
7319     esac
7320
7321         cat <<EOM
7322
7323 Some systems may require passing special flags to $cc to indicate that
7324 the resulting executable will use dynamic linking.  To use no flags,
7325 say "none".
7326
7327 EOM
7328     case "$ccdlflags" in
7329     '') case "$osname" in
7330                 hpux)   dflt='-Wl,-E' ;;
7331                 linux)  dflt='-rdynamic' ;;
7332                 next)   dflt='none' ;;
7333                 sunos)  dflt='none' ;;
7334                 *)      dflt='none' ;;
7335             esac ;;
7336     ' ')  dflt='none' ;;
7337     *)  dflt="$ccdlflags" ;;
7338     esac
7339     rp="Any special flags to pass to $cc to use dynamic linking?"
7340     . ./myread
7341     case "$ans" in
7342     none) ccdlflags=' ' ;;
7343     *) ccdlflags="$ans" ;;
7344     esac
7345     ;;
7346 *)  usedl="$undef"
7347         ld='ld'
7348     dlsrc='dl_none.xs'
7349     lddlflags=''
7350     ccdlflags=''
7351     ;;
7352 esac
7353
7354 also=''
7355 case "$usedl" in
7356 $undef)
7357         # No dynamic loading being used, so don't bother even to prompt.
7358         useshrplib='false'
7359         ;;
7360 *)      case "$useshrplib" in
7361         '')     case "$osname" in
7362                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7363                         dflt=y
7364                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7365                         ;;
7366                 next*)
7367                         case "$osvers" in
7368                         4*)     dflt=y
7369                                 also='Building a shared libperl is needed for MAB support.'
7370                                 ;;
7371                         *)      dflt=n
7372                                 ;;
7373                         esac
7374                         ;;
7375                 *)      dflt=n
7376                         ;;
7377                 esac
7378                 ;;
7379         $define|true|[Yy]*)
7380                 dflt=y
7381                 ;;
7382         *)      dflt=n
7383                 ;;
7384         esac
7385         $cat << EOM
7386
7387 The perl executable is normally obtained by linking perlmain.c with
7388 libperl${_a}, any static extensions (usually just DynaLoader), and
7389 any other libraries needed on this system (such as -lm, etc.).  Since
7390 your system supports dynamic loading, it is probably possible to build
7391 a shared libperl.$so.  If you will have more than one executable linked
7392 to libperl.$so, this will significantly reduce the size of each
7393 executable, but it may have a noticeable affect on performance.  The
7394 default is probably sensible for your system.
7395 $also
7396
7397 EOM
7398         rp="Build a shared libperl.$so (y/n)"
7399         . ./myread
7400         case "$ans" in
7401         true|$define|[Yy]*)
7402                 useshrplib='true'  ;;
7403         *)      useshrplib='false' ;;
7404         esac
7405         ;;
7406 esac
7407
7408 case "$useshrplib" in
7409 true)
7410         case "$libperl" in
7411         '')
7412                 # Figure out a good name for libperl.so.  Since it gets stored in
7413                 # a version-specific architecture-dependent library, the version
7414                 # number isn't really that important, except for making cc/ld happy.
7415                 #
7416                 # A name such as libperl.so.3.1
7417                 majmin="libperl.$so.$patchlevel.$subversion"
7418                 # A name such as libperl.so.301
7419                 majonly=`echo $patchlevel $subversion |
7420                         $awk '{printf "%d%02d", $1, $2}'`
7421                 majonly=libperl.$so.$majonly
7422                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7423                 # rely on figuring it out from the naming of libc.
7424                 case "${osname}${osvers}" in
7425                 next4*)
7426                         dflt=libperl.5.$so
7427                         # XXX How handle the --version stuff for MAB?
7428                         ;;
7429                 linux*)  # ld won't link with a bare -lperl otherwise.
7430                         dflt=libperl.$so
7431                         ;;
7432                 cygwin*) # include version
7433                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7434                         ;;
7435                 *)      # Try to guess based on whether libc has major.minor.
7436                         case "$libc" in
7437                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7438                         *libc.$so.[0-9]*) dflt=$majonly ;;
7439                         *)      dflt=libperl.$so ;;
7440                         esac
7441                         ;;
7442                 esac
7443                 ;;
7444         *)      dflt=$libperl
7445                 ;;
7446         esac
7447         cat << EOM
7448
7449 I need to select a good name for the shared libperl.  If your system uses
7450 library names with major and minor numbers, then you might want something
7451 like $majmin.  Alternatively, if your system uses a single version
7452 number for shared libraries, then you might want to use $majonly.
7453 Or, your system might be quite happy with a simple libperl.$so.
7454
7455 Since the shared libperl will get installed into a version-specific
7456 architecture-dependent directory, the version number of the shared perl
7457 library probably isn't important, so the default should be o.k.
7458
7459 EOM
7460         rp='What name do you want to give to the shared libperl?'
7461         . ./myread
7462         libperl=$ans
7463         echo "Ok, I'll use $libperl"
7464         ;;
7465 *)
7466         libperl="libperl${_a}"
7467         ;;
7468 esac
7469
7470 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7471 case "$shrpdir" in
7472 '') ;;
7473 *)      $cat >&4 <<EOM
7474 WARNING:  Use of the shrpdir variable for the installation location of
7475 the shared $libperl is not supported.  It was never documented and
7476 will not work in this version.  Let me (perlbug@perl.org)
7477 know of any problems this may cause.
7478
7479 EOM
7480         case "$shrpdir" in
7481         "$archlibexp/CORE")
7482                 $cat >&4 <<EOM
7483 But your current setting of $shrpdir is
7484 the default anyway, so it's harmless.
7485 EOM
7486                 ;;
7487         *)
7488                 $cat >&4 <<EOM
7489 Further, your current attempted setting of $shrpdir
7490 conflicts with the value of $archlibexp/CORE
7491 that installperl will use.
7492 EOM
7493                 ;;
7494         esac
7495         ;;
7496 esac
7497
7498 # How will the perl executable find the installed shared $libperl?
7499 # Add $xxx to ccdlflags.
7500 # If we can't figure out a command-line option, use $shrpenv to
7501 # set env LD_RUN_PATH.  The main perl makefile uses this.
7502 shrpdir=$archlibexp/CORE
7503 xxx=''
7504 tmp_shrpenv=''
7505 if "$useshrplib"; then
7506     case "$osname" in 
7507         aix)
7508                 # We'll set it in Makefile.SH...
7509                 ;;
7510         solaris|netbsd)
7511                 xxx="-R $shrpdir"
7512                 ;;
7513         freebsd)
7514                 xxx="-Wl,-R$shrpdir"
7515                 ;;
7516         linux|irix*|dec_osf)
7517                 xxx="-Wl,-rpath,$shrpdir"
7518                 ;;
7519         next)
7520                 # next doesn't like the default...
7521                 ;;
7522         beos)
7523                 # beos doesn't like the default, either.
7524                 ;;
7525         hpux*)
7526                 # hpux doesn't like the default, either.
7527                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7528                 ;;
7529         *)
7530                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7531                 ;;
7532         esac
7533         case "$xxx" in
7534         '') ;;
7535         *)      
7536                 # Only add $xxx if it isn't already in ccdlflags.
7537                 case " $ccdlflags " in
7538                 *" $xxx "*)     ;;
7539                 *)      ccdlflags="$ccdlflags $xxx"
7540                         cat <<EOM >&4
7541
7542 Adding $xxx to the flags
7543 passed to $ld so that the perl executable will find the 
7544 installed shared $libperl.
7545
7546 EOM
7547                         ;;
7548                 esac
7549                 ;;
7550         esac
7551 fi
7552 # Fix ccdlflags in AIX for building external extensions.
7553 # (For building Perl itself bare -bE:perl.exp is needed,
7554 #  Makefile.SH takes care of this.)
7555 case "$osname" in
7556 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7557 esac
7558 # Respect a hint or command-line value.
7559 case "$shrpenv" in
7560 '') shrpenv="$tmp_shrpenv" ;;
7561 esac
7562 case "$ldlibpthname" in
7563 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7564 none)   ldlibpthname='' ;;
7565 esac
7566
7567 : determine where manual pages are on this system
7568 echo " "
7569 case "$sysman" in
7570 '') 
7571         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7572         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7573         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7574         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7575         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7576         sysman=`./loc . /usr/man/man1 $syspath`
7577         ;;
7578 esac
7579 if $test -d "$sysman"; then
7580         echo "System manual is in $sysman." >&4
7581 else
7582         echo "Could not find manual pages in source form." >&4
7583 fi
7584
7585 : determine where manual pages go
7586 set man1dir man1dir none
7587 eval $prefixit
7588 $cat <<EOM
7589
7590 $spackage has manual pages available in source form.
7591 EOM
7592 case "$nroff" in
7593 nroff)
7594         echo "However, you don't have nroff, so they're probably useless to you."
7595         case "$man1dir" in
7596         '') man1dir="none";;
7597         esac;;
7598 esac
7599 echo "If you don't want the manual sources installed, answer 'none'."
7600 case "$man1dir" in
7601 ' ') dflt=none
7602         ;;
7603 '')
7604         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7605         lookpath="$lookpath $prefixexp/man/p_man/man1"
7606         lookpath="$lookpath $prefixexp/man/u_man/man1"
7607         lookpath="$lookpath $prefixexp/man/man.1"
7608         case "$sysman" in
7609         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7610         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7611         esac
7612         set dflt
7613         eval $prefixup
7614         ;;
7615 *)  dflt="$man1dir"
7616         ;;
7617 esac
7618 echo " "
7619 fn=dn+~
7620 rp="Where do the main $spackage manual pages (source) go?"
7621 . ./getfile
7622 if $test "X$man1direxp" != "X$ansexp"; then
7623         installman1dir=''
7624 fi
7625 man1dir="$ans"
7626 man1direxp="$ansexp"
7627 case "$man1dir" in
7628 '')     man1dir=' '
7629         installman1dir='';;
7630 esac
7631
7632 : Change installation prefix, if necessary.
7633 if $test X"$prefix" != X"$installprefix"; then
7634         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7635 else
7636         installman1dir="$man1direxp"
7637 fi
7638
7639 : What suffix to use on installed man pages
7640
7641 case "$man1dir" in
7642 ' ')
7643         man1ext='0'
7644         ;;
7645 *)
7646         rp="What suffix should be used for the main $spackage man pages?"
7647         case "$man1ext" in
7648         '')     case "$man1dir" in
7649                 *1)  dflt=1 ;;
7650                 *1p) dflt=1p ;;
7651                 *1pm) dflt=1pm ;;
7652                 *l) dflt=l;;
7653                 *n) dflt=n;;
7654                 *o) dflt=o;;
7655                 *p) dflt=p;;
7656                 *C) dflt=C;;
7657                 *L) dflt=L;;
7658                 *L1) dflt=L1;;
7659                 *) dflt=1;;
7660                 esac
7661                 ;;
7662         *)      dflt="$man1ext";;
7663         esac
7664         . ./myread
7665         man1ext="$ans"
7666         ;;
7667 esac
7668
7669 : see if we can have long filenames
7670 echo " "
7671 first=123456789abcdef
7672 $rm -f $first
7673 if (echo hi >$first) 2>/dev/null; then
7674         if $test -f 123456789abcde; then
7675                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7676                 val="$undef"
7677         else
7678                 echo 'You can have filenames longer than 14 characters.'>&4
7679                 val="$define"
7680         fi
7681 else
7682         $cat <<'EOM'
7683 You can't have filenames longer than 14 chars.
7684 You can't even think about them!
7685 EOM
7686         val="$undef"
7687 fi 
7688 set d_flexfnam
7689 eval $setvar
7690 $rm -rf 123456789abcde*
7691
7692 : determine where library module manual pages go
7693 set man3dir man3dir none
7694 eval $prefixit
7695 $cat <<EOM
7696
7697 $spackage has manual pages for many of the library modules.
7698 EOM
7699
7700 case "$nroff" in
7701 nroff)
7702         $cat <<'EOM'
7703 However, you don't have nroff, so they're probably useless to you.
7704 EOM
7705         case "$man3dir" in
7706         '') man3dir="none";;
7707         esac;;
7708 esac
7709
7710 case "$d_flexfnam" in
7711 undef)
7712         $cat <<'EOM'
7713 However, your system can't handle the long file names like File::Basename.3. 
7714 EOM
7715         case "$man3dir" in
7716         '') man3dir="none";;
7717         esac;;
7718 esac
7719
7720 echo "If you don't want the manual sources installed, answer 'none'."
7721 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7722 case "$man3dir" in
7723 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7724         if $test -d "$privlib/man/man3"; then
7725                 cat <<EOM >&4
7726
7727 WARNING:  Previous versions of perl installed man3 pages into
7728 $privlib/man/man3.  This version will suggest a 
7729 new default of $dflt.  
7730 EOM
7731                 tdflt=$dflt
7732                 dflt='n'
7733                 rp='Do you wish to preserve the old behavior?(y/n)'
7734                 . ./myread
7735                 case "$ans" in
7736                 y*) dflt="$privlib/man/man3" ;;
7737                 *)  dflt=$tdflt ;;
7738                 esac
7739     fi
7740         ;;
7741 *)      dflt="$man3dir" ;;
7742 esac
7743 case "$dflt" in
7744 ' ') dflt=none ;;
7745 esac
7746 echo " "
7747 fn=dn+~
7748 rp="Where do the $package library man pages (source) go?"
7749 . ./getfile
7750 man3dir="$ans"
7751 man3direxp="$ansexp"
7752 case "$man3dir" in
7753 '')     man3dir=' '
7754         installman3dir='';;
7755 esac
7756
7757 : Change installation prefix, if necessary.
7758 if $test X"$prefix" != X"$installprefix"; then
7759         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7760 else
7761         installman3dir="$man3direxp"
7762 fi
7763
7764 : What suffix to use on installed man pages
7765 case "$man3dir" in
7766 ' ')
7767         man3ext='0'
7768         ;;
7769 *)
7770         rp="What suffix should be used for the $package library man pages?"
7771         case "$man3ext" in
7772         '')     case "$man3dir" in
7773                 *3)  dflt=3 ;;
7774                 *3p) dflt=3p ;;
7775                 *3pm) dflt=3pm ;;
7776                 *l) dflt=l;;
7777                 *n) dflt=n;;
7778                 *o) dflt=o;;
7779                 *p) dflt=p;;
7780                 *C) dflt=C;;
7781                 *L) dflt=L;;
7782                 *L3) dflt=L3;;
7783                 *) dflt=3;;
7784                 esac
7785                 ;;
7786         *)      dflt="$man3ext";;
7787         esac
7788         . ./myread
7789         man3ext="$ans"
7790         ;;
7791 esac
7792
7793 : see if we have to deal with yellow pages, now NIS.
7794 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7795         if $test -f /usr/etc/nibindd; then
7796                 echo " "
7797                 echo "I'm fairly confident you're on a NeXT."
7798                 echo " "
7799                 rp='Do you get the hosts file via NetInfo?'
7800                 dflt=y
7801                 case "$hostcat" in
7802                 nidump*) ;;
7803                 '') ;;
7804                 *) dflt=n;;
7805                 esac
7806                 . ./myread
7807                 case "$ans" in
7808                 y*) hostcat='nidump hosts .';;
7809                 *)      case "$hostcat" in
7810                         nidump*) hostcat='';;
7811                         esac
7812                         ;;
7813                 esac
7814         fi
7815         case "$hostcat" in
7816         nidump*) ;;
7817         *)
7818                 case "$hostcat" in
7819                 *ypcat*) dflt=y;;
7820                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7821                                 dflt=y
7822                         else
7823                                 dflt=n
7824                         fi;;
7825                 *) dflt=n;;
7826                 esac
7827                 echo " "
7828                 rp='Are you getting the hosts file via yellow pages?'
7829                 . ./myread
7830                 case "$ans" in
7831                 y*) hostcat='ypcat hosts';;
7832                 *) hostcat='cat /etc/hosts';;
7833                 esac
7834                 ;;
7835         esac
7836 fi
7837 case "$hostcat" in
7838 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7839 esac
7840 case "$groupcat" in
7841 '') test -f /etc/group && groupcat='cat /etc/group';;
7842 esac
7843 case "$passcat" in
7844 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7845 esac
7846
7847 : now get the host name
7848 echo " "
7849 echo "Figuring out host name..." >&4
7850 case "$myhostname" in
7851 '') cont=true
7852         echo 'Maybe "hostname" will work...'
7853         if tans=`sh -c hostname 2>&1` ; then
7854                 myhostname=$tans
7855                 phostname=hostname
7856                 cont=''
7857         fi
7858         ;;
7859 *) cont='';;
7860 esac
7861 if $test "$cont"; then
7862         if ./xenix; then
7863                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7864                 if tans=`cat /etc/systemid 2>&1` ; then
7865                         myhostname=$tans
7866                         phostname='cat /etc/systemid'
7867                         echo "Whadyaknow.  Xenix always was a bit strange..."
7868                         cont=''
7869                 fi
7870         elif $test -r /etc/systemid; then
7871                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7872         fi
7873 fi
7874 if $test "$cont"; then
7875         echo 'No, maybe "uuname -l" will work...'
7876         if tans=`sh -c 'uuname -l' 2>&1` ; then
7877                 myhostname=$tans
7878                 phostname='uuname -l'
7879         else
7880                 echo 'Strange.  Maybe "uname -n" will work...'
7881                 if tans=`sh -c 'uname -n' 2>&1` ; then
7882                         myhostname=$tans
7883                         phostname='uname -n'
7884                 else
7885                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7886                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7887                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7888                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7889                         else
7890                                 case "$myhostname" in
7891                                 '') echo "Does this machine have an identity crisis or something?"
7892                                         phostname='';;
7893                                 *)
7894                                         echo "Well, you said $myhostname before..."
7895                                         phostname='echo $myhostname';;
7896                                 esac
7897                         fi
7898                 fi
7899         fi
7900 fi
7901 : you do not want to know about this
7902 set $myhostname
7903 myhostname=$1
7904
7905 : verify guess
7906 if $test "$myhostname" ; then
7907         dflt=y
7908         rp='Your host name appears to be "'$myhostname'".'" Right?"
7909         . ./myread
7910         case "$ans" in
7911         y*) ;;
7912         *) myhostname='';;
7913         esac
7914 fi
7915
7916 : bad guess or no guess
7917 while $test "X$myhostname" = X ; do
7918         dflt=''
7919         rp="Please type the (one word) name of your host:"
7920         . ./myread
7921         myhostname="$ans"
7922 done
7923
7924 : translate upper to lower if necessary
7925 case "$myhostname" in
7926 *[A-Z]*)
7927         echo "(Normalizing case in your host name)"
7928         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7929         ;;
7930 esac
7931
7932 case "$myhostname" in
7933 *.*)
7934         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7935         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7936         echo "(Trimming domain name from host name--host name is now $myhostname)"
7937         ;;
7938 *) case "$mydomain" in
7939         '')
7940                 {
7941                         test "X$hostcat" = "Xypcat hosts" &&
7942                         ypmatch "$myhostname" hosts 2>/dev/null |\
7943                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7944                         $test -s hosts
7945                 } || {
7946                         test "X$hostcat" != "X" &&
7947                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7948                                         /[       ]$myhostname[  . ]/p" > hosts
7949                 }
7950                 tmp_re="[       . ]"
7951                 if $test -f hosts; then
7952                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7953                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7954                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7955                                 hosts | $sort | $uniq | \
7956                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7957                         case `$echo X$dflt` in
7958                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7959                                 dflt=.
7960                                 ;;
7961                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7962                                 ;;
7963                         esac
7964                 else
7965                         echo "(I cannot locate a hosts database anywhere)"
7966                         dflt=.
7967                 fi
7968                 case "$dflt" in
7969                 .)
7970                         tans=`./loc resolv.conf X /etc /usr/etc`
7971                         if $test -f "$tans"; then
7972                                 echo "(Attempting domain name extraction from $tans)"
7973                                 dflt=.`$sed -n -e 's/   / /g' \
7974                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7975                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7976                                 case "$dflt" in
7977                                 .) dflt=.`$sed -n -e 's/        / /g' \
7978                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7979                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7980                                         ;;
7981                                 esac
7982                         fi
7983                         ;;
7984                 esac
7985                 case "$dflt" in
7986                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7987                         dflt=.`sh -c domainname 2>/dev/null`
7988                         case "$dflt" in
7989                         '') dflt='.';;
7990                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7991                         esac
7992                         ;;
7993                 esac
7994                 case "$dflt$osname" in
7995                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7996                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7997                         ;;
7998                 esac
7999                 case "$dflt" in
8000                 .) echo "(Lost all hope -- silly guess then)"
8001                         dflt='.uucp'
8002                         ;;
8003                 esac
8004                 $rm -f hosts
8005                 ;;
8006         *) dflt="$mydomain";;
8007         esac;;
8008 esac
8009 echo " "
8010 rp="What is your domain name?"
8011 . ./myread
8012 tans="$ans"
8013 case "$ans" in
8014 '') ;;
8015 .*) ;;
8016 *) tans=".$tans";;
8017 esac
8018 mydomain="$tans"
8019
8020 : translate upper to lower if necessary
8021 case "$mydomain" in
8022 *[A-Z]*)
8023         echo "(Normalizing case in your domain name)"
8024         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8025         ;;
8026 esac
8027
8028 : a little sanity check here
8029 case "$phostname" in
8030 '') ;;
8031 *)
8032         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8033         $myhostname$mydomain|$myhostname) ;;
8034         *)
8035                 case "$phostname" in
8036                 sed*)
8037                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8038                         ;;
8039                 *)
8040                         echo "(That doesn't agree with your $phostname command, by the way.)"
8041                         ;;
8042                 esac
8043         ;;
8044         esac
8045         ;;
8046 esac
8047
8048 $cat <<EOM
8049
8050 I need to get your e-mail address in Internet format if possible, i.e.
8051 something like user@host.domain. Please answer accurately since I have
8052 no easy means to double check it. The default value provided below
8053 is most probably close to reality but may not be valid from outside
8054 your organization...
8055
8056 EOM
8057 cont=x
8058 while test "$cont"; do
8059         case "$cf_email" in
8060         '') dflt="$cf_by@$myhostname$mydomain";;
8061         *) dflt="$cf_email";;
8062         esac
8063         rp='What is your e-mail address?'
8064         . ./myread
8065         cf_email="$ans"
8066         case "$cf_email" in
8067         *@*.*) cont='' ;;
8068         *)
8069                 rp='Address does not look like an Internet one.  Use it anyway?'
8070                 case "$fastread" in
8071                 yes) dflt=y ;;
8072                 *) dflt=n ;;
8073                 esac
8074                 . ./myread
8075                 case "$ans" in
8076                 y*) cont='' ;;
8077                 *) echo " " ;;
8078                 esac
8079                 ;;
8080         esac
8081 done
8082
8083 $cat <<EOM
8084
8085 If you or somebody else will be maintaining perl at your site, please
8086 fill in the correct e-mail address here so that they may be contacted
8087 if necessary. Currently, the "perlbug" program included with perl
8088 will send mail to this address in addition to perlbug@perl.org. You may
8089 enter "none" for no administrator.
8090
8091 EOM
8092 case "$perladmin" in
8093 '') dflt="$cf_email";;
8094 *) dflt="$perladmin";;
8095 esac
8096 rp='Perl administrator e-mail address'
8097 . ./myread
8098 perladmin="$ans"
8099
8100 : determine whether to only install version-specific parts.
8101 echo " "
8102 $cat <<EOM
8103 Do you want to install only the version-specific parts of the perl
8104 distribution?  Usually you do *not* want to do this.
8105 EOM
8106 case "$versiononly" in
8107 "$define"|[Yy]*|true) dflt='y' ;;
8108 *) dflt='n';
8109 esac
8110 rp="Do you want to install only the version-specific parts of perl?"
8111 . ./myread
8112 case "$ans" in
8113 [yY]*)  val="$define";;
8114 *)      val="$undef" ;;
8115 esac
8116 set versiononly
8117 eval $setvar
8118
8119 : figure out how to guarantee perl startup
8120 case "$startperl" in
8121 '')
8122         case "$sharpbang" in
8123         *!)
8124                 $cat <<EOH
8125
8126 I can use the #! construct to start perl on your system. This will
8127 make startup of perl scripts faster, but may cause problems if you
8128 want to share those scripts and perl is not in a standard place
8129 ($binexp/perl) on all your platforms. The alternative is to force
8130 a shell by starting the script with a single ':' character.
8131
8132 EOH
8133                 case "$versiononly" in
8134                 "$define")      dflt="$binexp/perl$version";;  
8135                 *)              dflt="$binexp/perl";;
8136                 esac
8137                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8138                 . ./myread
8139                 case "$ans" in
8140                 none)   startperl=": # use perl";;
8141                 *)      startperl="#!$ans"
8142                         if $test 30 -lt `echo "$ans" | wc -c`; then
8143                                 $cat >&4 <<EOM
8144
8145 WARNING:  Some systems limit the #! command to 32 characters.
8146 If you experience difficulty running Perl scripts with #!, try
8147 installing Perl in a directory with a shorter pathname.
8148
8149 EOM
8150                         fi ;;
8151                 esac
8152                 ;;
8153         *) startperl=": # use perl"
8154                 ;;
8155         esac
8156         ;;
8157 esac
8158 echo "I'll use $startperl to start perl scripts."
8159
8160 : figure best path for perl in scripts
8161 case "$perlpath" in
8162 '')
8163         perlpath="$binexp/perl"
8164         case "$startperl" in
8165         *!*) ;;
8166         *)
8167                 $cat <<EOH
8168
8169 I will use the "eval 'exec'" idiom to start Perl on your system.
8170 I can use the full path of your Perl binary for this purpose, but
8171 doing so may cause problems if you want to share those scripts and
8172 Perl is not always in a standard place ($binexp/perl).
8173
8174 EOH
8175                 dflt="$binexp/perl"
8176                 rp="What path shall I use in \"eval 'exec'\"?"
8177                 . ./myread
8178                 perlpath="$ans"
8179                 ;;
8180         esac
8181         ;;
8182 esac
8183 case "$startperl" in
8184 *!*)    ;;
8185 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8186 esac
8187
8188 : determine where public executable scripts go
8189 set scriptdir scriptdir
8190 eval $prefixit
8191 case "$scriptdir" in
8192 '')
8193         dflt="$bin"
8194         : guess some guesses
8195         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8196         $test -d /usr/share/bin     && dflt=/usr/share/bin
8197         $test -d /usr/local/script  && dflt=/usr/local/script
8198         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8199         $test -d $prefixexp/script  && dflt=$prefixexp/script
8200         set dflt
8201         eval $prefixup
8202         ;;
8203 *)  dflt="$scriptdir"
8204         ;;
8205 esac
8206 $cat <<EOM
8207  
8208 Some installations have a separate directory just for executable scripts so
8209 that they can mount it across multiple architectures but keep the scripts in
8210 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8211 Or you might just lump your scripts in with all your other executables.
8212  
8213 EOM
8214 fn=d~
8215 rp='Where do you keep publicly executable scripts?'
8216 . ./getfile
8217 if $test "X$ansexp" != "X$scriptdirexp"; then
8218         installscript=''
8219 fi
8220 scriptdir="$ans"
8221 scriptdirexp="$ansexp"
8222 : Change installation prefix, if necessary.
8223 if $test X"$prefix" != X"$installprefix"; then
8224         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8225 else
8226         installscript="$scriptdirexp"
8227 fi
8228
8229 : determine where add-on public executables go
8230 case "$sitebin" in
8231 '')     dflt=$siteprefix/bin ;;
8232 *)      dflt=$sitebin ;;
8233 esac
8234 fn=d~
8235 rp='Pathname where the add-on public executables should be installed?'
8236 . ./getfile
8237 sitebin="$ans"
8238 sitebinexp="$ansexp"
8239 : Change installation prefix, if necessary.
8240 if $test X"$prefix" != X"$installprefix"; then
8241         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8242 else
8243         installsitebin="$sitebinexp"
8244 fi
8245
8246 case "$vendorprefix" in
8247 '')     d_vendorbin="$undef"
8248         vendorbin=''
8249         vendorbinexp=''
8250         ;;
8251 *)      d_vendorbin="$define"
8252         : determine where vendor-supplied executables go.
8253         case "$vendorbin" in
8254         '') dflt=$vendorprefix/bin ;;
8255         *)      dflt="$vendorbin" ;;
8256         esac
8257         fn=d~+
8258         rp='Pathname for the vendor-supplied executables directory?'
8259         . ./getfile
8260         vendorbin="$ans"
8261         vendorbinexp="$ansexp"
8262         ;;
8263 esac
8264 : Change installation prefix, if necessary.
8265 if $test X"$prefix" != X"$installprefix"; then
8266         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8267 else
8268         installvendorbin="$vendorbinexp"
8269 fi
8270
8271 : see if qgcvt exists
8272 set qgcvt d_qgcvt
8273 eval $inlibc
8274
8275 echo " "
8276
8277 if $test X"$d_longdbl" = X"$define"; then
8278
8279 echo "Checking how to print long doubles..." >&4
8280
8281 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8282         $cat >try.c <<'EOCP'
8283 #include <sys/types.h>
8284 #include <stdio.h>
8285 int main() {
8286   double d = 123.456;
8287   printf("%.3f\n", d);
8288 }
8289 EOCP
8290         set try
8291         if eval $compile; then
8292                 yyy=`$run ./try`
8293                 case "$yyy" in
8294                 123.456)
8295                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8296                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8297                         echo "We will use %f."
8298                         ;;
8299                 esac
8300         fi
8301 fi
8302
8303 if $test X"$sPRIfldbl" = X; then
8304         $cat >try.c <<'EOCP'
8305 #include <sys/types.h>
8306 #include <stdio.h>
8307 int main() {
8308   long double d = 123.456;
8309   printf("%.3Lf\n", d);
8310 }
8311 EOCP
8312         set try
8313         if eval $compile; then
8314                 yyy=`$run ./try`
8315                 case "$yyy" in
8316                 123.456)
8317                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8318                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8319                         echo "We will use %Lf."
8320                         ;;
8321                 esac
8322         fi
8323 fi
8324
8325 if $test X"$sPRIfldbl" = X; then
8326         $cat >try.c <<'EOCP'
8327 #include <sys/types.h>
8328 #include <stdio.h>
8329 int main() {
8330   long double d = 123.456;
8331   printf("%.3llf\n", d);
8332 }
8333 EOCP
8334         set try
8335         if eval $compile; then
8336                 yyy=`$run ./try`
8337                 case "$yyy" in
8338                 123.456)
8339                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8340                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8341                         echo "We will use %llf."
8342                         ;;
8343                 esac
8344         fi
8345 fi
8346
8347 if $test X"$sPRIfldbl" = X; then
8348         $cat >try.c <<'EOCP'
8349 #include <sys/types.h>
8350 #include <stdio.h>
8351 int main() {
8352   long double d = 123.456;
8353   printf("%.3lf\n", d);
8354 }
8355 EOCP
8356         set try
8357         if eval $compile; then
8358                 yyy=`$run ./try`
8359                 case "$yyy" in
8360                 123.456)
8361                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8362                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8363                         echo "We will use %lf."
8364                         ;;
8365                 esac
8366         fi
8367 fi
8368
8369 if $test X"$sPRIfldbl" = X; then
8370         echo "Cannot figure out how to print long doubles." >&4
8371 else
8372         sSCNfldbl=$sPRIfldbl    # expect consistency
8373 fi
8374
8375 $rm -f try try.*
8376
8377 fi # d_longdbl
8378
8379 case "$sPRIfldbl" in
8380 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8381         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8382         d_SCNfldbl="$undef";
8383         ;;
8384 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8385         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8386         d_SCNfldbl="$define";
8387         ;;
8388 esac
8389
8390 : Check how to convert floats to strings.
8391 echo " "
8392 echo "Checking for an efficient way to convert floats to strings."
8393 echo " " > try.c
8394 case "$uselongdouble" in
8395 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8396 esac
8397 case "$d_longdbl" in
8398 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8399 esac
8400 case "$d_PRIgldbl" in
8401 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8402 esac
8403 $cat >>try.c <<EOP
8404 #ifdef TRY_gconvert
8405 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8406 char *myname = "gconvert";
8407 #endif
8408 #ifdef TRY_gcvt
8409 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8410 char *myname = "gcvt";
8411 #endif
8412 #ifdef TRY_qgcvt
8413 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8414 char *myname = "qgcvt";
8415 #define DOUBLETYPE long double
8416 #endif
8417 #ifdef TRY_sprintf
8418 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8419 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8420 #else
8421 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8422 #endif
8423 char *myname = "sprintf";
8424 #endif
8425
8426 #ifndef DOUBLETYPE
8427 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8428 #define DOUBLETYPE long double
8429 #else
8430 #define DOUBLETYPE double
8431 #endif
8432 #endif
8433
8434 #include <stdio.h>
8435
8436 #define I_STDLIB $i_stdlib
8437 #ifdef I_STDLIB
8438 #include <stdlib.h>
8439 #endif
8440
8441 int
8442 checkit(expect, got)
8443 char *expect;
8444 char *got;
8445 {
8446     if (strcmp(expect, got)) {
8447                 printf("%s oddity:  Expected %s, got %s\n",
8448                         myname, expect, got);
8449                 exit(1);
8450         }
8451 }
8452
8453 int main()
8454
8455         char buf[64]; 
8456         buf[63] = '\0';
8457
8458         /* This must be 1st test on (which?) platform */
8459         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8460         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8461         checkit("0.1", buf);
8462
8463         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8464         checkit("1", buf);
8465
8466         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8467         checkit("1.1", buf);
8468
8469         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8470         checkit("1.01", buf);
8471
8472         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8473         checkit("1.001", buf);
8474
8475         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8476         checkit("1.0001", buf);
8477
8478         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8479         checkit("1.00001", buf);
8480
8481         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8482         checkit("1.000001", buf);
8483
8484         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8485         checkit("0", buf);
8486
8487         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8488         checkit("-1", buf);
8489
8490         /* Some Linux gcvt's give 1.e+5 here. */
8491         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8492         checkit("100000", buf);
8493         
8494         /* Some Linux gcvt's give -1.e+5 here. */
8495         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8496         checkit("-100000", buf);
8497
8498         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8499         checkit("123.456", buf);
8500
8501         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8502         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8503         if (strlen(buf) > 5)
8504             checkit("1e+030", buf); /* for Microsoft */
8505         else
8506             checkit("1e+30", buf);
8507
8508         exit(0);
8509 }
8510 EOP
8511 case "$d_Gconvert" in
8512 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8513 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8514 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8515 *) xxx_list='gconvert gcvt sprintf' ;;
8516 esac
8517
8518 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8519 "$define$define$define")
8520     # for long doubles prefer first qgcvt, then sprintf
8521     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8522     xxx_list="sprintf $xxx_list"
8523     case "$d_qgcvt" in
8524     "$define") xxx_list="qgcvt $xxx_list" ;;
8525     esac
8526     ;;
8527 esac
8528
8529 for xxx_convert in $xxx_list; do
8530         echo "Trying $xxx_convert..."
8531         $rm -f try try$_o
8532         set try -DTRY_$xxx_convert
8533         if eval $compile; then
8534                 echo "$xxx_convert() found." >&4
8535                 if $run ./try; then
8536                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8537                         break;
8538                 else
8539                         echo "...But $xxx_convert didn't work as I expected."
8540                 fi
8541         else
8542                 echo "$xxx_convert NOT found." >&4
8543         fi
8544 done
8545         
8546 case "$xxx_convert" in
8547 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8548 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8549 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8550 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8551    "$define$define$define")
8552       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8553    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8554    esac
8555    ;;  
8556 esac
8557
8558 : see if _fwalk exists
8559 set fwalk d__fwalk
8560 eval $inlibc
8561
8562 : Initialize h_fcntl
8563 h_fcntl=false
8564
8565 : Initialize h_sysfile
8566 h_sysfile=false
8567
8568 : access call always available on UNIX
8569 set access d_access
8570 eval $inlibc
8571
8572 : locate the flags for 'access()'
8573 case "$d_access" in
8574 "$define")
8575         echo " "
8576         $cat >access.c <<'EOCP'
8577 #include <sys/types.h>
8578 #ifdef I_FCNTL
8579 #include <fcntl.h>
8580 #endif
8581 #ifdef I_SYS_FILE
8582 #include <sys/file.h>
8583 #endif
8584 #ifdef I_UNISTD
8585 #include <unistd.h>
8586 #endif
8587 int main() {
8588         exit(R_OK);
8589 }
8590 EOCP
8591         : check sys/file.h first, no particular reason here
8592         if $test `./findhdr sys/file.h` && \
8593                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8594                 h_sysfile=true;
8595                 echo "<sys/file.h> defines the *_OK access constants." >&4
8596         elif $test `./findhdr fcntl.h` && \
8597                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8598                 h_fcntl=true;
8599                 echo "<fcntl.h> defines the *_OK access constants." >&4
8600         elif $test `./findhdr unistd.h` && \
8601                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8602                 echo "<unistd.h> defines the *_OK access constants." >&4
8603         else
8604                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8605         fi
8606         ;;
8607 esac
8608 $rm -f access*
8609
8610 : see if accessx exists
8611 set accessx d_accessx
8612 eval $inlibc
8613
8614 : see if alarm exists
8615 set alarm d_alarm
8616 eval $inlibc
8617
8618 : see if atolf exists
8619 set atolf d_atolf
8620 eval $inlibc
8621
8622 : see if atoll exists
8623 set atoll d_atoll
8624 eval $inlibc
8625
8626 : Look for GNU-cc style attribute checking
8627 echo " "
8628 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8629 $cat >attrib.c <<'EOCP'
8630 #include <stdio.h>
8631 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8632 EOCP
8633 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8634         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8635                 echo "Your C compiler doesn't fully support __attribute__."
8636                 val="$undef"
8637         else
8638                 echo "Your C compiler supports __attribute__."
8639                 val="$define"
8640         fi
8641 else
8642         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8643         val="$undef"
8644 fi
8645 set d_attribut
8646 eval $setvar
8647 $rm -f attrib*
8648
8649 : see if bcmp exists
8650 set bcmp d_bcmp
8651 eval $inlibc
8652
8653 : see if bcopy exists
8654 set bcopy d_bcopy
8655 eval $inlibc
8656
8657 : see if this is a unistd.h system
8658 set unistd.h i_unistd
8659 eval $inhdr
8660
8661 : see if getpgrp exists
8662 set getpgrp d_getpgrp
8663 eval $inlibc
8664
8665 case "$d_getpgrp" in
8666 "$define")
8667         echo " "
8668         echo "Checking to see which flavor of getpgrp is in use..."
8669         $cat >try.c <<EOP
8670 #$i_unistd I_UNISTD
8671 #include <sys/types.h>
8672 #ifdef I_UNISTD
8673 #  include <unistd.h>
8674 #endif
8675 int main()
8676 {
8677         if (getuid() == 0) {
8678                 printf("(I see you are running Configure as super-user...)\n");
8679                 setuid(1);
8680         }
8681 #ifdef TRY_BSD_PGRP
8682         if (getpgrp(1) == 0)
8683                 exit(0);
8684 #else
8685         if (getpgrp() > 0)
8686                 exit(0);
8687 #endif
8688         exit(1);
8689 }
8690 EOP
8691         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8692                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8693                 val="$define"
8694         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8695                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8696                 val="$undef"
8697         else
8698                 echo "I can't seem to compile and run the test program."
8699                 if ./usg; then
8700                         xxx="a USG one, i.e. you use getpgrp()."
8701                 else
8702                         # SVR4 systems can appear rather BSD-ish.
8703                         case "$i_unistd" in
8704                         $undef)
8705                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8706                                 val="$define"
8707                                 ;;
8708                         $define)
8709                                 xxx="probably a USG one, i.e. you use getpgrp()."
8710                                 val="$undef"
8711                                 ;;
8712                         esac
8713                 fi
8714                 echo "Assuming your getpgrp is $xxx" >&4
8715         fi
8716         ;;
8717 *) val="$undef";;
8718 esac
8719 set d_bsdgetpgrp
8720 eval $setvar
8721 $rm -f try try.*
8722
8723 : see if setpgrp exists
8724 set setpgrp d_setpgrp
8725 eval $inlibc
8726
8727 case "$d_setpgrp" in
8728 "$define")
8729         echo " "
8730         echo "Checking to see which flavor of setpgrp is in use..."
8731         $cat >try.c <<EOP
8732 #$i_unistd I_UNISTD
8733 #include <sys/types.h>
8734 #ifdef I_UNISTD
8735 #  include <unistd.h>
8736 #endif
8737 int main()
8738 {
8739         if (getuid() == 0) {
8740                 printf("(I see you are running Configure as super-user...)\n");
8741                 setuid(1);
8742         }
8743 #ifdef TRY_BSD_PGRP
8744         if (-1 == setpgrp(1, 1))
8745                 exit(0);
8746 #else
8747         if (setpgrp() != -1)
8748                 exit(0);
8749 #endif
8750         exit(1);
8751 }
8752 EOP
8753         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8754                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8755                 val="$define"
8756         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8757                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8758                 val="$undef"
8759         else
8760                 echo "(I can't seem to compile and run the test program.)"
8761                 if ./usg; then
8762                         xxx="a USG one, i.e. you use setpgrp()."
8763                 else
8764                         # SVR4 systems can appear rather BSD-ish.
8765                         case "$i_unistd" in
8766                         $undef)
8767                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8768                                 val="$define"
8769                                 ;;
8770                         $define)
8771                                 xxx="probably a USG one, i.e. you use setpgrp()."
8772                                 val="$undef"
8773                                 ;;
8774                         esac
8775                 fi
8776                 echo "Assuming your setpgrp is $xxx" >&4
8777         fi
8778         ;;
8779 *) val="$undef";;
8780 esac
8781 set d_bsdsetpgrp
8782 eval $setvar
8783 $rm -f try try.*
8784 : see if bzero exists
8785 set bzero d_bzero
8786 eval $inlibc
8787
8788 : see if signal is declared as pointer to function returning int or void
8789 echo " "
8790 xxx=`./findhdr signal.h`
8791 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8792 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8793         echo "You have int (*signal())() instead of void." >&4
8794         val="$undef"
8795 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8796         echo "You have void (*signal())()." >&4
8797         val="$define"
8798 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8799         echo "You have int (*signal())() instead of void." >&4
8800         val="$undef"
8801 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8802         echo "You have void (*signal())()." >&4
8803         val="$define"
8804 else
8805         case "$d_voidsig" in
8806         '')
8807         echo "I can't determine whether signal handler returns void or int..." >&4
8808                 dflt=void
8809                 rp="What type does your signal handler return?"
8810                 . ./myread
8811                 case "$ans" in
8812                 v*) val="$define";;
8813                 *) val="$undef";;
8814                 esac;;
8815         "$define")
8816                 echo "As you already told me, signal handler returns void." >&4
8817                 val="$define"
8818                 ;;
8819         *)      echo "As you already told me, signal handler returns int." >&4
8820                 val="$undef"
8821                 ;;
8822         esac
8823 fi
8824 set d_voidsig
8825 eval $setvar
8826 case "$d_voidsig" in
8827 "$define") signal_t="void";;
8828 *) signal_t="int";;
8829 esac
8830 $rm -f $$.tmp
8831
8832 : check for ability to cast large floats to 32-bit ints.
8833 echo " "
8834 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8835 if $test "$intsize" -ge 4; then
8836         xxx=int
8837 else
8838         xxx=long
8839 fi
8840 $cat >try.c <<EOCP
8841 #include <stdio.h>
8842 #include <sys/types.h>
8843 #include <signal.h>
8844 $signal_t blech(s) int s; { exit(3); }
8845 int main()
8846 {
8847         $xxx i32;
8848         double f, g;
8849         int result = 0;
8850         char str[16];
8851         signal(SIGFPE, blech);
8852
8853         /* Don't let compiler optimize the test away.  Store the number 
8854            in a writable string for gcc to pass to sscanf under HP/UX.
8855         */
8856         sprintf(str, "2147483647");
8857         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8858         g = 10 * f;
8859         i32  = ($xxx) g;
8860
8861         /* x86 processors will probably give 0x8000 0000, which is a
8862        sign change.  We don't want that.  We want to mimic SPARC
8863            behavior here, which is to preserve the sign and give
8864            back 0x7fff ffff.
8865         */
8866         if (i32 != ($xxx) f)
8867                 result |= 1;
8868         exit(result);
8869 }
8870 EOCP
8871 set try
8872 if eval $compile_ok; then
8873         $run ./try
8874         yyy=$?
8875 else
8876         echo "(I can't seem to compile the test program--assuming it can't)"
8877         yyy=1
8878 fi
8879 case "$yyy" in
8880 0)      val="$define"
8881         echo "Yup, it can."
8882         ;;
8883 *)      val="$undef"
8884         echo "Nope, it can't."
8885         ;;
8886 esac
8887 set d_casti32
8888 eval $setvar
8889 $rm -f try try.*
8890
8891 : check for ability to cast negative floats to unsigned
8892 echo " "
8893 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8894 $cat >try.c <<EOCP
8895 #include <stdio.h>
8896 #include <sys/types.h>
8897 #include <signal.h>
8898 $signal_t blech(s) int s; { exit(7); }
8899 $signal_t blech_in_list(s) int s; { exit(4); }
8900 unsigned long dummy_long(p) unsigned long p; { return p; }
8901 unsigned int dummy_int(p) unsigned int p; { return p; }
8902 unsigned short dummy_short(p) unsigned short p; { return p; }
8903 int main()
8904 {
8905         double f;
8906         unsigned long along;
8907         unsigned int aint;
8908         unsigned short ashort;
8909         int result = 0;
8910         char str[16];
8911         
8912         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8913            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8914            optimized the whole file away
8915         */
8916         /* Store the number in a writable string for gcc to pass to 
8917            sscanf under HP/UX.
8918         */
8919         sprintf(str, "-123");
8920         sscanf(str, "%lf", &f);  /* f = -123.; */
8921
8922         signal(SIGFPE, blech);
8923         along = (unsigned long)f;
8924         aint = (unsigned int)f;
8925         ashort = (unsigned short)f;
8926         if (along != (unsigned long)-123)
8927                 result |= 1;
8928         if (aint != (unsigned int)-123)
8929                 result |= 1;
8930         if (ashort != (unsigned short)-123)
8931                 result |= 1;
8932         sprintf(str, "1073741824.");
8933         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8934         f = f + f;
8935         along = 0;
8936         along = (unsigned long)f;
8937         if (along != 0x80000000)
8938                 result |= 2;
8939         f -= 1.;
8940         along = 0;
8941         along = (unsigned long)f;
8942         if (along != 0x7fffffff)
8943                 result |= 1;
8944         f += 2.;
8945         along = 0;
8946         along = (unsigned long)f;
8947         if (along != 0x80000001)
8948                 result |= 2;
8949         if (result)
8950                 exit(result);
8951         signal(SIGFPE, blech_in_list);
8952         sprintf(str, "123.");
8953         sscanf(str, "%lf", &f);  /* f = 123.; */
8954         along = dummy_long((unsigned long)f);
8955         aint = dummy_int((unsigned int)f);
8956         ashort = dummy_short((unsigned short)f);
8957         if (along != (unsigned long)123)
8958                 result |= 4;
8959         if (aint != (unsigned int)123)
8960                 result |= 4;
8961         if (ashort != (unsigned short)123)
8962                 result |= 4;
8963         exit(result);
8964
8965 }
8966 EOCP
8967 set try
8968 if eval $compile_ok; then
8969         $run ./try
8970         castflags=$?
8971 else
8972         echo "(I can't seem to compile the test program--assuming it can't)"
8973         castflags=7
8974 fi
8975 case "$castflags" in
8976 0)      val="$define"
8977         echo "Yup, it can."
8978         ;;
8979 *)      val="$undef"
8980         echo "Nope, it can't."
8981         ;;
8982 esac
8983 set d_castneg
8984 eval $setvar
8985 $rm -f try.*
8986
8987 : see if vprintf exists
8988 echo " "
8989 if set vprintf val -f d_vprintf; eval $csym; $val; then
8990         echo 'vprintf() found.' >&4
8991         val="$define"
8992         $cat >try.c <<'EOF'
8993 #include <varargs.h>
8994
8995 int main() { xxx("foo"); }
8996
8997 xxx(va_alist)
8998 va_dcl
8999 {
9000         va_list args;
9001         char buf[10];
9002
9003         va_start(args);
9004         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9005 }
9006 EOF
9007         set try
9008         if eval $compile && $run ./try; then
9009                 echo "Your vsprintf() returns (int)." >&4
9010                 val2="$undef"
9011         else
9012                 echo "Your vsprintf() returns (char*)." >&4
9013                 val2="$define"
9014         fi
9015 else
9016         echo 'vprintf() NOT found.' >&4
9017                 val="$undef"
9018                 val2="$undef"
9019 fi
9020 $rm -f try try.*
9021 set d_vprintf
9022 eval $setvar
9023 val=$val2
9024 set d_charvspr
9025 eval $setvar
9026
9027 : see if chown exists
9028 set chown d_chown
9029 eval $inlibc
9030
9031 : see if chroot exists
9032 set chroot d_chroot
9033 eval $inlibc
9034
9035 : see if chsize exists
9036 set chsize d_chsize
9037 eval $inlibc
9038
9039 hasstruct='varname=$1; struct=$2; shift; shift;
9040 while $test $# -ge 2; do
9041         case "$1" in
9042         $define) echo "#include <$2>";;
9043         esac ;
9044     shift 2;
9045 done > try.c;
9046 echo "int main () { struct $struct foo; }" >> try.c;
9047 set try;
9048 if eval $compile; then
9049         val="$define";
9050 else
9051         val="$undef";
9052 fi;
9053 set $varname;
9054 eval $setvar;
9055 $rm -f try.c try.o'
9056
9057 : see if sys/types.h has to be included
9058 set sys/types.h i_systypes
9059 eval $inhdr
9060
9061 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9062 while $test $# -ge 2; do
9063         case "$1" in
9064         $define) echo "#include <$2>";;
9065         esac ;
9066     shift 2;
9067 done > try.c;
9068 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9069 set try;
9070 if eval $compile; then
9071         val="$define";
9072 else
9073         val="$undef";
9074 fi;
9075 set $varname;
9076 eval $setvar;
9077 $rm -f try.c try.o'
9078
9079 socketlib=''
9080 sockethdr=''
9081 : see whether socket exists
9082 echo " "
9083 $echo $n "Hmm... $c" >&4
9084 if set socket val -f d_socket; eval $csym; $val; then
9085         echo "Looks like you have Berkeley networking support." >&4
9086         d_socket="$define"
9087         if set setsockopt val -f; eval $csym; $val; then
9088                 d_oldsock="$undef"
9089         else
9090                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9091                 d_oldsock="$define"
9092         fi
9093 else
9094         if $contains socklib libc.list >/dev/null 2>&1; then
9095                 echo "Looks like you have Berkeley networking support." >&4
9096                 d_socket="$define"
9097                 : we will have to assume that it supports the 4.2 BSD interface
9098                 d_oldsock="$undef"
9099         else
9100                 echo "You don't have Berkeley networking in libc$_a..." >&4
9101                 if test "X$d_socket" = "X$define"; then
9102                    echo "...but you seem to believe that you have sockets." >&4
9103                 else
9104                         for net in net socket
9105                         do
9106                                 if test -f /usr/lib/lib$net$_a; then
9107                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9108                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9109                                         if $contains socket libc.list >/dev/null 2>&1; then
9110                                                 d_socket="$define"
9111                                                 socketlib="-l$net"
9112                                                 case "$net" in
9113                                                 net)
9114                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9115                                                         sockethdr="-I/usr/netinclude"
9116                                                         ;;
9117                                                 esac
9118                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9119                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9120                                                         d_oldsock="$undef"
9121                                                 else
9122                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9123                                                         d_oldsock="$define"
9124                                                 fi
9125                                                 break
9126                                         fi
9127                                 fi
9128                         done
9129                         if test "X$d_socket" != "X$define"; then
9130                            echo "or anywhere else I see." >&4
9131                            d_socket="$undef"
9132                            d_oldsock="$undef"
9133                         fi
9134                 fi
9135         fi
9136 fi
9137
9138 : see if socketpair exists
9139 set socketpair d_sockpair
9140 eval $inlibc
9141
9142
9143 echo " "
9144 echo "Checking the availability of certain socket constants..." >& 4
9145 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9146         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9147         $cat >try.c <<EOF
9148 #include <sys/types.h>
9149 #include <sys/socket.h>
9150 int main() {
9151     int i = $ENUM;
9152 }
9153 EOF
9154         val="$undef"
9155         set try; if eval $compile; then
9156                 val="$define"
9157         fi
9158         set d_${enum}; eval $setvar
9159         $rm -f try.c try
9160 done
9161
9162 : see if this is a sys/uio.h system
9163 set sys/uio.h i_sysuio
9164 eval $inhdr
9165
9166
9167 echo " "
9168 echo "Checking to see if your system supports struct cmsghdr..." >&4
9169 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9170 eval $hasstruct
9171 case "$d_cmsghdr_s" in
9172 "$define")      echo "Yes, it does."   ;;
9173 *)              echo "No, it doesn't." ;;
9174 esac
9175
9176
9177 : check for const keyword
9178 echo " "
9179 echo 'Checking to see if your C compiler knows about "const"...' >&4
9180 $cat >const.c <<'EOCP'
9181 typedef struct spug { int drokk; } spug;
9182 int main()
9183 {
9184         const char *foo;
9185         const spug y;
9186 }
9187 EOCP
9188 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9189         val="$define"
9190         echo "Yup, it does."
9191 else
9192         val="$undef"
9193         echo "Nope, it doesn't."
9194 fi
9195 set d_const
9196 eval $setvar
9197
9198 : see if crypt exists
9199 echo " "
9200 if set crypt val -f d_crypt; eval $csym; $val; then
9201         echo 'crypt() found.' >&4
9202         val="$define"
9203         cryptlib=''
9204 else
9205         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9206         if $test -z "$cryptlib"; then
9207                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9208         else
9209                 cryptlib=-lcrypt
9210         fi
9211         if $test -z "$cryptlib"; then
9212                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9213         else
9214                 cryptlib=-lcrypt
9215         fi
9216         if $test -z "$cryptlib"; then
9217                 cryptlib=`./loc libcrypt$_a "" $libpth`
9218         else
9219                 cryptlib=-lcrypt
9220         fi
9221         if $test -z "$cryptlib"; then
9222                 echo 'crypt() NOT found.' >&4
9223                 val="$undef"
9224         else
9225                 val="$define"
9226         fi
9227 fi
9228 set d_crypt
9229 eval $setvar
9230
9231 : get csh whereabouts
9232 case "$csh" in
9233 'csh') val="$undef" ;;
9234 *) val="$define" ;;
9235 esac
9236 set d_csh
9237 eval $setvar
9238 : Respect a hint or command line value for full_csh.
9239 case "$full_csh" in
9240 '') full_csh=$csh ;;
9241 esac
9242
9243 : see if cuserid exists
9244 set cuserid d_cuserid
9245 eval $inlibc
9246
9247 : see if this is a limits.h system
9248 set limits.h i_limits
9249 eval $inhdr
9250
9251 : see if this is a float.h system
9252 set float.h i_float
9253 eval $inhdr
9254
9255 : See if number of significant digits in a double precision number is known
9256 echo " "
9257 $cat >dbl_dig.c <<EOM
9258 #$i_limits I_LIMITS
9259 #$i_float I_FLOAT
9260 #ifdef I_LIMITS
9261 #include <limits.h>
9262 #endif
9263 #ifdef I_FLOAT
9264 #include <float.h>
9265 #endif
9266 #ifdef DBL_DIG
9267 printf("Contains DBL_DIG");
9268 #endif
9269 EOM
9270 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9271 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9272         echo "DBL_DIG found." >&4
9273         val="$define"
9274 else
9275         echo "DBL_DIG NOT found." >&4
9276         val="$undef"
9277 fi
9278 $rm -f dbl_dig.?
9279 set d_dbl_dig
9280 eval $setvar
9281
9282 hasproto='varname=$1; func=$2; shift; shift;
9283 while $test $# -ge 2; do
9284         case "$1" in
9285         $define) echo "#include <$2>";;
9286         esac ;
9287     shift 2;
9288 done > try.c;
9289 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9290 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9291         echo "$func() prototype found.";
9292         val="$define";
9293 else
9294         echo "$func() prototype NOT found.";
9295         val="$undef";
9296 fi;
9297 set $varname;
9298 eval $setvar;
9299 $rm -f try.c tryout.c'
9300
9301 : see if dbm.h is available
9302 : see if dbmclose exists
9303 set dbmclose d_dbmclose
9304 eval $inlibc
9305
9306 case "$d_dbmclose" in
9307 $define)
9308         set dbm.h i_dbm
9309         eval $inhdr
9310         case "$i_dbm" in
9311         $define)
9312                 val="$undef"
9313                 set i_rpcsvcdbm
9314                 eval $setvar
9315                 ;;
9316         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9317                 eval $inhdr
9318                 ;;
9319         esac
9320         ;;
9321 *)      echo "We won't be including <dbm.h>"
9322         val="$undef"
9323         set i_dbm
9324         eval $setvar
9325         val="$undef"
9326         set i_rpcsvcdbm
9327         eval $setvar
9328         ;;
9329 esac
9330
9331 : see if prototype for dbminit is available
9332 echo " "
9333 set d_dbminitproto dbminit $i_dbm dbm.h
9334 eval $hasproto
9335
9336 : see if difftime exists
9337 set difftime d_difftime
9338 eval $inlibc
9339
9340 : see if this is a dirent system
9341 echo " "
9342 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9343         val="$define"
9344         echo "<dirent.h> found." >&4
9345 else
9346         val="$undef"
9347         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9348                 echo "<sys/dir.h> found." >&4
9349                 echo " "
9350         else
9351                 xinc=`./findhdr sys/ndir.h`
9352         fi
9353         echo "<dirent.h> NOT found." >&4
9354 fi
9355 set i_dirent
9356 eval $setvar
9357
9358 : Look for type of directory structure.
9359 echo " "
9360 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9361
9362 case "$direntrytype" in
9363 ''|' ')
9364         case "$i_dirent" in
9365         $define) guess1='struct dirent' ;;
9366         *) guess1='struct direct'  ;;
9367         esac
9368         ;;
9369 *)      guess1="$direntrytype"
9370         ;;
9371 esac
9372
9373 case "$guess1" in
9374 'struct dirent') guess2='struct direct' ;;
9375 *) guess2='struct dirent' ;;
9376 esac
9377                 
9378 if $contains "$guess1" try.c >/dev/null 2>&1; then
9379         direntrytype="$guess1"
9380         echo "Your directory entries are $direntrytype." >&4
9381 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9382         direntrytype="$guess2"
9383         echo "Your directory entries seem to be $direntrytype." >&4
9384 else
9385         echo "I don't recognize your system's directory entries." >&4
9386         rp="What type is used for directory entries on this system?"
9387         dflt="$guess1"
9388         . ./myread
9389         direntrytype="$ans"
9390 fi
9391 $rm -f try.c
9392
9393
9394 : see if the directory entry stores field length
9395 echo " "
9396 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9397 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9398         echo "Good, your directory entry keeps length information in d_namlen." >&4
9399         val="$define"
9400 else
9401         echo "Your directory entry does not know about the d_namlen field." >&4
9402         val="$undef"
9403 fi
9404 set d_dirnamlen
9405 eval $setvar
9406 $rm -f try.c
9407
9408 : see if dlerror exists
9409 xxx_runnm="$runnm"
9410 runnm=false
9411 set dlerror d_dlerror
9412 eval $inlibc
9413 runnm="$xxx_runnm"
9414
9415 : see if dlfcn is available
9416 set dlfcn.h i_dlfcn
9417 eval $inhdr
9418
9419 case "$usedl" in
9420 $define|y|true)
9421         $cat << EOM
9422
9423 On a few systems, the dynamically loaded modules that perl generates and uses
9424 will need a different extension than shared libs. The default will probably
9425 be appropriate.
9426
9427 EOM
9428         case "$dlext" in
9429         '')     dflt="$so" ;;
9430         *)      dflt="$dlext" ;;
9431         esac
9432         rp='What is the extension of dynamically loaded modules'
9433         . ./myread
9434         dlext="$ans"
9435         ;;
9436 *)
9437         dlext="none"
9438         ;;
9439 esac
9440
9441 : Check if dlsym need a leading underscore
9442 echo " "
9443 val="$undef"
9444
9445 case "$dlsrc" in
9446 dl_dlopen.xs)
9447         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9448         $cat >dyna.c <<'EOM'
9449 fred () { }
9450 EOM
9451
9452 $cat >fred.c<<EOM
9453
9454 #include <stdio.h>
9455 #$i_dlfcn I_DLFCN
9456 #ifdef I_DLFCN
9457 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9458 #else
9459 #include <sys/types.h>
9460 #include <nlist.h>
9461 #include <link.h>
9462 #endif
9463
9464 extern int fred() ;
9465
9466 int main()
9467 {
9468     void * handle ;
9469     void * symbol ;
9470 #ifndef RTLD_LAZY
9471     int mode = 1 ;
9472 #else
9473     int mode = RTLD_LAZY ;
9474 #endif
9475     handle = dlopen("./dyna.$dlext", mode) ;
9476     if (handle == NULL) {
9477         printf ("1\n") ;
9478         fflush (stdout) ;
9479         exit(0);
9480     }
9481     symbol = dlsym(handle, "fred") ;
9482     if (symbol == NULL) {
9483         /* try putting a leading underscore */
9484         symbol = dlsym(handle, "_fred") ;
9485         if (symbol == NULL) {
9486             printf ("2\n") ;
9487             fflush (stdout) ;
9488             exit(0);
9489         }
9490         printf ("3\n") ;
9491     }
9492     else
9493         printf ("4\n") ;
9494     fflush (stdout) ;
9495     exit(0);
9496 }
9497 EOM
9498         : Call the object file tmp-dyna.o in case dlext=o.
9499         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9500                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9501                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9502                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9503                 xxx=`$run ./fred`
9504                 case $xxx in
9505                 1)      echo "Test program failed using dlopen." >&4
9506                         echo "Perhaps you should not use dynamic loading." >&4;;
9507                 2)      echo "Test program failed using dlsym." >&4
9508                         echo "Perhaps you should not use dynamic loading." >&4;;
9509                 3)      echo "dlsym needs a leading underscore" >&4
9510                         val="$define" ;;
9511                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9512                 esac
9513         else
9514                 echo "I can't compile and run the test program." >&4
9515                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9516         fi
9517         ;;
9518 esac
9519                 
9520 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9521
9522 set d_dlsymun
9523 eval $setvar
9524
9525 : see if prototype for drand48 is available
9526 echo " "
9527 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9528 eval $hasproto
9529
9530 : see if dup2 exists
9531 set dup2 d_dup2
9532 eval $inlibc
9533
9534 : see if eaccess exists
9535 set eaccess d_eaccess
9536 eval $inlibc
9537
9538 : see if endgrent exists
9539 set endgrent d_endgrent
9540 eval $inlibc
9541
9542 : see if endhostent exists
9543 set endhostent d_endhent
9544 eval $inlibc
9545
9546 : see if endnetent exists
9547 set endnetent d_endnent
9548 eval $inlibc
9549
9550 : see if endprotoent exists
9551 set endprotoent d_endpent
9552 eval $inlibc
9553
9554 : see if endpwent exists
9555 set endpwent d_endpwent
9556 eval $inlibc
9557
9558 : see if endservent exists
9559 set endservent d_endsent
9560 eval $inlibc
9561
9562 : Locate the flags for 'open()'
9563 echo " "
9564 $cat >try.c <<'EOCP'
9565 #include <sys/types.h>
9566 #ifdef I_FCNTL
9567 #include <fcntl.h>
9568 #endif
9569 #ifdef I_SYS_FILE
9570 #include <sys/file.h>
9571 #endif
9572 int main() {
9573         if(O_RDONLY);
9574 #ifdef O_TRUNC
9575         exit(0);
9576 #else
9577         exit(1);
9578 #endif
9579 }
9580 EOCP
9581 : check sys/file.h first to get FREAD on Sun
9582 if $test `./findhdr sys/file.h` && \
9583                 set try -DI_SYS_FILE && eval $compile; then
9584         h_sysfile=true;
9585         echo "<sys/file.h> defines the O_* constants..." >&4
9586         if $run ./try; then
9587                 echo "and you have the 3 argument form of open()." >&4
9588                 val="$define"
9589         else
9590                 echo "but not the 3 argument form of open().  Oh, well." >&4
9591                 val="$undef"
9592         fi
9593 elif $test `./findhdr fcntl.h` && \
9594                 set try -DI_FCNTL && eval $compile; then
9595         h_fcntl=true;
9596         echo "<fcntl.h> defines the O_* constants..." >&4
9597         if $run ./try; then
9598                 echo "and you have the 3 argument form of open()." >&4
9599                 val="$define"
9600         else
9601                 echo "but not the 3 argument form of open().  Oh, well." >&4
9602                 val="$undef"
9603         fi
9604 else
9605         val="$undef"
9606         echo "I can't find the O_* constant definitions!  You got problems." >&4
9607 fi
9608 set d_open3
9609 eval $setvar
9610 $rm -f try try.*
9611
9612 : see which of string.h or strings.h is needed
9613 echo " "
9614 strings=`./findhdr string.h`
9615 if $test "$strings" && $test -r "$strings"; then
9616         echo "Using <string.h> instead of <strings.h>." >&4
9617         val="$define"
9618 else
9619         val="$undef"
9620         strings=`./findhdr strings.h`
9621         if $test "$strings" && $test -r "$strings"; then
9622                 echo "Using <strings.h> instead of <string.h>." >&4
9623         else
9624                 echo "No string header found -- You'll surely have problems." >&4
9625         fi
9626 fi
9627 set i_string
9628 eval $setvar
9629 case "$i_string" in
9630 "$undef") strings=`./findhdr strings.h`;;
9631 *)        strings=`./findhdr string.h`;;
9632 esac
9633
9634 : check for non-blocking I/O stuff
9635 case "$h_sysfile" in
9636 true) echo "#include <sys/file.h>" > head.c;;
9637 *)
9638        case "$h_fcntl" in
9639        true) echo "#include <fcntl.h>" > head.c;;
9640        *) echo "#include <sys/fcntl.h>" > head.c;;
9641        esac
9642        ;;
9643 esac
9644 echo " "
9645 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9646 case "$o_nonblock" in
9647 '')
9648         $cat head.c > try.c
9649         $cat >>try.c <<'EOCP'
9650 #include <stdio.h>
9651 int main() {
9652 #ifdef O_NONBLOCK
9653         printf("O_NONBLOCK\n");
9654         exit(0);
9655 #endif
9656 #ifdef O_NDELAY
9657         printf("O_NDELAY\n");
9658         exit(0);
9659 #endif
9660 #ifdef FNDELAY
9661         printf("FNDELAY\n");
9662         exit(0);
9663 #endif
9664         exit(0);
9665 }
9666 EOCP
9667         set try
9668         if eval $compile_ok; then
9669                 o_nonblock=`$run ./try`
9670                 case "$o_nonblock" in
9671                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9672                 *) echo "Seems like we can use $o_nonblock.";;
9673                 esac
9674         else
9675                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9676         fi
9677         ;;
9678 *) echo "Using $hint value $o_nonblock.";;
9679 esac
9680 $rm -f try try.* .out core
9681
9682 echo " "
9683 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9684 case "$eagain" in
9685 '')
9686         $cat head.c > try.c
9687         $cat >>try.c <<EOCP
9688 #include <errno.h>
9689 #include <sys/types.h>
9690 #include <signal.h>
9691 #include <stdio.h> 
9692 #define MY_O_NONBLOCK $o_nonblock
9693 #ifndef errno  /* XXX need better Configure test */
9694 extern int errno;
9695 #endif
9696 #$i_unistd I_UNISTD
9697 #ifdef I_UNISTD
9698 #include <unistd.h>
9699 #endif
9700 #$i_string I_STRING
9701 #ifdef I_STRING
9702 #include <string.h>
9703 #else
9704 #include <strings.h>
9705 #endif
9706 $signal_t blech(x) int x; { exit(3); }
9707 EOCP
9708         $cat >> try.c <<'EOCP'
9709 int main()
9710 {
9711         int pd[2];
9712         int pu[2];
9713         char buf[1];
9714         char string[100];
9715
9716         pipe(pd);       /* Down: child -> parent */
9717         pipe(pu);       /* Up: parent -> child */
9718         if (0 != fork()) {
9719                 int ret;
9720                 close(pd[1]);   /* Parent reads from pd[0] */
9721                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9722 #ifdef F_SETFL
9723                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9724                         exit(1);
9725 #else
9726                 exit(4);
9727 #endif
9728                 signal(SIGALRM, blech);
9729                 alarm(5);
9730                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9731                         exit(2);
9732                 sprintf(string, "%d\n", ret);
9733                 write(2, string, strlen(string));
9734                 alarm(0);
9735 #ifdef EAGAIN
9736                 if (errno == EAGAIN) {
9737                         printf("EAGAIN\n");
9738                         goto ok;
9739                 }
9740 #endif
9741 #ifdef EWOULDBLOCK
9742                 if (errno == EWOULDBLOCK)
9743                         printf("EWOULDBLOCK\n");
9744 #endif
9745         ok:
9746                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9747                 sleep(2);                               /* Give it time to close our pipe */
9748                 alarm(5);
9749                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9750                 alarm(0);
9751                 sprintf(string, "%d\n", ret);
9752                 write(3, string, strlen(string));
9753                 exit(0);
9754         }
9755
9756         close(pd[0]);                   /* We write to pd[1] */
9757         close(pu[1]);                   /* We read from pu[0] */
9758         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9759         close(pd[1]);                   /* Pipe pd is now fully closed! */
9760         exit(0);                                /* Bye bye, thank you for playing! */
9761 }
9762 EOCP
9763         set try
9764         if eval $compile_ok; then
9765                 echo "$startsh" >mtry
9766                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9767                 chmod +x mtry
9768                 ./mtry >/dev/null 2>&1
9769                 case $? in
9770                 0) eagain=`$cat try.out`;;
9771                 1) echo "Could not perform non-blocking setting!";;
9772                 2) echo "I did a successful read() for something that was not there!";;
9773                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9774                 4) echo "Could not find F_SETFL!";;
9775                 *) echo "Something terribly wrong happened during testing.";;
9776                 esac
9777                 rd_nodata=`$cat try.ret`
9778                 echo "A read() system call with no data present returns $rd_nodata."
9779                 case "$rd_nodata" in
9780                 0|-1) ;;
9781                 *)
9782                         echo "(That's peculiar, fixing that to be -1.)"
9783                         rd_nodata=-1
9784                         ;;
9785                 esac
9786                 case "$eagain" in
9787                 '')
9788                         echo "Forcing errno EAGAIN on read() with no data available."
9789                         eagain=EAGAIN
9790                         ;;
9791                 *)
9792                         echo "Your read() sets errno to $eagain when no data is available."
9793                         ;;
9794                 esac
9795                 status=`$cat try.err`
9796                 case "$status" in
9797                 0) echo "And it correctly returns 0 to signal EOF.";;
9798                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9799                 *) echo "However, your read() returns '$status' on EOF??";;
9800                 esac
9801                 val="$define"
9802                 if test "$status" = "$rd_nodata"; then
9803                         echo "WARNING: you can't distinguish between EOF and no data!"
9804                         val="$undef"
9805                 fi
9806         else
9807                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9808                 eagain=EAGAIN
9809         fi
9810         set d_eofnblk
9811         eval $setvar
9812         ;;
9813 *)
9814         echo "Using $hint value $eagain."
9815         echo "Your read() returns $rd_nodata when no data is present."
9816         case "$d_eofnblk" in
9817         "$define") echo "And you can see EOF because read() returns 0.";;
9818         "$undef") echo "But you can't see EOF status from read() returned value.";;
9819         *)
9820                 echo "(Assuming you can't see EOF status from read anyway.)"
9821                 d_eofnblk=$undef
9822                 ;;
9823         esac
9824         ;;
9825 esac
9826 $rm -f try try.* .out core head.c mtry
9827
9828 : see if fchdir exists
9829 set fchdir d_fchdir
9830 eval $inlibc
9831
9832 : see if fchmod exists
9833 set fchmod d_fchmod
9834 eval $inlibc
9835
9836 : see if fchown exists
9837 set fchown d_fchown
9838 eval $inlibc
9839
9840 : see if this is an fcntl system
9841 set fcntl d_fcntl
9842 eval $inlibc
9843
9844 echo " "
9845 : See if fcntl-based locking works.
9846 $cat >try.c <<'EOCP'
9847 #include <stdlib.h>
9848 #include <unistd.h>
9849 #include <fcntl.h>
9850 int main() {
9851 #if defined(F_SETLK) && defined(F_SETLKW)
9852      struct flock flock;
9853      int retval, fd;
9854      fd = open("try.c", O_RDONLY);
9855      flock.l_type = F_RDLCK;
9856      flock.l_whence = SEEK_SET;
9857      flock.l_start = flock.l_len = 0;
9858      retval = fcntl(fd, F_SETLK, &flock);
9859      close(fd);
9860      (retval < 0 ? exit(2) : exit(0));
9861 #else
9862      exit(2);
9863 #endif
9864 }
9865 EOCP
9866 echo "Checking if fcntl-based file locking works... "
9867 case "$d_fcntl" in
9868 "$define")
9869         set try
9870         if eval $compile_ok; then
9871                 if $run ./try; then
9872                         echo "Yes, it seems to work."
9873                         val="$define"
9874                 else
9875                         echo "Nope, it didn't work."
9876                         val="$undef"
9877                 fi
9878         else
9879                 echo "I'm unable to compile the test program, so I'll assume not."
9880                 val="$undef"
9881         fi
9882         ;;
9883 *) val="$undef";
9884         echo "Nope, since you don't even have fcntl()."
9885         ;;
9886 esac
9887 set d_fcntl_can_lock
9888 eval $setvar
9889 $rm -f try*
9890
9891
9892 : see if sys/select.h has to be included
9893 set sys/select.h i_sysselct
9894 eval $inhdr
9895
9896 : see if we should include time.h, sys/time.h, or both
9897 echo " "
9898 if test "X$timeincl" = X; then
9899         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9900         $echo $n "I'm now running the test program...$c"
9901         $cat >try.c <<'EOCP'
9902 #include <sys/types.h>
9903 #ifdef I_TIME
9904 #include <time.h>
9905 #endif
9906 #ifdef I_SYSTIME
9907 #ifdef SYSTIMEKERNEL
9908 #define KERNEL
9909 #endif
9910 #include <sys/time.h>
9911 #endif
9912 #ifdef I_SYSSELECT
9913 #include <sys/select.h>
9914 #endif
9915 int main()
9916 {
9917         struct tm foo;
9918 #ifdef S_TIMEVAL
9919         struct timeval bar;
9920 #endif
9921 #ifdef S_TIMEZONE
9922         struct timezone tzp;
9923 #endif
9924         if (foo.tm_sec == foo.tm_sec)
9925                 exit(0);
9926 #ifdef S_TIMEVAL
9927         if (bar.tv_sec == bar.tv_sec)
9928                 exit(0);
9929 #endif
9930         exit(1);
9931 }
9932 EOCP
9933         flags=''
9934         for s_timezone in '-DS_TIMEZONE' ''; do
9935         sysselect=''
9936         for s_timeval in '-DS_TIMEVAL' ''; do
9937         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9938         for i_time in '' '-DI_TIME'; do
9939         for i_systime in '-DI_SYSTIME' ''; do
9940                 case "$flags" in
9941                 '') $echo $n ".$c"
9942                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9943                         if eval $compile; then
9944                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9945                                 shift
9946                                 flags="$*"
9947                                 echo " "
9948                                 $echo $n "Succeeded with $flags$c"
9949                         fi
9950                         ;;
9951                 esac
9952         done
9953         done
9954         done
9955         done
9956         done
9957         timeincl=''
9958         echo " "
9959         case "$flags" in
9960         *SYSTIMEKERNEL*) i_systimek="$define"
9961                 timeincl=`./findhdr sys/time.h`
9962                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9963         *) i_systimek="$undef";;
9964         esac
9965         case "$flags" in
9966         *I_TIME*) i_time="$define"
9967                 timeincl=`./findhdr time.h`" $timeincl"
9968                 echo "We'll include <time.h>." >&4;;
9969         *) i_time="$undef";;
9970         esac
9971         case "$flags" in
9972         *I_SYSTIME*) i_systime="$define"
9973                 timeincl=`./findhdr sys/time.h`" $timeincl"
9974                 echo "We'll include <sys/time.h>." >&4;;
9975         *) i_systime="$undef";;
9976         esac
9977         $rm -f try.c try
9978 fi
9979
9980 : check for fd_set items
9981 $cat <<EOM
9982
9983 Checking to see how well your C compiler handles fd_set and friends ...
9984 EOM
9985 $cat >try.c <<EOCP
9986 #$i_systime I_SYS_TIME
9987 #$i_sysselct I_SYS_SELECT
9988 #$d_socket HAS_SOCKET
9989 #include <sys/types.h>
9990 #ifdef HAS_SOCKET
9991 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9992 #endif
9993 #ifdef I_SYS_TIME
9994 #include <sys/time.h>
9995 #endif
9996 #ifdef I_SYS_SELECT
9997 #include <sys/select.h>
9998 #endif
9999 int main() {
10000         fd_set fds;
10001
10002 #ifdef TRYBITS
10003         if(fds.fds_bits);
10004 #endif
10005
10006 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10007         exit(0);
10008 #else
10009         exit(1);
10010 #endif
10011 }
10012 EOCP
10013 set try -DTRYBITS
10014 if eval $compile; then
10015         d_fds_bits="$define"
10016         d_fd_set="$define"
10017         echo "Well, your system knows about the normal fd_set typedef..." >&4
10018         if $run ./try; then
10019                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10020                 d_fd_macros="$define"
10021         else
10022                 $cat >&4 <<'EOM'
10023 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10024 EOM
10025                 d_fd_macros="$undef"
10026         fi
10027 else
10028         $cat <<'EOM'
10029 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10030 EOM
10031         set try
10032         if eval $compile; then
10033                 d_fds_bits="$undef"
10034                 d_fd_set="$define"
10035                 echo "Well, your system has some sort of fd_set available..." >&4
10036                 if $run ./try; then
10037                         echo "and you have the normal fd_set macros." >&4
10038                         d_fd_macros="$define"
10039                 else
10040                         $cat <<'EOM'
10041 but not the normal fd_set macros!  Gross!  More work for me...
10042 EOM
10043                         d_fd_macros="$undef"
10044                 fi
10045         else
10046         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10047                 d_fd_set="$undef"
10048                 d_fds_bits="$undef"
10049                 d_fd_macros="$undef"
10050         fi
10051 fi
10052 $rm -f try try.*
10053
10054 : see if fgetpos exists
10055 set fgetpos d_fgetpos
10056 eval $inlibc
10057
10058 : see if flock exists
10059 set flock d_flock
10060 eval $inlibc
10061
10062 : see if this is a sys/file.h system
10063 val=''
10064 set sys/file.h val
10065 eval $inhdr
10066
10067 : do we need to include sys/file.h ?
10068 case "$val" in
10069 "$define")
10070         echo " "
10071         if $h_sysfile; then
10072                 val="$define"
10073                 echo "We'll be including <sys/file.h>." >&4
10074         else
10075                 val="$undef"
10076                 echo "We won't be including <sys/file.h>." >&4
10077         fi
10078         ;;
10079 *)
10080         h_sysfile=false
10081         ;;
10082 esac
10083 set i_sysfile
10084 eval $setvar
10085
10086 : see if prototype for flock is available
10087 echo " "
10088 set d_flockproto flock $i_sysfile sys/file.h
10089 eval $hasproto
10090
10091 : see if fork exists
10092 set fork d_fork
10093 eval $inlibc
10094
10095 : see if pathconf exists
10096 set pathconf d_pathconf
10097 eval $inlibc
10098
10099 : see if fpathconf exists
10100 set fpathconf d_fpathconf
10101 eval $inlibc
10102
10103
10104 : check for fpos64_t
10105 echo " "
10106 echo "Checking to see if you have fpos64_t..." >&4
10107 $cat >try.c <<EOCP
10108 #include <stdio.h>
10109 int main() { fpos64_t x = 7; }
10110 EOCP
10111 set try
10112 if eval $compile; then
10113         val="$define"
10114         echo "You have fpos64_t."
10115 else
10116         val="$undef"
10117         echo "You do not have fpos64_t."
10118         case "$fpossize" in
10119         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10120         esac
10121 fi
10122 $rm -f try.* try
10123 set d_fpos64_t
10124 eval $setvar
10125
10126 : see if frexpl exists
10127 set frexpl d_frexpl
10128 eval $inlibc
10129
10130 : see if this is a sys/param system
10131 set sys/param.h i_sysparam
10132 eval $inhdr
10133
10134 : see if this is a sys/mount.h system
10135 set sys/mount.h i_sysmount
10136 eval $inhdr
10137
10138
10139 echo " "
10140 echo "Checking to see if your system supports struct fs_data..." >&4
10141 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10142 eval $hasstruct
10143 case "$d_fs_data_s" in
10144 "$define")      echo "Yes, it does."   ;;
10145 *)              echo "No, it doesn't." ;;
10146 esac
10147
10148 : see if fseeko exists
10149 set fseeko d_fseeko
10150 eval $inlibc
10151 case "$longsize" in
10152 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10153 esac
10154
10155 : see if fsetpos exists
10156 set fsetpos d_fsetpos
10157 eval $inlibc
10158
10159
10160 : see if fstatfs exists
10161 set fstatfs d_fstatfs
10162 eval $inlibc
10163
10164
10165 : see if statvfs exists
10166 set statvfs d_statvfs
10167 eval $inlibc
10168
10169 : see if fstatvfs exists
10170 set fstatvfs d_fstatvfs
10171 eval $inlibc
10172
10173
10174 : see if fsync exists
10175 set fsync d_fsync
10176 eval $inlibc
10177
10178 : see if ftello exists
10179 set ftello d_ftello
10180 eval $inlibc
10181 case "$longsize" in
10182 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10183 esac
10184
10185 : see if getcwd exists
10186 set getcwd d_getcwd
10187 eval $inlibc
10188
10189 : see if getespwnam exists
10190 set getespwnam d_getespwnam
10191 eval $inlibc
10192
10193
10194 : see if getfsstat exists
10195 set getfsstat d_getfsstat
10196 eval $inlibc
10197
10198 : see if getgrent exists
10199 set getgrent d_getgrent
10200 eval $inlibc
10201
10202 : see if gethostbyaddr exists
10203 set gethostbyaddr d_gethbyaddr
10204 eval $inlibc
10205
10206 : see if gethostbyname exists
10207 set gethostbyname d_gethbyname
10208 eval $inlibc
10209
10210 : see if gethostent exists
10211 set gethostent d_gethent
10212 eval $inlibc
10213
10214 : see how we will look up host name
10215 echo " "
10216 call=''
10217 if set gethostname val -f d_gethname; eval $csym; $val; then
10218         echo 'gethostname() found.' >&4
10219         d_gethname="$define"
10220         call=gethostname
10221 fi
10222 if set uname val -f d_uname; eval $csym; $val; then
10223         if ./xenix; then
10224                 $cat <<'EOM'
10225 uname() was found, but you're running xenix, and older versions of xenix
10226 have a broken uname(). If you don't really know whether your xenix is old
10227 enough to have a broken system call, use the default answer.
10228
10229 EOM
10230                 dflt=y
10231                 case "$d_uname" in
10232                 "$define") dflt=n;;
10233                 esac
10234                 rp='Is your uname() broken?'
10235                 . ./myread
10236                 case "$ans" in
10237                 n*) d_uname="$define"; call=uname;;
10238                 esac
10239         else
10240                 echo 'uname() found.' >&4
10241                 d_uname="$define"
10242                 case "$call" in
10243                 '') call=uname ;;
10244                 esac
10245         fi
10246 fi
10247 case "$d_gethname" in
10248 '') d_gethname="$undef";;
10249 esac
10250 case "$d_uname" in
10251 '') d_uname="$undef";;
10252 esac
10253 case "$d_uname$d_gethname" in
10254 *define*)
10255         dflt=n
10256         cat <<EOM
10257  
10258 Every now and then someone has a $call() that lies about the hostname
10259 but can't be fixed for political or economic reasons.  If you wish, I can
10260 pretend $call() isn't there and maybe compute hostname at run-time
10261 thanks to the '$phostname' command.
10262
10263 EOM
10264         rp="Shall I ignore $call() from now on?"
10265         . ./myread
10266         case "$ans" in
10267         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10268         esac;;
10269 esac
10270 case "$phostname" in
10271 '') aphostname='';;
10272 *) case "$aphostname" in
10273         /*) ;;
10274         *) set X $phostname
10275                 shift
10276                 file=$1
10277                 shift
10278                 file=`./loc $file $file $pth`
10279                 aphostname=`echo $file $*`
10280                 ;;
10281         esac
10282         ;;
10283 esac
10284 case "$d_uname$d_gethname" in
10285 *define*) ;;
10286 *)
10287         case "$phostname" in
10288         '')
10289                 echo "There will be no way for $package to get your hostname." >&4;;
10290         *)
10291         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10292                 ;;
10293         esac;;
10294 esac
10295 case "$d_phostname" in
10296 '') d_phostname="$undef";;
10297 esac
10298
10299 : see if this is a netdb.h system
10300 set netdb.h i_netdb
10301 eval $inhdr
10302
10303 : see if prototypes for various gethostxxx netdb.h functions are available
10304 echo " "
10305 set d_gethostprotos gethostent $i_netdb netdb.h
10306 eval $hasproto
10307
10308 : see if getitimer exists
10309 set getitimer d_getitimer
10310 eval $inlibc
10311
10312 : see if getlogin exists
10313 set getlogin d_getlogin
10314 eval $inlibc
10315
10316 : see if getmnt exists
10317 set getmnt d_getmnt
10318 eval $inlibc
10319
10320 : see if getmntent exists
10321 set getmntent d_getmntent
10322 eval $inlibc
10323
10324 : see if getnetbyaddr exists
10325 set getnetbyaddr d_getnbyaddr
10326 eval $inlibc
10327
10328 : see if getnetbyname exists
10329 set getnetbyname d_getnbyname
10330 eval $inlibc
10331
10332 : see if getnetent exists
10333 set getnetent d_getnent
10334 eval $inlibc
10335
10336 : see if prototypes for various getnetxxx netdb.h functions are available
10337 echo " "
10338 set d_getnetprotos getnetent $i_netdb netdb.h
10339 eval $hasproto
10340
10341 : see if getpagesize exists
10342 set getpagesize d_getpagsz
10343 eval $inlibc
10344
10345
10346 : see if getprotobyname exists
10347 set getprotobyname d_getpbyname
10348 eval $inlibc
10349
10350 : see if getprotobynumber exists
10351 set getprotobynumber d_getpbynumber
10352 eval $inlibc
10353
10354 : see if getprotoent exists
10355 set getprotoent d_getpent
10356 eval $inlibc
10357
10358 : see if getpgid exists
10359 set getpgid d_getpgid
10360 eval $inlibc
10361
10362 : see if getpgrp2 exists
10363 set getpgrp2 d_getpgrp2
10364 eval $inlibc
10365
10366 : see if getppid exists
10367 set getppid d_getppid
10368 eval $inlibc
10369
10370 : see if getpriority exists
10371 set getpriority d_getprior
10372 eval $inlibc
10373
10374 : see if prototypes for various getprotoxxx netdb.h functions are available
10375 echo " "
10376 set d_getprotoprotos getprotoent $i_netdb netdb.h
10377 eval $hasproto
10378
10379 : see if getprpwnam exists
10380 set getprpwnam d_getprpwnam
10381 eval $inlibc
10382
10383 : see if getpwent exists
10384 set getpwent d_getpwent
10385 eval $inlibc
10386
10387
10388 : see if getservbyname exists
10389 set getservbyname d_getsbyname
10390 eval $inlibc
10391
10392 : see if getservbyport exists
10393 set getservbyport d_getsbyport
10394 eval $inlibc
10395
10396 : see if getservent exists
10397 set getservent d_getsent
10398 eval $inlibc
10399
10400 : see if prototypes for various getservxxx netdb.h functions are available
10401 echo " "
10402 set d_getservprotos getservent $i_netdb netdb.h
10403 eval $hasproto
10404
10405 : see if getspnam exists
10406 set getspnam d_getspnam
10407 eval $inlibc
10408
10409 : see if gettimeofday or ftime exists
10410 set gettimeofday d_gettimeod
10411 eval $inlibc
10412 case "$d_gettimeod" in
10413 "$undef")
10414         set ftime d_ftime 
10415         eval $inlibc
10416         ;;
10417 *)
10418         val="$undef"; set d_ftime; eval $setvar
10419         ;;
10420 esac
10421 case "$d_gettimeod$d_ftime" in
10422 "$undef$undef")
10423         echo " "
10424         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10425         ;;
10426 esac
10427
10428 : see if this is an grp system
10429 set grp.h i_grp
10430 eval $inhdr
10431
10432 case "$i_grp" in
10433 $define)
10434         xxx=`./findhdr grp.h`
10435         $cppstdin $cppflags $cppminus < $xxx >$$.h
10436
10437         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10438                 val="$define"
10439         else
10440                 val="$undef"
10441         fi
10442         set d_grpasswd
10443         eval $setvar
10444
10445         $rm -f $$.h
10446         ;;
10447 *)
10448         val="$undef";
10449         set d_grpasswd; eval $setvar
10450         ;;
10451 esac
10452
10453 : see if hasmntopt exists
10454 set hasmntopt d_hasmntopt
10455 eval $inlibc
10456
10457 : see if this is a netinet/in.h or sys/in.h system
10458 set netinet/in.h i_niin sys/in.h i_sysin
10459 eval $inhdr
10460
10461 : see if arpa/inet.h has to be included
10462 set arpa/inet.h i_arpainet
10463 eval $inhdr
10464
10465 : see if htonl --and friends-- exists
10466 val=''
10467 set htonl val
10468 eval $inlibc
10469
10470 : Maybe they are macros.
10471 case "$val" in
10472 $undef)
10473         $cat >htonl.c <<EOM
10474 #include <stdio.h>
10475 #include <sys/types.h>
10476 #$i_niin I_NETINET_IN
10477 #$i_sysin I_SYS_IN
10478 #$i_arpainet I_ARPA_INET
10479 #ifdef I_NETINET_IN
10480 #include <netinet/in.h>
10481 #endif
10482 #ifdef I_SYS_IN
10483 #include <sys/in.h>
10484 #endif
10485 #ifdef I_ARPA_INET
10486 #include <arpa/inet.h>
10487 #endif
10488 #ifdef htonl
10489 printf("Defined as a macro.");
10490 #endif
10491 EOM
10492         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10493         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10494                 val="$define"
10495                 echo "But it seems to be defined as a macro." >&4
10496         fi
10497         $rm -f htonl.?
10498         ;;
10499 esac
10500 set d_htonl
10501 eval $setvar
10502
10503 : see if iconv exists
10504 set iconv d_iconv
10505 eval $inlibc
10506
10507 : index or strchr
10508 echo " "
10509 if set index val -f; eval $csym; $val; then
10510         if set strchr val -f d_strchr; eval $csym; $val; then
10511                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10512                         val="$define"
10513                         vali="$undef"
10514                         echo "strchr() found." >&4
10515                 else
10516                         val="$undef"
10517                         vali="$define"
10518                         echo "index() found." >&4
10519                 fi
10520         else
10521                 val="$undef"
10522                 vali="$define"
10523                 echo "index() found." >&4
10524         fi
10525 else
10526         if set strchr val -f d_strchr; eval $csym; $val; then
10527                 val="$define"
10528                 vali="$undef"
10529                 echo "strchr() found." >&4
10530         else
10531                 echo "No index() or strchr() found!" >&4
10532                 val="$undef"
10533                 vali="$undef"
10534         fi
10535 fi
10536 set d_strchr; eval $setvar
10537 val="$vali"
10538 set d_index; eval $setvar
10539
10540 : check whether inet_aton exists
10541 set inet_aton d_inetaton
10542 eval $inlibc
10543
10544 : Look for isascii
10545 echo " "
10546 $cat >isascii.c <<'EOCP'
10547 #include <stdio.h>
10548 #include <ctype.h>
10549 int main() {
10550         int c = 'A';
10551         if (isascii(c))
10552                 exit(0);
10553         else
10554                 exit(1);
10555 }
10556 EOCP
10557 set isascii
10558 if eval $compile; then
10559         echo "isascii() found." >&4
10560         val="$define"
10561 else
10562         echo "isascii() NOT found." >&4
10563         val="$undef"
10564 fi
10565 set d_isascii
10566 eval $setvar
10567 $rm -f isascii*
10568
10569 : see if isnan exists
10570 set isnan d_isnan
10571 eval $inlibc
10572
10573 : see if isnanl exists
10574 set isnanl d_isnanl
10575 eval $inlibc
10576
10577 : see if killpg exists
10578 set killpg d_killpg
10579 eval $inlibc
10580
10581 : see if lchown exists
10582 echo " "
10583 $cat > try.c <<'EOCP'
10584 /* System header to define __stub macros and hopefully few prototypes,
10585     which can conflict with char lchown(); below.  */
10586 #include <assert.h>
10587 /* Override any gcc2 internal prototype to avoid an error.  */
10588 /* We use char because int might match the return type of a gcc2
10589    builtin and then its argument prototype would still apply.  */
10590 char lchown();
10591 int main() {
10592     /*  The GNU C library defines this for functions which it implements
10593         to always fail with ENOSYS.  Some functions are actually named
10594         something starting with __ and the normal name is an alias.  */
10595 #if defined (__stub_lchown) || defined (__stub___lchown)
10596 choke me
10597 #else
10598 lchown();
10599 #endif
10600 ; return 0; }
10601 EOCP
10602 set try
10603 if eval $compile; then
10604     $echo "lchown() found." >&4
10605     val="$define"
10606 else
10607     $echo "lchown() NOT found." >&4
10608     val="$undef"
10609 fi
10610 set d_lchown
10611 eval $setvar
10612
10613 : See if number of significant digits in a double precision number is known
10614 echo " "
10615 $cat >ldbl_dig.c <<EOM
10616 #$i_limits I_LIMITS
10617 #$i_float I_FLOAT
10618 #ifdef I_LIMITS
10619 #include <limits.h>
10620 #endif
10621 #ifdef I_FLOAT
10622 #include <float.h>
10623 #endif
10624 #ifdef LDBL_DIG
10625 printf("Contains LDBL_DIG");
10626 #endif
10627 EOM
10628 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10629 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10630         echo "LDBL_DIG found." >&4
10631         val="$define"
10632 else
10633         echo "LDBL_DIG NOT found." >&4
10634         val="$undef"
10635 fi
10636 $rm -f ldbl_dig.?
10637 set d_ldbl_dig
10638 eval $setvar
10639
10640 : see if link exists
10641 set link d_link
10642 eval $inlibc
10643
10644 : see if localeconv exists
10645 set localeconv d_locconv
10646 eval $inlibc
10647
10648 : see if lockf exists
10649 set lockf d_lockf
10650 eval $inlibc
10651
10652 : see if prototype for lseek is available
10653 echo " "
10654 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10655 eval $hasproto
10656
10657 : see if lstat exists
10658 set lstat d_lstat
10659 eval $inlibc
10660
10661 : see if madvise exists
10662 set madvise d_madvise
10663 eval $inlibc
10664
10665 : see if mblen exists
10666 set mblen d_mblen
10667 eval $inlibc
10668
10669 : see if mbstowcs exists
10670 set mbstowcs d_mbstowcs
10671 eval $inlibc
10672
10673 : see if mbtowc exists
10674 set mbtowc d_mbtowc
10675 eval $inlibc
10676
10677 : see if memchr exists
10678 set memchr d_memchr
10679 eval $inlibc
10680
10681 : see if memcmp exists
10682 set memcmp d_memcmp
10683 eval $inlibc
10684
10685 : see if memcpy exists
10686 set memcpy d_memcpy
10687 eval $inlibc
10688
10689 : see if memmove exists
10690 set memmove d_memmove
10691 eval $inlibc
10692
10693 : see if memset exists
10694 set memset d_memset
10695 eval $inlibc
10696
10697 : see if mkdir exists
10698 set mkdir d_mkdir
10699 eval $inlibc
10700
10701 : see if mkdtemp exists
10702 set mkdtemp d_mkdtemp
10703 eval $inlibc
10704
10705 : see if mkfifo exists
10706 set mkfifo d_mkfifo
10707 eval $inlibc
10708
10709 : see if mkstemp exists
10710 set mkstemp d_mkstemp
10711 eval $inlibc
10712
10713 : see if mkstemps exists
10714 set mkstemps d_mkstemps
10715 eval $inlibc
10716
10717 : see if mktime exists
10718 set mktime d_mktime
10719 eval $inlibc
10720
10721 : see if this is a sys/mman.h system
10722 set sys/mman.h i_sysmman
10723 eval $inhdr
10724
10725 : see if mmap exists
10726 set mmap d_mmap
10727 eval $inlibc
10728 : see what shmat returns
10729 : default to something harmless
10730 mmaptype='void *'
10731 case "$i_sysmman$d_mmap" in
10732 "$define$define")
10733         $cat >mmap.c <<'END'
10734 #include <sys/mman.h>
10735 void *mmap();
10736 END
10737         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10738                 mmaptype='void *'
10739         else
10740                 mmaptype='caddr_t'
10741         fi
10742         echo "and it returns ($mmaptype)." >&4
10743         ;;
10744 esac
10745
10746
10747
10748 : see if modfl exists
10749 set modfl d_modfl
10750 eval $inlibc
10751
10752 d_modfl_pow32_bug="$undef"
10753
10754 case "$d_longdbl$d_modfl" in
10755 $define$define)
10756         $cat <<EOM
10757 Checking to see whether your modfl() is okay for large values...
10758 EOM
10759 $cat >try.c <<EOCP
10760 #include <math.h> 
10761 #include <stdio.h>
10762 int main() {
10763     long double nv = 4294967303.15;
10764     long double v, w;
10765     v = modfl(nv, &w);         
10766 #ifdef __GLIBC__
10767     printf("glibc");
10768 #endif
10769     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10770     return 0;
10771 }
10772 EOCP
10773         case "$osname:$gccversion" in
10774         aix:)   saveccflags="$ccflags"
10775                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10776         esac
10777         set try
10778         if eval $compile; then
10779                 foo=`$run ./try`
10780                 case "$foo" in
10781                 *" 4294967303.150000 1.150000 4294967302.000000")
10782                         echo >&4 "Your modfl() is broken for large values."
10783                         d_modfl_pow32_bug="$define"
10784                         case "$foo" in
10785                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10786                         ;;
10787                         esac
10788                         ;;
10789                 *" 4294967303.150000 0.150000 4294967303.000000")
10790                         echo >&4 "Your modfl() seems okay for large values."
10791                         ;;
10792                 *)      echo >&4 "I don't understand your modfl() at all."
10793                         d_modfl="$undef"
10794                         ;;
10795                 esac
10796                 $rm -f try.* try core core.try.*
10797         else
10798                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10799                 d_modfl="$undef"
10800         fi
10801         case "$osname:$gccversion" in
10802         aix:)   $ccflags="$saveccflags" ;; # restore
10803         esac
10804         ;;
10805 esac
10806
10807 : see if mprotect exists
10808 set mprotect d_mprotect
10809 eval $inlibc
10810
10811 : see if msgctl exists
10812 set msgctl d_msgctl
10813 eval $inlibc
10814
10815 : see if msgget exists
10816 set msgget d_msgget
10817 eval $inlibc
10818
10819 : see if msgsnd exists
10820 set msgsnd d_msgsnd
10821 eval $inlibc
10822
10823 : see if msgrcv exists
10824 set msgrcv d_msgrcv
10825 eval $inlibc
10826
10827 : see how much of the 'msg*(2)' library is present.
10828 h_msg=true
10829 echo " "
10830 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10831 *"$undef"*) h_msg=false;;
10832 esac
10833 case "$osname" in
10834 freebsd)
10835     case "`ipcs 2>&1`" in
10836     "SVID messages"*"not configured"*)
10837         echo "Your $osname does not have the msg*(2) configured." >&4
10838         h_msg=false
10839         val="$undef"
10840         set msgctl d_msgctl
10841         eval $setvar
10842         set msgget d_msgget
10843         eval $setvar
10844         set msgsnd d_msgsnd
10845         eval $setvar
10846         set msgrcv d_msgrcv
10847         eval $setvar
10848         ;;
10849     esac
10850     ;;
10851 esac
10852 : we could also check for sys/ipc.h ...
10853 if $h_msg && $test `./findhdr sys/msg.h`; then
10854         echo "You have the full msg*(2) library." >&4
10855         val="$define"
10856 else
10857         echo "You don't have the full msg*(2) library." >&4
10858         val="$undef"
10859 fi
10860 set d_msg
10861 eval $setvar
10862
10863
10864 echo " "
10865 echo "Checking to see if your system supports struct msghdr..." >&4
10866 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10867 eval $hasstruct
10868 case "$d_msghdr_s" in
10869 "$define")      echo "Yes, it does."   ;;
10870 *)              echo "No, it doesn't." ;;
10871 esac
10872
10873
10874 : see if msync exists
10875 set msync d_msync
10876 eval $inlibc
10877
10878 : see if munmap exists
10879 set munmap d_munmap
10880 eval $inlibc
10881
10882 : see if nice exists
10883 set nice d_nice
10884 eval $inlibc
10885
10886 : check for length of character
10887 echo " "
10888 case "$charsize" in
10889 '')
10890         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10891         $cat >try.c <<'EOCP'
10892 #include <stdio.h>
10893 int main()
10894 {
10895     printf("%d\n", (int)sizeof(char));
10896     exit(0);
10897 }
10898 EOCP
10899         set try
10900         if eval $compile_ok; then
10901                 dflt=`$run ./try`
10902         else
10903                 dflt='1'
10904                 echo "(I can't seem to compile the test program.  Guessing...)"
10905         fi
10906         ;;
10907 *)
10908         dflt="$charsize"
10909         ;;
10910 esac
10911 rp="What is the size of a character (in bytes)?"
10912 . ./myread
10913 charsize="$ans"
10914 $rm -f try.c try
10915
10916 : check for volatile keyword
10917 echo " "
10918 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10919 $cat >try.c <<'EOCP'
10920 int main()
10921 {
10922         typedef struct _goo_struct goo_struct;
10923         goo_struct * volatile goo = ((goo_struct *)0);
10924         struct _goo_struct {
10925                 long long_int;
10926                 int reg_int;
10927                 char char_var;
10928         };
10929         typedef unsigned short foo_t;
10930         char *volatile foo;
10931         volatile int bar;
10932         volatile foo_t blech;
10933         foo = foo;
10934 }
10935 EOCP
10936 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10937         val="$define"
10938         echo "Yup, it does."
10939 else
10940         val="$undef"
10941         echo "Nope, it doesn't."
10942 fi
10943 set d_volatile
10944 eval $setvar
10945 $rm -f try.*
10946
10947
10948 echo " "
10949 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10950
10951 case "$use64bitint:$d_quad:$quadtype" in
10952 define:define:?*)
10953         ivtype="$quadtype"
10954         uvtype="$uquadtype"
10955         ivsize=8
10956         uvsize=8
10957         ;;
10958 *)      ivtype="long"
10959         uvtype="unsigned long"
10960         ivsize=$longsize
10961         uvsize=$longsize
10962         ;;
10963 esac
10964
10965 case "$uselongdouble:$d_longdbl" in
10966 define:define)
10967         nvtype="long double"
10968         nvsize=$longdblsize
10969         ;;
10970 *)      nvtype=double
10971         nvsize=$doublesize
10972         ;;
10973 esac
10974
10975 $echo "(IV will be "$ivtype", $ivsize bytes)"
10976 $echo "(UV will be "$uvtype", $uvsize bytes)"
10977 $echo "(NV will be "$nvtype", $nvsize bytes)"
10978
10979 $cat >try.c <<EOCP
10980 #$i_inttypes I_INTTYPES
10981 #ifdef I_INTTYPES
10982 #include <inttypes.h>
10983 #endif
10984 #include <stdio.h>
10985 int main() {
10986 #ifdef INT8
10987    int8_t i =  INT8_MAX;
10988   uint8_t u = UINT8_MAX;
10989   printf("int8_t\n");
10990 #endif
10991 #ifdef INT16
10992    int16_t i =  INT16_MAX;
10993   uint16_t i = UINT16_MAX;
10994   printf("int16_t\n");
10995 #endif
10996 #ifdef INT32
10997    int32_t i =  INT32_MAX;
10998   uint32_t u = UINT32_MAX;
10999   printf("int32_t\n");
11000 #endif
11001 }
11002 EOCP
11003
11004 case "$i8type" in
11005 '')     case "$charsize" in
11006         1)      i8type=char
11007                 u8type="unsigned char"
11008                 i8size=$charsize
11009                 u8size=$charsize
11010                 ;;
11011         esac
11012         ;;
11013 esac
11014 case "$i8type" in
11015 '')     set try -DINT8
11016         if eval $compile; then
11017                 case "`$run ./try`" in
11018                 int8_t) i8type=int8_t
11019                         u8type=uint8_t
11020                         i8size=1
11021                         u8size=1
11022                         ;;
11023                 esac
11024         fi
11025         ;;
11026 esac
11027 case "$i8type" in
11028 '')     if $test $charsize -ge 1; then
11029                 i8type=char
11030                 u8type="unsigned char"
11031                 i8size=$charsize
11032                 u8size=$charsize
11033         fi
11034         ;;
11035 esac
11036
11037 case "$i16type" in
11038 '')     case "$shortsize" in
11039         2)      i16type=short
11040                 u16type="unsigned short"
11041                 i16size=$shortsize
11042                 u16size=$shortsize
11043                 ;;
11044         esac
11045         ;;
11046 esac
11047 case "$i16type" in
11048 '')     set try -DINT16
11049         if eval $compile; then
11050                 case "`$run ./try`" in
11051                 int16_t)
11052                         i16type=int16_t
11053                         u16type=uint16_t
11054                         i16size=2
11055                         u16size=2
11056                         ;;
11057                 esac
11058         fi
11059         ;;
11060 esac
11061 case "$i16type" in
11062 '')     if $test $shortsize -ge 2; then
11063                 i16type=short
11064                 u16type="unsigned short"
11065                 i16size=$shortsize
11066                 u16size=$shortsize
11067         fi
11068         ;;
11069 esac
11070
11071 case "$i32type" in
11072 '')     case "$longsize" in
11073         4)      i32type=long
11074                 u32type="unsigned long"
11075                 i32size=$longsize
11076                 u32size=$longsize
11077                 ;;
11078         *)      case "$intsize" in
11079                 4)      i32type=int
11080                         u32type="unsigned int"
11081                         i32size=$intsize
11082                         u32size=$intsize
11083                         ;;
11084                 esac
11085                 ;;
11086         esac
11087         ;;
11088 esac
11089 case "$i32type" in
11090 '')     set try -DINT32
11091         if eval $compile; then
11092                 case "`$run ./try`" in
11093                 int32_t)
11094                         i32type=int32_t
11095                         u32type=uint32_t
11096                         i32size=4
11097                         u32size=4
11098                         ;;
11099                 esac
11100         fi
11101         ;;
11102 esac
11103 case "$i32type" in
11104 '')     if $test $intsize -ge 4; then
11105                 i32type=int
11106                 u32type="unsigned int"
11107                 i32size=$intsize
11108                 u32size=$intsize
11109         fi
11110         ;;
11111 esac
11112
11113 case "$i64type" in
11114 '')     case "$d_quad:$quadtype" in
11115         define:?*)
11116                 i64type="$quadtype"
11117                 u64type="$uquadtype"
11118                 i64size=8
11119                 u64size=8
11120                 ;;
11121         esac
11122         ;;
11123 esac
11124
11125 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11126 : volatile so that the compiler has to store it out to memory.
11127 if test X"$d_volatile" = X"$define"; then
11128         volatile=volatile
11129 fi
11130 $cat <<EOP >try.c
11131 #include <stdio.h>
11132 #include <sys/types.h>
11133 #include <signal.h>
11134 #ifdef SIGFPE
11135 $volatile int bletched = 0;
11136 $signal_t blech(s) int s; { bletched = 1; }
11137 #endif
11138 int main() {
11139     $uvtype u = 0;
11140     $nvtype d;
11141     int     n = 8 * $uvsize;
11142     int     i;
11143 #ifdef SIGFPE
11144     signal(SIGFPE, blech);
11145 #endif
11146
11147     for (i = 0; i < n; i++) {
11148       u = u << 1 | ($uvtype)1;
11149       d = ($nvtype)u;
11150       if (($uvtype)d != u)
11151         break;
11152       if (d <= 0)
11153         break;
11154       d = ($nvtype)(u - 1);
11155       if (($uvtype)d != (u - 1))
11156         break;
11157 #ifdef SIGFPE
11158       if (bletched) {
11159         break;
11160 #endif
11161       } 
11162     }
11163     printf("%d\n", ((i == n) ? -n : i));
11164     exit(0);
11165 }
11166 EOP
11167 set try
11168
11169 d_nv_preserves_uv="$undef"
11170 if eval $compile; then
11171         d_nv_preserves_uv_bits="`$run ./try`"
11172 fi
11173 case "$d_nv_preserves_uv_bits" in
11174 \-[1-9]*)       
11175         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11176         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11177         d_nv_preserves_uv="$define"
11178         ;;
11179 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11180         d_nv_preserves_uv="$undef" ;;
11181 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11182         d_nv_preserves_uv_bits="$undef" ;;
11183 esac
11184
11185 $rm -f try.* try
11186
11187
11188 : check for off64_t
11189 echo " "
11190 echo "Checking to see if you have off64_t..." >&4
11191 $cat >try.c <<EOCP
11192 #include <sys/types.h>
11193 #include <unistd.h>
11194 int main() { off64_t x = 7; }
11195 EOCP
11196 set try
11197 if eval $compile; then
11198         val="$define"
11199         echo "You have off64_t."
11200 else
11201         val="$undef"
11202         echo "You do not have off64_t."
11203         case "$lseeksize" in
11204         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11205         esac
11206 fi
11207 $rm -f try.* try
11208 set d_off64_t
11209 eval $setvar
11210
11211 : see if POSIX threads are available
11212 set pthread.h i_pthread
11213 eval $inhdr
11214
11215
11216
11217
11218 : how to create joinable pthreads
11219 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11220         echo " "
11221         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11222         $cat >try.c <<'EOCP'
11223 #include <pthread.h>
11224 int main() {
11225     int detachstate = JOINABLE;
11226 }
11227 EOCP
11228         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11229         if eval $compile; then
11230                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11231                 val="$undef" # Yes, undef.
11232                 set d_old_pthread_create_joinable
11233                 eval $setvar
11234                 val=""
11235                 set old_pthread_create_joinable
11236                 eval $setvar
11237         else
11238                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11239                 if eval $compile; then
11240                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11241                         val="$define"
11242                         set d_old_pthread_create_joinable
11243                         eval $setvar
11244                         val=PTHREAD_CREATE_UNDETACHED
11245                         set old_pthread_create_joinable
11246                         eval $setvar
11247                 else            
11248                         set try -DJOINABLE=__UNDETACHED
11249                         if eval $compile; then
11250                                 echo "You seem to use __UNDETACHED." >&4
11251                                 val="$define"
11252                                 set d_old_pthread_create_joinable
11253                                 eval $setvar
11254                                 val=__UNDETACHED
11255                                 set old_pthread_create_joinable
11256                                 eval $setvar
11257                         else
11258                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11259                                 val="$define"
11260                                 set d_old_pthread_create_joinable
11261                                 eval $setvar
11262                                 val=0
11263                                 set old_pthread_create_joinable
11264                                 eval $setvar
11265                         fi
11266                 fi
11267         fi
11268         $rm -f try try.*
11269 else
11270     d_old_pthread_create_joinable="$undef"
11271     old_pthread_create_joinable=""
11272 fi
11273
11274 : see if pause exists
11275 set pause d_pause
11276 eval $inlibc
11277
11278 : see if pipe exists
11279 set pipe d_pipe
11280 eval $inlibc
11281
11282 : see if poll exists
11283 set poll d_poll
11284 eval $inlibc
11285
11286
11287 : see whether the various POSIXish _yields exist
11288 $cat >try.c <<EOP
11289 #include <pthread.h>
11290 #include <stdio.h>
11291 int main() {
11292 #ifdef SCHED_YIELD
11293         sched_yield();
11294 #else
11295 #ifdef PTHREAD_YIELD
11296         pthread_yield();
11297 #else
11298 #ifdef PTHREAD_YIELD_NULL
11299         pthread_yield(NULL);
11300 #endif
11301 #endif
11302 #endif
11303 }
11304 EOP
11305 : see if sched_yield exists
11306 set try -DSCHED_YIELD
11307 if eval $compile; then
11308     val="$define"
11309     sched_yield='sched_yield()'
11310 else
11311     val="$undef"
11312 fi
11313 case "$usethreads" in
11314 $define)
11315         case "$val" in
11316         $define) echo 'sched_yield() found.' >&4        ;;
11317         *)       echo 'sched_yield() NOT found.' >&4    ;;
11318         esac
11319 esac
11320 set d_sched_yield
11321 eval $setvar
11322
11323 : see if pthread_yield exists
11324 set try -DPTHREAD_YIELD
11325 if eval $compile; then
11326     val="$define"
11327     case "$sched_yield" in
11328     '') sched_yield='pthread_yield()' ;;
11329     esac
11330 else
11331     set try -DPTHREAD_YIELD_NULL
11332     if eval $compile; then
11333         val="$define"
11334         case "$sched_yield" in
11335         '') sched_yield='pthread_yield(NULL)' ;;
11336         esac
11337     else
11338         val="$undef"
11339     fi
11340 fi
11341 case "$usethreads" in
11342 $define)
11343         case "$val" in
11344         $define) echo 'pthread_yield() found.' >&4      ;;
11345         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11346         esac
11347         ;;
11348 esac
11349 set d_pthread_yield
11350 eval $setvar
11351
11352 case "$sched_yield" in
11353 '') sched_yield=undef ;;
11354 esac
11355
11356 $rm -f try try.*
11357
11358 : see if this is a pwd.h system
11359 set pwd.h i_pwd
11360 eval $inhdr
11361
11362 case "$i_pwd" in
11363 $define)
11364         xxx=`./findhdr pwd.h`
11365         $cppstdin $cppflags $cppminus < $xxx >$$.h
11366
11367         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11368                 val="$define"
11369         else
11370                 val="$undef"
11371         fi
11372         set d_pwquota
11373         eval $setvar
11374
11375         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11376                 val="$define"
11377         else
11378                 val="$undef"
11379         fi
11380         set d_pwage
11381         eval $setvar
11382
11383         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11384                 val="$define"
11385         else
11386                 val="$undef"
11387         fi
11388         set d_pwchange
11389         eval $setvar
11390
11391         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11392                 val="$define"
11393         else
11394                 val="$undef"
11395         fi
11396         set d_pwclass
11397         eval $setvar
11398
11399         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11400                 val="$define"
11401         else
11402                 val="$undef"
11403         fi
11404         set d_pwexpire
11405         eval $setvar
11406
11407         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11408                 val="$define"
11409         else
11410                 val="$undef"
11411         fi
11412         set d_pwcomment
11413         eval $setvar
11414
11415         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11416                 val="$define"
11417         else
11418                 val="$undef"
11419         fi
11420         set d_pwgecos
11421         eval $setvar
11422
11423         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11424                 val="$define"
11425         else
11426                 val="$undef"
11427         fi
11428         set d_pwpasswd
11429         eval $setvar
11430
11431         $rm -f $$.h
11432         ;;
11433 *)
11434         val="$undef"; 
11435         set d_pwquota; eval $setvar
11436         set d_pwage; eval $setvar
11437         set d_pwchange; eval $setvar
11438         set d_pwclass; eval $setvar
11439         set d_pwexpire; eval $setvar
11440         set d_pwcomment; eval $setvar
11441         set d_pwgecos; eval $setvar
11442         set d_pwpasswd; eval $setvar
11443         ;;
11444 esac
11445
11446 : see if readdir and friends exist
11447 set readdir d_readdir
11448 eval $inlibc
11449 set seekdir d_seekdir
11450 eval $inlibc
11451 set telldir d_telldir
11452 eval $inlibc
11453 set rewinddir d_rewinddir
11454 eval $inlibc
11455
11456 : see if readlink exists
11457 set readlink d_readlink
11458 eval $inlibc
11459
11460 : see if readv exists
11461 set readv d_readv
11462 eval $inlibc
11463
11464 : see if recvmsg exists
11465 set recvmsg d_recvmsg
11466 eval $inlibc
11467
11468 : see if rename exists
11469 set rename d_rename
11470 eval $inlibc
11471
11472 : see if rmdir exists
11473 set rmdir d_rmdir
11474 eval $inlibc
11475
11476 : see if memory.h is available.
11477 val=''
11478 set memory.h val
11479 eval $inhdr
11480
11481 : See if it conflicts with string.h
11482 case "$val" in
11483 $define)
11484         case "$strings" in
11485         '') ;;
11486         *)
11487                 $cppstdin $cppflags $cppminus < $strings > mem.h
11488                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11489                         echo " "
11490                         echo "We won't be including <memory.h>."
11491                         val="$undef"
11492                 fi
11493                 $rm -f mem.h
11494                 ;;
11495         esac
11496 esac
11497 set i_memory
11498 eval $setvar
11499
11500 : can bcopy handle overlapping blocks?
11501 val="$undef"
11502 case "$d_bcopy" in
11503 "$define")
11504         echo " "
11505         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
11506         $cat >try.c <<EOCP
11507 #$i_memory I_MEMORY
11508 #$i_stdlib I_STDLIB
11509 #$i_string I_STRING
11510 #$i_unistd I_UNISTD
11511 EOCP
11512         $cat >>try.c <<'EOCP'
11513 #include <stdio.h>
11514 #ifdef I_MEMORY
11515 #  include <memory.h>
11516 #endif
11517 #ifdef I_STDLIB
11518 #  include <stdlib.h>
11519 #endif
11520 #ifdef I_STRING
11521 #  include <string.h>
11522 #else
11523 #  include <strings.h>
11524 #endif
11525 #ifdef I_UNISTD
11526 #  include <unistd.h>  /* Needed for NetBSD */
11527 #endif
11528 int main()
11529 {
11530 char buf[128], abc[128];
11531 char *b;
11532 int len;
11533 int off;
11534 int align;
11535
11536 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11537
11538 for (align = 7; align >= 0; align--) {
11539         for (len = 36; len; len--) {
11540                 b = buf+align;
11541                 bcopy(abc, b, len);
11542                 for (off = 1; off <= len; off++) {
11543                         bcopy(b, b+off, len);
11544                         bcopy(b+off, b, len);
11545                         if (bcmp(b, abc, len))
11546                                 exit(1);
11547                 }
11548         }
11549 }
11550 exit(0);
11551 }
11552 EOCP
11553         set try
11554         if eval $compile_ok; then
11555                 if $run ./try 2>/dev/null; then
11556                         echo "Yes, it can."
11557                         val="$define"
11558                 else
11559                         echo "It can't, sorry."
11560                         case "$d_memmove" in
11561                         "$define") echo "But that's Ok since you have memmove()." ;;
11562                         esac
11563                 fi
11564         else
11565                 echo "(I can't compile the test program, so we'll assume not...)"
11566                 case "$d_memmove" in
11567                 "$define") echo "But that's Ok since you have memmove()." ;;
11568                 esac
11569         fi
11570         ;;
11571 esac
11572 $rm -f try.* try core
11573 set d_safebcpy
11574 eval $setvar
11575
11576 : can memcpy handle overlapping blocks?
11577 val="$undef"
11578 case "$d_memcpy" in
11579 "$define")
11580         echo " "
11581         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
11582         $cat >try.c <<EOCP
11583 #$i_memory I_MEMORY
11584 #$i_stdlib I_STDLIB
11585 #$i_string I_STRING
11586 #$i_unistd I_UNISTD
11587 EOCP
11588         $cat >>try.c <<'EOCP'
11589 #include <stdio.h>
11590 #ifdef I_MEMORY
11591 #  include <memory.h>
11592 #endif
11593 #ifdef I_STDLIB
11594 #  include <stdlib.h>
11595 #endif
11596 #ifdef I_STRING
11597 #  include <string.h>
11598 #else
11599 #  include <strings.h>
11600 #endif
11601 #ifdef I_UNISTD
11602 #  include <unistd.h>  /* Needed for NetBSD */
11603 #endif
11604 int main()
11605 {
11606 char buf[128], abc[128];
11607 char *b;
11608 int len;
11609 int off;
11610 int align;
11611
11612 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11613    try to store the string in read-only memory. */
11614 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11615
11616 for (align = 7; align >= 0; align--) {
11617         for (len = 36; len; len--) {
11618                 b = buf+align;
11619                 memcpy(b, abc, len);
11620                 for (off = 1; off <= len; off++) {
11621                         memcpy(b+off, b, len);
11622                         memcpy(b, b+off, len);
11623                         if (memcmp(b, abc, len))
11624                                 exit(1);
11625                 }
11626         }
11627 }
11628 exit(0);
11629 }
11630 EOCP
11631         set try
11632         if eval $compile_ok; then
11633                 if $run ./try 2>/dev/null; then
11634                         echo "Yes, it can."
11635                         val="$define"
11636                 else
11637                         echo "It can't, sorry."
11638                         case "$d_memmove" in
11639                         "$define") echo "But that's Ok since you have memmove()." ;;
11640                         esac
11641                 fi
11642         else
11643                 echo "(I can't compile the test program, so we'll assume not...)"
11644                 case "$d_memmove" in
11645                 "$define") echo "But that's Ok since you have memmove()." ;;
11646                 esac
11647         fi
11648         ;;
11649 esac
11650 $rm -f try.* try core
11651 set d_safemcpy
11652 eval $setvar
11653
11654 : can memcmp be trusted to compare relative magnitude?
11655 val="$undef"
11656 case "$d_memcmp" in
11657 "$define")
11658         echo " "
11659         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11660         $cat >try.c <<EOCP
11661 #$i_memory I_MEMORY
11662 #$i_stdlib I_STDLIB
11663 #$i_string I_STRING
11664 #$i_unistd I_UNISTD
11665 EOCP
11666         $cat >>try.c <<'EOCP'
11667 #include <stdio.h>
11668 #ifdef I_MEMORY
11669 #  include <memory.h>
11670 #endif
11671 #ifdef I_STDLIB
11672 #  include <stdlib.h>
11673 #endif
11674 #ifdef I_STRING
11675 #  include <string.h>
11676 #else
11677 #  include <strings.h>
11678 #endif
11679 #ifdef I_UNISTD
11680 #  include <unistd.h>  /* Needed for NetBSD */
11681 #endif
11682 int main()
11683 {
11684 char a = -1;
11685 char b = 0;
11686 if ((a < b) && memcmp(&a, &b, 1) < 0)
11687         exit(1);
11688 exit(0);
11689 }
11690 EOCP
11691         set try
11692         if eval $compile_ok; then
11693                 if $run ./try 2>/dev/null; then
11694                         echo "Yes, it can."
11695                         val="$define"
11696                 else
11697                         echo "No, it can't (it uses signed chars)."
11698                 fi
11699         else
11700                 echo "(I can't compile the test program, so we'll assume not...)"
11701         fi
11702         ;;
11703 esac
11704 $rm -f try.* try core
11705 set d_sanemcmp
11706 eval $setvar
11707
11708 : see if prototype for sbrk is available
11709 echo " "
11710 set d_sbrkproto sbrk $i_unistd unistd.h
11711 eval $hasproto
11712
11713 : see if select exists
11714 set select d_select
11715 eval $inlibc
11716
11717 : see if semctl exists
11718 set semctl d_semctl
11719 eval $inlibc
11720
11721 : see if semget exists
11722 set semget d_semget
11723 eval $inlibc
11724
11725 : see if semop exists
11726 set semop d_semop
11727 eval $inlibc
11728
11729 : see how much of the 'sem*(2)' library is present.
11730 h_sem=true
11731 echo " "
11732 case "$d_semctl$d_semget$d_semop" in
11733 *"$undef"*) h_sem=false;;
11734 esac
11735 case "$osname" in
11736 freebsd)
11737     case "`ipcs 2>&1`" in
11738     "SVID messages"*"not configured"*)
11739         echo "Your $osname does not have the sem*(2) configured." >&4
11740         h_sem=false
11741         val="$undef"
11742         set semctl d_semctl
11743         eval $setvar
11744         set semget d_semget
11745         eval $setvar
11746         set semop d_semop
11747         eval $setvar
11748         ;;
11749     esac
11750     ;;
11751 esac
11752 : we could also check for sys/ipc.h ...
11753 if $h_sem && $test `./findhdr sys/sem.h`; then
11754         echo "You have the full sem*(2) library." >&4
11755         val="$define"
11756 else
11757         echo "You don't have the full sem*(2) library." >&4
11758         val="$undef"
11759 fi
11760 set d_sem
11761 eval $setvar
11762
11763 : see whether sys/sem.h defines union semun
11764 echo " "
11765 $cat > try.c <<'END'
11766 #include <sys/types.h>
11767 #include <sys/ipc.h>
11768 #include <sys/sem.h>
11769 int main () { union semun semun; semun.buf = 0; }
11770 END
11771 set try
11772 if eval $compile; then
11773     echo "You have union semun in <sys/sem.h>." >&4
11774     val="$define"
11775 else
11776     echo "You do not have union semun in <sys/sem.h>." >&4
11777     val="$undef"
11778 fi
11779 $rm -f try try.c try.h
11780 set d_union_semun
11781 eval $setvar
11782
11783 : see how to do semctl IPC_STAT
11784 case "$d_sem" in
11785 $define)
11786     : see whether semctl IPC_STAT can use union semun
11787     echo " "
11788     $cat > try.h <<END
11789 #ifndef S_IRUSR
11790 #   ifdef S_IREAD
11791 #       define S_IRUSR S_IREAD
11792 #       define S_IWUSR S_IWRITE
11793 #       define S_IXUSR S_IEXEC
11794 #   else
11795 #       define S_IRUSR 0400
11796 #       define S_IWUSR 0200
11797 #       define S_IXUSR 0100
11798 #   endif
11799 #   define S_IRGRP (S_IRUSR>>3)
11800 #   define S_IWGRP (S_IWUSR>>3)
11801 #   define S_IXGRP (S_IXUSR>>3)
11802 #   define S_IROTH (S_IRUSR>>6)
11803 #   define S_IWOTH (S_IWUSR>>6)
11804 #   define S_IXOTH (S_IXUSR>>6)
11805 #endif
11806 #ifndef S_IRWXU
11807 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11808 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11809 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11810 #endif
11811 END
11812
11813     $cat > try.c <<END
11814 #include <sys/types.h>
11815 #include <sys/ipc.h>
11816 #include <sys/sem.h>
11817 #include <sys/stat.h>
11818 #include <stdio.h>
11819 #include <errno.h>
11820 #include "try.h"
11821 #ifndef errno
11822 extern int errno;
11823 #endif
11824 #$d_union_semun HAS_UNION_SEMUN
11825 int main() {
11826     union semun
11827 #ifndef HAS_UNION_SEMUN
11828     {
11829         int val;
11830         struct semid_ds *buf;
11831         unsigned short *array;
11832     }
11833 #endif
11834     arg;
11835     int sem, st;
11836
11837 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11838     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11839     if (sem > -1) {
11840         struct semid_ds argbuf;
11841         arg.buf = &argbuf;
11842 #       ifdef IPC_STAT
11843         st = semctl(sem, 0, IPC_STAT, arg);
11844         if (st == 0)
11845             printf("semun\n");
11846         else
11847 #       endif /* IPC_STAT */
11848             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11849 #       ifdef IPC_RMID
11850         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11851 #       endif /* IPC_RMID */
11852             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11853     } else
11854 #endif /* IPC_PRIVATE && ... */
11855         printf("semget failed: errno = %d\n", errno);
11856   return 0;
11857 }
11858 END
11859     val="$undef"
11860     set try
11861     if eval $compile; then
11862         xxx=`$run ./try`
11863         case "$xxx" in
11864         semun) val="$define" ;;
11865         esac
11866     fi
11867     $rm -f try try.c
11868     set d_semctl_semun
11869     eval $setvar
11870     case "$d_semctl_semun" in
11871     $define)
11872         echo "You can use union semun for semctl IPC_STAT." >&4
11873         also='also'
11874         ;;
11875     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11876         also=''
11877         ;;
11878     esac
11879
11880     : see whether semctl IPC_STAT can use struct semid_ds pointer
11881     $cat > try.c <<'END'
11882 #include <sys/types.h>
11883 #include <sys/ipc.h>
11884 #include <sys/sem.h>
11885 #include <sys/stat.h>
11886 #include "try.h"
11887 #include <stdio.h>
11888 #include <errno.h>
11889 #ifndef errno
11890 extern int errno;
11891 #endif
11892 int main() {
11893     struct semid_ds arg;
11894     int sem, st;
11895
11896 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11897     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11898     if (sem > -1) {
11899 #       ifdef IPC_STAT
11900         st = semctl(sem, 0, IPC_STAT, &arg);
11901         if (st == 0)
11902             printf("semid_ds\n");
11903         else
11904 #       endif /* IPC_STAT */
11905             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11906 #       ifdef IPC_RMID
11907         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11908 #       endif /* IPC_RMID */
11909             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11910     } else
11911 #endif /* IPC_PRIVATE && ... */
11912         printf("semget failed: errno = %d\n", errno);
11913
11914     return 0;
11915 }
11916 END
11917     val="$undef"
11918     set try
11919     if eval $compile; then
11920         xxx=`$run ./try`
11921         case "$xxx" in
11922         semid_ds) val="$define" ;;
11923         esac
11924     fi
11925     $rm -f try try.c
11926     set d_semctl_semid_ds
11927     eval $setvar
11928     case "$d_semctl_semid_ds" in
11929     $define)
11930         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11931         ;;
11932     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11933         ;;
11934     esac
11935     $rm -f try.h
11936     ;;
11937 *)  val="$undef"
11938
11939     # We do not have the full sem*(2) library, so assume we can not
11940     # use either.
11941
11942     set d_semctl_semun
11943     eval $setvar
11944
11945     set d_semctl_semid_ds
11946     eval $setvar
11947     ;;
11948 esac
11949
11950 : see if sendmsg exists
11951 set sendmsg d_sendmsg
11952 eval $inlibc
11953
11954 : see if setegid exists
11955 set setegid d_setegid
11956 eval $inlibc
11957
11958 : see if seteuid exists
11959 set seteuid d_seteuid
11960 eval $inlibc
11961
11962 : see if setgrent exists
11963 set setgrent d_setgrent
11964 eval $inlibc
11965
11966 : see if sethostent exists
11967 set sethostent d_sethent
11968 eval $inlibc
11969
11970 : see if setitimer exists
11971 set setitimer d_setitimer
11972 eval $inlibc
11973
11974 : see if setlinebuf exists
11975 set setlinebuf d_setlinebuf
11976 eval $inlibc
11977
11978 : see if setlocale exists
11979 set setlocale d_setlocale
11980 eval $inlibc
11981
11982 : see if setnetent exists
11983 set setnetent d_setnent
11984 eval $inlibc
11985
11986 : see if setprotoent exists
11987 set setprotoent d_setpent
11988 eval $inlibc
11989
11990 : see if setpgid exists
11991 set setpgid d_setpgid
11992 eval $inlibc
11993
11994 : see if setpgrp2 exists
11995 set setpgrp2 d_setpgrp2
11996 eval $inlibc
11997
11998 : see if setpriority exists
11999 set setpriority d_setprior
12000 eval $inlibc
12001
12002 : see if setproctitle exists
12003 set setproctitle d_setproctitle
12004 eval $inlibc
12005
12006 : see if setpwent exists
12007 set setpwent d_setpwent
12008 eval $inlibc
12009
12010 : see if setregid exists
12011 set setregid d_setregid
12012 eval $inlibc
12013 set setresgid d_setresgid
12014 eval $inlibc
12015
12016 : see if setreuid exists
12017 set setreuid d_setreuid
12018 eval $inlibc
12019 set setresuid d_setresuid
12020 eval $inlibc
12021
12022 : see if setrgid exists
12023 set setrgid d_setrgid
12024 eval $inlibc
12025
12026 : see if setruid exists
12027 set setruid d_setruid
12028 eval $inlibc
12029
12030 : see if setservent exists
12031 set setservent d_setsent
12032 eval $inlibc
12033
12034 : see if setsid exists
12035 set setsid d_setsid
12036 eval $inlibc
12037
12038 : see if setvbuf exists
12039 set setvbuf d_setvbuf
12040 eval $inlibc
12041
12042 : see if sfio.h is available
12043 set sfio.h i_sfio
12044 eval $inhdr
12045
12046
12047 : see if sfio library is available
12048 case "$i_sfio" in
12049 $define)
12050         val=''
12051         set sfreserve val
12052         eval $inlibc
12053         ;;
12054 *)
12055         val="$undef"
12056         ;;
12057 esac
12058 : Ok, but do we want to use it.
12059 case "$val" in
12060 $define)
12061         case "$usesfio" in
12062         true|$define|[yY]*) dflt='y';;
12063         *) dflt='n';;
12064         esac
12065         echo "$package can use the sfio library, but it is experimental."
12066         case "$useperlio" in
12067         "$undef")
12068             echo "For sfio also the PerlIO abstraction layer is needed."
12069             echo "Earlier you said you wouldn't want that."
12070             ;;
12071         esac
12072         rp="You seem to have sfio available, do you want to try using it?"
12073         . ./myread
12074         case "$ans" in
12075         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12076                 useperlio="$define"
12077                 val="$define"
12078                 ;;
12079         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12080                 val="$undef"
12081                 ;;
12082         esac
12083         ;;
12084 *)      case "$usesfio" in
12085         true|$define|[yY]*)
12086                 echo "Sorry, cannot find sfio on this machine." >&4
12087                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12088                 val="$undef"
12089                 ;;
12090         esac
12091         ;;
12092 esac
12093 set d_sfio
12094 eval $setvar
12095 case "$d_sfio" in
12096 $define) usesfio='true';;
12097 *) usesfio='false';;
12098 esac
12099 case "$d_sfio" in
12100 $define) ;;
12101 *)      : Remove sfio from list of libraries to use
12102         set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12103         shift
12104         libs="$*"
12105         echo "libs = $libs" >&4
12106 ;;
12107 esac
12108
12109
12110 : see if shmctl exists
12111 set shmctl d_shmctl
12112 eval $inlibc
12113
12114 : see if shmget exists
12115 set shmget d_shmget
12116 eval $inlibc
12117
12118 : see if shmat exists
12119 set shmat d_shmat
12120 eval $inlibc
12121 : see what shmat returns
12122 case "$d_shmat" in
12123 "$define")
12124         $cat >shmat.c <<'END'
12125 #include <sys/shm.h>
12126 void *shmat();
12127 END
12128         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12129                 shmattype='void *'
12130         else
12131                 shmattype='char *'
12132         fi
12133         echo "and it returns ($shmattype)." >&4
12134         : see if a prototype for shmat is available
12135         xxx=`./findhdr sys/shm.h`
12136         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12137         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12138                 val="$define"
12139         else
12140                 val="$undef"
12141         fi
12142         $rm -f shmat.[co]
12143         ;;
12144 *)
12145         val="$undef"
12146         ;;
12147 esac
12148 set d_shmatprototype
12149 eval $setvar
12150
12151 : see if shmdt exists
12152 set shmdt d_shmdt
12153 eval $inlibc
12154
12155 : see how much of the 'shm*(2)' library is present.
12156 h_shm=true
12157 echo " "
12158 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12159 *"$undef"*) h_shm=false;;
12160 esac
12161 case "$osname" in
12162 freebsd)
12163     case "`ipcs 2>&1`" in
12164     "SVID shared memory"*"not configured"*)
12165         echo "Your $osname does not have the shm*(2) configured." >&4
12166         h_shm=false
12167         val="$undef"
12168         set shmctl d_shmctl
12169         evat $setvar
12170         set shmget d_shmget
12171         evat $setvar
12172         set shmat d_shmat
12173         evat $setvar
12174         set shmdt d_shmdt
12175         evat $setvar
12176         ;;
12177     esac
12178     ;;
12179 esac
12180 : we could also check for sys/ipc.h ...
12181 if $h_shm && $test `./findhdr sys/shm.h`; then
12182         echo "You have the full shm*(2) library." >&4
12183         val="$define"
12184 else
12185         echo "You don't have the full shm*(2) library." >&4
12186         val="$undef"
12187 fi
12188 set d_shm
12189 eval $setvar
12190
12191 echo " "
12192 : see if we have sigaction
12193 if set sigaction val -f d_sigaction; eval $csym; $val; then
12194         echo 'sigaction() found.' >&4
12195         $cat > try.c <<'EOP'
12196 #include <stdio.h>
12197 #include <sys/types.h>
12198 #include <signal.h>
12199 int main()
12200 {
12201     struct sigaction act, oact;
12202     act.sa_flags = 0;
12203     oact.sa_handler = 0;
12204     /* so that act and oact are used */
12205     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12206 }
12207 EOP
12208         set try
12209         if eval $compile_ok; then
12210                 val="$define"
12211         else
12212                 echo "But you don't seem to have a useable struct sigaction." >&4
12213                 val="$undef"
12214         fi
12215 else
12216         echo 'sigaction NOT found.' >&4
12217         val="$undef"
12218 fi
12219 set d_sigaction; eval $setvar
12220 $rm -f try try$_o try.c
12221
12222 : see if sigprocmask exists
12223 set sigprocmask d_sigprocmask
12224 eval $inlibc
12225
12226 : see if sigsetjmp exists
12227 echo " "
12228 case "$d_sigsetjmp" in
12229 '')
12230         $cat >try.c <<'EOP'
12231 #include <setjmp.h>
12232 sigjmp_buf env;
12233 int set = 1;
12234 int main()
12235 {
12236         if (sigsetjmp(env,1))
12237                 exit(set);
12238         set = 0;
12239         siglongjmp(env, 1);
12240         exit(1);
12241 }
12242 EOP
12243         set try
12244         if eval $compile; then
12245                 if $run ./try >/dev/null 2>&1; then
12246                         echo "POSIX sigsetjmp found." >&4
12247                         val="$define"
12248                 else
12249                         $cat >&4 <<EOM
12250 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12251 I'll ignore them.
12252 EOM
12253                         val="$undef"
12254                 fi
12255         else
12256                 echo "sigsetjmp not found." >&4
12257                 val="$undef"
12258         fi
12259         ;;
12260 *) val="$d_sigsetjmp"
12261         case "$d_sigsetjmp" in
12262         $define) echo "POSIX sigsetjmp found." >&4;;
12263         $undef) echo "sigsetjmp not found." >&4;;
12264         esac
12265         ;;
12266 esac
12267 set d_sigsetjmp
12268 eval $setvar
12269 $rm -f try.c try
12270
12271 : see if sockatmark exists
12272 set sockatmark d_sockatmark
12273 eval $inlibc
12274
12275 : see if prototype for sockatmark is available
12276 echo " "
12277 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12278 eval $hasproto
12279
12280 : see if socks5_init exists
12281 set socks5_init d_socks5_init
12282 eval $inlibc
12283
12284 : see if prototype for setresgid is available
12285 echo " "
12286 set d_sresgproto setresgid $i_unistd unistd.h
12287 eval $hasproto
12288
12289 : see if prototype for setresuid is available
12290 echo " "
12291 set d_sresuproto setresuid $i_unistd unistd.h
12292 eval $hasproto
12293
12294 : see if sys/stat.h is available
12295 set sys/stat.h i_sysstat
12296 eval $inhdr
12297
12298
12299 : see if stat knows about block sizes
12300 echo " "
12301 echo "Checking to see if your struct stat has st_blocks field..." >&4
12302 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12303 eval $hasfield
12304
12305
12306 : see if this is a sys/vfs.h system
12307 set sys/vfs.h i_sysvfs
12308 eval $inhdr
12309
12310
12311 : see if this is a sys/statfs.h system
12312 set sys/statfs.h i_sysstatfs
12313 eval $inhdr
12314
12315
12316 echo " "
12317 echo "Checking to see if your system supports struct statfs..." >&4
12318 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
12319 eval $hasstruct
12320 case "$d_statfs_s" in
12321 "$define")      echo "Yes, it does."   ;;
12322 *)              echo "No, it doesn't." ;;
12323 esac
12324
12325
12326
12327 : see if struct statfs knows about f_flags
12328 case "$d_statfs_s" in
12329 define) 
12330         echo " "
12331         echo "Checking to see if your struct statfs has f_flags field..." >&4
12332         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
12333         eval $hasfield
12334         ;;
12335 *)      val="$undef"
12336         set d_statfs_f_flags
12337         eval $setvar
12338         ;;
12339 esac
12340 case "$d_statfs_f_flags" in
12341 "$define")      echo "Yes, it does."   ;;
12342 *)              echo "No, it doesn't." ;;
12343 esac
12344
12345 : see if _ptr and _cnt from stdio act std
12346 echo " "
12347
12348 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12349         echo "(Looks like you have stdio.h from BSD.)"
12350         case "$stdio_ptr" in
12351         '') stdio_ptr='((fp)->_p)'
12352                 ptr_lval=$define
12353                 ;;
12354         *)      ptr_lval=$d_stdio_ptr_lval;;
12355         esac
12356         case "$stdio_cnt" in
12357         '') stdio_cnt='((fp)->_r)'
12358                 cnt_lval=$define
12359                 ;;
12360         *)      cnt_lval=$d_stdio_cnt_lval;;
12361         esac
12362         case "$stdio_base" in
12363         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12364         esac
12365         case "$stdio_bufsiz" in
12366         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12367         esac
12368 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12369         echo "(Looks like you have stdio.h from Linux.)"
12370         case "$stdio_ptr" in
12371         '') stdio_ptr='((fp)->_IO_read_ptr)'
12372                 ptr_lval=$define
12373                 ;;
12374         *)      ptr_lval=$d_stdio_ptr_lval;;
12375         esac
12376         case "$stdio_cnt" in
12377         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12378                 cnt_lval=$undef
12379                 ;;
12380         *)      cnt_lval=$d_stdio_cnt_lval;;
12381         esac
12382         case "$stdio_base" in
12383         '') stdio_base='((fp)->_IO_read_base)';;
12384         esac
12385         case "$stdio_bufsiz" in
12386         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12387         esac
12388 else
12389         case "$stdio_ptr" in
12390         '') stdio_ptr='((fp)->_ptr)'
12391                 ptr_lval=$define
12392                 ;;
12393         *)      ptr_lval=$d_stdio_ptr_lval;;
12394         esac
12395         case "$stdio_cnt" in
12396         '') stdio_cnt='((fp)->_cnt)'
12397                 cnt_lval=$define
12398                 ;;
12399         *)      cnt_lval=$d_stdio_cnt_lval;;
12400         esac
12401         case "$stdio_base" in
12402         '') stdio_base='((fp)->_base)';;
12403         esac
12404         case "$stdio_bufsiz" in
12405         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12406         esac
12407 fi
12408
12409 : test whether _ptr and _cnt really work
12410 echo "Checking how std your stdio is..." >&4
12411 $cat >try.c <<EOP
12412 #include <stdio.h>
12413 #define FILE_ptr(fp)    $stdio_ptr
12414 #define FILE_cnt(fp)    $stdio_cnt
12415 int main() {
12416         FILE *fp = fopen("try.c", "r");
12417         char c = getc(fp);
12418         if (
12419                 18 <= FILE_cnt(fp) &&
12420                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12421         )
12422                 exit(0);
12423         exit(1);
12424 }
12425 EOP
12426 val="$undef"
12427 set try
12428 if eval $compile && $to try.c; then
12429         if $run ./try; then
12430                 echo "Your stdio acts pretty std."
12431                 val="$define"
12432         else
12433                 echo "Your stdio isn't very std."
12434         fi
12435 else
12436         echo "Your stdio doesn't appear very std."
12437 fi
12438 $rm -f try.c try
12439 set d_stdstdio
12440 eval $setvar
12441
12442 : Can _ptr be used as an lvalue?
12443 case "$d_stdstdio$ptr_lval" in
12444 $define$define) val=$define ;;
12445 *) val=$undef ;;
12446 esac
12447 set d_stdio_ptr_lval
12448 eval $setvar
12449
12450 : Can _cnt be used as an lvalue?
12451 case "$d_stdstdio$cnt_lval" in
12452 $define$define) val=$define ;;
12453 *) val=$undef ;;
12454 esac
12455 set d_stdio_cnt_lval
12456 eval $setvar
12457
12458
12459 : test whether setting _ptr sets _cnt as a side effect
12460 d_stdio_ptr_lval_sets_cnt="$undef"
12461 d_stdio_ptr_lval_nochange_cnt="$undef"
12462 case "$d_stdio_ptr_lval$d_stdstdio" in
12463 $define$define)
12464         echo "Checking to see what happens if we set the stdio ptr..." >&4
12465 $cat >try.c <<EOP
12466 #include <stdio.h>
12467 /* Can we scream? */
12468 /* Eat dust sed :-) */
12469 /* In the buffer space, no one can hear you scream. */
12470 #define FILE_ptr(fp)    $stdio_ptr
12471 #define FILE_cnt(fp)    $stdio_cnt
12472 #include <sys/types.h>
12473 int main() {
12474         FILE *fp = fopen("try.c", "r");
12475         int c;
12476         char *ptr;
12477         size_t cnt;
12478         if (!fp) {
12479             puts("Fail even to read");
12480             exit(1);
12481         }
12482         c = getc(fp); /* Read away the first # */
12483         if (c == EOF) {
12484             puts("Fail even to read");
12485             exit(1);
12486         }
12487         if (!(
12488                 18 <= FILE_cnt(fp) &&
12489                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12490         )) {
12491                 puts("Fail even to read");
12492                 exit (1);
12493         }
12494         ptr = (char*) FILE_ptr(fp);
12495         cnt = (size_t)FILE_cnt(fp);
12496
12497         FILE_ptr(fp) += 42;
12498
12499         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12500                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12501                 exit (1);
12502         }
12503         if (FILE_cnt(fp) <= 20) {
12504                 printf ("Fail (<20 chars to test)");
12505                 exit (1);
12506         }
12507         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12508                 puts("Fail compare");
12509                 exit (1);
12510         }
12511         if (cnt == FILE_cnt(fp)) {
12512                 puts("Pass_unchanged");
12513                 exit (0);
12514         }       
12515         if (FILE_cnt(fp) == (cnt - 42)) {
12516                 puts("Pass_changed");
12517                 exit (0);
12518         }
12519         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12520         return 1;
12521
12522 }
12523 EOP
12524         set try
12525         if eval $compile && $to try.c; then
12526                 case `$run ./try` in
12527                 Pass_changed)
12528                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12529                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12530                 Pass_unchanged)
12531                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12532                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12533                 Fail*)
12534                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12535                 *)
12536                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12537         esac
12538         else
12539                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12540         fi
12541         $rm -f try.c try
12542         ;;
12543 esac
12544
12545 : see if _base is also standard
12546 val="$undef"
12547 case "$d_stdstdio" in
12548 $define)
12549         $cat >try.c <<EOP
12550 #include <stdio.h>
12551 #define FILE_base(fp)   $stdio_base
12552 #define FILE_bufsiz(fp) $stdio_bufsiz
12553 int main() {
12554         FILE *fp = fopen("try.c", "r");
12555         char c = getc(fp);
12556         if (
12557                 19 <= FILE_bufsiz(fp) &&
12558                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12559         )
12560                 exit(0);
12561         exit(1);
12562 }
12563 EOP
12564         set try
12565         if eval $compile && $to try.c; then
12566                 if $run ./try; then
12567                         echo "And its _base field acts std."
12568                         val="$define"
12569                 else
12570                         echo "But its _base field isn't std."
12571                 fi
12572         else
12573                 echo "However, it seems to be lacking the _base field."
12574         fi
12575         $rm -f try.c try
12576         ;;
12577 esac
12578 set d_stdiobase
12579 eval $setvar
12580
12581 $cat >&4 <<EOM
12582 Checking how to access stdio streams by file descriptor number...
12583 EOM
12584 case "$stdio_stream_array" in
12585 '')     $cat >try.c <<EOCP
12586 #include <stdio.h>
12587 int main() {
12588   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12589     printf("yes\n");
12590 }
12591 EOCP
12592         for s in _iob __iob __sF
12593         do
12594                 set try -DSTDIO_STREAM_ARRAY=$s
12595                 if eval $compile; then
12596                         case "`$run ./try`" in
12597                         yes)    stdio_stream_array=$s; break ;;
12598                         esac
12599                 fi
12600         done
12601         $rm -f try.* try$exe_ext
12602 esac
12603 case "$stdio_stream_array" in
12604 '')     $cat >&4 <<EOM
12605 I can't figure out how to access stdio streams by file descriptor number.
12606 EOM
12607         d_stdio_stream_array="$undef"
12608         ;;
12609 *)      $cat >&4 <<EOM
12610 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12611 EOM
12612         d_stdio_stream_array="$define"
12613         ;;
12614 esac
12615
12616 : see if strcoll exists
12617 set strcoll d_strcoll
12618 eval $inlibc
12619
12620 : check for structure copying
12621 echo " "
12622 echo "Checking to see if your C compiler can copy structs..." >&4
12623 $cat >try.c <<'EOCP'
12624 int main()
12625 {
12626         struct blurfl {
12627                 int dyick;
12628         } foo, bar;
12629
12630         foo = bar;
12631 }
12632 EOCP
12633 if $cc -c try.c >/dev/null 2>&1 ; then
12634         val="$define"
12635         echo "Yup, it can."
12636 else
12637         val="$undef"
12638         echo "Nope, it can't."
12639 fi
12640 set d_strctcpy
12641 eval $setvar
12642 $rm -f try.*
12643
12644 : see if strerror and/or sys_errlist[] exist
12645 echo " "
12646 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12647     if set strerror val -f d_strerror; eval $csym; $val; then
12648                 echo 'strerror() found.' >&4
12649                 d_strerror="$define"
12650                 d_strerrm='strerror(e)'
12651                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12652                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12653                         d_syserrlst="$define"
12654                 else
12655                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12656                         d_syserrlst="$undef"
12657                 fi
12658     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12659                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12660                 echo 'strerror() found in string header.' >&4
12661                 d_strerror="$define"
12662                 d_strerrm='strerror(e)'
12663                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12664                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12665                                 d_syserrlst="$define"
12666                 else
12667                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12668                         d_syserrlst="$undef"
12669                 fi
12670     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12671                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12672                 d_strerror="$undef"
12673                 d_syserrlst="$define"
12674                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12675     else
12676                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12677                 d_strerror="$undef"
12678                 d_syserrlst="$undef"
12679                 d_strerrm='"unknown"'
12680     fi
12681 fi
12682
12683 : see if strftime exists
12684 set strftime d_strftime
12685 eval $inlibc
12686
12687 : see if strtod exists
12688 set strtod d_strtod
12689 eval $inlibc
12690
12691 : see if strtol exists
12692 set strtol d_strtol
12693 eval $inlibc
12694
12695 : see if strtold exists
12696 set strtold d_strtold
12697 eval $inlibc
12698
12699 : see if strtoll exists
12700 set strtoll d_strtoll
12701 eval $inlibc
12702
12703 case "$d_longlong-$d_strtoll" in
12704 "$define-$define")
12705         $cat <<EOM
12706 Checking whether your strtoll() works okay...
12707 EOM
12708         $cat >try.c <<'EOCP'
12709 #include <errno.h>
12710 #ifdef __hpux
12711 #define strtoll __strtoll
12712 #endif
12713 #ifdef __EMX__
12714 #define strtoll _strtoll
12715 #endif
12716 #include <stdio.h>
12717 extern long long int strtoll(char *s, char **, int); 
12718 static int bad = 0;
12719 int check(char *s, long long ell, int een) {
12720         long long gll;
12721         errno = 0;
12722         gll = strtoll(s, 0, 10);
12723         if (!((gll == ell) && (errno == een)))
12724                 bad++;
12725 }
12726 int main() {
12727         check(" 1",                                      1LL, 0);
12728         check(" 0",                                      0LL, 0);
12729         check("-1",                                     -1LL, 0);
12730         check("-9223372036854775808", -9223372036854775808LL, 0);
12731         check("-9223372036854775808", -9223372036854775808LL, 0);
12732         check(" 9223372036854775807",  9223372036854775807LL, 0);
12733         check("-9223372036854775808", -9223372036854775808LL, 0);
12734         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12735         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12736         if (!bad)
12737                 printf("ok\n");
12738 }
12739 EOCP
12740         set try
12741         if eval $compile; then
12742                 yyy=`$run ./try`
12743                 case "$yyy" in
12744                 ok) echo "Your strtoll() seems to be working okay." ;;
12745                 *) cat <<EOM >&4
12746 Your strtoll() doesn't seem to be working okay.
12747 EOM
12748                    d_strtoll="$undef"
12749                    ;;
12750                 esac
12751         else
12752                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12753                 d_strtoll="$undef"
12754         fi
12755         ;;
12756 esac
12757
12758 : see if strtoq exists
12759 set strtoq d_strtoq
12760 eval $inlibc
12761
12762 : see if strtoul exists
12763 set strtoul d_strtoul
12764 eval $inlibc
12765
12766 case "$d_strtoul" in
12767 "$define")
12768         $cat <<EOM
12769 Checking whether your strtoul() works okay...
12770 EOM
12771         $cat >try.c <<'EOCP'
12772 #include <errno.h>
12773 #include <stdio.h>
12774 extern unsigned long int strtoul(char *s, char **, int); 
12775 static int bad = 0;
12776 void check(char *s, unsigned long eul, int een) {
12777         unsigned long gul;
12778         errno = 0;
12779         gul = strtoul(s, 0, 10);
12780         if (!((gul == eul) && (errno == een)))
12781                 bad++;
12782 }
12783 int main() {
12784         check(" 1", 1L, 0);
12785         check(" 0", 0L, 0);
12786 EOCP
12787         case "$longsize" in
12788         8)
12789             $cat >>try.c <<'EOCP'
12790         check("18446744073709551615", 18446744073709551615UL, 0);
12791         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12792 #if 0 /* strtoul() for /^-/ strings is undefined. */
12793         check("-1", 18446744073709551615UL, 0);
12794         check("-18446744073709551614", 2, 0);
12795         check("-18446744073709551615", 1, 0);
12796         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12797         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12798 #endif
12799 EOCP
12800                 ;;
12801         4)
12802                     $cat >>try.c <<'EOCP'
12803         check("4294967295", 4294967295UL, 0);
12804         check("4294967296", 4294967295UL, ERANGE);
12805 #if 0 /* strtoul() for /^-/ strings is undefined. */
12806         check("-1", 4294967295UL, 0);
12807         check("-4294967294", 2, 0);
12808         check("-4294967295", 1, 0);
12809         check("-4294967296", 4294967295UL, ERANGE);
12810         check("-4294967297", 4294967295UL, ERANGE);
12811 #endif
12812 EOCP
12813                 ;;
12814         *)
12815 : Should we write these tests to be more portable by sprintf-ing
12816 : ~0 and then manipulating that char string as input for strtol?
12817                 ;;
12818         esac
12819         $cat >>try.c <<'EOCP'
12820         if (!bad)
12821                 printf("ok\n");
12822         return 0;
12823 }
12824 EOCP
12825         set try
12826         if eval $compile; then
12827                 case "`$run ./try`" in
12828                 ok) echo "Your strtoul() seems to be working okay." ;;
12829                 *) cat <<EOM >&4
12830 Your strtoul() doesn't seem to be working okay.
12831 EOM
12832                    d_strtoul="$undef"
12833                    ;;
12834                 esac
12835         fi
12836         ;;
12837 esac
12838
12839 : see if strtoull exists
12840 set strtoull d_strtoull
12841 eval $inlibc
12842
12843 case "$d_longlong-$d_strtoull" in
12844 "$define-$define")
12845         $cat <<EOM
12846 Checking whether your strtoull() works okay...
12847 EOM
12848         $cat >try.c <<'EOCP'
12849 #include <errno.h>
12850 #ifdef __hpux
12851 #define strtoull __strtoull
12852 #endif
12853 #include <stdio.h>
12854 extern unsigned long long int strtoull(char *s, char **, int); 
12855 static int bad = 0;
12856 int check(char *s, long long eull, int een) {
12857         long long gull;
12858         errno = 0;
12859         gull = strtoull(s, 0, 10);
12860         if (!((gull == eull) && (errno == een)))
12861                 bad++;
12862 }
12863 int main() {
12864         check(" 1",                                        1LL, 0);
12865         check(" 0",                                        0LL, 0);
12866         check("18446744073709551615",  18446744073709551615ULL, 0);
12867         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12868 #if 0 /* strtoull() for /^-/ strings is undefined. */
12869         check("-1",                    18446744073709551615ULL, 0);
12870         check("-18446744073709551614",                     2LL, 0);
12871         check("-18446744073709551615",                     1LL, 0);
12872         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12873         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12874 #endif
12875         if (!bad)
12876                 printf("ok\n");
12877 }
12878 EOCP
12879         set try
12880         if eval $compile; then
12881                 case "`$run ./try`" in
12882                 ok) echo "Your strtoull() seems to be working okay." ;;
12883                 *) cat <<EOM >&4
12884 Your strtoull() doesn't seem to be working okay.
12885 EOM
12886                    d_strtoull="$undef"
12887                    ;;
12888                 esac
12889         fi
12890         ;;
12891 esac
12892
12893 : see if strtouq exists
12894 set strtouq d_strtouq
12895 eval $inlibc
12896
12897 case "$d_strtouq" in
12898 "$define")
12899         $cat <<EOM
12900 Checking whether your strtouq() works okay...
12901 EOM
12902         $cat >try.c <<'EOCP'
12903 #include <errno.h>
12904 #include <stdio.h>
12905 extern unsigned long long int strtouq(char *s, char **, int); 
12906 static int bad = 0;
12907 void check(char *s, unsigned long long eull, int een) {
12908         unsigned long long gull;
12909         errno = 0;
12910         gull = strtouq(s, 0, 10);
12911         if (!((gull == eull) && (errno == een)))
12912                 bad++;
12913 }
12914 int main() {
12915         check(" 1",                                        1LL, 0);
12916         check(" 0",                                        0LL, 0);
12917         check("18446744073709551615",  18446744073709551615ULL, 0);
12918         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12919 #if 0 /* strtouq() for /^-/ strings is undefined. */
12920         check("-1",                    18446744073709551615ULL, 0);
12921         check("-18446744073709551614",                     2LL, 0);
12922         check("-18446744073709551615",                     1LL, 0);
12923         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12924         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12925 #endif
12926         if (!bad)
12927                 printf("ok\n");
12928         return 0;
12929 }
12930 EOCP
12931         set try
12932         if eval $compile; then
12933                 case "`$run ./try`" in
12934                 ok) echo "Your strtouq() seems to be working okay." ;;
12935                 *) cat <<EOM >&4
12936 Your strtouq() doesn't seem to be working okay.
12937 EOM
12938                    d_strtouq="$undef"
12939                    ;;
12940                 esac
12941         fi
12942         ;;
12943 esac
12944
12945 : see if strxfrm exists
12946 set strxfrm d_strxfrm
12947 eval $inlibc
12948
12949 : see if symlink exists
12950 set symlink d_symlink
12951 eval $inlibc
12952
12953 : see if syscall exists
12954 set syscall d_syscall
12955 eval $inlibc
12956
12957 : see if prototype for syscall is available
12958 echo " "
12959 set d_syscallproto syscall $i_unistd unistd.h
12960 eval $hasproto
12961
12962 : see if sysconf exists
12963 set sysconf d_sysconf
12964 eval $inlibc
12965
12966 : see if system exists
12967 set system d_system
12968 eval $inlibc
12969
12970 : see if tcgetpgrp exists
12971 set tcgetpgrp d_tcgetpgrp
12972 eval $inlibc
12973
12974 : see if tcsetpgrp exists
12975 set tcsetpgrp d_tcsetpgrp
12976 eval $inlibc
12977
12978 : see if prototype for telldir is available
12979 echo " "
12980 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12981 eval $hasproto
12982
12983 : see if this is a sys/times.h system
12984 set sys/times.h i_systimes
12985 eval $inhdr
12986
12987 : see if times exists
12988 echo " "
12989 if set times val -f d_times; eval $csym; $val; then
12990         echo 'times() found.' >&4
12991         d_times="$define"
12992         inc=''
12993         case "$i_systimes" in
12994         "$define") inc='sys/times.h';;
12995         esac
12996         rp="What is the type returned by times() on this system?"
12997         set clock_t clocktype long stdio.h sys/types.h $inc
12998         eval $typedef_ask
12999 else
13000         echo 'times() NOT found, hope that will do.' >&4
13001         d_times="$undef"
13002         clocktype='int'
13003 fi
13004
13005 : see if truncate exists
13006 set truncate d_truncate
13007 eval $inlibc
13008
13009 : see if tzname[] exists
13010 echo " "
13011 if set tzname val -a d_tzname; eval $csym; $val; then
13012         val="$define"
13013         echo 'tzname[] found.' >&4
13014 else
13015         val="$undef"
13016         echo 'tzname[] NOT found.' >&4
13017 fi
13018 set d_tzname
13019 eval $setvar
13020
13021 case "$osname" in
13022 next|rhapsody|darwin) multiarch="$define" ;;
13023 esac
13024 case "$multiarch" in
13025 ''|[nN]*) multiarch="$undef" ;;
13026 esac
13027
13028 : check for ordering of bytes in a long
13029 echo " "
13030 case "$usecrosscompile$multiarch" in
13031 *$define*)
13032         $cat <<EOM
13033 You seem to be either cross-compiling or doing a multiarchitecture build,
13034 skipping the byteorder check.
13035
13036 EOM
13037         byteorder='ffff'
13038         ;;
13039 *)
13040         case "$byteorder" in
13041         '')
13042                 $cat <<'EOM'
13043 In the following, larger digits indicate more significance.  A big-endian
13044 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13045 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13046 machines may have weird orders like 3412.  A Cray will report 87654321,
13047 an Alpha will report 12345678. If the test program works the default is
13048 probably right.
13049 I'm now running the test program...
13050 EOM
13051                 $cat >try.c <<'EOCP'
13052 #include <stdio.h>
13053 int main()
13054 {
13055         int i;
13056         union {
13057                 unsigned long l;
13058                 char c[sizeof(long)];
13059         } u;
13060
13061         if (sizeof(long) > 4)
13062                 u.l = (0x08070605L << 32) | 0x04030201L;
13063         else
13064                 u.l = 0x04030201L;
13065         for (i = 0; i < sizeof(long); i++)
13066                 printf("%c", u.c[i]+'0');
13067         printf("\n");
13068         exit(0);
13069 }
13070 EOCP
13071                 xxx_prompt=y
13072                 set try
13073                 if eval $compile && ./try > /dev/null; then
13074                         dflt=`$run ./try`
13075                         case "$dflt" in
13076                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13077                                 echo "(The test program ran ok.)"
13078                                 echo "byteorder=$dflt"
13079                                 xxx_prompt=n
13080                         ;;
13081                         ????|????????) echo "(The test program ran ok.)" ;;
13082                         *) echo "(The test program didn't run right for some reason.)" ;;
13083                         esac
13084                 else
13085                         dflt='4321'
13086                         cat <<'EOM'
13087 (I can't seem to compile the test program.  Guessing big-endian...)
13088 EOM
13089                 fi
13090                 case "$xxx_prompt" in
13091                 y)
13092                         rp="What is the order of bytes in a long?"
13093                         . ./myread
13094                         byteorder="$ans"
13095                         ;;
13096                 *)      byteorder=$dflt
13097                         ;;
13098                 esac
13099                 ;;
13100         esac
13101         $rm -f try.c try
13102         ;;
13103 esac
13104
13105
13106 $cat <<EOM
13107
13108 Checking to see whether you can access character data unalignedly...
13109 EOM
13110 $cat >try.c <<EOCP
13111 #include <stdio.h>
13112 #define U32 $u32type
13113 #define BYTEORDER $byteorder
13114 int main() {
13115 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13116     U8 buf[] = "\0\0\0\1\0\0\0\0";
13117     U32 *up;
13118     int i;
13119
13120     if (sizeof(U32) != 4) {
13121         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13122         exit(1);
13123     }
13124
13125     fflush(stdout);
13126
13127     for (i = 0; i < 4; i++) {
13128         up = (U32*)(buf + i);
13129         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13130                (*up == 1 << (8*(3-i)))  /* little-endian */
13131               )
13132            )
13133         {
13134             printf("read failed (%x)\n", *up);
13135             exit(2);
13136         }
13137     }
13138
13139     /* write test */
13140     for (i = 0; i < 4; i++) {
13141         up = (U32*)(buf + i);
13142         *up = 0xBeef;
13143         if (*up != 0xBeef) {
13144             printf("write failed (%x)\n", *up);
13145             exit(3);
13146         }
13147     }
13148
13149     exit(0);
13150 #else
13151     printf("1\n");
13152     exit(1);
13153 #endif
13154     return 0;
13155 }
13156 EOCP
13157 set try
13158 if eval $compile_ok; then
13159         echo "(Testing for character data alignment may dump core.)" >&4
13160         $run ./try 2>&1 >/dev/null
13161         case "$?" in
13162         0)      cat >&4 <<EOM
13163 You can access character data pretty unalignedly.
13164 EOM
13165                 d_u32align="$undef"
13166                 ;;
13167         *)      cat >&4 <<EOM
13168 It seems that you must access character data in an aligned manner.
13169 EOM
13170                 d_u32align="$define"
13171                 ;;
13172         esac
13173         $rm -f core core.try.* try.core
13174 else
13175         rp='Can you access character data at unaligned addresses?'
13176         dflt='n'
13177         . ./myread
13178         case "$ans" in
13179         [yY]*)  d_u32align="$undef"  ;;
13180         *)      d_u32align="$define" ;;
13181         esac
13182 fi
13183
13184 : see if ualarm exists
13185 set ualarm d_ualarm
13186 eval $inlibc
13187
13188 : see if umask exists
13189 set umask d_umask
13190 eval $inlibc
13191
13192 : see if usleep exists
13193 set usleep d_usleep
13194 eval $inlibc
13195
13196 : see if prototype for usleep is available
13197 echo " "
13198 set d_usleepproto usleep $i_unistd unistd.h
13199 eval $hasproto
13200
13201 : see if ustat exists
13202 set ustat d_ustat
13203 eval $inlibc
13204
13205 : backward compatibility for d_hvfork
13206 if test X$d_hvfork != X; then
13207         d_vfork="$d_hvfork"
13208         d_hvfork=''
13209 fi
13210 : see if there is a vfork
13211 val=''
13212 set vfork val
13213 eval $inlibc
13214
13215 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13216 : perl on Solaris 2.x, and probably elsewhere.
13217 case "$val" in
13218 $define)
13219         echo " "
13220         case "$usevfork" in
13221         false) dflt='n';;
13222         *) dflt='y';;
13223         esac
13224         cat <<'EOM'
13225  
13226 Perl can only use a vfork() that doesn't suffer from strict
13227 restrictions on calling functions or modifying global data in
13228 the child.  For example, glibc-2.1 contains such a vfork()
13229 that is unsuitable.  If your system provides a proper fork()
13230 call, chances are that you do NOT want perl to use vfork().
13231
13232 EOM
13233         rp="Do you still want to use vfork()?"
13234         . ./myread
13235         case "$ans" in
13236         y|Y) ;;
13237         *)
13238                 echo "Ok, we won't use vfork()."
13239                 val="$undef"
13240                 ;;
13241         esac
13242         ;;
13243 esac
13244 set d_vfork
13245 eval $setvar
13246 case "$d_vfork" in
13247 $define) usevfork='true';;
13248 *) usevfork='false';;
13249 esac
13250
13251 : see if this is an sysdir system
13252 set sys/dir.h i_sysdir
13253 eval $inhdr
13254
13255 : see if this is an sysndir system
13256 set sys/ndir.h i_sysndir
13257 eval $inhdr
13258
13259 : see if closedir exists
13260 set closedir d_closedir
13261 eval $inlibc
13262
13263 case "$d_closedir" in
13264 "$define")
13265         echo " "
13266         echo "Checking whether closedir() returns a status..." >&4
13267         cat > try.c <<EOM
13268 #$i_dirent I_DIRENT             /**/
13269 #$i_sysdir I_SYS_DIR            /**/
13270 #$i_sysndir I_SYS_NDIR          /**/
13271 #$i_systypes I_SYS_TYPES        /**/
13272
13273 #if defined(I_SYS_TYPES)
13274 #include <sys/types.h>
13275 #endif
13276 #if defined(I_DIRENT)
13277 #include <dirent.h>
13278 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13279 #include <sys/dir.h>
13280 #endif
13281 #else
13282 #ifdef I_SYS_NDIR
13283 #include <sys/ndir.h>
13284 #else
13285 #ifdef I_SYS_DIR
13286 #ifdef hp9000s500
13287 #include <ndir.h>       /* may be wrong in the future */
13288 #else
13289 #include <sys/dir.h>
13290 #endif
13291 #endif
13292 #endif
13293 #endif 
13294 int main() { return closedir(opendir(".")); }
13295 EOM
13296         set try
13297         if eval $compile_ok; then
13298                 if $run ./try > /dev/null 2>&1 ; then
13299                         echo "Yes, it does."
13300                         val="$undef"
13301                 else
13302                         echo "No, it doesn't."
13303                         val="$define"
13304                 fi
13305         else
13306                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13307                 val="$define"
13308         fi
13309         ;;
13310 *)
13311         val="$undef";
13312         ;;
13313 esac
13314 set d_void_closedir
13315 eval $setvar
13316 $rm -f try try.*
13317 : see if there is a wait4
13318 set wait4 d_wait4
13319 eval $inlibc
13320
13321 : see if waitpid exists
13322 set waitpid d_waitpid
13323 eval $inlibc
13324
13325 : see if wcstombs exists
13326 set wcstombs d_wcstombs
13327 eval $inlibc
13328
13329 : see if wctomb exists
13330 set wctomb d_wctomb
13331 eval $inlibc
13332
13333 : see if writev exists
13334 set writev d_writev
13335 eval $inlibc
13336
13337 : preserve RCS keywords in files with variable substitution, grrr
13338 Date='$Date'
13339 Id='$Id'
13340 Log='$Log'
13341 RCSfile='$RCSfile'
13342 Revision='$Revision'
13343
13344 : check for alignment requirements
13345 echo " "
13346 case "$usecrosscompile$multiarch" in
13347 *$define*)
13348         $cat <<EOM
13349 You seem to be either cross-compiling or doing a multiarchitecture build,
13350 skipping the memory alignment check.
13351
13352 EOM
13353         case "$alignbytes" in
13354         '') alignbytes=8 ;;
13355         esac
13356         ;;
13357 *)
13358         case "$alignbytes" in
13359         '') echo "Checking alignment constraints..." >&4
13360                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13361                         $cat >try.c <<'EOCP'
13362 typedef long double NV;
13363 EOCP
13364                 else
13365                         $cat >try.c <<'EOCP'
13366 typedef double NV;
13367 EOCP
13368                 fi
13369                 $cat >>try.c <<'EOCP'
13370 #include <stdio.h>
13371 struct foobar {
13372         char foo;
13373         NV bar;
13374 } try_algn;
13375 int main()
13376 {
13377     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13378     return(0);
13379 }
13380 EOCP
13381                 set try
13382                 if eval $compile_ok; then
13383                         dflt=`$run ./try`
13384                 else
13385                         dflt='8'
13386                         echo "(I can't seem to compile the test program...)"
13387                 fi
13388                 ;;
13389         *) dflt="$alignbytes"
13390                 ;;
13391         esac
13392         rp="Doubles must be aligned on a how-many-byte boundary?"
13393         . ./myread
13394         alignbytes="$ans"
13395         $rm -f try.c try
13396         ;;
13397 esac
13398
13399
13400 : set the base revision
13401 baserev=5.0
13402
13403 : how do we catenate cpp tokens here?
13404 echo " "
13405 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13406 $cat >cpp_stuff.c <<'EOCP'
13407 #define RCAT(a,b)a/**/b
13408 #define ACAT(a,b)a ## b
13409 RCAT(Rei,ser)
13410 ACAT(Cir,cus)
13411 EOCP
13412 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13413 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13414         echo "Oh!  Smells like ANSI's been here." >&4
13415         echo "We can catify or stringify, separately or together!"
13416         cpp_stuff=42
13417 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13418         echo "Ah, yes!  The good old days!" >&4
13419         echo "However, in the good old days we don't know how to stringify and"
13420         echo "catify at the same time."
13421         cpp_stuff=1
13422 else
13423         $cat >&4 <<EOM
13424 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13425 to have to edit the values of CAT[2-5] in config.h...
13426 EOM
13427         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13428 fi
13429 $rm -f cpp_stuff.*
13430
13431 : see if this is a db.h system
13432 set db.h i_db
13433 eval $inhdr
13434
13435 case "$i_db" in
13436 $define)
13437         : Check db version.
13438         echo " "
13439         echo "Checking Berkeley DB version ..." >&4
13440         $cat >try.c <<EOCP
13441 #$d_const HASCONST
13442 #ifndef HASCONST
13443 #define const
13444 #endif
13445 #include <sys/types.h>
13446 #include <stdio.h>
13447 #include <db.h>
13448 int main(int argc, char *argv[])
13449 {
13450 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13451     int Major, Minor, Patch ;
13452     unsigned long Version ;
13453     (void)db_version(&Major, &Minor, &Patch) ;
13454     if (argc == 2) {
13455         printf("%d %d %d %d %d %d\n",
13456                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13457                Major, Minor, Patch);
13458         exit(0);
13459     }
13460     printf("You have Berkeley DB Version 2 or greater.\n");
13461
13462     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13463                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13464     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13465                 Major, Minor, Patch) ;
13466
13467     /* check that db.h & libdb are compatible */
13468     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13469         printf("db.h and libdb are incompatible.\n") ;
13470         exit(3);        
13471     }
13472
13473     printf("db.h and libdb are compatible.\n") ;
13474
13475     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13476                 + DB_VERSION_PATCH ;
13477
13478     /* needs to be >= 2.3.4 */
13479     if (Version < 2003004) {
13480     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13481         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13482         exit(2);        
13483     }
13484
13485     exit(0);
13486 #else
13487 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13488     if (argc == 2) {
13489         printf("1 0 0\n");
13490         exit(0);
13491     }
13492     printf("You have Berkeley DB Version 1.\n");
13493     exit(0);    /* DB version < 2: the coast is clear. */
13494 #else
13495     exit(1);    /* <db.h> not Berkeley DB? */
13496 #endif
13497 #endif
13498 }
13499 EOCP
13500         set try
13501         if eval $compile_ok && $run ./try; then
13502                 echo 'Looks OK.' >&4
13503                 set `$run ./try 1`
13504                 db_version_major=$1
13505                 db_version_minor=$2
13506                 db_version_patch=$3
13507         else
13508                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13509                 i_db=$undef
13510                 case " $libs " in
13511                 *"-ldb "*)
13512                         : Remove db from list of libraries to use
13513                         echo "Removing unusable -ldb from library list" >&4
13514                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13515                         shift
13516                         libs="$*"
13517                         echo "libs = $libs" >&4
13518                         ;;
13519                 esac
13520         fi
13521         $rm -f try.*
13522         ;;
13523 esac
13524
13525 case "$i_db" in
13526 define)
13527         : Check the return type needed for hash 
13528         echo " "
13529         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13530         $cat >try.c <<EOCP
13531 #$d_const HASCONST
13532 #ifndef HASCONST
13533 #define const
13534 #endif
13535 #include <sys/types.h>
13536 #include <db.h>
13537
13538 #ifndef DB_VERSION_MAJOR
13539 u_int32_t hash_cb (ptr, size)
13540 const void *ptr;
13541 size_t size;
13542 {
13543 }
13544 HASHINFO info;
13545 int main()
13546 {
13547         info.hash = hash_cb;
13548 }
13549 #endif
13550 EOCP
13551         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13552                 if $contains warning try.out >>/dev/null 2>&1 ; then
13553                         db_hashtype='int'
13554                 else
13555                         db_hashtype='u_int32_t'
13556                 fi
13557         else
13558                 : XXX Maybe we should just give up here.
13559                 db_hashtype=u_int32_t
13560                 $cat try.out >&4
13561                 echo "Help:  I can't seem to compile the db test program." >&4
13562                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13563         fi
13564         $rm -f try.*
13565         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13566         ;;
13567 *)      db_hashtype=u_int32_t
13568         ;;
13569 esac
13570 case "$i_db" in
13571 define)
13572         : Check the return type needed for prefix 
13573         echo " "
13574         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13575         cat >try.c <<EOCP
13576 #$d_const HASCONST
13577 #ifndef HASCONST
13578 #define const
13579 #endif
13580 #include <sys/types.h>
13581 #include <db.h>
13582
13583 #ifndef DB_VERSION_MAJOR
13584 size_t prefix_cb (key1, key2)
13585 const DBT *key1;
13586 const DBT *key2;
13587 {
13588 }
13589 BTREEINFO info;
13590 int main()
13591 {
13592         info.prefix = prefix_cb;
13593 }
13594 #endif
13595 EOCP
13596         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13597                 if $contains warning try.out >>/dev/null 2>&1 ; then
13598                         db_prefixtype='int'
13599                 else
13600                         db_prefixtype='size_t'
13601                 fi
13602         else
13603                 db_prefixtype='size_t'
13604                 : XXX Maybe we should just give up here.
13605                 $cat try.out >&4
13606                 echo "Help:  I can't seem to compile the db test program." >&4
13607                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13608         fi
13609         $rm -f try.*
13610         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13611         ;;
13612 *)      db_prefixtype='size_t'
13613         ;;
13614 esac
13615
13616
13617 : How can we generate normalized random numbers ?
13618 echo " "
13619 echo "Looking for a random number function..." >&4
13620 case "$randfunc" in
13621 '')
13622         if set drand48 val -f; eval $csym; $val; then
13623                 dflt="drand48"
13624                 echo "Good, found drand48()." >&4
13625         elif set random val -f; eval $csym; $val; then
13626                 dflt="random"
13627                 echo "OK, found random()." >&4
13628         else
13629                 dflt="rand"
13630                 echo "Yick, looks like I have to use rand()." >&4
13631         fi
13632         echo " "
13633         ;;
13634 *)
13635         dflt="$randfunc"
13636         ;;
13637 esac
13638 cont=true
13639
13640 case "$ccflags" in
13641 *-Dmy_rand=*|*-Dmy_srand=*)
13642         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13643         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13644         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13645         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13646         ;;
13647 esac
13648
13649 while $test "$cont"; do
13650         rp="Use which function to generate random numbers?"
13651         . ./myread
13652         if $test "$ans" = "$dflt"; then
13653                 : null
13654         else
13655                 randbits=''
13656         fi
13657         randfunc="$ans"
13658         if set $ans val -f; eval $csym; $val; then
13659                 cont=''
13660         else
13661                 dflt=y
13662                 rp="I cannot find function $ans. Use that name anyway?"
13663                 . ./myread
13664                 dflt=rand
13665                 case "$ans" in
13666                         [yY]*) cont='';;
13667                 esac
13668         fi
13669         case "$cont" in
13670         '')
13671                 case "$randfunc" in
13672                 drand48)
13673                         drand01="drand48()"
13674                         seedfunc="srand48"
13675                         randbits=48
13676                         randseedtype=long
13677                         ;;
13678                 rand|random)
13679                         case "$randbits" in
13680                         '')
13681 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13682                                 $cat >try.c <<EOCP
13683 #$i_unistd I_UNISTD
13684 #$i_stdlib I_STDLIB
13685 #include <stdio.h>
13686 #ifdef I_UNISTD
13687 #  include <unistd.h>
13688 #endif
13689 #ifdef I_STDLIB
13690 #  include <stdlib.h>
13691 #endif
13692 int main()
13693 {
13694         register int i;
13695         register unsigned long tmp;
13696         register unsigned long max = 0L;
13697
13698         for (i = 1000; i; i--) {
13699                 tmp = (unsigned long) $randfunc();
13700                 if (tmp > max) max = tmp;
13701         }
13702         for (i = 0; max; i++)
13703                 max /= 2;
13704         printf("%d\n",i);
13705 }
13706 EOCP
13707                                 set try
13708                                 if eval $compile_ok; then
13709                                         dflt=`try`
13710                                 else
13711                                         dflt='?'
13712                                         echo "(I can't seem to compile the test program...)"
13713                                 fi
13714                                 ;;
13715                         *)
13716                                 dflt="$randbits"
13717                                 ;;
13718                         esac
13719                         rp="How many bits does your $randfunc() function produce?"
13720                         . ./myread
13721                         randbits="$ans"
13722                         $rm -f try.c try
13723                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13724                         seedfunc="s$randfunc"
13725                         randseedtype=unsigned
13726                         ;;
13727                 *)
13728                         dflt="31"
13729                         rp="How many bits does your $randfunc() function produce?"
13730                         . ./myread
13731                         randbits="$ans"
13732                         seedfunc="s$randfunc"
13733                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13734                         if set $seedfunc val -f; eval $csym; $val; then
13735                                 echo "(Using $seedfunc() to seed random generator)"
13736                         else
13737                                 echo "(Warning: no $seedfunc() to seed random generator)"
13738                                 seedfunc=rand
13739                         fi
13740                         randseedtype=unsigned
13741                         ;;
13742                 esac
13743                 ;;
13744         esac
13745 done
13746
13747 echo " "
13748 echo "Determining whether or not we are on an EBCDIC system..." >&4
13749 $cat >try.c <<'EOM'
13750 int main()
13751 {
13752   if ('M'==0xd4) return 0;
13753   return 1;
13754 }
13755 EOM
13756
13757 val=$undef
13758 set try
13759 if eval $compile_ok; then
13760         if $run ./try; then
13761                 echo "You seem to speak EBCDIC." >&4
13762                 val="$define"
13763         else
13764                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13765         fi
13766 else
13767         echo "I'm unable to compile the test program." >&4
13768         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13769 fi
13770 $rm -f try try.*
13771 set ebcdic
13772 eval $setvar
13773
13774 echo " "
13775 $cat >&4 <<EOM
13776 Checking how to flush all pending stdio output...
13777 EOM
13778 # I only know how to find the first 32 possibly open files on SunOS.
13779 # See also hints/sunos_4_1.sh and util.c  --AD
13780 case "$osname" in
13781 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13782 esac
13783 $cat >>try.c <<EOCP
13784 #include <stdio.h>
13785 #$i_unistd I_UNISTD
13786 #ifdef I_UNISTD
13787 # include <unistd.h>
13788 #endif
13789 #$d_sysconf HAS_SYSCONF
13790 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13791 #ifdef HAS_STDIO_STREAM_ARRAY
13792 # define STDIO_STREAM_ARRAY $stdio_stream_array
13793 #endif
13794 int main() {
13795   FILE* p;
13796   unlink("try.out");
13797   p = fopen("try.out", "w");
13798 #ifdef TRY_FPUTC
13799   fputc('x', p);
13800 #else
13801 # ifdef TRY_FPRINTF
13802   fprintf(p, "x");
13803 # endif
13804 #endif
13805 #ifdef TRY_FFLUSH_NULL
13806   fflush(NULL);
13807 #endif
13808 #ifdef TRY_FFLUSH_ALL
13809   {
13810     long open_max = -1;
13811 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13812     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13813 # else
13814 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13815     open_max = sysconf(_SC_OPEN_MAX);
13816 #  else
13817 #   ifdef FOPEN_MAX
13818     open_max = FOPEN_MAX;
13819 #   else
13820 #    ifdef OPEN_MAX
13821     open_max = OPEN_MAX;
13822 #    else
13823 #     ifdef _NFILE
13824     open_max = _NFILE;
13825 #     endif
13826 #    endif
13827 #   endif
13828 #  endif
13829 # endif 
13830 # ifdef HAS_STDIO_STREAM_ARRAY
13831     if (open_max > 0) {
13832       long i;
13833       for (i = 0; i < open_max; i++)
13834             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13835                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13836                 STDIO_STREAM_ARRAY[i]._flag)
13837                 fflush(&STDIO_STREAM_ARRAY[i]);
13838     }   
13839   }
13840 # endif
13841 #endif
13842   _exit(42);
13843 }
13844 EOCP
13845 : first we have to find out how _not_ to flush
13846 $to try.c
13847 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13848     output=''
13849     set try -DTRY_FPUTC
13850     if eval $compile; then
13851             $run ./try 2>/dev/null
13852             code="$?"
13853             $from try.out
13854             if $test ! -s try.out -a "X$code" = X42; then
13855                 output=-DTRY_FPUTC
13856             fi
13857     fi
13858     case "$output" in
13859     '')
13860             set try -DTRY_FPRINTF
13861             if eval $compile; then
13862                     $run ./try 2>/dev/null
13863                     code="$?"
13864                     $from try.out
13865                     if $test ! -s try.out -a "X$code" = X42; then
13866                         output=-DTRY_FPRINTF
13867                     fi
13868             fi
13869         ;;
13870     esac
13871 fi
13872 : check for fflush NULL behaviour
13873 case "$fflushNULL" in
13874 '')     set try -DTRY_FFLUSH_NULL $output
13875         if eval $compile; then
13876                 $run ./try 2>/dev/null
13877                 code="$?"
13878                 $from try.out
13879                 if $test -s try.out -a "X$code" = X42; then
13880                         fflushNULL="`$cat try.out`"
13881                 else
13882                         if $test "X$code" != X42; then
13883                                 $cat >&4 <<EOM
13884 (If this test failed, don't worry, we'll try another method shortly.)
13885 EOM
13886                         fi
13887                 fi
13888         fi
13889         $rm -f core try.core core.try.*
13890         case "$fflushNULL" in
13891         x)      $cat >&4 <<EOM
13892 Your fflush(NULL) works okay for output streams.
13893 Let's see if it clobbers input pipes...
13894 EOM
13895 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13896 # bug that improperly flushes the input end of pipes.  So we avoid the
13897 # autoflush on fork/system/exec support for now. :-(
13898 $cat >tryp.c <<EOCP
13899 #include <stdio.h>
13900 int
13901 main(int argc, char **argv)
13902 {
13903     char buf[1024];
13904     int i;
13905     char *bp = buf;
13906     while (1) {
13907         while ((i = getc(stdin)) != -1
13908                && (*bp++ = i) != '\n'
13909                && bp < &buf[1024])
13910         /* DO NOTHING */ ;
13911         *bp = '\0';
13912         fprintf(stdout, "%s", buf);
13913         fflush(NULL);
13914         if (i == -1)
13915             return 0;
13916         bp = buf;
13917     }
13918 }
13919 EOCP
13920                 fflushNULL="$define"
13921                 set tryp
13922                 if eval $compile; then
13923                     $rm -f tryp.out
13924                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13925                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13926                        $cat >&4 <<EOM
13927 fflush(NULL) seems to behave okay with input streams.
13928 EOM
13929                         fflushNULL="$define"
13930                     else
13931                         $cat >&4 <<EOM
13932 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13933 EOM
13934                         fflushNULL="$undef"
13935                     fi
13936                 fi
13937                 $rm -f core tryp.c tryp.core core.tryp.*
13938                 ;;
13939         '')     $cat >&4 <<EOM
13940 Your fflush(NULL) isn't working (contrary to ANSI C).
13941 EOM
13942                 fflushNULL="$undef"
13943                 ;;
13944         *)      $cat >&4 <<EOM
13945 Cannot figure out whether your fflush(NULL) works or not.
13946 I'm assuming it doesn't (contrary to ANSI C).
13947 EOM
13948                 fflushNULL="$undef"
13949                 ;;
13950         esac
13951         ;;
13952 $define|true|[yY]*)
13953         fflushNULL="$define"
13954         ;;
13955 *)
13956         fflushNULL="$undef"
13957         ;;
13958 esac
13959 : check explicit looping only if NULL did not work, and if the pipe
13960 : bug does not show up on an explicit flush too
13961 case "$fflushNULL" in
13962 "$undef")
13963         $cat >tryp.c <<EOCP
13964 #include <stdio.h>
13965 int
13966 main(int argc, char **argv)
13967 {
13968     char buf[1024];
13969     int i;
13970     char *bp = buf;
13971     while (1) {
13972         while ((i = getc(stdin)) != -1
13973                && (*bp++ = i) != '\n'
13974                && bp < &buf[1024])
13975         /* DO NOTHING */ ;
13976         *bp = '\0';
13977         fprintf(stdout, "%s", buf);
13978         fflush(stdin);
13979         if (i == -1)
13980             return 0;
13981         bp = buf;
13982     }
13983 }
13984 EOCP
13985         set tryp
13986         if eval $compile; then
13987             $rm -f tryp.out
13988             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13989             if cmp tryp.c tryp.out >/dev/null 2>&1; then
13990                $cat >&4 <<EOM
13991 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13992 EOM
13993                 : now check for fflushall behaviour
13994                 case "$fflushall" in
13995                 '')     set try -DTRY_FFLUSH_ALL $output
13996                         if eval $compile; then
13997                                 $cat >&4 <<EOM
13998 (Now testing the other method--but note that this also may fail.)
13999 EOM
14000                                 $run ./try 2>/dev/null
14001                                 code=$?
14002                                 $from try.out
14003                                 if $test -s try.out -a "X$code" = X42; then
14004                                         fflushall="`$cat try.out`"
14005                                 fi
14006                         fi
14007                         $rm -f core try.core core.try.*
14008                         case "$fflushall" in
14009                         x)      $cat >&4 <<EOM
14010 Whew. Flushing explicitly all the stdio streams works.
14011 EOM
14012                                 fflushall="$define"
14013                                 ;;
14014                         '')     $cat >&4 <<EOM
14015 Sigh. Flushing explicitly all the stdio streams doesn't work.
14016 EOM
14017                                 fflushall="$undef"
14018                                 ;;
14019                         *)      $cat >&4 <<EOM
14020 Cannot figure out whether flushing stdio streams explicitly works or not.
14021 I'm assuming it doesn't.
14022 EOM
14023                                 fflushall="$undef"
14024                                 ;;
14025                         esac
14026                         ;;
14027                 "$define"|true|[yY]*)
14028                         fflushall="$define"
14029                         ;;
14030                 *)
14031                         fflushall="$undef"
14032                         ;;
14033                 esac
14034             else
14035                 $cat >&4 <<EOM
14036 All is futile.  Even fflush(stdin) clobbers input pipes!
14037 EOM
14038                 fflushall="$undef"
14039             fi
14040         else
14041             fflushall="$undef"
14042         fi
14043         $rm -f core tryp.c tryp.core core.tryp.*
14044         ;;
14045 *)      fflushall="$undef"
14046         ;;
14047 esac
14048
14049 case "$fflushNULL$fflushall" in
14050 undefundef)
14051         $cat <<EOM
14052 OK, I give up.  I cannot figure out how to flush pending stdio output.
14053 We won't be flushing handles at all before fork/exec/popen.
14054 EOM
14055         ;;
14056 esac
14057 $rm -f try.* try$exe_ext
14058
14059 : Store the full pathname to the ar program for use in the C program
14060 : Respect a hint or command line value for full_ar.
14061 case "$full_ar" in
14062 '') full_ar=$ar ;;
14063 esac
14064
14065 : Store the full pathname to the sed program for use in the C program
14066 full_sed=$sed
14067
14068 : see what type gids are declared as in the kernel
14069 echo " "
14070 echo "Looking for the type for group ids returned by getgid()."
14071 set gid_t gidtype xxx stdio.h sys/types.h
14072 eval $typedef
14073 case "$gidtype" in
14074 xxx)
14075         xxx=`./findhdr sys/user.h`
14076         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14077         case $1 in
14078         unsigned) dflt="$1 $2" ;;
14079         *) dflt="$1" ;;
14080         esac
14081         ;;
14082 *) dflt="$gidtype";;
14083 esac
14084 case "$gidtype" in
14085 gid_t) echo "gid_t found." ;;
14086 *)      rp="What is the type for group ids returned by getgid()?"
14087         . ./myread
14088         gidtype="$ans"
14089         ;;
14090 esac
14091
14092 echo " "
14093 case "$gidtype" in
14094 *_t) zzz="$gidtype"     ;;
14095 *)   zzz="gid"          ;;
14096 esac
14097 echo "Checking the size of $zzz..." >&4 
14098 cat > try.c <<EOCP
14099 #include <sys/types.h>
14100 #include <stdio.h>
14101 int main() {
14102     printf("%d\n", (int)sizeof($gidtype));
14103     exit(0);
14104 }
14105 EOCP
14106 set try
14107 if eval $compile_ok; then
14108         yyy=`$run ./try`
14109         case "$yyy" in
14110         '')     gidsize=4
14111                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14112                 ;;
14113         *)      gidsize=$yyy
14114                 echo "Your $zzz is $gidsize bytes long."
14115                 ;;
14116         esac
14117 else
14118         gidsize=4
14119         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14120 fi
14121
14122
14123 echo " "
14124 case "$gidtype" in
14125 *_t) zzz="$gidtype"     ;;
14126 *)   zzz="gid"          ;;
14127 esac
14128 echo "Checking the sign of $zzz..." >&4 
14129 cat > try.c <<EOCP
14130 #include <sys/types.h>
14131 #include <stdio.h>
14132 int main() {
14133         $gidtype foo = -1;
14134         if (foo < 0)
14135                 printf("-1\n");
14136         else
14137                 printf("1\n");
14138 }
14139 EOCP
14140 set try
14141 if eval $compile; then
14142         yyy=`$run ./try`
14143         case "$yyy" in
14144         '')     gidsign=1
14145                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14146                 ;;
14147         *)      gidsign=$yyy
14148                 case "$gidsign" in
14149                  1) echo "Your $zzz is unsigned." ;;
14150                 -1) echo "Your $zzz is signed."   ;;
14151                 esac
14152                 ;;
14153         esac
14154 else
14155         gidsign=1
14156         echo "(I can't compile the test program--guessing unsigned.)" >&4
14157 fi
14158
14159
14160 echo " "
14161
14162 if $test X"$quadtype" != X; then
14163
14164 echo "Checking how to print 64-bit integers..." >&4
14165
14166 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14167         $cat >try.c <<'EOCP'
14168 #include <sys/types.h>
14169 #include <stdio.h>
14170 int main() {
14171   int q = 12345678901;
14172   printf("%ld\n", q);
14173 }
14174 EOCP
14175         set try
14176         if eval $compile; then
14177                 yyy=`$run ./try`
14178                 case "$yyy" in
14179                 12345678901)
14180                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14181                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14182                         echo "We will use %d."
14183                         ;;
14184                 esac
14185         fi
14186 fi
14187
14188 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14189         $cat >try.c <<'EOCP'
14190 #include <sys/types.h>
14191 #include <stdio.h>
14192 int main() {
14193   long q = 12345678901;
14194   printf("%ld\n", q);
14195 }
14196 EOCP
14197         set try
14198         if eval $compile; then
14199                 yyy=`$run ./try`
14200                 case "$yyy" in
14201                 12345678901)
14202                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14203                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14204                         echo "We will use %ld."
14205                         ;;
14206                 esac
14207         fi
14208 fi
14209
14210 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14211         $cat >try.c <<'EOCP'
14212 #include <sys/types.h>
14213 #include <inttypes.h>
14214 #include <stdio.h>
14215 int main() {
14216   int64_t q = 12345678901;
14217   printf("%" PRId64 "\n", q);
14218 }
14219 EOCP
14220         set try
14221         if eval $compile; then
14222                 yyy=`$run ./try`
14223                 case "$yyy" in
14224                 12345678901)
14225                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14226                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14227                         echo "We will use the C9X style."
14228                         ;;
14229                 esac
14230         fi
14231 fi
14232
14233 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14234         $cat >try.c <<EOCP
14235 #include <sys/types.h>
14236 #include <stdio.h>
14237 int main() {
14238   $quadtype q = 12345678901;
14239   printf("%Ld\n", q);
14240 }
14241 EOCP
14242         set try
14243         if eval $compile; then
14244                 yyy=`$run ./try`
14245                 case "$yyy" in
14246                 12345678901)
14247                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14248                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14249                         echo "We will use %Ld."
14250                         ;;
14251                 esac
14252         fi
14253 fi
14254
14255 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14256         $cat >try.c <<'EOCP'
14257 #include <sys/types.h>
14258 #include <stdio.h>
14259 int main() {
14260   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14261   printf("%lld\n", q);
14262 }
14263 EOCP
14264         set try
14265         if eval $compile; then
14266                 yyy=`$run ./try`
14267                 case "$yyy" in
14268                 12345678901)
14269                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14270                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14271                         echo "We will use the %lld style."
14272                         ;;
14273                 esac
14274         fi
14275 fi
14276
14277 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14278         $cat >try.c <<EOCP
14279 #include <sys/types.h>
14280 #include <stdio.h>
14281 int main() {
14282   $quadtype q = 12345678901;
14283   printf("%qd\n", q);
14284 }
14285 EOCP
14286         set try
14287         if eval $compile; then
14288                 yyy=`$run ./try`
14289                 case "$yyy" in
14290                 12345678901)
14291                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14292                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14293                         echo "We will use %qd."
14294                         ;;
14295                 esac
14296         fi
14297 fi
14298
14299 if $test X"$sPRId64" = X; then
14300         echo "Cannot figure out how to print 64-bit integers." >&4
14301 fi
14302
14303 $rm -f try try.*
14304
14305 fi
14306
14307 case "$sPRId64" in
14308 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14309         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14310         ;;
14311 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14312         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14313         ;;
14314 esac
14315
14316
14317 echo " "
14318 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14319
14320 if $test X"$ivsize" = X8; then
14321         ivdformat="$sPRId64"
14322         uvuformat="$sPRIu64"
14323         uvoformat="$sPRIo64"
14324         uvxformat="$sPRIx64"
14325         uvXUformat="$sPRIXU64"
14326 else
14327         if $test X"$ivsize" = X"$longsize"; then
14328                 ivdformat='"ld"'
14329                 uvuformat='"lu"'
14330                 uvoformat='"lo"'
14331                 uvxformat='"lx"'
14332                 uvXUformat='"lX"'
14333         else
14334                 if $test X"$ivsize" = X"$intsize"; then
14335                         ivdformat='"d"'
14336                         uvuformat='"u"'
14337                         uvoformat='"o"'
14338                         uvxformat='"x"'
14339                         uvXUformat='"X"'
14340                 else
14341                         : far out
14342                         if $test X"$ivsize" = X"$shortsize"; then
14343                                 ivdformat='"hd"'
14344                                 uvuformat='"hu"'
14345                                 uvoformat='"ho"'
14346                                 uvxformat='"hx"'
14347                                 uvXUformat='"hX"'
14348                         fi
14349                 fi
14350         fi
14351 fi
14352
14353 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14354         nveformat="$sPRIeldbl"
14355         nvfformat="$sPRIfldbl"
14356         nvgformat="$sPRIgldbl"
14357         nvEUformat="$sPRIEUldbl"
14358         nvFUformat="$sPRIFUldbl"
14359         nvGUformat="$sPRIGUldbl"
14360 else
14361         nveformat='"e"'
14362         nvfformat='"f"'
14363         nvgformat='"g"'
14364         nvEUformat='"E"'
14365         nvFUformat='"F"'
14366         nvGUformat='"G"'
14367 fi
14368
14369 case "$ivdformat" in
14370 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14371     exit 1
14372     ;;
14373 esac
14374
14375
14376 echo " "
14377 $echo "Checking the format string to be used for gids..." >&4
14378
14379 case "$gidsign" in
14380 -1)     if $test X"$gidsize" = X"$ivsize"; then
14381                 gidformat="$ivdformat"
14382         else
14383                 if $test X"$gidsize" = X"$longsize"; then
14384                         gidformat='"ld"'
14385                 else
14386                         if $test X"$gidsize" = X"$intsize"; then
14387                                 gidformat='"d"'
14388                         else
14389                                 if $test X"$gidsize" = X"$shortsize"; then
14390                                         gidformat='"hd"'
14391                                 fi
14392                         fi
14393                 fi
14394         fi
14395         ;;
14396 *)      if $test X"$gidsize" = X"$uvsize"; then
14397                 gidformat="$uvuformat"
14398         else
14399                 if $test X"$gidsize" = X"$longsize"; then
14400                         gidformat='"lu"'
14401                 else
14402                         if $test X"$gidsize" = X"$intsize"; then
14403                                 gidformat='"u"'
14404                         else
14405                                 if $test X"$gidsize" = X"$shortsize"; then
14406                                         gidformat='"hu"'
14407                                 fi
14408                         fi
14409                 fi
14410         fi
14411         ;;
14412 esac
14413
14414 : see if getgroups exists
14415 set getgroups d_getgrps
14416 eval $inlibc
14417
14418 : see if setgroups exists
14419 set setgroups d_setgrps
14420 eval $inlibc
14421
14422
14423 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14424 echo " "
14425 case "$d_getgrps$d_setgrps" in
14426 *define*)
14427         case "$groupstype" in
14428         '') dflt="$gidtype" ;;
14429         *)  dflt="$groupstype" ;;
14430         esac
14431         $cat <<EOM
14432 What type of pointer is the second argument to getgroups() and setgroups()?
14433 Usually this is the same as group ids, $gidtype, but not always.
14434
14435 EOM
14436         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14437         . ./myread
14438         groupstype="$ans"
14439         ;;
14440 *)  groupstype="$gidtype";;
14441 esac
14442
14443 echo " "
14444 echo "Checking if your $make program sets \$(MAKE)..." >&4
14445 case "$make_set_make" in
14446 '')
14447         $sed 's/^X //' > testmake.mak << 'EOF'
14448 Xall:
14449 X       @echo 'maketemp="$(MAKE)"'
14450 EOF
14451         case "`$make -f testmake.mak 2>/dev/null`" in
14452         *maketemp=*) make_set_make='#' ;;
14453         *)      make_set_make="MAKE=$make" ;;
14454         esac
14455         $rm -f testmake.mak
14456         ;;
14457 esac
14458 case "$make_set_make" in
14459 '#') echo "Yup, it does.";;
14460 *) echo "Nope, it doesn't.";;
14461 esac
14462
14463 : see what type is used for mode_t
14464 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14465 set mode_t modetype int stdio.h sys/types.h
14466 eval $typedef_ask
14467
14468 : see if stdarg is available
14469 echo " "
14470 if $test `./findhdr stdarg.h`; then
14471         echo "<stdarg.h> found." >&4
14472         valstd="$define"
14473 else
14474         echo "<stdarg.h> NOT found." >&4
14475         valstd="$undef"
14476 fi
14477
14478 : see if varags is available
14479 echo " "
14480 if $test `./findhdr varargs.h`; then
14481         echo "<varargs.h> found." >&4
14482 else
14483         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14484 fi
14485
14486 : set up the varargs testing programs
14487 $cat > varargs.c <<EOP
14488 #ifdef I_STDARG
14489 #include <stdarg.h>
14490 #endif
14491 #ifdef I_VARARGS
14492 #include <varargs.h>
14493 #endif
14494
14495 #ifdef I_STDARG
14496 int f(char *p, ...)
14497 #else
14498 int f(va_alist)
14499 va_dcl
14500 #endif
14501 {
14502         va_list ap;
14503 #ifndef I_STDARG
14504         char *p;
14505 #endif
14506 #ifdef I_STDARG
14507         va_start(ap,p);
14508 #else
14509         va_start(ap);
14510         p = va_arg(ap, char *);
14511 #endif
14512         va_end(ap);
14513 }
14514 EOP
14515 $cat > varargs <<EOP
14516 $startsh
14517 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14518         echo "true"
14519 else
14520         echo "false"
14521 fi
14522 $rm -f varargs$_o
14523 EOP
14524 chmod +x varargs
14525
14526 : now check which varargs header should be included
14527 echo " "
14528 i_varhdr=''
14529 case "$valstd" in
14530 "$define")
14531         if `./varargs I_STDARG`; then
14532                 val='stdarg.h'
14533         elif `./varargs I_VARARGS`; then
14534                 val='varargs.h'
14535         fi
14536         ;;
14537 *)
14538         if `./varargs I_VARARGS`; then
14539                 val='varargs.h'
14540         fi
14541         ;;
14542 esac
14543 case "$val" in
14544 '')
14545 echo "I could not find the definition for va_dcl... You have problems..." >&4
14546         val="$undef"; set i_stdarg; eval $setvar
14547         val="$undef"; set i_varargs; eval $setvar
14548         ;;
14549 *) 
14550         set i_varhdr
14551         eval $setvar
14552         case "$i_varhdr" in
14553         stdarg.h)
14554                 val="$define"; set i_stdarg; eval $setvar
14555                 val="$undef"; set i_varargs; eval $setvar
14556                 ;;
14557         varargs.h)
14558                 val="$undef"; set i_stdarg; eval $setvar
14559                 val="$define"; set i_varargs; eval $setvar
14560                 ;;
14561         esac
14562         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14563 esac
14564 $rm -f varargs*
14565
14566 : see if we need va_copy
14567 echo " "
14568 case "$i_stdarg" in
14569 "$define")
14570         $cat >try.c <<EOCP
14571 #include <stdarg.h>
14572 #include <stdio.h>
14573 #$i_stdlib I_STDLIB
14574 #ifdef I_STDLIB
14575 #include <stdlib.h>
14576 #endif
14577 #include <signal.h>
14578
14579 int
14580 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14581 {
14582   return vfprintf(f, fmt, *valp);
14583 }
14584  
14585 int    
14586 myvfprintf(FILE *f, const  char *fmt, va_list val)
14587 {
14588   return ivfprintf(f, fmt, &val);
14589 }
14590       
14591 int
14592 myprintf(char *fmt, ...) 
14593 {
14594   va_list val;
14595   va_start(val, fmt);
14596   return myvfprintf(stdout, fmt, val); 
14597 }         
14598
14599 int
14600 main(int ac, char **av)
14601 {
14602   signal(SIGSEGV, exit);
14603
14604   myprintf("%s%cs all right, then\n", "that", '\'');                            
14605   exit(0);      
14606 }
14607 EOCP
14608         set try
14609         if eval $compile && $run ./try 2>&1 >/dev/null; then
14610                 case "`$run ./try`" in
14611                 "that's all right, then")
14612                         okay=yes
14613                         ;;
14614                 esac
14615         fi
14616         case "$okay" in
14617         yes)    echo "It seems that you don't need va_copy()." >&4
14618                 need_va_copy="$undef"
14619                 ;;
14620         *)      echo "It seems that va_copy() or similar will be needed." >&4
14621                 need_va_copy="$define"
14622                 ;;
14623         esac
14624         $rm -f try.* core core.* *.core *.core.*
14625         ;;
14626 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14627         ;;
14628 esac
14629
14630 : define a fucntion to check prototypes
14631 $cat > protochk <<EOSH
14632 $startsh
14633 cc="$cc"
14634 optimize="$optimize"
14635 ccflags="$ccflags"
14636 prototype="$prototype"
14637 define="$define"
14638 rm=$rm
14639 EOSH
14640
14641 $cat >> protochk <<'EOSH'
14642
14643 $rm -f try.c
14644 foo="$1"
14645 shift
14646 while test $# -ge 2; do
14647         case "$1" in
14648                 $define) echo "#include <$2>" >> try.c ;;
14649                 literal) echo "$2" >> try.c ;;
14650         esac
14651     shift 2
14652 done
14653 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14654 cat >> try.c <<'EOCP'
14655 #ifdef CAN_PROTOTYPE
14656 #define _(args) args
14657 #else
14658 #define _(args) ()
14659 #endif
14660 EOCP
14661 echo "$foo" >> try.c
14662 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14663 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14664 status=$?
14665 $rm -f try.[co]
14666 exit $status
14667 EOSH
14668 chmod +x protochk
14669 $eunicefix protochk
14670
14671 : see what type is used for size_t
14672 rp="What is the type used for the length parameter for string functions?"
14673 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14674 eval $typedef_ask
14675
14676 : check for type of arguments to gethostbyaddr. 
14677 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14678         case "$d_gethbyaddr" in
14679         $define)
14680                 $cat <<EOM
14681
14682 Checking to see what type of arguments are accepted by gethostbyaddr().
14683 EOM
14684                 hdrs="$define sys/types.h
14685                         $d_socket sys/socket.h 
14686                         $i_niin netinet/in.h 
14687                         $i_netdb netdb.h
14688                         $i_unistd unistd.h"
14689                 : The first arg can 'char *' or 'void *'
14690                 : The second arg is some of integral type
14691                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14692                         for yyy in size_t long int; do
14693                                 case "$netdb_host_type" in
14694                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14695                                         if ./protochk "$try" $hdrs; then
14696                                                 echo "Your system accepts $xxx for the first arg."
14697                                                 echo "...and $yyy for the second arg."
14698                                                 netdb_host_type="$xxx"
14699                                                 netdb_hlen_type="$yyy"
14700                                         fi
14701                                         ;;
14702                                 esac
14703                         done
14704                 done
14705                 : In case none of those worked, prompt the user.
14706                 case "$netdb_host_type" in
14707                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14708                         dflt='char *'
14709                         . ./myread
14710                         netdb_host_type=$ans
14711                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14712                         dflt="$sizetype"
14713                         . ./myread
14714                         netdb_hlen_type=$ans
14715                         ;;
14716                 esac
14717                 ;;
14718         *)      : no gethostbyaddr, so pick harmless defaults
14719                 netdb_host_type='char *'
14720                 netdb_hlen_type="$sizetype"
14721                 ;;
14722         esac
14723         # Remove the "const" if needed. -- but then we'll have a 
14724         # prototype clash!
14725         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14726 fi
14727
14728 : check for type of argument to gethostbyname. 
14729 if test "X$netdb_name_type" = X ; then
14730         case "$d_gethbyname" in
14731         $define)
14732                 $cat <<EOM
14733
14734 Checking to see what type of argument is accepted by gethostbyname().
14735 EOM
14736                 hdrs="$define sys/types.h
14737                         $d_socket sys/socket.h 
14738                         $i_niin netinet/in.h 
14739                         $i_netdb netdb.h
14740                         $i_unistd unistd.h"
14741                 for xxx in "const char *" "char *"; do
14742                         case "$netdb_name_type" in
14743                         '')     try="extern struct hostent *gethostbyname($xxx);"
14744                                 if ./protochk "$try" $hdrs; then
14745                                         echo "Your system accepts $xxx."
14746                                         netdb_name_type="$xxx"
14747                                 fi
14748                                 ;;
14749                         esac
14750                 done
14751                 : In case none of those worked, prompt the user.
14752                 case "$netdb_name_type" in
14753                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14754                         dflt='char *'
14755                         . ./myread
14756                         netdb_name_type=$ans
14757                         ;;
14758                 esac
14759                 ;;
14760         *)      : no gethostbyname, so pick harmless default
14761                 netdb_name_type='char *'
14762                 ;;
14763         esac
14764 fi
14765
14766 : check for type of 1st argument to getnetbyaddr. 
14767 if test "X$netdb_net_type" = X ; then
14768         case "$d_getnbyaddr" in
14769         $define)
14770                 $cat <<EOM
14771
14772 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14773 EOM
14774                 hdrs="$define sys/types.h
14775                         $d_socket sys/socket.h 
14776                         $i_niin netinet/in.h 
14777                         $i_netdb netdb.h
14778                         $i_unistd unistd.h"
14779                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14780                         case "$netdb_net_type" in
14781                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14782                                 if ./protochk "$try" $hdrs; then
14783                                         echo "Your system accepts $xxx."
14784                                         netdb_net_type="$xxx"
14785                                 fi
14786                                 ;;
14787                         esac
14788                 done
14789                 : In case none of those worked, prompt the user.
14790                 case "$netdb_net_type" in
14791                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14792                         dflt='long'
14793                         . ./myread
14794                         netdb_net_type=$ans
14795                         ;;
14796                 esac
14797                 ;;
14798         *)      : no getnetbyaddr, so pick harmless default
14799                 netdb_net_type='long'
14800                 ;;
14801         esac
14802 fi
14803 : locate the preferred pager for this system
14804 case "$pager" in
14805 '')
14806         dflt=''
14807         case "$pg" in
14808         /*) dflt=$pg;;
14809         [a-zA-Z]:/*) dflt=$pg;;
14810         esac
14811         case "$more" in
14812         /*) dflt=$more;;
14813         [a-zA-Z]:/*) dflt=$more;;
14814         esac
14815         case "$less" in
14816         /*) dflt=$less;;
14817         [a-zA-Z]:/*) dflt=$less;;
14818         esac
14819         case "$dflt" in
14820         '') dflt=/usr/ucb/more;;
14821         esac
14822         ;;
14823 *) dflt="$pager";;
14824 esac
14825 echo " "
14826 fn=f/
14827 rp='What pager is used on your system?'
14828 . ./getfile
14829 pager="$ans"
14830
14831 : see what type pids are declared as in the kernel
14832 rp="What is the type of process ids on this system?"
14833 set pid_t pidtype int stdio.h sys/types.h
14834 eval $typedef_ask
14835
14836 : Find earliest binary compatible site_perl subdirectory perl can use.
14837 case "$bincompat5005" in
14838 "$define") xs_apiversion='5.005' ;;
14839 *) xs_apiversion=$version ;;   # The current site_perl version.
14840 esac
14841 : Find earliest pure perl site_perl subdirectory perl can use.
14842 : The versioned directories started at 5.005.
14843 pm_apiversion='5.005'
14844
14845 : see if ar generates random libraries by itself
14846 echo " "
14847 echo "Checking how to generate random libraries on your machine..." >&4
14848 echo 'int bar1() { return bar2(); }' > bar1.c
14849 echo 'int bar2() { return 2; }' > bar2.c
14850 $cat > foo.c <<'EOP'
14851 int main() { printf("%d\n", bar1()); exit(0); }
14852 EOP
14853 $cc $ccflags -c bar1.c >/dev/null 2>&1
14854 $cc $ccflags -c bar2.c >/dev/null 2>&1
14855 $cc $ccflags -c foo.c >/dev/null 2>&1
14856 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14857 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14858         $run ./foobar >/dev/null 2>&1; then
14859         echo "$ar appears to generate random libraries itself."
14860         orderlib=false
14861         ranlib=":"
14862 elif $ar ts bar$_a >/dev/null 2>&1 &&
14863         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14864         $run ./foobar >/dev/null 2>&1; then
14865                 echo "a table of contents needs to be added with '$ar ts'."
14866                 orderlib=false
14867                 ranlib="$ar ts"
14868 else
14869         case "$ranlib" in
14870         :) ranlib='';;
14871         '')
14872                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14873                 $test -f $ranlib || ranlib=''
14874                 ;;
14875         esac
14876         if $test -n "$ranlib"; then
14877                 echo "your system has '$ranlib'; we'll use that."
14878                 orderlib=false
14879         else
14880                 echo "your system doesn't seem to support random libraries"
14881                 echo "so we'll use lorder and tsort to order the libraries."
14882                 orderlib=true
14883                 ranlib=":"
14884         fi
14885 fi
14886 $rm -f foo* bar* 
14887
14888 : check for type of arguments to select. 
14889 case "$selecttype" in
14890 '') case "$d_select" in
14891         $define)
14892                 echo " "
14893                 $cat <<EOM
14894 Checking to see what type of arguments are accepted by select().
14895 EOM
14896                 hdrs="$define sys/types.h
14897                         $i_systime sys/time.h 
14898                         $i_sysselct sys/select.h
14899                         $d_socket sys/socket.h"
14900                 : The first arg can be int, unsigned, or size_t
14901                 : The last arg may or may not be 'const'
14902                 val=''
14903                 : void pointer has been seen but using that
14904                 : breaks the selectminbits test
14905                 for xxx in 'fd_set *' 'int *'; do
14906                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14907                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14908                                         case "$val" in
14909                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14910                                                 if ./protochk "$try" $hdrs; then
14911                                                         echo "Your system accepts $xxx."
14912                                                         val="$xxx"
14913                                                 fi
14914                                                 ;;
14915                                         esac
14916                                 done
14917                         done
14918                 done
14919                 case "$val" in
14920                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14921                         case "$d_fd_set" in
14922                                 $define) dflt="fd_set *" ;;
14923                                 *)              dflt="int *" ;;
14924                         esac
14925                         . ./myread
14926                         val=$ans
14927                         ;;
14928                 esac
14929                 selecttype="$val"
14930                 ;;
14931         *)      : no select, so pick a harmless default
14932                 selecttype='int *'
14933                 ;;
14934         esac
14935         ;;
14936 esac
14937
14938 : check for the select 'width'
14939 case "$selectminbits" in
14940 '') case "$d_select" in
14941         $define)
14942                 $cat <<EOM
14943
14944 Checking to see on how many bits at a time your select() operates...
14945 EOM
14946                 $cat >try.c <<EOCP
14947 #include <sys/types.h>
14948 #$i_time I_TIME
14949 #$i_systime I_SYS_TIME
14950 #$i_systimek I_SYS_TIME_KERNEL
14951 #ifdef I_TIME
14952 #   include <time.h>
14953 #endif
14954 #ifdef I_SYS_TIME
14955 #   ifdef I_SYS_TIME_KERNEL
14956 #       define KERNEL
14957 #   endif
14958 #   include <sys/time.h>
14959 #   ifdef I_SYS_TIME_KERNEL
14960 #       undef KERNEL
14961 #   endif
14962 #endif
14963 #$i_sysselct I_SYS_SELECT
14964 #ifdef I_SYS_SELECT
14965 #include <sys/select.h>
14966 #endif
14967 #$d_socket HAS_SOCKET
14968 #ifdef HAS_SOCKET
14969 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14970 #endif
14971 #include <stdio.h>
14972 $selecttype b;
14973 #define S sizeof(*(b))
14974 #define MINBITS 64
14975 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14976 #define NBITS  (NBYTES * 8)
14977 int main() {
14978     char s[NBYTES];
14979     struct timeval t;
14980     int i;
14981     FILE* fp;
14982     int fd;
14983
14984     fclose(stdin);
14985     fp = fopen("try.c", "r");
14986     if (fp == 0)
14987       exit(1);
14988     fd = fileno(fp);
14989     if (fd < 0)
14990       exit(2);
14991     b = ($selecttype)s;
14992     for (i = 0; i < NBITS; i++)
14993         FD_SET(i, b);
14994     t.tv_sec  = 0;
14995     t.tv_usec = 0;
14996     select(fd + 1, b, 0, 0, &t);
14997     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14998     printf("%d\n", i + 1);
14999     return 0;
15000 }
15001 EOCP
15002                 set try
15003                 if eval $compile_ok; then
15004                         selectminbits=`$run ./try`
15005                         case "$selectminbits" in
15006                         '')     cat >&4 <<EOM
15007 Cannot figure out on how many bits at a time your select() operates.
15008 I'll play safe and guess it is 32 bits.
15009 EOM
15010                                 selectminbits=32
15011                                 bits="32 bits"
15012                                 ;;
15013                         1)      bits="1 bit" ;;
15014                         *)      bits="$selectminbits bits" ;;
15015                         esac
15016                         echo "Your select() operates on $bits at a time." >&4
15017                 else
15018                         rp='What is the minimum number of bits your select() operates on?'
15019                         case "$byteorder" in
15020                         1234|12345678)  dflt=32 ;;
15021                         *)              dflt=1  ;;
15022                         esac
15023                         . ./myread
15024                         val=$ans
15025                         selectminbits="$val"
15026                 fi
15027                 $rm -f try.* try
15028                 ;;
15029         *)      : no select, so pick a harmless default
15030                 selectminbits='32'
15031                 ;;
15032         esac
15033         ;;
15034 esac
15035
15036 : Trace out the files included by signal.h, then look for SIGxxx names.
15037 : Remove SIGARRAYSIZE used by HPUX.
15038 : Remove SIGSTKSIZE used by Linux.
15039 : Remove SIGSTKSZ used by Posix.
15040 : Remove SIGTYP void lines used by OS2.
15041 : Some cpps, like os390, dont give the file name anywhere
15042 if [ "X$fieldn" = X ]; then
15043         : Just make some guesses.  We check them later.
15044         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15045 else
15046         xxx=`echo '#include <signal.h>' |
15047         $cppstdin $cppminus $cppflags 2>/dev/null |
15048         $grep '^[       ]*#.*include' | 
15049         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15050 fi
15051 : Check this list of files to be sure we have parsed the cpp output ok.
15052 : This will also avoid potentially non-existent files, such 
15053 : as ../foo/bar.h
15054 xxxfiles=''
15055 for xx in $xxx /dev/null ; do
15056         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15057 done
15058 : If we have found no files, at least try signal.h
15059 case "$xxxfiles" in
15060 '')     xxxfiles=`./findhdr signal.h` ;;
15061 esac
15062 xxx=`awk '
15063 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15064         print substr($2, 4, 20)
15065 }
15066 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15067         print substr($3, 4, 20)
15068 }' $xxxfiles`
15069 : Append some common names just in case the awk scan failed.
15070 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15071 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15072 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15073 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15074 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15075
15076 : generate a few handy files for later
15077 $cat > signal.c <<'EOCP'
15078 #include <sys/types.h>
15079 #include <signal.h>
15080 #include <stdio.h>
15081 int main() {
15082
15083 /* Strange style to avoid deeply-nested #if/#else/#endif */
15084 #ifndef NSIG
15085 #  ifdef _NSIG
15086 #    define NSIG (_NSIG)
15087 #  endif
15088 #endif
15089
15090 #ifndef NSIG
15091 #  ifdef SIGMAX
15092 #    define NSIG (SIGMAX+1)
15093 #  endif
15094 #endif
15095
15096 #ifndef NSIG
15097 #  ifdef SIG_MAX
15098 #    define NSIG (SIG_MAX+1)
15099 #  endif
15100 #endif
15101
15102 #ifndef NSIG
15103 #  ifdef MAXSIG
15104 #    define NSIG (MAXSIG+1)
15105 #  endif
15106 #endif
15107
15108 #ifndef NSIG
15109 #  ifdef MAX_SIG
15110 #    define NSIG (MAX_SIG+1)
15111 #  endif
15112 #endif
15113
15114 #ifndef NSIG
15115 #  ifdef SIGARRAYSIZE
15116 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15117 #  endif
15118 #endif
15119
15120 #ifndef NSIG
15121 #  ifdef _sys_nsig
15122 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15123 #  endif
15124 #endif
15125
15126 /* Default to some arbitrary number that's big enough to get most
15127    of the common signals.
15128 */
15129 #ifndef NSIG
15130 #    define NSIG 50
15131 #endif
15132
15133 printf("NSIG %d\n", NSIG);
15134
15135 #ifndef JUST_NSIG
15136
15137 EOCP
15138
15139 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15140 {
15141         printf "#ifdef SIG"; printf $1; printf "\n"
15142         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15143         printf $1; printf ");\n"
15144         printf "#endif\n"
15145 }
15146 END {
15147         printf "#endif /* JUST_NSIG */\n";
15148         printf "exit(0);\n}\n";
15149 }
15150 ' >>signal.c
15151 $cat >signal.awk <<'EOP'
15152 BEGIN { ndups = 0 }
15153 $1 ~ /^NSIG$/ { nsig = $2 }
15154 ($1 !~ /^NSIG$/) && (NF == 2) {
15155     if ($2 > maxsig) { maxsig = $2 }
15156     if (sig_name[$2]) {
15157         dup_name[ndups] = $1
15158         dup_num[ndups] = $2
15159         ndups++ 
15160     }
15161     else {
15162         sig_name[$2] = $1
15163         sig_num[$2] = $2
15164     }
15165 }
15166 END { 
15167     if (nsig == 0) {
15168         nsig = maxsig + 1
15169     }
15170     printf("NSIG %d\n", nsig);
15171     for (n = 1; n < nsig; n++) {
15172         if (sig_name[n]) {
15173             printf("%s %d\n", sig_name[n], sig_num[n])
15174         }
15175         else {
15176             printf("NUM%d %d\n", n, n) 
15177         }
15178     }
15179     for (n = 0; n < ndups; n++) {
15180         printf("%s %d\n", dup_name[n], dup_num[n])
15181     }
15182 }
15183 EOP
15184 $cat >signal_cmd <<EOS
15185 $startsh
15186 if $test -s signal.lst; then
15187     echo "Using your existing signal.lst file"
15188         exit 0
15189 fi
15190 xxx="$xxx"
15191 EOS
15192 $cat >>signal_cmd <<'EOS'
15193
15194 set signal
15195 if eval $compile_ok; then
15196         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15197 else
15198         echo "(I can't seem be able to compile the whole test program)" >&4
15199         echo "(I'll try it in little pieces.)" >&4
15200         set signal -DJUST_NSIG
15201         if eval $compile_ok; then
15202                 $run ./signal$_exe > signal.nsg
15203                 $cat signal.nsg
15204         else
15205                 echo "I can't seem to figure out how many signals you have." >&4
15206                 echo "Guessing 50." >&4
15207                 echo 'NSIG 50' > signal.nsg
15208         fi
15209         : Now look at all the signal names, one at a time.
15210         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15211                 $cat > signal.c <<EOCP
15212 #include <sys/types.h>
15213 #include <signal.h>
15214 #include <stdio.h>
15215 int main() {
15216 printf("$xx %d\n", SIG${xx});
15217 return 0;
15218 }
15219 EOCP
15220                 set signal
15221                 if eval $compile; then
15222                         echo "SIG${xx} found."
15223                         $run ./signal$_exe  >> signal.ls1
15224                 else
15225                         echo "SIG${xx} NOT found."
15226                 fi
15227         done
15228         if $test -s signal.ls1; then
15229                 $cat signal.nsg signal.ls1 |
15230                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15231         fi
15232
15233 fi
15234 if $test -s signal.lst; then
15235         :
15236 else
15237         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15238         echo 'kill -l' >signal
15239         set X `csh -f <signal`
15240         $rm -f signal
15241         shift
15242         case $# in
15243         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15244         esac
15245         echo $@ | $tr ' ' $trnl | \
15246             $awk '{ printf "%s %d\n", $1, ++s; }
15247                   END { printf "NSIG %d\n", ++s }' >signal.lst
15248 fi
15249 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15250 EOS
15251 chmod a+x signal_cmd
15252 $eunicefix signal_cmd
15253
15254 : generate list of signal names
15255 echo " "
15256 case "$sig_name_init" in
15257 '') doinit=yes ;;
15258 *)  case "$sig_num_init" in
15259     ''|*,*) doinit=yes ;;
15260     esac ;;
15261 esac
15262 case "$doinit" in
15263 yes)
15264         echo "Generating a list of signal names and numbers..." >&4
15265         . ./signal_cmd
15266         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15267         sig_name=`$awk 'BEGIN { printf "ZERO " }
15268                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15269         sig_num=`$awk  'BEGIN { printf "0 " }
15270                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15271         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15272                              !/^NSIG/   { printf "\"%s\", ", $1 }
15273                              END        { printf "0\n" }' signal.lst`
15274         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15275                              !/^NSIG/   { printf "%d, ", $2}
15276                              END        { printf "0\n"}' signal.lst`
15277         ;;
15278 esac
15279 echo "The following $sig_count signals are available:"
15280 echo " "
15281 echo $sig_name | $awk \
15282 'BEGIN { linelen = 0 }
15283 {
15284         for (i = 1; i <= NF; i++) {
15285                 name = "SIG" $i " "
15286                 linelen = linelen + length(name)
15287                 if (linelen > 70) {
15288                         printf "\n"
15289                         linelen = length(name)
15290                 }
15291                 printf "%s", name
15292         }
15293         printf "\n"
15294 }'
15295 sig_size=`echo $sig_name | awk '{print NF}'`
15296 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15297
15298 echo " "
15299 case "$sizetype" in
15300 *_t) zzz="$sizetype"    ;;
15301 *)   zzz="filesize"     ;;
15302 esac
15303 echo "Checking the size of $zzz..." >&4 
15304 cat > try.c <<EOCP
15305 #include <sys/types.h>
15306 #include <stdio.h>
15307 int main() {
15308     printf("%d\n", (int)sizeof($sizetype));
15309     exit(0);
15310 }
15311 EOCP
15312 set try
15313 if eval $compile_ok; then
15314         yyy=`$run ./try`
15315         case "$yyy" in
15316         '')     sizesize=4
15317                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15318                 ;;
15319         *)      sizesize=$yyy
15320                 echo "Your $zzz size is $sizesize bytes."
15321                 ;;
15322         esac
15323 else
15324         sizesize=4
15325         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15326 fi
15327
15328
15329 : check for socklen_t
15330 echo " "
15331 echo "Checking to see if you have socklen_t..." >&4
15332 $cat >try.c <<EOCP
15333 #include <sys/types.h>
15334 #$d_socket HAS_SOCKET
15335 #ifdef HAS_SOCKET
15336 #include <sys/socket.h>
15337 #endif
15338 int main() { socklen_t x = 16; }
15339 EOCP
15340 set try
15341 if eval $compile; then
15342         val="$define"
15343         echo "You have socklen_t."
15344 else
15345         val="$undef"
15346         echo "You do not have socklen_t."
15347         case "$sizetype" in
15348         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15349         esac
15350 fi
15351 $rm -f try try.*
15352 set d_socklen_t
15353 eval $setvar
15354
15355 : see if this is a socks.h system
15356 set socks.h i_socks
15357 eval $inhdr
15358
15359 : check for type of the size argument to socket calls
15360 case "$d_socket" in
15361 "$define")
15362         $cat <<EOM
15363
15364 Checking to see what type is the last argument of accept().
15365 EOM
15366         yyy=''
15367         case "$d_socklen_t" in
15368         "$define") yyy="$yyy socklen_t"
15369         esac
15370         yyy="$yyy $sizetype int long unsigned"
15371         for xxx in $yyy; do
15372                 case "$socksizetype" in
15373                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15374                         case "$usesocks" in
15375                         "$define")
15376                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15377                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15378                                         socksizetype="$xxx"
15379                                 fi
15380                                 ;;
15381                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15382                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15383                                         socksizetype="$xxx"
15384                                 fi
15385                                 ;;
15386                         esac
15387                         ;;
15388                 esac
15389         done
15390 : In case none of those worked, prompt the user.
15391         case "$socksizetype" in
15392         '')     rp='What is the type for socket address structure sizes?'
15393                 dflt='int'
15394                 . ./myread
15395                 socksizetype=$ans
15396                 ;;
15397         esac
15398         ;;
15399 *)      : no sockets, so pick relatively harmless default
15400         socksizetype='int'
15401         ;;
15402 esac
15403
15404 : see what type is used for signed size_t
15405 set ssize_t ssizetype int stdio.h sys/types.h
15406 eval $typedef
15407 dflt="$ssizetype"
15408 $cat > try.c <<EOM
15409 #include <stdio.h>
15410 #include <sys/types.h>
15411 #define Size_t $sizetype
15412 #define SSize_t $dflt
15413 int main()
15414 {
15415         if (sizeof(Size_t) == sizeof(SSize_t))
15416                 printf("$dflt\n");
15417         else if (sizeof(Size_t) == sizeof(int))
15418                 printf("int\n");
15419         else 
15420                 printf("long\n");
15421         exit(0);
15422 }
15423 EOM
15424 echo " "
15425 set try
15426 if eval $compile_ok && $run ./try > /dev/null; then
15427         ssizetype=`$run ./try`
15428         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15429 else
15430         $cat >&4 <<EOM
15431 Help! I can't compile and run the ssize_t test program: please enlighten me!
15432 (This is probably a misconfiguration in your system or libraries, and
15433 you really ought to fix it.  Still, I'll try anyway.)
15434
15435 I need a type that is the same size as $sizetype, but is guaranteed to
15436 be signed.  Common values are ssize_t, int and long.
15437
15438 EOM
15439         rp="What signed type is the same size as $sizetype?"
15440         . ./myread
15441         ssizetype="$ans"
15442 fi
15443 $rm -f try try.*
15444
15445 : see what type of char stdio uses.
15446 echo " "
15447 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15448 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15449         echo "Your stdio uses unsigned chars." >&4
15450         stdchar="unsigned char"
15451 else
15452         echo "Your stdio uses signed chars." >&4
15453         stdchar="char"
15454 fi
15455 $rm -f stdioh
15456
15457
15458
15459 : see if time exists
15460 echo " "
15461 if test "X$d_time" = X -o X"$timetype" = X; then
15462     if set time val -f d_time; eval $csym; $val; then
15463                 echo 'time() found.' >&4
15464                 val="$define"
15465                 rp="What is the type returned by time() on this system?"
15466                 set time_t timetype long stdio.h sys/types.h
15467                 eval $typedef_ask
15468     else
15469                 echo 'time() not found, hope that will do.' >&4
15470                 val="$undef"
15471                 timetype='int';
15472     fi
15473     set d_time
15474     eval $setvar
15475 fi
15476
15477 : see what type uids are declared as in the kernel
15478 echo " "
15479 echo "Looking for the type for user ids returned by getuid()."
15480 set uid_t uidtype xxx stdio.h sys/types.h
15481 eval $typedef
15482 case "$uidtype" in
15483 xxx)
15484         xxx=`./findhdr sys/user.h`
15485         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15486         case $1 in
15487         unsigned) dflt="$1 $2" ;;
15488         *) dflt="$1" ;;
15489         esac
15490         ;;
15491 *) dflt="$uidtype";;
15492 esac
15493 case "$uidtype" in
15494 uid_t)  echo "uid_t found." ;;
15495 *)      rp="What is the type for user ids returned by getuid()?"
15496         . ./myread
15497         uidtype="$ans"
15498         ;;
15499 esac
15500
15501 echo " "
15502 case "$uidtype" in
15503 *_t) zzz="$uidtype"     ;;
15504 *)   zzz="uid"          ;;
15505 esac
15506 echo "Checking the size of $zzz..." >&4 
15507 cat > try.c <<EOCP
15508 #include <sys/types.h>
15509 #include <stdio.h>
15510 int main() {
15511     printf("%d\n", (int)sizeof($uidtype));
15512     exit(0);
15513 }
15514 EOCP
15515 set try
15516 if eval $compile_ok; then
15517         yyy=`$run ./try`
15518         case "$yyy" in
15519         '')     uidsize=4
15520                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15521                 ;;
15522         *)      uidsize=$yyy
15523                 echo "Your $zzz is $uidsize bytes long."
15524                 ;;
15525         esac
15526 else
15527         uidsize=4
15528         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15529 fi
15530
15531 echo " "
15532 case "$uidtype" in
15533 *_t) zzz="$uidtype"     ;;
15534 *)   zzz="uid"          ;;
15535 esac
15536 echo "Checking the sign of $zzz..." >&4
15537 cat > try.c <<EOCP
15538 #include <sys/types.h>
15539 #include <stdio.h>
15540 int main() {
15541         $uidtype foo = -1;
15542         if (foo < 0)
15543                 printf("-1\n");
15544         else
15545                 printf("1\n");
15546 }
15547 EOCP
15548 set try
15549 if eval $compile; then
15550         yyy=`$run ./try`
15551         case "$yyy" in
15552         '')     uidsign=1
15553                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15554                 ;;
15555         *)      uidsign=$yyy
15556                 case "$uidsign" in
15557                  1) echo "Your $zzz is unsigned." ;;
15558                 -1) echo "Your $zzz is signed."   ;;
15559                 esac
15560                 ;;
15561         esac
15562 else
15563         uidsign=1
15564         echo "(I can't compile the test program--guessing unsigned.)" >&4
15565 fi
15566
15567
15568
15569 echo " "
15570 $echo "Checking the format string to be used for uids..." >&4
15571
15572 case "$uidsign" in
15573 -1)     if $test X"$uidsize" = X"$ivsize"; then
15574                 uidformat="$ivdformat"
15575         else
15576                 if $test X"$uidsize" = X"$longsize"; then
15577                         uidformat='"ld"'
15578                 else
15579                         if $test X"$uidsize" = X"$intsize"; then
15580                                 uidformat='"d"'
15581                         else
15582                                 if $test X"$uidsize" = X"$shortsize"; then
15583                                         uidformat='"hd"'
15584                                 fi
15585                         fi
15586                 fi
15587         fi
15588         ;;
15589 *)      if $test X"$uidsize" = X"$uvsize"; then
15590                 uidformat="$uvuformat"
15591         else
15592                 if $test X"$uidsize" = X"$longsize"; then
15593                         uidformat='"lu"'
15594                 else
15595                         if $test X"$uidsize" = X"$intsize"; then
15596                                 uidformat='"u"'
15597                         else
15598                                 if $test X"$uidsize" = X"$shortsize"; then
15599                                         uidformat='"hu"'
15600                                 fi
15601                         fi
15602                 fi
15603         fi
15604         ;;
15605 esac
15606
15607 : determine compiler compiler
15608 case "$yacc" in
15609 '')
15610         dflt=yacc;;
15611 *)
15612         dflt="$yacc";;
15613 esac
15614 echo " "
15615 comp='yacc'
15616 if $test -f "$byacc"; then
15617         dflt="$byacc"
15618         comp="byacc or $comp"
15619 fi
15620 if $test -f "$bison"; then
15621         comp="$comp or bison -y"
15622 fi
15623 rp="Which compiler compiler ($comp) shall I use?"
15624 . ./myread
15625 yacc="$ans"
15626 case "$yacc" in
15627 *bis*)
15628         case "$yacc" in
15629         *-y*) ;;
15630         *)
15631                 yacc="$yacc -y"
15632                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15633                 ;;
15634         esac
15635         ;;
15636 esac
15637
15638 : see if fcntl.h is there
15639 val=''
15640 set fcntl.h val
15641 eval $inhdr
15642
15643 : see if we can include fcntl.h
15644 case "$val" in
15645 "$define")
15646         echo " "
15647         if $h_fcntl; then
15648                 val="$define"
15649                 echo "We'll be including <fcntl.h>." >&4
15650         else
15651                 val="$undef"
15652                 if $h_sysfile; then
15653         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15654                 else
15655                         echo "We won't be including <fcntl.h>." >&4
15656                 fi
15657         fi
15658         ;;
15659 *)
15660         h_fcntl=false
15661         val="$undef"
15662         ;;
15663 esac
15664 set i_fcntl
15665 eval $setvar
15666
15667 : see if this is a iconv.h system
15668 set iconv.h i_iconv
15669 eval $inhdr
15670
15671 : see if this is a ieeefp.h system
15672 set ieeefp.h i_ieeefp
15673 eval $inhdr
15674
15675 : see if this is a libutil.h system
15676 set libutil.h i_libutil
15677 eval $inhdr
15678
15679 : see if locale.h is available
15680 set locale.h i_locale
15681 eval $inhdr
15682
15683 : see if mach cthreads are available
15684 if test "X$usethreads" = "X$define"; then
15685         set mach/cthreads.h i_machcthr
15686         eval $inhdr
15687 else
15688         i_machcthr="$undef"
15689 fi
15690
15691
15692
15693 : see if this is a math.h system
15694 set math.h i_math
15695 eval $inhdr
15696
15697 : see if this is a mntent.h system
15698 set mntent.h i_mntent
15699 eval $inhdr
15700
15701 : see if ndbm.h is available
15702 set ndbm.h t_ndbm
15703 eval $inhdr
15704 case "$t_ndbm" in
15705 $define)
15706         : see if dbm_open exists
15707         set dbm_open d_dbm_open
15708         eval $inlibc
15709         case "$d_dbm_open" in
15710         $undef)
15711                 t_ndbm="$undef"
15712                 echo "We won't be including <ndbm.h>"
15713                 ;;
15714         esac
15715         ;;
15716 esac
15717 val="$t_ndbm"
15718 set i_ndbm
15719 eval $setvar
15720
15721 : see if net/errno.h is available
15722 val=''
15723 set net/errno.h val
15724 eval $inhdr
15725
15726 : Unfortunately, it causes problems on some systems.  Arrgh.
15727 case "$val" in
15728 $define)
15729         cat > try.c <<'EOM'
15730 #include <stdio.h>
15731 #include <errno.h>
15732 #include <net/errno.h>
15733 int func()
15734 {
15735         return ENOTSOCK;
15736 }
15737 EOM
15738         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15739                 echo "We'll be including <net/errno.h>." >&4
15740         else
15741                 echo "We won't be including <net/errno.h>." >&4
15742                 val="$undef"
15743         fi
15744         $rm -f try.* try
15745         ;;
15746 esac
15747 set i_neterrno
15748 eval $setvar
15749
15750 : see if netinet/tcp.h is available
15751 set netinet/tcp.h i_netinettcp
15752 eval $inhdr
15753
15754 : see if this is a poll.h system
15755 set poll.h i_poll
15756 eval $inhdr
15757
15758 : see if this is a prot.h system
15759 set prot.h i_prot
15760 eval $inhdr
15761
15762 echo " "
15763 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15764 $cat <<'EOSH' > Cppsym.know
15765 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15766 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15767 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15768 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15769 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15770 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15771 bull c cadmus clipper CMU COFF COMPILER_VERSION
15772 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15773 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15774 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15775 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15776 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15777 H3050R H3050RX hbullx20 hcx host_mips
15778 hp200 hp300 hp700 HP700 hp800 hp9000
15779 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15780 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15781 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15782 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15783 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15784 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15785 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15786 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15787 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15788 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15789 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15790 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15791 MATH_HAS_NO_SIDE_EFFECTS
15792 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15793 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15794 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15795 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15796 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15797 NetBSD news1500 news1700 news1800 news1900 news3700
15798 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15799 ns32016 ns32332 ns32k nsc32000
15800 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15801 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15802 pc532 pdp11 PGC PIC plexus PORTAR posix
15803 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15804 POSIX_C_SOURCE POSIX_SOURCE POWER
15805 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15806 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15807 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15808 sony sony_news sonyrisc sparc sparclite spectrum
15809 stardent stdc STDC_EXT stratos sun sun3 sun386
15810 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15811 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15812 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15813 sysV68 sysV88 Tek4132 Tek4300 titan
15814 TM3200 TM5400 TM5600
15815 tower tower32 tower32_200 tower32_600 tower32_700
15816 tower32_800 tower32_850 tss
15817 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15818 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15819 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15820 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15821 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15822 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15823 z8000
15824 EOSH
15825 # Maybe put other stuff here too.
15826 cat <<EOSH >>Cppsym.know
15827 $osname
15828 EOSH
15829 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15830 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15831 $cat Cppsym.know > Cppsym.c
15832 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15833 $rm -f Cppsym.a Cppsym.b Cppsym.c
15834 cat <<EOSH > Cppsym
15835 $startsh
15836 if $test \$# -gt 0; then
15837     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15838     if $test -s Cppsym.got; then
15839         $rm -f Cppsym.got
15840         exit 0
15841     fi
15842     $rm -f Cppsym.got
15843     exit 1
15844 else
15845     $tr " " "$trnl" | ./Cppsym.try
15846     exit 0
15847 fi
15848 EOSH
15849 chmod +x Cppsym
15850 $eunicefix Cppsym
15851 cat <<EOSH > Cppsym.try
15852 $startsh
15853 cat <<'EOCP' > try.c
15854 #include <stdio.h>
15855 int main() {
15856 EOCP
15857 $awk \\
15858 EOSH
15859 cat <<'EOSH' >> Cppsym.try
15860 'length($1) > 0 {
15861     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
15862     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
15863     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
15864     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
15865 }'       >> try.c
15866 echo 'return 0;}' >> try.c
15867 EOSH
15868 cat <<EOSH >> Cppsym.try
15869 ccflags="$ccflags"
15870 case "$osname-$gccversion" in
15871 irix-) ccflags="\$ccflags -woff 1178" ;;
15872 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15873 esac
15874 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15875 EOSH
15876 chmod +x Cppsym.try
15877 $eunicefix Cppsym.try
15878 ./Cppsym < Cppsym.know > Cppsym.true
15879 : now check the C compiler for additional symbols
15880 postprocess_cc_v=''
15881 case "$osname" in
15882 aix) postprocess_cc_v="|$tr , ' '" ;;
15883 esac
15884 $cat >ccsym <<EOS
15885 $startsh
15886 $cat >tmp.c <<EOF
15887 extern int foo;
15888 EOF
15889 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15890 do
15891         case "\$i" in
15892         -D*) echo "\$i" | $sed 's/^-D//';;
15893         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15894         esac
15895 done
15896 $rm -f try.c
15897 EOS
15898 postprocess_cc_v=''
15899 chmod +x ccsym
15900 $eunicefix ccsym
15901 ./ccsym > ccsym1.raw
15902 if $test -s ccsym1.raw; then
15903        $sort ccsym1.raw | $uniq >ccsym.raw
15904 else
15905        mv ccsym1.raw ccsym.raw
15906 fi
15907
15908 $awk '/\=/ { print $0; next }
15909         { print $0"=1" }' ccsym.raw >ccsym.list
15910 $awk '/\=/ { print $0; next }
15911         { print $0"=1" }' Cppsym.true >ccsym.true
15912 $comm -13 ccsym.true ccsym.list >ccsym.own
15913 $comm -12 ccsym.true ccsym.list >ccsym.com
15914 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15915 also=''
15916 if $test -z ccsym.raw; then
15917         echo "Your C compiler doesn't seem to define any symbols!" >&4
15918         echo " "
15919         echo "However, your C preprocessor defines the following symbols:"
15920         $cat Cppsym.true
15921         ccsymbols=''
15922         cppsymbols=`$cat Cppsym.true`
15923         cppsymbols=`echo $cppsymbols`
15924         cppccsymbols="$cppsymbols"
15925 else
15926         if $test -s ccsym.com; then
15927                 echo "Your C compiler and pre-processor define these symbols:"
15928                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15929                 also='also '
15930                 symbols='ones'
15931                 cppccsymbols=`$cat ccsym.com`
15932                 cppccsymbols=`echo $cppccsymbols`
15933                 $test "$silent" || sleep 1
15934         fi
15935         if $test -s ccsym.cpp; then
15936                 $test "$also" && echo " "
15937                 echo "Your C pre-processor ${also}defines the following symbols:"
15938                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15939                 also='further '
15940                 cppsymbols=`$cat ccsym.cpp`
15941                 cppsymbols=`echo $cppsymbols`
15942                 $test "$silent" || sleep 1
15943         fi
15944         if $test -s ccsym.own; then
15945                 $test "$also" && echo " "
15946                 echo "Your C compiler ${also}defines the following cpp symbols:"
15947                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15948                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15949                 ccsymbols=`$cat ccsym.own`
15950                 ccsymbols=`echo $ccsymbols`
15951                 $test "$silent" || sleep 1
15952         fi
15953 fi
15954
15955 : see if this is a termio system
15956 val="$undef"
15957 val2="$undef"
15958 val3="$undef"
15959 if $test `./findhdr termios.h`; then
15960         set tcsetattr i_termios
15961         eval $inlibc
15962         val3="$i_termios"
15963 fi
15964 echo " "
15965 case "$val3" in
15966 "$define") echo "You have POSIX termios.h... good!" >&4;;
15967 *) if ./Cppsym pyr; then
15968                 case "`/bin/universe`" in
15969                 ucb) if $test `./findhdr sgtty.h`; then
15970                                 val2="$define"
15971                                 echo "<sgtty.h> found." >&4
15972                         else
15973                                 echo "System is pyramid with BSD universe."
15974                                 echo "<sgtty.h> not found--you could have problems." >&4
15975                         fi;;
15976                 *) if $test `./findhdr termio.h`; then
15977                                 val="$define"
15978                                 echo "<termio.h> found." >&4
15979                         else
15980                                 echo "System is pyramid with USG universe."
15981                                 echo "<termio.h> not found--you could have problems." >&4
15982                         fi;;
15983                 esac
15984         elif ./usg; then
15985                 if $test `./findhdr termio.h`; then
15986                         echo "<termio.h> found." >&4
15987                         val="$define"
15988                 elif $test `./findhdr sgtty.h`; then
15989                         echo "<sgtty.h> found." >&4
15990                         val2="$define"
15991                 else
15992 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15993                 fi
15994         else
15995                 if $test `./findhdr sgtty.h`; then
15996                         echo "<sgtty.h> found." >&4
15997                         val2="$define"
15998                 elif $test `./findhdr termio.h`; then
15999                         echo "<termio.h> found." >&4
16000                         val="$define"
16001                 else
16002 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16003                 fi
16004         fi;;
16005 esac
16006 set i_termio; eval $setvar
16007 val=$val2; set i_sgtty; eval $setvar
16008 val=$val3; set i_termios; eval $setvar
16009
16010 : see if this is a shadow.h system
16011 set shadow.h i_shadow
16012 eval $inhdr
16013
16014 : see if stddef is available
16015 set stddef.h i_stddef
16016 eval $inhdr
16017
16018 : see if this is a sunmath.h system
16019 set sunmath.h i_sunmath
16020 eval $inhdr
16021
16022 : see if sys/access.h is available
16023 set sys/access.h i_sysaccess
16024 eval $inhdr
16025
16026 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16027 set sys/filio.h i_sysfilio
16028 eval $inhdr
16029 echo " "
16030 if $test `./findhdr sys/ioctl.h`; then
16031         val="$define"
16032         echo '<sys/ioctl.h> found.' >&4
16033 else
16034         val="$undef"
16035         if $test $i_sysfilio = "$define"; then
16036             echo '<sys/ioctl.h> NOT found.' >&4
16037         else
16038                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16039                 $test $i_termio = "$define" && xxx="termio.h"
16040                 $test $i_termios = "$define" && xxx="termios.h"
16041 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16042         fi
16043 fi
16044 set i_sysioctl
16045 eval $setvar
16046
16047 : see if socket ioctl defs are in sys/sockio.h
16048 echo " "
16049 xxx=`./findhdr sys/sockio.h`
16050 if $test "$xxx"; then
16051         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16052                 val="$define"
16053                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16054         else
16055                 val="$undef"
16056                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16057         fi
16058 else
16059         val="$undef"
16060         $cat <<EOM
16061 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16062 EOM
16063 fi
16064 set i_syssockio
16065 eval $setvar
16066
16067
16068 : see if this is a syslog.h system
16069 set syslog.h i_syslog
16070 eval $inhdr
16071
16072
16073 : see if this is a sys/mode.h system
16074 set sys/mode.h i_sysmode
16075 eval $inhdr
16076
16077 : see if sys/resource.h has to be included
16078 set sys/resource.h i_sysresrc
16079 eval $inhdr
16080
16081 : see if sys/security.h is available
16082 set sys/security.h i_syssecrt
16083 eval $inhdr
16084
16085 : see if this is a sys/statvfs.h system
16086 set sys/statvfs.h i_sysstatvfs
16087 eval $inhdr
16088
16089 : see if this is a sys/un.h system
16090 set sys/un.h i_sysun
16091 eval $inhdr
16092
16093
16094 : see if this is a sys/utsname.h system
16095 set sys/utsname.h i_sysutsname
16096 eval $inhdr
16097
16098 : see if this is a syswait system
16099 set sys/wait.h i_syswait
16100 eval $inhdr
16101
16102 : see if this is a ustat.h system
16103 set ustat.h i_ustat
16104 eval $inhdr
16105
16106 : see if this is an utime system
16107 set utime.h i_utime
16108 eval $inhdr
16109
16110 : see if this is a values.h system
16111 set values.h i_values
16112 eval $inhdr
16113
16114 : see if this is a vfork system
16115 case "$d_vfork" in
16116 "$define")
16117         set vfork.h i_vfork
16118         eval $inhdr
16119         ;;
16120 *)
16121         i_vfork="$undef"
16122         ;;
16123 esac
16124
16125 : see if gdbm.h is available
16126 set gdbm.h t_gdbm
16127 eval $inhdr
16128 case "$t_gdbm" in
16129 $define)
16130         : see if gdbm_open exists
16131         set gdbm_open d_gdbm_open
16132         eval $inlibc
16133         case "$d_gdbm_open" in
16134         $undef)
16135                 t_gdbm="$undef"
16136                 echo "We won't be including <gdbm.h>"
16137                 ;;
16138         esac
16139         ;;
16140 esac
16141 val="$t_gdbm"
16142 set i_gdbm
16143 eval $setvar
16144
16145 echo " "
16146 echo "Looking for extensions..." >&4
16147 : If we are using the old config.sh, known_extensions may contain
16148 : old or inaccurate or duplicate values.
16149 known_extensions=''
16150 nonxs_extensions=''
16151 : We do not use find because it might not be available.
16152 : We do not just use MANIFEST because the user may have dropped
16153 : some additional extensions into the source tree and expect them
16154 : to be built.
16155
16156 : Function to recursively find available extensions, ignoring DynaLoader
16157 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16158 find_extensions='
16159     for xxx in *; do
16160        case "$xxx" in
16161            DynaLoader|dynaload) ;;
16162            *)
16163            if $test -f $xxx/$xxx.xs; then
16164                known_extensions="$known_extensions $1$xxx";
16165            elif $test -f $xxx/Makefile.PL; then
16166                nonxs_extensions="$nonxs_extensions $1$xxx";
16167            else
16168                if $test -d $xxx -a $# -lt 10; then
16169                    set $1$xxx/ $*;
16170                    cd $xxx;
16171                    eval $find_extensions;
16172                    cd ..;
16173                    shift;
16174                fi;
16175            fi
16176            ;;
16177        esac;
16178     done'
16179 tdir=`pwd`
16180 cd $rsrc/ext
16181 set X
16182 shift
16183 eval $find_extensions
16184 set X $nonxs_extensions
16185 shift
16186 nonxs_extensions="$*"
16187 set X $known_extensions
16188 shift
16189 known_extensions="$*"
16190 cd $tdir
16191
16192 : Now see which are supported on this system.
16193 avail_ext=''
16194 for xxx in $known_extensions ; do
16195         case "$xxx" in
16196         DB_File|db_file)
16197                 case "$i_db" in
16198                 $define) avail_ext="$avail_ext $xxx" ;;
16199                 esac
16200                 ;;
16201         GDBM_File|gdbm_fil)
16202                 case "$i_gdbm" in 
16203                 $define) avail_ext="$avail_ext $xxx" ;;
16204                 esac
16205                 ;;
16206         NDBM_File|ndbm_fil)
16207                 case "$i_ndbm" in
16208                 $define)
16209                     case "$osname-$use64bitint" in
16210                     hpux-define)
16211                         case "$libs" in
16212                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16213                         esac
16214                         ;;
16215                     *) avail_ext="$avail_ext $xxx" ;;
16216                     esac
16217                     ;;
16218                 esac
16219                 ;;
16220         ODBM_File|odbm_fil) 
16221                 case "${i_dbm}${i_rpcsvcdbm}" in
16222                 *"${define}"*)
16223                     case "$osname-$use64bitint" in
16224                     hpux-define)
16225                         case "$libs" in
16226                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16227                         esac
16228                         ;;
16229                     *) avail_ext="$avail_ext $xxx" ;;
16230                     esac
16231                     ;;
16232                 esac
16233                 ;;
16234         POSIX|posix)
16235                 case "$useposix" in
16236                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16237                 esac
16238                 ;;
16239         Opcode|opcode)
16240                 case "$useopcode" in
16241                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16242                 esac
16243                 ;;
16244         Socket|socket)
16245                 case "$d_socket" in 
16246                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16247                 esac
16248                 ;;
16249         Sys/Syslog|sys/syslog)
16250                 : XXX syslog requires socket
16251                 case "$d_socket" in 
16252                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16253                 esac
16254                 ;;
16255         Thread|thread)
16256                 case "$usethreads" in
16257                 true|$define|y)
16258                         case "$useithreads" in
16259                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16260                         esac
16261                 esac
16262                 ;;
16263         IPC/SysV|ipc/sysv)
16264                 : XXX Do we need a useipcsysv variable here
16265                 case "${d_msg}${d_sem}${d_shm}" in 
16266                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16267                 esac
16268                 ;;
16269         *)      avail_ext="$avail_ext $xxx"
16270                 ;;
16271         esac
16272 done
16273
16274 set X $avail_ext
16275 shift
16276 avail_ext="$*"
16277
16278 : Now see which nonxs extensions are supported on this system.
16279 : For now assume all are.
16280 nonxs_ext=''
16281 for xxx in $nonxs_extensions ; do
16282         case "$xxx" in
16283         *)      nonxs_ext="$nonxs_ext $xxx"
16284                 ;;
16285         esac
16286 done
16287
16288 set X $nonxs_ext
16289 shift
16290 nonxs_ext="$*"
16291
16292 case $usedl in
16293 $define)
16294         $cat <<EOM
16295 A number of extensions are supplied with $package.  You may choose to
16296 compile these extensions for dynamic loading (the default), compile
16297 them into the $package executable (static loading), or not include
16298 them at all.  Answer "none" to include no extensions.
16299 Note that DynaLoader is always built and need not be mentioned here.
16300
16301 EOM
16302         case "$dynamic_ext" in
16303         '') dflt="$avail_ext" ;;
16304         *)      dflt="$dynamic_ext"
16305                 # Perhaps we are reusing an old out-of-date config.sh.
16306                 case "$hint" in
16307                 previous)
16308                         if test X"$dynamic_ext" != X"$avail_ext"; then
16309                                 $cat <<EOM
16310 NOTICE:  Your previous config.sh list may be incorrect. 
16311 The extensions now available to you are 
16312         ${avail_ext}
16313 but the default list from your previous config.sh is
16314         ${dynamic_ext} 
16315
16316 EOM
16317                         fi
16318                         ;;
16319                 esac
16320                 ;;
16321         esac
16322         case "$dflt" in
16323         '')     dflt=none;;
16324         esac
16325         rp="What extensions do you wish to load dynamically?"
16326         . ./myread
16327         case "$ans" in
16328         none) dynamic_ext=' ' ;;
16329         *) dynamic_ext="$ans" ;;
16330         esac
16331
16332         case "$static_ext" in
16333         '')
16334                 : Exclude those already listed in dynamic linking
16335                 dflt=''
16336                 for xxx in $avail_ext; do
16337                         case " $dynamic_ext " in
16338                         *" $xxx "*) ;;
16339                         *) dflt="$dflt $xxx" ;;
16340                         esac
16341                 done
16342                 set X $dflt
16343                 shift
16344                 dflt="$*"
16345                 ;;
16346         *)  dflt="$static_ext" 
16347                 ;;
16348         esac
16349
16350         case "$dflt" in
16351         '')     dflt=none;;
16352         esac
16353         rp="What extensions do you wish to load statically?"
16354         . ./myread
16355         case "$ans" in
16356         none) static_ext=' ' ;;
16357         *) static_ext="$ans" ;;
16358         esac
16359         ;;
16360 *)
16361         $cat <<EOM
16362 A number of extensions are supplied with $package.  Answer "none" 
16363 to include no extensions. 
16364 Note that DynaLoader is always built and need not be mentioned here.
16365
16366 EOM
16367         case "$static_ext" in
16368         '') dflt="$avail_ext" ;;
16369         *)      dflt="$static_ext"
16370                 # Perhaps we are reusing an old out-of-date config.sh.
16371                 case "$hint" in
16372                 previous)
16373                         if test X"$static_ext" != X"$avail_ext"; then
16374                                 $cat <<EOM
16375 NOTICE:  Your previous config.sh list may be incorrect. 
16376 The extensions now available to you are 
16377         ${avail_ext}
16378 but the default list from your previous config.sh is
16379         ${static_ext} 
16380
16381 EOM
16382                         fi
16383                         ;;
16384                 esac
16385                 ;;
16386         esac
16387         : Exclude those that are not xs extensions
16388         case "$dflt" in
16389         '')     dflt=none;;
16390         esac
16391         rp="What extensions do you wish to include?"
16392         . ./myread
16393         case "$ans" in
16394         none) static_ext=' ' ;;
16395         *) static_ext="$ans" ;;
16396         esac
16397         ;;
16398 esac
16399
16400 set X $dynamic_ext $static_ext $nonxs_ext
16401 shift
16402 extensions="$*"
16403
16404 : Remove libraries needed only for extensions
16405 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16406 : The exception is SunOS 4.x, which needs them.
16407 case "${osname}X${osvers}" in
16408 sunos*X4*)
16409     perllibs="$libs"
16410     ;;
16411 *) case "$usedl" in
16412     $define|true|[yY]*)
16413             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16414             shift
16415             perllibs="$*"
16416             ;;
16417     *)  perllibs="$libs"
16418             ;;
16419     esac
16420     ;;
16421 esac
16422
16423 : Remove build directory name from cppstdin so it can be used from
16424 : either the present location or the final installed location.
16425 echo " "
16426 : Get out of the UU directory to get correct path name.
16427 cd ..
16428 case "$cppstdin" in
16429 `pwd`/cppstdin)
16430         echo "Stripping down cppstdin path name"
16431         cppstdin=cppstdin
16432         ;;
16433 esac
16434 cd UU
16435
16436 : end of configuration questions
16437 echo " "
16438 echo "End of configuration questions."
16439 echo " "
16440
16441 : back to where it started
16442 if test -d ../UU; then
16443         cd ..
16444 fi
16445
16446 : configuration may be patched via a 'config.over' file
16447 if $test -f config.over; then
16448         echo " "
16449         dflt=y
16450         rp='I see a config.over file.  Do you wish to load it?'
16451         . UU/myread
16452         case "$ans" in
16453         n*) echo "OK, I'll ignore it.";;
16454         *)      . ./config.over
16455                 echo "Configuration override changes have been loaded."
16456                 ;;
16457         esac
16458 fi
16459
16460 : in case they want portability, strip down executable paths
16461 case "$d_portable" in
16462 "$define")
16463         echo " "
16464         echo "Stripping down executable paths..." >&4
16465         for file in $loclist $trylist; do
16466                 eval temp=\$$file
16467                 eval $file=`basename $temp`
16468         done
16469         ;;
16470 esac
16471
16472 : create config.sh file
16473 echo " "
16474 echo "Creating config.sh..." >&4
16475 $spitshell <<EOT >config.sh
16476 $startsh
16477 #
16478 # This file was produced by running the Configure script. It holds all the
16479 # definitions figured out by Configure. Should you modify one of these values,
16480 # do not forget to propagate your changes by running "Configure -der". You may
16481 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16482 #
16483
16484 # Package name      : $package
16485 # Source directory  : $src
16486 # Configuration time: $cf_time
16487 # Configured by     : $cf_by
16488 # Target system     : $myuname
16489
16490 Author='$Author'
16491 Date='$Date'
16492 Header='$Header'
16493 Id='$Id'
16494 Locker='$Locker'
16495 Log='$Log'
16496 Mcc='$Mcc'
16497 RCSfile='$RCSfile'
16498 Revision='$Revision'
16499 Source='$Source'
16500 State='$State'
16501 _a='$_a'
16502 _exe='$_exe'
16503 _o='$_o'
16504 afs='$afs'
16505 afsroot='$afsroot'
16506 alignbytes='$alignbytes'
16507 ansi2knr='$ansi2knr'
16508 aphostname='$aphostname'
16509 api_revision='$api_revision'
16510 api_subversion='$api_subversion'
16511 api_version='$api_version'
16512 api_versionstring='$api_versionstring'
16513 ar='$ar'
16514 archlib='$archlib'
16515 archlibexp='$archlibexp'
16516 archname64='$archname64'
16517 archname='$archname'
16518 archobjs='$archobjs'
16519 awk='$awk'
16520 baserev='$baserev'
16521 bash='$bash'
16522 bin='$bin'
16523 bincompat5005='$bincompat5005'
16524 binexp='$binexp'
16525 bison='$bison'
16526 byacc='$byacc'
16527 byteorder='$byteorder'
16528 c='$c'
16529 castflags='$castflags'
16530 cat='$cat'
16531 cc='$cc'
16532 cccdlflags='$cccdlflags'
16533 ccdlflags='$ccdlflags'
16534 ccflags='$ccflags'
16535 ccflags_uselargefiles='$ccflags_uselargefiles'
16536 ccname='$ccname'
16537 ccsymbols='$ccsymbols'
16538 ccversion='$ccversion'
16539 cf_by='$cf_by'
16540 cf_email='$cf_email'
16541 cf_time='$cf_time'
16542 charsize='$charsize'
16543 chgrp='$chgrp'
16544 chmod='$chmod'
16545 chown='$chown'
16546 clocktype='$clocktype'
16547 comm='$comm'
16548 compress='$compress'
16549 contains='$contains'
16550 cp='$cp'
16551 cpio='$cpio'
16552 cpp='$cpp'
16553 cpp_stuff='$cpp_stuff'
16554 cppccsymbols='$cppccsymbols'
16555 cppflags='$cppflags'
16556 cpplast='$cpplast'
16557 cppminus='$cppminus'
16558 cpprun='$cpprun'
16559 cppstdin='$cppstdin'
16560 cppsymbols='$cppsymbols'
16561 cryptlib='$cryptlib'
16562 csh='$csh'
16563 d_Gconvert='$d_Gconvert'
16564 d_PRIEUldbl='$d_PRIEUldbl'
16565 d_PRIFUldbl='$d_PRIFUldbl'
16566 d_PRIGUldbl='$d_PRIGUldbl'
16567 d_PRIXU64='$d_PRIXU64'
16568 d_PRId64='$d_PRId64'
16569 d_PRIeldbl='$d_PRIeldbl'
16570 d_PRIfldbl='$d_PRIfldbl'
16571 d_PRIgldbl='$d_PRIgldbl'
16572 d_PRIi64='$d_PRIi64'
16573 d_PRIo64='$d_PRIo64'
16574 d_PRIu64='$d_PRIu64'
16575 d_PRIx64='$d_PRIx64'
16576 d_SCNfldbl='$d_SCNfldbl'
16577 d__fwalk='$d__fwalk'
16578 d_access='$d_access'
16579 d_accessx='$d_accessx'
16580 d_alarm='$d_alarm'
16581 d_archlib='$d_archlib'
16582 d_atolf='$d_atolf'
16583 d_atoll='$d_atoll'
16584 d_attribut='$d_attribut'
16585 d_bcmp='$d_bcmp'
16586 d_bcopy='$d_bcopy'
16587 d_bincompat5005='$d_bincompat5005'
16588 d_bsd='$d_bsd'
16589 d_bsdgetpgrp='$d_bsdgetpgrp'
16590 d_bsdsetpgrp='$d_bsdsetpgrp'
16591 d_bzero='$d_bzero'
16592 d_casti32='$d_casti32'
16593 d_castneg='$d_castneg'
16594 d_charvspr='$d_charvspr'
16595 d_chown='$d_chown'
16596 d_chroot='$d_chroot'
16597 d_chsize='$d_chsize'
16598 d_closedir='$d_closedir'
16599 d_cmsghdr_s='$d_cmsghdr_s'
16600 d_const='$d_const'
16601 d_crypt='$d_crypt'
16602 d_csh='$d_csh'
16603 d_cuserid='$d_cuserid'
16604 d_dbl_dig='$d_dbl_dig'
16605 d_dbminitproto='$d_dbminitproto'
16606 d_difftime='$d_difftime'
16607 d_dirnamlen='$d_dirnamlen'
16608 d_dlerror='$d_dlerror'
16609 d_dlopen='$d_dlopen'
16610 d_dlsymun='$d_dlsymun'
16611 d_dosuid='$d_dosuid'
16612 d_drand48proto='$d_drand48proto'
16613 d_dup2='$d_dup2'
16614 d_eaccess='$d_eaccess'
16615 d_endgrent='$d_endgrent'
16616 d_endhent='$d_endhent'
16617 d_endnent='$d_endnent'
16618 d_endpent='$d_endpent'
16619 d_endpwent='$d_endpwent'
16620 d_endsent='$d_endsent'
16621 d_eofnblk='$d_eofnblk'
16622 d_eunice='$d_eunice'
16623 d_fchdir='$d_fchdir'
16624 d_fchmod='$d_fchmod'
16625 d_fchown='$d_fchown'
16626 d_fcntl='$d_fcntl'
16627 d_fcntl_can_lock='$d_fcntl_can_lock'
16628 d_fd_macros='$d_fd_macros'
16629 d_fd_set='$d_fd_set'
16630 d_fds_bits='$d_fds_bits'
16631 d_fgetpos='$d_fgetpos'
16632 d_flexfnam='$d_flexfnam'
16633 d_flock='$d_flock'
16634 d_flockproto='$d_flockproto'
16635 d_fork='$d_fork'
16636 d_fpathconf='$d_fpathconf'
16637 d_fpos64_t='$d_fpos64_t'
16638 d_frexpl='$d_frexpl'
16639 d_fs_data_s='$d_fs_data_s'
16640 d_fseeko='$d_fseeko'
16641 d_fsetpos='$d_fsetpos'
16642 d_fstatfs='$d_fstatfs'
16643 d_fstatvfs='$d_fstatvfs'
16644 d_fsync='$d_fsync'
16645 d_ftello='$d_ftello'
16646 d_ftime='$d_ftime'
16647 d_getcwd='$d_getcwd'
16648 d_getespwnam='$d_getespwnam'
16649 d_getfsstat='$d_getfsstat'
16650 d_getgrent='$d_getgrent'
16651 d_getgrps='$d_getgrps'
16652 d_gethbyaddr='$d_gethbyaddr'
16653 d_gethbyname='$d_gethbyname'
16654 d_gethent='$d_gethent'
16655 d_gethname='$d_gethname'
16656 d_gethostprotos='$d_gethostprotos'
16657 d_getitimer='$d_getitimer'
16658 d_getlogin='$d_getlogin'
16659 d_getmnt='$d_getmnt'
16660 d_getmntent='$d_getmntent'
16661 d_getnbyaddr='$d_getnbyaddr'
16662 d_getnbyname='$d_getnbyname'
16663 d_getnent='$d_getnent'
16664 d_getnetprotos='$d_getnetprotos'
16665 d_getpagsz='$d_getpagsz'
16666 d_getpbyname='$d_getpbyname'
16667 d_getpbynumber='$d_getpbynumber'
16668 d_getpent='$d_getpent'
16669 d_getpgid='$d_getpgid'
16670 d_getpgrp2='$d_getpgrp2'
16671 d_getpgrp='$d_getpgrp'
16672 d_getppid='$d_getppid'
16673 d_getprior='$d_getprior'
16674 d_getprotoprotos='$d_getprotoprotos'
16675 d_getprpwnam='$d_getprpwnam'
16676 d_getpwent='$d_getpwent'
16677 d_getsbyname='$d_getsbyname'
16678 d_getsbyport='$d_getsbyport'
16679 d_getsent='$d_getsent'
16680 d_getservprotos='$d_getservprotos'
16681 d_getspnam='$d_getspnam'
16682 d_gettimeod='$d_gettimeod'
16683 d_gnulibc='$d_gnulibc'
16684 d_grpasswd='$d_grpasswd'
16685 d_hasmntopt='$d_hasmntopt'
16686 d_htonl='$d_htonl'
16687 d_iconv='$d_iconv'
16688 d_index='$d_index'
16689 d_inetaton='$d_inetaton'
16690 d_int64_t='$d_int64_t'
16691 d_isascii='$d_isascii'
16692 d_isnan='$d_isnan'
16693 d_isnanl='$d_isnanl'
16694 d_killpg='$d_killpg'
16695 d_lchown='$d_lchown'
16696 d_ldbl_dig='$d_ldbl_dig'
16697 d_link='$d_link'
16698 d_locconv='$d_locconv'
16699 d_lockf='$d_lockf'
16700 d_longdbl='$d_longdbl'
16701 d_longlong='$d_longlong'
16702 d_lseekproto='$d_lseekproto'
16703 d_lstat='$d_lstat'
16704 d_madvise='$d_madvise'
16705 d_mblen='$d_mblen'
16706 d_mbstowcs='$d_mbstowcs'
16707 d_mbtowc='$d_mbtowc'
16708 d_memchr='$d_memchr'
16709 d_memcmp='$d_memcmp'
16710 d_memcpy='$d_memcpy'
16711 d_memmove='$d_memmove'
16712 d_memset='$d_memset'
16713 d_mkdir='$d_mkdir'
16714 d_mkdtemp='$d_mkdtemp'
16715 d_mkfifo='$d_mkfifo'
16716 d_mkstemp='$d_mkstemp'
16717 d_mkstemps='$d_mkstemps'
16718 d_mktime='$d_mktime'
16719 d_mmap='$d_mmap'
16720 d_modfl='$d_modfl'
16721 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16722 d_mprotect='$d_mprotect'
16723 d_msg='$d_msg'
16724 d_msg_ctrunc='$d_msg_ctrunc'
16725 d_msg_dontroute='$d_msg_dontroute'
16726 d_msg_oob='$d_msg_oob'
16727 d_msg_peek='$d_msg_peek'
16728 d_msg_proxy='$d_msg_proxy'
16729 d_msgctl='$d_msgctl'
16730 d_msgget='$d_msgget'
16731 d_msghdr_s='$d_msghdr_s'
16732 d_msgrcv='$d_msgrcv'
16733 d_msgsnd='$d_msgsnd'
16734 d_msync='$d_msync'
16735 d_munmap='$d_munmap'
16736 d_mymalloc='$d_mymalloc'
16737 d_nice='$d_nice'
16738 d_nv_preserves_uv='$d_nv_preserves_uv'
16739 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16740 d_off64_t='$d_off64_t'
16741 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16742 d_oldpthreads='$d_oldpthreads'
16743 d_oldsock='$d_oldsock'
16744 d_open3='$d_open3'
16745 d_pathconf='$d_pathconf'
16746 d_pause='$d_pause'
16747 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16748 d_phostname='$d_phostname'
16749 d_pipe='$d_pipe'
16750 d_poll='$d_poll'
16751 d_portable='$d_portable'
16752 d_pthread_yield='$d_pthread_yield'
16753 d_pwage='$d_pwage'
16754 d_pwchange='$d_pwchange'
16755 d_pwclass='$d_pwclass'
16756 d_pwcomment='$d_pwcomment'
16757 d_pwexpire='$d_pwexpire'
16758 d_pwgecos='$d_pwgecos'
16759 d_pwpasswd='$d_pwpasswd'
16760 d_pwquota='$d_pwquota'
16761 d_qgcvt='$d_qgcvt'
16762 d_quad='$d_quad'
16763 d_readdir='$d_readdir'
16764 d_readlink='$d_readlink'
16765 d_readv='$d_readv'
16766 d_recvmsg='$d_recvmsg'
16767 d_rename='$d_rename'
16768 d_rewinddir='$d_rewinddir'
16769 d_rmdir='$d_rmdir'
16770 d_safebcpy='$d_safebcpy'
16771 d_safemcpy='$d_safemcpy'
16772 d_sanemcmp='$d_sanemcmp'
16773 d_sbrkproto='$d_sbrkproto'
16774 d_sched_yield='$d_sched_yield'
16775 d_scm_rights='$d_scm_rights'
16776 d_seekdir='$d_seekdir'
16777 d_select='$d_select'
16778 d_sem='$d_sem'
16779 d_semctl='$d_semctl'
16780 d_semctl_semid_ds='$d_semctl_semid_ds'
16781 d_semctl_semun='$d_semctl_semun'
16782 d_semget='$d_semget'
16783 d_semop='$d_semop'
16784 d_sendmsg='$d_sendmsg'
16785 d_setegid='$d_setegid'
16786 d_seteuid='$d_seteuid'
16787 d_setgrent='$d_setgrent'
16788 d_setgrps='$d_setgrps'
16789 d_sethent='$d_sethent'
16790 d_setitimer='$d_setitimer'
16791 d_setlinebuf='$d_setlinebuf'
16792 d_setlocale='$d_setlocale'
16793 d_setnent='$d_setnent'
16794 d_setpent='$d_setpent'
16795 d_setpgid='$d_setpgid'
16796 d_setpgrp2='$d_setpgrp2'
16797 d_setpgrp='$d_setpgrp'
16798 d_setprior='$d_setprior'
16799 d_setproctitle='$d_setproctitle'
16800 d_setpwent='$d_setpwent'
16801 d_setregid='$d_setregid'
16802 d_setresgid='$d_setresgid'
16803 d_setresuid='$d_setresuid'
16804 d_setreuid='$d_setreuid'
16805 d_setrgid='$d_setrgid'
16806 d_setruid='$d_setruid'
16807 d_setsent='$d_setsent'
16808 d_setsid='$d_setsid'
16809 d_setvbuf='$d_setvbuf'
16810 d_sfio='$d_sfio'
16811 d_shm='$d_shm'
16812 d_shmat='$d_shmat'
16813 d_shmatprototype='$d_shmatprototype'
16814 d_shmctl='$d_shmctl'
16815 d_shmdt='$d_shmdt'
16816 d_shmget='$d_shmget'
16817 d_sigaction='$d_sigaction'
16818 d_sigprocmask='$d_sigprocmask'
16819 d_sigsetjmp='$d_sigsetjmp'
16820 d_sockatmark='$d_sockatmark'
16821 d_sockatmarkproto='$d_sockatmarkproto'
16822 d_socket='$d_socket'
16823 d_socklen_t='$d_socklen_t'
16824 d_sockpair='$d_sockpair'
16825 d_socks5_init='$d_socks5_init'
16826 d_sqrtl='$d_sqrtl'
16827 d_sresgproto='$d_sresgproto'
16828 d_sresuproto='$d_sresuproto'
16829 d_statblks='$d_statblks'
16830 d_statfs_f_flags='$d_statfs_f_flags'
16831 d_statfs_s='$d_statfs_s'
16832 d_statvfs='$d_statvfs'
16833 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16834 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16835 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16836 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16837 d_stdio_stream_array='$d_stdio_stream_array'
16838 d_stdiobase='$d_stdiobase'
16839 d_stdstdio='$d_stdstdio'
16840 d_strchr='$d_strchr'
16841 d_strcoll='$d_strcoll'
16842 d_strctcpy='$d_strctcpy'
16843 d_strerrm='$d_strerrm'
16844 d_strerror='$d_strerror'
16845 d_strftime='$d_strftime'
16846 d_strtod='$d_strtod'
16847 d_strtol='$d_strtol'
16848 d_strtold='$d_strtold'
16849 d_strtoll='$d_strtoll'
16850 d_strtoq='$d_strtoq'
16851 d_strtoul='$d_strtoul'
16852 d_strtoull='$d_strtoull'
16853 d_strtouq='$d_strtouq'
16854 d_strxfrm='$d_strxfrm'
16855 d_suidsafe='$d_suidsafe'
16856 d_symlink='$d_symlink'
16857 d_syscall='$d_syscall'
16858 d_syscallproto='$d_syscallproto'
16859 d_sysconf='$d_sysconf'
16860 d_sysernlst='$d_sysernlst'
16861 d_syserrlst='$d_syserrlst'
16862 d_system='$d_system'
16863 d_tcgetpgrp='$d_tcgetpgrp'
16864 d_tcsetpgrp='$d_tcsetpgrp'
16865 d_telldir='$d_telldir'
16866 d_telldirproto='$d_telldirproto'
16867 d_time='$d_time'
16868 d_times='$d_times'
16869 d_truncate='$d_truncate'
16870 d_tzname='$d_tzname'
16871 d_u32align='$d_u32align'
16872 d_ualarm='$d_ualarm'
16873 d_umask='$d_umask'
16874 d_uname='$d_uname'
16875 d_union_semun='$d_union_semun'
16876 d_usleep='$d_usleep'
16877 d_usleepproto='$d_usleepproto'
16878 d_ustat='$d_ustat'
16879 d_vendorarch='$d_vendorarch'
16880 d_vendorbin='$d_vendorbin'
16881 d_vendorlib='$d_vendorlib'
16882 d_vfork='$d_vfork'
16883 d_void_closedir='$d_void_closedir'
16884 d_voidsig='$d_voidsig'
16885 d_voidtty='$d_voidtty'
16886 d_volatile='$d_volatile'
16887 d_vprintf='$d_vprintf'
16888 d_wait4='$d_wait4'
16889 d_waitpid='$d_waitpid'
16890 d_wcstombs='$d_wcstombs'
16891 d_wctomb='$d_wctomb'
16892 d_writev='$d_writev'
16893 d_xenix='$d_xenix'
16894 date='$date'
16895 db_hashtype='$db_hashtype'
16896 db_prefixtype='$db_prefixtype'
16897 db_version_major='$db_version_major'
16898 db_version_minor='$db_version_minor'
16899 db_version_patch='$db_version_patch'
16900 defvoidused='$defvoidused'
16901 direntrytype='$direntrytype'
16902 dlext='$dlext'
16903 dlsrc='$dlsrc'
16904 doublesize='$doublesize'
16905 drand01='$drand01'
16906 dynamic_ext='$dynamic_ext'
16907 eagain='$eagain'
16908 ebcdic='$ebcdic'
16909 echo='$echo'
16910 egrep='$egrep'
16911 emacs='$emacs'
16912 eunicefix='$eunicefix'
16913 exe_ext='$exe_ext'
16914 expr='$expr'
16915 extensions='$extensions'
16916 fflushNULL='$fflushNULL'
16917 fflushall='$fflushall'
16918 find='$find'
16919 firstmakefile='$firstmakefile'
16920 flex='$flex'
16921 fpossize='$fpossize'
16922 fpostype='$fpostype'
16923 freetype='$freetype'
16924 from='$from'
16925 full_ar='$full_ar'
16926 full_csh='$full_csh'
16927 full_sed='$full_sed'
16928 gccosandvers='$gccosandvers'
16929 gccversion='$gccversion'
16930 gidformat='$gidformat'
16931 gidsign='$gidsign'
16932 gidsize='$gidsize'
16933 gidtype='$gidtype'
16934 glibpth='$glibpth'
16935 grep='$grep'
16936 groupcat='$groupcat'
16937 groupstype='$groupstype'
16938 gzip='$gzip'
16939 h_fcntl='$h_fcntl'
16940 h_sysfile='$h_sysfile'
16941 hint='$hint'
16942 hostcat='$hostcat'
16943 i16size='$i16size'
16944 i16type='$i16type'
16945 i32size='$i32size'
16946 i32type='$i32type'
16947 i64size='$i64size'
16948 i64type='$i64type'
16949 i8size='$i8size'
16950 i8type='$i8type'
16951 i_arpainet='$i_arpainet'
16952 i_bsdioctl='$i_bsdioctl'
16953 i_db='$i_db'
16954 i_dbm='$i_dbm'
16955 i_dirent='$i_dirent'
16956 i_dld='$i_dld'
16957 i_dlfcn='$i_dlfcn'
16958 i_fcntl='$i_fcntl'
16959 i_float='$i_float'
16960 i_gdbm='$i_gdbm'
16961 i_grp='$i_grp'
16962 i_iconv='$i_iconv'
16963 i_ieeefp='$i_ieeefp'
16964 i_inttypes='$i_inttypes'
16965 i_libutil='$i_libutil'
16966 i_limits='$i_limits'
16967 i_locale='$i_locale'
16968 i_machcthr='$i_machcthr'
16969 i_malloc='$i_malloc'
16970 i_math='$i_math'
16971 i_memory='$i_memory'
16972 i_mntent='$i_mntent'
16973 i_ndbm='$i_ndbm'
16974 i_netdb='$i_netdb'
16975 i_neterrno='$i_neterrno'
16976 i_netinettcp='$i_netinettcp'
16977 i_niin='$i_niin'
16978 i_poll='$i_poll'
16979 i_prot='$i_prot'
16980 i_pthread='$i_pthread'
16981 i_pwd='$i_pwd'
16982 i_rpcsvcdbm='$i_rpcsvcdbm'
16983 i_sfio='$i_sfio'
16984 i_sgtty='$i_sgtty'
16985 i_shadow='$i_shadow'
16986 i_socks='$i_socks'
16987 i_stdarg='$i_stdarg'
16988 i_stddef='$i_stddef'
16989 i_stdlib='$i_stdlib'
16990 i_string='$i_string'
16991 i_sunmath='$i_sunmath'
16992 i_sysaccess='$i_sysaccess'
16993 i_sysdir='$i_sysdir'
16994 i_sysfile='$i_sysfile'
16995 i_sysfilio='$i_sysfilio'
16996 i_sysin='$i_sysin'
16997 i_sysioctl='$i_sysioctl'
16998 i_syslog='$i_syslog'
16999 i_sysmman='$i_sysmman'
17000 i_sysmode='$i_sysmode'
17001 i_sysmount='$i_sysmount'
17002 i_sysndir='$i_sysndir'
17003 i_sysparam='$i_sysparam'
17004 i_sysresrc='$i_sysresrc'
17005 i_syssecrt='$i_syssecrt'
17006 i_sysselct='$i_sysselct'
17007 i_syssockio='$i_syssockio'
17008 i_sysstat='$i_sysstat'
17009 i_sysstatfs='$i_sysstatfs'
17010 i_sysstatvfs='$i_sysstatvfs'
17011 i_systime='$i_systime'
17012 i_systimek='$i_systimek'
17013 i_systimes='$i_systimes'
17014 i_systypes='$i_systypes'
17015 i_sysuio='$i_sysuio'
17016 i_sysun='$i_sysun'
17017 i_sysutsname='$i_sysutsname'
17018 i_sysvfs='$i_sysvfs'
17019 i_syswait='$i_syswait'
17020 i_termio='$i_termio'
17021 i_termios='$i_termios'
17022 i_time='$i_time'
17023 i_unistd='$i_unistd'
17024 i_ustat='$i_ustat'
17025 i_utime='$i_utime'
17026 i_values='$i_values'
17027 i_varargs='$i_varargs'
17028 i_varhdr='$i_varhdr'
17029 i_vfork='$i_vfork'
17030 ignore_versioned_solibs='$ignore_versioned_solibs'
17031 inc_version_list='$inc_version_list'
17032 inc_version_list_init='$inc_version_list_init'
17033 incpath='$incpath'
17034 inews='$inews'
17035 installarchlib='$installarchlib'
17036 installbin='$installbin'
17037 installman1dir='$installman1dir'
17038 installman3dir='$installman3dir'
17039 installprefix='$installprefix'
17040 installprefixexp='$installprefixexp'
17041 installprivlib='$installprivlib'
17042 installscript='$installscript'
17043 installsitearch='$installsitearch'
17044 installsitebin='$installsitebin'
17045 installsitelib='$installsitelib'
17046 installstyle='$installstyle'
17047 installusrbinperl='$installusrbinperl'
17048 installvendorarch='$installvendorarch'
17049 installvendorbin='$installvendorbin'
17050 installvendorlib='$installvendorlib'
17051 intsize='$intsize'
17052 issymlink='$issymlink'
17053 ivdformat='$ivdformat'
17054 ivsize='$ivsize'
17055 ivtype='$ivtype'
17056 known_extensions='$known_extensions'
17057 ksh='$ksh'
17058 ld='$ld'
17059 lddlflags='$lddlflags'
17060 ldflags='$ldflags'
17061 ldflags_uselargefiles='$ldflags_uselargefiles'
17062 ldlibpthname='$ldlibpthname'
17063 less='$less'
17064 lib_ext='$lib_ext'
17065 libc='$libc'
17066 libperl='$libperl'
17067 libpth='$libpth'
17068 libs='$libs'
17069 libsdirs='$libsdirs'
17070 libsfiles='$libsfiles'
17071 libsfound='$libsfound'
17072 libspath='$libspath'
17073 libswanted='$libswanted'
17074 libswanted_uselargefiles='$libswanted_uselargefiles'
17075 line='$line'
17076 lint='$lint'
17077 lkflags='$lkflags'
17078 ln='$ln'
17079 lns='$lns'
17080 locincpth='$locincpth'
17081 loclibpth='$loclibpth'
17082 longdblsize='$longdblsize'
17083 longlongsize='$longlongsize'
17084 longsize='$longsize'
17085 lp='$lp'
17086 lpr='$lpr'
17087 ls='$ls'
17088 lseeksize='$lseeksize'
17089 lseektype='$lseektype'
17090 mail='$mail'
17091 mailx='$mailx'
17092 make='$make'
17093 make_set_make='$make_set_make'
17094 mallocobj='$mallocobj'
17095 mallocsrc='$mallocsrc'
17096 malloctype='$malloctype'
17097 man1dir='$man1dir'
17098 man1direxp='$man1direxp'
17099 man1ext='$man1ext'
17100 man3dir='$man3dir'
17101 man3direxp='$man3direxp'
17102 man3ext='$man3ext'
17103 mips_type='$mips_type'
17104 mkdir='$mkdir'
17105 mmaptype='$mmaptype'
17106 modetype='$modetype'
17107 more='$more'
17108 multiarch='$multiarch'
17109 mv='$mv'
17110 myarchname='$myarchname'
17111 mydomain='$mydomain'
17112 myhostname='$myhostname'
17113 myuname='$myuname'
17114 n='$n'
17115 need_va_copy='$need_va_copy'
17116 netdb_hlen_type='$netdb_hlen_type'
17117 netdb_host_type='$netdb_host_type'
17118 netdb_name_type='$netdb_name_type'
17119 netdb_net_type='$netdb_net_type'
17120 nm='$nm'
17121 nm_opt='$nm_opt'
17122 nm_so_opt='$nm_so_opt'
17123 nonxs_ext='$nonxs_ext'
17124 nroff='$nroff'
17125 nvEUformat='$nvEUformat'
17126 nvFUformat='$nvFUformat'
17127 nvGUformat='$nvGUformat'
17128 nveformat='$nveformat'
17129 nvfformat='$nvfformat'
17130 nvgformat='$nvgformat'
17131 nvsize='$nvsize'
17132 nvtype='$nvtype'
17133 o_nonblock='$o_nonblock'
17134 obj_ext='$obj_ext'
17135 old_pthread_create_joinable='$old_pthread_create_joinable'
17136 optimize='$optimize'
17137 orderlib='$orderlib'
17138 osname='$osname'
17139 osvers='$osvers'
17140 otherlibdirs='$otherlibdirs'
17141 package='$package'
17142 pager='$pager'
17143 passcat='$passcat'
17144 patchlevel='$patchlevel'
17145 path_sep='$path_sep'
17146 perl5='$perl5'
17147 perl='$perl'
17148 perl_patchlevel='$perl_patchlevel'
17149 perladmin='$perladmin'
17150 perllibs='$perllibs'
17151 perlpath='$perlpath'
17152 pg='$pg'
17153 phostname='$phostname'
17154 pidtype='$pidtype'
17155 plibpth='$plibpth'
17156 pm_apiversion='$pm_apiversion'
17157 pmake='$pmake'
17158 pr='$pr'
17159 prefix='$prefix'
17160 prefixexp='$prefixexp'
17161 privlib='$privlib'
17162 privlibexp='$privlibexp'
17163 prototype='$prototype'
17164 ptrsize='$ptrsize'
17165 quadkind='$quadkind'
17166 quadtype='$quadtype'
17167 randbits='$randbits'
17168 randfunc='$randfunc'
17169 randseedtype='$randseedtype'
17170 ranlib='$ranlib'
17171 rd_nodata='$rd_nodata'
17172 revision='$revision'
17173 rm='$rm'
17174 rmail='$rmail'
17175 run='$run'
17176 runnm='$runnm'
17177 sPRIEUldbl='$sPRIEUldbl'
17178 sPRIFUldbl='$sPRIFUldbl'
17179 sPRIGUldbl='$sPRIGUldbl'
17180 sPRIXU64='$sPRIXU64'
17181 sPRId64='$sPRId64'
17182 sPRIeldbl='$sPRIeldbl'
17183 sPRIfldbl='$sPRIfldbl'
17184 sPRIgldbl='$sPRIgldbl'
17185 sPRIi64='$sPRIi64'
17186 sPRIo64='$sPRIo64'
17187 sPRIu64='$sPRIu64'
17188 sPRIx64='$sPRIx64'
17189 sSCNfldbl='$sSCNfldbl'
17190 sched_yield='$sched_yield'
17191 scriptdir='$scriptdir'
17192 scriptdirexp='$scriptdirexp'
17193 sed='$sed'
17194 seedfunc='$seedfunc'
17195 selectminbits='$selectminbits'
17196 selecttype='$selecttype'
17197 sendmail='$sendmail'
17198 sh='$sh'
17199 shar='$shar'
17200 sharpbang='$sharpbang'
17201 shmattype='$shmattype'
17202 shortsize='$shortsize'
17203 shrpenv='$shrpenv'
17204 shsharp='$shsharp'
17205 sig_count='$sig_count'
17206 sig_name='$sig_name'
17207 sig_name_init='$sig_name_init'
17208 sig_num='$sig_num'
17209 sig_num_init='$sig_num_init'
17210 sig_size='$sig_size'
17211 signal_t='$signal_t'
17212 sitearch='$sitearch'
17213 sitearchexp='$sitearchexp'
17214 sitebin='$sitebin'
17215 sitebinexp='$sitebinexp'
17216 sitelib='$sitelib'
17217 sitelib_stem='$sitelib_stem'
17218 sitelibexp='$sitelibexp'
17219 siteprefix='$siteprefix'
17220 siteprefixexp='$siteprefixexp'
17221 sizesize='$sizesize'
17222 sizetype='$sizetype'
17223 sleep='$sleep'
17224 smail='$smail'
17225 so='$so'
17226 sockethdr='$sockethdr'
17227 socketlib='$socketlib'
17228 socksizetype='$socksizetype'
17229 sort='$sort'
17230 spackage='$spackage'
17231 spitshell='$spitshell'
17232 src='$src'
17233 ssizetype='$ssizetype'
17234 startperl='$startperl'
17235 startsh='$startsh'
17236 static_ext='$static_ext'
17237 stdchar='$stdchar'
17238 stdio_base='$stdio_base'
17239 stdio_bufsiz='$stdio_bufsiz'
17240 stdio_cnt='$stdio_cnt'
17241 stdio_filbuf='$stdio_filbuf'
17242 stdio_ptr='$stdio_ptr'
17243 stdio_stream_array='$stdio_stream_array'
17244 strings='$strings'
17245 submit='$submit'
17246 subversion='$subversion'
17247 sysman='$sysman'
17248 tail='$tail'
17249 tar='$tar'
17250 targetarch='$targetarch'
17251 tbl='$tbl'
17252 tee='$tee'
17253 test='$test'
17254 timeincl='$timeincl'
17255 timetype='$timetype'
17256 to='$to'
17257 touch='$touch'
17258 tr='$tr'
17259 trnl='$trnl'
17260 troff='$troff'
17261 u16size='$u16size'
17262 u16type='$u16type'
17263 u32size='$u32size'
17264 u32type='$u32type'
17265 u64size='$u64size'
17266 u64type='$u64type'
17267 u8size='$u8size'
17268 u8type='$u8type'
17269 uidformat='$uidformat'
17270 uidsign='$uidsign'
17271 uidsize='$uidsize'
17272 uidtype='$uidtype'
17273 uname='$uname'
17274 uniq='$uniq'
17275 uquadtype='$uquadtype'
17276 use5005threads='$use5005threads'
17277 use64bitall='$use64bitall'
17278 use64bitint='$use64bitint'
17279 usecrosscompile='$usecrosscompile'
17280 usedl='$usedl'
17281 useithreads='$useithreads'
17282 uselargefiles='$uselargefiles'
17283 uselongdouble='$uselongdouble'
17284 usemorebits='$usemorebits'
17285 usemultiplicity='$usemultiplicity'
17286 usemymalloc='$usemymalloc'
17287 usenm='$usenm'
17288 useopcode='$useopcode'
17289 useperlio='$useperlio'
17290 useposix='$useposix'
17291 usereentrant='$usereentrant'
17292 usesfio='$usesfio'
17293 useshrplib='$useshrplib'
17294 usesocks='$usesocks'
17295 usethreads='$usethreads'
17296 usevendorprefix='$usevendorprefix'
17297 usevfork='$usevfork'
17298 usrinc='$usrinc'
17299 uuname='$uuname'
17300 uvXUformat='$uvXUformat'
17301 uvoformat='$uvoformat'
17302 uvsize='$uvsize'
17303 uvtype='$uvtype'
17304 uvuformat='$uvuformat'
17305 uvxformat='$uvxformat'
17306 vendorarch='$vendorarch'
17307 vendorarchexp='$vendorarchexp'
17308 vendorbin='$vendorbin'
17309 vendorbinexp='$vendorbinexp'
17310 vendorlib='$vendorlib'
17311 vendorlib_stem='$vendorlib_stem'
17312 vendorlibexp='$vendorlibexp'
17313 vendorprefix='$vendorprefix'
17314 vendorprefixexp='$vendorprefixexp'
17315 version='$version'
17316 versiononly='$versiononly'
17317 vi='$vi'
17318 voidflags='$voidflags'
17319 xlibpth='$xlibpth'
17320 xs_apiversion='$xs_apiversion'
17321 yacc='$yacc'
17322 yaccflags='$yaccflags'
17323 zcat='$zcat'
17324 zip='$zip'
17325 EOT
17326
17327 : Add in command line options if available
17328 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17329
17330 : add special variables
17331 $test -f $src/patchlevel.h && \
17332 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17333 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17334 echo "PERL_CONFIG_SH=true" >>config.sh
17335
17336 : propagate old symbols
17337 if $test -f UU/config.sh; then
17338         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17339         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17340         $sort | $uniq -u >UU/oldsyms
17341         set X `cat UU/oldsyms`
17342         shift
17343         case $# in
17344         0) ;;
17345         *)
17346                 cat <<EOM
17347 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17348 EOM
17349                 echo "# Variables propagated from previous config.sh file." >>config.sh
17350                 for sym in `cat UU/oldsyms`; do
17351                         echo "    Propagating $hint variable "'$'"$sym..."
17352                         eval 'tmp="$'"${sym}"'"'
17353                         echo "$tmp" | \
17354                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17355                 done
17356                 ;;
17357         esac
17358 fi
17359
17360 : Finish up by extracting the .SH files
17361 case "$alldone" in
17362 exit)
17363         $rm -rf UU
17364         echo "Extraction done."
17365         exit 0
17366         ;;
17367 cont)
17368         ;;
17369 '')
17370         dflt=''
17371         nostick=true
17372         $cat <<EOM
17373
17374 If you'd like to make any changes to the config.sh file before I begin
17375 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17376
17377 EOM
17378         rp="Press return or use a shell escape to edit config.sh:"
17379         . UU/myread
17380         nostick=''
17381         case "$ans" in
17382         '') ;;
17383         *) : in case they cannot read
17384                 sh 1>&4 -c "$ans";;
17385         esac
17386         ;;
17387 esac
17388
17389 : if this fails, just run all the .SH files by hand
17390 . ./config.sh
17391
17392 echo " "
17393 exec 1>&4
17394 pwd=`pwd`
17395 . ./UU/extract
17396 cd $pwd
17397
17398 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17399         dflt=y
17400         case "$silent" in
17401         true) ;;
17402         *)
17403                 $cat <<EOM
17404
17405 Now you need to generate make dependencies by running "$make depend".
17406 You might prefer to run it in background: "$make depend > makedepend.out &"
17407 It can take a while, so you might not want to run it right now.
17408
17409 EOM
17410                 ;;
17411         esac
17412         rp="Run $make depend now?"
17413         . UU/myread
17414         case "$ans" in
17415         y*)
17416                 $make depend && echo "Now you must run '$make'."
17417                 ;;
17418         *)
17419                 echo "You must run '$make depend' then '$make'."
17420                 ;;
17421         esac
17422 elif test -f [Mm]akefile; then
17423         echo " "
17424         echo "Now you must run a $make."
17425 else
17426         echo "Configure done."
17427 fi
17428
17429 if $test -f Policy.sh; then
17430     $cat <<EOM
17431
17432 If you compile $package on a different machine or from a different object
17433 directory, copy the Policy.sh file from this object directory to the
17434 new one before you run Configure -- this will help you with most of
17435 the policy defaults.
17436
17437 EOM
17438 fi
17439 if $test -f config.msg; then
17440     echo "Hmm.  I also noted the following information while running:"
17441     echo " "
17442     $cat config.msg >&4
17443     $rm -f config.msg
17444 fi
17445 $rm -f kit*isdone ark*isdone
17446 $rm -rf UU
17447
17448 : End of Configure
17449