should POSIX.xs use XSRETURN_UNDEF in sigaction?
[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 05:07:22 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         case "$libs" in
12103         *-lsfio*)
12104                 echo "Removing unneeded -lsfio from library list" >&4
12105                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12106                 shift
12107                 libs="$*"
12108                 echo "libs = $libs" >&4
12109                 ;;
12110         esac
12111 ;;
12112 esac
12113
12114
12115 : see if shmctl exists
12116 set shmctl d_shmctl
12117 eval $inlibc
12118
12119 : see if shmget exists
12120 set shmget d_shmget
12121 eval $inlibc
12122
12123 : see if shmat exists
12124 set shmat d_shmat
12125 eval $inlibc
12126 : see what shmat returns
12127 case "$d_shmat" in
12128 "$define")
12129         $cat >shmat.c <<'END'
12130 #include <sys/shm.h>
12131 void *shmat();
12132 END
12133         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12134                 shmattype='void *'
12135         else
12136                 shmattype='char *'
12137         fi
12138         echo "and it returns ($shmattype)." >&4
12139         : see if a prototype for shmat is available
12140         xxx=`./findhdr sys/shm.h`
12141         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12142         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12143                 val="$define"
12144         else
12145                 val="$undef"
12146         fi
12147         $rm -f shmat.[co]
12148         ;;
12149 *)
12150         val="$undef"
12151         ;;
12152 esac
12153 set d_shmatprototype
12154 eval $setvar
12155
12156 : see if shmdt exists
12157 set shmdt d_shmdt
12158 eval $inlibc
12159
12160 : see how much of the 'shm*(2)' library is present.
12161 h_shm=true
12162 echo " "
12163 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12164 *"$undef"*) h_shm=false;;
12165 esac
12166 case "$osname" in
12167 freebsd)
12168     case "`ipcs 2>&1`" in
12169     "SVID shared memory"*"not configured"*)
12170         echo "Your $osname does not have the shm*(2) configured." >&4
12171         h_shm=false
12172         val="$undef"
12173         set shmctl d_shmctl
12174         evat $setvar
12175         set shmget d_shmget
12176         evat $setvar
12177         set shmat d_shmat
12178         evat $setvar
12179         set shmdt d_shmdt
12180         evat $setvar
12181         ;;
12182     esac
12183     ;;
12184 esac
12185 : we could also check for sys/ipc.h ...
12186 if $h_shm && $test `./findhdr sys/shm.h`; then
12187         echo "You have the full shm*(2) library." >&4
12188         val="$define"
12189 else
12190         echo "You don't have the full shm*(2) library." >&4
12191         val="$undef"
12192 fi
12193 set d_shm
12194 eval $setvar
12195
12196 echo " "
12197 : see if we have sigaction
12198 if set sigaction val -f d_sigaction; eval $csym; $val; then
12199         echo 'sigaction() found.' >&4
12200         $cat > try.c <<'EOP'
12201 #include <stdio.h>
12202 #include <sys/types.h>
12203 #include <signal.h>
12204 int main()
12205 {
12206     struct sigaction act, oact;
12207     act.sa_flags = 0;
12208     oact.sa_handler = 0;
12209     /* so that act and oact are used */
12210     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12211 }
12212 EOP
12213         set try
12214         if eval $compile_ok; then
12215                 val="$define"
12216         else
12217                 echo "But you don't seem to have a useable struct sigaction." >&4
12218                 val="$undef"
12219         fi
12220 else
12221         echo 'sigaction NOT found.' >&4
12222         val="$undef"
12223 fi
12224 set d_sigaction; eval $setvar
12225 $rm -f try try$_o try.c
12226
12227 : see if sigprocmask exists
12228 set sigprocmask d_sigprocmask
12229 eval $inlibc
12230
12231 : see if sigsetjmp exists
12232 echo " "
12233 case "$d_sigsetjmp" in
12234 '')
12235         $cat >try.c <<'EOP'
12236 #include <setjmp.h>
12237 sigjmp_buf env;
12238 int set = 1;
12239 int main()
12240 {
12241         if (sigsetjmp(env,1))
12242                 exit(set);
12243         set = 0;
12244         siglongjmp(env, 1);
12245         exit(1);
12246 }
12247 EOP
12248         set try
12249         if eval $compile; then
12250                 if $run ./try >/dev/null 2>&1; then
12251                         echo "POSIX sigsetjmp found." >&4
12252                         val="$define"
12253                 else
12254                         $cat >&4 <<EOM
12255 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12256 I'll ignore them.
12257 EOM
12258                         val="$undef"
12259                 fi
12260         else
12261                 echo "sigsetjmp not found." >&4
12262                 val="$undef"
12263         fi
12264         ;;
12265 *) val="$d_sigsetjmp"
12266         case "$d_sigsetjmp" in
12267         $define) echo "POSIX sigsetjmp found." >&4;;
12268         $undef) echo "sigsetjmp not found." >&4;;
12269         esac
12270         ;;
12271 esac
12272 set d_sigsetjmp
12273 eval $setvar
12274 $rm -f try.c try
12275
12276 : see if sockatmark exists
12277 set sockatmark d_sockatmark
12278 eval $inlibc
12279
12280 : see if prototype for sockatmark is available
12281 echo " "
12282 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12283 eval $hasproto
12284
12285 : see if socks5_init exists
12286 set socks5_init d_socks5_init
12287 eval $inlibc
12288
12289 : see if prototype for setresgid is available
12290 echo " "
12291 set d_sresgproto setresgid $i_unistd unistd.h
12292 eval $hasproto
12293
12294 : see if prototype for setresuid is available
12295 echo " "
12296 set d_sresuproto setresuid $i_unistd unistd.h
12297 eval $hasproto
12298
12299 : see if sys/stat.h is available
12300 set sys/stat.h i_sysstat
12301 eval $inhdr
12302
12303
12304 : see if stat knows about block sizes
12305 echo " "
12306 echo "Checking to see if your struct stat has st_blocks field..." >&4
12307 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12308 eval $hasfield
12309
12310
12311 : see if this is a sys/vfs.h system
12312 set sys/vfs.h i_sysvfs
12313 eval $inhdr
12314
12315
12316 : see if this is a sys/statfs.h system
12317 set sys/statfs.h i_sysstatfs
12318 eval $inhdr
12319
12320
12321 echo " "
12322 echo "Checking to see if your system supports struct statfs..." >&4
12323 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
12324 eval $hasstruct
12325 case "$d_statfs_s" in
12326 "$define")      echo "Yes, it does."   ;;
12327 *)              echo "No, it doesn't." ;;
12328 esac
12329
12330
12331
12332 : see if struct statfs knows about f_flags
12333 case "$d_statfs_s" in
12334 define) 
12335         echo " "
12336         echo "Checking to see if your struct statfs has f_flags field..." >&4
12337         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
12338         eval $hasfield
12339         ;;
12340 *)      val="$undef"
12341         set d_statfs_f_flags
12342         eval $setvar
12343         ;;
12344 esac
12345 case "$d_statfs_f_flags" in
12346 "$define")      echo "Yes, it does."   ;;
12347 *)              echo "No, it doesn't." ;;
12348 esac
12349
12350 : see if _ptr and _cnt from stdio act std
12351 echo " "
12352
12353 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12354         echo "(Looks like you have stdio.h from BSD.)"
12355         case "$stdio_ptr" in
12356         '') stdio_ptr='((fp)->_p)'
12357                 ptr_lval=$define
12358                 ;;
12359         *)      ptr_lval=$d_stdio_ptr_lval;;
12360         esac
12361         case "$stdio_cnt" in
12362         '') stdio_cnt='((fp)->_r)'
12363                 cnt_lval=$define
12364                 ;;
12365         *)      cnt_lval=$d_stdio_cnt_lval;;
12366         esac
12367         case "$stdio_base" in
12368         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12369         esac
12370         case "$stdio_bufsiz" in
12371         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12372         esac
12373 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12374         echo "(Looks like you have stdio.h from Linux.)"
12375         case "$stdio_ptr" in
12376         '') stdio_ptr='((fp)->_IO_read_ptr)'
12377                 ptr_lval=$define
12378                 ;;
12379         *)      ptr_lval=$d_stdio_ptr_lval;;
12380         esac
12381         case "$stdio_cnt" in
12382         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12383                 cnt_lval=$undef
12384                 ;;
12385         *)      cnt_lval=$d_stdio_cnt_lval;;
12386         esac
12387         case "$stdio_base" in
12388         '') stdio_base='((fp)->_IO_read_base)';;
12389         esac
12390         case "$stdio_bufsiz" in
12391         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12392         esac
12393 else
12394         case "$stdio_ptr" in
12395         '') stdio_ptr='((fp)->_ptr)'
12396                 ptr_lval=$define
12397                 ;;
12398         *)      ptr_lval=$d_stdio_ptr_lval;;
12399         esac
12400         case "$stdio_cnt" in
12401         '') stdio_cnt='((fp)->_cnt)'
12402                 cnt_lval=$define
12403                 ;;
12404         *)      cnt_lval=$d_stdio_cnt_lval;;
12405         esac
12406         case "$stdio_base" in
12407         '') stdio_base='((fp)->_base)';;
12408         esac
12409         case "$stdio_bufsiz" in
12410         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12411         esac
12412 fi
12413
12414 : test whether _ptr and _cnt really work
12415 echo "Checking how std your stdio is..." >&4
12416 $cat >try.c <<EOP
12417 #include <stdio.h>
12418 #define FILE_ptr(fp)    $stdio_ptr
12419 #define FILE_cnt(fp)    $stdio_cnt
12420 int main() {
12421         FILE *fp = fopen("try.c", "r");
12422         char c = getc(fp);
12423         if (
12424                 18 <= FILE_cnt(fp) &&
12425                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12426         )
12427                 exit(0);
12428         exit(1);
12429 }
12430 EOP
12431 val="$undef"
12432 set try
12433 if eval $compile && $to try.c; then
12434         if $run ./try; then
12435                 echo "Your stdio acts pretty std."
12436                 val="$define"
12437         else
12438                 echo "Your stdio isn't very std."
12439         fi
12440 else
12441         echo "Your stdio doesn't appear very std."
12442 fi
12443 $rm -f try.c try
12444 set d_stdstdio
12445 eval $setvar
12446
12447 : Can _ptr be used as an lvalue?
12448 case "$d_stdstdio$ptr_lval" in
12449 $define$define) val=$define ;;
12450 *) val=$undef ;;
12451 esac
12452 set d_stdio_ptr_lval
12453 eval $setvar
12454
12455 : Can _cnt be used as an lvalue?
12456 case "$d_stdstdio$cnt_lval" in
12457 $define$define) val=$define ;;
12458 *) val=$undef ;;
12459 esac
12460 set d_stdio_cnt_lval
12461 eval $setvar
12462
12463
12464 : test whether setting _ptr sets _cnt as a side effect
12465 d_stdio_ptr_lval_sets_cnt="$undef"
12466 d_stdio_ptr_lval_nochange_cnt="$undef"
12467 case "$d_stdio_ptr_lval$d_stdstdio" in
12468 $define$define)
12469         echo "Checking to see what happens if we set the stdio ptr..." >&4
12470 $cat >try.c <<EOP
12471 #include <stdio.h>
12472 /* Can we scream? */
12473 /* Eat dust sed :-) */
12474 /* In the buffer space, no one can hear you scream. */
12475 #define FILE_ptr(fp)    $stdio_ptr
12476 #define FILE_cnt(fp)    $stdio_cnt
12477 #include <sys/types.h>
12478 int main() {
12479         FILE *fp = fopen("try.c", "r");
12480         int c;
12481         char *ptr;
12482         size_t cnt;
12483         if (!fp) {
12484             puts("Fail even to read");
12485             exit(1);
12486         }
12487         c = getc(fp); /* Read away the first # */
12488         if (c == EOF) {
12489             puts("Fail even to read");
12490             exit(1);
12491         }
12492         if (!(
12493                 18 <= FILE_cnt(fp) &&
12494                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12495         )) {
12496                 puts("Fail even to read");
12497                 exit (1);
12498         }
12499         ptr = (char*) FILE_ptr(fp);
12500         cnt = (size_t)FILE_cnt(fp);
12501
12502         FILE_ptr(fp) += 42;
12503
12504         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12505                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12506                 exit (1);
12507         }
12508         if (FILE_cnt(fp) <= 20) {
12509                 printf ("Fail (<20 chars to test)");
12510                 exit (1);
12511         }
12512         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12513                 puts("Fail compare");
12514                 exit (1);
12515         }
12516         if (cnt == FILE_cnt(fp)) {
12517                 puts("Pass_unchanged");
12518                 exit (0);
12519         }       
12520         if (FILE_cnt(fp) == (cnt - 42)) {
12521                 puts("Pass_changed");
12522                 exit (0);
12523         }
12524         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12525         return 1;
12526
12527 }
12528 EOP
12529         set try
12530         if eval $compile && $to try.c; then
12531                 case `$run ./try` in
12532                 Pass_changed)
12533                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12534                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12535                 Pass_unchanged)
12536                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12537                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12538                 Fail*)
12539                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12540                 *)
12541                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12542         esac
12543         else
12544                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12545         fi
12546         $rm -f try.c try
12547         ;;
12548 esac
12549
12550 : see if _base is also standard
12551 val="$undef"
12552 case "$d_stdstdio" in
12553 $define)
12554         $cat >try.c <<EOP
12555 #include <stdio.h>
12556 #define FILE_base(fp)   $stdio_base
12557 #define FILE_bufsiz(fp) $stdio_bufsiz
12558 int main() {
12559         FILE *fp = fopen("try.c", "r");
12560         char c = getc(fp);
12561         if (
12562                 19 <= FILE_bufsiz(fp) &&
12563                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12564         )
12565                 exit(0);
12566         exit(1);
12567 }
12568 EOP
12569         set try
12570         if eval $compile && $to try.c; then
12571                 if $run ./try; then
12572                         echo "And its _base field acts std."
12573                         val="$define"
12574                 else
12575                         echo "But its _base field isn't std."
12576                 fi
12577         else
12578                 echo "However, it seems to be lacking the _base field."
12579         fi
12580         $rm -f try.c try
12581         ;;
12582 esac
12583 set d_stdiobase
12584 eval $setvar
12585
12586 $cat >&4 <<EOM
12587 Checking how to access stdio streams by file descriptor number...
12588 EOM
12589 case "$stdio_stream_array" in
12590 '')     $cat >try.c <<EOCP
12591 #include <stdio.h>
12592 int main() {
12593   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12594     printf("yes\n");
12595 }
12596 EOCP
12597         for s in _iob __iob __sF
12598         do
12599                 set try -DSTDIO_STREAM_ARRAY=$s
12600                 if eval $compile; then
12601                         case "`$run ./try`" in
12602                         yes)    stdio_stream_array=$s; break ;;
12603                         esac
12604                 fi
12605         done
12606         $rm -f try.* try$exe_ext
12607 esac
12608 case "$stdio_stream_array" in
12609 '')     $cat >&4 <<EOM
12610 I can't figure out how to access stdio streams by file descriptor number.
12611 EOM
12612         d_stdio_stream_array="$undef"
12613         ;;
12614 *)      $cat >&4 <<EOM
12615 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12616 EOM
12617         d_stdio_stream_array="$define"
12618         ;;
12619 esac
12620
12621 : see if strcoll exists
12622 set strcoll d_strcoll
12623 eval $inlibc
12624
12625 : check for structure copying
12626 echo " "
12627 echo "Checking to see if your C compiler can copy structs..." >&4
12628 $cat >try.c <<'EOCP'
12629 int main()
12630 {
12631         struct blurfl {
12632                 int dyick;
12633         } foo, bar;
12634
12635         foo = bar;
12636 }
12637 EOCP
12638 if $cc -c try.c >/dev/null 2>&1 ; then
12639         val="$define"
12640         echo "Yup, it can."
12641 else
12642         val="$undef"
12643         echo "Nope, it can't."
12644 fi
12645 set d_strctcpy
12646 eval $setvar
12647 $rm -f try.*
12648
12649 : see if strerror and/or sys_errlist[] exist
12650 echo " "
12651 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12652     if set strerror val -f d_strerror; eval $csym; $val; then
12653                 echo 'strerror() found.' >&4
12654                 d_strerror="$define"
12655                 d_strerrm='strerror(e)'
12656                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12657                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12658                         d_syserrlst="$define"
12659                 else
12660                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12661                         d_syserrlst="$undef"
12662                 fi
12663     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12664                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12665                 echo 'strerror() found in string header.' >&4
12666                 d_strerror="$define"
12667                 d_strerrm='strerror(e)'
12668                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12669                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12670                                 d_syserrlst="$define"
12671                 else
12672                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12673                         d_syserrlst="$undef"
12674                 fi
12675     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12676                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12677                 d_strerror="$undef"
12678                 d_syserrlst="$define"
12679                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12680     else
12681                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12682                 d_strerror="$undef"
12683                 d_syserrlst="$undef"
12684                 d_strerrm='"unknown"'
12685     fi
12686 fi
12687
12688 : see if strftime exists
12689 set strftime d_strftime
12690 eval $inlibc
12691
12692 : see if strtod exists
12693 set strtod d_strtod
12694 eval $inlibc
12695
12696 : see if strtol exists
12697 set strtol d_strtol
12698 eval $inlibc
12699
12700 : see if strtold exists
12701 set strtold d_strtold
12702 eval $inlibc
12703
12704 : see if strtoll exists
12705 set strtoll d_strtoll
12706 eval $inlibc
12707
12708 case "$d_longlong-$d_strtoll" in
12709 "$define-$define")
12710         $cat <<EOM
12711 Checking whether your strtoll() works okay...
12712 EOM
12713         $cat >try.c <<'EOCP'
12714 #include <errno.h>
12715 #ifdef __hpux
12716 #define strtoll __strtoll
12717 #endif
12718 #ifdef __EMX__
12719 #define strtoll _strtoll
12720 #endif
12721 #include <stdio.h>
12722 extern long long int strtoll(char *s, char **, int); 
12723 static int bad = 0;
12724 int check(char *s, long long ell, int een) {
12725         long long gll;
12726         errno = 0;
12727         gll = strtoll(s, 0, 10);
12728         if (!((gll == ell) && (errno == een)))
12729                 bad++;
12730 }
12731 int main() {
12732         check(" 1",                                      1LL, 0);
12733         check(" 0",                                      0LL, 0);
12734         check("-1",                                     -1LL, 0);
12735         check("-9223372036854775808", -9223372036854775808LL, 0);
12736         check("-9223372036854775808", -9223372036854775808LL, 0);
12737         check(" 9223372036854775807",  9223372036854775807LL, 0);
12738         check("-9223372036854775808", -9223372036854775808LL, 0);
12739         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12740         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12741         if (!bad)
12742                 printf("ok\n");
12743 }
12744 EOCP
12745         set try
12746         if eval $compile; then
12747                 yyy=`$run ./try`
12748                 case "$yyy" in
12749                 ok) echo "Your strtoll() seems to be working okay." ;;
12750                 *) cat <<EOM >&4
12751 Your strtoll() doesn't seem to be working okay.
12752 EOM
12753                    d_strtoll="$undef"
12754                    ;;
12755                 esac
12756         else
12757                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12758                 d_strtoll="$undef"
12759         fi
12760         ;;
12761 esac
12762
12763 : see if strtoq exists
12764 set strtoq d_strtoq
12765 eval $inlibc
12766
12767 : see if strtoul exists
12768 set strtoul d_strtoul
12769 eval $inlibc
12770
12771 case "$d_strtoul" in
12772 "$define")
12773         $cat <<EOM
12774 Checking whether your strtoul() works okay...
12775 EOM
12776         $cat >try.c <<'EOCP'
12777 #include <errno.h>
12778 #include <stdio.h>
12779 extern unsigned long int strtoul(char *s, char **, int); 
12780 static int bad = 0;
12781 void check(char *s, unsigned long eul, int een) {
12782         unsigned long gul;
12783         errno = 0;
12784         gul = strtoul(s, 0, 10);
12785         if (!((gul == eul) && (errno == een)))
12786                 bad++;
12787 }
12788 int main() {
12789         check(" 1", 1L, 0);
12790         check(" 0", 0L, 0);
12791 EOCP
12792         case "$longsize" in
12793         8)
12794             $cat >>try.c <<'EOCP'
12795         check("18446744073709551615", 18446744073709551615UL, 0);
12796         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12797 #if 0 /* strtoul() for /^-/ strings is undefined. */
12798         check("-1", 18446744073709551615UL, 0);
12799         check("-18446744073709551614", 2, 0);
12800         check("-18446744073709551615", 1, 0);
12801         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12802         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12803 #endif
12804 EOCP
12805                 ;;
12806         4)
12807                     $cat >>try.c <<'EOCP'
12808         check("4294967295", 4294967295UL, 0);
12809         check("4294967296", 4294967295UL, ERANGE);
12810 #if 0 /* strtoul() for /^-/ strings is undefined. */
12811         check("-1", 4294967295UL, 0);
12812         check("-4294967294", 2, 0);
12813         check("-4294967295", 1, 0);
12814         check("-4294967296", 4294967295UL, ERANGE);
12815         check("-4294967297", 4294967295UL, ERANGE);
12816 #endif
12817 EOCP
12818                 ;;
12819         *)
12820 : Should we write these tests to be more portable by sprintf-ing
12821 : ~0 and then manipulating that char string as input for strtol?
12822                 ;;
12823         esac
12824         $cat >>try.c <<'EOCP'
12825         if (!bad)
12826                 printf("ok\n");
12827         return 0;
12828 }
12829 EOCP
12830         set try
12831         if eval $compile; then
12832                 case "`$run ./try`" in
12833                 ok) echo "Your strtoul() seems to be working okay." ;;
12834                 *) cat <<EOM >&4
12835 Your strtoul() doesn't seem to be working okay.
12836 EOM
12837                    d_strtoul="$undef"
12838                    ;;
12839                 esac
12840         fi
12841         ;;
12842 esac
12843
12844 : see if strtoull exists
12845 set strtoull d_strtoull
12846 eval $inlibc
12847
12848 case "$d_longlong-$d_strtoull" in
12849 "$define-$define")
12850         $cat <<EOM
12851 Checking whether your strtoull() works okay...
12852 EOM
12853         $cat >try.c <<'EOCP'
12854 #include <errno.h>
12855 #ifdef __hpux
12856 #define strtoull __strtoull
12857 #endif
12858 #include <stdio.h>
12859 extern unsigned long long int strtoull(char *s, char **, int); 
12860 static int bad = 0;
12861 int check(char *s, long long eull, int een) {
12862         long long gull;
12863         errno = 0;
12864         gull = strtoull(s, 0, 10);
12865         if (!((gull == eull) && (errno == een)))
12866                 bad++;
12867 }
12868 int main() {
12869         check(" 1",                                        1LL, 0);
12870         check(" 0",                                        0LL, 0);
12871         check("18446744073709551615",  18446744073709551615ULL, 0);
12872         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12873 #if 0 /* strtoull() for /^-/ strings is undefined. */
12874         check("-1",                    18446744073709551615ULL, 0);
12875         check("-18446744073709551614",                     2LL, 0);
12876         check("-18446744073709551615",                     1LL, 0);
12877         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12878         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12879 #endif
12880         if (!bad)
12881                 printf("ok\n");
12882 }
12883 EOCP
12884         set try
12885         if eval $compile; then
12886                 case "`$run ./try`" in
12887                 ok) echo "Your strtoull() seems to be working okay." ;;
12888                 *) cat <<EOM >&4
12889 Your strtoull() doesn't seem to be working okay.
12890 EOM
12891                    d_strtoull="$undef"
12892                    ;;
12893                 esac
12894         fi
12895         ;;
12896 esac
12897
12898 : see if strtouq exists
12899 set strtouq d_strtouq
12900 eval $inlibc
12901
12902 case "$d_strtouq" in
12903 "$define")
12904         $cat <<EOM
12905 Checking whether your strtouq() works okay...
12906 EOM
12907         $cat >try.c <<'EOCP'
12908 #include <errno.h>
12909 #include <stdio.h>
12910 extern unsigned long long int strtouq(char *s, char **, int); 
12911 static int bad = 0;
12912 void check(char *s, unsigned long long eull, int een) {
12913         unsigned long long gull;
12914         errno = 0;
12915         gull = strtouq(s, 0, 10);
12916         if (!((gull == eull) && (errno == een)))
12917                 bad++;
12918 }
12919 int main() {
12920         check(" 1",                                        1LL, 0);
12921         check(" 0",                                        0LL, 0);
12922         check("18446744073709551615",  18446744073709551615ULL, 0);
12923         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12924 #if 0 /* strtouq() for /^-/ strings is undefined. */
12925         check("-1",                    18446744073709551615ULL, 0);
12926         check("-18446744073709551614",                     2LL, 0);
12927         check("-18446744073709551615",                     1LL, 0);
12928         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12929         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12930 #endif
12931         if (!bad)
12932                 printf("ok\n");
12933         return 0;
12934 }
12935 EOCP
12936         set try
12937         if eval $compile; then
12938                 case "`$run ./try`" in
12939                 ok) echo "Your strtouq() seems to be working okay." ;;
12940                 *) cat <<EOM >&4
12941 Your strtouq() doesn't seem to be working okay.
12942 EOM
12943                    d_strtouq="$undef"
12944                    ;;
12945                 esac
12946         fi
12947         ;;
12948 esac
12949
12950 : see if strxfrm exists
12951 set strxfrm d_strxfrm
12952 eval $inlibc
12953
12954 : see if symlink exists
12955 set symlink d_symlink
12956 eval $inlibc
12957
12958 : see if syscall exists
12959 set syscall d_syscall
12960 eval $inlibc
12961
12962 : see if prototype for syscall is available
12963 echo " "
12964 set d_syscallproto syscall $i_unistd unistd.h
12965 eval $hasproto
12966
12967 : see if sysconf exists
12968 set sysconf d_sysconf
12969 eval $inlibc
12970
12971 : see if system exists
12972 set system d_system
12973 eval $inlibc
12974
12975 : see if tcgetpgrp exists
12976 set tcgetpgrp d_tcgetpgrp
12977 eval $inlibc
12978
12979 : see if tcsetpgrp exists
12980 set tcsetpgrp d_tcsetpgrp
12981 eval $inlibc
12982
12983 : see if prototype for telldir is available
12984 echo " "
12985 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12986 eval $hasproto
12987
12988 : see if this is a sys/times.h system
12989 set sys/times.h i_systimes
12990 eval $inhdr
12991
12992 : see if times exists
12993 echo " "
12994 if set times val -f d_times; eval $csym; $val; then
12995         echo 'times() found.' >&4
12996         d_times="$define"
12997         inc=''
12998         case "$i_systimes" in
12999         "$define") inc='sys/times.h';;
13000         esac
13001         rp="What is the type returned by times() on this system?"
13002         set clock_t clocktype long stdio.h sys/types.h $inc
13003         eval $typedef_ask
13004 else
13005         echo 'times() NOT found, hope that will do.' >&4
13006         d_times="$undef"
13007         clocktype='int'
13008 fi
13009
13010 : see if truncate exists
13011 set truncate d_truncate
13012 eval $inlibc
13013
13014 : see if tzname[] exists
13015 echo " "
13016 if set tzname val -a d_tzname; eval $csym; $val; then
13017         val="$define"
13018         echo 'tzname[] found.' >&4
13019 else
13020         val="$undef"
13021         echo 'tzname[] NOT found.' >&4
13022 fi
13023 set d_tzname
13024 eval $setvar
13025
13026 case "$osname" in
13027 next|rhapsody|darwin) multiarch="$define" ;;
13028 esac
13029 case "$multiarch" in
13030 ''|[nN]*) multiarch="$undef" ;;
13031 esac
13032
13033 : check for ordering of bytes in a long
13034 echo " "
13035 case "$usecrosscompile$multiarch" in
13036 *$define*)
13037         $cat <<EOM
13038 You seem to be either cross-compiling or doing a multiarchitecture build,
13039 skipping the byteorder check.
13040
13041 EOM
13042         byteorder='ffff'
13043         ;;
13044 *)
13045         case "$byteorder" in
13046         '')
13047                 $cat <<'EOM'
13048 In the following, larger digits indicate more significance.  A big-endian
13049 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13050 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13051 machines may have weird orders like 3412.  A Cray will report 87654321,
13052 an Alpha will report 12345678. If the test program works the default is
13053 probably right.
13054 I'm now running the test program...
13055 EOM
13056                 $cat >try.c <<'EOCP'
13057 #include <stdio.h>
13058 int main()
13059 {
13060         int i;
13061         union {
13062                 unsigned long l;
13063                 char c[sizeof(long)];
13064         } u;
13065
13066         if (sizeof(long) > 4)
13067                 u.l = (0x08070605L << 32) | 0x04030201L;
13068         else
13069                 u.l = 0x04030201L;
13070         for (i = 0; i < sizeof(long); i++)
13071                 printf("%c", u.c[i]+'0');
13072         printf("\n");
13073         exit(0);
13074 }
13075 EOCP
13076                 xxx_prompt=y
13077                 set try
13078                 if eval $compile && ./try > /dev/null; then
13079                         dflt=`$run ./try`
13080                         case "$dflt" in
13081                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13082                                 echo "(The test program ran ok.)"
13083                                 echo "byteorder=$dflt"
13084                                 xxx_prompt=n
13085                         ;;
13086                         ????|????????) echo "(The test program ran ok.)" ;;
13087                         *) echo "(The test program didn't run right for some reason.)" ;;
13088                         esac
13089                 else
13090                         dflt='4321'
13091                         cat <<'EOM'
13092 (I can't seem to compile the test program.  Guessing big-endian...)
13093 EOM
13094                 fi
13095                 case "$xxx_prompt" in
13096                 y)
13097                         rp="What is the order of bytes in a long?"
13098                         . ./myread
13099                         byteorder="$ans"
13100                         ;;
13101                 *)      byteorder=$dflt
13102                         ;;
13103                 esac
13104                 ;;
13105         esac
13106         $rm -f try.c try
13107         ;;
13108 esac
13109
13110
13111 $cat <<EOM
13112
13113 Checking to see whether you can access character data unalignedly...
13114 EOM
13115 $cat >try.c <<EOCP
13116 #include <stdio.h>
13117 #define U32 $u32type
13118 #define BYTEORDER $byteorder
13119 int main() {
13120 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13121     U8 buf[] = "\0\0\0\1\0\0\0\0";
13122     U32 *up;
13123     int i;
13124
13125     if (sizeof(U32) != 4) {
13126         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13127         exit(1);
13128     }
13129
13130     fflush(stdout);
13131
13132     for (i = 0; i < 4; i++) {
13133         up = (U32*)(buf + i);
13134         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13135                (*up == 1 << (8*(3-i)))  /* little-endian */
13136               )
13137            )
13138         {
13139             printf("read failed (%x)\n", *up);
13140             exit(2);
13141         }
13142     }
13143
13144     /* write test */
13145     for (i = 0; i < 4; i++) {
13146         up = (U32*)(buf + i);
13147         *up = 0xBeef;
13148         if (*up != 0xBeef) {
13149             printf("write failed (%x)\n", *up);
13150             exit(3);
13151         }
13152     }
13153
13154     exit(0);
13155 #else
13156     printf("1\n");
13157     exit(1);
13158 #endif
13159     return 0;
13160 }
13161 EOCP
13162 set try
13163 if eval $compile_ok; then
13164         echo "(Testing for character data alignment may dump core.)" >&4
13165         $run ./try 2>&1 >/dev/null
13166         case "$?" in
13167         0)      cat >&4 <<EOM
13168 You can access character data pretty unalignedly.
13169 EOM
13170                 d_u32align="$undef"
13171                 ;;
13172         *)      cat >&4 <<EOM
13173 It seems that you must access character data in an aligned manner.
13174 EOM
13175                 d_u32align="$define"
13176                 ;;
13177         esac
13178         $rm -f core core.try.* try.core
13179 else
13180         rp='Can you access character data at unaligned addresses?'
13181         dflt='n'
13182         . ./myread
13183         case "$ans" in
13184         [yY]*)  d_u32align="$undef"  ;;
13185         *)      d_u32align="$define" ;;
13186         esac
13187 fi
13188
13189 : see if ualarm exists
13190 set ualarm d_ualarm
13191 eval $inlibc
13192
13193 : see if umask exists
13194 set umask d_umask
13195 eval $inlibc
13196
13197 : see if usleep exists
13198 set usleep d_usleep
13199 eval $inlibc
13200
13201 : see if prototype for usleep is available
13202 echo " "
13203 set d_usleepproto usleep $i_unistd unistd.h
13204 eval $hasproto
13205
13206 : see if ustat exists
13207 set ustat d_ustat
13208 eval $inlibc
13209
13210 : backward compatibility for d_hvfork
13211 if test X$d_hvfork != X; then
13212         d_vfork="$d_hvfork"
13213         d_hvfork=''
13214 fi
13215 : see if there is a vfork
13216 val=''
13217 set vfork val
13218 eval $inlibc
13219
13220 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13221 : perl on Solaris 2.x, and probably elsewhere.
13222 case "$val" in
13223 $define)
13224         echo " "
13225         case "$usevfork" in
13226         false) dflt='n';;
13227         *) dflt='y';;
13228         esac
13229         cat <<'EOM'
13230  
13231 Perl can only use a vfork() that doesn't suffer from strict
13232 restrictions on calling functions or modifying global data in
13233 the child.  For example, glibc-2.1 contains such a vfork()
13234 that is unsuitable.  If your system provides a proper fork()
13235 call, chances are that you do NOT want perl to use vfork().
13236
13237 EOM
13238         rp="Do you still want to use vfork()?"
13239         . ./myread
13240         case "$ans" in
13241         y|Y) ;;
13242         *)
13243                 echo "Ok, we won't use vfork()."
13244                 val="$undef"
13245                 ;;
13246         esac
13247         ;;
13248 esac
13249 set d_vfork
13250 eval $setvar
13251 case "$d_vfork" in
13252 $define) usevfork='true';;
13253 *) usevfork='false';;
13254 esac
13255
13256 : see if this is an sysdir system
13257 set sys/dir.h i_sysdir
13258 eval $inhdr
13259
13260 : see if this is an sysndir system
13261 set sys/ndir.h i_sysndir
13262 eval $inhdr
13263
13264 : see if closedir exists
13265 set closedir d_closedir
13266 eval $inlibc
13267
13268 case "$d_closedir" in
13269 "$define")
13270         echo " "
13271         echo "Checking whether closedir() returns a status..." >&4
13272         cat > try.c <<EOM
13273 #$i_dirent I_DIRENT             /**/
13274 #$i_sysdir I_SYS_DIR            /**/
13275 #$i_sysndir I_SYS_NDIR          /**/
13276 #$i_systypes I_SYS_TYPES        /**/
13277
13278 #if defined(I_SYS_TYPES)
13279 #include <sys/types.h>
13280 #endif
13281 #if defined(I_DIRENT)
13282 #include <dirent.h>
13283 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13284 #include <sys/dir.h>
13285 #endif
13286 #else
13287 #ifdef I_SYS_NDIR
13288 #include <sys/ndir.h>
13289 #else
13290 #ifdef I_SYS_DIR
13291 #ifdef hp9000s500
13292 #include <ndir.h>       /* may be wrong in the future */
13293 #else
13294 #include <sys/dir.h>
13295 #endif
13296 #endif
13297 #endif
13298 #endif 
13299 int main() { return closedir(opendir(".")); }
13300 EOM
13301         set try
13302         if eval $compile_ok; then
13303                 if $run ./try > /dev/null 2>&1 ; then
13304                         echo "Yes, it does."
13305                         val="$undef"
13306                 else
13307                         echo "No, it doesn't."
13308                         val="$define"
13309                 fi
13310         else
13311                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13312                 val="$define"
13313         fi
13314         ;;
13315 *)
13316         val="$undef";
13317         ;;
13318 esac
13319 set d_void_closedir
13320 eval $setvar
13321 $rm -f try try.*
13322 : see if there is a wait4
13323 set wait4 d_wait4
13324 eval $inlibc
13325
13326 : see if waitpid exists
13327 set waitpid d_waitpid
13328 eval $inlibc
13329
13330 : see if wcstombs exists
13331 set wcstombs d_wcstombs
13332 eval $inlibc
13333
13334 : see if wctomb exists
13335 set wctomb d_wctomb
13336 eval $inlibc
13337
13338 : see if writev exists
13339 set writev d_writev
13340 eval $inlibc
13341
13342 : preserve RCS keywords in files with variable substitution, grrr
13343 Date='$Date'
13344 Id='$Id'
13345 Log='$Log'
13346 RCSfile='$RCSfile'
13347 Revision='$Revision'
13348
13349 : check for alignment requirements
13350 echo " "
13351 case "$usecrosscompile$multiarch" in
13352 *$define*)
13353         $cat <<EOM
13354 You seem to be either cross-compiling or doing a multiarchitecture build,
13355 skipping the memory alignment check.
13356
13357 EOM
13358         case "$alignbytes" in
13359         '') alignbytes=8 ;;
13360         esac
13361         ;;
13362 *)
13363         case "$alignbytes" in
13364         '') echo "Checking alignment constraints..." >&4
13365                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13366                         $cat >try.c <<'EOCP'
13367 typedef long double NV;
13368 EOCP
13369                 else
13370                         $cat >try.c <<'EOCP'
13371 typedef double NV;
13372 EOCP
13373                 fi
13374                 $cat >>try.c <<'EOCP'
13375 #include <stdio.h>
13376 struct foobar {
13377         char foo;
13378         NV bar;
13379 } try_algn;
13380 int main()
13381 {
13382     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13383     return(0);
13384 }
13385 EOCP
13386                 set try
13387                 if eval $compile_ok; then
13388                         dflt=`$run ./try`
13389                 else
13390                         dflt='8'
13391                         echo "(I can't seem to compile the test program...)"
13392                 fi
13393                 ;;
13394         *) dflt="$alignbytes"
13395                 ;;
13396         esac
13397         rp="Doubles must be aligned on a how-many-byte boundary?"
13398         . ./myread
13399         alignbytes="$ans"
13400         $rm -f try.c try
13401         ;;
13402 esac
13403
13404
13405 : set the base revision
13406 baserev=5.0
13407
13408 : how do we catenate cpp tokens here?
13409 echo " "
13410 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13411 $cat >cpp_stuff.c <<'EOCP'
13412 #define RCAT(a,b)a/**/b
13413 #define ACAT(a,b)a ## b
13414 RCAT(Rei,ser)
13415 ACAT(Cir,cus)
13416 EOCP
13417 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13418 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13419         echo "Oh!  Smells like ANSI's been here." >&4
13420         echo "We can catify or stringify, separately or together!"
13421         cpp_stuff=42
13422 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13423         echo "Ah, yes!  The good old days!" >&4
13424         echo "However, in the good old days we don't know how to stringify and"
13425         echo "catify at the same time."
13426         cpp_stuff=1
13427 else
13428         $cat >&4 <<EOM
13429 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13430 to have to edit the values of CAT[2-5] in config.h...
13431 EOM
13432         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13433 fi
13434 $rm -f cpp_stuff.*
13435
13436 : see if this is a db.h system
13437 set db.h i_db
13438 eval $inhdr
13439
13440 case "$i_db" in
13441 $define)
13442         : Check db version.
13443         echo " "
13444         echo "Checking Berkeley DB version ..." >&4
13445         $cat >try.c <<EOCP
13446 #$d_const HASCONST
13447 #ifndef HASCONST
13448 #define const
13449 #endif
13450 #include <sys/types.h>
13451 #include <stdio.h>
13452 #include <db.h>
13453 int main(int argc, char *argv[])
13454 {
13455 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13456     int Major, Minor, Patch ;
13457     unsigned long Version ;
13458     (void)db_version(&Major, &Minor, &Patch) ;
13459     if (argc == 2) {
13460         printf("%d %d %d %d %d %d\n",
13461                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13462                Major, Minor, Patch);
13463         exit(0);
13464     }
13465     printf("You have Berkeley DB Version 2 or greater.\n");
13466
13467     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13468                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13469     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13470                 Major, Minor, Patch) ;
13471
13472     /* check that db.h & libdb are compatible */
13473     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13474         printf("db.h and libdb are incompatible.\n") ;
13475         exit(3);        
13476     }
13477
13478     printf("db.h and libdb are compatible.\n") ;
13479
13480     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13481                 + DB_VERSION_PATCH ;
13482
13483     /* needs to be >= 2.3.4 */
13484     if (Version < 2003004) {
13485     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13486         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13487         exit(2);        
13488     }
13489
13490     exit(0);
13491 #else
13492 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13493     if (argc == 2) {
13494         printf("1 0 0\n");
13495         exit(0);
13496     }
13497     printf("You have Berkeley DB Version 1.\n");
13498     exit(0);    /* DB version < 2: the coast is clear. */
13499 #else
13500     exit(1);    /* <db.h> not Berkeley DB? */
13501 #endif
13502 #endif
13503 }
13504 EOCP
13505         set try
13506         if eval $compile_ok && $run ./try; then
13507                 echo 'Looks OK.' >&4
13508                 set `$run ./try 1`
13509                 db_version_major=$1
13510                 db_version_minor=$2
13511                 db_version_patch=$3
13512         else
13513                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13514                 i_db=$undef
13515                 case " $libs " in
13516                 *"-ldb "*)
13517                         : Remove db from list of libraries to use
13518                         echo "Removing unusable -ldb from library list" >&4
13519                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13520                         shift
13521                         libs="$*"
13522                         echo "libs = $libs" >&4
13523                         ;;
13524                 esac
13525         fi
13526         $rm -f try.*
13527         ;;
13528 esac
13529
13530 case "$i_db" in
13531 define)
13532         : Check the return type needed for hash 
13533         echo " "
13534         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13535         $cat >try.c <<EOCP
13536 #$d_const HASCONST
13537 #ifndef HASCONST
13538 #define const
13539 #endif
13540 #include <sys/types.h>
13541 #include <db.h>
13542
13543 #ifndef DB_VERSION_MAJOR
13544 u_int32_t hash_cb (ptr, size)
13545 const void *ptr;
13546 size_t size;
13547 {
13548 }
13549 HASHINFO info;
13550 int main()
13551 {
13552         info.hash = hash_cb;
13553 }
13554 #endif
13555 EOCP
13556         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13557                 if $contains warning try.out >>/dev/null 2>&1 ; then
13558                         db_hashtype='int'
13559                 else
13560                         db_hashtype='u_int32_t'
13561                 fi
13562         else
13563                 : XXX Maybe we should just give up here.
13564                 db_hashtype=u_int32_t
13565                 $cat try.out >&4
13566                 echo "Help:  I can't seem to compile the db test program." >&4
13567                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13568         fi
13569         $rm -f try.*
13570         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13571         ;;
13572 *)      db_hashtype=u_int32_t
13573         ;;
13574 esac
13575 case "$i_db" in
13576 define)
13577         : Check the return type needed for prefix 
13578         echo " "
13579         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13580         cat >try.c <<EOCP
13581 #$d_const HASCONST
13582 #ifndef HASCONST
13583 #define const
13584 #endif
13585 #include <sys/types.h>
13586 #include <db.h>
13587
13588 #ifndef DB_VERSION_MAJOR
13589 size_t prefix_cb (key1, key2)
13590 const DBT *key1;
13591 const DBT *key2;
13592 {
13593 }
13594 BTREEINFO info;
13595 int main()
13596 {
13597         info.prefix = prefix_cb;
13598 }
13599 #endif
13600 EOCP
13601         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13602                 if $contains warning try.out >>/dev/null 2>&1 ; then
13603                         db_prefixtype='int'
13604                 else
13605                         db_prefixtype='size_t'
13606                 fi
13607         else
13608                 db_prefixtype='size_t'
13609                 : XXX Maybe we should just give up here.
13610                 $cat try.out >&4
13611                 echo "Help:  I can't seem to compile the db test program." >&4
13612                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13613         fi
13614         $rm -f try.*
13615         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13616         ;;
13617 *)      db_prefixtype='size_t'
13618         ;;
13619 esac
13620
13621
13622 : How can we generate normalized random numbers ?
13623 echo " "
13624 echo "Looking for a random number function..." >&4
13625 case "$randfunc" in
13626 '')
13627         if set drand48 val -f; eval $csym; $val; then
13628                 dflt="drand48"
13629                 echo "Good, found drand48()." >&4
13630         elif set random val -f; eval $csym; $val; then
13631                 dflt="random"
13632                 echo "OK, found random()." >&4
13633         else
13634                 dflt="rand"
13635                 echo "Yick, looks like I have to use rand()." >&4
13636         fi
13637         echo " "
13638         ;;
13639 *)
13640         dflt="$randfunc"
13641         ;;
13642 esac
13643 cont=true
13644
13645 case "$ccflags" in
13646 *-Dmy_rand=*|*-Dmy_srand=*)
13647         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13648         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13649         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13650         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13651         ;;
13652 esac
13653
13654 while $test "$cont"; do
13655         rp="Use which function to generate random numbers?"
13656         . ./myread
13657         if $test "$ans" = "$dflt"; then
13658                 : null
13659         else
13660                 randbits=''
13661         fi
13662         randfunc="$ans"
13663         if set $ans val -f; eval $csym; $val; then
13664                 cont=''
13665         else
13666                 dflt=y
13667                 rp="I cannot find function $ans. Use that name anyway?"
13668                 . ./myread
13669                 dflt=rand
13670                 case "$ans" in
13671                         [yY]*) cont='';;
13672                 esac
13673         fi
13674         case "$cont" in
13675         '')
13676                 case "$randfunc" in
13677                 drand48)
13678                         drand01="drand48()"
13679                         seedfunc="srand48"
13680                         randbits=48
13681                         randseedtype=long
13682                         ;;
13683                 rand|random)
13684                         case "$randbits" in
13685                         '')
13686 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13687                                 $cat >try.c <<EOCP
13688 #$i_unistd I_UNISTD
13689 #$i_stdlib I_STDLIB
13690 #include <stdio.h>
13691 #ifdef I_UNISTD
13692 #  include <unistd.h>
13693 #endif
13694 #ifdef I_STDLIB
13695 #  include <stdlib.h>
13696 #endif
13697 int main()
13698 {
13699         register int i;
13700         register unsigned long tmp;
13701         register unsigned long max = 0L;
13702
13703         for (i = 1000; i; i--) {
13704                 tmp = (unsigned long) $randfunc();
13705                 if (tmp > max) max = tmp;
13706         }
13707         for (i = 0; max; i++)
13708                 max /= 2;
13709         printf("%d\n",i);
13710 }
13711 EOCP
13712                                 set try
13713                                 if eval $compile_ok; then
13714                                         dflt=`try`
13715                                 else
13716                                         dflt='?'
13717                                         echo "(I can't seem to compile the test program...)"
13718                                 fi
13719                                 ;;
13720                         *)
13721                                 dflt="$randbits"
13722                                 ;;
13723                         esac
13724                         rp="How many bits does your $randfunc() function produce?"
13725                         . ./myread
13726                         randbits="$ans"
13727                         $rm -f try.c try
13728                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13729                         seedfunc="s$randfunc"
13730                         randseedtype=unsigned
13731                         ;;
13732                 *)
13733                         dflt="31"
13734                         rp="How many bits does your $randfunc() function produce?"
13735                         . ./myread
13736                         randbits="$ans"
13737                         seedfunc="s$randfunc"
13738                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13739                         if set $seedfunc val -f; eval $csym; $val; then
13740                                 echo "(Using $seedfunc() to seed random generator)"
13741                         else
13742                                 echo "(Warning: no $seedfunc() to seed random generator)"
13743                                 seedfunc=rand
13744                         fi
13745                         randseedtype=unsigned
13746                         ;;
13747                 esac
13748                 ;;
13749         esac
13750 done
13751
13752 echo " "
13753 echo "Determining whether or not we are on an EBCDIC system..." >&4
13754 $cat >try.c <<'EOM'
13755 int main()
13756 {
13757   if ('M'==0xd4) return 0;
13758   return 1;
13759 }
13760 EOM
13761
13762 val=$undef
13763 set try
13764 if eval $compile_ok; then
13765         if $run ./try; then
13766                 echo "You seem to speak EBCDIC." >&4
13767                 val="$define"
13768         else
13769                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13770         fi
13771 else
13772         echo "I'm unable to compile the test program." >&4
13773         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13774 fi
13775 $rm -f try try.*
13776 set ebcdic
13777 eval $setvar
13778
13779 echo " "
13780 $cat >&4 <<EOM
13781 Checking how to flush all pending stdio output...
13782 EOM
13783 # I only know how to find the first 32 possibly open files on SunOS.
13784 # See also hints/sunos_4_1.sh and util.c  --AD
13785 case "$osname" in
13786 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13787 esac
13788 $cat >>try.c <<EOCP
13789 #include <stdio.h>
13790 #$i_unistd I_UNISTD
13791 #ifdef I_UNISTD
13792 # include <unistd.h>
13793 #endif
13794 #$d_sysconf HAS_SYSCONF
13795 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13796 #ifdef HAS_STDIO_STREAM_ARRAY
13797 # define STDIO_STREAM_ARRAY $stdio_stream_array
13798 #endif
13799 int main() {
13800   FILE* p;
13801   unlink("try.out");
13802   p = fopen("try.out", "w");
13803 #ifdef TRY_FPUTC
13804   fputc('x', p);
13805 #else
13806 # ifdef TRY_FPRINTF
13807   fprintf(p, "x");
13808 # endif
13809 #endif
13810 #ifdef TRY_FFLUSH_NULL
13811   fflush(NULL);
13812 #endif
13813 #ifdef TRY_FFLUSH_ALL
13814   {
13815     long open_max = -1;
13816 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13817     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13818 # else
13819 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13820     open_max = sysconf(_SC_OPEN_MAX);
13821 #  else
13822 #   ifdef FOPEN_MAX
13823     open_max = FOPEN_MAX;
13824 #   else
13825 #    ifdef OPEN_MAX
13826     open_max = OPEN_MAX;
13827 #    else
13828 #     ifdef _NFILE
13829     open_max = _NFILE;
13830 #     endif
13831 #    endif
13832 #   endif
13833 #  endif
13834 # endif 
13835 # ifdef HAS_STDIO_STREAM_ARRAY
13836     if (open_max > 0) {
13837       long i;
13838       for (i = 0; i < open_max; i++)
13839             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13840                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13841                 STDIO_STREAM_ARRAY[i]._flag)
13842                 fflush(&STDIO_STREAM_ARRAY[i]);
13843     }   
13844   }
13845 # endif
13846 #endif
13847   _exit(42);
13848 }
13849 EOCP
13850 : first we have to find out how _not_ to flush
13851 $to try.c
13852 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13853     output=''
13854     set try -DTRY_FPUTC
13855     if eval $compile; then
13856             $run ./try 2>/dev/null
13857             code="$?"
13858             $from try.out
13859             if $test ! -s try.out -a "X$code" = X42; then
13860                 output=-DTRY_FPUTC
13861             fi
13862     fi
13863     case "$output" in
13864     '')
13865             set try -DTRY_FPRINTF
13866             if eval $compile; then
13867                     $run ./try 2>/dev/null
13868                     code="$?"
13869                     $from try.out
13870                     if $test ! -s try.out -a "X$code" = X42; then
13871                         output=-DTRY_FPRINTF
13872                     fi
13873             fi
13874         ;;
13875     esac
13876 fi
13877 : check for fflush NULL behaviour
13878 case "$fflushNULL" in
13879 '')     set try -DTRY_FFLUSH_NULL $output
13880         if eval $compile; then
13881                 $run ./try 2>/dev/null
13882                 code="$?"
13883                 $from try.out
13884                 if $test -s try.out -a "X$code" = X42; then
13885                         fflushNULL="`$cat try.out`"
13886                 else
13887                         if $test "X$code" != X42; then
13888                                 $cat >&4 <<EOM
13889 (If this test failed, don't worry, we'll try another method shortly.)
13890 EOM
13891                         fi
13892                 fi
13893         fi
13894         $rm -f core try.core core.try.*
13895         case "$fflushNULL" in
13896         x)      $cat >&4 <<EOM
13897 Your fflush(NULL) works okay for output streams.
13898 Let's see if it clobbers input pipes...
13899 EOM
13900 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13901 # bug that improperly flushes the input end of pipes.  So we avoid the
13902 # autoflush on fork/system/exec support for now. :-(
13903 $cat >tryp.c <<EOCP
13904 #include <stdio.h>
13905 int
13906 main(int argc, char **argv)
13907 {
13908     char buf[1024];
13909     int i;
13910     char *bp = buf;
13911     while (1) {
13912         while ((i = getc(stdin)) != -1
13913                && (*bp++ = i) != '\n'
13914                && bp < &buf[1024])
13915         /* DO NOTHING */ ;
13916         *bp = '\0';
13917         fprintf(stdout, "%s", buf);
13918         fflush(NULL);
13919         if (i == -1)
13920             return 0;
13921         bp = buf;
13922     }
13923 }
13924 EOCP
13925                 fflushNULL="$define"
13926                 set tryp
13927                 if eval $compile; then
13928                     $rm -f tryp.out
13929                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13930                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13931                        $cat >&4 <<EOM
13932 fflush(NULL) seems to behave okay with input streams.
13933 EOM
13934                         fflushNULL="$define"
13935                     else
13936                         $cat >&4 <<EOM
13937 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13938 EOM
13939                         fflushNULL="$undef"
13940                     fi
13941                 fi
13942                 $rm -f core tryp.c tryp.core core.tryp.*
13943                 ;;
13944         '')     $cat >&4 <<EOM
13945 Your fflush(NULL) isn't working (contrary to ANSI C).
13946 EOM
13947                 fflushNULL="$undef"
13948                 ;;
13949         *)      $cat >&4 <<EOM
13950 Cannot figure out whether your fflush(NULL) works or not.
13951 I'm assuming it doesn't (contrary to ANSI C).
13952 EOM
13953                 fflushNULL="$undef"
13954                 ;;
13955         esac
13956         ;;
13957 $define|true|[yY]*)
13958         fflushNULL="$define"
13959         ;;
13960 *)
13961         fflushNULL="$undef"
13962         ;;
13963 esac
13964 : check explicit looping only if NULL did not work, and if the pipe
13965 : bug does not show up on an explicit flush too
13966 case "$fflushNULL" in
13967 "$undef")
13968         $cat >tryp.c <<EOCP
13969 #include <stdio.h>
13970 int
13971 main(int argc, char **argv)
13972 {
13973     char buf[1024];
13974     int i;
13975     char *bp = buf;
13976     while (1) {
13977         while ((i = getc(stdin)) != -1
13978                && (*bp++ = i) != '\n'
13979                && bp < &buf[1024])
13980         /* DO NOTHING */ ;
13981         *bp = '\0';
13982         fprintf(stdout, "%s", buf);
13983         fflush(stdin);
13984         if (i == -1)
13985             return 0;
13986         bp = buf;
13987     }
13988 }
13989 EOCP
13990         set tryp
13991         if eval $compile; then
13992             $rm -f tryp.out
13993             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13994             if cmp tryp.c tryp.out >/dev/null 2>&1; then
13995                $cat >&4 <<EOM
13996 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13997 EOM
13998                 : now check for fflushall behaviour
13999                 case "$fflushall" in
14000                 '')     set try -DTRY_FFLUSH_ALL $output
14001                         if eval $compile; then
14002                                 $cat >&4 <<EOM
14003 (Now testing the other method--but note that this also may fail.)
14004 EOM
14005                                 $run ./try 2>/dev/null
14006                                 code=$?
14007                                 $from try.out
14008                                 if $test -s try.out -a "X$code" = X42; then
14009                                         fflushall="`$cat try.out`"
14010                                 fi
14011                         fi
14012                         $rm -f core try.core core.try.*
14013                         case "$fflushall" in
14014                         x)      $cat >&4 <<EOM
14015 Whew. Flushing explicitly all the stdio streams works.
14016 EOM
14017                                 fflushall="$define"
14018                                 ;;
14019                         '')     $cat >&4 <<EOM
14020 Sigh. Flushing explicitly all the stdio streams doesn't work.
14021 EOM
14022                                 fflushall="$undef"
14023                                 ;;
14024                         *)      $cat >&4 <<EOM
14025 Cannot figure out whether flushing stdio streams explicitly works or not.
14026 I'm assuming it doesn't.
14027 EOM
14028                                 fflushall="$undef"
14029                                 ;;
14030                         esac
14031                         ;;
14032                 "$define"|true|[yY]*)
14033                         fflushall="$define"
14034                         ;;
14035                 *)
14036                         fflushall="$undef"
14037                         ;;
14038                 esac
14039             else
14040                 $cat >&4 <<EOM
14041 All is futile.  Even fflush(stdin) clobbers input pipes!
14042 EOM
14043                 fflushall="$undef"
14044             fi
14045         else
14046             fflushall="$undef"
14047         fi
14048         $rm -f core tryp.c tryp.core core.tryp.*
14049         ;;
14050 *)      fflushall="$undef"
14051         ;;
14052 esac
14053
14054 case "$fflushNULL$fflushall" in
14055 undefundef)
14056         $cat <<EOM
14057 OK, I give up.  I cannot figure out how to flush pending stdio output.
14058 We won't be flushing handles at all before fork/exec/popen.
14059 EOM
14060         ;;
14061 esac
14062 $rm -f try.* try$exe_ext
14063
14064 : Store the full pathname to the ar program for use in the C program
14065 : Respect a hint or command line value for full_ar.
14066 case "$full_ar" in
14067 '') full_ar=$ar ;;
14068 esac
14069
14070 : Store the full pathname to the sed program for use in the C program
14071 full_sed=$sed
14072
14073 : see what type gids are declared as in the kernel
14074 echo " "
14075 echo "Looking for the type for group ids returned by getgid()."
14076 set gid_t gidtype xxx stdio.h sys/types.h
14077 eval $typedef
14078 case "$gidtype" in
14079 xxx)
14080         xxx=`./findhdr sys/user.h`
14081         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14082         case $1 in
14083         unsigned) dflt="$1 $2" ;;
14084         *) dflt="$1" ;;
14085         esac
14086         ;;
14087 *) dflt="$gidtype";;
14088 esac
14089 case "$gidtype" in
14090 gid_t) echo "gid_t found." ;;
14091 *)      rp="What is the type for group ids returned by getgid()?"
14092         . ./myread
14093         gidtype="$ans"
14094         ;;
14095 esac
14096
14097 echo " "
14098 case "$gidtype" in
14099 *_t) zzz="$gidtype"     ;;
14100 *)   zzz="gid"          ;;
14101 esac
14102 echo "Checking the size of $zzz..." >&4 
14103 cat > try.c <<EOCP
14104 #include <sys/types.h>
14105 #include <stdio.h>
14106 int main() {
14107     printf("%d\n", (int)sizeof($gidtype));
14108     exit(0);
14109 }
14110 EOCP
14111 set try
14112 if eval $compile_ok; then
14113         yyy=`$run ./try`
14114         case "$yyy" in
14115         '')     gidsize=4
14116                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14117                 ;;
14118         *)      gidsize=$yyy
14119                 echo "Your $zzz is $gidsize bytes long."
14120                 ;;
14121         esac
14122 else
14123         gidsize=4
14124         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14125 fi
14126
14127
14128 echo " "
14129 case "$gidtype" in
14130 *_t) zzz="$gidtype"     ;;
14131 *)   zzz="gid"          ;;
14132 esac
14133 echo "Checking the sign of $zzz..." >&4 
14134 cat > try.c <<EOCP
14135 #include <sys/types.h>
14136 #include <stdio.h>
14137 int main() {
14138         $gidtype foo = -1;
14139         if (foo < 0)
14140                 printf("-1\n");
14141         else
14142                 printf("1\n");
14143 }
14144 EOCP
14145 set try
14146 if eval $compile; then
14147         yyy=`$run ./try`
14148         case "$yyy" in
14149         '')     gidsign=1
14150                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14151                 ;;
14152         *)      gidsign=$yyy
14153                 case "$gidsign" in
14154                  1) echo "Your $zzz is unsigned." ;;
14155                 -1) echo "Your $zzz is signed."   ;;
14156                 esac
14157                 ;;
14158         esac
14159 else
14160         gidsign=1
14161         echo "(I can't compile the test program--guessing unsigned.)" >&4
14162 fi
14163
14164
14165 echo " "
14166
14167 if $test X"$quadtype" != X; then
14168
14169 echo "Checking how to print 64-bit integers..." >&4
14170
14171 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14172         $cat >try.c <<'EOCP'
14173 #include <sys/types.h>
14174 #include <stdio.h>
14175 int main() {
14176   int q = 12345678901;
14177   printf("%ld\n", q);
14178 }
14179 EOCP
14180         set try
14181         if eval $compile; then
14182                 yyy=`$run ./try`
14183                 case "$yyy" in
14184                 12345678901)
14185                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14186                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14187                         echo "We will use %d."
14188                         ;;
14189                 esac
14190         fi
14191 fi
14192
14193 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14194         $cat >try.c <<'EOCP'
14195 #include <sys/types.h>
14196 #include <stdio.h>
14197 int main() {
14198   long q = 12345678901;
14199   printf("%ld\n", q);
14200 }
14201 EOCP
14202         set try
14203         if eval $compile; then
14204                 yyy=`$run ./try`
14205                 case "$yyy" in
14206                 12345678901)
14207                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14208                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14209                         echo "We will use %ld."
14210                         ;;
14211                 esac
14212         fi
14213 fi
14214
14215 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14216         $cat >try.c <<'EOCP'
14217 #include <sys/types.h>
14218 #include <inttypes.h>
14219 #include <stdio.h>
14220 int main() {
14221   int64_t q = 12345678901;
14222   printf("%" PRId64 "\n", q);
14223 }
14224 EOCP
14225         set try
14226         if eval $compile; then
14227                 yyy=`$run ./try`
14228                 case "$yyy" in
14229                 12345678901)
14230                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14231                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14232                         echo "We will use the C9X style."
14233                         ;;
14234                 esac
14235         fi
14236 fi
14237
14238 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14239         $cat >try.c <<EOCP
14240 #include <sys/types.h>
14241 #include <stdio.h>
14242 int main() {
14243   $quadtype q = 12345678901;
14244   printf("%Ld\n", q);
14245 }
14246 EOCP
14247         set try
14248         if eval $compile; then
14249                 yyy=`$run ./try`
14250                 case "$yyy" in
14251                 12345678901)
14252                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14253                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14254                         echo "We will use %Ld."
14255                         ;;
14256                 esac
14257         fi
14258 fi
14259
14260 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14261         $cat >try.c <<'EOCP'
14262 #include <sys/types.h>
14263 #include <stdio.h>
14264 int main() {
14265   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14266   printf("%lld\n", q);
14267 }
14268 EOCP
14269         set try
14270         if eval $compile; then
14271                 yyy=`$run ./try`
14272                 case "$yyy" in
14273                 12345678901)
14274                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14275                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14276                         echo "We will use the %lld style."
14277                         ;;
14278                 esac
14279         fi
14280 fi
14281
14282 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14283         $cat >try.c <<EOCP
14284 #include <sys/types.h>
14285 #include <stdio.h>
14286 int main() {
14287   $quadtype q = 12345678901;
14288   printf("%qd\n", q);
14289 }
14290 EOCP
14291         set try
14292         if eval $compile; then
14293                 yyy=`$run ./try`
14294                 case "$yyy" in
14295                 12345678901)
14296                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14297                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14298                         echo "We will use %qd."
14299                         ;;
14300                 esac
14301         fi
14302 fi
14303
14304 if $test X"$sPRId64" = X; then
14305         echo "Cannot figure out how to print 64-bit integers." >&4
14306 fi
14307
14308 $rm -f try try.*
14309
14310 fi
14311
14312 case "$sPRId64" in
14313 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14314         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14315         ;;
14316 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14317         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14318         ;;
14319 esac
14320
14321
14322 echo " "
14323 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14324
14325 if $test X"$ivsize" = X8; then
14326         ivdformat="$sPRId64"
14327         uvuformat="$sPRIu64"
14328         uvoformat="$sPRIo64"
14329         uvxformat="$sPRIx64"
14330         uvXUformat="$sPRIXU64"
14331 else
14332         if $test X"$ivsize" = X"$longsize"; then
14333                 ivdformat='"ld"'
14334                 uvuformat='"lu"'
14335                 uvoformat='"lo"'
14336                 uvxformat='"lx"'
14337                 uvXUformat='"lX"'
14338         else
14339                 if $test X"$ivsize" = X"$intsize"; then
14340                         ivdformat='"d"'
14341                         uvuformat='"u"'
14342                         uvoformat='"o"'
14343                         uvxformat='"x"'
14344                         uvXUformat='"X"'
14345                 else
14346                         : far out
14347                         if $test X"$ivsize" = X"$shortsize"; then
14348                                 ivdformat='"hd"'
14349                                 uvuformat='"hu"'
14350                                 uvoformat='"ho"'
14351                                 uvxformat='"hx"'
14352                                 uvXUformat='"hX"'
14353                         fi
14354                 fi
14355         fi
14356 fi
14357
14358 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14359         nveformat="$sPRIeldbl"
14360         nvfformat="$sPRIfldbl"
14361         nvgformat="$sPRIgldbl"
14362         nvEUformat="$sPRIEUldbl"
14363         nvFUformat="$sPRIFUldbl"
14364         nvGUformat="$sPRIGUldbl"
14365 else
14366         nveformat='"e"'
14367         nvfformat='"f"'
14368         nvgformat='"g"'
14369         nvEUformat='"E"'
14370         nvFUformat='"F"'
14371         nvGUformat='"G"'
14372 fi
14373
14374 case "$ivdformat" in
14375 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14376     exit 1
14377     ;;
14378 esac
14379
14380
14381 echo " "
14382 $echo "Checking the format string to be used for gids..." >&4
14383
14384 case "$gidsign" in
14385 -1)     if $test X"$gidsize" = X"$ivsize"; then
14386                 gidformat="$ivdformat"
14387         else
14388                 if $test X"$gidsize" = X"$longsize"; then
14389                         gidformat='"ld"'
14390                 else
14391                         if $test X"$gidsize" = X"$intsize"; then
14392                                 gidformat='"d"'
14393                         else
14394                                 if $test X"$gidsize" = X"$shortsize"; then
14395                                         gidformat='"hd"'
14396                                 fi
14397                         fi
14398                 fi
14399         fi
14400         ;;
14401 *)      if $test X"$gidsize" = X"$uvsize"; then
14402                 gidformat="$uvuformat"
14403         else
14404                 if $test X"$gidsize" = X"$longsize"; then
14405                         gidformat='"lu"'
14406                 else
14407                         if $test X"$gidsize" = X"$intsize"; then
14408                                 gidformat='"u"'
14409                         else
14410                                 if $test X"$gidsize" = X"$shortsize"; then
14411                                         gidformat='"hu"'
14412                                 fi
14413                         fi
14414                 fi
14415         fi
14416         ;;
14417 esac
14418
14419 : see if getgroups exists
14420 set getgroups d_getgrps
14421 eval $inlibc
14422
14423 : see if setgroups exists
14424 set setgroups d_setgrps
14425 eval $inlibc
14426
14427
14428 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14429 echo " "
14430 case "$d_getgrps$d_setgrps" in
14431 *define*)
14432         case "$groupstype" in
14433         '') dflt="$gidtype" ;;
14434         *)  dflt="$groupstype" ;;
14435         esac
14436         $cat <<EOM
14437 What type of pointer is the second argument to getgroups() and setgroups()?
14438 Usually this is the same as group ids, $gidtype, but not always.
14439
14440 EOM
14441         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14442         . ./myread
14443         groupstype="$ans"
14444         ;;
14445 *)  groupstype="$gidtype";;
14446 esac
14447
14448 echo " "
14449 echo "Checking if your $make program sets \$(MAKE)..." >&4
14450 case "$make_set_make" in
14451 '')
14452         $sed 's/^X //' > testmake.mak << 'EOF'
14453 Xall:
14454 X       @echo 'maketemp="$(MAKE)"'
14455 EOF
14456         case "`$make -f testmake.mak 2>/dev/null`" in
14457         *maketemp=*) make_set_make='#' ;;
14458         *)      make_set_make="MAKE=$make" ;;
14459         esac
14460         $rm -f testmake.mak
14461         ;;
14462 esac
14463 case "$make_set_make" in
14464 '#') echo "Yup, it does.";;
14465 *) echo "Nope, it doesn't.";;
14466 esac
14467
14468 : see what type is used for mode_t
14469 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14470 set mode_t modetype int stdio.h sys/types.h
14471 eval $typedef_ask
14472
14473 : see if stdarg is available
14474 echo " "
14475 if $test `./findhdr stdarg.h`; then
14476         echo "<stdarg.h> found." >&4
14477         valstd="$define"
14478 else
14479         echo "<stdarg.h> NOT found." >&4
14480         valstd="$undef"
14481 fi
14482
14483 : see if varags is available
14484 echo " "
14485 if $test `./findhdr varargs.h`; then
14486         echo "<varargs.h> found." >&4
14487 else
14488         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14489 fi
14490
14491 : set up the varargs testing programs
14492 $cat > varargs.c <<EOP
14493 #ifdef I_STDARG
14494 #include <stdarg.h>
14495 #endif
14496 #ifdef I_VARARGS
14497 #include <varargs.h>
14498 #endif
14499
14500 #ifdef I_STDARG
14501 int f(char *p, ...)
14502 #else
14503 int f(va_alist)
14504 va_dcl
14505 #endif
14506 {
14507         va_list ap;
14508 #ifndef I_STDARG
14509         char *p;
14510 #endif
14511 #ifdef I_STDARG
14512         va_start(ap,p);
14513 #else
14514         va_start(ap);
14515         p = va_arg(ap, char *);
14516 #endif
14517         va_end(ap);
14518 }
14519 EOP
14520 $cat > varargs <<EOP
14521 $startsh
14522 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14523         echo "true"
14524 else
14525         echo "false"
14526 fi
14527 $rm -f varargs$_o
14528 EOP
14529 chmod +x varargs
14530
14531 : now check which varargs header should be included
14532 echo " "
14533 i_varhdr=''
14534 case "$valstd" in
14535 "$define")
14536         if `./varargs I_STDARG`; then
14537                 val='stdarg.h'
14538         elif `./varargs I_VARARGS`; then
14539                 val='varargs.h'
14540         fi
14541         ;;
14542 *)
14543         if `./varargs I_VARARGS`; then
14544                 val='varargs.h'
14545         fi
14546         ;;
14547 esac
14548 case "$val" in
14549 '')
14550 echo "I could not find the definition for va_dcl... You have problems..." >&4
14551         val="$undef"; set i_stdarg; eval $setvar
14552         val="$undef"; set i_varargs; eval $setvar
14553         ;;
14554 *) 
14555         set i_varhdr
14556         eval $setvar
14557         case "$i_varhdr" in
14558         stdarg.h)
14559                 val="$define"; set i_stdarg; eval $setvar
14560                 val="$undef"; set i_varargs; eval $setvar
14561                 ;;
14562         varargs.h)
14563                 val="$undef"; set i_stdarg; eval $setvar
14564                 val="$define"; set i_varargs; eval $setvar
14565                 ;;
14566         esac
14567         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14568 esac
14569 $rm -f varargs*
14570
14571 : see if we need va_copy
14572 echo " "
14573 case "$i_stdarg" in
14574 "$define")
14575         $cat >try.c <<EOCP
14576 #include <stdarg.h>
14577 #include <stdio.h>
14578 #$i_stdlib I_STDLIB
14579 #ifdef I_STDLIB
14580 #include <stdlib.h>
14581 #endif
14582 #include <signal.h>
14583
14584 int
14585 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14586 {
14587   return vfprintf(f, fmt, *valp);
14588 }
14589  
14590 int    
14591 myvfprintf(FILE *f, const  char *fmt, va_list val)
14592 {
14593   return ivfprintf(f, fmt, &val);
14594 }
14595       
14596 int
14597 myprintf(char *fmt, ...) 
14598 {
14599   va_list val;
14600   va_start(val, fmt);
14601   return myvfprintf(stdout, fmt, val); 
14602 }         
14603
14604 int
14605 main(int ac, char **av)
14606 {
14607   signal(SIGSEGV, exit);
14608
14609   myprintf("%s%cs all right, then\n", "that", '\'');                            
14610   exit(0);      
14611 }
14612 EOCP
14613         set try
14614         if eval $compile && $run ./try 2>&1 >/dev/null; then
14615                 case "`$run ./try`" in
14616                 "that's all right, then")
14617                         okay=yes
14618                         ;;
14619                 esac
14620         fi
14621         case "$okay" in
14622         yes)    echo "It seems that you don't need va_copy()." >&4
14623                 need_va_copy="$undef"
14624                 ;;
14625         *)      echo "It seems that va_copy() or similar will be needed." >&4
14626                 need_va_copy="$define"
14627                 ;;
14628         esac
14629         $rm -f try.* core core.* *.core *.core.*
14630         ;;
14631 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14632         ;;
14633 esac
14634
14635 : define a fucntion to check prototypes
14636 $cat > protochk <<EOSH
14637 $startsh
14638 cc="$cc"
14639 optimize="$optimize"
14640 ccflags="$ccflags"
14641 prototype="$prototype"
14642 define="$define"
14643 rm=$rm
14644 EOSH
14645
14646 $cat >> protochk <<'EOSH'
14647
14648 $rm -f try.c
14649 foo="$1"
14650 shift
14651 while test $# -ge 2; do
14652         case "$1" in
14653                 $define) echo "#include <$2>" >> try.c ;;
14654                 literal) echo "$2" >> try.c ;;
14655         esac
14656     shift 2
14657 done
14658 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14659 cat >> try.c <<'EOCP'
14660 #ifdef CAN_PROTOTYPE
14661 #define _(args) args
14662 #else
14663 #define _(args) ()
14664 #endif
14665 EOCP
14666 echo "$foo" >> try.c
14667 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14668 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14669 status=$?
14670 $rm -f try.[co]
14671 exit $status
14672 EOSH
14673 chmod +x protochk
14674 $eunicefix protochk
14675
14676 : see what type is used for size_t
14677 rp="What is the type used for the length parameter for string functions?"
14678 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14679 eval $typedef_ask
14680
14681 : check for type of arguments to gethostbyaddr. 
14682 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14683         case "$d_gethbyaddr" in
14684         $define)
14685                 $cat <<EOM
14686
14687 Checking to see what type of arguments are accepted by gethostbyaddr().
14688 EOM
14689                 hdrs="$define sys/types.h
14690                         $d_socket sys/socket.h 
14691                         $i_niin netinet/in.h 
14692                         $i_netdb netdb.h
14693                         $i_unistd unistd.h"
14694                 : The first arg can 'char *' or 'void *'
14695                 : The second arg is some of integral type
14696                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14697                         for yyy in size_t long int; do
14698                                 case "$netdb_host_type" in
14699                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14700                                         if ./protochk "$try" $hdrs; then
14701                                                 echo "Your system accepts $xxx for the first arg."
14702                                                 echo "...and $yyy for the second arg."
14703                                                 netdb_host_type="$xxx"
14704                                                 netdb_hlen_type="$yyy"
14705                                         fi
14706                                         ;;
14707                                 esac
14708                         done
14709                 done
14710                 : In case none of those worked, prompt the user.
14711                 case "$netdb_host_type" in
14712                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14713                         dflt='char *'
14714                         . ./myread
14715                         netdb_host_type=$ans
14716                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14717                         dflt="$sizetype"
14718                         . ./myread
14719                         netdb_hlen_type=$ans
14720                         ;;
14721                 esac
14722                 ;;
14723         *)      : no gethostbyaddr, so pick harmless defaults
14724                 netdb_host_type='char *'
14725                 netdb_hlen_type="$sizetype"
14726                 ;;
14727         esac
14728         # Remove the "const" if needed. -- but then we'll have a 
14729         # prototype clash!
14730         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14731 fi
14732
14733 : check for type of argument to gethostbyname. 
14734 if test "X$netdb_name_type" = X ; then
14735         case "$d_gethbyname" in
14736         $define)
14737                 $cat <<EOM
14738
14739 Checking to see what type of argument is accepted by gethostbyname().
14740 EOM
14741                 hdrs="$define sys/types.h
14742                         $d_socket sys/socket.h 
14743                         $i_niin netinet/in.h 
14744                         $i_netdb netdb.h
14745                         $i_unistd unistd.h"
14746                 for xxx in "const char *" "char *"; do
14747                         case "$netdb_name_type" in
14748                         '')     try="extern struct hostent *gethostbyname($xxx);"
14749                                 if ./protochk "$try" $hdrs; then
14750                                         echo "Your system accepts $xxx."
14751                                         netdb_name_type="$xxx"
14752                                 fi
14753                                 ;;
14754                         esac
14755                 done
14756                 : In case none of those worked, prompt the user.
14757                 case "$netdb_name_type" in
14758                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14759                         dflt='char *'
14760                         . ./myread
14761                         netdb_name_type=$ans
14762                         ;;
14763                 esac
14764                 ;;
14765         *)      : no gethostbyname, so pick harmless default
14766                 netdb_name_type='char *'
14767                 ;;
14768         esac
14769 fi
14770
14771 : check for type of 1st argument to getnetbyaddr. 
14772 if test "X$netdb_net_type" = X ; then
14773         case "$d_getnbyaddr" in
14774         $define)
14775                 $cat <<EOM
14776
14777 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14778 EOM
14779                 hdrs="$define sys/types.h
14780                         $d_socket sys/socket.h 
14781                         $i_niin netinet/in.h 
14782                         $i_netdb netdb.h
14783                         $i_unistd unistd.h"
14784                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14785                         case "$netdb_net_type" in
14786                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14787                                 if ./protochk "$try" $hdrs; then
14788                                         echo "Your system accepts $xxx."
14789                                         netdb_net_type="$xxx"
14790                                 fi
14791                                 ;;
14792                         esac
14793                 done
14794                 : In case none of those worked, prompt the user.
14795                 case "$netdb_net_type" in
14796                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14797                         dflt='long'
14798                         . ./myread
14799                         netdb_net_type=$ans
14800                         ;;
14801                 esac
14802                 ;;
14803         *)      : no getnetbyaddr, so pick harmless default
14804                 netdb_net_type='long'
14805                 ;;
14806         esac
14807 fi
14808 : locate the preferred pager for this system
14809 case "$pager" in
14810 '')
14811         dflt=''
14812         case "$pg" in
14813         /*) dflt=$pg;;
14814         [a-zA-Z]:/*) dflt=$pg;;
14815         esac
14816         case "$more" in
14817         /*) dflt=$more;;
14818         [a-zA-Z]:/*) dflt=$more;;
14819         esac
14820         case "$less" in
14821         /*) dflt=$less;;
14822         [a-zA-Z]:/*) dflt=$less;;
14823         esac
14824         case "$dflt" in
14825         '') dflt=/usr/ucb/more;;
14826         esac
14827         ;;
14828 *) dflt="$pager";;
14829 esac
14830 echo " "
14831 fn=f/
14832 rp='What pager is used on your system?'
14833 . ./getfile
14834 pager="$ans"
14835
14836 : see what type pids are declared as in the kernel
14837 rp="What is the type of process ids on this system?"
14838 set pid_t pidtype int stdio.h sys/types.h
14839 eval $typedef_ask
14840
14841 : Find earliest binary compatible site_perl subdirectory perl can use.
14842 case "$bincompat5005" in
14843 "$define") xs_apiversion='5.005' ;;
14844 *) xs_apiversion=$version ;;   # The current site_perl version.
14845 esac
14846 : Find earliest pure perl site_perl subdirectory perl can use.
14847 : The versioned directories started at 5.005.
14848 pm_apiversion='5.005'
14849
14850 : see if ar generates random libraries by itself
14851 echo " "
14852 echo "Checking how to generate random libraries on your machine..." >&4
14853 echo 'int bar1() { return bar2(); }' > bar1.c
14854 echo 'int bar2() { return 2; }' > bar2.c
14855 $cat > foo.c <<'EOP'
14856 int main() { printf("%d\n", bar1()); exit(0); }
14857 EOP
14858 $cc $ccflags -c bar1.c >/dev/null 2>&1
14859 $cc $ccflags -c bar2.c >/dev/null 2>&1
14860 $cc $ccflags -c foo.c >/dev/null 2>&1
14861 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14862 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14863         $run ./foobar >/dev/null 2>&1; then
14864         echo "$ar appears to generate random libraries itself."
14865         orderlib=false
14866         ranlib=":"
14867 elif $ar ts bar$_a >/dev/null 2>&1 &&
14868         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14869         $run ./foobar >/dev/null 2>&1; then
14870                 echo "a table of contents needs to be added with '$ar ts'."
14871                 orderlib=false
14872                 ranlib="$ar ts"
14873 else
14874         case "$ranlib" in
14875         :) ranlib='';;
14876         '')
14877                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14878                 $test -f $ranlib || ranlib=''
14879                 ;;
14880         esac
14881         if $test -n "$ranlib"; then
14882                 echo "your system has '$ranlib'; we'll use that."
14883                 orderlib=false
14884         else
14885                 echo "your system doesn't seem to support random libraries"
14886                 echo "so we'll use lorder and tsort to order the libraries."
14887                 orderlib=true
14888                 ranlib=":"
14889         fi
14890 fi
14891 $rm -f foo* bar* 
14892
14893 : check for type of arguments to select. 
14894 case "$selecttype" in
14895 '') case "$d_select" in
14896         $define)
14897                 echo " "
14898                 $cat <<EOM
14899 Checking to see what type of arguments are accepted by select().
14900 EOM
14901                 hdrs="$define sys/types.h
14902                         $i_systime sys/time.h 
14903                         $i_sysselct sys/select.h
14904                         $d_socket sys/socket.h"
14905                 : The first arg can be int, unsigned, or size_t
14906                 : The last arg may or may not be 'const'
14907                 val=''
14908                 : void pointer has been seen but using that
14909                 : breaks the selectminbits test
14910                 for xxx in 'fd_set *' 'int *'; do
14911                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14912                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14913                                         case "$val" in
14914                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14915                                                 if ./protochk "$try" $hdrs; then
14916                                                         echo "Your system accepts $xxx."
14917                                                         val="$xxx"
14918                                                 fi
14919                                                 ;;
14920                                         esac
14921                                 done
14922                         done
14923                 done
14924                 case "$val" in
14925                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14926                         case "$d_fd_set" in
14927                                 $define) dflt="fd_set *" ;;
14928                                 *)              dflt="int *" ;;
14929                         esac
14930                         . ./myread
14931                         val=$ans
14932                         ;;
14933                 esac
14934                 selecttype="$val"
14935                 ;;
14936         *)      : no select, so pick a harmless default
14937                 selecttype='int *'
14938                 ;;
14939         esac
14940         ;;
14941 esac
14942
14943 : check for the select 'width'
14944 case "$selectminbits" in
14945 '') case "$d_select" in
14946         $define)
14947                 $cat <<EOM
14948
14949 Checking to see on how many bits at a time your select() operates...
14950 EOM
14951                 $cat >try.c <<EOCP
14952 #include <sys/types.h>
14953 #$i_time I_TIME
14954 #$i_systime I_SYS_TIME
14955 #$i_systimek I_SYS_TIME_KERNEL
14956 #ifdef I_TIME
14957 #   include <time.h>
14958 #endif
14959 #ifdef I_SYS_TIME
14960 #   ifdef I_SYS_TIME_KERNEL
14961 #       define KERNEL
14962 #   endif
14963 #   include <sys/time.h>
14964 #   ifdef I_SYS_TIME_KERNEL
14965 #       undef KERNEL
14966 #   endif
14967 #endif
14968 #$i_sysselct I_SYS_SELECT
14969 #ifdef I_SYS_SELECT
14970 #include <sys/select.h>
14971 #endif
14972 #$d_socket HAS_SOCKET
14973 #ifdef HAS_SOCKET
14974 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14975 #endif
14976 #include <stdio.h>
14977 $selecttype b;
14978 #define S sizeof(*(b))
14979 #define MINBITS 64
14980 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14981 #define NBITS  (NBYTES * 8)
14982 int main() {
14983     char s[NBYTES];
14984     struct timeval t;
14985     int i;
14986     FILE* fp;
14987     int fd;
14988
14989     fclose(stdin);
14990     fp = fopen("try.c", "r");
14991     if (fp == 0)
14992       exit(1);
14993     fd = fileno(fp);
14994     if (fd < 0)
14995       exit(2);
14996     b = ($selecttype)s;
14997     for (i = 0; i < NBITS; i++)
14998         FD_SET(i, b);
14999     t.tv_sec  = 0;
15000     t.tv_usec = 0;
15001     select(fd + 1, b, 0, 0, &t);
15002     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15003     printf("%d\n", i + 1);
15004     return 0;
15005 }
15006 EOCP
15007                 set try
15008                 if eval $compile_ok; then
15009                         selectminbits=`$run ./try`
15010                         case "$selectminbits" in
15011                         '')     cat >&4 <<EOM
15012 Cannot figure out on how many bits at a time your select() operates.
15013 I'll play safe and guess it is 32 bits.
15014 EOM
15015                                 selectminbits=32
15016                                 bits="32 bits"
15017                                 ;;
15018                         1)      bits="1 bit" ;;
15019                         *)      bits="$selectminbits bits" ;;
15020                         esac
15021                         echo "Your select() operates on $bits at a time." >&4
15022                 else
15023                         rp='What is the minimum number of bits your select() operates on?'
15024                         case "$byteorder" in
15025                         1234|12345678)  dflt=32 ;;
15026                         *)              dflt=1  ;;
15027                         esac
15028                         . ./myread
15029                         val=$ans
15030                         selectminbits="$val"
15031                 fi
15032                 $rm -f try.* try
15033                 ;;
15034         *)      : no select, so pick a harmless default
15035                 selectminbits='32'
15036                 ;;
15037         esac
15038         ;;
15039 esac
15040
15041 : Trace out the files included by signal.h, then look for SIGxxx names.
15042 : Remove SIGARRAYSIZE used by HPUX.
15043 : Remove SIGSTKSIZE used by Linux.
15044 : Remove SIGSTKSZ used by Posix.
15045 : Remove SIGTYP void lines used by OS2.
15046 : Some cpps, like os390, dont give the file name anywhere
15047 if [ "X$fieldn" = X ]; then
15048         : Just make some guesses.  We check them later.
15049         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15050 else
15051         xxx=`echo '#include <signal.h>' |
15052         $cppstdin $cppminus $cppflags 2>/dev/null |
15053         $grep '^[       ]*#.*include' | 
15054         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15055 fi
15056 : Check this list of files to be sure we have parsed the cpp output ok.
15057 : This will also avoid potentially non-existent files, such 
15058 : as ../foo/bar.h
15059 xxxfiles=''
15060 for xx in $xxx /dev/null ; do
15061         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15062 done
15063 : If we have found no files, at least try signal.h
15064 case "$xxxfiles" in
15065 '')     xxxfiles=`./findhdr signal.h` ;;
15066 esac
15067 xxx=`awk '
15068 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15069         print substr($2, 4, 20)
15070 }
15071 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15072         print substr($3, 4, 20)
15073 }' $xxxfiles`
15074 : Append some common names just in case the awk scan failed.
15075 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15076 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15077 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15078 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15079 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15080
15081 : generate a few handy files for later
15082 $cat > signal.c <<'EOCP'
15083 #include <sys/types.h>
15084 #include <signal.h>
15085 #include <stdio.h>
15086 int main() {
15087
15088 /* Strange style to avoid deeply-nested #if/#else/#endif */
15089 #ifndef NSIG
15090 #  ifdef _NSIG
15091 #    define NSIG (_NSIG)
15092 #  endif
15093 #endif
15094
15095 #ifndef NSIG
15096 #  ifdef SIGMAX
15097 #    define NSIG (SIGMAX+1)
15098 #  endif
15099 #endif
15100
15101 #ifndef NSIG
15102 #  ifdef SIG_MAX
15103 #    define NSIG (SIG_MAX+1)
15104 #  endif
15105 #endif
15106
15107 #ifndef NSIG
15108 #  ifdef MAXSIG
15109 #    define NSIG (MAXSIG+1)
15110 #  endif
15111 #endif
15112
15113 #ifndef NSIG
15114 #  ifdef MAX_SIG
15115 #    define NSIG (MAX_SIG+1)
15116 #  endif
15117 #endif
15118
15119 #ifndef NSIG
15120 #  ifdef SIGARRAYSIZE
15121 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15122 #  endif
15123 #endif
15124
15125 #ifndef NSIG
15126 #  ifdef _sys_nsig
15127 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15128 #  endif
15129 #endif
15130
15131 /* Default to some arbitrary number that's big enough to get most
15132    of the common signals.
15133 */
15134 #ifndef NSIG
15135 #    define NSIG 50
15136 #endif
15137
15138 printf("NSIG %d\n", NSIG);
15139
15140 #ifndef JUST_NSIG
15141
15142 EOCP
15143
15144 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15145 {
15146         printf "#ifdef SIG"; printf $1; printf "\n"
15147         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15148         printf $1; printf ");\n"
15149         printf "#endif\n"
15150 }
15151 END {
15152         printf "#endif /* JUST_NSIG */\n";
15153         printf "exit(0);\n}\n";
15154 }
15155 ' >>signal.c
15156 $cat >signal.awk <<'EOP'
15157 BEGIN { ndups = 0 }
15158 $1 ~ /^NSIG$/ { nsig = $2 }
15159 ($1 !~ /^NSIG$/) && (NF == 2) {
15160     if ($2 > maxsig) { maxsig = $2 }
15161     if (sig_name[$2]) {
15162         dup_name[ndups] = $1
15163         dup_num[ndups] = $2
15164         ndups++ 
15165     }
15166     else {
15167         sig_name[$2] = $1
15168         sig_num[$2] = $2
15169     }
15170 }
15171 END { 
15172     if (nsig == 0) {
15173         nsig = maxsig + 1
15174     }
15175     printf("NSIG %d\n", nsig);
15176     for (n = 1; n < nsig; n++) {
15177         if (sig_name[n]) {
15178             printf("%s %d\n", sig_name[n], sig_num[n])
15179         }
15180         else {
15181             printf("NUM%d %d\n", n, n) 
15182         }
15183     }
15184     for (n = 0; n < ndups; n++) {
15185         printf("%s %d\n", dup_name[n], dup_num[n])
15186     }
15187 }
15188 EOP
15189 $cat >signal_cmd <<EOS
15190 $startsh
15191 if $test -s signal.lst; then
15192     echo "Using your existing signal.lst file"
15193         exit 0
15194 fi
15195 xxx="$xxx"
15196 EOS
15197 $cat >>signal_cmd <<'EOS'
15198
15199 set signal
15200 if eval $compile_ok; then
15201         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15202 else
15203         echo "(I can't seem be able to compile the whole test program)" >&4
15204         echo "(I'll try it in little pieces.)" >&4
15205         set signal -DJUST_NSIG
15206         if eval $compile_ok; then
15207                 $run ./signal$_exe > signal.nsg
15208                 $cat signal.nsg
15209         else
15210                 echo "I can't seem to figure out how many signals you have." >&4
15211                 echo "Guessing 50." >&4
15212                 echo 'NSIG 50' > signal.nsg
15213         fi
15214         : Now look at all the signal names, one at a time.
15215         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15216                 $cat > signal.c <<EOCP
15217 #include <sys/types.h>
15218 #include <signal.h>
15219 #include <stdio.h>
15220 int main() {
15221 printf("$xx %d\n", SIG${xx});
15222 return 0;
15223 }
15224 EOCP
15225                 set signal
15226                 if eval $compile; then
15227                         echo "SIG${xx} found."
15228                         $run ./signal$_exe  >> signal.ls1
15229                 else
15230                         echo "SIG${xx} NOT found."
15231                 fi
15232         done
15233         if $test -s signal.ls1; then
15234                 $cat signal.nsg signal.ls1 |
15235                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15236         fi
15237
15238 fi
15239 if $test -s signal.lst; then
15240         :
15241 else
15242         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15243         echo 'kill -l' >signal
15244         set X `csh -f <signal`
15245         $rm -f signal
15246         shift
15247         case $# in
15248         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15249         esac
15250         echo $@ | $tr ' ' $trnl | \
15251             $awk '{ printf "%s %d\n", $1, ++s; }
15252                   END { printf "NSIG %d\n", ++s }' >signal.lst
15253 fi
15254 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15255 EOS
15256 chmod a+x signal_cmd
15257 $eunicefix signal_cmd
15258
15259 : generate list of signal names
15260 echo " "
15261 case "$sig_name_init" in
15262 '') doinit=yes ;;
15263 *)  case "$sig_num_init" in
15264     ''|*,*) doinit=yes ;;
15265     esac ;;
15266 esac
15267 case "$doinit" in
15268 yes)
15269         echo "Generating a list of signal names and numbers..." >&4
15270         . ./signal_cmd
15271         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15272         sig_name=`$awk 'BEGIN { printf "ZERO " }
15273                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15274         sig_num=`$awk  'BEGIN { printf "0 " }
15275                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15276         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15277                              !/^NSIG/   { printf "\"%s\", ", $1 }
15278                              END        { printf "0\n" }' signal.lst`
15279         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15280                              !/^NSIG/   { printf "%d, ", $2}
15281                              END        { printf "0\n"}' signal.lst`
15282         ;;
15283 esac
15284 echo "The following $sig_count signals are available:"
15285 echo " "
15286 echo $sig_name | $awk \
15287 'BEGIN { linelen = 0 }
15288 {
15289         for (i = 1; i <= NF; i++) {
15290                 name = "SIG" $i " "
15291                 linelen = linelen + length(name)
15292                 if (linelen > 70) {
15293                         printf "\n"
15294                         linelen = length(name)
15295                 }
15296                 printf "%s", name
15297         }
15298         printf "\n"
15299 }'
15300 sig_size=`echo $sig_name | awk '{print NF}'`
15301 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15302
15303 echo " "
15304 case "$sizetype" in
15305 *_t) zzz="$sizetype"    ;;
15306 *)   zzz="filesize"     ;;
15307 esac
15308 echo "Checking the size of $zzz..." >&4 
15309 cat > try.c <<EOCP
15310 #include <sys/types.h>
15311 #include <stdio.h>
15312 int main() {
15313     printf("%d\n", (int)sizeof($sizetype));
15314     exit(0);
15315 }
15316 EOCP
15317 set try
15318 if eval $compile_ok; then
15319         yyy=`$run ./try`
15320         case "$yyy" in
15321         '')     sizesize=4
15322                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15323                 ;;
15324         *)      sizesize=$yyy
15325                 echo "Your $zzz size is $sizesize bytes."
15326                 ;;
15327         esac
15328 else
15329         sizesize=4
15330         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15331 fi
15332
15333
15334 : check for socklen_t
15335 echo " "
15336 echo "Checking to see if you have socklen_t..." >&4
15337 $cat >try.c <<EOCP
15338 #include <sys/types.h>
15339 #$d_socket HAS_SOCKET
15340 #ifdef HAS_SOCKET
15341 #include <sys/socket.h>
15342 #endif
15343 int main() { socklen_t x = 16; }
15344 EOCP
15345 set try
15346 if eval $compile; then
15347         val="$define"
15348         echo "You have socklen_t."
15349 else
15350         val="$undef"
15351         echo "You do not have socklen_t."
15352         case "$sizetype" in
15353         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15354         esac
15355 fi
15356 $rm -f try try.*
15357 set d_socklen_t
15358 eval $setvar
15359
15360 : see if this is a socks.h system
15361 set socks.h i_socks
15362 eval $inhdr
15363
15364 : check for type of the size argument to socket calls
15365 case "$d_socket" in
15366 "$define")
15367         $cat <<EOM
15368
15369 Checking to see what type is the last argument of accept().
15370 EOM
15371         yyy=''
15372         case "$d_socklen_t" in
15373         "$define") yyy="$yyy socklen_t"
15374         esac
15375         yyy="$yyy $sizetype int long unsigned"
15376         for xxx in $yyy; do
15377                 case "$socksizetype" in
15378                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15379                         case "$usesocks" in
15380                         "$define")
15381                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15382                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15383                                         socksizetype="$xxx"
15384                                 fi
15385                                 ;;
15386                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15387                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15388                                         socksizetype="$xxx"
15389                                 fi
15390                                 ;;
15391                         esac
15392                         ;;
15393                 esac
15394         done
15395 : In case none of those worked, prompt the user.
15396         case "$socksizetype" in
15397         '')     rp='What is the type for socket address structure sizes?'
15398                 dflt='int'
15399                 . ./myread
15400                 socksizetype=$ans
15401                 ;;
15402         esac
15403         ;;
15404 *)      : no sockets, so pick relatively harmless default
15405         socksizetype='int'
15406         ;;
15407 esac
15408
15409 : see what type is used for signed size_t
15410 set ssize_t ssizetype int stdio.h sys/types.h
15411 eval $typedef
15412 dflt="$ssizetype"
15413 $cat > try.c <<EOM
15414 #include <stdio.h>
15415 #include <sys/types.h>
15416 #define Size_t $sizetype
15417 #define SSize_t $dflt
15418 int main()
15419 {
15420         if (sizeof(Size_t) == sizeof(SSize_t))
15421                 printf("$dflt\n");
15422         else if (sizeof(Size_t) == sizeof(int))
15423                 printf("int\n");
15424         else 
15425                 printf("long\n");
15426         exit(0);
15427 }
15428 EOM
15429 echo " "
15430 set try
15431 if eval $compile_ok && $run ./try > /dev/null; then
15432         ssizetype=`$run ./try`
15433         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15434 else
15435         $cat >&4 <<EOM
15436 Help! I can't compile and run the ssize_t test program: please enlighten me!
15437 (This is probably a misconfiguration in your system or libraries, and
15438 you really ought to fix it.  Still, I'll try anyway.)
15439
15440 I need a type that is the same size as $sizetype, but is guaranteed to
15441 be signed.  Common values are ssize_t, int and long.
15442
15443 EOM
15444         rp="What signed type is the same size as $sizetype?"
15445         . ./myread
15446         ssizetype="$ans"
15447 fi
15448 $rm -f try try.*
15449
15450 : see what type of char stdio uses.
15451 echo " "
15452 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15453 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15454         echo "Your stdio uses unsigned chars." >&4
15455         stdchar="unsigned char"
15456 else
15457         echo "Your stdio uses signed chars." >&4
15458         stdchar="char"
15459 fi
15460 $rm -f stdioh
15461
15462
15463
15464 : see if time exists
15465 echo " "
15466 if test "X$d_time" = X -o X"$timetype" = X; then
15467     if set time val -f d_time; eval $csym; $val; then
15468                 echo 'time() found.' >&4
15469                 val="$define"
15470                 rp="What is the type returned by time() on this system?"
15471                 set time_t timetype long stdio.h sys/types.h
15472                 eval $typedef_ask
15473     else
15474                 echo 'time() not found, hope that will do.' >&4
15475                 val="$undef"
15476                 timetype='int';
15477     fi
15478     set d_time
15479     eval $setvar
15480 fi
15481
15482 : see what type uids are declared as in the kernel
15483 echo " "
15484 echo "Looking for the type for user ids returned by getuid()."
15485 set uid_t uidtype xxx stdio.h sys/types.h
15486 eval $typedef
15487 case "$uidtype" in
15488 xxx)
15489         xxx=`./findhdr sys/user.h`
15490         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15491         case $1 in
15492         unsigned) dflt="$1 $2" ;;
15493         *) dflt="$1" ;;
15494         esac
15495         ;;
15496 *) dflt="$uidtype";;
15497 esac
15498 case "$uidtype" in
15499 uid_t)  echo "uid_t found." ;;
15500 *)      rp="What is the type for user ids returned by getuid()?"
15501         . ./myread
15502         uidtype="$ans"
15503         ;;
15504 esac
15505
15506 echo " "
15507 case "$uidtype" in
15508 *_t) zzz="$uidtype"     ;;
15509 *)   zzz="uid"          ;;
15510 esac
15511 echo "Checking the size of $zzz..." >&4 
15512 cat > try.c <<EOCP
15513 #include <sys/types.h>
15514 #include <stdio.h>
15515 int main() {
15516     printf("%d\n", (int)sizeof($uidtype));
15517     exit(0);
15518 }
15519 EOCP
15520 set try
15521 if eval $compile_ok; then
15522         yyy=`$run ./try`
15523         case "$yyy" in
15524         '')     uidsize=4
15525                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15526                 ;;
15527         *)      uidsize=$yyy
15528                 echo "Your $zzz is $uidsize bytes long."
15529                 ;;
15530         esac
15531 else
15532         uidsize=4
15533         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15534 fi
15535
15536 echo " "
15537 case "$uidtype" in
15538 *_t) zzz="$uidtype"     ;;
15539 *)   zzz="uid"          ;;
15540 esac
15541 echo "Checking the sign of $zzz..." >&4
15542 cat > try.c <<EOCP
15543 #include <sys/types.h>
15544 #include <stdio.h>
15545 int main() {
15546         $uidtype foo = -1;
15547         if (foo < 0)
15548                 printf("-1\n");
15549         else
15550                 printf("1\n");
15551 }
15552 EOCP
15553 set try
15554 if eval $compile; then
15555         yyy=`$run ./try`
15556         case "$yyy" in
15557         '')     uidsign=1
15558                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15559                 ;;
15560         *)      uidsign=$yyy
15561                 case "$uidsign" in
15562                  1) echo "Your $zzz is unsigned." ;;
15563                 -1) echo "Your $zzz is signed."   ;;
15564                 esac
15565                 ;;
15566         esac
15567 else
15568         uidsign=1
15569         echo "(I can't compile the test program--guessing unsigned.)" >&4
15570 fi
15571
15572
15573
15574 echo " "
15575 $echo "Checking the format string to be used for uids..." >&4
15576
15577 case "$uidsign" in
15578 -1)     if $test X"$uidsize" = X"$ivsize"; then
15579                 uidformat="$ivdformat"
15580         else
15581                 if $test X"$uidsize" = X"$longsize"; then
15582                         uidformat='"ld"'
15583                 else
15584                         if $test X"$uidsize" = X"$intsize"; then
15585                                 uidformat='"d"'
15586                         else
15587                                 if $test X"$uidsize" = X"$shortsize"; then
15588                                         uidformat='"hd"'
15589                                 fi
15590                         fi
15591                 fi
15592         fi
15593         ;;
15594 *)      if $test X"$uidsize" = X"$uvsize"; then
15595                 uidformat="$uvuformat"
15596         else
15597                 if $test X"$uidsize" = X"$longsize"; then
15598                         uidformat='"lu"'
15599                 else
15600                         if $test X"$uidsize" = X"$intsize"; then
15601                                 uidformat='"u"'
15602                         else
15603                                 if $test X"$uidsize" = X"$shortsize"; then
15604                                         uidformat='"hu"'
15605                                 fi
15606                         fi
15607                 fi
15608         fi
15609         ;;
15610 esac
15611
15612 : determine compiler compiler
15613 case "$yacc" in
15614 '')
15615         dflt=yacc;;
15616 *)
15617         dflt="$yacc";;
15618 esac
15619 echo " "
15620 comp='yacc'
15621 if $test -f "$byacc"; then
15622         dflt="$byacc"
15623         comp="byacc or $comp"
15624 fi
15625 if $test -f "$bison"; then
15626         comp="$comp or bison -y"
15627 fi
15628 rp="Which compiler compiler ($comp) shall I use?"
15629 . ./myread
15630 yacc="$ans"
15631 case "$yacc" in
15632 *bis*)
15633         case "$yacc" in
15634         *-y*) ;;
15635         *)
15636                 yacc="$yacc -y"
15637                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15638                 ;;
15639         esac
15640         ;;
15641 esac
15642
15643 : see if fcntl.h is there
15644 val=''
15645 set fcntl.h val
15646 eval $inhdr
15647
15648 : see if we can include fcntl.h
15649 case "$val" in
15650 "$define")
15651         echo " "
15652         if $h_fcntl; then
15653                 val="$define"
15654                 echo "We'll be including <fcntl.h>." >&4
15655         else
15656                 val="$undef"
15657                 if $h_sysfile; then
15658         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15659                 else
15660                         echo "We won't be including <fcntl.h>." >&4
15661                 fi
15662         fi
15663         ;;
15664 *)
15665         h_fcntl=false
15666         val="$undef"
15667         ;;
15668 esac
15669 set i_fcntl
15670 eval $setvar
15671
15672 : see if this is a iconv.h system
15673 set iconv.h i_iconv
15674 eval $inhdr
15675
15676 : see if this is a ieeefp.h system
15677 set ieeefp.h i_ieeefp
15678 eval $inhdr
15679
15680 : see if this is a libutil.h system
15681 set libutil.h i_libutil
15682 eval $inhdr
15683
15684 : see if locale.h is available
15685 set locale.h i_locale
15686 eval $inhdr
15687
15688 : see if mach cthreads are available
15689 if test "X$usethreads" = "X$define"; then
15690         set mach/cthreads.h i_machcthr
15691         eval $inhdr
15692 else
15693         i_machcthr="$undef"
15694 fi
15695
15696
15697
15698 : see if this is a math.h system
15699 set math.h i_math
15700 eval $inhdr
15701
15702 : see if this is a mntent.h system
15703 set mntent.h i_mntent
15704 eval $inhdr
15705
15706 : see if ndbm.h is available
15707 set ndbm.h t_ndbm
15708 eval $inhdr
15709 case "$t_ndbm" in
15710 $define)
15711         : see if dbm_open exists
15712         set dbm_open d_dbm_open
15713         eval $inlibc
15714         case "$d_dbm_open" in
15715         $undef)
15716                 t_ndbm="$undef"
15717                 echo "We won't be including <ndbm.h>"
15718                 ;;
15719         esac
15720         ;;
15721 esac
15722 val="$t_ndbm"
15723 set i_ndbm
15724 eval $setvar
15725
15726 : see if net/errno.h is available
15727 val=''
15728 set net/errno.h val
15729 eval $inhdr
15730
15731 : Unfortunately, it causes problems on some systems.  Arrgh.
15732 case "$val" in
15733 $define)
15734         cat > try.c <<'EOM'
15735 #include <stdio.h>
15736 #include <errno.h>
15737 #include <net/errno.h>
15738 int func()
15739 {
15740         return ENOTSOCK;
15741 }
15742 EOM
15743         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15744                 echo "We'll be including <net/errno.h>." >&4
15745         else
15746                 echo "We won't be including <net/errno.h>." >&4
15747                 val="$undef"
15748         fi
15749         $rm -f try.* try
15750         ;;
15751 esac
15752 set i_neterrno
15753 eval $setvar
15754
15755 : see if netinet/tcp.h is available
15756 set netinet/tcp.h i_netinettcp
15757 eval $inhdr
15758
15759 : see if this is a poll.h system
15760 set poll.h i_poll
15761 eval $inhdr
15762
15763 : see if this is a prot.h system
15764 set prot.h i_prot
15765 eval $inhdr
15766
15767 echo " "
15768 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15769 $cat <<'EOSH' > Cppsym.know
15770 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15771 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15772 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15773 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15774 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15775 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15776 bull c cadmus clipper CMU COFF COMPILER_VERSION
15777 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15778 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15779 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15780 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15781 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15782 H3050R H3050RX hbullx20 hcx host_mips
15783 hp200 hp300 hp700 HP700 hp800 hp9000
15784 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15785 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15786 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15787 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15788 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15789 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15790 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15791 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15792 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15793 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15794 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15795 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15796 MATH_HAS_NO_SIDE_EFFECTS
15797 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15798 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15799 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15800 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15801 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15802 NetBSD news1500 news1700 news1800 news1900 news3700
15803 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15804 ns32016 ns32332 ns32k nsc32000
15805 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15806 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15807 pc532 pdp11 PGC PIC plexus PORTAR posix
15808 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15809 POSIX_C_SOURCE POSIX_SOURCE POWER
15810 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15811 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15812 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15813 sony sony_news sonyrisc sparc sparclite spectrum
15814 stardent stdc STDC_EXT stratos sun sun3 sun386
15815 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15816 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15817 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15818 sysV68 sysV88 Tek4132 Tek4300 titan
15819 TM3200 TM5400 TM5600
15820 tower tower32 tower32_200 tower32_600 tower32_700
15821 tower32_800 tower32_850 tss
15822 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15823 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15824 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15825 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15826 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15827 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15828 z8000
15829 EOSH
15830 # Maybe put other stuff here too.
15831 cat <<EOSH >>Cppsym.know
15832 $osname
15833 EOSH
15834 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15835 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15836 $cat Cppsym.know > Cppsym.c
15837 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15838 $rm -f Cppsym.a Cppsym.b Cppsym.c
15839 cat <<EOSH > Cppsym
15840 $startsh
15841 if $test \$# -gt 0; then
15842     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15843     if $test -s Cppsym.got; then
15844         $rm -f Cppsym.got
15845         exit 0
15846     fi
15847     $rm -f Cppsym.got
15848     exit 1
15849 else
15850     $tr " " "$trnl" | ./Cppsym.try
15851     exit 0
15852 fi
15853 EOSH
15854 chmod +x Cppsym
15855 $eunicefix Cppsym
15856 cat <<EOSH > Cppsym.try
15857 $startsh
15858 cat <<'EOCP' > try.c
15859 #include <stdio.h>
15860 int main() {
15861 EOCP
15862 $awk \\
15863 EOSH
15864 cat <<'EOSH' >> Cppsym.try
15865 'length($1) > 0 {
15866     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
15867     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
15868     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
15869     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
15870 }'       >> try.c
15871 echo 'return 0;}' >> try.c
15872 EOSH
15873 cat <<EOSH >> Cppsym.try
15874 ccflags="$ccflags"
15875 case "$osname-$gccversion" in
15876 irix-) ccflags="\$ccflags -woff 1178" ;;
15877 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15878 esac
15879 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15880 EOSH
15881 chmod +x Cppsym.try
15882 $eunicefix Cppsym.try
15883 ./Cppsym < Cppsym.know > Cppsym.true
15884 : now check the C compiler for additional symbols
15885 postprocess_cc_v=''
15886 case "$osname" in
15887 aix) postprocess_cc_v="|$tr , ' '" ;;
15888 esac
15889 $cat >ccsym <<EOS
15890 $startsh
15891 $cat >tmp.c <<EOF
15892 extern int foo;
15893 EOF
15894 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15895 do
15896         case "\$i" in
15897         -D*) echo "\$i" | $sed 's/^-D//';;
15898         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15899         esac
15900 done
15901 $rm -f try.c
15902 EOS
15903 postprocess_cc_v=''
15904 chmod +x ccsym
15905 $eunicefix ccsym
15906 ./ccsym > ccsym1.raw
15907 if $test -s ccsym1.raw; then
15908        $sort ccsym1.raw | $uniq >ccsym.raw
15909 else
15910        mv ccsym1.raw ccsym.raw
15911 fi
15912
15913 $awk '/\=/ { print $0; next }
15914         { print $0"=1" }' ccsym.raw >ccsym.list
15915 $awk '/\=/ { print $0; next }
15916         { print $0"=1" }' Cppsym.true >ccsym.true
15917 $comm -13 ccsym.true ccsym.list >ccsym.own
15918 $comm -12 ccsym.true ccsym.list >ccsym.com
15919 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15920 also=''
15921 if $test -z ccsym.raw; then
15922         echo "Your C compiler doesn't seem to define any symbols!" >&4
15923         echo " "
15924         echo "However, your C preprocessor defines the following symbols:"
15925         $cat Cppsym.true
15926         ccsymbols=''
15927         cppsymbols=`$cat Cppsym.true`
15928         cppsymbols=`echo $cppsymbols`
15929         cppccsymbols="$cppsymbols"
15930 else
15931         if $test -s ccsym.com; then
15932                 echo "Your C compiler and pre-processor define these symbols:"
15933                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15934                 also='also '
15935                 symbols='ones'
15936                 cppccsymbols=`$cat ccsym.com`
15937                 cppccsymbols=`echo $cppccsymbols`
15938                 $test "$silent" || sleep 1
15939         fi
15940         if $test -s ccsym.cpp; then
15941                 $test "$also" && echo " "
15942                 echo "Your C pre-processor ${also}defines the following symbols:"
15943                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15944                 also='further '
15945                 cppsymbols=`$cat ccsym.cpp`
15946                 cppsymbols=`echo $cppsymbols`
15947                 $test "$silent" || sleep 1
15948         fi
15949         if $test -s ccsym.own; then
15950                 $test "$also" && echo " "
15951                 echo "Your C compiler ${also}defines the following cpp symbols:"
15952                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15953                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15954                 ccsymbols=`$cat ccsym.own`
15955                 ccsymbols=`echo $ccsymbols`
15956                 $test "$silent" || sleep 1
15957         fi
15958 fi
15959
15960 : see if this is a termio system
15961 val="$undef"
15962 val2="$undef"
15963 val3="$undef"
15964 if $test `./findhdr termios.h`; then
15965         set tcsetattr i_termios
15966         eval $inlibc
15967         val3="$i_termios"
15968 fi
15969 echo " "
15970 case "$val3" in
15971 "$define") echo "You have POSIX termios.h... good!" >&4;;
15972 *) if ./Cppsym pyr; then
15973                 case "`/bin/universe`" in
15974                 ucb) if $test `./findhdr sgtty.h`; then
15975                                 val2="$define"
15976                                 echo "<sgtty.h> found." >&4
15977                         else
15978                                 echo "System is pyramid with BSD universe."
15979                                 echo "<sgtty.h> not found--you could have problems." >&4
15980                         fi;;
15981                 *) if $test `./findhdr termio.h`; then
15982                                 val="$define"
15983                                 echo "<termio.h> found." >&4
15984                         else
15985                                 echo "System is pyramid with USG universe."
15986                                 echo "<termio.h> not found--you could have problems." >&4
15987                         fi;;
15988                 esac
15989         elif ./usg; then
15990                 if $test `./findhdr termio.h`; then
15991                         echo "<termio.h> found." >&4
15992                         val="$define"
15993                 elif $test `./findhdr sgtty.h`; then
15994                         echo "<sgtty.h> found." >&4
15995                         val2="$define"
15996                 else
15997 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15998                 fi
15999         else
16000                 if $test `./findhdr sgtty.h`; then
16001                         echo "<sgtty.h> found." >&4
16002                         val2="$define"
16003                 elif $test `./findhdr termio.h`; then
16004                         echo "<termio.h> found." >&4
16005                         val="$define"
16006                 else
16007 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16008                 fi
16009         fi;;
16010 esac
16011 set i_termio; eval $setvar
16012 val=$val2; set i_sgtty; eval $setvar
16013 val=$val3; set i_termios; eval $setvar
16014
16015 : see if this is a shadow.h system
16016 set shadow.h i_shadow
16017 eval $inhdr
16018
16019 : see if stddef is available
16020 set stddef.h i_stddef
16021 eval $inhdr
16022
16023 : see if this is a sunmath.h system
16024 set sunmath.h i_sunmath
16025 eval $inhdr
16026
16027 : see if sys/access.h is available
16028 set sys/access.h i_sysaccess
16029 eval $inhdr
16030
16031 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16032 set sys/filio.h i_sysfilio
16033 eval $inhdr
16034 echo " "
16035 if $test `./findhdr sys/ioctl.h`; then
16036         val="$define"
16037         echo '<sys/ioctl.h> found.' >&4
16038 else
16039         val="$undef"
16040         if $test $i_sysfilio = "$define"; then
16041             echo '<sys/ioctl.h> NOT found.' >&4
16042         else
16043                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16044                 $test $i_termio = "$define" && xxx="termio.h"
16045                 $test $i_termios = "$define" && xxx="termios.h"
16046 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16047         fi
16048 fi
16049 set i_sysioctl
16050 eval $setvar
16051
16052 : see if socket ioctl defs are in sys/sockio.h
16053 echo " "
16054 xxx=`./findhdr sys/sockio.h`
16055 if $test "$xxx"; then
16056         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16057                 val="$define"
16058                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16059         else
16060                 val="$undef"
16061                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16062         fi
16063 else
16064         val="$undef"
16065         $cat <<EOM
16066 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16067 EOM
16068 fi
16069 set i_syssockio
16070 eval $setvar
16071
16072
16073 : see if this is a syslog.h system
16074 set syslog.h i_syslog
16075 eval $inhdr
16076
16077
16078 : see if this is a sys/mode.h system
16079 set sys/mode.h i_sysmode
16080 eval $inhdr
16081
16082 : see if sys/resource.h has to be included
16083 set sys/resource.h i_sysresrc
16084 eval $inhdr
16085
16086 : see if sys/security.h is available
16087 set sys/security.h i_syssecrt
16088 eval $inhdr
16089
16090 : see if this is a sys/statvfs.h system
16091 set sys/statvfs.h i_sysstatvfs
16092 eval $inhdr
16093
16094 : see if this is a sys/un.h system
16095 set sys/un.h i_sysun
16096 eval $inhdr
16097
16098
16099 : see if this is a sys/utsname.h system
16100 set sys/utsname.h i_sysutsname
16101 eval $inhdr
16102
16103 : see if this is a syswait system
16104 set sys/wait.h i_syswait
16105 eval $inhdr
16106
16107 : see if this is a ustat.h system
16108 set ustat.h i_ustat
16109 eval $inhdr
16110
16111 : see if this is an utime system
16112 set utime.h i_utime
16113 eval $inhdr
16114
16115 : see if this is a values.h system
16116 set values.h i_values
16117 eval $inhdr
16118
16119 : see if this is a vfork system
16120 case "$d_vfork" in
16121 "$define")
16122         set vfork.h i_vfork
16123         eval $inhdr
16124         ;;
16125 *)
16126         i_vfork="$undef"
16127         ;;
16128 esac
16129
16130 : see if gdbm.h is available
16131 set gdbm.h t_gdbm
16132 eval $inhdr
16133 case "$t_gdbm" in
16134 $define)
16135         : see if gdbm_open exists
16136         set gdbm_open d_gdbm_open
16137         eval $inlibc
16138         case "$d_gdbm_open" in
16139         $undef)
16140                 t_gdbm="$undef"
16141                 echo "We won't be including <gdbm.h>"
16142                 ;;
16143         esac
16144         ;;
16145 esac
16146 val="$t_gdbm"
16147 set i_gdbm
16148 eval $setvar
16149
16150 echo " "
16151 echo "Looking for extensions..." >&4
16152 : If we are using the old config.sh, known_extensions may contain
16153 : old or inaccurate or duplicate values.
16154 known_extensions=''
16155 nonxs_extensions=''
16156 : We do not use find because it might not be available.
16157 : We do not just use MANIFEST because the user may have dropped
16158 : some additional extensions into the source tree and expect them
16159 : to be built.
16160
16161 : Function to recursively find available extensions, ignoring DynaLoader
16162 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16163 find_extensions='
16164     for xxx in *; do
16165        case "$xxx" in
16166            DynaLoader|dynaload) ;;
16167            *)
16168            if $test -f $xxx/$xxx.xs; then
16169                known_extensions="$known_extensions $1$xxx";
16170            elif $test -f $xxx/Makefile.PL; then
16171                nonxs_extensions="$nonxs_extensions $1$xxx";
16172            else
16173                if $test -d $xxx -a $# -lt 10; then
16174                    set $1$xxx/ $*;
16175                    cd $xxx;
16176                    eval $find_extensions;
16177                    cd ..;
16178                    shift;
16179                fi;
16180            fi
16181            ;;
16182        esac;
16183     done'
16184 tdir=`pwd`
16185 cd $rsrc/ext
16186 set X
16187 shift
16188 eval $find_extensions
16189 set X $nonxs_extensions
16190 shift
16191 nonxs_extensions="$*"
16192 set X $known_extensions
16193 shift
16194 known_extensions="$*"
16195 cd $tdir
16196
16197 : Now see which are supported on this system.
16198 avail_ext=''
16199 for xxx in $known_extensions ; do
16200         case "$xxx" in
16201         DB_File|db_file)
16202                 case "$i_db" in
16203                 $define) avail_ext="$avail_ext $xxx" ;;
16204                 esac
16205                 ;;
16206         GDBM_File|gdbm_fil)
16207                 case "$i_gdbm" in 
16208                 $define) avail_ext="$avail_ext $xxx" ;;
16209                 esac
16210                 ;;
16211         NDBM_File|ndbm_fil)
16212                 case "$i_ndbm" in
16213                 $define)
16214                     case "$osname-$use64bitint" in
16215                     hpux-define)
16216                         case "$libs" in
16217                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16218                         esac
16219                         ;;
16220                     *) avail_ext="$avail_ext $xxx" ;;
16221                     esac
16222                     ;;
16223                 esac
16224                 ;;
16225         ODBM_File|odbm_fil) 
16226                 case "${i_dbm}${i_rpcsvcdbm}" in
16227                 *"${define}"*)
16228                     case "$osname-$use64bitint" in
16229                     hpux-define)
16230                         case "$libs" in
16231                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16232                         esac
16233                         ;;
16234                     *) avail_ext="$avail_ext $xxx" ;;
16235                     esac
16236                     ;;
16237                 esac
16238                 ;;
16239         POSIX|posix)
16240                 case "$useposix" in
16241                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16242                 esac
16243                 ;;
16244         Opcode|opcode)
16245                 case "$useopcode" in
16246                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16247                 esac
16248                 ;;
16249         Socket|socket)
16250                 case "$d_socket" in 
16251                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16252                 esac
16253                 ;;
16254         Sys/Syslog|sys/syslog)
16255                 : XXX syslog requires socket
16256                 case "$d_socket" in 
16257                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16258                 esac
16259                 ;;
16260         Thread|thread)
16261                 case "$usethreads" in
16262                 true|$define|y)
16263                         case "$useithreads" in
16264                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16265                         esac
16266                 esac
16267                 ;;
16268         IPC/SysV|ipc/sysv)
16269                 : XXX Do we need a useipcsysv variable here
16270                 case "${d_msg}${d_sem}${d_shm}" in 
16271                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16272                 esac
16273                 ;;
16274         *)      avail_ext="$avail_ext $xxx"
16275                 ;;
16276         esac
16277 done
16278
16279 set X $avail_ext
16280 shift
16281 avail_ext="$*"
16282
16283 : Now see which nonxs extensions are supported on this system.
16284 : For now assume all are.
16285 nonxs_ext=''
16286 for xxx in $nonxs_extensions ; do
16287         case "$xxx" in
16288         *)      nonxs_ext="$nonxs_ext $xxx"
16289                 ;;
16290         esac
16291 done
16292
16293 set X $nonxs_ext
16294 shift
16295 nonxs_ext="$*"
16296
16297 case $usedl in
16298 $define)
16299         $cat <<EOM
16300 A number of extensions are supplied with $package.  You may choose to
16301 compile these extensions for dynamic loading (the default), compile
16302 them into the $package executable (static loading), or not include
16303 them at all.  Answer "none" to include no extensions.
16304 Note that DynaLoader is always built and need not be mentioned here.
16305
16306 EOM
16307         case "$dynamic_ext" in
16308         '') dflt="$avail_ext" ;;
16309         *)      dflt="$dynamic_ext"
16310                 # Perhaps we are reusing an old out-of-date config.sh.
16311                 case "$hint" in
16312                 previous)
16313                         if test X"$dynamic_ext" != X"$avail_ext"; then
16314                                 $cat <<EOM
16315 NOTICE:  Your previous config.sh list may be incorrect. 
16316 The extensions now available to you are 
16317         ${avail_ext}
16318 but the default list from your previous config.sh is
16319         ${dynamic_ext} 
16320
16321 EOM
16322                         fi
16323                         ;;
16324                 esac
16325                 ;;
16326         esac
16327         case "$dflt" in
16328         '')     dflt=none;;
16329         esac
16330         rp="What extensions do you wish to load dynamically?"
16331         . ./myread
16332         case "$ans" in
16333         none) dynamic_ext=' ' ;;
16334         *) dynamic_ext="$ans" ;;
16335         esac
16336
16337         case "$static_ext" in
16338         '')
16339                 : Exclude those already listed in dynamic linking
16340                 dflt=''
16341                 for xxx in $avail_ext; do
16342                         case " $dynamic_ext " in
16343                         *" $xxx "*) ;;
16344                         *) dflt="$dflt $xxx" ;;
16345                         esac
16346                 done
16347                 set X $dflt
16348                 shift
16349                 dflt="$*"
16350                 ;;
16351         *)  dflt="$static_ext" 
16352                 ;;
16353         esac
16354
16355         case "$dflt" in
16356         '')     dflt=none;;
16357         esac
16358         rp="What extensions do you wish to load statically?"
16359         . ./myread
16360         case "$ans" in
16361         none) static_ext=' ' ;;
16362         *) static_ext="$ans" ;;
16363         esac
16364         ;;
16365 *)
16366         $cat <<EOM
16367 A number of extensions are supplied with $package.  Answer "none" 
16368 to include no extensions. 
16369 Note that DynaLoader is always built and need not be mentioned here.
16370
16371 EOM
16372         case "$static_ext" in
16373         '') dflt="$avail_ext" ;;
16374         *)      dflt="$static_ext"
16375                 # Perhaps we are reusing an old out-of-date config.sh.
16376                 case "$hint" in
16377                 previous)
16378                         if test X"$static_ext" != X"$avail_ext"; then
16379                                 $cat <<EOM
16380 NOTICE:  Your previous config.sh list may be incorrect. 
16381 The extensions now available to you are 
16382         ${avail_ext}
16383 but the default list from your previous config.sh is
16384         ${static_ext} 
16385
16386 EOM
16387                         fi
16388                         ;;
16389                 esac
16390                 ;;
16391         esac
16392         : Exclude those that are not xs extensions
16393         case "$dflt" in
16394         '')     dflt=none;;
16395         esac
16396         rp="What extensions do you wish to include?"
16397         . ./myread
16398         case "$ans" in
16399         none) static_ext=' ' ;;
16400         *) static_ext="$ans" ;;
16401         esac
16402         ;;
16403 esac
16404
16405 set X $dynamic_ext $static_ext $nonxs_ext
16406 shift
16407 extensions="$*"
16408
16409 : Remove libraries needed only for extensions
16410 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16411 : The exception is SunOS 4.x, which needs them.
16412 case "${osname}X${osvers}" in
16413 sunos*X4*)
16414     perllibs="$libs"
16415     ;;
16416 *) case "$usedl" in
16417     $define|true|[yY]*)
16418             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16419             shift
16420             perllibs="$*"
16421             ;;
16422     *)  perllibs="$libs"
16423             ;;
16424     esac
16425     ;;
16426 esac
16427
16428 : Remove build directory name from cppstdin so it can be used from
16429 : either the present location or the final installed location.
16430 echo " "
16431 : Get out of the UU directory to get correct path name.
16432 cd ..
16433 case "$cppstdin" in
16434 `pwd`/cppstdin)
16435         echo "Stripping down cppstdin path name"
16436         cppstdin=cppstdin
16437         ;;
16438 esac
16439 cd UU
16440
16441 : end of configuration questions
16442 echo " "
16443 echo "End of configuration questions."
16444 echo " "
16445
16446 : back to where it started
16447 if test -d ../UU; then
16448         cd ..
16449 fi
16450
16451 : configuration may be patched via a 'config.over' file
16452 if $test -f config.over; then
16453         echo " "
16454         dflt=y
16455         rp='I see a config.over file.  Do you wish to load it?'
16456         . UU/myread
16457         case "$ans" in
16458         n*) echo "OK, I'll ignore it.";;
16459         *)      . ./config.over
16460                 echo "Configuration override changes have been loaded."
16461                 ;;
16462         esac
16463 fi
16464
16465 : in case they want portability, strip down executable paths
16466 case "$d_portable" in
16467 "$define")
16468         echo " "
16469         echo "Stripping down executable paths..." >&4
16470         for file in $loclist $trylist; do
16471                 eval temp=\$$file
16472                 eval $file=`basename $temp`
16473         done
16474         ;;
16475 esac
16476
16477 : create config.sh file
16478 echo " "
16479 echo "Creating config.sh..." >&4
16480 $spitshell <<EOT >config.sh
16481 $startsh
16482 #
16483 # This file was produced by running the Configure script. It holds all the
16484 # definitions figured out by Configure. Should you modify one of these values,
16485 # do not forget to propagate your changes by running "Configure -der". You may
16486 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16487 #
16488
16489 # Package name      : $package
16490 # Source directory  : $src
16491 # Configuration time: $cf_time
16492 # Configured by     : $cf_by
16493 # Target system     : $myuname
16494
16495 Author='$Author'
16496 Date='$Date'
16497 Header='$Header'
16498 Id='$Id'
16499 Locker='$Locker'
16500 Log='$Log'
16501 Mcc='$Mcc'
16502 RCSfile='$RCSfile'
16503 Revision='$Revision'
16504 Source='$Source'
16505 State='$State'
16506 _a='$_a'
16507 _exe='$_exe'
16508 _o='$_o'
16509 afs='$afs'
16510 afsroot='$afsroot'
16511 alignbytes='$alignbytes'
16512 ansi2knr='$ansi2knr'
16513 aphostname='$aphostname'
16514 api_revision='$api_revision'
16515 api_subversion='$api_subversion'
16516 api_version='$api_version'
16517 api_versionstring='$api_versionstring'
16518 ar='$ar'
16519 archlib='$archlib'
16520 archlibexp='$archlibexp'
16521 archname64='$archname64'
16522 archname='$archname'
16523 archobjs='$archobjs'
16524 awk='$awk'
16525 baserev='$baserev'
16526 bash='$bash'
16527 bin='$bin'
16528 bincompat5005='$bincompat5005'
16529 binexp='$binexp'
16530 bison='$bison'
16531 byacc='$byacc'
16532 byteorder='$byteorder'
16533 c='$c'
16534 castflags='$castflags'
16535 cat='$cat'
16536 cc='$cc'
16537 cccdlflags='$cccdlflags'
16538 ccdlflags='$ccdlflags'
16539 ccflags='$ccflags'
16540 ccflags_uselargefiles='$ccflags_uselargefiles'
16541 ccname='$ccname'
16542 ccsymbols='$ccsymbols'
16543 ccversion='$ccversion'
16544 cf_by='$cf_by'
16545 cf_email='$cf_email'
16546 cf_time='$cf_time'
16547 charsize='$charsize'
16548 chgrp='$chgrp'
16549 chmod='$chmod'
16550 chown='$chown'
16551 clocktype='$clocktype'
16552 comm='$comm'
16553 compress='$compress'
16554 contains='$contains'
16555 cp='$cp'
16556 cpio='$cpio'
16557 cpp='$cpp'
16558 cpp_stuff='$cpp_stuff'
16559 cppccsymbols='$cppccsymbols'
16560 cppflags='$cppflags'
16561 cpplast='$cpplast'
16562 cppminus='$cppminus'
16563 cpprun='$cpprun'
16564 cppstdin='$cppstdin'
16565 cppsymbols='$cppsymbols'
16566 cryptlib='$cryptlib'
16567 csh='$csh'
16568 d_Gconvert='$d_Gconvert'
16569 d_PRIEUldbl='$d_PRIEUldbl'
16570 d_PRIFUldbl='$d_PRIFUldbl'
16571 d_PRIGUldbl='$d_PRIGUldbl'
16572 d_PRIXU64='$d_PRIXU64'
16573 d_PRId64='$d_PRId64'
16574 d_PRIeldbl='$d_PRIeldbl'
16575 d_PRIfldbl='$d_PRIfldbl'
16576 d_PRIgldbl='$d_PRIgldbl'
16577 d_PRIi64='$d_PRIi64'
16578 d_PRIo64='$d_PRIo64'
16579 d_PRIu64='$d_PRIu64'
16580 d_PRIx64='$d_PRIx64'
16581 d_SCNfldbl='$d_SCNfldbl'
16582 d__fwalk='$d__fwalk'
16583 d_access='$d_access'
16584 d_accessx='$d_accessx'
16585 d_alarm='$d_alarm'
16586 d_archlib='$d_archlib'
16587 d_atolf='$d_atolf'
16588 d_atoll='$d_atoll'
16589 d_attribut='$d_attribut'
16590 d_bcmp='$d_bcmp'
16591 d_bcopy='$d_bcopy'
16592 d_bincompat5005='$d_bincompat5005'
16593 d_bsd='$d_bsd'
16594 d_bsdgetpgrp='$d_bsdgetpgrp'
16595 d_bsdsetpgrp='$d_bsdsetpgrp'
16596 d_bzero='$d_bzero'
16597 d_casti32='$d_casti32'
16598 d_castneg='$d_castneg'
16599 d_charvspr='$d_charvspr'
16600 d_chown='$d_chown'
16601 d_chroot='$d_chroot'
16602 d_chsize='$d_chsize'
16603 d_closedir='$d_closedir'
16604 d_cmsghdr_s='$d_cmsghdr_s'
16605 d_const='$d_const'
16606 d_crypt='$d_crypt'
16607 d_csh='$d_csh'
16608 d_cuserid='$d_cuserid'
16609 d_dbl_dig='$d_dbl_dig'
16610 d_dbminitproto='$d_dbminitproto'
16611 d_difftime='$d_difftime'
16612 d_dirnamlen='$d_dirnamlen'
16613 d_dlerror='$d_dlerror'
16614 d_dlopen='$d_dlopen'
16615 d_dlsymun='$d_dlsymun'
16616 d_dosuid='$d_dosuid'
16617 d_drand48proto='$d_drand48proto'
16618 d_dup2='$d_dup2'
16619 d_eaccess='$d_eaccess'
16620 d_endgrent='$d_endgrent'
16621 d_endhent='$d_endhent'
16622 d_endnent='$d_endnent'
16623 d_endpent='$d_endpent'
16624 d_endpwent='$d_endpwent'
16625 d_endsent='$d_endsent'
16626 d_eofnblk='$d_eofnblk'
16627 d_eunice='$d_eunice'
16628 d_fchdir='$d_fchdir'
16629 d_fchmod='$d_fchmod'
16630 d_fchown='$d_fchown'
16631 d_fcntl='$d_fcntl'
16632 d_fcntl_can_lock='$d_fcntl_can_lock'
16633 d_fd_macros='$d_fd_macros'
16634 d_fd_set='$d_fd_set'
16635 d_fds_bits='$d_fds_bits'
16636 d_fgetpos='$d_fgetpos'
16637 d_flexfnam='$d_flexfnam'
16638 d_flock='$d_flock'
16639 d_flockproto='$d_flockproto'
16640 d_fork='$d_fork'
16641 d_fpathconf='$d_fpathconf'
16642 d_fpos64_t='$d_fpos64_t'
16643 d_frexpl='$d_frexpl'
16644 d_fs_data_s='$d_fs_data_s'
16645 d_fseeko='$d_fseeko'
16646 d_fsetpos='$d_fsetpos'
16647 d_fstatfs='$d_fstatfs'
16648 d_fstatvfs='$d_fstatvfs'
16649 d_fsync='$d_fsync'
16650 d_ftello='$d_ftello'
16651 d_ftime='$d_ftime'
16652 d_getcwd='$d_getcwd'
16653 d_getespwnam='$d_getespwnam'
16654 d_getfsstat='$d_getfsstat'
16655 d_getgrent='$d_getgrent'
16656 d_getgrps='$d_getgrps'
16657 d_gethbyaddr='$d_gethbyaddr'
16658 d_gethbyname='$d_gethbyname'
16659 d_gethent='$d_gethent'
16660 d_gethname='$d_gethname'
16661 d_gethostprotos='$d_gethostprotos'
16662 d_getitimer='$d_getitimer'
16663 d_getlogin='$d_getlogin'
16664 d_getmnt='$d_getmnt'
16665 d_getmntent='$d_getmntent'
16666 d_getnbyaddr='$d_getnbyaddr'
16667 d_getnbyname='$d_getnbyname'
16668 d_getnent='$d_getnent'
16669 d_getnetprotos='$d_getnetprotos'
16670 d_getpagsz='$d_getpagsz'
16671 d_getpbyname='$d_getpbyname'
16672 d_getpbynumber='$d_getpbynumber'
16673 d_getpent='$d_getpent'
16674 d_getpgid='$d_getpgid'
16675 d_getpgrp2='$d_getpgrp2'
16676 d_getpgrp='$d_getpgrp'
16677 d_getppid='$d_getppid'
16678 d_getprior='$d_getprior'
16679 d_getprotoprotos='$d_getprotoprotos'
16680 d_getprpwnam='$d_getprpwnam'
16681 d_getpwent='$d_getpwent'
16682 d_getsbyname='$d_getsbyname'
16683 d_getsbyport='$d_getsbyport'
16684 d_getsent='$d_getsent'
16685 d_getservprotos='$d_getservprotos'
16686 d_getspnam='$d_getspnam'
16687 d_gettimeod='$d_gettimeod'
16688 d_gnulibc='$d_gnulibc'
16689 d_grpasswd='$d_grpasswd'
16690 d_hasmntopt='$d_hasmntopt'
16691 d_htonl='$d_htonl'
16692 d_iconv='$d_iconv'
16693 d_index='$d_index'
16694 d_inetaton='$d_inetaton'
16695 d_int64_t='$d_int64_t'
16696 d_isascii='$d_isascii'
16697 d_isnan='$d_isnan'
16698 d_isnanl='$d_isnanl'
16699 d_killpg='$d_killpg'
16700 d_lchown='$d_lchown'
16701 d_ldbl_dig='$d_ldbl_dig'
16702 d_link='$d_link'
16703 d_locconv='$d_locconv'
16704 d_lockf='$d_lockf'
16705 d_longdbl='$d_longdbl'
16706 d_longlong='$d_longlong'
16707 d_lseekproto='$d_lseekproto'
16708 d_lstat='$d_lstat'
16709 d_madvise='$d_madvise'
16710 d_mblen='$d_mblen'
16711 d_mbstowcs='$d_mbstowcs'
16712 d_mbtowc='$d_mbtowc'
16713 d_memchr='$d_memchr'
16714 d_memcmp='$d_memcmp'
16715 d_memcpy='$d_memcpy'
16716 d_memmove='$d_memmove'
16717 d_memset='$d_memset'
16718 d_mkdir='$d_mkdir'
16719 d_mkdtemp='$d_mkdtemp'
16720 d_mkfifo='$d_mkfifo'
16721 d_mkstemp='$d_mkstemp'
16722 d_mkstemps='$d_mkstemps'
16723 d_mktime='$d_mktime'
16724 d_mmap='$d_mmap'
16725 d_modfl='$d_modfl'
16726 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16727 d_mprotect='$d_mprotect'
16728 d_msg='$d_msg'
16729 d_msg_ctrunc='$d_msg_ctrunc'
16730 d_msg_dontroute='$d_msg_dontroute'
16731 d_msg_oob='$d_msg_oob'
16732 d_msg_peek='$d_msg_peek'
16733 d_msg_proxy='$d_msg_proxy'
16734 d_msgctl='$d_msgctl'
16735 d_msgget='$d_msgget'
16736 d_msghdr_s='$d_msghdr_s'
16737 d_msgrcv='$d_msgrcv'
16738 d_msgsnd='$d_msgsnd'
16739 d_msync='$d_msync'
16740 d_munmap='$d_munmap'
16741 d_mymalloc='$d_mymalloc'
16742 d_nice='$d_nice'
16743 d_nv_preserves_uv='$d_nv_preserves_uv'
16744 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16745 d_off64_t='$d_off64_t'
16746 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16747 d_oldpthreads='$d_oldpthreads'
16748 d_oldsock='$d_oldsock'
16749 d_open3='$d_open3'
16750 d_pathconf='$d_pathconf'
16751 d_pause='$d_pause'
16752 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16753 d_phostname='$d_phostname'
16754 d_pipe='$d_pipe'
16755 d_poll='$d_poll'
16756 d_portable='$d_portable'
16757 d_pthread_yield='$d_pthread_yield'
16758 d_pwage='$d_pwage'
16759 d_pwchange='$d_pwchange'
16760 d_pwclass='$d_pwclass'
16761 d_pwcomment='$d_pwcomment'
16762 d_pwexpire='$d_pwexpire'
16763 d_pwgecos='$d_pwgecos'
16764 d_pwpasswd='$d_pwpasswd'
16765 d_pwquota='$d_pwquota'
16766 d_qgcvt='$d_qgcvt'
16767 d_quad='$d_quad'
16768 d_readdir='$d_readdir'
16769 d_readlink='$d_readlink'
16770 d_readv='$d_readv'
16771 d_recvmsg='$d_recvmsg'
16772 d_rename='$d_rename'
16773 d_rewinddir='$d_rewinddir'
16774 d_rmdir='$d_rmdir'
16775 d_safebcpy='$d_safebcpy'
16776 d_safemcpy='$d_safemcpy'
16777 d_sanemcmp='$d_sanemcmp'
16778 d_sbrkproto='$d_sbrkproto'
16779 d_sched_yield='$d_sched_yield'
16780 d_scm_rights='$d_scm_rights'
16781 d_seekdir='$d_seekdir'
16782 d_select='$d_select'
16783 d_sem='$d_sem'
16784 d_semctl='$d_semctl'
16785 d_semctl_semid_ds='$d_semctl_semid_ds'
16786 d_semctl_semun='$d_semctl_semun'
16787 d_semget='$d_semget'
16788 d_semop='$d_semop'
16789 d_sendmsg='$d_sendmsg'
16790 d_setegid='$d_setegid'
16791 d_seteuid='$d_seteuid'
16792 d_setgrent='$d_setgrent'
16793 d_setgrps='$d_setgrps'
16794 d_sethent='$d_sethent'
16795 d_setitimer='$d_setitimer'
16796 d_setlinebuf='$d_setlinebuf'
16797 d_setlocale='$d_setlocale'
16798 d_setnent='$d_setnent'
16799 d_setpent='$d_setpent'
16800 d_setpgid='$d_setpgid'
16801 d_setpgrp2='$d_setpgrp2'
16802 d_setpgrp='$d_setpgrp'
16803 d_setprior='$d_setprior'
16804 d_setproctitle='$d_setproctitle'
16805 d_setpwent='$d_setpwent'
16806 d_setregid='$d_setregid'
16807 d_setresgid='$d_setresgid'
16808 d_setresuid='$d_setresuid'
16809 d_setreuid='$d_setreuid'
16810 d_setrgid='$d_setrgid'
16811 d_setruid='$d_setruid'
16812 d_setsent='$d_setsent'
16813 d_setsid='$d_setsid'
16814 d_setvbuf='$d_setvbuf'
16815 d_sfio='$d_sfio'
16816 d_shm='$d_shm'
16817 d_shmat='$d_shmat'
16818 d_shmatprototype='$d_shmatprototype'
16819 d_shmctl='$d_shmctl'
16820 d_shmdt='$d_shmdt'
16821 d_shmget='$d_shmget'
16822 d_sigaction='$d_sigaction'
16823 d_sigprocmask='$d_sigprocmask'
16824 d_sigsetjmp='$d_sigsetjmp'
16825 d_sockatmark='$d_sockatmark'
16826 d_sockatmarkproto='$d_sockatmarkproto'
16827 d_socket='$d_socket'
16828 d_socklen_t='$d_socklen_t'
16829 d_sockpair='$d_sockpair'
16830 d_socks5_init='$d_socks5_init'
16831 d_sqrtl='$d_sqrtl'
16832 d_sresgproto='$d_sresgproto'
16833 d_sresuproto='$d_sresuproto'
16834 d_statblks='$d_statblks'
16835 d_statfs_f_flags='$d_statfs_f_flags'
16836 d_statfs_s='$d_statfs_s'
16837 d_statvfs='$d_statvfs'
16838 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16839 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16840 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16841 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16842 d_stdio_stream_array='$d_stdio_stream_array'
16843 d_stdiobase='$d_stdiobase'
16844 d_stdstdio='$d_stdstdio'
16845 d_strchr='$d_strchr'
16846 d_strcoll='$d_strcoll'
16847 d_strctcpy='$d_strctcpy'
16848 d_strerrm='$d_strerrm'
16849 d_strerror='$d_strerror'
16850 d_strftime='$d_strftime'
16851 d_strtod='$d_strtod'
16852 d_strtol='$d_strtol'
16853 d_strtold='$d_strtold'
16854 d_strtoll='$d_strtoll'
16855 d_strtoq='$d_strtoq'
16856 d_strtoul='$d_strtoul'
16857 d_strtoull='$d_strtoull'
16858 d_strtouq='$d_strtouq'
16859 d_strxfrm='$d_strxfrm'
16860 d_suidsafe='$d_suidsafe'
16861 d_symlink='$d_symlink'
16862 d_syscall='$d_syscall'
16863 d_syscallproto='$d_syscallproto'
16864 d_sysconf='$d_sysconf'
16865 d_sysernlst='$d_sysernlst'
16866 d_syserrlst='$d_syserrlst'
16867 d_system='$d_system'
16868 d_tcgetpgrp='$d_tcgetpgrp'
16869 d_tcsetpgrp='$d_tcsetpgrp'
16870 d_telldir='$d_telldir'
16871 d_telldirproto='$d_telldirproto'
16872 d_time='$d_time'
16873 d_times='$d_times'
16874 d_truncate='$d_truncate'
16875 d_tzname='$d_tzname'
16876 d_u32align='$d_u32align'
16877 d_ualarm='$d_ualarm'
16878 d_umask='$d_umask'
16879 d_uname='$d_uname'
16880 d_union_semun='$d_union_semun'
16881 d_usleep='$d_usleep'
16882 d_usleepproto='$d_usleepproto'
16883 d_ustat='$d_ustat'
16884 d_vendorarch='$d_vendorarch'
16885 d_vendorbin='$d_vendorbin'
16886 d_vendorlib='$d_vendorlib'
16887 d_vfork='$d_vfork'
16888 d_void_closedir='$d_void_closedir'
16889 d_voidsig='$d_voidsig'
16890 d_voidtty='$d_voidtty'
16891 d_volatile='$d_volatile'
16892 d_vprintf='$d_vprintf'
16893 d_wait4='$d_wait4'
16894 d_waitpid='$d_waitpid'
16895 d_wcstombs='$d_wcstombs'
16896 d_wctomb='$d_wctomb'
16897 d_writev='$d_writev'
16898 d_xenix='$d_xenix'
16899 date='$date'
16900 db_hashtype='$db_hashtype'
16901 db_prefixtype='$db_prefixtype'
16902 db_version_major='$db_version_major'
16903 db_version_minor='$db_version_minor'
16904 db_version_patch='$db_version_patch'
16905 defvoidused='$defvoidused'
16906 direntrytype='$direntrytype'
16907 dlext='$dlext'
16908 dlsrc='$dlsrc'
16909 doublesize='$doublesize'
16910 drand01='$drand01'
16911 dynamic_ext='$dynamic_ext'
16912 eagain='$eagain'
16913 ebcdic='$ebcdic'
16914 echo='$echo'
16915 egrep='$egrep'
16916 emacs='$emacs'
16917 eunicefix='$eunicefix'
16918 exe_ext='$exe_ext'
16919 expr='$expr'
16920 extensions='$extensions'
16921 fflushNULL='$fflushNULL'
16922 fflushall='$fflushall'
16923 find='$find'
16924 firstmakefile='$firstmakefile'
16925 flex='$flex'
16926 fpossize='$fpossize'
16927 fpostype='$fpostype'
16928 freetype='$freetype'
16929 from='$from'
16930 full_ar='$full_ar'
16931 full_csh='$full_csh'
16932 full_sed='$full_sed'
16933 gccosandvers='$gccosandvers'
16934 gccversion='$gccversion'
16935 gidformat='$gidformat'
16936 gidsign='$gidsign'
16937 gidsize='$gidsize'
16938 gidtype='$gidtype'
16939 glibpth='$glibpth'
16940 grep='$grep'
16941 groupcat='$groupcat'
16942 groupstype='$groupstype'
16943 gzip='$gzip'
16944 h_fcntl='$h_fcntl'
16945 h_sysfile='$h_sysfile'
16946 hint='$hint'
16947 hostcat='$hostcat'
16948 i16size='$i16size'
16949 i16type='$i16type'
16950 i32size='$i32size'
16951 i32type='$i32type'
16952 i64size='$i64size'
16953 i64type='$i64type'
16954 i8size='$i8size'
16955 i8type='$i8type'
16956 i_arpainet='$i_arpainet'
16957 i_bsdioctl='$i_bsdioctl'
16958 i_db='$i_db'
16959 i_dbm='$i_dbm'
16960 i_dirent='$i_dirent'
16961 i_dld='$i_dld'
16962 i_dlfcn='$i_dlfcn'
16963 i_fcntl='$i_fcntl'
16964 i_float='$i_float'
16965 i_gdbm='$i_gdbm'
16966 i_grp='$i_grp'
16967 i_iconv='$i_iconv'
16968 i_ieeefp='$i_ieeefp'
16969 i_inttypes='$i_inttypes'
16970 i_libutil='$i_libutil'
16971 i_limits='$i_limits'
16972 i_locale='$i_locale'
16973 i_machcthr='$i_machcthr'
16974 i_malloc='$i_malloc'
16975 i_math='$i_math'
16976 i_memory='$i_memory'
16977 i_mntent='$i_mntent'
16978 i_ndbm='$i_ndbm'
16979 i_netdb='$i_netdb'
16980 i_neterrno='$i_neterrno'
16981 i_netinettcp='$i_netinettcp'
16982 i_niin='$i_niin'
16983 i_poll='$i_poll'
16984 i_prot='$i_prot'
16985 i_pthread='$i_pthread'
16986 i_pwd='$i_pwd'
16987 i_rpcsvcdbm='$i_rpcsvcdbm'
16988 i_sfio='$i_sfio'
16989 i_sgtty='$i_sgtty'
16990 i_shadow='$i_shadow'
16991 i_socks='$i_socks'
16992 i_stdarg='$i_stdarg'
16993 i_stddef='$i_stddef'
16994 i_stdlib='$i_stdlib'
16995 i_string='$i_string'
16996 i_sunmath='$i_sunmath'
16997 i_sysaccess='$i_sysaccess'
16998 i_sysdir='$i_sysdir'
16999 i_sysfile='$i_sysfile'
17000 i_sysfilio='$i_sysfilio'
17001 i_sysin='$i_sysin'
17002 i_sysioctl='$i_sysioctl'
17003 i_syslog='$i_syslog'
17004 i_sysmman='$i_sysmman'
17005 i_sysmode='$i_sysmode'
17006 i_sysmount='$i_sysmount'
17007 i_sysndir='$i_sysndir'
17008 i_sysparam='$i_sysparam'
17009 i_sysresrc='$i_sysresrc'
17010 i_syssecrt='$i_syssecrt'
17011 i_sysselct='$i_sysselct'
17012 i_syssockio='$i_syssockio'
17013 i_sysstat='$i_sysstat'
17014 i_sysstatfs='$i_sysstatfs'
17015 i_sysstatvfs='$i_sysstatvfs'
17016 i_systime='$i_systime'
17017 i_systimek='$i_systimek'
17018 i_systimes='$i_systimes'
17019 i_systypes='$i_systypes'
17020 i_sysuio='$i_sysuio'
17021 i_sysun='$i_sysun'
17022 i_sysutsname='$i_sysutsname'
17023 i_sysvfs='$i_sysvfs'
17024 i_syswait='$i_syswait'
17025 i_termio='$i_termio'
17026 i_termios='$i_termios'
17027 i_time='$i_time'
17028 i_unistd='$i_unistd'
17029 i_ustat='$i_ustat'
17030 i_utime='$i_utime'
17031 i_values='$i_values'
17032 i_varargs='$i_varargs'
17033 i_varhdr='$i_varhdr'
17034 i_vfork='$i_vfork'
17035 ignore_versioned_solibs='$ignore_versioned_solibs'
17036 inc_version_list='$inc_version_list'
17037 inc_version_list_init='$inc_version_list_init'
17038 incpath='$incpath'
17039 inews='$inews'
17040 installarchlib='$installarchlib'
17041 installbin='$installbin'
17042 installman1dir='$installman1dir'
17043 installman3dir='$installman3dir'
17044 installprefix='$installprefix'
17045 installprefixexp='$installprefixexp'
17046 installprivlib='$installprivlib'
17047 installscript='$installscript'
17048 installsitearch='$installsitearch'
17049 installsitebin='$installsitebin'
17050 installsitelib='$installsitelib'
17051 installstyle='$installstyle'
17052 installusrbinperl='$installusrbinperl'
17053 installvendorarch='$installvendorarch'
17054 installvendorbin='$installvendorbin'
17055 installvendorlib='$installvendorlib'
17056 intsize='$intsize'
17057 issymlink='$issymlink'
17058 ivdformat='$ivdformat'
17059 ivsize='$ivsize'
17060 ivtype='$ivtype'
17061 known_extensions='$known_extensions'
17062 ksh='$ksh'
17063 ld='$ld'
17064 lddlflags='$lddlflags'
17065 ldflags='$ldflags'
17066 ldflags_uselargefiles='$ldflags_uselargefiles'
17067 ldlibpthname='$ldlibpthname'
17068 less='$less'
17069 lib_ext='$lib_ext'
17070 libc='$libc'
17071 libperl='$libperl'
17072 libpth='$libpth'
17073 libs='$libs'
17074 libsdirs='$libsdirs'
17075 libsfiles='$libsfiles'
17076 libsfound='$libsfound'
17077 libspath='$libspath'
17078 libswanted='$libswanted'
17079 libswanted_uselargefiles='$libswanted_uselargefiles'
17080 line='$line'
17081 lint='$lint'
17082 lkflags='$lkflags'
17083 ln='$ln'
17084 lns='$lns'
17085 locincpth='$locincpth'
17086 loclibpth='$loclibpth'
17087 longdblsize='$longdblsize'
17088 longlongsize='$longlongsize'
17089 longsize='$longsize'
17090 lp='$lp'
17091 lpr='$lpr'
17092 ls='$ls'
17093 lseeksize='$lseeksize'
17094 lseektype='$lseektype'
17095 mail='$mail'
17096 mailx='$mailx'
17097 make='$make'
17098 make_set_make='$make_set_make'
17099 mallocobj='$mallocobj'
17100 mallocsrc='$mallocsrc'
17101 malloctype='$malloctype'
17102 man1dir='$man1dir'
17103 man1direxp='$man1direxp'
17104 man1ext='$man1ext'
17105 man3dir='$man3dir'
17106 man3direxp='$man3direxp'
17107 man3ext='$man3ext'
17108 mips_type='$mips_type'
17109 mkdir='$mkdir'
17110 mmaptype='$mmaptype'
17111 modetype='$modetype'
17112 more='$more'
17113 multiarch='$multiarch'
17114 mv='$mv'
17115 myarchname='$myarchname'
17116 mydomain='$mydomain'
17117 myhostname='$myhostname'
17118 myuname='$myuname'
17119 n='$n'
17120 need_va_copy='$need_va_copy'
17121 netdb_hlen_type='$netdb_hlen_type'
17122 netdb_host_type='$netdb_host_type'
17123 netdb_name_type='$netdb_name_type'
17124 netdb_net_type='$netdb_net_type'
17125 nm='$nm'
17126 nm_opt='$nm_opt'
17127 nm_so_opt='$nm_so_opt'
17128 nonxs_ext='$nonxs_ext'
17129 nroff='$nroff'
17130 nvEUformat='$nvEUformat'
17131 nvFUformat='$nvFUformat'
17132 nvGUformat='$nvGUformat'
17133 nveformat='$nveformat'
17134 nvfformat='$nvfformat'
17135 nvgformat='$nvgformat'
17136 nvsize='$nvsize'
17137 nvtype='$nvtype'
17138 o_nonblock='$o_nonblock'
17139 obj_ext='$obj_ext'
17140 old_pthread_create_joinable='$old_pthread_create_joinable'
17141 optimize='$optimize'
17142 orderlib='$orderlib'
17143 osname='$osname'
17144 osvers='$osvers'
17145 otherlibdirs='$otherlibdirs'
17146 package='$package'
17147 pager='$pager'
17148 passcat='$passcat'
17149 patchlevel='$patchlevel'
17150 path_sep='$path_sep'
17151 perl5='$perl5'
17152 perl='$perl'
17153 perl_patchlevel='$perl_patchlevel'
17154 perladmin='$perladmin'
17155 perllibs='$perllibs'
17156 perlpath='$perlpath'
17157 pg='$pg'
17158 phostname='$phostname'
17159 pidtype='$pidtype'
17160 plibpth='$plibpth'
17161 pm_apiversion='$pm_apiversion'
17162 pmake='$pmake'
17163 pr='$pr'
17164 prefix='$prefix'
17165 prefixexp='$prefixexp'
17166 privlib='$privlib'
17167 privlibexp='$privlibexp'
17168 prototype='$prototype'
17169 ptrsize='$ptrsize'
17170 quadkind='$quadkind'
17171 quadtype='$quadtype'
17172 randbits='$randbits'
17173 randfunc='$randfunc'
17174 randseedtype='$randseedtype'
17175 ranlib='$ranlib'
17176 rd_nodata='$rd_nodata'
17177 revision='$revision'
17178 rm='$rm'
17179 rmail='$rmail'
17180 run='$run'
17181 runnm='$runnm'
17182 sPRIEUldbl='$sPRIEUldbl'
17183 sPRIFUldbl='$sPRIFUldbl'
17184 sPRIGUldbl='$sPRIGUldbl'
17185 sPRIXU64='$sPRIXU64'
17186 sPRId64='$sPRId64'
17187 sPRIeldbl='$sPRIeldbl'
17188 sPRIfldbl='$sPRIfldbl'
17189 sPRIgldbl='$sPRIgldbl'
17190 sPRIi64='$sPRIi64'
17191 sPRIo64='$sPRIo64'
17192 sPRIu64='$sPRIu64'
17193 sPRIx64='$sPRIx64'
17194 sSCNfldbl='$sSCNfldbl'
17195 sched_yield='$sched_yield'
17196 scriptdir='$scriptdir'
17197 scriptdirexp='$scriptdirexp'
17198 sed='$sed'
17199 seedfunc='$seedfunc'
17200 selectminbits='$selectminbits'
17201 selecttype='$selecttype'
17202 sendmail='$sendmail'
17203 sh='$sh'
17204 shar='$shar'
17205 sharpbang='$sharpbang'
17206 shmattype='$shmattype'
17207 shortsize='$shortsize'
17208 shrpenv='$shrpenv'
17209 shsharp='$shsharp'
17210 sig_count='$sig_count'
17211 sig_name='$sig_name'
17212 sig_name_init='$sig_name_init'
17213 sig_num='$sig_num'
17214 sig_num_init='$sig_num_init'
17215 sig_size='$sig_size'
17216 signal_t='$signal_t'
17217 sitearch='$sitearch'
17218 sitearchexp='$sitearchexp'
17219 sitebin='$sitebin'
17220 sitebinexp='$sitebinexp'
17221 sitelib='$sitelib'
17222 sitelib_stem='$sitelib_stem'
17223 sitelibexp='$sitelibexp'
17224 siteprefix='$siteprefix'
17225 siteprefixexp='$siteprefixexp'
17226 sizesize='$sizesize'
17227 sizetype='$sizetype'
17228 sleep='$sleep'
17229 smail='$smail'
17230 so='$so'
17231 sockethdr='$sockethdr'
17232 socketlib='$socketlib'
17233 socksizetype='$socksizetype'
17234 sort='$sort'
17235 spackage='$spackage'
17236 spitshell='$spitshell'
17237 src='$src'
17238 ssizetype='$ssizetype'
17239 startperl='$startperl'
17240 startsh='$startsh'
17241 static_ext='$static_ext'
17242 stdchar='$stdchar'
17243 stdio_base='$stdio_base'
17244 stdio_bufsiz='$stdio_bufsiz'
17245 stdio_cnt='$stdio_cnt'
17246 stdio_filbuf='$stdio_filbuf'
17247 stdio_ptr='$stdio_ptr'
17248 stdio_stream_array='$stdio_stream_array'
17249 strings='$strings'
17250 submit='$submit'
17251 subversion='$subversion'
17252 sysman='$sysman'
17253 tail='$tail'
17254 tar='$tar'
17255 targetarch='$targetarch'
17256 tbl='$tbl'
17257 tee='$tee'
17258 test='$test'
17259 timeincl='$timeincl'
17260 timetype='$timetype'
17261 to='$to'
17262 touch='$touch'
17263 tr='$tr'
17264 trnl='$trnl'
17265 troff='$troff'
17266 u16size='$u16size'
17267 u16type='$u16type'
17268 u32size='$u32size'
17269 u32type='$u32type'
17270 u64size='$u64size'
17271 u64type='$u64type'
17272 u8size='$u8size'
17273 u8type='$u8type'
17274 uidformat='$uidformat'
17275 uidsign='$uidsign'
17276 uidsize='$uidsize'
17277 uidtype='$uidtype'
17278 uname='$uname'
17279 uniq='$uniq'
17280 uquadtype='$uquadtype'
17281 use5005threads='$use5005threads'
17282 use64bitall='$use64bitall'
17283 use64bitint='$use64bitint'
17284 usecrosscompile='$usecrosscompile'
17285 usedl='$usedl'
17286 useithreads='$useithreads'
17287 uselargefiles='$uselargefiles'
17288 uselongdouble='$uselongdouble'
17289 usemorebits='$usemorebits'
17290 usemultiplicity='$usemultiplicity'
17291 usemymalloc='$usemymalloc'
17292 usenm='$usenm'
17293 useopcode='$useopcode'
17294 useperlio='$useperlio'
17295 useposix='$useposix'
17296 usereentrant='$usereentrant'
17297 usesfio='$usesfio'
17298 useshrplib='$useshrplib'
17299 usesocks='$usesocks'
17300 usethreads='$usethreads'
17301 usevendorprefix='$usevendorprefix'
17302 usevfork='$usevfork'
17303 usrinc='$usrinc'
17304 uuname='$uuname'
17305 uvXUformat='$uvXUformat'
17306 uvoformat='$uvoformat'
17307 uvsize='$uvsize'
17308 uvtype='$uvtype'
17309 uvuformat='$uvuformat'
17310 uvxformat='$uvxformat'
17311 vendorarch='$vendorarch'
17312 vendorarchexp='$vendorarchexp'
17313 vendorbin='$vendorbin'
17314 vendorbinexp='$vendorbinexp'
17315 vendorlib='$vendorlib'
17316 vendorlib_stem='$vendorlib_stem'
17317 vendorlibexp='$vendorlibexp'
17318 vendorprefix='$vendorprefix'
17319 vendorprefixexp='$vendorprefixexp'
17320 version='$version'
17321 versiononly='$versiononly'
17322 vi='$vi'
17323 voidflags='$voidflags'
17324 xlibpth='$xlibpth'
17325 xs_apiversion='$xs_apiversion'
17326 yacc='$yacc'
17327 yaccflags='$yaccflags'
17328 zcat='$zcat'
17329 zip='$zip'
17330 EOT
17331
17332 : Add in command line options if available
17333 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17334
17335 : add special variables
17336 $test -f $src/patchlevel.h && \
17337 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17338 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17339 echo "PERL_CONFIG_SH=true" >>config.sh
17340
17341 : propagate old symbols
17342 if $test -f UU/config.sh; then
17343         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17344         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17345         $sort | $uniq -u >UU/oldsyms
17346         set X `cat UU/oldsyms`
17347         shift
17348         case $# in
17349         0) ;;
17350         *)
17351                 cat <<EOM
17352 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17353 EOM
17354                 echo "# Variables propagated from previous config.sh file." >>config.sh
17355                 for sym in `cat UU/oldsyms`; do
17356                         echo "    Propagating $hint variable "'$'"$sym..."
17357                         eval 'tmp="$'"${sym}"'"'
17358                         echo "$tmp" | \
17359                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17360                 done
17361                 ;;
17362         esac
17363 fi
17364
17365 : Finish up by extracting the .SH files
17366 case "$alldone" in
17367 exit)
17368         $rm -rf UU
17369         echo "Extraction done."
17370         exit 0
17371         ;;
17372 cont)
17373         ;;
17374 '')
17375         dflt=''
17376         nostick=true
17377         $cat <<EOM
17378
17379 If you'd like to make any changes to the config.sh file before I begin
17380 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17381
17382 EOM
17383         rp="Press return or use a shell escape to edit config.sh:"
17384         . UU/myread
17385         nostick=''
17386         case "$ans" in
17387         '') ;;
17388         *) : in case they cannot read
17389                 sh 1>&4 -c "$ans";;
17390         esac
17391         ;;
17392 esac
17393
17394 : if this fails, just run all the .SH files by hand
17395 . ./config.sh
17396
17397 echo " "
17398 exec 1>&4
17399 pwd=`pwd`
17400 . ./UU/extract
17401 cd $pwd
17402
17403 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17404         dflt=y
17405         case "$silent" in
17406         true) ;;
17407         *)
17408                 $cat <<EOM
17409
17410 Now you need to generate make dependencies by running "$make depend".
17411 You might prefer to run it in background: "$make depend > makedepend.out &"
17412 It can take a while, so you might not want to run it right now.
17413
17414 EOM
17415                 ;;
17416         esac
17417         rp="Run $make depend now?"
17418         . UU/myread
17419         case "$ans" in
17420         y*)
17421                 $make depend && echo "Now you must run '$make'."
17422                 ;;
17423         *)
17424                 echo "You must run '$make depend' then '$make'."
17425                 ;;
17426         esac
17427 elif test -f [Mm]akefile; then
17428         echo " "
17429         echo "Now you must run a $make."
17430 else
17431         echo "Configure done."
17432 fi
17433
17434 if $test -f Policy.sh; then
17435     $cat <<EOM
17436
17437 If you compile $package on a different machine or from a different object
17438 directory, copy the Policy.sh file from this object directory to the
17439 new one before you run Configure -- this will help you with most of
17440 the policy defaults.
17441
17442 EOM
17443 fi
17444 if $test -f config.msg; then
17445     echo "Hmm.  I also noted the following information while running:"
17446     echo " "
17447     $cat config.msg >&4
17448     $rm -f config.msg
17449 fi
17450 $rm -f kit*isdone ark*isdone
17451 $rm -rf UU
17452
17453 : End of Configure
17454