9493fbc54ccc955c11075d4e91d8b4ce095892c8
[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 Apr 28 23:33:15 EET DST 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/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 >/tmp/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 /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/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 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 d_atolf=''
282 d_atoll=''
283 baserev=''
284 bin=''
285 binexp=''
286 installbin=''
287 bincompat5005=''
288 d_bincompat5005=''
289 byteorder=''
290 cc=''
291 gccversion=''
292 ccflags=''
293 cppflags=''
294 ldflags=''
295 lkflags=''
296 locincpth=''
297 optimize=''
298 cf_email=''
299 cf_by=''
300 cf_time=''
301 charsize=''
302 contains=''
303 cpp_stuff=''
304 cpplast=''
305 cppminus=''
306 cpprun=''
307 cppstdin=''
308 crosscompile=''
309 d_access=''
310 d_accessx=''
311 d_alarm=''
312 d_attribut=''
313 d_bcmp=''
314 d_bcopy=''
315 d_bzero=''
316 d_casti32=''
317 castflags=''
318 d_castneg=''
319 d_chown=''
320 d_chroot=''
321 d_chsize=''
322 d_closedir=''
323 d_void_closedir=''
324 d_const=''
325 cryptlib=''
326 d_crypt=''
327 d_csh=''
328 full_csh=''
329 d_cuserid=''
330 d_dbl_dig=''
331 d_difftime=''
332 d_dlerror=''
333 d_dlopen=''
334 d_dlsymun=''
335 d_dosuid=''
336 d_suidsafe=''
337 d_drand48proto=''
338 d_dup2=''
339 d_eaccess=''
340 d_endgrent=''
341 d_endhent=''
342 d_endnent=''
343 d_endpent=''
344 d_endpwent=''
345 d_endsent=''
346 d_endspent=''
347 d_fchmod=''
348 d_fchown=''
349 d_fcntl=''
350 d_fd_macros=''
351 d_fd_set=''
352 d_fds_bits=''
353 d_fgetpos=''
354 d_flexfnam=''
355 d_flock=''
356 d_fork=''
357 d_fpos64_t=''
358 d_frexpl=''
359 d_fs_data_s=''
360 d_fseeko=''
361 d_fsetpos=''
362 d_fstatfs=''
363 d_ftello=''
364 d_ftime=''
365 d_gettimeod=''
366 d_Gconvert=''
367 d_getcwd=''
368 d_getfsstat=''
369 d_getgrent=''
370 d_getgrps=''
371 d_gethbyaddr=''
372 d_gethbyname=''
373 d_gethent=''
374 aphostname=''
375 d_gethname=''
376 d_phostname=''
377 d_uname=''
378 d_gethostprotos=''
379 d_getlogin=''
380 d_getmnt=''
381 d_getmntent=''
382 d_getnbyaddr=''
383 d_getnbyname=''
384 d_getnent=''
385 d_getnetprotos=''
386 d_getpent=''
387 d_getpgid=''
388 d_getpgrp2=''
389 d_bsdgetpgrp=''
390 d_getpgrp=''
391 d_getppid=''
392 d_getprior=''
393 d_getpbyname=''
394 d_getpbynumber=''
395 d_getprotoprotos=''
396 d_getpwent=''
397 d_getsent=''
398 d_getservprotos=''
399 d_getspent=''
400 d_getspnam=''
401 d_getsbyname=''
402 d_getsbyport=''
403 d_gnulibc=''
404 d_hasmntopt=''
405 d_htonl=''
406 d_iconv=''
407 d_inetaton=''
408 d_int64_t=''
409 d_isascii=''
410 d_isnan=''
411 d_isnanl=''
412 d_killpg=''
413 d_lchown=''
414 d_ldbl_dig=''
415 d_link=''
416 d_locconv=''
417 d_lockf=''
418 d_longdbl=''
419 longdblsize=''
420 d_longlong=''
421 longlongsize=''
422 d_lseekproto=''
423 d_lstat=''
424 d_madvise=''
425 d_mblen=''
426 d_mbstowcs=''
427 d_mbtowc=''
428 d_memchr=''
429 d_memcmp=''
430 d_memcpy=''
431 d_memmove=''
432 d_memset=''
433 d_mkdir=''
434 d_mkdtemp=''
435 d_mkfifo=''
436 d_mkstemp=''
437 d_mkstemps=''
438 d_mktime=''
439 d_mmap=''
440 mmaptype=''
441 d_modfl=''
442 d_mprotect=''
443 d_msg=''
444 d_msgctl=''
445 d_msgget=''
446 d_msgrcv=''
447 d_msgsnd=''
448 d_msync=''
449 d_munmap=''
450 d_nice=''
451 d_off64_t=''
452 d_open3=''
453 d_fpathconf=''
454 d_pathconf=''
455 d_pause=''
456 d_pipe=''
457 d_poll=''
458 d_portable=''
459 d_old_pthread_create_joinable=''
460 old_pthread_create_joinable=''
461 d_pthread_yield=''
462 d_sched_yield=''
463 sched_yield=''
464 d_qgcvt=''
465 d_readdir=''
466 d_rewinddir=''
467 d_seekdir=''
468 d_telldir=''
469 d_readlink=''
470 d_rename=''
471 d_rmdir=''
472 d_safebcpy=''
473 d_safemcpy=''
474 d_sanemcmp=''
475 d_select=''
476 d_sem=''
477 d_semctl=''
478 d_semget=''
479 d_semop=''
480 d_setegid=''
481 d_seteuid=''
482 d_setgrent=''
483 d_setgrps=''
484 d_sethent=''
485 d_setlinebuf=''
486 d_setlocale=''
487 d_setnent=''
488 d_setpent=''
489 d_setpgid=''
490 d_setpgrp2=''
491 d_bsdsetpgrp=''
492 d_setpgrp=''
493 d_setprior=''
494 d_setpwent=''
495 d_setregid=''
496 d_setresgid=''
497 d_setresuid=''
498 d_setreuid=''
499 d_setrgid=''
500 d_setruid=''
501 d_setsent=''
502 d_setsid=''
503 d_setspent=''
504 d_setvbuf=''
505 d_sfio=''
506 usesfio=''
507 d_shm=''
508 d_shmat=''
509 d_shmatprototype=''
510 shmattype=''
511 d_shmctl=''
512 d_shmdt=''
513 d_shmget=''
514 d_sigaction=''
515 d_sigsetjmp=''
516 d_msg_ctrunc=''
517 d_msg_dontroute=''
518 d_msg_oob=''
519 d_msg_peek=''
520 d_msg_proxy=''
521 d_oldsock=''
522 d_scm_rights=''
523 d_socket=''
524 d_sockpair=''
525 sockethdr=''
526 socketlib=''
527 d_socklen_t=''
528 d_sqrtl=''
529 d_statblks=''
530 d_statfs_f_flags=''
531 d_statfs_s=''
532 d_fstatvfs=''
533 d_statvfs=''
534 d_stdio_cnt_lval=''
535 d_stdio_ptr_lval=''
536 d_stdiobase=''
537 d_stdstdio=''
538 stdio_base=''
539 stdio_bufsiz=''
540 stdio_cnt=''
541 stdio_filbuf=''
542 stdio_ptr=''
543 d_index=''
544 d_strchr=''
545 d_strcoll=''
546 d_strctcpy=''
547 d_strerrm=''
548 d_strerror=''
549 d_sysernlst=''
550 d_syserrlst=''
551 d_strtod=''
552 d_strtol=''
553 d_strtold=''
554 d_strtoll=''
555 d_strtoul=''
556 d_strtoull=''
557 d_strtouq=''
558 d_strxfrm=''
559 d_symlink=''
560 d_syscall=''
561 d_sysconf=''
562 d_system=''
563 d_tcgetpgrp=''
564 d_tcsetpgrp=''
565 d_telldirproto=''
566 d_time=''
567 timetype=''
568 clocktype=''
569 d_times=''
570 d_truncate=''
571 d_tzname=''
572 d_umask=''
573 d_semctl_semid_ds=''
574 d_semctl_semun=''
575 d_union_semun=''
576 d_ustat=''
577 d_vfork=''
578 usevfork=''
579 d_voidsig=''
580 signal_t=''
581 d_volatile=''
582 d_charvspr=''
583 d_vprintf=''
584 d_wait4=''
585 d_waitpid=''
586 d_wcstombs=''
587 d_wctomb=''
588 dlext=''
589 cccdlflags=''
590 ccdlflags=''
591 dlsrc=''
592 ld=''
593 lddlflags=''
594 usedl=''
595 doublesize=''
596 ebcdic=''
597 fflushNULL=''
598 fflushall=''
599 fpossize=''
600 fpostype=''
601 gidformat=''
602 gidsign=''
603 gidsize=''
604 gidtype=''
605 groupstype=''
606 h_fcntl=''
607 h_sysfile=''
608 i_arpainet=''
609 db_hashtype=''
610 db_prefixtype=''
611 i_db=''
612 i_dbm=''
613 i_rpcsvcdbm=''
614 d_dirnamlen=''
615 direntrytype=''
616 i_dirent=''
617 i_dld=''
618 i_dlfcn=''
619 i_fcntl=''
620 i_float=''
621 i_gdbm=''
622 d_grpasswd=''
623 i_grp=''
624 i_iconv=''
625 i_ieeefp=''
626 i_inttypes=''
627 i_limits=''
628 i_locale=''
629 i_machcthr=''
630 i_malloc=''
631 i_math=''
632 i_memory=''
633 i_mntent=''
634 i_ndbm=''
635 i_netdb=''
636 i_neterrno=''
637 i_netinettcp=''
638 i_niin=''
639 i_sysin=''
640 i_poll=''
641 i_pthread=''
642 d_pwage=''
643 d_pwchange=''
644 d_pwclass=''
645 d_pwcomment=''
646 d_pwexpire=''
647 d_pwgecos=''
648 d_pwpasswd=''
649 d_pwquota=''
650 i_pwd=''
651 i_sfio=''
652 i_shadow=''
653 i_socks=''
654 i_stddef=''
655 i_stdlib=''
656 i_string=''
657 strings=''
658 i_sunmath=''
659 i_sysaccess=''
660 i_sysdir=''
661 i_sysfile=''
662 d_voidtty=''
663 i_bsdioctl=''
664 i_sysfilio=''
665 i_sysioctl=''
666 i_syssockio=''
667 i_syslog=''
668 i_sysmman=''
669 i_sysmode=''
670 i_sysmount=''
671 i_sysndir=''
672 i_sysparam=''
673 i_sysresrc=''
674 i_syssecrt=''
675 i_sysselct=''
676 i_sysstat=''
677 i_sysstatfs=''
678 i_sysstatvfs=''
679 i_systimes=''
680 i_systypes=''
681 i_sysuio=''
682 i_sysun=''
683 i_sysutsname=''
684 i_sysvfs=''
685 i_syswait=''
686 i_sgtty=''
687 i_termio=''
688 i_termios=''
689 i_systime=''
690 i_systimek=''
691 i_time=''
692 timeincl=''
693 i_unistd=''
694 i_ustat=''
695 i_utime=''
696 i_values=''
697 i_stdarg=''
698 i_varargs=''
699 i_varhdr=''
700 i_vfork=''
701 inc_version_list=''
702 inc_version_list_init=''
703 installprefix=''
704 installprefixexp=''
705 installstyle=''
706 installusrbinperl=''
707 intsize=''
708 longsize=''
709 shortsize=''
710 libc=''
711 ldlibpthname=''
712 libperl=''
713 shrpenv=''
714 useshrplib=''
715 glibpth=''
716 libpth=''
717 loclibpth=''
718 plibpth=''
719 xlibpth=''
720 ignore_versioned_solibs=''
721 libs=''
722 libsdirs=''
723 libsfiles=''
724 libsfound=''
725 libspath=''
726 lns=''
727 d_PRIEldbl=''
728 d_PRIFldbl=''
729 d_PRIGldbl=''
730 d_PRIeldbl=''
731 d_PRIfldbl=''
732 d_PRIgldbl=''
733 sPRIEldbl=''
734 sPRIFldbl=''
735 sPRIGldbl=''
736 sPRIeldbl=''
737 sPRIfldbl=''
738 sPRIgldbl=''
739 lseeksize=''
740 lseektype=''
741 make_set_make=''
742 d_mymalloc=''
743 freetype=''
744 mallocobj=''
745 mallocsrc=''
746 malloctype=''
747 usemymalloc=''
748 installman1dir=''
749 man1dir=''
750 man1direxp=''
751 man1ext=''
752 installman3dir=''
753 man3dir=''
754 man3direxp=''
755 man3ext=''
756 huge=''
757 large=''
758 medium=''
759 models=''
760 small=''
761 split=''
762 modetype=''
763 multiarch=''
764 mydomain=''
765 myhostname=''
766 phostname=''
767 c=''
768 n=''
769 d_eofnblk=''
770 eagain=''
771 o_nonblock=''
772 rd_nodata=''
773 netdb_hlen_type=''
774 netdb_host_type=''
775 netdb_name_type=''
776 netdb_net_type=''
777 groupcat=''
778 hostcat=''
779 passcat=''
780 orderlib=''
781 ranlib=''
782 d_perl_otherlibdirs=''
783 otherlibdirs=''
784 package=''
785 spackage=''
786 pager=''
787 api_revision=''
788 api_subversion=''
789 api_version=''
790 api_versionstring=''
791 patchlevel=''
792 revision=''
793 subversion=''
794 version=''
795 perl5=''
796 perladmin=''
797 perlpath=''
798 d_nv_preserves_uv=''
799 i16size=''
800 i16type=''
801 i32size=''
802 i32type=''
803 i64size=''
804 i64type=''
805 i8size=''
806 i8type=''
807 ivsize=''
808 ivtype=''
809 nvsize=''
810 nvtype=''
811 u16size=''
812 u16type=''
813 u32size=''
814 u32type=''
815 u64size=''
816 u64type=''
817 u8size=''
818 u8type=''
819 uvsize=''
820 uvtype=''
821 ivdformat=''
822 uvoformat=''
823 uvuformat=''
824 uvxformat=''
825 pidtype=''
826 prefix=''
827 prefixexp=''
828 installprivlib=''
829 privlib=''
830 privlibexp=''
831 prototype=''
832 ptrsize=''
833 d_PRIX64=''
834 d_PRId64=''
835 d_PRIi64=''
836 d_PRIo64=''
837 d_PRIu64=''
838 d_PRIx64=''
839 sPRIX64=''
840 sPRId64=''
841 sPRIi64=''
842 sPRIo64=''
843 sPRIu64=''
844 sPRIx64=''
845 d_quad=''
846 quadkind=''
847 quadtype=''
848 uquadtype=''
849 drand01=''
850 randbits=''
851 randfunc=''
852 randseedtype=''
853 seedfunc=''
854 installscript=''
855 scriptdir=''
856 scriptdirexp=''
857 selectminbits=''
858 selecttype=''
859 sh=''
860 sig_count=''
861 sig_name=''
862 sig_name_init=''
863 sig_num=''
864 sig_num_init=''
865 installsitearch=''
866 sitearch=''
867 sitearchexp=''
868 installsitebin=''
869 sitebin=''
870 sitebinexp=''
871 installsitelib=''
872 sitelib=''
873 sitelib_stem=''
874 sitelibexp=''
875 siteprefix=''
876 siteprefixexp=''
877 sizesize=''
878 sizetype=''
879 so=''
880 socksizetype=''
881 sharpbang=''
882 shsharp=''
883 spitshell=''
884 src=''
885 ssizetype=''
886 startperl=''
887 startsh=''
888 stdchar=''
889 d_stdio_stream_array=''
890 stdio_stream_array=''
891 sysman=''
892 trnl=''
893 uidformat=''
894 uidsign=''
895 uidsize=''
896 uidtype=''
897 archname64=''
898 use64bitall=''
899 use64bitint=''
900 uselargefiles=''
901 uselongdouble=''
902 usemorebits=''
903 usemultiplicity=''
904 nm_opt=''
905 nm_so_opt=''
906 runnm=''
907 usenm=''
908 useperlio=''
909 usesocks=''
910 d_oldpthreads=''
911 use5005threads=''
912 useithreads=''
913 usethreads=''
914 incpath=''
915 mips_type=''
916 usrinc=''
917 d_vendorarch=''
918 installvendorarch=''
919 vendorarch=''
920 vendorarchexp=''
921 d_vendorbin=''
922 installvendorbin=''
923 vendorbin=''
924 vendorbinexp=''
925 d_vendorlib=''
926 installvendorlib=''
927 vendorlib=''
928 vendorlib_stem=''
929 vendorlibexp=''
930 usevendorprefix=''
931 vendorprefix=''
932 vendorprefixexp=''
933 defvoidused=''
934 voidflags=''
935 pm_apiversion=''
936 xs_apiversion=''
937 CONFIG=''
938
939 define='define'
940 undef='undef'
941 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
942 rmlist=''
943
944 : We must find out about Eunice early
945 eunicefix=':'
946 if test -f /etc/unixtovms; then
947         eunicefix=/etc/unixtovms
948 fi
949 if test -f /etc/unixtovms.exe; then
950         eunicefix=/etc/unixtovms.exe
951 fi
952
953 i_whoami=''
954 : set useposix=false in your hint file to disable the POSIX extension.
955 useposix=true
956 : set useopcode=false in your hint file to disable the Opcode extension.
957 useopcode=true
958 : Trailing extension.  Override this in a hint file, if needed.
959 _exe=''
960 : Extra object files, if any, needed on this platform.
961 archobjs=''
962 : Possible local include directories to search.
963 : Set locincpth to "" in a hint file to defeat local include searches.
964 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
965 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
966 :
967 : no include file wanted by default
968 inclwanted=''
969
970 groupstype=''
971 : change the next line if compiling for Xenix/286 on Xenix/386
972 xlibpth='/usr/lib/386 /lib/386'
973 : Possible local library directories to search.
974 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
975 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
976
977 : general looking path for locating libraries
978 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
979 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
980 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
981 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
982 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
983
984 : Private path used by Configure to find libraries.  Its value
985 : is prepended to libpth. This variable takes care of special
986 : machines, like the mips.  Usually, it should be empty.
987 plibpth=''
988
989 : default library list
990 libswanted=''
991 : some systems want to use only the non-versioned libso:s
992 ignore_versioned_solibs=''
993 : set usemultiplicity on the Configure command line to enable multiplicity.
994 : set usesocks on the Configure command line to enable socks.
995 : set usethreads on the Configure command line to enable threads.
996 : full support for void wanted by default
997 defvoidused=15
998
999 : List of libraries we want.
1000 : If anyone needs -lnet, put it in a hint file.
1001 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1002 libswanted="$libswanted dld ld sun m c cposix posix"
1003 libswanted="$libswanted ndir dir crypt sec"
1004 libswanted="$libswanted ucb bsd BSD PW x iconv"
1005 : We probably want to search /usr/shlib before most other libraries.
1006 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1007 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1008 glibpth="/usr/shlib $glibpth"
1009 : Do not use vfork unless overridden by a hint file.
1010 usevfork=false
1011
1012 : Find the basic shell for Bourne shell scripts
1013 case "$sh" in
1014 '')
1015         case "$SYSTYPE" in
1016         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1017         *) xxx='/bin/sh';;
1018         esac
1019         if test -f "$xxx"; then
1020                 sh="$xxx"
1021         else
1022                 : Build up a list and do a single loop so we can 'break' out.
1023                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1024                 for xxx in sh bash ksh pdksh ash; do
1025                         for p in $pth; do
1026                                 try="$try ${p}/${xxx}"
1027                         done
1028                 done
1029                 for xxx in $try; do
1030                         if test -f "$xxx"; then
1031                                 sh="$xxx";
1032                                 break
1033                         elif test -f "$xxx.exe"; then
1034                                 sh="$xxx";
1035                                 break
1036                         fi
1037                 done
1038         fi
1039         ;;
1040 esac
1041
1042 case "$sh" in
1043 '')     cat <<EOM >&2
1044 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1045
1046 Usually it's in /bin/sh.  How did you even get this far?
1047 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1048 we'll try to straighten this all out.
1049 EOM
1050         exit 1
1051         ;;
1052 esac
1053
1054 : see if sh knows # comments
1055 if `$sh -c '#' >/dev/null 2>&1`; then
1056         shsharp=true
1057         spitshell=cat
1058         xcat=/bin/cat
1059         test -f $xcat || xcat=/usr/bin/cat
1060         echo "#!$xcat" >try
1061         $eunicefix try
1062         chmod +x try
1063         ./try > today
1064         if test -s today; then
1065                 sharpbang='#!'
1066         else
1067                 echo "#! $xcat" > try
1068                 $eunicefix try
1069                 chmod +x try
1070                 ./try > today
1071                 if test -s today; then
1072                         sharpbang='#! '
1073                 else
1074                         sharpbang=': use '
1075                 fi
1076         fi
1077 else
1078         echo " "
1079         echo "Your $sh doesn't grok # comments--I will strip them later on."
1080         shsharp=false
1081         cd ..
1082         echo "exec grep -v '^[  ]*#'" >spitshell
1083         chmod +x spitshell
1084         $eunicefix spitshell
1085         spitshell=`pwd`/spitshell
1086         cd UU
1087         echo "I presume that if # doesn't work, #! won't work either!"
1088         sharpbang=': use '
1089 fi
1090 rm -f try today
1091
1092 : figure out how to guarantee sh startup
1093 case "$startsh" in
1094 '') startsh=${sharpbang}${sh} ;;
1095 *)
1096 esac
1097 cat >try <<EOSS
1098 $startsh
1099 set abc
1100 test "$?abc" != 1
1101 EOSS
1102
1103 chmod +x try
1104 $eunicefix try
1105 if ./try; then
1106         : echo "Yup, it does."
1107 else
1108         echo "Hmm... '$startsh' does not guarantee sh startup..."
1109         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1110 fi
1111 rm -f try
1112
1113
1114 : Save command line options in file UU/cmdline.opt for later use in
1115 : generating config.sh.
1116 cat > cmdline.opt <<EOSH
1117 # Configure command line arguments.
1118 config_arg0='$0'
1119 config_args='$*'
1120 config_argc=$#
1121 EOSH
1122 argn=1
1123 for arg in "$@"; do
1124         cat >>cmdline.opt <<EOSH
1125 config_arg$argn='$arg'
1126 EOSH
1127         argn=`expr $argn + 1`
1128 done
1129
1130 : produce awk script to parse command line options
1131 cat >options.awk <<'EOF'
1132 BEGIN {
1133         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1134
1135         len = length(optstr);
1136         for (i = 1; i <= len; i++) {
1137                 c = substr(optstr, i, 1);
1138                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1139                 if (a == ":") {
1140                         arg[c] = 1;
1141                         i++;
1142                 }
1143                 opt[c] = 1;
1144         }
1145 }
1146 {
1147         expect = 0;
1148         str = $0;
1149         if (substr(str, 1, 1) != "-") {
1150                 printf("'%s'\n", str);
1151                 next;
1152         }
1153         len = length($0);
1154         for (i = 2; i <= len; i++) {
1155                 c = substr(str, i, 1);
1156                 if (!opt[c]) {
1157                         printf("-%s\n", substr(str, i));
1158                         next;
1159                 }
1160                 printf("-%s\n", c);
1161                 if (arg[c]) {
1162                         if (i < len)
1163                                 printf("'%s'\n", substr(str, i + 1));
1164                         else
1165                                 expect = 1;
1166                         next;
1167                 }
1168         }
1169 }
1170 END {
1171         if (expect)
1172                 print "?";
1173 }
1174 EOF
1175
1176 : process the command line options
1177 set X `for arg in "$@"; do echo "X$arg"; done |
1178         sed -e s/X// | awk -f options.awk`
1179 eval "set $*"
1180 shift
1181 rm -f options.awk
1182
1183 : set up default values
1184 fastread=''
1185 reuseval=false
1186 config_sh=''
1187 alldone=''
1188 error=''
1189 silent=''
1190 extractsh=''
1191 override=''
1192 knowitall=''
1193 rm -f optdef.sh posthint.sh
1194 cat >optdef.sh <<EOS
1195 $startsh
1196 EOS
1197
1198
1199 : option parsing
1200 while test $# -gt 0; do
1201         case "$1" in
1202         -d) shift; fastread=yes;;
1203         -e) shift; alldone=cont;;
1204         -f)
1205                 shift
1206                 cd ..
1207                 if test -r "$1"; then
1208                         config_sh="$1"
1209                 else
1210                         echo "$me: cannot read config file $1." >&2
1211                         error=true
1212                 fi
1213                 cd UU
1214                 shift;;
1215         -h) shift; error=true;;
1216         -r) shift; reuseval=true;;
1217         -s) shift; silent=true; realsilent=true;;
1218         -E) shift; alldone=exit;;
1219         -K) shift; knowitall=true;;
1220         -O) shift; override=true;;
1221         -S) shift; silent=true; extractsh=true;;
1222         -D)
1223                 shift
1224                 case "$1" in
1225                 *=)
1226                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1227                         echo "$me: ignoring -D $1" >&2
1228                         ;;
1229                 *=*) echo "$1" | \
1230                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1231                 *) echo "$1='define'" >> optdef.sh;;
1232                 esac
1233                 shift
1234                 ;;
1235         -U)
1236                 shift
1237                 case "$1" in
1238                 *=) echo "$1" >> optdef.sh;;
1239                 *=*)
1240                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1241                         echo "$me: ignoring -U $1" >&2
1242                         ;;
1243                 *) echo "$1='undef'" >> optdef.sh;;
1244                 esac
1245                 shift
1246                 ;;
1247         -A)
1248             shift
1249             xxx=''
1250             yyy="$1"
1251             zzz=''
1252             uuu=undef
1253             case "$yyy" in
1254             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1255                  case "$zzz" in
1256                  *:*) zzz='' ;;
1257                  *)   xxx=append
1258                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1259                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1260                  esac
1261                  ;;
1262             esac
1263             case "$xxx" in
1264             '')  case "$yyy" in
1265                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1266                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1267                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1268                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1269                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1270                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1271                  esac
1272                  ;;       
1273             esac
1274             case "$xxx" in
1275             append)
1276                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1277             clear)
1278                 echo "$yyy=''"                  >> posthint.sh ;;
1279             define)
1280                 case "$zzz" in
1281                 '') zzz=define ;;
1282                 esac
1283                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1284             eval)
1285                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1286             prepend)
1287                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1288             undef)
1289                 case "$zzz" in
1290                 '') zzz="$uuu" ;;
1291                 esac
1292                 echo "$yyy=$zzz"                >> posthint.sh ;;
1293             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1294             esac
1295             shift
1296             ;;
1297         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1298             exit 0;;
1299         --) break;;
1300         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1301         *) break;;
1302         esac
1303 done
1304
1305 case "$error" in
1306 true)
1307         cat >&2 <<EOM
1308 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1309                  [-U symbol] [-U symbol=] [-A command:symbol...]
1310   -d : use defaults for all answers.
1311   -e : go on without questioning past the production of config.sh.
1312   -f : specify an alternate default configuration file.
1313   -h : print this help message and exit (with an error status).
1314   -r : reuse C symbols value if possible (skips costly nm extraction).
1315   -s : silent mode, only echoes questions and essential information.
1316   -D : define symbol to have some value:
1317          -D symbol         symbol gets the value 'define'
1318          -D symbol=value   symbol gets the value 'value'
1319   -E : stop at the end of questions, after having produced config.sh.
1320   -K : do not use unless you know what you are doing.
1321   -O : let -D and -U override definitions from loaded configuration file.
1322   -S : perform variable substitutions on all .SH files (can mix with -f)
1323   -U : undefine symbol:
1324          -U symbol    symbol gets the value 'undef'
1325          -U symbol=   symbol gets completely empty
1326   -A : manipulate symbol after the platform specific hints have been applied:
1327          -A symbol=value                append " "value to symbol
1328          -A append:symbol=value         append value to symbol
1329          -A define:symbol=value         define symbol to have value
1330          -A clear:symbol                define symbol to be ''
1331          -A define:symbol               define symbol to be 'define'
1332          -A eval:symbol=value           define symbol to be eval of value
1333          -A prepend:symbol=value        prepend value to symbol
1334          -A undef:symbol                define symbol to be 'undef'
1335          -A undef:symbol=               define symbol to be ''
1336   -V : print version number and exit (with a zero status).
1337 EOM
1338         exit 1
1339         ;;
1340 esac
1341
1342 : Sanity checks
1343 case "$fastread$alldone" in
1344 yescont|yesexit) ;;
1345 *)
1346         case "$extractsh" in
1347         true) ;;
1348         *)
1349                 if test ! -t 0; then
1350                         echo "Say 'sh Configure', not 'sh <Configure'"
1351                         exit 1
1352                 fi
1353                 ;;
1354         esac
1355         ;;
1356 esac
1357
1358 exec 4>&1
1359 case "$silent" in
1360 true) exec 1>/dev/null;;
1361 esac
1362
1363 : run the defines and the undefines, if any, but leave the file out there...
1364 touch optdef.sh
1365 . ./optdef.sh
1366 : create the posthint manipulation script and leave the file out there...
1367 touch posthint.sh
1368
1369 : set package name
1370 package=perl5
1371 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1372 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1373 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1374 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1375 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1376 esac
1377
1378 : Some greps do not return status, grrr.
1379 echo "grimblepritz" >grimble
1380 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1381         contains=contains
1382 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1383         contains=grep
1384 else
1385         contains=contains
1386 fi
1387 rm -f grimble
1388 : the following should work in any shell
1389 case "$contains" in
1390 contains*)
1391         echo " "
1392         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1393         cat >contains <<'EOSS'
1394 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1395 EOSS
1396 chmod +x contains
1397 esac
1398
1399 : Find the path to the source tree
1400 case "$src" in
1401 '') case "$0" in
1402     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1403          case "$src" in
1404          /*)    ;;
1405          *)     src=`cd ../$src && pwd` ;;
1406          esac
1407          ;;
1408     *)   src='.';;
1409     esac;;
1410 esac
1411 case "$src" in
1412 '')     src=/
1413         rsrc=/
1414         ;;
1415 /*) rsrc="$src";;
1416 *) rsrc="../$src";;
1417 esac
1418 if test -f $rsrc/Configure && \
1419         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1420 then
1421    : found it, so we are ok.
1422 else
1423         rsrc=''
1424         for src in . .. ../.. ../../.. ../../../..; do
1425                 if test -f ../$src/Configure && \
1426                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1427                 then
1428                         rsrc=../$src
1429                         break
1430                 fi
1431         done
1432 fi
1433 case "$rsrc" in
1434 '')
1435         cat <<EOM >&4
1436
1437 Sorry, I can't seem to locate the source dir for $package.  Please start
1438 Configure with an explicit path -- i.e. /some/path/Configure.
1439
1440 EOM
1441         exit 1
1442         ;;
1443 ../.)   rsrc='..';;
1444 *)
1445         echo " "
1446         echo "Sources for $package found in \"$src\"." >&4
1447         ;;
1448 esac
1449
1450 : script used to extract .SH files with variable substitutions
1451 cat >extract <<'EOS'
1452 CONFIGDOTSH=true
1453 echo "Doing variable substitutions on .SH files..."
1454 if test -f $src/MANIFEST; then
1455         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1456 else
1457         echo "(Looking for .SH files under the source directory.)"
1458         set x `(cd $src; find . -name "*.SH" -print)`
1459 fi
1460 shift
1461 case $# in
1462 0) set x `(cd $src; echo *.SH)`; shift;;
1463 esac
1464 if test ! -f $src/$1; then
1465         shift
1466 fi
1467 mkdir_p='
1468 name=$1;
1469 create="";
1470 while test $name; do
1471         if test ! -d "$name"; then
1472                 create="$name $create";
1473                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1474                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1475         else
1476                 name="";
1477         fi;
1478 done;
1479 for file in $create; do
1480         mkdir $file;
1481 done
1482 '
1483 for file in $*; do
1484         case "$src" in
1485         ".")
1486                 case "$file" in
1487                 */*)
1488                         dir=`expr X$file : 'X\(.*\)/'`
1489                         file=`expr X$file : 'X.*/\(.*\)'`
1490                         (cd $dir && . ./$file)
1491                         ;;
1492                 *)
1493                         . ./$file
1494                         ;;
1495                 esac
1496                 ;;
1497         *)
1498                 case "$file" in
1499                 */*)
1500                         dir=`expr X$file : 'X\(.*\)/'`
1501                         file=`expr X$file : 'X.*/\(.*\)'`
1502                         (set x $dir; shift; eval $mkdir_p)
1503                         sh <$src/$dir/$file
1504                         ;;
1505                 *)
1506                         sh <$src/$file
1507                         ;;
1508                 esac
1509                 ;;
1510         esac
1511 done
1512 if test -f $src/config_h.SH; then
1513         if test ! -f config.h; then
1514         : oops, they left it out of MANIFEST, probably, so do it anyway.
1515         . $src/config_h.SH
1516         fi
1517 fi
1518 EOS
1519
1520 : extract files and exit if asked to do so
1521 case "$extractsh" in
1522 true)
1523         case "$realsilent" in
1524         true) ;;
1525         *) exec 1>&4;;
1526         esac
1527         case "$config_sh" in
1528         '') config_sh='config.sh';;
1529         esac
1530         echo " "
1531         echo "Fetching answers from $config_sh..."
1532         cd ..
1533         . $config_sh
1534         test "$override" && . ./optdef.sh
1535         echo " "
1536         . UU/extract
1537         rm -rf UU
1538         echo "Done."
1539         exit 0
1540         ;;
1541 esac
1542
1543 : Eunice requires " " instead of "", can you believe it
1544 echo " "
1545 : Here we go...
1546 echo "Beginning of configuration questions for $package."
1547
1548 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1549
1550 : first determine how to suppress newline on echo command
1551 echo " "
1552 echo "Checking echo to see how to suppress newlines..."
1553 (echo "hi there\c" ; echo " ") >.echotmp
1554 if $contains c .echotmp >/dev/null 2>&1 ; then
1555         echo "...using -n."
1556         n='-n'
1557         c=''
1558 else
1559         cat <<'EOM'
1560 ...using \c
1561 EOM
1562         n=''
1563         c='\c'
1564 fi
1565 echo $n "The star should be here-->$c"
1566 echo '*'
1567 rm -f .echotmp
1568
1569 : Now test for existence of everything in MANIFEST
1570 echo " "
1571 if test -f $rsrc/MANIFEST; then
1572         echo "First let's make sure your kit is complete.  Checking..." >&4
1573         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1574         rm -f missing
1575         tmppwd=`pwd`
1576         for filelist in x??; do
1577                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1578         done
1579         if test -s missing; then
1580                 cat missing >&4
1581                 cat >&4 <<'EOM'
1582
1583 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1584
1585 You have the option of continuing the configuration process, despite the
1586 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1587 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1588 and contact the author (perlbug@perl.com).
1589
1590 EOM
1591                 echo $n "Continue? [n] $c" >&4
1592                 read ans
1593                 case "$ans" in
1594                 y*)
1595                         echo "Continuing..." >&4
1596                         rm -f missing
1597                         ;;
1598                 *)
1599                         echo "ABORTING..." >&4
1600                         kill $$
1601                         ;;
1602                 esac
1603         else
1604                 echo "Looks good..."
1605         fi
1606 else
1607         echo "There is no MANIFEST file.  I hope your kit is complete !"
1608 fi
1609 rm -f missing x??
1610
1611 echo " "
1612 : Find the appropriate value for a newline for tr
1613 if test -n "$DJGPP"; then
1614        trnl='\012'
1615 fi
1616 if test X"$trnl" = X; then
1617         case "`echo foo|tr '\n' x 2>/dev/null`" in
1618         foox) trnl='\n' ;;
1619         esac
1620 fi
1621 if test X"$trnl" = X; then
1622         case "`echo foo|tr '\012' x 2>/dev/null`" in
1623         foox) trnl='\012' ;;
1624         esac
1625 fi
1626 if test X"$trnl" = X; then
1627         cat <<EOM >&2
1628
1629 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1630
1631 EOM
1632         exit 1
1633 fi
1634
1635 : compute the number of columns on the terminal for proper question formatting
1636 case "$COLUMNS" in
1637 '') COLUMNS='80';;
1638 esac
1639
1640 : set up the echo used in my read
1641 myecho="case \"\$xxxm\" in
1642 '') echo $n \"\$rp $c\" >&4;;
1643 *) case \"\$rp\" in
1644         '') echo $n \"[\$xxxm] $c\";;
1645         *)
1646                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1647                         echo \"\$rp\" >&4
1648                         echo $n \"[\$xxxm] $c\" >&4
1649                 else
1650                         echo $n \"\$rp [\$xxxm] $c\" >&4
1651                 fi
1652                 ;;
1653         esac;;
1654 esac"
1655
1656 : now set up to do reads with possible shell escape and default assignment
1657 cat <<EOSC >myread
1658 $startsh
1659 xxxm=\$dflt
1660 $myecho
1661 ans='!'
1662 case "\$fastread" in
1663 yes) case "\$dflt" in
1664         '') ;;
1665         *) ans='';
1666                 case "\$silent-\$rp" in
1667                 true-) ;;
1668                 *) echo " " >&4;;
1669                 esac;;
1670         esac;;
1671 *) case "\$silent" in
1672         true) case "\$rp" in
1673                 '') ans='';;
1674                 esac;;
1675         esac;;
1676 esac
1677 while expr "X\$ans" : "X!" >/dev/null; do
1678         read answ
1679         set x \$xxxm
1680         shift
1681         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1682         case  "\$answ" in
1683         "!")
1684                 sh 1>&4
1685                 echo " "
1686                 $myecho
1687                 ;;
1688         !*)
1689                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1690                 shift
1691                 sh 1>&4 -c "\$*"
1692                 echo " "
1693                 $myecho
1694                 ;;
1695         "\$ans")
1696                 case "\$ans" in
1697                 \\&*)
1698                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1699                         shift
1700                         case "\$1" in
1701                         -d)
1702                                 fastread=yes
1703                                 echo "(OK, I'll run with -d after this question.)" >&4
1704                                 ;;
1705                         -*)
1706                                 echo "*** Sorry, \$1 not supported yet." >&4
1707                                 ;;
1708                         esac
1709                         $myecho
1710                         ans=!
1711                         ;;
1712                 esac;;
1713         *)
1714                 case "\$aok" in
1715                 y)
1716                         echo "*** Substitution done -- please confirm."
1717                         xxxm="\$ans"
1718                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1719                         xxxm="\$ans"
1720                         ans=!
1721                         ;;
1722                 *)
1723                         echo "*** Error -- try again."
1724                         ans=!
1725                         ;;
1726                 esac
1727                 $myecho
1728                 ;;
1729         esac
1730         case "\$ans\$xxxm\$nostick" in
1731         '')
1732                 ans=!
1733                 $myecho
1734                 ;;
1735         esac
1736 done
1737 case "\$ans" in
1738 '') ans="\$xxxm";;
1739 esac
1740 EOSC
1741
1742 : create .config dir to save info across Configure sessions
1743 test -d ../.config || mkdir ../.config
1744 cat >../.config/README <<EOF
1745 This directory created by Configure to save information that should
1746 persist across sessions for $package.
1747
1748 You may safely delete it if you wish.
1749 EOF
1750
1751 : general instructions
1752 needman=true
1753 firsttime=true
1754 user=`(logname) 2>/dev/null`
1755 case "$user" in
1756 '') user=`whoami 2>&1`;;
1757 esac
1758 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1759         firsttime=false
1760         echo " "
1761         rp='Would you like to see the instructions?'
1762         dflt=n
1763         . ./myread
1764         case "$ans" in
1765         [yY]*) ;;
1766         *) needman=false;;
1767         esac
1768 fi
1769 if $needman; then
1770         cat <<EOH
1771
1772 This installation shell script will examine your system and ask you questions
1773 to determine how the perl5 package should be installed. If you get
1774 stuck on a question, you may use a ! shell escape to start a subshell or
1775 execute a command.  Many of the questions will have default answers in square
1776 brackets; typing carriage return will give you the default.
1777
1778 On some of the questions which ask for file or directory names you are allowed
1779 to use the ~name construct to specify the login directory belonging to "name",
1780 even if you don't have a shell which knows about that.  Questions where this is
1781 allowed will be marked "(~name ok)".
1782
1783 EOH
1784         rp=''
1785         dflt='Type carriage return to continue'
1786         . ./myread
1787         cat <<'EOH'
1788
1789 The prompter used in this script allows you to use shell variables and
1790 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1791 in the default answer, as if the default line was a set of arguments given to a
1792 script shell.  This means you may also use $* to repeat the whole default line,
1793 so you do not have to re-type everything to add something to the default.
1794
1795 Everytime there is a substitution, you will have to confirm.  If there is an
1796 error (e.g. an unmatched backtick), the default answer will remain unchanged
1797 and you will be prompted again.
1798
1799 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1800 the questions and use the computed defaults (or the previous answers if there
1801 was already a config.sh file). Type 'Configure -h' for a list of options.
1802 You may also start interactively and then answer '& -d' at any prompt to turn
1803 on the non-interactive behaviour for the remainder of the execution.
1804
1805 EOH
1806         . ./myread
1807         cat <<EOH
1808
1809 Much effort has been expended to ensure that this shell script will run on any
1810 Unix system.  If despite that it blows up on yours, your best bet is to edit
1811 Configure and run it again.  If you can't run Configure for some reason,
1812 you'll have to generate a config.sh file by hand.  Whatever problems you
1813 have, let me (perlbug@perl.com) know how I blew it.
1814
1815 This installation script affects things in two ways:
1816
1817 1) it may do direct variable substitutions on some of the files included
1818    in this kit.
1819 2) it builds a config.h file for inclusion in C programs.  You may edit
1820    any of these files as the need arises after running this script.
1821
1822 If you make a mistake on a question, there is no easy way to back up to it
1823 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1824 files.  Configure will offer to let you do this before it runs the SH files.
1825
1826 EOH
1827         dflt='Type carriage return to continue'
1828         . ./myread
1829         case "$firsttime" in
1830         true) echo $user >>../.config/instruct;;
1831         esac
1832 fi
1833
1834 : find out where common programs are
1835 echo " "
1836 echo "Locating common programs..." >&4
1837 cat <<EOSC >loc
1838 $startsh
1839 case \$# in
1840 0) exit 1;;
1841 esac
1842 thing=\$1
1843 shift
1844 dflt=\$1
1845 shift
1846 for dir in \$*; do
1847         case "\$thing" in
1848         .)
1849         if test -d \$dir/\$thing; then
1850                 echo \$dir
1851                 exit 0
1852         fi
1853         ;;
1854         *)
1855         for thisthing in \$dir/\$thing; do
1856                 : just loop through to pick last item
1857         done
1858         if test -f \$thisthing; then
1859                 echo \$thisthing
1860                 exit 0
1861         elif test -f \$dir/\$thing.exe; then
1862                 if test -n "$DJGPP"; then
1863                         echo \$dir/\$thing.exe
1864                 else
1865                         : on Eunice apparently
1866                         echo \$dir/\$thing
1867                 fi
1868                 exit 0
1869         fi
1870         ;;
1871         esac
1872 done
1873 echo \$dflt
1874 exit 1
1875 EOSC
1876 chmod +x loc
1877 $eunicefix loc
1878 loclist="
1879 awk
1880 cat
1881 comm
1882 cp
1883 echo
1884 expr
1885 grep
1886 ls
1887 make
1888 mkdir
1889 rm
1890 sed
1891 sort
1892 touch
1893 tr
1894 uniq
1895 "
1896 trylist="
1897 Mcc
1898 ar
1899 byacc
1900 cpp
1901 csh
1902 date
1903 egrep
1904 gzip
1905 less
1906 ln
1907 more
1908 nm
1909 nroff
1910 pg
1911 test
1912 uname
1913 zip
1914 "
1915 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1916 pth="$pth /lib /usr/lib"
1917 for file in $loclist; do
1918         eval xxx=\$$file
1919         case "$xxx" in
1920         /*|?:[\\/]*)
1921                 if test -f "$xxx"; then
1922                         : ok
1923                 else
1924                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1925                         xxx=`./loc $file $file $pth`
1926                 fi
1927                 ;;
1928         '') xxx=`./loc $file $file $pth`;;
1929         *) xxx=`./loc $xxx $xxx $pth`;;
1930         esac
1931         eval $file=$xxx
1932         eval _$file=$xxx
1933         case "$xxx" in
1934         /*)
1935                 echo $file is in $xxx.
1936                 ;;
1937         ?:[\\/]*)
1938                 echo $file is in $xxx.
1939                 ;;
1940         *)
1941                 echo "I don't know where '$file' is, and my life depends on it." >&4
1942                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1943                 exit 1
1944                 ;;
1945         esac
1946 done
1947 echo " "
1948 echo "Don't worry if any of the following aren't found..."
1949 say=offhand
1950 for file in $trylist; do
1951         eval xxx=\$$file
1952         case "$xxx" in
1953         /*|?:[\\/]*)
1954                 if test -f "$xxx"; then
1955                         : ok
1956                 else
1957                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1958                         xxx=`./loc $file $file $pth`
1959                 fi
1960                 ;;
1961         '') xxx=`./loc $file $file $pth`;;
1962         *) xxx=`./loc $xxx $xxx $pth`;;
1963         esac
1964         eval $file=$xxx
1965         eval _$file=$xxx
1966         case "$xxx" in
1967         /*)
1968                 echo $file is in $xxx.
1969                 ;;
1970         ?:[\\/]*)
1971                 echo $file is in $xxx.
1972                 ;;
1973         *)
1974                 echo "I don't see $file out there, $say."
1975                 say=either
1976                 ;;
1977         esac
1978 done
1979 case "$egrep" in
1980 egrep)
1981         echo "Substituting grep for egrep."
1982         egrep=$grep
1983         ;;
1984 esac
1985 case "$ln" in
1986 ln)
1987         echo "Substituting cp for ln."
1988         ln=$cp
1989         ;;
1990 esac
1991 case "$test" in
1992 test)
1993         echo "Hopefully test is built into your sh."
1994         ;;
1995 *)
1996         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1997                 echo "Using the test built into your sh."
1998                 test=test
1999                 _test=test
2000         fi
2001         ;;
2002 esac
2003 case "$echo" in
2004 echo)
2005         echo "Hopefully echo is built into your sh."
2006         ;;
2007 '') ;;
2008 *)
2009         echo " "
2010 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2011         $echo $n "hi there$c" >foo1
2012         echo $n "hi there$c" >foo2
2013         if cmp foo1 foo2 >/dev/null 2>&1; then
2014                 echo "They are compatible.  In fact, they may be identical."
2015         else
2016                 case "$n" in
2017                 '-n') n='' c='\c';;
2018                 *) n='-n' c='';;
2019                 esac
2020                 cat <<FOO
2021 They are not compatible!  You are probably running ksh on a non-USG system.
2022 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2023 have echo built in and we may have to run some Bourne shell scripts.  That
2024 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2025
2026 FOO
2027                 $echo $n "The star should be here-->$c"
2028                 $echo "*"
2029         fi
2030         $rm -f foo1 foo2
2031         ;;
2032 esac
2033
2034 : determine whether symbolic links are supported
2035 echo " "
2036 $touch blurfl
2037 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2038         echo "Symbolic links are supported." >&4
2039         lns="$ln -s"
2040 else
2041         echo "Symbolic links are NOT supported." >&4
2042         lns="$ln"
2043 fi
2044 $rm -f blurfl sym
2045
2046 : see whether [:lower:] and [:upper:] are supported character classes
2047 echo " "
2048 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2049 ABYZ)
2050         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2051         up='[:upper:]'
2052         low='[:lower:]'
2053         ;;
2054 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2055         # (0xc9 and 0xd1), therefore that is a nice testing point.
2056         if test "X$up" = X -o "X$low" = X; then
2057             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2058             ij) up='[A-Z]'
2059                 low='[a-z]'
2060                 ;;
2061             esac
2062         fi
2063         if test "X$up" = X -o "X$low" = X; then
2064             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2065             ij) up='A-Z'
2066                 low='a-z'
2067                 ;;
2068             esac
2069         fi
2070         if test "X$up" = X -o "X$low" = X; then
2071             case "`echo IJ | od -x 2>/dev/null`" in
2072             *C9D1*|*c9d1*)
2073                 echo "Hey, this might be EBCDIC." >&4
2074                 if test "X$up" = X -o "X$low" = X; then
2075                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2076                     ij) up='[A-IJ-RS-Z]'
2077                         low='[a-ij-rs-z]'
2078                         ;;
2079                     esac
2080                 fi
2081                 if test "X$up" = X -o "X$low" = X; then
2082                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2083                     ij) up='A-IJ-RS-Z'
2084                         low='a-ij-rs-z'
2085                         ;;
2086                     esac
2087                 fi
2088                 ;;
2089             esac
2090         fi
2091 esac
2092 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2093 ij)
2094     echo "Using $up and $low to convert case." >&4
2095     ;;
2096 *)
2097     echo "I don't know how to translate letters from upper to lower case." >&4
2098     echo "Your tr is not acting any way I know of." >&4
2099     exit 1
2100     ;;
2101 esac
2102 : set up the translation script tr, must be called with ./tr of course
2103 cat >tr <<EOSC
2104 $startsh
2105 case "\$1\$2" in
2106 '[A-Z][a-z]') exec $tr '$up' '$low';;
2107 '[a-z][A-Z]') exec $tr '$low' '$up';;
2108 esac
2109 exec $tr "\$@"
2110 EOSC
2111 chmod +x tr
2112 $eunicefix tr
2113
2114 : Try to determine whether config.sh was made on this system
2115 case "$config_sh" in
2116 '')
2117 myuname=`$uname -a 2>/dev/null`
2118 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2119 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2120 # because the A-Z/a-z are not consecutive.
2121 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2122         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2123 newmyuname="$myuname"
2124 dflt=n
2125 case "$knowitall" in
2126 '')
2127         if test -f ../config.sh; then
2128                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2129                         eval "`grep myuname= ../config.sh`"
2130                 fi
2131                 if test "X$myuname" = "X$newmyuname"; then
2132                         dflt=y
2133                 fi
2134         fi
2135         ;;
2136 *) dflt=y;;
2137 esac
2138
2139 : Get old answers from old config file if Configure was run on the
2140 : same system, otherwise use the hints.
2141 hint=default
2142 cd ..
2143 if test -f config.sh; then
2144         echo " "
2145         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2146         . UU/myread
2147         case "$ans" in
2148         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2149         *)  echo "Fetching default answers from your old config.sh file..." >&4
2150                 tmp_n="$n"
2151                 tmp_c="$c"
2152                 tmp_sh="$sh"
2153                 . ./config.sh
2154                 cp config.sh UU
2155                 n="$tmp_n"
2156                 c="$tmp_c"
2157                 : Older versions did not always set $sh.  Catch re-use of such
2158                 : an old config.sh.
2159                 case "$sh" in
2160                 '') sh="$tmp_sh" ;;
2161                 esac
2162                 hint=previous
2163                 ;;
2164         esac
2165 fi
2166 if test ! -f config.sh; then
2167         $cat <<EOM
2168
2169 First time through, eh?  I have some defaults handy for some systems
2170 that need some extra help getting the Configure answers right:
2171
2172 EOM
2173         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2174         dflt=''
2175         : Half the following guesses are probably wrong... If you have better
2176         : tests or hints, please send them to perlbug@perl.com
2177         : The metaconfig authors would also appreciate a copy...
2178         $test -f /irix && osname=irix
2179         $test -f /xenix && osname=sco_xenix
2180         $test -f /dynix && osname=dynix
2181         $test -f /dnix && osname=dnix
2182         $test -f /lynx.os && osname=lynxos
2183         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2184         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2185         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2186         $test -f /bin/mips && /bin/mips && osname=mips
2187         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2188                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2189         $test -d /usr/apollo/bin && osname=apollo
2190         $test -f /etc/saf/_sactab && osname=svr4
2191         $test -d /usr/include/minix && osname=minix
2192         if $test -d /MachTen -o -d /MachTen_Folder; then
2193                 osname=machten
2194                 if $test -x /sbin/version; then
2195                         osvers=`/sbin/version | $awk '{print $2}' |
2196                         $sed -e 's/[A-Za-z]$//'`
2197                 elif $test -x /usr/etc/version; then
2198                         osvers=`/usr/etc/version | $awk '{print $2}' |
2199                         $sed -e 's/[A-Za-z]$//'`
2200                 else
2201                         osvers="$2.$3"
2202                 fi
2203         fi
2204
2205         $test -f /sys/posix.dll &&
2206                 $test -f /usr/bin/what &&
2207                 set X `/usr/bin/what /sys/posix.dll` &&
2208                 $test "$3" = UWIN &&
2209                 osname=uwin &&
2210                 osvers="$5"
2211
2212         if $test -f $uname; then
2213                 set X $myuname
2214                 shift
2215
2216                 case "$5" in
2217                 fps*) osname=fps ;;
2218                 mips*)
2219                         case "$4" in
2220                         umips) osname=umips ;;
2221                         *) osname=mips ;;
2222                         esac;;
2223                 [23]100) osname=mips ;;
2224                 next*) osname=next ;;
2225                 i386*)
2226                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2227                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2228                                 osname='sco'
2229                                 osvers=$tmp
2230                         elif $test -f /etc/kconfig; then
2231                                 osname=isc
2232                                 if test "$lns" = "$ln -s"; then
2233                                         osvers=4
2234                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2235                                         osvers=3
2236                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2237                                         osvers=2
2238                                 fi
2239                         fi
2240                         tmp=''
2241                         ;;
2242                 pc*)
2243                         if test -n "$DJGPP"; then
2244                                 osname=dos
2245                                 osvers=djgpp
2246                         fi
2247                         ;;
2248                 esac
2249
2250                 case "$1" in
2251                 aix) osname=aix
2252                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2253                         case "$tmp" in
2254                         'not found') osvers="$4"."$3" ;;
2255                         '<3240'|'<>3240') osvers=3.2.0 ;;
2256                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2257                         '=3250'|'>3250') osvers=3.2.5 ;;
2258                         *) osvers=$tmp;;
2259                         esac
2260                         ;;
2261                 bsd386) osname=bsd386
2262                         osvers=`$uname -r`
2263                         ;;
2264                 cygwin*) osname=cygwin
2265                         osvers="$3"
2266                         ;;
2267                 *dc.osx) osname=dcosx
2268                         osvers="$3"
2269                         ;;
2270                 dnix) osname=dnix
2271                         osvers="$3"
2272                         ;;
2273                 domainos) osname=apollo
2274                         osvers="$3"
2275                         ;;
2276                 dgux) osname=dgux 
2277                         osvers="$3"
2278                         ;;
2279                 dynixptx*) osname=dynixptx
2280                         osvers=`echo "$4"|sed 's/^v//'`
2281                         ;;
2282                 freebsd) osname=freebsd 
2283                         osvers="$3" ;;
2284                 genix) osname=genix ;;
2285                 hp*) osname=hpux 
2286                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2287                         ;;
2288                 irix*) osname=irix
2289                         case "$3" in
2290                         4*) osvers=4 ;;
2291                         5*) osvers=5 ;;
2292                         *)      osvers="$3" ;;
2293                         esac
2294                         ;;
2295                 linux) osname=linux
2296                         case "$3" in
2297                         *)      osvers="$3" ;;
2298                         esac
2299                         ;;
2300                 MiNT) osname=mint
2301                         ;;
2302                 netbsd*) osname=netbsd
2303                         osvers="$3"
2304                         ;;
2305                 news-os) osvers="$3"
2306                         case "$3" in
2307                         4*) osname=newsos4 ;;
2308                         *) osname=newsos ;;
2309                         esac
2310                         ;;
2311                 next*) osname=next ;;
2312                 POSIX-BC | posix-bc ) osname=posix-bc
2313                         osvers="$3"
2314                         ;;
2315                 powerux | power_ux | powermax_os | powermaxos | \
2316                 powerunix | power_unix) osname=powerux
2317                         osvers="$3"
2318                         ;;
2319                 qnx) osname=qnx
2320                         osvers="$4"
2321                         ;;
2322                 solaris) osname=solaris
2323                         case "$3" in
2324                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2325                         *)      osvers="$3" ;;
2326                         esac
2327                         ;;
2328                 sunos) osname=sunos
2329                         case "$3" in
2330                         5*) osname=solaris
2331                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2332                         *)      osvers="$3" ;;
2333                         esac
2334                         ;;
2335                 titanos) osname=titanos
2336                         case "$3" in
2337                         1*) osvers=1 ;;
2338                         2*) osvers=2 ;;
2339                         3*) osvers=3 ;;
2340                         4*) osvers=4 ;;
2341                         *)      osvers="$3" ;;
2342                         esac
2343                         ;;
2344                 ultrix) osname=ultrix
2345                         osvers="$3"
2346                         ;;
2347                 osf1|mls+)      case "$5" in
2348                                 alpha)
2349                                         osname=dec_osf
2350                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2351                                         ;;
2352                         hp*)    osname=hp_osf1  ;;
2353                         mips)   osname=mips_osf1 ;;
2354                         esac
2355                         ;;
2356                 unixware) osname=svr5
2357                         osvers="$4"
2358                         ;;
2359                 uts) osname=uts
2360                         osvers="$3"
2361                         ;;
2362                 $2) case "$osname" in
2363                         *isc*) ;;
2364                         *freebsd*) ;;
2365                         svr*)
2366                                 : svr4.x or possibly later
2367                                 case "svr$3" in 
2368                                 ${osname}*)
2369                                         osname=svr$3
2370                                         osvers=$4
2371                                         ;;
2372                                 esac
2373                                 case "$osname" in
2374                                 svr4.0)
2375                                         : Check for ESIX
2376                                         if test -f /stand/boot ; then
2377                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2378                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2379                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2380                                                         if test -n "$isesix"; then
2381                                                                 osname=esix4
2382                                                         fi
2383                                                 fi
2384                                         fi
2385                                         ;;
2386                                 esac
2387                                 ;;
2388                         *)      if test -f /etc/systemid; then
2389                                         osname=sco
2390                                         set `echo $3 | $sed 's/\./ /g'` $4
2391                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2392                                                 osvers=$1.$2.$3
2393                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2394                                                 osvers=$1.$2
2395                                         elif $test -f $src/hints/sco_$1.sh; then
2396                                                 osvers=$1
2397                                         fi
2398                                 else
2399                                         case "$osname" in
2400                                         '') : Still unknown.  Probably a generic Sys V.
2401                                                 osname="sysv"
2402                                                 osvers="$3"
2403                                                 ;;
2404                                         esac
2405                                 fi
2406                                 ;;
2407                         esac
2408                         ;;
2409                 *)      case "$osname" in
2410                         '') : Still unknown.  Probably a generic BSD.
2411                                 osname="$1"
2412                                 osvers="$3"
2413                                 ;;
2414                         esac
2415                         ;;
2416                 esac
2417         else
2418                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2419                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2420                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2421                                 osname=news_os
2422                         fi
2423                         $rm -f UU/kernel.what
2424                 elif test -d c:/.; then
2425                         set X $myuname
2426                         osname=os2
2427                         osvers="$5"
2428                 fi
2429         fi
2430         
2431         : Now look for a hint file osname_osvers, unless one has been
2432         : specified already.
2433         case "$hintfile" in
2434         ''|' ')
2435                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2436                 : Also try without trailing minor version numbers.
2437                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2438                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2439                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2440                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2441                 case "$file" in
2442                 '') dflt=none ;;
2443                 *)  case "$osvers" in
2444                         '') dflt=$file
2445                                 ;;
2446                         *)  if $test -f $src/hints/$file.sh ; then
2447                                         dflt=$file
2448                                 elif $test -f $src/hints/$xfile.sh ; then
2449                                         dflt=$xfile
2450                                 elif $test -f $src/hints/$xxfile.sh ; then
2451                                         dflt=$xxfile
2452                                 elif $test -f $src/hints/$xxxfile.sh ; then
2453                                         dflt=$xxxfile
2454                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2455                                         dflt=$xxxxfile
2456                                 elif $test -f "$src/hints/${osname}.sh" ; then
2457                                         dflt="${osname}"
2458                                 else
2459                                         dflt=none
2460                                 fi
2461                                 ;;
2462                         esac
2463                         ;;
2464                 esac
2465                 if $test -f Policy.sh ; then
2466                         case "$dflt" in
2467                         *Policy*) ;;
2468                         none) dflt="Policy" ;;
2469                         *) dflt="Policy $dflt" ;;
2470                         esac
2471                 fi
2472                 ;;
2473         *)
2474                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2475                 ;;
2476         esac
2477
2478         if $test -f Policy.sh ; then
2479                 $cat <<EOM
2480
2481 There's also a Policy hint file available, which should make the
2482 site-specific (policy) questions easier to answer.
2483 EOM
2484
2485         fi
2486
2487         $cat <<EOM
2488
2489 You may give one or more space-separated answers, or "none" if appropriate.
2490 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2491 is a good thing.  DO NOT give a wrong version or a wrong OS.
2492
2493 EOM
2494
2495         rp="Which of these apply, if any?"
2496         . UU/myread
2497         tans=$ans
2498         for file in $tans; do
2499                 if $test X$file = XPolicy -a -f Policy.sh; then
2500                         . Policy.sh
2501                         $cat Policy.sh >> UU/config.sh
2502                 elif $test -f $src/hints/$file.sh; then
2503                         . $src/hints/$file.sh
2504                         $cat $src/hints/$file.sh >> UU/config.sh
2505                 elif $test X$tans = X -o X$tans = Xnone ; then
2506                         : nothing
2507                 else
2508                         : Give one chance to correct a possible typo.
2509                         echo "$file.sh does not exist"
2510                         dflt=$file
2511                         rp="hint to use instead?"
2512                         . UU/myread
2513                         for file in $ans; do
2514                                 if $test -f "$src/hints/$file.sh"; then
2515                                         . $src/hints/$file.sh
2516                                         $cat $src/hints/$file.sh >> UU/config.sh
2517                                 elif $test X$ans = X -o X$ans = Xnone ; then
2518                                         : nothing
2519                                 else
2520                                         echo "$file.sh does not exist -- ignored."
2521                                 fi
2522                         done
2523                 fi
2524         done
2525
2526         hint=recommended
2527         : Remember our hint file for later.
2528         if $test -f "$src/hints/$file.sh" ; then
2529                 hintfile="$file"
2530         else
2531                 hintfile=''
2532         fi
2533 fi
2534 cd UU
2535 ;;
2536 *)
2537         echo " "
2538         echo "Fetching default answers from $config_sh..." >&4
2539         tmp_n="$n"
2540         tmp_c="$c"
2541         cd ..
2542         cp $config_sh config.sh 2>/dev/null
2543         chmod +w config.sh
2544         . ./config.sh
2545         cd UU
2546         cp ../config.sh .
2547         n="$tmp_n"
2548         c="$tmp_c"
2549         hint=previous
2550         ;;
2551 esac
2552 test "$override" && . ./optdef.sh
2553 myuname="$newmyuname"
2554
2555 : Restore computed paths
2556 for file in $loclist $trylist; do
2557         eval $file="\$_$file"
2558 done
2559
2560 cat << EOM
2561
2562 Configure uses the operating system name and version to set some defaults.
2563 The default value is probably right if the name rings a bell. Otherwise,
2564 since spelling matters for me, either accept the default or answer "none"
2565 to leave it blank.
2566
2567 EOM
2568 case "$osname" in
2569         ''|' ')
2570                 case "$hintfile" in
2571                 ''|' '|none) dflt=none ;;
2572                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2573                 esac
2574                 ;;
2575         *) dflt="$osname" ;;
2576 esac
2577 rp="Operating system name?"
2578 . ./myread
2579 case "$ans" in
2580 none)  osname='' ;;
2581 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2582 esac
2583 echo " "
2584 case "$osvers" in
2585         ''|' ')
2586                 case "$hintfile" in
2587                 ''|' '|none) dflt=none ;;
2588                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2589                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2590                         case "$dflt" in
2591                         ''|' ') dflt=none ;;
2592                         esac
2593                         ;;
2594                 esac
2595                 ;;
2596         *) dflt="$osvers" ;;
2597 esac
2598 rp="Operating system version?"
2599 . ./myread
2600 case "$ans" in
2601 none)  osvers='' ;;
2602 *) osvers="$ans" ;;
2603 esac
2604
2605
2606 . ./posthint.sh
2607
2608 : who configured the system
2609 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2610 cf_by=`(logname) 2>/dev/null`
2611 case "$cf_by" in
2612 "")
2613         cf_by=`(whoami) 2>/dev/null`
2614         case "$cf_by" in
2615         "") cf_by=unknown ;;
2616         esac ;;
2617 esac
2618
2619 : set up the script used to warn in case of inconsistency
2620 cat <<EOS >whoa
2621 $startsh
2622 EOS
2623 cat <<'EOSC' >>whoa
2624 dflt=y
2625 echo " "
2626 echo "*** WHOA THERE!!! ***" >&4
2627 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2628 rp="    Keep the $hint value?"
2629 . ./myread
2630 case "$ans" in
2631 y) td=$was; tu=$was;;
2632 esac
2633 EOSC
2634
2635 : function used to set $1 to $val
2636 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2637 case "$val$was" in
2638 $define$undef) . ./whoa; eval "$var=\$td";;
2639 $undef$define) . ./whoa; eval "$var=\$tu";;
2640 *) eval "$var=$val";;
2641 esac'
2642
2643 case "$usethreads" in
2644 $define|true|[yY]*)     dflt='y';;
2645 *) dflt='n';;
2646 esac
2647 cat <<EOM
2648
2649 Perl can be built to take advantage of threads on some systems.
2650 To do so, Configure can be run with -Dusethreads.
2651
2652 Note that threading is a highly experimental feature, and
2653 some known race conditions still remain.  If you choose to try
2654 it, be very sure to not actually deploy it for production
2655 purposes.  README.threads has more details, and is required
2656 reading if you enable threads.
2657
2658 If this doesn't make any sense to you, just accept the default '$dflt'.
2659 EOM
2660 rp='Build a threading Perl?'
2661 . ./myread
2662 case "$ans" in
2663 y|Y)    val="$define" ;;
2664 *)      val="$undef" ;;
2665 esac
2666 set usethreads
2667 eval $setvar
2668
2669 case "$usethreads" in
2670 $define)
2671         $cat <<EOM
2672
2673 As of 5.5.640, Perl has two different internal threading implementations,
2674 the 5.005 version (5005threads) and an interpreter-based version
2675 (ithreads) that has one interpreter per thread.  Both are very 
2676 experimental.  This arrangement exists to help developers work out
2677 which one is better.
2678
2679 If you're a casual user, you probably don't want interpreter-threads
2680 at this time.  There doesn't yet exist a way to create threads from
2681 within Perl in this model, i.e., "use Thread;" will NOT work.
2682 EOM
2683         : Default to ithreads unless overridden on command line or with
2684         : old config.sh
2685         dflt='y'
2686         case "$use5005threads" in
2687                 $define|true|[yY]*) dflt='n';;
2688         esac
2689         case "$useithreads" in
2690                 $undef|false|[nN]*) dflt='n';;
2691         esac
2692         rp='Use interpreter-based ithreads?'
2693         . ./myread
2694         case "$ans" in
2695         y|Y)    val="$define" ;;
2696         *)      val="$undef" ;;
2697         esac
2698         set useithreads
2699         eval $setvar
2700         : Now set use5005threads to the opposite value.
2701         case "$useithreads" in
2702         $define) val="$undef" ;;
2703         *) val="$define" ;;
2704         esac
2705         set use5005threads
2706         eval $setvar
2707         ;;
2708 *)
2709         useithreads="$undef"
2710         use5005threads="$undef"
2711         ;;
2712 esac
2713
2714 case "$d_oldpthreads" in
2715 '')     : Configure tests would be welcome here.  For now, assume undef.
2716         val="$undef" ;;
2717 *)      val="$d_oldpthreads" ;;
2718 esac
2719 set d_oldpthreads
2720 eval $setvar
2721
2722
2723 case "$usethreads" in
2724 "$define"|true|[yY]*)
2725 : Look for a hint-file generated 'call-back-unit'.  If the
2726 : user has specified that a threading perl is to be built,
2727 : we may need to set or change some other defaults.
2728         if $test -f usethreads.cbu; then
2729                 echo "Your platform has some specific hints for threaded builds, using them..."
2730                 . ./usethreads.cbu
2731         else
2732                 $cat <<EOM
2733 (Your platform doesn't have any specific hints for threaded builds.
2734  Assuming POSIX threads, then.)
2735 EOM
2736         fi
2737         ;;
2738 esac
2739
2740 cat <<EOM
2741
2742 Perl can be built so that multiple Perl interpreters can coexist
2743 within the same Perl executable.
2744 EOM
2745
2746 case "$useithreads" in
2747 $define)
2748         cat <<EOM
2749 This multiple interpreter support is required for interpreter-based threads.
2750 EOM
2751         val="$define"
2752         ;;
2753 *)      case "$usemultiplicity" in
2754         $define|true|[yY]*)     dflt='y';;
2755         *) dflt='n';;
2756         esac
2757         echo " "
2758         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2759         rp='Build Perl for multiplicity?'
2760         . ./myread
2761         case "$ans" in
2762         y|Y)    val="$define" ;;
2763         *)      val="$undef" ;;
2764         esac
2765         ;;
2766 esac
2767 set usemultiplicity
2768 eval $setvar
2769
2770 : determine where manual pages are on this system
2771 echo " "
2772 case "$sysman" in
2773 '') 
2774         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2775         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2776         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2777         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2778         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2779         sysman=`./loc . /usr/man/man1 $syspath`
2780         ;;
2781 esac
2782 if $test -d "$sysman"; then
2783         echo "System manual is in $sysman." >&4
2784 else
2785         echo "Could not find manual pages in source form." >&4
2786 fi
2787
2788 : see what memory models we can support
2789 case "$models" in
2790 '')
2791         $cat >pdp11.c <<'EOP'
2792 int main() {
2793 #ifdef pdp11
2794         exit(0);
2795 #else
2796         exit(1);
2797 #endif
2798 }
2799 EOP
2800         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2801         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2802                 dflt='unsplit split'
2803         else
2804                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2805                 case "$tans" in
2806                 X) dflt='none';;
2807                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2808                                 dflt='small'
2809                         else
2810                                 dflt=''
2811                         fi
2812                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2813                                 dflt="$dflt medium"
2814                         fi
2815                         if $test -d /lib/large || $test -d /usr/lib/large; then
2816                                 dflt="$dflt large"
2817                         fi
2818                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2819                                 dflt="$dflt huge"
2820                         fi
2821                 esac
2822         fi;;
2823 *) dflt="$models";;
2824 esac
2825 $cat <<EOM
2826  
2827 Some systems have different model sizes.  On most systems they are called
2828 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2829 split.  If your system doesn't support different memory models, say "none".
2830 If you wish to force everything to one memory model, say "none" here and
2831 put the appropriate flags later when it asks you for other cc and ld flags.
2832 Venix systems may wish to put "none" and let the compiler figure things out.
2833 (In the following question multiple model names should be space separated.)
2834
2835 The default for most systems is "none".
2836
2837 EOM
2838 rp="Which memory models are supported?"
2839 . ./myread
2840 models="$ans"
2841
2842 case "$models" in
2843 none)
2844         small=''
2845         medium=''
2846         large=''
2847         huge=''
2848         unsplit=''
2849         split=''
2850         ;;
2851 *split)
2852         case "$split" in
2853         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2854                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2855                         dflt='-i'
2856                 else
2857                         dflt='none'
2858                 fi;;
2859         *) dflt="$split";;
2860         esac
2861         rp="What flag indicates separate I and D space?"
2862         . ./myread
2863         tans="$ans"
2864         case "$tans" in
2865         none) tans='';;
2866         esac
2867         split="$tans"
2868         unsplit='';;
2869 *large*|*small*|*medium*|*huge*)
2870         case "$models" in
2871         *large*)
2872                 case "$large" in
2873                 '') dflt='-Ml';;
2874                 *) dflt="$large";;
2875                 esac
2876         rp="What flag indicates large model?"
2877         . ./myread
2878         tans="$ans"
2879         case "$tans" in
2880         none) tans='';
2881         esac
2882         large="$tans";;
2883         *) large='';;
2884         esac
2885         case "$models" in
2886         *huge*) case "$huge" in
2887                 '') dflt='-Mh';;
2888                 *) dflt="$huge";;
2889                 esac
2890                 rp="What flag indicates huge model?"
2891                 . ./myread
2892                 tans="$ans"
2893                 case "$tans" in
2894                 none) tans='';
2895                 esac
2896                 huge="$tans";;
2897         *) huge="$large";;
2898         esac
2899         case "$models" in
2900         *medium*) case "$medium" in
2901                 '') dflt='-Mm';;
2902                 *) dflt="$medium";;
2903                 esac
2904                 rp="What flag indicates medium model?"
2905                 . ./myread
2906                 tans="$ans"
2907                 case "$tans" in
2908                 none) tans='';
2909                 esac
2910                 medium="$tans";;
2911         *) medium="$large";;
2912         esac
2913         case "$models" in
2914         *small*) case "$small" in
2915                 '') dflt='none';;
2916                 *) dflt="$small";;
2917                 esac
2918                 rp="What flag indicates small model?"
2919                 . ./myread
2920                 tans="$ans"
2921                 case "$tans" in
2922                 none) tans='';
2923                 esac
2924                 small="$tans";;
2925         *) small='';;
2926         esac
2927         ;;
2928 *)
2929         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2930         ;;
2931 esac
2932 $rm -f pdp11.* pdp11
2933
2934 : make some quick guesses about what we are up against
2935 echo " "
2936 $echo $n "Hmm...  $c"
2937 echo exit 1 >bsd
2938 echo exit 1 >usg
2939 echo exit 1 >v7
2940 echo exit 1 >osf1
2941 echo exit 1 >eunice
2942 echo exit 1 >xenix
2943 echo exit 1 >venix
2944 echo exit 1 >os2
2945 d_bsd="$undef"
2946 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2947 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2948 then
2949         echo "Looks kind of like an OSF/1 system, but we'll see..."
2950         echo exit 0 >osf1
2951 elif test `echo abc | tr a-z A-Z` = Abc ; then
2952         xxx=`./loc addbib blurfl $pth`
2953         if $test -f $xxx; then
2954         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2955                 echo exit 0 >bsd
2956                 echo exit 0 >usg
2957         else
2958                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2959                         echo "Looks kind of like an extended USG system, but we'll see..."
2960                 else
2961                         echo "Looks kind of like a USG system, but we'll see..."
2962                 fi
2963                 echo exit 0 >usg
2964         fi
2965 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2966         echo "Looks kind of like a BSD system, but we'll see..."
2967         d_bsd="$define"
2968         echo exit 0 >bsd
2969 else
2970         echo "Looks kind of like a Version 7 system, but we'll see..."
2971         echo exit 0 >v7
2972 fi
2973 case "$eunicefix" in
2974 *unixtovms*)
2975         $cat <<'EOI'
2976 There is, however, a strange, musty smell in the air that reminds me of
2977 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2978 EOI
2979         echo exit 0 >eunice
2980         d_eunice="$define"
2981 : it so happens the Eunice I know will not run shell scripts in Unix format
2982         ;;
2983 *)
2984         echo " "
2985         echo "Congratulations.  You aren't running Eunice."
2986         d_eunice="$undef"
2987         ;;
2988 esac
2989 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2990 case "$p_" in
2991 :) ;;
2992 *)
2993         $cat <<'EOI'
2994 I have the feeling something is not exactly right, however...don't tell me...
2995 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2996 EOI
2997         echo exit 0 >os2
2998         ;;
2999 esac
3000 if test -f /xenix; then
3001         echo "Actually, this looks more like a XENIX system..."
3002         echo exit 0 >xenix
3003         d_xenix="$define"
3004 else
3005         echo " "
3006         echo "It's not Xenix..."
3007         d_xenix="$undef"
3008 fi
3009 chmod +x xenix
3010 $eunicefix xenix
3011 if test -f /venix; then
3012         echo "Actually, this looks more like a VENIX system..."
3013         echo exit 0 >venix
3014 else
3015         echo " "
3016         if ./xenix; then
3017                 : null
3018         else
3019                 echo "Nor is it Venix..."
3020         fi
3021 fi
3022 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3023 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3024 $rm -f foo
3025
3026 : see if we need a special compiler
3027 echo " "
3028 if ./usg; then
3029         case "$cc" in
3030         '') case "$Mcc" in
3031                 /*) dflt='Mcc';;
3032                 *) case "$large" in
3033                         -M*) dflt='cc';;
3034                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3035                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3036                                                 dflt='cc'
3037                                         else
3038                                                 dflt='cc -M'
3039                                         fi
3040                                 else
3041                                         dflt='cc'
3042                                 fi;;
3043                         esac;;
3044                 esac;;
3045         *)  dflt="$cc";;
3046         esac
3047         case "$dflt" in
3048         *M*)    $cat <<'EOM'
3049 On some older systems the default C compiler will not resolve multiple global
3050 references that happen to have the same name.  On some such systems the "Mcc"
3051 command may be used to force these to be resolved.  On other systems a "cc -M"
3052 command is required.  (Note that the -M flag on other systems indicates a
3053 memory model to use!) If you have the Gnu C compiler, you might wish to use
3054 that instead.
3055
3056 EOM
3057         ;;
3058         esac
3059         rp="Use which C compiler?"
3060         . ./myread
3061         cc="$ans"
3062 else
3063         case "$cc" in
3064         '') dflt=cc;;
3065         *) dflt="$cc";;
3066         esac
3067         rp="Use which C compiler?"
3068         . ./myread
3069         cc="$ans"
3070 fi
3071 : Look for a hint-file generated 'call-back-unit'.  Now that the
3072 : user has specified the compiler, we may need to set or change some
3073 : other defaults.
3074 if $test -f cc.cbu; then
3075     . ./cc.cbu
3076 fi
3077 echo " "
3078 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3079 $cat >gccvers.c <<EOM
3080 #include <stdio.h>
3081 int main() {
3082 #ifdef __GNUC__
3083 #ifdef __VERSION__
3084         printf("%s\n", __VERSION__);
3085 #else
3086         printf("%s\n", "1");
3087 #endif
3088 #endif
3089         exit(0);
3090 }
3091 EOM
3092 if $cc $ldflags -o gccvers gccvers.c; then
3093         gccversion=`./gccvers`
3094         case "$gccversion" in
3095         '') echo "You are not using GNU cc." ;;
3096         *)  echo "You are using GNU cc $gccversion."
3097             ;;
3098         esac
3099 else
3100         echo " "
3101         echo "*** WHOA THERE!!! ***" >&4
3102         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3103         case "$knowitall" in
3104         '')
3105         echo "    You'd better start hunting for one and let me know about it." >&4
3106                 exit 1
3107                 ;;
3108         esac
3109 fi
3110 $rm -f gccvers*
3111 case "$gccversion" in
3112 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3113 esac
3114
3115 : decide how portable to be.  Allow command line overrides.
3116 case "$d_portable" in
3117 "$undef") ;;
3118 *)      d_portable="$define" ;;
3119 esac
3120
3121 : set up shell script to do ~ expansion
3122 cat >filexp <<EOSS
3123 $startsh
3124 : expand filename
3125 case "\$1" in
3126  ~/*|~)
3127         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3128         ;;
3129  ~*)
3130         if $test -f /bin/csh; then
3131                 /bin/csh -f -c "glob \$1"
3132                 failed=\$?
3133                 echo ""
3134                 exit \$failed
3135         else
3136                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3137                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3138                 if $test ! -d "\$dir"; then
3139                         me=\`basename \$0\`
3140                         echo "\$me: can't locate home directory for: \$name" >&2
3141                         exit 1
3142                 fi
3143                 case "\$1" in
3144                 */*)
3145                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3146                         ;;
3147                 *)
3148                         echo \$dir
3149                         ;;
3150                 esac
3151         fi
3152         ;;
3153 *)
3154         echo \$1
3155         ;;
3156 esac
3157 EOSS
3158 chmod +x filexp
3159 $eunicefix filexp
3160
3161 : now set up to get a file name
3162 cat <<EOS >getfile
3163 $startsh
3164 EOS
3165 cat <<'EOSC' >>getfile
3166 tilde=''
3167 fullpath=''
3168 already=''
3169 skip=''
3170 none_ok=''
3171 exp_file=''
3172 nopath_ok=''
3173 orig_rp="$rp"
3174 orig_dflt="$dflt"
3175 case "$gfpth" in
3176 '') gfpth='.' ;;
3177 esac
3178
3179 case "$fn" in
3180 *\(*)
3181         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3182         fn=`echo $fn | sed 's/(.*)//'`
3183         ;;
3184 esac
3185
3186 case "$fn" in
3187 *:*)
3188         loc_file=`expr $fn : '.*:\(.*\)'`
3189         fn=`expr $fn : '\(.*\):.*'`
3190         ;;
3191 esac
3192
3193 case "$fn" in
3194 *~*) tilde=true;;
3195 esac
3196 case "$fn" in
3197 */*) fullpath=true;;
3198 esac
3199 case "$fn" in
3200 *+*) skip=true;;
3201 esac
3202 case "$fn" in
3203 *n*) none_ok=true;;
3204 esac
3205 case "$fn" in
3206 *e*) exp_file=true;;
3207 esac
3208 case "$fn" in
3209 *p*) nopath_ok=true;;
3210 esac
3211
3212 case "$fn" in
3213 *f*) type='File';;
3214 *d*) type='Directory';;
3215 *l*) type='Locate';;
3216 esac
3217
3218 what="$type"
3219 case "$what" in
3220 Locate) what='File';;
3221 esac
3222
3223 case "$exp_file" in
3224 '')
3225         case "$d_portable" in
3226         "$define") ;;
3227         *) exp_file=true;;
3228         esac
3229         ;;
3230 esac
3231
3232 cd ..
3233 while test "$type"; do
3234         redo=''
3235         rp="$orig_rp"
3236         dflt="$orig_dflt"
3237         case "$tilde" in
3238         true) rp="$rp (~name ok)";;
3239         esac
3240         . UU/myread
3241         if test -f UU/getfile.ok && \
3242                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3243         then
3244                 value="$ans"
3245                 ansexp="$ans"
3246                 break
3247         fi
3248         case "$ans" in
3249         none)
3250                 value=''
3251                 ansexp=''
3252                 case "$none_ok" in
3253                 true) type='';;
3254                 esac
3255                 ;;
3256         *)
3257                 case "$tilde" in
3258                 '') value="$ans"
3259                         ansexp="$ans";;
3260                 *)
3261                         value=`UU/filexp $ans`
3262                         case $? in
3263                         0)
3264                                 if test "$ans" != "$value"; then
3265                                         echo "(That expands to $value on this system.)"
3266                                 fi
3267                                 ;;
3268                         *) value="$ans";;
3269                         esac
3270                         ansexp="$value"
3271                         case "$exp_file" in
3272                         '') value="$ans";;
3273                         esac
3274                         ;;
3275                 esac
3276                 case "$fullpath" in
3277                 true)
3278                         case "$ansexp" in
3279                         /*) value="$ansexp" ;;
3280                         [a-zA-Z]:/*) value="$ansexp" ;;
3281                         *)
3282                                 redo=true
3283                                 case "$already" in
3284                                 true)
3285                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3286                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3287                                         ;;
3288                                 *)
3289                                 echo "Please give a full path name, starting with slash." >&4
3290                                         case "$tilde" in
3291                                         true)
3292                                 echo "Note that using ~name is ok provided it expands well." >&4
3293                                                 already=true
3294                                                 ;;
3295                                         esac
3296                                 esac
3297                                 ;;
3298                         esac
3299                         ;;
3300                 esac
3301                 case "$redo" in
3302                 '')
3303                         case "$type" in
3304                         File)
3305                                 for fp in $gfpth; do
3306                                         if test "X$fp" = X.; then
3307                                             pf="$ansexp"
3308                                         else    
3309                                             pf="$fp/$ansexp"
3310                                         fi
3311                                         if test -f "$pf"; then
3312                                                 type=''
3313                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3314                                         then
3315                                                 echo "($value is not a plain file, but that's ok.)"
3316                                                 type=''
3317                                         fi
3318                                         if test X"$type" = X; then
3319                                             value="$pf"
3320                                             break
3321                                         fi
3322                                 done
3323                                 ;;
3324                         Directory)
3325                                 for fp in $gfpth; do
3326                                         if test "X$fp" = X.; then
3327                                             dir="$ans"
3328                                             direxp="$ansexp"
3329                                         else    
3330                                             dir="$fp/$ansexp"
3331                                             direxp="$fp/$ansexp"
3332                                         fi
3333                                         if test -d "$direxp"; then
3334                                                 type=''
3335                                                 value="$dir"
3336                                                 break
3337                                         fi
3338                                 done
3339                                 ;;
3340                         Locate)
3341                                 if test -d "$ansexp"; then
3342                                         echo "(Looking for $loc_file in directory $value.)"
3343                                         value="$value/$loc_file"
3344                                         ansexp="$ansexp/$loc_file"
3345                                 fi
3346                                 if test -f "$ansexp"; then
3347                                         type=''
3348                                 fi
3349                                 case "$nopath_ok" in
3350                                 true)   case "$value" in
3351                                         */*) ;;
3352                                         *)      echo "Assuming $value will be in people's path."
3353                                                 type=''
3354                                                 ;;
3355                                         esac
3356                                         ;;
3357                                 esac
3358                                 ;;
3359                         esac
3360
3361                         case "$skip" in
3362                         true) type='';
3363                         esac
3364
3365                         case "$type" in
3366                         '') ;;
3367                         *)
3368                                 if test "$fastread" = yes; then
3369                                         dflt=y
3370                                 else
3371                                         dflt=n
3372                                 fi
3373                                 rp="$what $value doesn't exist.  Use that name anyway?"
3374                                 . UU/myread
3375                                 dflt=''
3376                                 case "$ans" in
3377                                 y*) type='';;
3378                                 *) echo " ";;
3379                                 esac
3380                                 ;;
3381                         esac
3382                         ;;
3383                 esac
3384                 ;;
3385         esac
3386 done
3387 cd UU
3388 ans="$value"
3389 rp="$orig_rp"
3390 dflt="$orig_dflt"
3391 rm -f getfile.ok
3392 test "X$gfpthkeep" != Xy && gfpth=""
3393 EOSC
3394
3395 : What should the include directory be ?
3396 echo " "
3397 $echo $n "Hmm...  $c"
3398 dflt='/usr/include'
3399 incpath=''
3400 mips_type=''
3401 if $test -f /bin/mips && /bin/mips; then
3402         echo "Looks like a MIPS system..."
3403         $cat >usr.c <<'EOCP'
3404 #ifdef SYSTYPE_BSD43
3405 /bsd43
3406 #endif
3407 EOCP
3408         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3409                 dflt='/bsd43/usr/include'
3410                 incpath='/bsd43'
3411                 mips_type='BSD 4.3'
3412         else
3413                 mips_type='System V'
3414         fi
3415         $rm -f usr.c usr.out
3416         echo "and you're compiling with the $mips_type compiler and libraries."
3417         xxx_prompt=y
3418         echo "exit 0" >mips
3419 else
3420         echo "Doesn't look like a MIPS system."
3421         xxx_prompt=n
3422         echo "exit 1" >mips
3423 fi
3424 chmod +x mips
3425 $eunicefix mips
3426 case "$usrinc" in
3427 '') ;;
3428 *) dflt="$usrinc";;
3429 esac
3430 case "$xxx_prompt" in
3431 y)      fn=d/
3432         echo " "
3433         rp='Where are the include files you want to use?'
3434         . ./getfile
3435         usrinc="$ans"
3436         ;;
3437 *)      usrinc="$dflt"
3438         ;;
3439 esac
3440
3441 : see how we invoke the C preprocessor
3442 echo " "
3443 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3444 cat <<'EOT' >testcpp.c
3445 #define ABC abc
3446 #define XYZ xyz
3447 ABC.XYZ
3448 EOT
3449 cd ..
3450 if test ! -f cppstdin; then
3451         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3452                 # AIX cc -E doesn't show the absolute headerfile
3453                 # locations but we'll cheat by using the -M flag.
3454                 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
3455         else
3456                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3457         fi
3458 else
3459         echo "Keeping your $hint cppstdin wrapper."
3460 fi
3461 chmod 755 cppstdin
3462 wrapper=`pwd`/cppstdin
3463 ok='false'
3464 cd UU
3465
3466 if $test "X$cppstdin" != "X" && \
3467         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3468         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3469 then
3470         echo "You used to use $cppstdin $cppminus so we'll use that again."
3471         case "$cpprun" in
3472         '') echo "But let's see if we can live without a wrapper..." ;;
3473         *)
3474                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3475                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3476                 then
3477                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3478                         ok='true'
3479                 else
3480                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3481                 fi
3482                 ;;
3483         esac
3484 else
3485         case "$cppstdin" in
3486         '') ;;
3487         *)
3488                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3489                 ;;
3490         esac
3491 fi
3492
3493 if $ok; then
3494         : nothing
3495 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3496         $cc -E <testcpp.c >testcpp.out 2>&1; \
3497         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3498         echo "Yup, it does."
3499         x_cpp="$cc -E"
3500         x_minus='';
3501 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3502         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3503         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3504         echo "Yup, it does."
3505         x_cpp="$cc -E"
3506         x_minus='-';
3507 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3508         $cc -P <testcpp.c >testcpp.out 2>&1; \
3509         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3510         echo "Yipee, that works!"
3511         x_cpp="$cc -P"
3512         x_minus='';
3513 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3514         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3515         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3516         echo "At long last!"
3517         x_cpp="$cc -P"
3518         x_minus='-';
3519 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3520         $cpp <testcpp.c >testcpp.out 2>&1; \
3521         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3522         echo "It works!"
3523         x_cpp="$cpp"
3524         x_minus='';
3525 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3526         $cpp - <testcpp.c >testcpp.out 2>&1; \
3527         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3528         echo "Hooray, it works!  I was beginning to wonder."
3529         x_cpp="$cpp"
3530         x_minus='-';
3531 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3532         $wrapper <testcpp.c >testcpp.out 2>&1; \
3533         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3534         x_cpp="$wrapper"
3535         x_minus=''
3536         echo "Eureka!"
3537 else
3538         dflt=''
3539         rp="No dice.  I can't find a C preprocessor.  Name one:"
3540         . ./myread
3541         x_cpp="$ans"
3542         x_minus=''
3543         $x_cpp <testcpp.c >testcpp.out 2>&1
3544         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3545                 echo "OK, that will do." >&4
3546         else
3547 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3548                 exit 1
3549         fi
3550 fi
3551
3552 case "$ok" in
3553 false)
3554         cppstdin="$x_cpp"
3555         cppminus="$x_minus"
3556         cpprun="$x_cpp"
3557         cpplast="$x_minus"
3558         set X $x_cpp
3559         shift
3560         case "$1" in
3561         "$cpp")
3562                 echo "Perhaps can we force $cc -E using a wrapper..."
3563                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3564                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3565                 then
3566                         echo "Yup, we can."
3567                         cppstdin="$wrapper"
3568                         cppminus='';
3569                 else
3570                         echo "Nope, we'll have to live without it..."
3571                 fi
3572                 ;;
3573         esac
3574         case "$cpprun" in
3575         "$wrapper")
3576                 cpprun=''
3577                 cpplast=''
3578                 ;;
3579         esac
3580         ;;
3581 esac
3582
3583 case "$cppstdin" in
3584 "$wrapper"|'cppstdin') ;;
3585 *) $rm -f $wrapper;;
3586 esac
3587 $rm -f testcpp.c testcpp.out
3588
3589 : Set private lib path
3590 case "$plibpth" in
3591 '') if ./mips; then
3592                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3593         fi;;
3594 esac
3595 case "$libpth" in
3596 ' ') dlist='';;
3597 '') dlist="$loclibpth $plibpth $glibpth";;
3598 *) dlist="$libpth";;
3599 esac
3600
3601 : Now check and see which directories actually exist, avoiding duplicates
3602 libpth=''
3603 for xxx in $dlist
3604 do
3605     if $test -d $xxx; then
3606                 case " $libpth " in
3607                 *" $xxx "*) ;;
3608                 *) libpth="$libpth $xxx";;
3609                 esac
3610     fi
3611 done
3612 $cat <<'EOM'
3613
3614 Some systems have incompatible or broken versions of libraries.  Among
3615 the directories listed in the question below, please remove any you
3616 know not to be holding relevant libraries, and add any that are needed.
3617 Say "none" for none.
3618
3619 EOM
3620 case "$libpth" in
3621 '') dflt='none';;
3622 *)
3623         set X $libpth
3624         shift
3625         dflt=${1+"$@"}
3626         ;;
3627 esac
3628 rp="Directories to use for library searches?"
3629 . ./myread
3630 case "$ans" in
3631 none) libpth=' ';;
3632 *) libpth="$ans";;
3633 esac
3634
3635 : compute shared library extension
3636 case "$so" in
3637 '')
3638         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3639                 dflt='sl'
3640         else
3641                 dflt='so'
3642         fi
3643         ;;
3644 *) dflt="$so";;
3645 esac
3646 $cat <<EOM
3647
3648 On some systems, shared libraries may be available.  Answer 'none' if
3649 you want to suppress searching of shared libraries for the remainder
3650 of this configuration.
3651
3652 EOM
3653 rp='What is the file extension used for shared libraries?'
3654 . ./myread
3655 so="$ans"
3656
3657 : Define several unixisms.
3658 : Hints files or command line option can be used to override them.
3659 : The convoluted testing is in case hints files set either the old
3660 : or the new name.
3661 case "$_exe" in
3662 '')     case "$exe_ext" in
3663     '') ;;
3664         *)      _exe="$exe_ext" ;;
3665         esac
3666         ;;
3667 esac
3668 case "$_a" in
3669 '')     case "$lib_ext" in
3670     '') _a='.a';;
3671         *)      _a="$lib_ext" ;;
3672         esac
3673         ;;
3674 esac
3675 case "$_o" in
3676 '') case "$obj_ext" in
3677         '')     _o='.o';;
3678         *)      _o="$obj_ext";;
3679         esac
3680         ;;
3681 esac
3682 case "$p_" in
3683 '') case "$path_sep" in
3684         '')     p_=':';;
3685         *)      p_="$path_sep";;
3686         esac
3687         ;;
3688 esac
3689 exe_ext=$_exe
3690 lib_ext=$_a
3691 obj_ext=$_o
3692 path_sep=$p_
3693
3694 : Which makefile gets called first.  This is used by make depend.
3695 case "$firstmakefile" in
3696 '') firstmakefile='makefile';;
3697 esac
3698
3699 case "$usesocks" in
3700 $define|true|[yY]*)     dflt='y';;
3701 *) dflt='n';;
3702 esac
3703 cat <<EOM
3704
3705 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3706 Configure must be run with -Dusesocks.
3707
3708 If this doesn't make any sense to you, just accept the default '$dflt'.
3709 EOM
3710 rp='Build Perl for SOCKS?'
3711 . ./myread
3712 case "$ans" in
3713 y|Y)    val="$define" ;;     
3714 *)      val="$undef" ;;
3715 esac
3716 set usesocks
3717 eval $setvar
3718
3719 : Looking for optional libraries
3720 echo " "
3721 echo "Checking for optional libraries..." >&4
3722 case "$libs" in
3723 ' '|'') dflt='';;
3724 *) dflt="$libs";;
3725 esac
3726 case "$libswanted" in
3727 '') libswanted='c_s';;
3728 esac
3729 case "$usesocks" in
3730 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3731 esac
3732 libsfound=''
3733 libsfiles=''
3734 libsdirs=''
3735 libspath=''
3736 for thisdir in $libpth $xlibpth; do
3737   test -d $thisdir && libspath="$libspath $thisdir"
3738 done
3739 for thislib in $libswanted; do
3740         for thisdir in $libspath; do
3741             xxx=''
3742             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3743                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3744                 $test -f "$xxx" && eval $libscheck
3745                 $test -f "$xxx" && libstyle=shared
3746             fi
3747             if test ! -f "$xxx"; then
3748                 xxx=$thisdir/lib$thislib.$so
3749                 $test -f "$xxx" && eval $libscheck
3750                 $test -f "$xxx" && libstyle=shared
3751             fi  
3752             if test ! -f "$xxx"; then
3753                 xxx=$thisdir/lib$thislib$_a
3754                 $test -f "$xxx" && eval $libscheck
3755                 $test -f "$xxx" && libstyle=static
3756             fi
3757             if test ! -f "$xxx"; then
3758                 xxx=$thisdir/$thislib$_a
3759                 $test -f "$xxx" && eval $libscheck
3760                 $test -f "$xxx" && libstyle=static
3761             fi
3762             if test ! -f "$xxx"; then
3763                 xxx=$thisdir/lib${thislib}_s$_a
3764                 $test -f "$xxx" && eval $libscheck
3765                 $test -f "$xxx" && libstyle=static
3766                 $test -f "$xxx" && thislib=${thislib}_s
3767             fi
3768             if test ! -f "$xxx"; then
3769                 xxx=$thisdir/Slib$thislib$_a
3770                 $test -f "$xxx" && eval $libscheck
3771                 $test -f "$xxx" && libstyle=static
3772             fi
3773             if $test -f "$xxx"; then
3774                 case "$libstyle" in
3775                 shared) echo "Found -l$thislib (shared)." ;;
3776                 static) echo "Found -l$thislib." ;;
3777                 *)      echo "Found -l$thislib ($libstyle)." ;;
3778                 esac
3779                 case " $dflt " in
3780                 *"-l$thislib "*);;
3781                 *) dflt="$dflt -l$thislib"
3782                    libsfound="$libsfound $xxx"
3783                    yyy=`basename $xxx`
3784                    libsfiles="$libsfiles $yyy"
3785                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3786                    case " $libsdirs " in
3787                    *" $yyy "*) ;;
3788                    *) libsdirs="$libsdirs $yyy" ;;
3789                    esac
3790                    ;;
3791                 esac
3792                 break
3793             fi  
3794         done
3795         if $test ! -f "$xxx"; then
3796             echo "No -l$thislib."
3797         fi
3798 done
3799 set X $dflt
3800 shift
3801 dflt="$*"
3802 case "$libs" in
3803 '') dflt="$dflt";;
3804 *) dflt="$libs";;
3805 esac
3806 case "$dflt" in
3807 ' '|'') dflt='none';;
3808 esac
3809
3810 $cat <<EOM
3811
3812 In order to compile $package on your machine, a number of libraries
3813 are usually needed.  Include any other special libraries here as well.
3814 Say "none" for none.  The default list is almost always right.
3815 EOM
3816
3817 echo " "
3818 rp="What libraries to use?"
3819 . ./myread
3820 case "$ans" in
3821 none) libs=' ';;
3822 *) libs="$ans";;
3823 esac
3824
3825 : determine optimization, if desired, or use for debug flag also
3826 case "$optimize" in
3827 ' '|$undef) dflt='none';;
3828 '') dflt='-O';;
3829 *) dflt="$optimize";;
3830 esac
3831 $cat <<EOH
3832
3833 By default, $package compiles with the -O flag to use the optimizer.
3834 Alternately, you might want to use the symbolic debugger, which uses
3835 the -g flag (on traditional Unix systems).  Either flag can be
3836 specified here.  To use neither flag, specify the word "none".
3837
3838 EOH
3839 rp="What optimizer/debugger flag should be used?"
3840 . ./myread
3841 optimize="$ans"
3842 case "$optimize" in
3843 'none') optimize=" ";;
3844 esac
3845
3846 dflt=''
3847 : We will not override a previous value, but we might want to
3848 : augment a hint file
3849 case "$hint" in
3850 default|recommended)
3851         case "$gccversion" in
3852         1*) dflt='-fpcc-struct-return' ;;
3853         esac
3854         case "$optimize" in
3855         *-g*) dflt="$dflt -DDEBUGGING";;
3856         esac
3857         case "$gccversion" in
3858         2*) if test -d /etc/conf/kconfig.d &&
3859                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3860                 then
3861                         dflt="$dflt -posix"
3862                 fi
3863                 ;;
3864         esac
3865         case "$gccversion" in
3866         1*) ;;
3867         2.[0-8]*) ;;
3868         ?*)     echo " "
3869                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3870                 echo 'int main(void) { return 0; }' > gcctest.c
3871                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3872                         echo "Yes, it does." 2>&1
3873                         case "$ccflags" in
3874                         *strict-aliasing*) 
3875                                 echo "Leaving current flags $ccflags alone." 2>&1
3876                                 ;;
3877                         *) dflt="$dflt -fno-strict-aliasing" ;;
3878                         esac
3879                 else
3880                         echo "Nope, it doesn't, but that's ok." 2>&1
3881                 fi
3882                 ;;
3883         esac
3884         ;;
3885 esac
3886
3887 case "$mips_type" in
3888 *BSD*|'') inclwanted="$locincpth $usrinc";;
3889 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3890 esac
3891 for thisincl in $inclwanted; do
3892         if $test -d $thisincl; then
3893                 if $test x$thisincl != x$usrinc; then
3894                         case "$dflt" in
3895                         *$thisincl*);;
3896                         *) dflt="$dflt -I$thisincl";;
3897                         esac
3898                 fi
3899         fi
3900 done
3901
3902 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3903         xxx=true;
3904 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3905         xxx=true;
3906 else
3907         xxx=false;
3908 fi;
3909 if $xxx; then
3910         case "$dflt" in
3911         *$2*);;
3912         *) dflt="$dflt -D$2";;
3913         esac;
3914 fi'
3915
3916 set signal.h LANGUAGE_C; eval $inctest
3917
3918 case "$usesocks" in
3919 $define)
3920         ccflags="$ccflags -DSOCKS"
3921         ;;
3922 esac
3923
3924 case "$hint" in
3925 default|recommended) dflt="$ccflags $dflt" ;;
3926 *) dflt="$ccflags";;
3927 esac
3928
3929 case "$dflt" in
3930 ''|' ') dflt=none;;
3931 esac
3932 $cat <<EOH
3933
3934 Your C compiler may want other flags.  For this question you should include
3935 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3936 but you should NOT include libraries or ld flags like -lwhatever.  If you
3937 want $package to honor its debug switch, you should include -DDEBUGGING here.
3938 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3939
3940 To use no flags, specify the word "none".
3941
3942 EOH
3943 set X $dflt
3944 shift
3945 dflt=${1+"$@"}
3946 rp="Any additional cc flags?"
3947 . ./myread
3948 case "$ans" in
3949 none) ccflags='';;
3950 *) ccflags="$ans";;
3951 esac
3952
3953 : the following weeds options from ccflags that are of no interest to cpp
3954 cppflags="$ccflags"
3955 case "$gccversion" in
3956 1*) cppflags="$cppflags -D__GNUC__"
3957 esac
3958 case "$mips_type" in
3959 '');;
3960 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3961 esac
3962 case "$cppflags" in
3963 '');;
3964 *)
3965         echo " "
3966         echo "Let me guess what the preprocessor flags are..." >&4
3967         set X $cppflags
3968         shift
3969         cppflags=''
3970         $cat >cpp.c <<'EOM'
3971 #define BLURFL foo
3972
3973 BLURFL xx LFRULB
3974 EOM
3975         previous=''
3976         for flag in $*
3977         do
3978                 case "$flag" in
3979                 -*) ftry="$flag";;
3980                 *) ftry="$previous $flag";;
3981                 esac
3982                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3983                         >cpp1.out 2>/dev/null && \
3984                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3985                         >cpp2.out 2>/dev/null && \
3986                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3987                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3988                 then
3989                         cppflags="$cppflags $ftry"
3990                         previous=''
3991                 else
3992                         previous="$flag"
3993                 fi
3994         done
3995         set X $cppflags
3996         shift
3997         cppflags=${1+"$@"}
3998         case "$cppflags" in
3999         *-*)  echo "They appear to be: $cppflags";;
4000         esac
4001         $rm -f cpp.c cpp?.out
4002         ;;
4003 esac
4004
4005 : flags used in final linking phase
4006 case "$ldflags" in
4007 '') if ./venix; then
4008                 dflt='-i -z'
4009         else
4010                 dflt=''
4011         fi
4012         case "$ccflags" in
4013         *-posix*) dflt="$dflt -posix" ;;
4014         esac
4015         ;;
4016 *) dflt="$ldflags";;
4017 esac
4018
4019 : Try to guess additional flags to pick up local libraries.
4020 for thislibdir in $libpth; do
4021         case " $loclibpth " in
4022         *" $thislibdir "*)
4023                 case "$dflt " in 
4024                 *"-L$thislibdir "*) ;;
4025                 *)  dflt="$dflt -L$thislibdir" ;;
4026                 esac
4027                 ;;
4028         esac
4029 done
4030
4031 case "$dflt" in
4032 '') dflt='none' ;;
4033 esac
4034
4035 $cat <<EOH
4036
4037 Your C linker may need flags.  For this question you should
4038 include -L/whatever and any other flags used by the C linker, but you
4039 should NOT include libraries like -lwhatever.
4040
4041 Make sure you include the appropriate -L/path flags if your C linker
4042 does not normally search all of the directories you specified above,
4043 namely
4044         $libpth
4045 To use no flags, specify the word "none".
4046
4047 EOH
4048
4049 rp="Any additional ld flags (NOT including libraries)?"
4050 . ./myread
4051 case "$ans" in
4052 none) ldflags='';;
4053 *) ldflags="$ans";;
4054 esac
4055 rmlist="$rmlist pdp11"
4056
4057 : coherency check
4058 echo " "
4059 echo "Checking your choice of C compiler and flags for coherency..." >&4
4060 $cat > try.c <<'EOF'
4061 #include <stdio.h>
4062 int main() { printf("Ok\n"); exit(0); }
4063 EOF
4064 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4065 shift
4066 $cat >try.msg <<'EOM'
4067 I've tried to compile and run the following simple program:
4068
4069 EOM
4070 $cat try.c >> try.msg
4071
4072 $cat >> try.msg <<EOM
4073
4074 I used the command:
4075
4076         $*
4077         ./try
4078
4079 and I got the following output:
4080
4081 EOM
4082 dflt=y
4083 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4084         if sh -c './try' >>try.msg 2>&1; then
4085                 xxx=`./try`
4086                 case "$xxx" in
4087                 "Ok") dflt=n ;;
4088                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4089                         case " $libs " in
4090                         *" -lsfio "*)
4091                                 cat >> try.msg <<'EOQS'
4092 If $libs contains -lsfio, and sfio is mis-configured, then it
4093 sometimes (apparently) runs and exits with a 0 status, but with no
4094 output!  It may have to do with sfio's use of _exit vs. exit.
4095
4096 EOQS
4097                                 rp="You have a big problem.  Shall I abort Configure"
4098                                 dflt=y
4099                                 ;;
4100                         esac
4101                         ;;
4102                 esac
4103         else
4104                 echo "The program compiled OK, but exited with status $?." >>try.msg
4105                 rp="You have a problem.  Shall I abort Configure"
4106                 dflt=y
4107         fi
4108 else
4109         echo "I can't compile the test program." >>try.msg
4110         rp="You have a BIG problem.  Shall I abort Configure"
4111         dflt=y
4112 fi
4113 case "$dflt" in
4114 y)
4115         $cat try.msg >&4
4116         case "$knowitall" in
4117         '')
4118                 echo "(The supplied flags or libraries might be incorrect.)"
4119                 ;;
4120         *) dflt=n;;
4121         esac
4122         echo " "
4123         . ./myread
4124         case "$ans" in
4125         n*|N*) ;;
4126         *)      echo "Ok.  Stopping Configure." >&4
4127                 exit 1
4128                 ;;
4129         esac
4130         ;;
4131 n) echo "OK, that should do.";;
4132 esac
4133 $rm -f try try.* core
4134
4135 : define an is-a-typedef? function
4136 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4137 case "$inclist" in
4138 "") inclist="sys/types.h";;
4139 esac;
4140 eval "varval=\$$var";
4141 case "$varval" in
4142 "")
4143         $rm -f temp.c;
4144         for inc in $inclist; do
4145                 echo "#include <$inc>" >>temp.c;
4146         done;
4147         echo "#ifdef $type" >> temp.c;
4148         echo "printf(\"We have $type\");" >> temp.c;
4149         echo "#endif" >> temp.c;
4150         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4151         if $contains $type temp.E >/dev/null 2>&1; then
4152                 eval "$var=\$type";
4153         else
4154                 eval "$var=\$def";
4155         fi;
4156         $rm -f temp.?;;
4157 *) eval "$var=\$varval";;
4158 esac'
4159
4160 : define an is-a-typedef? function that prompts if the type is not available.
4161 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4162 case "$inclist" in
4163 "") inclist="sys/types.h";;
4164 esac;
4165 eval "varval=\$$var";
4166 case "$varval" in
4167 "")
4168         $rm -f temp.c;
4169         for inc in $inclist; do
4170                 echo "#include <$inc>" >>temp.c;
4171         done;
4172         echo "#ifdef $type" >> temp.c;
4173         echo "printf(\"We have $type\");" >> temp.c;
4174         echo "#endif" >> temp.c;
4175         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4176         echo " " ;
4177         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4178         if $contains $type temp.E >/dev/null 2>&1; then
4179                 echo "$type found." >&4;
4180                 eval "$var=\$type";
4181         else
4182                 echo "$type NOT found." >&4;
4183                 dflt="$def";
4184                 . ./myread ;
4185                 eval "$var=\$ans";
4186         fi;
4187         $rm -f temp.?;;
4188 *) eval "$var=\$varval";;
4189 esac'
4190
4191 : define a shorthand compile call
4192 compile='
4193 mc_file=$1;
4194 shift;
4195 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4196 : define a shorthand compile call for compilations that should be ok.
4197 compile_ok='
4198 mc_file=$1;
4199 shift;
4200 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4201
4202 : check for lengths of integral types
4203 echo " "
4204 case "$intsize" in
4205 '')
4206         echo "Checking to see how big your integers are..." >&4
4207         $cat >intsize.c <<'EOCP'
4208 #include <stdio.h>
4209 int main()
4210 {
4211         printf("intsize=%d;\n", (int)sizeof(int));
4212         printf("longsize=%d;\n", (int)sizeof(long));
4213         printf("shortsize=%d;\n", (int)sizeof(short));
4214         exit(0);
4215 }
4216 EOCP
4217         set intsize
4218         if eval $compile_ok && ./intsize > /dev/null; then
4219                 eval `./intsize`
4220                 echo "Your integers are $intsize bytes long."
4221                 echo "Your long integers are $longsize bytes long."
4222                 echo "Your short integers are $shortsize bytes long."
4223         else
4224                 $cat >&4 <<EOM
4225 !
4226 Help! I can't compile and run the intsize test program: please enlighten me!
4227 (This is probably a misconfiguration in your system or libraries, and
4228 you really ought to fix it.  Still, I'll try anyway.)
4229 !
4230 EOM
4231                 dflt=4
4232                 rp="What is the size of an integer (in bytes)?"
4233                 . ./myread
4234                 intsize="$ans"
4235                 dflt=$intsize
4236                 rp="What is the size of a long integer (in bytes)?"
4237                 . ./myread
4238                 longsize="$ans"
4239                 dflt=2
4240                 rp="What is the size of a short integer (in bytes)?"
4241                 . ./myread
4242                 shortsize="$ans"
4243         fi
4244         ;;
4245 esac
4246 $rm -f intsize intsize.*
4247
4248 : see what type lseek is declared as in the kernel
4249 rp="What is the type used for lseek's offset on this system?"
4250 set off_t lseektype long stdio.h sys/types.h
4251 eval $typedef_ask
4252
4253 echo " "
4254 echo "Checking to see how big your file offsets are..." >&4
4255 $cat >try.c <<EOCP
4256 #include <sys/types.h>
4257 #include <stdio.h>
4258 int main()
4259 {
4260     printf("%d\n", (int)sizeof($lseektype));
4261     return(0); 
4262 }
4263 EOCP
4264 set try
4265 if eval $compile_ok; then
4266         lseeksize=`./try`
4267         echo "Your file offsets are $lseeksize bytes long."
4268 else
4269         dflt=$longsize
4270         echo " "
4271         echo "(I can't seem to compile the test program.  Guessing...)"
4272         rp="What is the size of your file offsets (in bytes)?"
4273         . ./myread
4274         lseeksize="$ans"
4275 fi
4276 $rm -f try.c try
4277
4278 : see what type file positions are declared as in the library
4279 rp="What is the type for file position used by fsetpos()?"
4280 set fpos_t fpostype long stdio.h sys/types.h
4281 eval $typedef_ask
4282
4283 echo " "
4284 case "$fpostype" in
4285 *_t) zzz="$fpostype"    ;;
4286 *)   zzz="fpos_t"       ;;
4287 esac
4288 echo "Checking the size of $zzz..." >&4 
4289 cat > try.c <<EOCP
4290 #include <sys/types.h>
4291 #include <stdio.h>
4292 int main() {
4293     printf("%d\n", (int)sizeof($fpostype));
4294     exit(0);
4295 }
4296 EOCP
4297 set try
4298 if eval $compile_ok; then
4299         yyy=`./try`
4300         case "$yyy" in
4301         '')     fpossize=4
4302                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4303                 ;;
4304         *)      fpossize=$yyy
4305                 echo "Your $zzz is $fpossize bytes long."
4306                 ;;
4307         esac
4308 else
4309         dflt="$longsize"
4310         echo " " >&4
4311         echo "(I can't compile the test program.  Guessing...)" >&4
4312         rp="What is the size of your file positions (in bytes)?"
4313         . ./myread
4314         fpossize="$ans"
4315 fi
4316
4317
4318
4319 # Backward compatibility (uselfs is deprecated).
4320 case "$uselfs" in
4321 "$define"|true|[yY]*)
4322         cat <<EOM >&4
4323
4324 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4325 EOM
4326         uselargefiles="$define"
4327         ;;
4328 esac                          
4329
4330 case "$lseeksize:$fpossize" in
4331 8:8) cat <<EOM
4332
4333 You can have files larger than 2 gigabytes.
4334 EOM
4335    val="$define" ;;
4336 *)    case "$uselargefiles" in
4337    "$undef"|false|[nN]*) dflt='n' ;;
4338    *)   dflt='y' ;;
4339    esac
4340    cat <<EOM
4341
4342 Perl can be built to understand large files (files larger than 2 gigabytes)
4343 on some systems.  To do so, Configure can be run with -Duselargefiles.
4344
4345 If this doesn't make any sense to you, just accept the default '$dflt'.
4346 EOM
4347    rp='Try to understand large files, if available?'
4348    . ./myread
4349    case "$ans" in
4350    y|Y)         val="$define" ;;
4351    *)           val="$undef"  ;;
4352    esac
4353    ;;
4354 esac
4355 set uselargefiles
4356 eval $setvar
4357 case "$uselargefiles" in
4358 "$define")
4359 : Look for a hint-file generated 'call-back-unit'.  If the
4360 : user has specified that a large files perl is to be built,
4361 : we may need to set or change some other defaults.
4362         if $test -f uselargefiles.cbu; then
4363                 echo "Your platform has some specific hints for large file builds, using them..."
4364                 . ./uselargefiles.cbu
4365                 echo " "
4366                 echo "Rechecking to see how big your file offsets are..." >&4
4367                 $cat >try.c <<EOCP
4368 #include <sys/types.h>
4369 #include <stdio.h>
4370 int main()
4371 {
4372     printf("%d\n", (int)sizeof($lseektype));
4373     return(0); 
4374 }
4375 EOCP
4376                 set try
4377                 if eval $compile_ok; then
4378                         lseeksize=`./try`
4379                         $echo "Your file offsets are now $lseeksize bytes long."
4380                 else
4381                         dflt="$lseeksize"
4382                         echo " "
4383                         echo "(I can't seem to compile the test program.  Guessing...)"
4384                         rp="What is the size of your file offsets (in bytes)?"
4385                         . ./myread
4386                         lseeksize="$ans"
4387                 fi
4388                 case "$fpostype" in
4389                 *_t) zzz="$fpostype"    ;;
4390                 *)   zzz="fpos_t"       ;;
4391                 esac
4392                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4393                 $cat > try.c <<EOCP
4394 #include <sys/types.h>
4395 #include <stdio.h>
4396 int main() {
4397     printf("%d\n", (int)sizeof($fpostype));
4398     exit(0);
4399 }
4400 EOCP
4401                 set try
4402                 if eval $compile_ok; then
4403                         yyy=`./try`
4404                         dflt="$lseeksize"
4405                         case "$yyy" in
4406                         '')     echo " "
4407                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4408                                 ;;
4409                         *)      fpossize=$yyy
4410                                 echo " $fpossize bytes." >&4
4411                                 ;;
4412                         esac
4413                 else
4414                         dflt="$fpossize"
4415                         echo " "
4416                         echo "(I can't compile the test program.  Guessing...)" >&4
4417                         rp="What is the size of your file positions (in bytes)?"
4418                         . ./myread
4419                         fpossize="$ans"
4420                 fi
4421                 $rm -f try.c try
4422         fi
4423         ;;
4424 esac
4425
4426
4427 case "$usemorebits" in
4428 "$define"|true|[yY]*)
4429         use64bitint="$define"
4430         uselongdouble="$define"
4431         usemorebits="$define"
4432         ;;
4433 *)      usemorebits="$undef"
4434         ;;
4435 esac
4436
4437
4438 case "$uselonglong" in
4439 "$define"|true|[yY]*)
4440         cat <<EOM >&4
4441
4442 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4443 EOM
4444         use64bitint="$define"
4445         ;;
4446 esac                          
4447 case "$use64bits" in
4448 "$define"|true|[yY]*)
4449         cat <<EOM >&4
4450
4451 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4452 EOM
4453         use64bitint="$define"
4454         ;;
4455 esac                          
4456 case "$use64bitints" in
4457 "$define"|true|[yY]*)
4458         cat <<EOM >&4
4459
4460 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4461 EOM
4462         use64bitint="$define"
4463         ;;
4464 esac                          
4465 case "$use64bitsint" in
4466 "$define"|true|[yY]*)
4467         cat <<EOM >&4
4468
4469 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4470 EOM
4471         use64bitint="$define"
4472         ;;
4473 esac                          
4474 case "$uselonglongs" in
4475 "$define"|true|[yY]*)
4476         cat <<EOM >&4
4477
4478 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4479 EOM
4480         use64bitint="$define"
4481         ;;
4482 esac                          
4483 case "$use64bitsall" in
4484 "$define"|true|[yY]*)
4485         cat <<EOM >&4
4486
4487 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4488 EOM
4489         use64bitall="$define"
4490         ;;
4491 esac                          
4492
4493 case "$ccflags" in
4494 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4495 esac
4496 case "$use64bitall" in
4497 "$define"|true|[yY]*) use64bitint="$define" ;;
4498 esac
4499
4500 case "$longsize" in
4501 8) cat <<EOM
4502
4503 You have natively 64-bit long integers.
4504 EOM
4505    val="$define"
4506    ;;
4507 *) case "$use64bitint" in
4508    "$define"|true|[yY]*) dflt='y';;
4509    *) dflt='n';;
4510    esac
4511    cat <<EOM
4512
4513 Perl can be built to take advantage of 64-bit integer types
4514 on some systems.  To do so, Configure can be run with -Duse64bitint.
4515 Choosing this option will most probably introduce binary incompatibilities.
4516
4517 If this doesn't make any sense to you, just accept the default '$dflt'.
4518 EOM
4519    rp='Try to use 64-bit integers, if available?'
4520    . ./myread
4521    case "$ans" in
4522    [yY]*) val="$define" ;;
4523    *)     val="$undef"  ;;
4524    esac
4525    ;;
4526 esac
4527 set use64bitint
4528 eval $setvar
4529
4530 case "$use64bitall" in
4531 "$define"|true|[yY]*) dflt='y' ;;
4532 *) case "$longsize" in
4533    8) dflt='y' ;;
4534    *) dflt='n' ;;
4535    esac
4536    ;;
4537 esac    
4538 cat <<EOM
4539
4540 You may also choose to try maximal 64-bitness.  It means using as much
4541 64-bitness as possible on the platform.  This in turn means even more
4542 binary incompatibilities.  On the other hand, your platform may not
4543 have any more 64-bitness available than what you already have chosen.
4544
4545 If this doesn't make any sense to you, just accept the default '$dflt'.
4546 EOM
4547 rp='Try to use maximal 64-bit support, if available?'
4548 . ./myread
4549 case "$ans" in
4550 [yY]*) val="$define" ;;
4551 *)     val="$undef"  ;;
4552 esac
4553 set use64bitall
4554 eval $setvar
4555 case "$use64bitall" in
4556 "$define")
4557         case "$use64bitint" in
4558         "$undef")
4559                 cat <<EOM
4560
4561 Since you have chosen a maximally 64-bit build, I'm also turning on
4562 the use of 64-bit integers.
4563 EOM
4564                 use64bitint="$define" ;;
4565         esac
4566         ;;
4567 esac
4568
4569 case "$use64bitint" in
4570 "$define"|true|[yY]*)
4571 : Look for a hint-file generated 'call-back-unit'.  If the
4572 : user has specified that a 64-bit perl is to be built,
4573 : we may need to set or change some other defaults.
4574         if $test -f use64bitint.cbu; then
4575                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4576                 . ./use64bitint.cbu
4577         fi
4578         case "$longsize" in
4579         4) case "$archname64" in
4580            '') archname64=64int ;;
4581            esac
4582            ;;
4583         esac
4584         ;;
4585 esac
4586
4587 case "$use64bitall" in
4588 "$define"|true|[yY]*)
4589 : Look for a hint-file generated 'call-back-unit'.  If the
4590 : user has specified that a maximally 64-bit perl is to be built,
4591 : we may need to set or change some other defaults.
4592         if $test -f use64bitall.cbu; then
4593                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4594                 . ./use64bitall.cbu
4595         fi
4596         case "$longsize" in
4597         4) case "$archname64" in
4598            ''|64int) archname64=64all ;;
4599            esac
4600            ;;
4601         esac
4602         ;;
4603 esac
4604
4605 : determine the architecture name
4606 echo " "
4607 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4608         tarch=`arch`"-$osname"
4609 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4610         if uname -m > tmparch 2>&1 ; then
4611                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4612                         -e 's/$/'"-$osname/" tmparch`
4613         else
4614                 tarch="$osname"
4615         fi
4616         $rm -f tmparch
4617 else
4618         tarch="$osname"
4619 fi
4620 case "$myarchname" in
4621 ''|"$tarch") ;;
4622 *)
4623         echo "(Your architecture name used to be $myarchname.)"
4624         archname=''
4625         ;;
4626 esac
4627 myarchname="$tarch"
4628 case "$archname" in
4629 '') dflt="$tarch";;
4630 *) dflt="$archname";;
4631 esac
4632 rp='What is your architecture name'
4633 . ./myread
4634 archname="$ans"
4635 case "$usethreads" in
4636 $define)
4637         echo "Threads selected." >&4
4638         case "$archname" in
4639         *-thread*) echo "...and architecture name already has -thread." >&4
4640                 ;;
4641         *)      archname="$archname-thread"
4642                 echo "...setting architecture name to $archname." >&4
4643                 ;;
4644         esac
4645         ;;
4646 esac
4647 case "$usemultiplicity" in
4648 $define)
4649         echo "Multiplicity selected." >&4
4650         case "$archname" in
4651         *-multi*) echo "...and architecture name already has -multi." >&4
4652                 ;;
4653         *)      archname="$archname-multi"
4654                 echo "...setting architecture name to $archname." >&4
4655                 ;;
4656         esac
4657         ;;
4658 esac
4659 case "$use64bitint" in
4660 $define)
4661         case "$archname64" in
4662         '')
4663                 ;;
4664         *)
4665                 case "$archname" in
4666                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4667                         ;;
4668                 *)      archname="$archname-$archname64"
4669                         echo "...setting architecture name to $archname." >&4
4670                         ;;
4671                 esac
4672                 ;;
4673         esac
4674 esac
4675
4676 : determine root of directory hierarchy where package will be installed.
4677 case "$prefix" in
4678 '')
4679         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4680         ;;
4681 *)
4682         dflt="$prefix"
4683         ;;
4684 esac
4685 $cat <<EOM
4686
4687 By default, $package will be installed in $dflt/bin, manual pages
4688 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4689 installation directories. Typically this is something like /usr/local.
4690 If you wish to have binaries under /usr/bin but other parts of the
4691 installation under /usr/local, that's ok: you will be prompted
4692 separately for each of the installation directories, the prefix being
4693 only used to set the defaults.
4694
4695 EOM
4696 fn=d~
4697 rp='Installation prefix to use?'
4698 . ./getfile
4699 oldprefix=''
4700 case "$prefix" in
4701 '') ;;
4702 *)
4703         case "$ans" in
4704         "$prefix") ;;
4705         *) oldprefix="$prefix";;
4706         esac
4707         ;;
4708 esac
4709 prefix="$ans"
4710 prefixexp="$ansexp"
4711
4712 : is AFS running?
4713 echo " "
4714 case "$afs" in
4715 $define|true)   afs=true ;;
4716 $undef|false)   afs=false ;;
4717 *)      if test -d /afs; then
4718                 afs=true
4719         else
4720                 afs=false
4721         fi
4722         ;;
4723 esac
4724 if $afs; then
4725         echo "AFS may be running... I'll be extra cautious then..." >&4
4726 else
4727         echo "AFS does not seem to be running..." >&4
4728 fi
4729
4730 : determine installation prefix for where package is to be installed.
4731 if $afs; then 
4732 $cat <<EOM
4733
4734 Since you are running AFS, I need to distinguish the directory in which
4735 files will reside from the directory in which they are installed (and from
4736 which they are presumably copied to the former directory by occult means).
4737
4738 EOM
4739         case "$installprefix" in
4740         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4741         *) dflt="$installprefix";;
4742         esac
4743 else
4744 $cat <<EOM
4745
4746 In some special cases, particularly when building $package for distribution,
4747 it is convenient to distinguish between the directory in which files should 
4748 be installed from the directory ($prefix) in which they 
4749 will eventually reside.  For most users, these two directories are the same.
4750
4751 EOM
4752         case "$installprefix" in
4753         '') dflt=$prefix ;;
4754         *) dflt=$installprefix;;
4755         esac
4756 fi
4757 fn=d~
4758 rp='What installation prefix should I use for installing files?'
4759 . ./getfile
4760 installprefix="$ans"
4761 installprefixexp="$ansexp"
4762
4763 : set the prefixit variable, to compute a suitable default value
4764 prefixit='case "$3" in
4765 ""|none)
4766         case "$oldprefix" in
4767         "") eval "$1=\"\$$2\"";;
4768         *)
4769                 case "$3" in
4770                 "") eval "$1=";;
4771                 none)
4772                         eval "tp=\"\$$2\"";
4773                         case "$tp" in
4774                         ""|" ") eval "$1=\"\$$2\"";;
4775                         *) eval "$1=";;
4776                         esac;;
4777                 esac;;
4778         esac;;
4779 *)
4780         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4781         case "$tp" in
4782         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4783         /*-$oldprefix/*|\~*-$oldprefix/*)
4784                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4785         *) eval "$1=\"\$$2\"";;
4786         esac;;
4787 esac'
4788
4789
4790 : get the patchlevel
4791 echo " "
4792 echo "Getting the current patchlevel..." >&4
4793 if $test -r $rsrc/patchlevel.h;then
4794         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4795         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4796         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4797         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4798         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4799         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4800 else
4801         revision=0
4802         patchlevel=0
4803         subversion=0
4804         api_revision=0
4805         api_version=0
4806         api_subversion=0
4807 fi
4808 $echo $n "(You have $package revision $revision" $c
4809 $echo $n " patchlevel $patchlevel" $c
4810 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4811 echo ".)"
4812 case "$osname" in
4813 dos|vms)
4814         : XXX Should be a Configure test for double-dots in filenames.
4815         version=`echo $revision $patchlevel $subversion | \
4816                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4817         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4818                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4819         ;;
4820 *)
4821         version=`echo $revision $patchlevel $subversion | \
4822                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4823         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4824                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4825         ;;
4826 esac
4827 : Special case the 5.005_xx maintenance series, which used 5.005
4828 : without any subversion label as a subdirectory in $sitelib
4829 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4830         api_versionstring='5.005'
4831 fi
4832
4833 : determine installation style
4834 : For now, try to deduce it from prefix unless it is already set.
4835 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4836 case "$installstyle" in
4837 '')     case "$prefix" in
4838                 *perl*) dflt='lib';;
4839                 *) dflt='lib/perl5' ;;
4840         esac
4841         ;;
4842 *)      dflt="$installstyle" ;;
4843 esac
4844 : Probably not worth prompting for this since we prompt for all
4845 : the directories individually, and the prompt would be too long and
4846 : confusing anyway.
4847 installstyle=$dflt
4848
4849 : determine where private library files go
4850 : Usual default is /usr/local/lib/perl5/$version.
4851 : Also allow things like /opt/perl/lib/$version, since 
4852 : /opt/perl/lib/perl5... would be redundant.
4853 : The default "style" setting is made in installstyle.U
4854 case "$installstyle" in
4855 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4856 *)       set dflt privlib lib/$version ;;
4857 esac
4858 eval $prefixit
4859 $cat <<EOM
4860
4861 There are some auxiliary files for $package that need to be put into a
4862 private library directory that is accessible by everyone.
4863
4864 EOM
4865 fn=d~+
4866 rp='Pathname where the private library files will reside?'
4867 . ./getfile
4868 privlib="$ans"
4869 privlibexp="$ansexp"
4870 : Change installation prefix, if necessary.
4871 if $test X"$prefix" != X"$installprefix"; then
4872         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4873 else
4874         installprivlib="$privlibexp"
4875 fi
4876
4877 : set the prefixup variable, to restore leading tilda escape
4878 prefixup='case "$prefixexp" in
4879 "$prefix") ;;
4880 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4881 esac'
4882
4883 : determine where public architecture dependent libraries go
4884 set archlib archlib
4885 eval $prefixit
4886 : privlib default is /usr/local/lib/$package/$version
4887 : archlib default is /usr/local/lib/$package/$version/$archname
4888 : privlib may have an optional trailing /share.
4889 tdflt=`echo $privlib | $sed 's,/share$,,'`
4890 tdflt=$tdflt/$archname
4891 case "$archlib" in
4892 '')     dflt=$tdflt
4893         ;;
4894 *)      dflt="$archlib"
4895     ;;
4896 esac
4897 $cat <<EOM
4898
4899 $spackage contains architecture-dependent library files.  If you are
4900 sharing libraries in a heterogeneous environment, you might store
4901 these files in a separate location.  Otherwise, you can just include
4902 them with the rest of the public library files.
4903
4904 EOM
4905 fn=d+~
4906 rp='Where do you want to put the public architecture-dependent libraries?'
4907 . ./getfile
4908 archlib="$ans"
4909 archlibexp="$ansexp"
4910 if $test X"$archlib" = X"$privlib"; then
4911         d_archlib="$undef"
4912 else
4913         d_archlib="$define"
4914 fi
4915 : Change installation prefix, if necessary.
4916 if $test X"$prefix" != X"$installprefix"; then
4917         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4918 else
4919         installarchlib="$archlibexp"
4920 fi
4921
4922
4923 : Binary compatibility with 5.005 is not possible for builds
4924 : with advanced features
4925 case "$usethreads$usemultiplicity" in
4926 *define*)
4927         bincompat5005="$undef"
4928         d_bincompat5005="$undef"
4929         ;;
4930 *)      $cat <<EOM
4931
4932 This version of Perl can be compiled for binary compatibility with 5.005.
4933 If you decide to do so, you will be able to continue using most of the
4934 extensions that were compiled for Perl 5.005.
4935
4936 EOM
4937         case "$bincompat5005$d_bincompat5005" in
4938         *"$undef"*) dflt=n ;;
4939         *) dflt=y ;;
4940         esac
4941         rp='Binary compatibility with Perl 5.005?'
4942         . ./myread
4943         case "$ans" in
4944         y*) val="$define" ;;
4945         *)  val="$undef" ;;
4946         esac
4947         set d_bincompat5005
4948         eval $setvar
4949         case "$d_bincompat5005" in
4950         "$define")
4951                 bincompat5005="$define"
4952                 ;;
4953         *)      bincompat5005="$undef"
4954                 d_bincompat5005="$undef"
4955                 ;;
4956         esac
4957         ;;
4958 esac
4959
4960
4961 : see if setuid scripts can be secure
4962 $cat <<EOM
4963
4964 Some kernels have a bug that prevents setuid #! scripts from being
4965 secure.  Some sites have disabled setuid #! scripts because of this.
4966
4967 First let's decide if your kernel supports secure setuid #! scripts.
4968 (If setuid #! scripts would be secure but have been disabled anyway,
4969 don't say that they are secure if asked.)
4970
4971 EOM
4972
4973 val="$undef"
4974 if $test -d /dev/fd; then
4975         echo "#!$ls" >reflect
4976         chmod +x,u+s reflect
4977         ./reflect >flect 2>&1
4978         if $contains "/dev/fd" flect >/dev/null; then
4979                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4980                 val="$define"
4981         else
4982                 $cat <<EOM
4983 If you are not sure if they are secure, I can check but I'll need a
4984 username and password different from the one you are using right now.
4985 If you don't have such a username or don't want me to test, simply
4986 enter 'none'.
4987
4988 EOM
4989                 rp='Other username to test security of setuid scripts with?'
4990                 dflt='none'
4991                 . ./myread
4992                 case "$ans" in
4993                 n|none)
4994                         case "$d_suidsafe" in
4995                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4996                                 dflt=n;;
4997                         "$undef")
4998                                 echo "Well, the $hint value is *not* secure." >&4
4999                                 dflt=n;;
5000                         *)      echo "Well, the $hint value *is* secure." >&4
5001                                 dflt=y;;
5002                         esac
5003                         ;;
5004                 *)
5005                         $rm -f reflect flect
5006                         echo "#!$ls" >reflect
5007                         chmod +x,u+s reflect
5008                         echo >flect
5009                         chmod a+w flect
5010                         echo '"su" will (probably) prompt you for '"$ans's password."
5011                         su $ans -c './reflect >flect'
5012                         if $contains "/dev/fd" flect >/dev/null; then
5013                                 echo "Okay, it looks like setuid scripts are secure." >&4
5014                                 dflt=y
5015                         else
5016                                 echo "I don't think setuid scripts are secure." >&4
5017                                 dflt=n
5018                         fi
5019                         ;;
5020                 esac
5021                 rp='Does your kernel have *secure* setuid scripts?'
5022                 . ./myread
5023                 case "$ans" in
5024                 [yY]*)  val="$define";;
5025                 *)      val="$undef";;
5026                 esac
5027         fi
5028 else
5029         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5030         echo "(That's for file descriptors, not floppy disks.)"
5031         val="$undef"
5032 fi
5033 set d_suidsafe
5034 eval $setvar
5035
5036 $rm -f reflect flect
5037
5038 : now see if they want to do setuid emulation
5039 echo " "
5040 val="$undef"
5041 case "$d_suidsafe" in
5042 "$define")
5043         val="$undef"
5044         echo "No need to emulate SUID scripts since they are secure here." >& 4
5045         ;;
5046 *)
5047         $cat <<EOM
5048 Some systems have disabled setuid scripts, especially systems where
5049 setuid scripts cannot be secure.  On systems where setuid scripts have
5050 been disabled, the setuid/setgid bits on scripts are currently
5051 useless.  It is possible for $package to detect those bits and emulate
5052 setuid/setgid in a secure fashion.  This emulation will only work if
5053 setuid scripts have been disabled in your kernel.
5054
5055 EOM
5056         case "$d_dosuid" in
5057         "$define") dflt=y ;;
5058         *) dflt=n ;;
5059         esac
5060         rp="Do you want to do setuid/setgid emulation?"
5061         . ./myread
5062         case "$ans" in
5063         [yY]*)  val="$define";;
5064         *)      val="$undef";;
5065         esac
5066         ;;
5067 esac
5068 set d_dosuid
5069 eval $setvar
5070
5071 : determine filename position in cpp output
5072 echo " "
5073 echo "Computing filename position in cpp output for #include directives..." >&4
5074 echo '#include <stdio.h>' > foo.c
5075 $cat >fieldn <<EOF
5076 $startsh
5077 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5078 $grep '^[       ]*#.*stdio\.h' | \
5079 while read cline; do
5080         pos=1
5081         set \$cline
5082         while $test \$# -gt 0; do
5083                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5084                         echo "\$pos"
5085                         exit 0
5086                 fi
5087                 shift
5088                 pos=\`expr \$pos + 1\`
5089         done
5090 done
5091 EOF
5092 chmod +x fieldn
5093 fieldn=`./fieldn`
5094 $rm -f foo.c fieldn
5095 case $fieldn in
5096 '') pos='???';;
5097 1) pos=first;;
5098 2) pos=second;;
5099 3) pos=third;;
5100 *) pos="${fieldn}th";;
5101 esac
5102 echo "Your cpp writes the filename in the $pos field of the line."
5103
5104 : locate header file
5105 $cat >findhdr <<EOF
5106 $startsh
5107 wanted=\$1
5108 name=''
5109 for usrincdir in $usrinc
5110 do
5111         if test -f \$usrincdir/\$wanted; then
5112                 echo "\$usrincdir/\$wanted"
5113                 exit 0
5114         fi
5115 done
5116 awkprg='{ print \$$fieldn }'
5117 echo "#include <\$wanted>" > foo\$\$.c
5118 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5119 $grep "^[       ]*#.*\$wanted" | \
5120 while read cline; do
5121         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5122         case "\$name" in
5123         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5124         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5125         *) exit 2;;
5126         esac;
5127 done;
5128 #
5129 # status = 0: grep returned 0 lines, case statement not executed
5130 # status = 1: headerfile found
5131 # status = 2: while loop executed, no headerfile found
5132 #
5133 status=\$?
5134 $rm -f foo\$\$.c;
5135 if test \$status -eq 1; then
5136         exit 0;
5137 fi
5138 exit 1
5139 EOF
5140 chmod +x findhdr
5141
5142 : define an alternate in-header-list? function
5143 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5144 cont=true; xxf="echo \"<\$1> found.\" >&4";
5145 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5146 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5147 esac;
5148 case $# in 4) instead=instead;; *) instead="at last";; esac;
5149 while $test "$cont"; do
5150         xxx=`./findhdr $1`
5151         var=$2; eval "was=\$$2";
5152         if $test "$xxx" && $test -r "$xxx";
5153         then eval $xxf;
5154         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5155                 cont="";
5156         else eval $xxnf;
5157         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5158         set $yyy; shift; shift; yyy=$@;
5159         case $# in 0) cont="";;
5160         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5161                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5162         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5163                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5164         esac;
5165 done;
5166 while $test "$yyy";
5167 do set $yyy; var=$2; eval "was=\$$2";
5168         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5169         set $yyy; shift; shift; yyy=$@;
5170 done'
5171
5172 : see if this is a malloc.h system
5173 set malloc.h i_malloc
5174 eval $inhdr
5175
5176 : see if stdlib is available
5177 set stdlib.h i_stdlib
5178 eval $inhdr
5179
5180 : determine which malloc to compile in
5181 echo " "
5182 case "$usemymalloc" in
5183 ''|[yY]*|true|$define)  dflt='y' ;;
5184 *)      dflt='n' ;;
5185 esac
5186 rp="Do you wish to attempt to use the malloc that comes with $package?"
5187 . ./myread
5188 usemymalloc="$ans"
5189 case "$ans" in
5190 y*|true)
5191         usemymalloc='y'
5192         mallocsrc='malloc.c'
5193         mallocobj="malloc$_o"
5194         d_mymalloc="$define"
5195         case "$libs" in
5196         *-lmalloc*)
5197                 : Remove malloc from list of libraries to use
5198                 echo "Removing unneeded -lmalloc from library list" >&4
5199                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5200                 shift
5201                 libs="$*"
5202                 echo "libs = $libs" >&4
5203                 ;;
5204         esac
5205         ;;
5206 *)
5207         usemymalloc='n'
5208         mallocsrc=''
5209         mallocobj=''
5210         d_mymalloc="$undef"
5211         ;;
5212 esac
5213
5214 : compute the return types of malloc and free
5215 echo " "
5216 $cat >malloc.c <<END
5217 #$i_malloc I_MALLOC
5218 #$i_stdlib I_STDLIB
5219 #include <stdio.h>
5220 #include <sys/types.h>
5221 #ifdef I_MALLOC
5222 #include <malloc.h>
5223 #endif
5224 #ifdef I_STDLIB
5225 #include <stdlib.h>
5226 #endif
5227 #ifdef TRY_MALLOC
5228 void *malloc();
5229 #endif
5230 #ifdef TRY_FREE
5231 void free();
5232 #endif
5233 END
5234 case "$malloctype" in
5235 '')
5236         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5237                 malloctype='void *'
5238         else
5239                 malloctype='char *'
5240         fi
5241         ;;
5242 esac
5243 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5244
5245 case "$freetype" in
5246 '')
5247         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5248                 freetype='void'
5249         else
5250                 freetype='int'
5251         fi
5252         ;;
5253 esac
5254 echo "Your system uses $freetype free(), it would seem." >&4
5255 $rm -f malloc.[co]
5256 $cat <<EOM
5257
5258 After $package is installed, you may wish to install various
5259 add-on modules and utilities.  Typically, these add-ons will
5260 be installed under $prefix with the rest
5261 of this package.  However, you may wish to install such add-ons
5262 elsewhere under a different prefix.
5263
5264 If you do not wish to put everything under a single prefix, that's
5265 ok.  You will be prompted for the individual locations; this siteprefix
5266 is only used to suggest the defaults.
5267
5268 The default should be fine for most people.
5269
5270 EOM
5271 fn=d~+
5272 rp='Installation prefix to use for add-on modules and utilities?'
5273 : XXX Here might be another good place for an installstyle setting.
5274 case "$siteprefix" in
5275 '') dflt=$prefix ;;
5276 *)  dflt=$siteprefix ;;
5277 esac
5278 . ./getfile
5279 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5280 oldsiteprefix=''
5281 case "$siteprefix" in
5282 '') ;;
5283 *)      case "$ans" in
5284         "$prefix") ;;
5285         *) oldsiteprefix="$prefix";;
5286         esac
5287         ;;
5288 esac
5289 siteprefix="$ans"
5290 siteprefixexp="$ansexp"
5291
5292 : determine where site specific libraries go.
5293 : Usual default is /usr/local/lib/perl5/site_perl/$version
5294 : The default "style" setting is made in installstyle.U
5295 : XXX No longer works with Prefixit stuff.
5296 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5297 case "$sitelib" in
5298 '') case "$installstyle" in
5299         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5300         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5301         esac
5302         ;;
5303 *)      dflt="$sitelib"
5304         ;;
5305 esac
5306 $cat <<EOM
5307
5308 The installation process will create a directory for
5309 site-specific extensions and modules.  Most users find it convenient
5310 to place all site-specific files in this directory rather than in the
5311 main distribution directory.
5312
5313 EOM
5314 fn=d~+
5315 rp='Pathname for the site-specific library files?'
5316 . ./getfile
5317 sitelib="$ans"
5318 sitelibexp="$ansexp"
5319 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5320 : Change installation prefix, if necessary.
5321 if $test X"$prefix" != X"$installprefix"; then
5322         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5323 else
5324         installsitelib="$sitelibexp"
5325 fi
5326
5327 : determine where site specific architecture-dependent libraries go.
5328 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
5329 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5330 : sitelib may have an optional trailing /share.
5331 case "$sitearch" in
5332 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
5333         dflt="$dflt/$archname"
5334         ;;
5335 *)      dflt="$sitearch"
5336         ;;
5337 esac
5338 set sitearch sitearch none
5339 eval $prefixit
5340 $cat <<EOM
5341
5342 The installation process will also create a directory for
5343 architecture-dependent site-specific extensions and modules.
5344
5345 EOM
5346 fn=d~+
5347 rp='Pathname for the site-specific architecture-dependent library files?'
5348 . ./getfile
5349 sitearch="$ans"
5350 sitearchexp="$ansexp"
5351 : Change installation prefix, if necessary.
5352 if $test X"$prefix" != X"$installprefix"; then
5353         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5354 else
5355         installsitearch="$sitearchexp"
5356 fi
5357
5358 $cat <<EOM
5359
5360 The installation process will also create a directory for
5361 vendor-supplied add-ons.  Vendors who supply perl with their system
5362 may find it convenient to place all vendor-supplied files in this
5363 directory rather than in the main distribution directory.  This will
5364 ease upgrades between binary-compatible maintenance versions of perl.
5365
5366 Of course you may also use these directories in whatever way you see
5367 fit.  For example, you might use them to access modules shared over a
5368 company-wide network.
5369
5370 The default answer should be fine for most people.
5371 This causes further questions about vendor add-ons to be skipped
5372 and no vendor-specific directories will be configured for perl.
5373
5374 EOM
5375 rp='Do you want to configure vendor-specific add-on directories?'
5376 case "$usevendorprefix" in
5377 define|true|[yY]*) dflt=y ;;
5378 *)      : User may have set vendorprefix directly on Configure command line.
5379         case "$vendorprefix" in
5380         ''|' ') dflt=n ;;
5381         *)      dflt=y ;;
5382         esac
5383         ;;
5384 esac
5385 . ./myread
5386 case "$ans" in
5387 [yY]*)  fn=d~+
5388         rp='Installation prefix to use for vendor-supplied add-ons?'
5389         case "$vendorprefix" in
5390         '') dflt='' ;;
5391         *)  dflt=$vendorprefix ;;
5392         esac
5393         . ./getfile
5394         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5395         oldvendorprefix=''
5396         case "$vendorprefix" in
5397         '') ;;
5398         *)      case "$ans" in
5399                 "$prefix") ;;
5400                 *) oldvendorprefix="$prefix";;
5401                 esac
5402                 ;;
5403         esac
5404         usevendorprefix="$define"
5405         vendorprefix="$ans"
5406         vendorprefixexp="$ansexp"
5407         ;;
5408 *)      usevendorprefix="$undef"
5409         vendorprefix=''
5410         vendorprefixexp=''
5411         ;;
5412 esac
5413
5414 case "$vendorprefix" in
5415 '')     d_vendorlib="$undef"
5416         vendorlib=''
5417         vendorlibexp=''
5418         ;;
5419 *)      d_vendorlib="$define"
5420         : determine where vendor-supplied modules go.
5421         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5422         case "$vendorlib" in
5423         '')
5424                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5425                 case "$installstyle" in
5426                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5427                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5428                 esac
5429                 ;;
5430         *)      dflt="$vendorlib"
5431                 ;;
5432         esac
5433         fn=d~+
5434         rp='Pathname for the vendor-supplied library files?'
5435         . ./getfile
5436         vendorlib="$ans"
5437         vendorlibexp="$ansexp"
5438         ;;
5439 esac
5440 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5441 : Change installation prefix, if necessary.
5442 if $test X"$prefix" != X"$installprefix"; then
5443         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5444 else
5445         installvendorlib="$vendorlibexp"
5446 fi
5447
5448 case "$vendorprefix" in
5449 '')     d_vendorarch="$undef"
5450         vendorarch=''
5451         vendorarchexp=''
5452         ;;
5453 *)      d_vendorarch="$define"
5454         : determine where vendor-supplied architecture-dependent libraries go.
5455         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
5456         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5457         : vendorlib may have an optional trailing /share.
5458         case "$vendorarch" in
5459         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
5460                 dflt="$dflt/$archname"
5461                 ;;
5462         *)      dflt="$vendorarch" ;;
5463         esac
5464         fn=d~+
5465         rp='Pathname for vendor-supplied architecture-dependent files?'
5466         . ./getfile
5467         vendorarch="$ans"
5468         vendorarchexp="$ansexp"
5469         ;;
5470 esac
5471 : Change installation prefix, if necessary.
5472 if $test X"$prefix" != X"$installprefix"; then
5473         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5474 else
5475         installvendorarch="$vendorarchexp"
5476 fi
5477
5478 : Final catch-all directories to search
5479 $cat <<EOM
5480
5481 Lastly, you can have perl look in other directories for extensions and
5482 modules in addition to those already specified.
5483 These directories will be searched after 
5484         $sitearch 
5485         $sitelib 
5486 EOM
5487 test X"$vendorlib" != "X" && echo '     ' $vendorlib
5488 test X"$vendorarch" != "X" && echo '    ' $vendorarch
5489 echo ' '
5490 case "$otherlibdirs" in
5491 ''|' ') dflt='none' ;;
5492 *)      dflt="$otherlibdirs" ;;
5493 esac
5494 $cat <<EOM
5495 Enter a colon-separated set of extra paths to include in perl's @INC
5496 search path, or enter 'none' for no extra paths.
5497
5498 EOM
5499
5500 rp='Colon-separated list of additional directories for perl to search?'
5501 . ./myread
5502 case "$ans" in
5503 ' '|''|none)    otherlibdirs=' ' ;;     
5504 *)      otherlibdirs="$ans" ;;
5505 esac
5506 case "$otherlibdirs" in
5507 ' ') val=$undef ;;
5508 *)      val=$define ;;
5509 esac
5510 set d_perl_otherlibdirs
5511 eval $setvar
5512
5513 : Cruising for prototypes
5514 echo " "
5515 echo "Checking out function prototypes..." >&4
5516 $cat >prototype.c <<'EOCP'
5517 int main(int argc, char *argv[]) {
5518         exit(0);}
5519 EOCP
5520 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5521         echo "Your C compiler appears to support function prototypes."
5522         val="$define"
5523 else
5524         echo "Your C compiler doesn't seem to understand function prototypes."
5525         val="$undef"
5526 fi
5527 set prototype
5528 eval $setvar
5529 $rm -f prototype*
5530
5531 case "$prototype" in
5532 "$define") ;;
5533 *)      ansi2knr='ansi2knr'
5534         echo " "
5535         cat <<EOM >&4
5536
5537 $me:  FATAL ERROR:
5538 This version of $package can only be compiled by a compiler that 
5539 understands function prototypes.  Unfortunately, your C compiler 
5540         $cc $ccflags
5541 doesn't seem to understand them.  Sorry about that.
5542
5543 If GNU cc is available for your system, perhaps you could try that instead.  
5544
5545 Eventually, we hope to support building Perl with pre-ANSI compilers.
5546 If you would like to help in that effort, please contact <perlbug@perl.org>.
5547
5548 Aborting Configure now.
5549 EOM
5550         exit 2
5551         ;;
5552 esac
5553
5554 : determine where public executables go
5555 echo " "
5556 set dflt bin bin
5557 eval $prefixit
5558 fn=d~
5559 rp='Pathname where the public executables will reside?'
5560 . ./getfile
5561 if $test "X$ansexp" != "X$binexp"; then
5562         installbin=''
5563 fi
5564 bin="$ans"
5565 binexp="$ansexp"
5566 : Change installation prefix, if necessary.
5567 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5568 if $test X"$prefix" != X"$installprefix"; then
5569         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5570 else
5571         installbin="$binexp"
5572 fi
5573
5574 : Find perl5.005 or later.
5575 echo "Looking for a previously installed perl5.005 or later... "
5576 case "$perl5" in
5577 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5578                 : Check if this perl is recent and can load a simple module
5579                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5580                         perl5=$tdir/perl
5581                         break;
5582                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5583                         perl5=$tdir/perl
5584                         break;
5585                 fi
5586         done
5587         ;;
5588 *)      perl5="$perl5"
5589         ;;
5590 esac
5591 case "$perl5" in
5592 '')     echo "None found.  That's ok.";;
5593 *)      echo "Using $perl5." ;;
5594 esac
5595
5596 : Determine list of previous versions to include in @INC
5597 $cat > getverlist <<EOPL
5598 #!$perl5 -w
5599 use File::Basename;
5600 \$api_versionstring = "$api_versionstring";
5601 \$version = "$version";
5602 \$stem = "$sitelib_stem";
5603 \$archname = "$archname";
5604 EOPL
5605         $cat >> getverlist <<'EOPL'
5606 # Can't have leading @ because metaconfig interprets it as a command!
5607 ;@inc_version_list=();
5608 # XXX Redo to do opendir/readdir? 
5609 if (-d $stem) {
5610     chdir($stem);
5611     ;@candidates = glob("5.*");
5612 }
5613 else {
5614     ;@candidates = ();
5615 }
5616
5617 # XXX ToDo:  These comparisons must be reworked when two-digit
5618 # subversions come along, so that 5.7.10 compares as greater than
5619 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5620 # widespread that we can use the built-in version vectors rather
5621 # than reinventing them here.  For 5.6.0, however, we must
5622 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5623 foreach $d (@candidates) {
5624     if ($d lt $version) {
5625         if ($d ge $api_versionstring) {
5626             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
5627         }
5628         elsif ($d ge "5.005") {
5629             unshift(@inc_version_list, grep { -d } $d);
5630         }
5631     }
5632     else {
5633         # Skip newer version.  I.e. don't look in
5634         # 5.7.0 if we're installing 5.6.1.
5635     }
5636 }
5637
5638 if (@inc_version_list) {
5639     print join(' ', @inc_version_list);
5640 }
5641 else {
5642     # Blank space to preserve value for next Configure run.
5643     print " ";
5644 }
5645 EOPL
5646 chmod +x getverlist
5647 case "$inc_version_list" in
5648 '')     if test -x "$perl5"; then
5649                 dflt=`$perl5 getverlist`
5650         else
5651                 dflt='none'
5652         fi
5653         ;;
5654 $undef) dflt='none' ;;
5655 *)  dflt="$inc_version_list" ;;
5656 esac
5657 case "$dflt" in
5658 ''|' ') dflt=none ;;
5659 esac
5660 $cat <<'EOM'
5661
5662 In order to ease the process of upgrading, this version of perl 
5663 can be configured to use modules built and installed with earlier 
5664 versions of perl that were installed under $prefix.  Specify here
5665 the list of earlier versions that this version of perl should check.
5666 If Configure detected no earlier versions of perl installed under
5667 $prefix, then the list will be empty.  Answer 'none' to tell perl
5668 to not search earlier versions.
5669
5670 The default should almost always be sensible, so if you're not sure,
5671 just accept the default.
5672 EOM
5673
5674 rp='List of earlier versions to include in @INC?'
5675 . ./myread
5676 case "$ans" in
5677 [Nn]one|''|' ') inc_version_list=' ' ;;
5678 *) inc_version_list="$ans" ;;
5679 esac
5680 case "$inc_version_list" in
5681 ''|' ') 
5682         inc_version_list_init='0';;
5683 *)      inc_version_list_init=`echo $inc_version_list |
5684                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5685         ;;
5686 esac
5687 $rm -f getverlist
5688
5689 : determine whether to install perl also as /usr/bin/perl
5690
5691 echo " "
5692 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5693         $cat <<EOM
5694 Many scripts expect perl to be installed as /usr/bin/perl.
5695 I can install the perl you are about to compile also as /usr/bin/perl
5696 (in addition to $installbin/perl).
5697 EOM
5698         case "$installusrbinperl" in
5699         "$undef"|[nN]*) dflt='n';;
5700         *)              dflt='y';;
5701         esac
5702         rp="Do you want to install perl as /usr/bin/perl?"
5703         . ./myread
5704         case "$ans" in
5705         [yY]*)  val="$define";;
5706         *)      val="$undef" ;;
5707         esac
5708 else
5709         val="$undef"
5710 fi
5711 set installusrbinperl
5712 eval $setvar
5713
5714 echo " "
5715 echo "Checking for GNU C Library..." >&4
5716 cat >gnulibc.c <<EOM
5717 #include <stdio.h>
5718 int main()
5719 {
5720 #ifdef __GLIBC__
5721     exit(0);
5722 #else
5723     exit(1);
5724 #endif
5725 }
5726 EOM
5727 set gnulibc
5728 if eval $compile_ok && ./gnulibc; then
5729         val="$define"
5730         echo "You are using the GNU C Library"
5731 else
5732         val="$undef"
5733         echo "You are not using the GNU C Library"
5734 fi
5735 $rm -f gnulibc*
5736 set d_gnulibc
5737 eval $setvar
5738
5739 : see if nm is to be used to determine whether a symbol is defined or not
5740 case "$usenm" in
5741 '')
5742         dflt=''
5743         case "$d_gnulibc" in
5744         "$define")
5745                 echo " "
5746                 echo "nm probably won't work on the GNU C Library." >&4
5747                 dflt=n
5748                 ;;
5749         esac
5750         case "$dflt" in
5751         '') 
5752                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5753                         echo " "
5754                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5755                         echo "'nm' won't be sufficient on this sytem." >&4
5756                         dflt=n
5757                 fi
5758                 ;;
5759         esac
5760         case "$dflt" in
5761         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5762                 if $test $dflt -gt 20; then
5763                         dflt=y
5764                 else
5765                         dflt=n
5766                 fi
5767                 ;;
5768         esac
5769         ;;
5770 *)
5771         case "$usenm" in
5772         true|$define) dflt=y;;
5773         *) dflt=n;;
5774         esac
5775         ;;
5776 esac
5777 $cat <<EOM
5778
5779 I can use $nm to extract the symbols from your C libraries. This
5780 is a time consuming task which may generate huge output on the disk (up
5781 to 3 megabytes) but that should make the symbols extraction faster. The
5782 alternative is to skip the 'nm' extraction part and to compile a small
5783 test program instead to determine whether each symbol is present. If
5784 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5785 this may be the best solution.
5786
5787 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5788
5789 EOM
5790 rp="Shall I use $nm to extract C symbols from the libraries?"
5791 . ./myread
5792 case "$ans" in
5793 [Nn]*) usenm=false;;
5794 *) usenm=true;;
5795 esac
5796
5797 runnm=$usenm
5798 case "$reuseval" in
5799 true) runnm=false;;
5800 esac
5801
5802 : nm options which may be necessary
5803 case "$nm_opt" in
5804 '') if $test -f /mach_boot; then
5805                 nm_opt=''       # Mach
5806         elif $test -d /usr/ccs/lib; then
5807                 nm_opt='-p'     # Solaris (and SunOS?)
5808         elif $test -f /dgux; then
5809                 nm_opt='-p'     # DG-UX
5810         elif $test -f /lib64/rld; then
5811                 nm_opt='-p'     # 64-bit Irix
5812         else
5813                 nm_opt=''
5814         fi;;
5815 esac
5816
5817 : nm options which may be necessary for shared libraries but illegal
5818 : for archive libraries.  Thank you, Linux.
5819 case "$nm_so_opt" in
5820 '')     case "$myuname" in
5821         *linux*)
5822                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5823                         nm_so_opt='--dynamic'
5824                 fi
5825                 ;;
5826         esac
5827         ;;
5828 esac
5829
5830 case "$runnm" in
5831 true)
5832 : get list of predefined functions in a handy place
5833 echo " "
5834 case "$libc" in
5835 '') libc=unknown
5836         case "$libs" in
5837         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5838         esac
5839         ;;
5840 esac
5841 libnames='';
5842 case "$libs" in
5843 '') ;;
5844 *)  for thislib in $libs; do
5845         case "$thislib" in
5846         -lc|-lc_s)
5847                 : Handle C library specially below.
5848                 ;;
5849         -l*)
5850                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5851                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5852                         :
5853                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5854                         :
5855                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5856                         :
5857                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5858                         :
5859                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5860                         :
5861                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5862                         :
5863                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5864                         :
5865                 else
5866                         try=''
5867                 fi
5868                 libnames="$libnames $try"
5869                 ;;
5870         *) libnames="$libnames $thislib" ;;
5871         esac
5872         done
5873         ;;
5874 esac
5875 xxx=normal
5876 case "$libc" in
5877 unknown)
5878         set /lib/libc.$so
5879         for xxx in $libpth; do
5880                 $test -r $1 || set $xxx/libc.$so
5881                 : The messy sed command sorts on library version numbers.
5882                 $test -r $1 || \
5883                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5884                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5885                                 h
5886                                 s/[0-9][0-9]*/0000&/g
5887                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5888                                 G
5889                                 s/\n/ /' | \
5890                          sort | $sed -e 's/^.* //'`
5891                 eval set \$$#
5892         done
5893         $test -r $1 || set /usr/ccs/lib/libc.$so
5894         $test -r $1 || set /lib/libsys_s$_a
5895         ;;
5896 *)
5897         set blurfl
5898         ;;
5899 esac
5900 if $test -r "$1"; then
5901         echo "Your (shared) C library seems to be in $1."
5902         libc="$1"
5903 elif $test -r /lib/libc && $test -r /lib/clib; then
5904         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5905         xxx=apollo
5906         libc='/lib/clib /lib/libc'
5907         if $test -r /lib/syslib; then
5908                 echo "(Your math library is in /lib/syslib.)"
5909                 libc="$libc /lib/syslib"
5910         fi
5911 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5912         echo "Your C library seems to be in $libc, as you said before."
5913 elif $test -r $incpath/usr/lib/libc$_a; then
5914         libc=$incpath/usr/lib/libc$_a;
5915         echo "Your C library seems to be in $libc.  That's fine."
5916 elif $test -r /lib/libc$_a; then
5917         libc=/lib/libc$_a;
5918         echo "Your C library seems to be in $libc.  You're normal."
5919 else
5920         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5921                 :
5922         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5923                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5924         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5925                 :
5926         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5927                 :
5928         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5929                 :
5930         else
5931                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5932         fi
5933         if $test -r "$tans"; then
5934                 echo "Your C library seems to be in $tans, of all places."
5935                 libc=$tans
5936         else
5937                 libc='blurfl'
5938         fi
5939 fi
5940 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5941         dflt="$libc"
5942         cat <<EOM
5943
5944 If the guess above is wrong (which it might be if you're using a strange
5945 compiler, or your machine supports multiple models), you can override it here.
5946
5947 EOM
5948 else
5949         dflt=''
5950         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5951         cat >&4 <<EOM
5952 I can't seem to find your C library.  I've looked in the following places:
5953
5954 EOM
5955         $sed 's/^/      /' libpath
5956         cat <<EOM
5957
5958 None of these seems to contain your C library. I need to get its name...
5959
5960 EOM
5961 fi
5962 fn=f
5963 rp='Where is your C library?'
5964 . ./getfile
5965 libc="$ans"
5966
5967 echo " "
5968 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5969 set X `cat libnames`
5970 shift
5971 xxx=files
5972 case $# in 1) xxx=file; esac
5973 echo "Extracting names from the following $xxx for later perusal:" >&4
5974 echo " "
5975 $sed 's/^/      /' libnames >&4
5976 echo " "
5977 $echo $n "This may take a while...$c" >&4
5978
5979 for file in $*; do
5980         case $file in
5981         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5982         *) $nm $nm_opt $file 2>/dev/null;;
5983         esac
5984 done >libc.tmp
5985
5986 $echo $n ".$c"
5987 $grep fprintf libc.tmp > libc.ptf
5988 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5989 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5990 xxx='[ADTSIW]'
5991 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5992         eval $xscan;\
5993         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5994                 eval $xrun
5995 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5996         eval $xscan;\
5997         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5998                 eval $xrun
5999 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
6000         eval $xscan;\
6001         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6002                 eval $xrun
6003 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
6004         eval $xscan;\
6005         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6006                 eval $xrun
6007 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
6008         eval $xscan;\
6009         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6010                 eval $xrun
6011 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
6012         eval $xscan;\
6013         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6014                 eval $xrun
6015 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
6016                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
6017         eval $xscan;\
6018         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6019                 eval $xrun
6020 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
6021         eval $xscan;\
6022         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6023                 eval $xrun
6024 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
6025         eval $xscan;\
6026         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6027                 eval $xrun
6028 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
6029         eval $xscan;\
6030         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6031                 eval $xrun
6032 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
6033         eval $xscan;\
6034         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6035                 eval $xrun
6036 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
6037         eval $xscan;\
6038         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6039                 eval $xrun
6040 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
6041         eval $xscan;\
6042         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6043                 eval $xrun
6044 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
6045         eval $xscan;\
6046         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6047                 eval $xrun
6048 else
6049         $nm -p $* 2>/dev/null >libc.tmp
6050         $grep fprintf libc.tmp > libc.ptf
6051         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
6052                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
6053         then
6054                 nm_opt='-p'
6055                 eval $xrun
6056         else
6057                 echo " "
6058                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
6059                 com=''
6060                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
6061                         for thisname in $libnames $libc; do
6062                                 $ar t $thisname >>libc.tmp
6063                         done
6064                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
6065                         echo "Ok." >&4
6066                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
6067                         # Repeat libc to extract forwarders to DLL entries too
6068                         for thisname in $libnames $libc; do
6069                                 $ar tv $thisname >>libc.tmp
6070                                 # Revision 50 of EMX has bug in $ar.
6071                                 # it will not extract forwarders to DLL entries
6072                                 # Use emximp which will extract exactly them.
6073                                 emximp -o tmp.imp $thisname \
6074                                     2>/dev/null && \
6075                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6076                                     < tmp.imp >>libc.tmp
6077                                 $rm tmp.imp
6078                         done
6079                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6080                         echo "Ok." >&4
6081                 else
6082                         echo "$ar didn't seem to work right." >&4
6083                         echo "Maybe this is a Cray...trying bld instead..." >&4
6084                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6085                         then
6086                                 for thisname in $libnames; do
6087                                         bld t $libnames | \
6088                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6089                                         $ar t $thisname >>libc.tmp
6090                                 done
6091                                 echo "Ok." >&4
6092                         else
6093                                 echo "That didn't work either.  Giving up." >&4
6094                                 exit 1
6095                         fi
6096                 fi
6097         fi
6098 fi
6099 nm_extract="$com"
6100 if $test -f /lib/syscalls.exp; then
6101         echo " "
6102         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6103         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6104 fi
6105 ;;
6106 esac
6107 $rm -f libnames libpath
6108
6109 : see if dld is available
6110 set dld.h i_dld
6111 eval $inhdr
6112
6113 : is a C symbol defined?
6114 csym='tlook=$1;
6115 case "$3" in
6116 -v) tf=libc.tmp; tc=""; tdc="";;
6117 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6118 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6119 esac;
6120 tx=yes;
6121 case "$reuseval-$4" in
6122 true-) ;;
6123 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6124 esac;
6125 case "$tx" in
6126 yes)
6127         case "$runnm" in
6128         true)
6129                 if $contains $tlook $tf >/dev/null 2>&1;
6130                 then tval=true;
6131                 else tval=false;
6132                 fi;;
6133         *)
6134                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6135                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6136                 then tval=true;
6137                 else tval=false;
6138                 fi;
6139                 $rm -f t t.c;;
6140         esac;;
6141 *)
6142         case "$tval" in
6143         $define) tval=true;;
6144         *) tval=false;;
6145         esac;;
6146 esac;
6147 eval "$2=$tval"'
6148
6149 : define an is-in-libc? function
6150 inlibc='echo " "; td=$define; tu=$undef;
6151 sym=$1; var=$2; eval "was=\$$2";
6152 tx=yes;
6153 case "$reuseval$was" in
6154 true) ;;
6155 true*) tx=no;;
6156 esac;
6157 case "$tx" in
6158 yes)
6159         set $sym tres -f;
6160         eval $csym;
6161         case "$tres" in
6162         true)
6163                 echo "$sym() found." >&4;
6164                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6165         *)
6166                 echo "$sym() NOT found." >&4;
6167                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6168         esac;;
6169 *)
6170         case "$was" in
6171         $define) echo "$sym() found." >&4;;
6172         *) echo "$sym() NOT found." >&4;;
6173         esac;;
6174 esac'
6175
6176 : see if dlopen exists
6177 xxx_runnm="$runnm"
6178 runnm=false
6179 set dlopen d_dlopen
6180 eval $inlibc
6181 runnm="$xxx_runnm"
6182
6183 : determine which dynamic loading, if any, to compile in
6184 echo " "
6185 dldir="ext/DynaLoader"
6186 case "$usedl" in
6187 $define|y|true)
6188         dflt='y'
6189         usedl="$define"
6190         ;;
6191 $undef|n|false)
6192         dflt='n'
6193         usedl="$undef"
6194         ;;
6195 *) 
6196         dflt='n'
6197         case "$d_dlopen" in
6198             $define) dflt='y' ;;
6199         esac
6200         case "$i_dld" in
6201             $define) dflt='y' ;;
6202         esac
6203         : Does a dl_xxx.xs file exist for this operating system
6204         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6205         ;;
6206 esac
6207 rp="Do you wish to use dynamic loading?"
6208 . ./myread
6209 usedl="$ans"
6210 case "$ans" in
6211 y*) usedl="$define"
6212         case "$dlsrc" in
6213         '')
6214                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6215                         dflt="$dldir/dl_${osname}.xs"
6216                 elif $test "$d_dlopen" = "$define" ; then
6217                         dflt="$dldir/dl_dlopen.xs"
6218                 elif $test "$i_dld" = "$define" ; then
6219                         dflt="$dldir/dl_dld.xs"
6220                 else
6221                         dflt=''
6222                 fi
6223                 ;;
6224         *)      dflt="$dldir/$dlsrc"
6225                 ;;
6226         esac
6227     echo "The following dynamic loading files are available:"
6228         : Can not go over to $dldir because getfile has path hard-coded in.
6229         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6230         rp="Source file to use for dynamic loading"
6231         fn="fne"
6232         gfpth="$src"
6233         . ./getfile
6234         usedl="$define"
6235         : emulate basename
6236         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6237
6238         $cat << EOM
6239
6240 Some systems may require passing special flags to $cc -c to
6241 compile modules that will be used to create a shared library.
6242 To use no flags, say "none".
6243
6244 EOM
6245     case "$cccdlflags" in
6246     '') case "$gccversion" in
6247                 '') case "$osname" in
6248                         hpux)   dflt='+z' ;;
6249                         next)   dflt='none' ;;
6250                         irix*)  dflt='-KPIC' ;;
6251                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6252                         sunos)  dflt='-pic' ;;
6253                         *)      dflt='none' ;;
6254                     esac
6255                         ;;
6256                 *)  case "$osname" in
6257                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6258                         *)      dflt='-fpic' ;;
6259                     esac ;;
6260             esac ;;
6261         ' ') dflt='none' ;;
6262     *)  dflt="$cccdlflags" ;;
6263     esac
6264     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6265     . ./myread
6266     case "$ans" in
6267     none) cccdlflags=' ' ;;
6268     *) cccdlflags="$ans" ;;
6269     esac
6270
6271     cat << EOM
6272
6273 Some systems use ld to create libraries that can be dynamically loaded,
6274 while other systems (such as those using ELF) use $cc.
6275
6276 EOM
6277         case "$ld" in
6278         '')     $cat >try.c <<'EOM'
6279 /* Test for whether ELF binaries are produced */
6280 #include <fcntl.h>
6281 #include <stdlib.h>
6282 int main() {
6283         char b[4];
6284         int i = open("a.out",O_RDONLY);
6285         if(i == -1) 
6286                 exit(1); /* fail */
6287         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6288                 exit(0); /* succeed (yes, it's ELF) */
6289         else
6290                 exit(1); /* fail */
6291 }
6292 EOM
6293                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6294                         cat <<EOM
6295 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6296 EOM
6297                         dflt="$cc"
6298                 else
6299                         echo "I'll use ld to build dynamic libraries."
6300                         dflt='ld'
6301                 fi
6302                 rm -f try.c a.out
6303                 ;;
6304         *)      dflt="$ld"
6305                 ;;
6306         esac
6307
6308     rp="What command should be used to create dynamic libraries?"
6309     . ./myread
6310         ld="$ans"
6311
6312     cat << EOM
6313
6314 Some systems may require passing special flags to $ld to create a
6315 library that can be dynamically loaded.  If your ld flags include
6316 -L/other/path options to locate libraries outside your loader's normal
6317 search path, you may need to specify those -L options here as well.  To
6318 use no flags, say "none".
6319
6320 EOM
6321     case "$lddlflags" in
6322     '') case "$osname" in
6323                         beos) dflt='-nostart' ;;
6324                         hpux) dflt='-b';
6325                               case "$gccversion" in
6326                               '') dflt="$dflt +vnocompatwarnings" ;;
6327                               esac
6328                               ;;        
6329                         linux|irix*)    dflt='-shared' ;;
6330                         next)  dflt='none' ;;
6331                         solaris) dflt='-G' ;;
6332                         sunos) dflt='-assert nodefinitions' ;;
6333                         svr4*|esix*) dflt="-G $ldflags" ;;
6334                 *)     dflt='none' ;;
6335                         esac
6336                         ;;
6337     *) dflt="$lddlflags" ;;
6338     esac
6339
6340         : Try to guess additional flags to pick up local libraries.
6341         : Be careful not to append to a plain 'none'
6342         case "$dflt" in
6343         none) dflt='' ;;
6344         esac
6345         for thisflag in $ldflags; do
6346                 case "$thisflag" in
6347                 -L*)
6348                         case " $dflt " in
6349                         *" $thisflag "*) ;;
6350                         *) dflt="$dflt $thisflag" ;;
6351                         esac
6352                         ;;
6353                 esac
6354         done
6355
6356         case "$dflt" in
6357         ''|' ') dflt='none' ;;
6358         esac
6359
6360     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6361     . ./myread
6362     case "$ans" in
6363     none) lddlflags=' ' ;;
6364     *) lddlflags="$ans" ;;
6365     esac
6366
6367         cat <<EOM
6368
6369 Some systems may require passing special flags to $cc to indicate that
6370 the resulting executable will use dynamic linking.  To use no flags,
6371 say "none".
6372
6373 EOM
6374     case "$ccdlflags" in
6375     '') case "$osname" in
6376                 hpux)   dflt='-Wl,-E' ;;
6377                 linux)  dflt='-rdynamic' ;;
6378                 next)   dflt='none' ;;
6379                 sunos)  dflt='none' ;;
6380                 *)      dflt='none' ;;
6381             esac ;;
6382     ' ')  dflt='none' ;;
6383     *)  dflt="$ccdlflags" ;;
6384     esac
6385     rp="Any special flags to pass to $cc to use dynamic linking?"
6386     . ./myread
6387     case "$ans" in
6388     none) ccdlflags=' ' ;;
6389     *) ccdlflags="$ans" ;;
6390     esac
6391     ;;
6392 *)  usedl="$undef"
6393         ld='ld'
6394     dlsrc='dl_none.xs'
6395     lddlflags=''
6396     ccdlflags=''
6397     ;;
6398 esac
6399
6400 also=''
6401 case "$usedl" in
6402 $undef)
6403         # No dynamic loading being used, so don't bother even to prompt.
6404         useshrplib='false'
6405         ;;
6406 *)      case "$useshrplib" in
6407         '')     case "$osname" in
6408                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6409                         dflt=y
6410                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6411                         ;;
6412                 next*)
6413                         case "$osvers" in
6414                         4*)     dflt=y
6415                                 also='Building a shared libperl is needed for MAB support.'
6416                                 ;;
6417                         *)      dflt=n
6418                                 ;;
6419                         esac
6420                         ;;
6421                 *)      dflt=n
6422                         ;;
6423                 esac
6424                 ;;
6425         $define|true|[Yy]*)
6426                 dflt=y
6427                 ;;
6428         *)      dflt=n
6429                 ;;
6430         esac
6431         $cat << EOM
6432
6433 The perl executable is normally obtained by linking perlmain.c with
6434 libperl${_a}, any static extensions (usually just DynaLoader), and
6435 any other libraries needed on this system (such as -lm, etc.).  Since
6436 your system supports dynamic loading, it is probably possible to build
6437 a shared libperl.$so.  If you will have more than one executable linked
6438 to libperl.$so, this will significantly reduce the size of each
6439 executable, but it may have a noticeable affect on performance.  The
6440 default is probably sensible for your system.
6441 $also
6442
6443 EOM
6444         rp="Build a shared libperl.$so (y/n)"
6445         . ./myread
6446         case "$ans" in
6447         true|$define|[Yy]*)
6448                 useshrplib='true'  ;;
6449         *)      useshrplib='false' ;;
6450         esac
6451         ;;
6452 esac
6453
6454 case "$useshrplib" in
6455 true)
6456         case "$libperl" in
6457         '')
6458                 # Figure out a good name for libperl.so.  Since it gets stored in
6459                 # a version-specific architecture-dependent library, the version
6460                 # number isn't really that important, except for making cc/ld happy.
6461                 #
6462                 # A name such as libperl.so.3.1
6463                 majmin="libperl.$so.$patchlevel.$subversion"
6464                 # A name such as libperl.so.301
6465                 majonly=`echo $patchlevel $subversion |
6466                         $awk '{printf "%d%02d", $1, $2}'`
6467                 majonly=libperl.$so.$majonly
6468                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6469                 # rely on figuring it out from the naming of libc.
6470                 case "${osname}${osvers}" in
6471                 next4*)
6472                         dflt=libperl.5.$so
6473                         # XXX How handle the --version stuff for MAB?
6474                         ;;
6475                 linux*)  # ld won't link with a bare -lperl otherwise.
6476                         dflt=libperl.$so
6477                         ;;
6478                 cygwin*) # include version
6479                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6480                         ;;
6481                 *)      # Try to guess based on whether libc has major.minor.
6482                         case "$libc" in
6483                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6484                         *libc.$so.[0-9]*) dflt=$majonly ;;
6485                         *)      dflt=libperl.$so ;;
6486                         esac
6487                         ;;
6488                 esac
6489                 ;;
6490         *)      dflt=$libperl
6491                 ;;
6492         esac
6493         cat << EOM
6494
6495 I need to select a good name for the shared libperl.  If your system uses
6496 library names with major and minor numbers, then you might want something
6497 like $majmin.  Alternatively, if your system uses a single version
6498 number for shared libraries, then you might want to use $majonly.
6499 Or, your system might be quite happy with a simple libperl.$so.
6500
6501 Since the shared libperl will get installed into a version-specific
6502 architecture-dependent directory, the version number of the shared perl
6503 library probably isn't important, so the default should be o.k.
6504
6505 EOM
6506         rp='What name do you want to give to the shared libperl?'
6507         . ./myread
6508         libperl=$ans
6509         echo "Ok, I'll use $libperl"
6510         ;;
6511 *)
6512         libperl="libperl${_a}"
6513         ;;
6514 esac
6515
6516 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6517 case "$shrpdir" in
6518 '') ;;
6519 *)      $cat >&4 <<EOM
6520 WARNING:  Use of the shrpdir variable for the installation location of
6521 the shared $libperl is not supported.  It was never documented and
6522 will not work in this version.  Let me (perlbug@perl.com)
6523 know of any problems this may cause.
6524
6525 EOM
6526         case "$shrpdir" in
6527         "$archlibexp/CORE")
6528                 $cat >&4 <<EOM
6529 But your current setting of $shrpdir is
6530 the default anyway, so it's harmless.
6531 EOM
6532                 ;;
6533         *)
6534                 $cat >&4 <<EOM
6535 Further, your current attempted setting of $shrpdir
6536 conflicts with the value of $archlibexp/CORE
6537 that installperl will use.
6538 EOM
6539                 ;;
6540         esac
6541         ;;
6542 esac
6543
6544 # How will the perl executable find the installed shared $libperl?
6545 # Add $xxx to ccdlflags.
6546 # If we can't figure out a command-line option, use $shrpenv to
6547 # set env LD_RUN_PATH.  The main perl makefile uses this.
6548 shrpdir=$archlibexp/CORE
6549 xxx=''
6550 tmp_shrpenv=''
6551 if "$useshrplib"; then
6552     case "$osname" in 
6553         aix)
6554                 # We'll set it in Makefile.SH...
6555                 ;;
6556         solaris|netbsd)
6557                 xxx="-R $shrpdir"
6558                 ;;
6559         freebsd)
6560                 xxx="-Wl,-R$shrpdir"
6561                 ;;
6562         linux|irix*|dec_osf)
6563                 xxx="-Wl,-rpath,$shrpdir"
6564                 ;;
6565         next)
6566                 # next doesn't like the default...
6567                 ;;
6568         beos)
6569                 # beos doesn't like the default, either.
6570                 ;;
6571         hpux*)
6572                 # hpux doesn't like the default, either.
6573                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6574                 ;;
6575         *)
6576                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6577                 ;;
6578         esac
6579         case "$xxx" in
6580         '') ;;
6581         *)      
6582                 # Only add $xxx if it isn't already in ccdlflags.
6583                 case " $ccdlflags " in
6584                 *" $xxx "*)     ;;
6585                 *)      ccdlflags="$ccdlflags $xxx"
6586                         cat <<EOM >&4
6587
6588 Adding $xxx to the flags
6589 passed to $ld so that the perl executable will find the 
6590 installed shared $libperl.
6591
6592 EOM
6593                         ;;
6594                 esac
6595                 ;;
6596         esac
6597 fi
6598 # Fix ccdlflags in AIX for building external extensions.
6599 # (For building Perl itself bare -bE:perl.exp is needed,
6600 #  Makefile.SH takes care of this.)
6601 case "$osname" in
6602 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6603 esac
6604 # Respect a hint or command-line value.
6605 case "$shrpenv" in
6606 '') shrpenv="$tmp_shrpenv" ;;
6607 esac
6608 case "$ldlibpthname" in
6609 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6610 none)   ldlibpthname='' ;;
6611 esac
6612
6613 : determine where manual pages go
6614 set man1dir man1dir none
6615 eval $prefixit
6616 $cat <<EOM
6617
6618 $spackage has manual pages available in source form.
6619 EOM
6620 case "$nroff" in
6621 nroff)
6622         echo "However, you don't have nroff, so they're probably useless to you."
6623         case "$man1dir" in
6624         '') man1dir="none";;
6625         esac;;
6626 esac
6627 echo "If you don't want the manual sources installed, answer 'none'."
6628 case "$man1dir" in
6629 ' ') dflt=none
6630         ;;
6631 '')
6632         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6633         lookpath="$lookpath $prefixexp/man/p_man/man1"
6634         lookpath="$lookpath $prefixexp/man/u_man/man1"
6635         lookpath="$lookpath $prefixexp/man/man.1"
6636         case "$sysman" in
6637         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6638         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6639         esac
6640         set dflt
6641         eval $prefixup
6642         ;;
6643 *)  dflt="$man1dir"
6644         ;;
6645 esac
6646 echo " "
6647 fn=dn+~
6648 rp="Where do the main $spackage manual pages (source) go?"
6649 . ./getfile
6650 if $test "X$man1direxp" != "X$ansexp"; then
6651         installman1dir=''
6652 fi
6653 man1dir="$ans"
6654 man1direxp="$ansexp"
6655 case "$man1dir" in
6656 '')     man1dir=' '
6657         installman1dir='';;
6658 esac
6659
6660 : Change installation prefix, if necessary.
6661 if $test X"$prefix" != X"$installprefix"; then
6662         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6663 else
6664         installman1dir="$man1direxp"
6665 fi
6666
6667 : What suffix to use on installed man pages
6668
6669 case "$man1dir" in
6670 ' ')
6671         man1ext='0'
6672         ;;
6673 *)
6674         rp="What suffix should be used for the main $spackage man pages?"
6675         case "$man1ext" in
6676         '')     case "$man1dir" in
6677                 *1)  dflt=1 ;;
6678                 *1p) dflt=1p ;;
6679                 *1pm) dflt=1pm ;;
6680                 *l) dflt=l;;
6681                 *n) dflt=n;;
6682                 *o) dflt=o;;
6683                 *p) dflt=p;;
6684                 *C) dflt=C;;
6685                 *L) dflt=L;;
6686                 *L1) dflt=L1;;
6687                 *) dflt=1;;
6688                 esac
6689                 ;;
6690         *)      dflt="$man1ext";;
6691         esac
6692         . ./myread
6693         man1ext="$ans"
6694         ;;
6695 esac
6696
6697 : see if we can have long filenames
6698 echo " "
6699 first=123456789abcdef
6700 $rm -f $first
6701 if (echo hi >$first) 2>/dev/null; then
6702         if $test -f 123456789abcde; then
6703                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6704                 val="$undef"
6705         else
6706                 echo 'You can have filenames longer than 14 characters.'>&4
6707                 val="$define"
6708         fi
6709 else
6710         $cat <<'EOM'
6711 You can't have filenames longer than 14 chars.
6712 You can't even think about them!
6713 EOM
6714         val="$undef"
6715 fi 
6716 set d_flexfnam
6717 eval $setvar
6718 $rm -rf 123456789abcde*
6719
6720 : determine where library module manual pages go
6721 set man3dir man3dir none
6722 eval $prefixit
6723 $cat <<EOM
6724
6725 $spackage has manual pages for many of the library modules.
6726 EOM
6727
6728 case "$nroff" in
6729 nroff)
6730         $cat <<'EOM'
6731 However, you don't have nroff, so they're probably useless to you.
6732 EOM
6733         case "$man3dir" in
6734         '') man3dir="none";;
6735         esac;;
6736 esac
6737
6738 case "$d_flexfnam" in
6739 undef)
6740         $cat <<'EOM'
6741 However, your system can't handle the long file names like File::Basename.3. 
6742 EOM
6743         case "$man3dir" in
6744         '') man3dir="none";;
6745         esac;;
6746 esac
6747
6748 echo "If you don't want the manual sources installed, answer 'none'."
6749 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6750 case "$man3dir" in
6751 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6752         if $test -d "$privlib/man/man3"; then
6753                 cat <<EOM >&4
6754
6755 WARNING:  Previous versions of perl installed man3 pages into
6756 $privlib/man/man3.  This version will suggest a 
6757 new default of $dflt.  
6758 EOM
6759                 tdflt=$dflt
6760                 dflt='n'
6761                 rp='Do you wish to preserve the old behavior?(y/n)'
6762                 . ./myread
6763                 case "$ans" in
6764                 y*) dflt="$privlib/man/man3" ;;
6765                 *)  dflt=$tdflt ;;
6766                 esac
6767     fi
6768         ;;
6769 *)      dflt="$man3dir" ;;
6770 esac
6771 case "$dflt" in
6772 ' ') dflt=none ;;
6773 esac
6774 echo " "
6775 fn=dn+~
6776 rp="Where do the $package library man pages (source) go?"
6777 . ./getfile
6778 man3dir="$ans"
6779 man3direxp="$ansexp"
6780 case "$man3dir" in
6781 '')     man3dir=' '
6782         installman3dir='';;
6783 esac
6784
6785 : Change installation prefix, if necessary.
6786 if $test X"$prefix" != X"$installprefix"; then
6787         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6788 else
6789         installman3dir="$man3direxp"
6790 fi
6791
6792 : What suffix to use on installed man pages
6793 case "$man3dir" in
6794 ' ')
6795         man3ext='0'
6796         ;;
6797 *)
6798         rp="What suffix should be used for the $package library man pages?"
6799         case "$man3ext" in
6800         '')     case "$man3dir" in
6801                 *3)  dflt=3 ;;
6802                 *3p) dflt=3p ;;
6803                 *3pm) dflt=3pm ;;
6804                 *l) dflt=l;;
6805                 *n) dflt=n;;
6806                 *o) dflt=o;;
6807                 *p) dflt=p;;
6808                 *C) dflt=C;;
6809                 *L) dflt=L;;
6810                 *L3) dflt=L3;;
6811                 *) dflt=3;;
6812                 esac
6813                 ;;
6814         *)      dflt="$man3ext";;
6815         esac
6816         . ./myread
6817         man3ext="$ans"
6818         ;;
6819 esac
6820
6821 : see if we have to deal with yellow pages, now NIS.
6822 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6823         if $test -f /usr/etc/nibindd; then
6824                 echo " "
6825                 echo "I'm fairly confident you're on a NeXT."
6826                 echo " "
6827                 rp='Do you get the hosts file via NetInfo?'
6828                 dflt=y
6829                 case "$hostcat" in
6830                 nidump*) ;;
6831                 '') ;;
6832                 *) dflt=n;;
6833                 esac
6834                 . ./myread
6835                 case "$ans" in
6836                 y*) hostcat='nidump hosts .';;
6837                 *)      case "$hostcat" in
6838                         nidump*) hostcat='';;
6839                         esac
6840                         ;;
6841                 esac
6842         fi
6843         case "$hostcat" in
6844         nidump*) ;;
6845         *)
6846                 case "$hostcat" in
6847                 *ypcat*) dflt=y;;
6848                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6849                                 dflt=y
6850                         else
6851                                 dflt=n
6852                         fi;;
6853                 *) dflt=n;;
6854                 esac
6855                 echo " "
6856                 rp='Are you getting the hosts file via yellow pages?'
6857                 . ./myread
6858                 case "$ans" in
6859                 y*) hostcat='ypcat hosts';;
6860                 *) hostcat='cat /etc/hosts';;
6861                 esac
6862                 ;;
6863         esac
6864 fi
6865 case "$hostcat" in
6866 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6867 esac
6868 case "$groupcat" in
6869 '') test -f /etc/group && groupcat='cat /etc/group';;
6870 esac
6871 case "$passcat" in
6872 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6873 esac
6874
6875 : now get the host name
6876 echo " "
6877 echo "Figuring out host name..." >&4
6878 case "$myhostname" in
6879 '') cont=true
6880         echo 'Maybe "hostname" will work...'
6881         if tans=`sh -c hostname 2>&1` ; then
6882                 myhostname=$tans
6883                 phostname=hostname
6884                 cont=''
6885         fi
6886         ;;
6887 *) cont='';;
6888 esac
6889 if $test "$cont"; then
6890         if ./xenix; then
6891                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6892                 if tans=`cat /etc/systemid 2>&1` ; then
6893                         myhostname=$tans
6894                         phostname='cat /etc/systemid'
6895                         echo "Whadyaknow.  Xenix always was a bit strange..."
6896                         cont=''
6897                 fi
6898         elif $test -r /etc/systemid; then
6899                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6900         fi
6901 fi
6902 if $test "$cont"; then
6903         echo 'No, maybe "uuname -l" will work...'
6904         if tans=`sh -c 'uuname -l' 2>&1` ; then
6905                 myhostname=$tans
6906                 phostname='uuname -l'
6907         else
6908                 echo 'Strange.  Maybe "uname -n" will work...'
6909                 if tans=`sh -c 'uname -n' 2>&1` ; then
6910                         myhostname=$tans
6911                         phostname='uname -n'
6912                 else
6913                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6914                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6915                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6916                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6917                         else
6918                                 case "$myhostname" in
6919                                 '') echo "Does this machine have an identity crisis or something?"
6920                                         phostname='';;
6921                                 *)
6922                                         echo "Well, you said $myhostname before..."
6923                                         phostname='echo $myhostname';;
6924                                 esac
6925                         fi
6926                 fi
6927         fi
6928 fi
6929 : you do not want to know about this
6930 set $myhostname
6931 myhostname=$1
6932
6933 : verify guess
6934 if $test "$myhostname" ; then
6935         dflt=y
6936         rp='Your host name appears to be "'$myhostname'".'" Right?"
6937         . ./myread
6938         case "$ans" in
6939         y*) ;;
6940         *) myhostname='';;
6941         esac
6942 fi
6943
6944 : bad guess or no guess
6945 while $test "X$myhostname" = X ; do
6946         dflt=''
6947         rp="Please type the (one word) name of your host:"
6948         . ./myread
6949         myhostname="$ans"
6950 done
6951
6952 : translate upper to lower if necessary
6953 case "$myhostname" in
6954 *[A-Z]*)
6955         echo "(Normalizing case in your host name)"
6956         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6957         ;;
6958 esac
6959
6960 case "$myhostname" in
6961 *.*)
6962         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6963         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6964         echo "(Trimming domain name from host name--host name is now $myhostname)"
6965         ;;
6966 *) case "$mydomain" in
6967         '')
6968                 {
6969                         test "X$hostcat" = "Xypcat hosts" &&
6970                         ypmatch "$myhostname" hosts 2>/dev/null |\
6971                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6972                         $test -s hosts
6973                 } || {
6974                         test "X$hostcat" != "X" &&
6975                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6976                                         /[       ]$myhostname[  . ]/p" > hosts
6977                 }
6978                 tmp_re="[       . ]"
6979                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6980                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6981                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6982                         hosts | $sort | $uniq | \
6983                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6984                 case `$echo X$dflt` in
6985                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6986                         dflt=.
6987                         ;;
6988                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6989                         ;;
6990                 esac
6991                 case "$dflt" in
6992                 .)
6993                         tans=`./loc resolv.conf X /etc /usr/etc`
6994                         if $test -f "$tans"; then
6995                                 echo "(Attempting domain name extraction from $tans)"
6996                                 dflt=.`$sed -n -e 's/   / /g' \
6997                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6998                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6999                                 case "$dflt" in
7000                                 .) dflt=.`$sed -n -e 's/        / /g' \
7001                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7002                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7003                                         ;;
7004                                 esac
7005                         fi
7006                         ;;
7007                 esac
7008                 case "$dflt" in
7009                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7010                         dflt=.`sh -c domainname 2>/dev/null`
7011                         case "$dflt" in
7012                         '') dflt='.';;
7013                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7014                         esac
7015                         ;;
7016                 esac
7017                 case "$dflt" in
7018                 .) echo "(Lost all hope -- silly guess then)"
7019                         dflt='.uucp'
7020                         ;;
7021                 esac
7022                 $rm -f hosts
7023                 ;;
7024         *) dflt="$mydomain";;
7025         esac;;
7026 esac
7027 echo " "
7028 rp="What is your domain name?"
7029 . ./myread
7030 tans="$ans"
7031 case "$ans" in
7032 '') ;;
7033 .*) ;;
7034 *) tans=".$tans";;
7035 esac
7036 mydomain="$tans"
7037
7038 : translate upper to lower if necessary
7039 case "$mydomain" in
7040 *[A-Z]*)
7041         echo "(Normalizing case in your domain name)"
7042         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7043         ;;
7044 esac
7045
7046 : a little sanity check here
7047 case "$phostname" in
7048 '') ;;
7049 *)
7050         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7051         $myhostname$mydomain|$myhostname) ;;
7052         *)
7053                 case "$phostname" in
7054                 sed*)
7055                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7056                         ;;
7057                 *)
7058                         echo "(That doesn't agree with your $phostname command, by the way.)"
7059                         ;;
7060                 esac
7061         ;;
7062         esac
7063         ;;
7064 esac
7065
7066 $cat <<EOM
7067
7068 I need to get your e-mail address in Internet format if possible, i.e.
7069 something like user@host.domain. Please answer accurately since I have
7070 no easy means to double check it. The default value provided below
7071 is most probably close to reality but may not be valid from outside
7072 your organization...
7073
7074 EOM
7075 cont=x
7076 while test "$cont"; do
7077         case "$cf_email" in
7078         '') dflt="$cf_by@$myhostname$mydomain";;
7079         *) dflt="$cf_email";;
7080         esac
7081         rp='What is your e-mail address?'
7082         . ./myread
7083         cf_email="$ans"
7084         case "$cf_email" in
7085         *@*.*) cont='' ;;
7086         *)
7087                 rp='Address does not look like an Internet one.  Use it anyway?'
7088                 case "$fastread" in
7089                 yes) dflt=y ;;
7090                 *) dflt=n ;;
7091                 esac
7092                 . ./myread
7093                 case "$ans" in
7094                 y*) cont='' ;;
7095                 *) echo " " ;;
7096                 esac
7097                 ;;
7098         esac
7099 done
7100
7101 $cat <<EOM
7102
7103 If you or somebody else will be maintaining perl at your site, please
7104 fill in the correct e-mail address here so that they may be contacted
7105 if necessary. Currently, the "perlbug" program included with perl
7106 will send mail to this address in addition to perlbug@perl.com. You may
7107 enter "none" for no administrator.
7108
7109 EOM
7110 case "$perladmin" in
7111 '') dflt="$cf_email";;
7112 *) dflt="$perladmin";;
7113 esac
7114 rp='Perl administrator e-mail address'
7115 . ./myread
7116 perladmin="$ans"
7117
7118 : figure out how to guarantee perl startup
7119 case "$startperl" in
7120 '')
7121         case "$sharpbang" in
7122         *!)
7123                 $cat <<EOH
7124
7125 I can use the #! construct to start perl on your system. This will
7126 make startup of perl scripts faster, but may cause problems if you
7127 want to share those scripts and perl is not in a standard place
7128 ($binexp/perl) on all your platforms. The alternative is to force
7129 a shell by starting the script with a single ':' character.
7130
7131 EOH
7132                 dflt="$binexp/perl"
7133                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7134                 . ./myread
7135                 case "$ans" in
7136                 none)   startperl=": # use perl";;
7137                 *)      startperl="#!$ans"
7138                         if $test 30 -lt `echo "$ans" | wc -c`; then
7139                                 $cat >&4 <<EOM
7140
7141 WARNING:  Some systems limit the #! command to 32 characters.
7142 If you experience difficulty running Perl scripts with #!, try
7143 installing Perl in a directory with a shorter pathname.
7144
7145 EOM
7146                         fi ;;
7147                 esac
7148                 ;;
7149         *) startperl=": # use perl"
7150                 ;;
7151         esac
7152         ;;
7153 esac
7154 echo "I'll use $startperl to start perl scripts."
7155
7156 : figure best path for perl in scripts
7157 case "$perlpath" in
7158 '')
7159         perlpath="$binexp/perl"
7160         case "$startperl" in
7161         *!*) ;;
7162         *)
7163                 $cat <<EOH
7164
7165 I will use the "eval 'exec'" idiom to start Perl on your system.
7166 I can use the full path of your Perl binary for this purpose, but
7167 doing so may cause problems if you want to share those scripts and
7168 Perl is not always in a standard place ($binexp/perl).
7169
7170 EOH
7171                 dflt="$binexp/perl"
7172                 rp="What path shall I use in \"eval 'exec'\"?"
7173                 . ./myread
7174                 perlpath="$ans"
7175                 ;;
7176         esac
7177         ;;
7178 esac
7179 case "$startperl" in
7180 *!*)    ;;
7181 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7182 esac
7183
7184 : determine where public executable scripts go
7185 set scriptdir scriptdir
7186 eval $prefixit
7187 case "$scriptdir" in
7188 '')
7189         dflt="$bin"
7190         : guess some guesses
7191         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7192         $test -d /usr/share/bin     && dflt=/usr/share/bin
7193         $test -d /usr/local/script  && dflt=/usr/local/script
7194         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7195         $test -d $prefixexp/script  && dflt=$prefixexp/script
7196         set dflt
7197         eval $prefixup
7198         ;;
7199 *)  dflt="$scriptdir"
7200         ;;
7201 esac
7202 $cat <<EOM
7203  
7204 Some installations have a separate directory just for executable scripts so
7205 that they can mount it across multiple architectures but keep the scripts in
7206 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7207 Or you might just lump your scripts in with all your other executables.
7208  
7209 EOM
7210 fn=d~
7211 rp='Where do you keep publicly executable scripts?'
7212 . ./getfile
7213 if $test "X$ansexp" != "X$scriptdirexp"; then
7214         installscript=''
7215 fi
7216 scriptdir="$ans"
7217 scriptdirexp="$ansexp"
7218 : Change installation prefix, if necessary.
7219 if $test X"$prefix" != X"$installprefix"; then
7220         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7221 else
7222         installscript="$scriptdirexp"
7223 fi
7224
7225 : determine where add-on public executables go
7226 case "$sitebin" in
7227 '')     dflt=$siteprefix/bin ;;
7228 *)      dflt=$sitebin ;;
7229 esac
7230 fn=d~
7231 rp='Pathname where the add-on public executables should be installed?'
7232 . ./getfile
7233 sitebin="$ans"
7234 sitebinexp="$ansexp"
7235 : Change installation prefix, if necessary.
7236 if $test X"$prefix" != X"$installprefix"; then
7237         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7238 else
7239         installsitebin="$sitebinexp"
7240 fi
7241
7242 : see if sqrtl exists
7243 set sqrtl d_sqrtl
7244 eval $inlibc
7245
7246 case "$ccflags" in
7247 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7248 esac
7249
7250 case "$uselongdouble" in
7251 $define|true|[yY]*)     dflt='y';;
7252 *) dflt='n';;
7253 esac
7254 cat <<EOM
7255
7256 Perl can be built to take advantage of long doubles which
7257 (if available) may give more accuracy and range for floating point numbers.
7258
7259 If this doesn't make any sense to you, just accept the default '$dflt'.
7260 EOM
7261 rp='Try to use long doubles if available?'
7262 . ./myread
7263 case "$ans" in
7264 y|Y)    val="$define"   ;;
7265 *)      val="$undef"    ;;
7266 esac
7267 set uselongdouble
7268 eval $setvar
7269
7270 case "$uselongdouble" in
7271 true|[yY]*) uselongdouble="$define" ;;
7272 esac
7273
7274 case "$uselongdouble" in
7275 $define)
7276 : Look for a hint-file generated 'call-back-unit'.  If the
7277 : user has specified that long doubles should be used,
7278 : we may need to set or change some other defaults.
7279         if $test -f uselongdouble.cbu; then
7280                 echo "Your platform has some specific hints for long doubles, using them..."
7281                 . ./uselongdouble.cbu
7282         else
7283                 $cat <<EOM
7284 (Your platform doesn't have any specific hints for long doubles.)
7285 EOM
7286         fi
7287         ;;
7288 esac
7289
7290 case "$uselongdouble:$d_sqrtl" in
7291 $define:$undef)
7292                 $cat <<EOM >&4
7293
7294 *** You requested the use of long doubles but you do not seem to have
7295 *** the mathematic functions for long doubles.  I'm disabling the use
7296 *** of long doubles.
7297
7298 EOM
7299         uselongdouble=$undef
7300         ;;
7301 esac
7302
7303 case "$useperlio" in
7304 $define|true|[yY]*)     dflt='y';;
7305 *) dflt='n';;
7306 esac
7307 cat <<EOM
7308
7309 Previous version of $package used the standard IO mechanisms as defined
7310 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7311 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7312 the default.  This abstraction layer can use AT&T's sfio (if you already
7313 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7314 problems with some extension modules.  Using PerlIO with stdio is safe,
7315 but it is slower than plain stdio and therefore is not the default.
7316
7317 If this doesn't make any sense to you, just accept the default '$dflt'.
7318 EOM
7319 rp='Use the experimental PerlIO abstraction layer?'
7320 . ./myread
7321 case "$ans" in
7322 y|Y) 
7323         val="$define"
7324         ;;     
7325 *)      
7326         echo "Ok, doing things the stdio way"
7327         val="$undef"
7328         ;;
7329 esac
7330 set useperlio
7331 eval $setvar 
7332
7333 case "$vendorprefix" in
7334 '')     d_vendorbin="$undef"
7335         vendorbin=''
7336         vendorbinexp=''
7337         ;;
7338 *)      d_vendorbin="$define"
7339         : determine where vendor-supplied executables go.
7340         case "$vendorbin" in
7341         '') dflt=$vendorprefix/bin ;;
7342         *)      dflt="$vendorbin" ;;
7343         esac
7344         fn=d~+
7345         rp='Pathname for the vendor-supplied executables directory?'
7346         . ./getfile
7347         vendorbin="$ans"
7348         vendorbinexp="$ansexp"
7349         ;;
7350 esac
7351 : Change installation prefix, if necessary.
7352 if $test X"$prefix" != X"$installprefix"; then
7353         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7354 else
7355         installvendorbin="$vendorbinexp"
7356 fi
7357
7358 : see if qgcvt exists
7359 set qgcvt d_qgcvt
7360 eval $inlibc
7361
7362 : check for length of double
7363 echo " "
7364 case "$doublesize" in
7365 '')
7366         echo "Checking to see how big your double precision numbers are..." >&4
7367         $cat >try.c <<'EOCP'
7368 #include <stdio.h>
7369 int main()
7370 {
7371     printf("%d\n", (int)sizeof(double));
7372     exit(0);
7373 }
7374 EOCP
7375         set try
7376         if eval $compile_ok; then
7377                 doublesize=`./try`
7378                 echo "Your double is $doublesize bytes long."
7379         else
7380                 dflt='8'
7381                 echo "(I can't seem to compile the test program.  Guessing...)"
7382                 rp="What is the size of a double precision number (in bytes)?"
7383                 . ./myread
7384                 doublesize="$ans"
7385         fi
7386         ;;
7387 esac
7388 $rm -f try.c try
7389
7390 : check for long doubles
7391 echo " "
7392 echo "Checking to see if you have long double..." >&4
7393 echo 'int main() { long double x = 7.0; }' > try.c
7394 set try
7395 if eval $compile; then
7396         val="$define"
7397         echo "You have long double."
7398 else
7399         val="$undef"
7400         echo "You do not have long double."
7401 fi
7402 $rm try.*
7403 set d_longdbl
7404 eval $setvar
7405
7406 : check for length of long double
7407 case "${d_longdbl}${longdblsize}" in
7408 $define)
7409         echo " "
7410         echo "Checking to see how big your long doubles are..." >&4
7411         $cat >try.c <<'EOCP'
7412 #include <stdio.h>
7413 int main()
7414 {
7415         printf("%d\n", sizeof(long double));
7416 }
7417 EOCP
7418         set try
7419         set try
7420         if eval $compile; then
7421                 longdblsize=`./try$exe_ext`
7422                 echo "Your long doubles are $longdblsize bytes long."
7423         else
7424                 dflt='8'
7425                 echo " "
7426                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7427                 rp="What is the size of a long double (in bytes)?"
7428                 . ./myread
7429                 longdblsize="$ans"
7430         fi
7431         if $test "X$doublesize" = "X$longdblsize"; then
7432                 echo "(That isn't any different from an ordinary double.)"
7433         fi      
7434         ;;
7435 esac
7436 $rm -f try.* try
7437
7438 echo " "
7439
7440 if $test X"$d_longdbl" = X"$define"; then
7441
7442 echo "Checking how to print long doubles..." >&4
7443
7444 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7445         $cat >try.c <<'EOCP'
7446 #include <sys/types.h>
7447 #include <stdio.h>
7448 int main() {
7449   double d = 123.456;
7450   printf("%.3f\n", d);
7451 }
7452 EOCP
7453         set try
7454         if eval $compile; then
7455                 yyy=`./try$exe_ext`
7456                 case "$yyy" in
7457                 123.456)
7458                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7459                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7460                         echo "We will use %f."
7461                         ;;
7462                 esac
7463         fi
7464 fi
7465
7466 if $test X"$sPRIfldbl" = X; then
7467         $cat >try.c <<'EOCP'
7468 #include <sys/types.h>
7469 #include <stdio.h>
7470 int main() {
7471   long double d = 123.456;
7472   printf("%.3llf\n", d);
7473 }
7474 EOCP
7475         set try
7476         if eval $compile; then
7477                 yyy=`./try$exe_ext`
7478                 case "$yyy" in
7479                 123.456)
7480                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7481                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7482                         echo "We will use %llf."
7483                         ;;
7484                 esac
7485         fi
7486 fi
7487
7488 if $test X"$sPRIfldbl" = X; then
7489         $cat >try.c <<'EOCP'
7490 #include <sys/types.h>
7491 #include <stdio.h>
7492 int main() {
7493   long double d = 123.456;
7494   printf("%.3Lf\n", d);
7495 }
7496 EOCP
7497         set try
7498         if eval $compile; then
7499                 yyy=`./try$exe_ext`
7500                 case "$yyy" in
7501                 123.456)
7502                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7503                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7504                         echo "We will use %Lf."
7505                         ;;
7506                 esac
7507         fi
7508 fi
7509
7510 if $test X"$sPRIfldbl" = X; then
7511         $cat >try.c <<'EOCP'
7512 #include <sys/types.h>
7513 #include <stdio.h>
7514 int main() {
7515   long double d = 123.456;
7516   printf("%.3lf\n", d);
7517 }
7518 EOCP
7519         set try
7520         if eval $compile; then
7521                 yyy=`./try$exe_ext`
7522                 case "$yyy" in
7523                 123.456)
7524                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7525                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7526                         echo "We will use %lf."
7527                         ;;
7528                 esac
7529         fi
7530 fi
7531
7532 if $test X"$sPRIfldbl" = X; then
7533         echo "Cannot figure out how to print long doubles." >&4
7534 fi
7535
7536 $rm -f try try.*
7537
7538 fi # d_longdbl
7539
7540 case "$sPRIfldbl" in
7541 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7542         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7543         ;;
7544 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7545         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7546         ;;
7547 esac
7548
7549 : Check how to convert floats to strings.
7550 if test "X$d_Gconvert" = X; then
7551         echo " "
7552         echo "Checking for an efficient way to convert floats to strings."
7553         echo " " > try.c
7554         case "$uselongdouble" in
7555         "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7556         esac
7557         case "$d_longdbl" in
7558         "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7559         esac
7560         case "$d_PRIgldbl" in
7561         "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7562         esac
7563         $cat >>try.c <<EOP
7564 #ifdef TRY_gconvert
7565 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7566 char *myname = "gconvert";
7567 #endif
7568 #ifdef TRY_gcvt
7569 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7570 char *myname = "gcvt";
7571 #endif
7572 #ifdef TRY_qgcvt
7573 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7574 char *myname = "qgcvt";
7575 #define DOUBLETYPE long double
7576 #endif
7577 #ifdef TRY_sprintf
7578 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7579 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7580 #else
7581 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7582 #endif
7583 char *myname = "sprintf";
7584 #endif
7585
7586 #ifndef DOUBLETYPE
7587 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7588 #define DOUBLETYPE long double
7589 #else
7590 #define DOUBLETYPE double
7591 #endif
7592 #endif
7593
7594 #include <stdio.h>
7595
7596 #define I_STDLIB $i_stdlib
7597 #ifdef I_STDLIB
7598 #include <stdlib.h>
7599 #endif
7600
7601 int
7602 checkit(expect, got)
7603 char *expect;
7604 char *got;
7605 {
7606     if (strcmp(expect, got)) {
7607                 printf("%s oddity:  Expected %s, got %s\n",
7608                         myname, expect, got);
7609                 exit(1);
7610         }
7611 }
7612
7613 int main()
7614
7615         char buf[64]; 
7616         buf[63] = '\0';
7617
7618         /* This must be 1st test on (which?) platform */
7619         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7620         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7621         checkit("0.1", buf);
7622
7623         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7624         checkit("1", buf);
7625
7626         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7627         checkit("1.1", buf);
7628
7629         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7630         checkit("1.01", buf);
7631
7632         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7633         checkit("1.001", buf);
7634
7635         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7636         checkit("1.0001", buf);
7637
7638         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7639         checkit("1.00001", buf);
7640
7641         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7642         checkit("1.000001", buf);
7643
7644         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7645         checkit("0", buf);
7646
7647         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7648         checkit("-1", buf);
7649
7650         /* Some Linux gcvt's give 1.e+5 here. */
7651         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7652         checkit("100000", buf);
7653         
7654         /* Some Linux gcvt's give -1.e+5 here. */
7655         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7656         checkit("-100000", buf);
7657
7658         exit(0);
7659 }
7660 EOP
7661         case "$d_Gconvert" in
7662         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7663         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7664         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7665         *) xxx_list='gconvert gcvt sprintf' ;;
7666         esac
7667
7668         case "$d_longdbl$uselongdouble$d_qgcvt" in
7669         "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7670         esac
7671
7672         for xxx_convert in $xxx_list; do
7673                 echo "Trying $xxx_convert..."
7674                 $rm -f try try$_o
7675                 set try -DTRY_$xxx_convert
7676                 if eval $compile; then
7677                         echo "$xxx_convert() found." >&4
7678                         if ./try; then
7679                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7680                                 break;
7681                         else
7682                                 echo "...But $xxx_convert didn't work as I expected."
7683                         fi
7684                 else
7685                         echo "$xxx_convert NOT found." >&4
7686                 fi
7687         done
7688                 
7689         case "$xxx_convert" in
7690         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7691         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7692         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7693         *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7694            "$define$define$define")
7695               d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7696            *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7697            esac
7698            ;;  
7699         esac
7700 fi
7701
7702 : Initialize h_fcntl
7703 h_fcntl=false
7704
7705 : Initialize h_sysfile
7706 h_sysfile=false
7707
7708 : access call always available on UNIX
7709 set access d_access
7710 eval $inlibc
7711
7712 : locate the flags for 'access()'
7713 case "$d_access" in
7714 "$define")
7715         echo " "
7716         $cat >access.c <<'EOCP'
7717 #include <sys/types.h>
7718 #ifdef I_FCNTL
7719 #include <fcntl.h>
7720 #endif
7721 #ifdef I_SYS_FILE
7722 #include <sys/file.h>
7723 #endif
7724 #ifdef I_UNISTD
7725 #include <unistd.h>
7726 #endif
7727 int main() {
7728         exit(R_OK);
7729 }
7730 EOCP
7731         : check sys/file.h first, no particular reason here
7732         if $test `./findhdr sys/file.h` && \
7733                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7734                 h_sysfile=true;
7735                 echo "<sys/file.h> defines the *_OK access constants." >&4
7736         elif $test `./findhdr fcntl.h` && \
7737                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7738                 h_fcntl=true;
7739                 echo "<fcntl.h> defines the *_OK access constants." >&4
7740         elif $test `./findhdr unistd.h` && \
7741                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7742                 echo "<unistd.h> defines the *_OK access constants." >&4
7743         else
7744                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7745         fi
7746         ;;
7747 esac
7748 $rm -f access*
7749
7750 : see if accessx exists
7751 set accessx d_accessx
7752 eval $inlibc
7753
7754 : see if alarm exists
7755 set alarm d_alarm
7756 eval $inlibc
7757
7758 : see if atolf exists
7759 set atolf d_atolf
7760 eval $inlibc
7761
7762 : see if atoll exists
7763 set atoll d_atoll
7764 eval $inlibc
7765
7766 : Look for GNU-cc style attribute checking
7767 echo " "
7768 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7769 $cat >attrib.c <<'EOCP'
7770 #include <stdio.h>
7771 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7772 EOCP
7773 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7774         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7775                 echo "Your C compiler doesn't fully support __attribute__."
7776                 val="$undef"
7777         else
7778                 echo "Your C compiler supports __attribute__."
7779                 val="$define"
7780         fi
7781 else
7782         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7783         val="$undef"
7784 fi
7785 set d_attribut
7786 eval $setvar
7787 $rm -f attrib*
7788
7789 : see if bcmp exists
7790 set bcmp d_bcmp
7791 eval $inlibc
7792
7793 : see if bcopy exists
7794 set bcopy d_bcopy
7795 eval $inlibc
7796
7797 : see if this is a unistd.h system
7798 set unistd.h i_unistd
7799 eval $inhdr
7800
7801 : see if getpgrp exists
7802 set getpgrp d_getpgrp
7803 eval $inlibc
7804
7805 case "$d_getpgrp" in
7806 "$define")
7807         echo " "
7808         echo "Checking to see which flavor of getpgrp is in use..."
7809         $cat >set.c <<EOP
7810 #$i_unistd I_UNISTD
7811 #include <sys/types.h>
7812 #ifdef I_UNISTD
7813 #  include <unistd.h>
7814 #endif
7815 int main()
7816 {
7817         if (getuid() == 0) {
7818                 printf("(I see you are running Configure as super-user...)\n");
7819                 setuid(1);
7820         }
7821 #ifdef TRY_BSD_PGRP
7822         if (getpgrp(1) == 0)
7823                 exit(0);
7824 #else
7825         if (getpgrp() > 0)
7826                 exit(0);
7827 #endif
7828         exit(1);
7829 }
7830 EOP
7831         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7832                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7833                 val="$define"
7834         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7835                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7836                 val="$undef"
7837         else
7838                 echo "I can't seem to compile and run the test program."
7839                 if ./usg; then
7840                         xxx="a USG one, i.e. you use getpgrp()."
7841                 else
7842                         # SVR4 systems can appear rather BSD-ish.
7843                         case "$i_unistd" in
7844                         $undef)
7845                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7846                                 val="$define"
7847                                 ;;
7848                         $define)
7849                                 xxx="probably a USG one, i.e. you use getpgrp()."
7850                                 val="$undef"
7851                                 ;;
7852                         esac
7853                 fi
7854                 echo "Assuming your getpgrp is $xxx" >&4
7855         fi
7856         ;;
7857 *) val="$undef";;
7858 esac
7859 set d_bsdgetpgrp
7860 eval $setvar
7861 $rm -f set set.c
7862
7863 : see if setpgrp exists
7864 set setpgrp d_setpgrp
7865 eval $inlibc
7866
7867 case "$d_setpgrp" in
7868 "$define")
7869         echo " "
7870         echo "Checking to see which flavor of setpgrp is in use..."
7871         $cat >set.c <<EOP
7872 #$i_unistd I_UNISTD
7873 #include <sys/types.h>
7874 #ifdef I_UNISTD
7875 #  include <unistd.h>
7876 #endif
7877 int main()
7878 {
7879         if (getuid() == 0) {
7880                 printf("(I see you are running Configure as super-user...)\n");
7881                 setuid(1);
7882         }
7883 #ifdef TRY_BSD_PGRP
7884         if (-1 == setpgrp(1, 1))
7885                 exit(0);
7886 #else
7887         if (setpgrp() != -1)
7888                 exit(0);
7889 #endif
7890         exit(1);
7891 }
7892 EOP
7893         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7894                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7895                 val="$define"
7896         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7897                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7898                 val="$undef"
7899         else
7900                 echo "(I can't seem to compile and run the test program.)"
7901                 if ./usg; then
7902                         xxx="a USG one, i.e. you use setpgrp()."
7903                 else
7904                         # SVR4 systems can appear rather BSD-ish.
7905                         case "$i_unistd" in
7906                         $undef)
7907                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7908                                 val="$define"
7909                                 ;;
7910                         $define)
7911                                 xxx="probably a USG one, i.e. you use setpgrp()."
7912                                 val="$undef"
7913                                 ;;
7914                         esac
7915                 fi
7916                 echo "Assuming your setpgrp is $xxx" >&4
7917         fi
7918         ;;
7919 *) val="$undef";;
7920 esac
7921 set d_bsdsetpgrp
7922 eval $setvar
7923 $rm -f set set.c
7924 : see if bzero exists
7925 set bzero d_bzero
7926 eval $inlibc
7927
7928 : see if signal is declared as pointer to function returning int or void
7929 echo " "
7930 xxx=`./findhdr signal.h`
7931 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7932 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7933         echo "You have int (*signal())() instead of void." >&4
7934         val="$undef"
7935 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7936         echo "You have void (*signal())()." >&4
7937         val="$define"
7938 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7939         echo "You have int (*signal())() instead of void." >&4
7940         val="$undef"
7941 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7942         echo "You have void (*signal())()." >&4
7943         val="$define"
7944 else
7945         case "$d_voidsig" in
7946         '')
7947         echo "I can't determine whether signal handler returns void or int..." >&4
7948                 dflt=void
7949                 rp="What type does your signal handler return?"
7950                 . ./myread
7951                 case "$ans" in
7952                 v*) val="$define";;
7953                 *) val="$undef";;
7954                 esac;;
7955         "$define")
7956                 echo "As you already told me, signal handler returns void." >&4
7957                 val="$define"
7958                 ;;
7959         *)      echo "As you already told me, signal handler returns int." >&4
7960                 val="$undef"
7961                 ;;
7962         esac
7963 fi
7964 set d_voidsig
7965 eval $setvar
7966 case "$d_voidsig" in
7967 "$define") signal_t="void";;
7968 *) signal_t="int";;
7969 esac
7970 $rm -f $$.tmp
7971
7972 : check for ability to cast large floats to 32-bit ints.
7973 echo " "
7974 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7975 if $test "$intsize" -ge 4; then
7976         xxx=int
7977 else
7978         xxx=long
7979 fi
7980 $cat >try.c <<EOCP
7981 #include <stdio.h>
7982 #include <sys/types.h>
7983 #include <signal.h>
7984 $signal_t blech(s) int s; { exit(3); }
7985 int main()
7986 {
7987         $xxx i32;
7988         double f, g;
7989         int result = 0;
7990         char str[16];
7991         signal(SIGFPE, blech);
7992
7993         /* Don't let compiler optimize the test away.  Store the number 
7994            in a writable string for gcc to pass to sscanf under HP/UX.
7995         */
7996         sprintf(str, "2147483647");
7997         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7998         g = 10 * f;
7999         i32  = ($xxx) g;
8000
8001         /* x86 processors will probably give 0x8000 0000, which is a
8002        sign change.  We don't want that.  We want to mimic SPARC
8003            behavior here, which is to preserve the sign and give
8004            back 0x7fff ffff.
8005         */
8006         if (i32 != ($xxx) f)
8007                 result |= 1;
8008         exit(result);
8009 }
8010 EOCP
8011 set try
8012 if eval $compile_ok; then
8013         ./try
8014         yyy=$?
8015 else
8016         echo "(I can't seem to compile the test program--assuming it can't)"
8017         yyy=1
8018 fi
8019 case "$yyy" in
8020 0)      val="$define"
8021         echo "Yup, it can."
8022         ;;
8023 *)      val="$undef"
8024         echo "Nope, it can't."
8025         ;;
8026 esac
8027 set d_casti32
8028 eval $setvar
8029 $rm -f try try.*
8030
8031 : check for ability to cast negative floats to unsigned
8032 echo " "
8033 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8034 $cat >try.c <<EOCP
8035 #include <stdio.h>
8036 #include <sys/types.h>
8037 #include <signal.h>
8038 $signal_t blech(s) int s; { exit(7); }
8039 $signal_t blech_in_list(s) int s; { exit(4); }
8040 unsigned long dummy_long(p) unsigned long p; { return p; }
8041 unsigned int dummy_int(p) unsigned int p; { return p; }
8042 unsigned short dummy_short(p) unsigned short p; { return p; }
8043 int main()
8044 {
8045         double f;
8046         unsigned long along;
8047         unsigned int aint;
8048         unsigned short ashort;
8049         int result = 0;
8050         char str[16];
8051         
8052         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8053            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8054            optimized the whole file away
8055         */
8056         /* Store the number in a writable string for gcc to pass to 
8057            sscanf under HP/UX.
8058         */
8059         sprintf(str, "-123");
8060         sscanf(str, "%lf", &f);  /* f = -123.; */
8061
8062         signal(SIGFPE, blech);
8063         along = (unsigned long)f;
8064         aint = (unsigned int)f;
8065         ashort = (unsigned short)f;
8066         if (along != (unsigned long)-123)
8067                 result |= 1;
8068         if (aint != (unsigned int)-123)
8069                 result |= 1;
8070         if (ashort != (unsigned short)-123)
8071                 result |= 1;
8072         sprintf(str, "1073741824.");
8073         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8074         f = f + f;
8075         along = 0;
8076         along = (unsigned long)f;
8077         if (along != 0x80000000)
8078                 result |= 2;
8079         f -= 1.;
8080         along = 0;
8081         along = (unsigned long)f;
8082         if (along != 0x7fffffff)
8083                 result |= 1;
8084         f += 2.;
8085         along = 0;
8086         along = (unsigned long)f;
8087         if (along != 0x80000001)
8088                 result |= 2;
8089         if (result)
8090                 exit(result);
8091         signal(SIGFPE, blech_in_list);
8092         sprintf(str, "123.");
8093         sscanf(str, "%lf", &f);  /* f = 123.; */
8094         along = dummy_long((unsigned long)f);
8095         aint = dummy_int((unsigned int)f);
8096         ashort = dummy_short((unsigned short)f);
8097         if (along != (unsigned long)123)
8098                 result |= 4;
8099         if (aint != (unsigned int)123)
8100                 result |= 4;
8101         if (ashort != (unsigned short)123)
8102                 result |= 4;
8103         exit(result);
8104
8105 }
8106 EOCP
8107 set try
8108 if eval $compile_ok; then
8109         ./try
8110         castflags=$?
8111 else
8112         echo "(I can't seem to compile the test program--assuming it can't)"
8113         castflags=7
8114 fi
8115 case "$castflags" in
8116 0)      val="$define"
8117         echo "Yup, it can."
8118         ;;
8119 *)      val="$undef"
8120         echo "Nope, it can't."
8121         ;;
8122 esac
8123 set d_castneg
8124 eval $setvar
8125 $rm -f try.*
8126
8127 : see if vprintf exists
8128 echo " "
8129 if set vprintf val -f d_vprintf; eval $csym; $val; then
8130         echo 'vprintf() found.' >&4
8131         val="$define"
8132         $cat >vprintf.c <<'EOF'
8133 #include <varargs.h>
8134
8135 int main() { xxx("foo"); }
8136
8137 xxx(va_alist)
8138 va_dcl
8139 {
8140         va_list args;
8141         char buf[10];
8142
8143         va_start(args);
8144         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8145 }
8146 EOF
8147         set vprintf
8148         if eval $compile && ./vprintf; then
8149                 echo "Your vsprintf() returns (int)." >&4
8150                 val2="$undef"
8151         else
8152                 echo "Your vsprintf() returns (char*)." >&4
8153                 val2="$define"
8154         fi
8155 else
8156         echo 'vprintf() NOT found.' >&4
8157                 val="$undef"
8158                 val2="$undef"
8159 fi
8160 set d_vprintf
8161 eval $setvar
8162 val=$val2
8163 set d_charvspr
8164 eval $setvar
8165
8166 : see if chown exists
8167 set chown d_chown
8168 eval $inlibc
8169
8170 : see if chroot exists
8171 set chroot d_chroot
8172 eval $inlibc
8173
8174 : see if chsize exists
8175 set chsize d_chsize
8176 eval $inlibc
8177
8178 : check for const keyword
8179 echo " "
8180 echo 'Checking to see if your C compiler knows about "const"...' >&4
8181 $cat >const.c <<'EOCP'
8182 typedef struct spug { int drokk; } spug;
8183 int main()
8184 {
8185         const char *foo;
8186         const spug y;
8187 }
8188 EOCP
8189 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8190         val="$define"
8191         echo "Yup, it does."
8192 else
8193         val="$undef"
8194         echo "Nope, it doesn't."
8195 fi
8196 set d_const
8197 eval $setvar
8198
8199 : see if crypt exists
8200 echo " "
8201 if set crypt val -f d_crypt; eval $csym; $val; then
8202         echo 'crypt() found.' >&4
8203         val="$define"
8204         cryptlib=''
8205 else
8206         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8207         if $test -z "$cryptlib"; then
8208                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8209         else
8210                 cryptlib=-lcrypt
8211         fi
8212         if $test -z "$cryptlib"; then
8213                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8214         else
8215                 cryptlib=-lcrypt
8216         fi
8217         if $test -z "$cryptlib"; then
8218                 cryptlib=`./loc libcrypt$_a "" $libpth`
8219         else
8220                 cryptlib=-lcrypt
8221         fi
8222         if $test -z "$cryptlib"; then
8223                 echo 'crypt() NOT found.' >&4
8224                 val="$undef"
8225         else
8226                 val="$define"
8227         fi
8228 fi
8229 set d_crypt
8230 eval $setvar
8231
8232 : get csh whereabouts
8233 case "$csh" in
8234 'csh') val="$undef" ;;
8235 *) val="$define" ;;
8236 esac
8237 set d_csh
8238 eval $setvar
8239 : Respect a hint or command line value for full_csh.
8240 case "$full_csh" in
8241 '') full_csh=$csh ;;
8242 esac
8243
8244 : see if cuserid exists
8245 set cuserid d_cuserid
8246 eval $inlibc
8247
8248 : see if this is a limits.h system
8249 set limits.h i_limits
8250 eval $inhdr
8251
8252 : see if this is a float.h system
8253 set float.h i_float
8254 eval $inhdr
8255
8256 : See if number of significant digits in a double precision number is known
8257 echo " "
8258 $cat >dbl_dig.c <<EOM
8259 #$i_limits I_LIMITS
8260 #$i_float I_FLOAT
8261 #ifdef I_LIMITS
8262 #include <limits.h>
8263 #endif
8264 #ifdef I_FLOAT
8265 #include <float.h>
8266 #endif
8267 #ifdef DBL_DIG
8268 printf("Contains DBL_DIG");
8269 #endif
8270 EOM
8271 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8272 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8273         echo "DBL_DIG found." >&4
8274         val="$define"
8275 else
8276         echo "DBL_DIG NOT found." >&4
8277         val="$undef"
8278 fi
8279 $rm -f dbl_dig.?
8280 set d_dbl_dig
8281 eval $setvar
8282
8283 : see if difftime exists
8284 set difftime d_difftime
8285 eval $inlibc
8286
8287 : see if this is a dirent system
8288 echo " "
8289 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8290         val="$define"
8291         echo "<dirent.h> found." >&4
8292 else
8293         val="$undef"
8294         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8295                 echo "<sys/dir.h> found." >&4
8296                 echo " "
8297         else
8298                 xinc=`./findhdr sys/ndir.h`
8299         fi
8300         echo "<dirent.h> NOT found." >&4
8301 fi
8302 set i_dirent
8303 eval $setvar
8304
8305 : Look for type of directory structure.
8306 echo " "
8307 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8308
8309 case "$direntrytype" in
8310 ''|' ')
8311         case "$i_dirent" in
8312         $define) guess1='struct dirent' ;;
8313         *) guess1='struct direct'  ;;
8314         esac
8315         ;;
8316 *)      guess1="$direntrytype"
8317         ;;
8318 esac
8319
8320 case "$guess1" in
8321 'struct dirent') guess2='struct direct' ;;
8322 *) guess2='struct dirent' ;;
8323 esac
8324                 
8325 if $contains "$guess1" try.c >/dev/null 2>&1; then
8326         direntrytype="$guess1"
8327         echo "Your directory entries are $direntrytype." >&4
8328 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8329         direntrytype="$guess2"
8330         echo "Your directory entries seem to be $direntrytype." >&4
8331 else
8332         echo "I don't recognize your system's directory entries." >&4
8333         rp="What type is used for directory entries on this system?"
8334         dflt="$guess1"
8335         . ./myread
8336         direntrytype="$ans"
8337 fi
8338 $rm -f try.c
8339
8340
8341 : see if the directory entry stores field length
8342 echo " "
8343 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8344 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8345         echo "Good, your directory entry keeps length information in d_namlen." >&4
8346         val="$define"
8347 else
8348         echo "Your directory entry does not know about the d_namlen field." >&4
8349         val="$undef"
8350 fi
8351 set d_dirnamlen
8352 eval $setvar
8353 $rm -f try.c
8354
8355 : see if dlerror exists
8356 xxx_runnm="$runnm"
8357 runnm=false
8358 set dlerror d_dlerror
8359 eval $inlibc
8360 runnm="$xxx_runnm"
8361
8362 : see if dlfcn is available
8363 set dlfcn.h i_dlfcn
8364 eval $inhdr
8365
8366 case "$usedl" in
8367 $define|y|true)
8368         $cat << EOM
8369
8370 On a few systems, the dynamically loaded modules that perl generates and uses
8371 will need a different extension than shared libs. The default will probably
8372 be appropriate.
8373
8374 EOM
8375         case "$dlext" in
8376         '')     dflt="$so" ;;
8377         *)      dflt="$dlext" ;;
8378         esac
8379         rp='What is the extension of dynamically loaded modules'
8380         . ./myread
8381         dlext="$ans"
8382         ;;
8383 *)
8384         dlext="none"
8385         ;;
8386 esac
8387
8388 : Check if dlsym need a leading underscore
8389 echo " "
8390 val="$undef"
8391
8392 case "$dlsrc" in
8393 dl_dlopen.xs)
8394         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8395         $cat >dyna.c <<'EOM'
8396 fred () { }
8397 EOM
8398
8399 $cat >fred.c<<EOM
8400
8401 #include <stdio.h>
8402 #$i_dlfcn I_DLFCN
8403 #ifdef I_DLFCN
8404 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8405 #else
8406 #include <sys/types.h>
8407 #include <nlist.h>
8408 #include <link.h>
8409 #endif
8410
8411 extern int fred() ;
8412
8413 int main()
8414 {
8415     void * handle ;
8416     void * symbol ;
8417 #ifndef RTLD_LAZY
8418     int mode = 1 ;
8419 #else
8420     int mode = RTLD_LAZY ;
8421 #endif
8422     handle = dlopen("./dyna.$dlext", mode) ;
8423     if (handle == NULL) {
8424         printf ("1\n") ;
8425         fflush (stdout) ;
8426         exit(0);
8427     }
8428     symbol = dlsym(handle, "fred") ;
8429     if (symbol == NULL) {
8430         /* try putting a leading underscore */
8431         symbol = dlsym(handle, "_fred") ;
8432         if (symbol == NULL) {
8433             printf ("2\n") ;
8434             fflush (stdout) ;
8435             exit(0);
8436         }
8437         printf ("3\n") ;
8438     }
8439     else
8440         printf ("4\n") ;
8441     fflush (stdout) ;
8442     exit(0);
8443 }
8444 EOM
8445         : Call the object file tmp-dyna.o in case dlext=o.
8446         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8447                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8448                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8449                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8450                 xxx=`./fred`
8451                 case $xxx in
8452                 1)      echo "Test program failed using dlopen." >&4
8453                         echo "Perhaps you should not use dynamic loading." >&4;;
8454                 2)      echo "Test program failed using dlsym." >&4
8455                         echo "Perhaps you should not use dynamic loading." >&4;;
8456                 3)      echo "dlsym needs a leading underscore" >&4
8457                         val="$define" ;;
8458                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8459                 esac
8460         else
8461                 echo "I can't compile and run the test program." >&4
8462                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8463         fi
8464         ;;
8465 esac
8466                 
8467 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8468
8469 set d_dlsymun
8470 eval $setvar
8471
8472 hasproto='varname=$1; func=$2; shift; shift;
8473 while $test $# -ge 2; do
8474         case "$1" in
8475         $define) echo "#include <$2>";;
8476         esac ;
8477     shift 2;
8478 done > try.c;
8479 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8480 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8481         echo "$func() prototype found.";
8482         val="$define";
8483 else
8484         echo "$func() prototype NOT found.";
8485         val="$undef";
8486 fi;
8487 set $varname;
8488 eval $setvar;
8489 $rm -f try.c tryout.c'
8490
8491 : see if prototype for drand48 is available
8492 echo " "
8493 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8494 eval $hasproto
8495
8496 : see if dup2 exists
8497 set dup2 d_dup2
8498 eval $inlibc
8499
8500 : see if eaccess exists
8501 set eaccess d_eaccess
8502 eval $inlibc
8503
8504 : see if endgrent exists
8505 set endgrent d_endgrent
8506 eval $inlibc
8507
8508 : see if endhostent exists
8509 set endhostent d_endhent
8510 eval $inlibc
8511
8512 : see if endnetent exists
8513 set endnetent d_endnent
8514 eval $inlibc
8515
8516 : see if endprotoent exists
8517 set endprotoent d_endpent
8518 eval $inlibc
8519
8520 : see if endpwent exists
8521 set endpwent d_endpwent
8522 eval $inlibc
8523
8524 : see if endservent exists
8525 set endservent d_endsent
8526 eval $inlibc
8527
8528 : see if endspent exists
8529 set endspent d_endspent
8530 eval $inlibc
8531
8532 : Locate the flags for 'open()'
8533 echo " "
8534 $cat >open3.c <<'EOCP'
8535 #include <sys/types.h>
8536 #ifdef I_FCNTL
8537 #include <fcntl.h>
8538 #endif
8539 #ifdef I_SYS_FILE
8540 #include <sys/file.h>
8541 #endif
8542 int main() {
8543         if(O_RDONLY);
8544 #ifdef O_TRUNC
8545         exit(0);
8546 #else
8547         exit(1);
8548 #endif
8549 }
8550 EOCP
8551 : check sys/file.h first to get FREAD on Sun
8552 if $test `./findhdr sys/file.h` && \
8553                 set open3 -DI_SYS_FILE && eval $compile; then
8554         h_sysfile=true;
8555         echo "<sys/file.h> defines the O_* constants..." >&4
8556         if ./open3; then
8557                 echo "and you have the 3 argument form of open()." >&4
8558                 val="$define"
8559         else
8560                 echo "but not the 3 argument form of open().  Oh, well." >&4
8561                 val="$undef"
8562         fi
8563 elif $test `./findhdr fcntl.h` && \
8564                 set open3 -DI_FCNTL && eval $compile; then
8565         h_fcntl=true;
8566         echo "<fcntl.h> defines the O_* constants..." >&4
8567         if ./open3; then
8568                 echo "and you have the 3 argument form of open()." >&4
8569                 val="$define"
8570         else
8571                 echo "but not the 3 argument form of open().  Oh, well." >&4
8572                 val="$undef"
8573         fi
8574 else
8575         val="$undef"
8576         echo "I can't find the O_* constant definitions!  You got problems." >&4
8577 fi
8578 set d_open3
8579 eval $setvar
8580 $rm -f open3*
8581
8582 : see which of string.h or strings.h is needed
8583 echo " "
8584 strings=`./findhdr string.h`
8585 if $test "$strings" && $test -r "$strings"; then
8586         echo "Using <string.h> instead of <strings.h>." >&4
8587         val="$define"
8588 else
8589         val="$undef"
8590         strings=`./findhdr strings.h`
8591         if $test "$strings" && $test -r "$strings"; then
8592                 echo "Using <strings.h> instead of <string.h>." >&4
8593         else
8594                 echo "No string header found -- You'll surely have problems." >&4
8595         fi
8596 fi
8597 set i_string
8598 eval $setvar
8599 case "$i_string" in
8600 "$undef") strings=`./findhdr strings.h`;;
8601 *)        strings=`./findhdr string.h`;;
8602 esac
8603
8604 : check for non-blocking I/O stuff
8605 case "$h_sysfile" in
8606 true) echo "#include <sys/file.h>" > head.c;;
8607 *)
8608         case "$h_fcntl" in
8609         true) echo "#include <fcntl.h>" > head.c;;
8610         *) echo "#include <sys/fcntl.h>" > head.c;;
8611         esac
8612         ;;
8613 esac
8614 echo " "
8615 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8616 case "$o_nonblock" in
8617 '')
8618         $cat head.c > try.c
8619         $cat >>try.c <<'EOCP'
8620 #include <stdio.h>
8621 int main() {
8622 #ifdef O_NONBLOCK
8623         printf("O_NONBLOCK\n");
8624         exit(0);
8625 #endif
8626 #ifdef O_NDELAY
8627         printf("O_NDELAY\n");
8628         exit(0);
8629 #endif
8630 #ifdef FNDELAY
8631         printf("FNDELAY\n");
8632         exit(0);
8633 #endif
8634         exit(0);
8635 }
8636 EOCP
8637         set try
8638         if eval $compile_ok; then
8639                 o_nonblock=`./try`
8640                 case "$o_nonblock" in
8641                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8642                 *) echo "Seems like we can use $o_nonblock.";;
8643                 esac
8644         else
8645                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8646         fi
8647         ;;
8648 *) echo "Using $hint value $o_nonblock.";;
8649 esac
8650 $rm -f try try.* .out core
8651
8652 echo " "
8653 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8654 case "$eagain" in
8655 '')
8656         $cat head.c > try.c
8657         $cat >>try.c <<EOCP
8658 #include <errno.h>
8659 #include <sys/types.h>
8660 #include <signal.h>
8661 #include <stdio.h> 
8662 #define MY_O_NONBLOCK $o_nonblock
8663 #ifndef errno  /* XXX need better Configure test */
8664 extern int errno;
8665 #endif
8666 #$i_unistd I_UNISTD
8667 #ifdef I_UNISTD
8668 #include <unistd.h>
8669 #endif
8670 #$i_string I_STRING
8671 #ifdef I_STRING
8672 #include <string.h>
8673 #else
8674 #include <strings.h>
8675 #endif
8676 $signal_t blech(x) int x; { exit(3); }
8677 EOCP
8678         $cat >> try.c <<'EOCP'
8679 int main()
8680 {
8681         int pd[2];
8682         int pu[2];
8683         char buf[1];
8684         char string[100];
8685
8686         pipe(pd);       /* Down: child -> parent */
8687         pipe(pu);       /* Up: parent -> child */
8688         if (0 != fork()) {
8689                 int ret;
8690                 close(pd[1]);   /* Parent reads from pd[0] */
8691                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8692                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8693                         exit(1);
8694                 signal(SIGALRM, blech);
8695                 alarm(5);
8696                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8697                         exit(2);
8698                 sprintf(string, "%d\n", ret);
8699                 write(2, string, strlen(string));
8700                 alarm(0);
8701 #ifdef EAGAIN
8702                 if (errno == EAGAIN) {
8703                         printf("EAGAIN\n");
8704                         goto ok;
8705                 }
8706 #endif
8707 #ifdef EWOULDBLOCK
8708                 if (errno == EWOULDBLOCK)
8709                         printf("EWOULDBLOCK\n");
8710 #endif
8711         ok:
8712                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8713                 sleep(2);                               /* Give it time to close our pipe */
8714                 alarm(5);
8715                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8716                 alarm(0);
8717                 sprintf(string, "%d\n", ret);
8718                 write(3, string, strlen(string));
8719                 exit(0);
8720         }
8721
8722         close(pd[0]);                   /* We write to pd[1] */
8723         close(pu[1]);                   /* We read from pu[0] */
8724         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8725         close(pd[1]);                   /* Pipe pd is now fully closed! */
8726         exit(0);                                /* Bye bye, thank you for playing! */
8727 }
8728 EOCP
8729         set try
8730         if eval $compile_ok; then
8731                 echo "$startsh" >mtry
8732                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8733                 chmod +x mtry
8734                 ./mtry >/dev/null 2>&1
8735                 case $? in
8736                 0) eagain=`$cat try.out`;;
8737                 1) echo "Could not perform non-blocking setting!";;
8738                 2) echo "I did a successful read() for something that was not there!";;
8739                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8740                 *) echo "Something terribly wrong happened during testing.";;
8741                 esac
8742                 rd_nodata=`$cat try.ret`
8743                 echo "A read() system call with no data present returns $rd_nodata."
8744                 case "$rd_nodata" in
8745                 0|-1) ;;
8746                 *)
8747                         echo "(That's peculiar, fixing that to be -1.)"
8748                         rd_nodata=-1
8749                         ;;
8750                 esac
8751                 case "$eagain" in
8752                 '')
8753                         echo "Forcing errno EAGAIN on read() with no data available."
8754                         eagain=EAGAIN
8755                         ;;
8756                 *)
8757                         echo "Your read() sets errno to $eagain when no data is available."
8758                         ;;
8759                 esac
8760                 status=`$cat try.err`
8761                 case "$status" in
8762                 0) echo "And it correctly returns 0 to signal EOF.";;
8763                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8764                 *) echo "However, your read() returns '$status' on EOF??";;
8765                 esac
8766                 val="$define"
8767                 if test "$status" = "$rd_nodata"; then
8768                         echo "WARNING: you can't distinguish between EOF and no data!"
8769                         val="$undef"
8770                 fi
8771         else
8772                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8773                 eagain=EAGAIN
8774         fi
8775         set d_eofnblk
8776         eval $setvar
8777         ;;
8778 *)
8779         echo "Using $hint value $eagain."
8780         echo "Your read() returns $rd_nodata when no data is present."
8781         case "$d_eofnblk" in
8782         "$define") echo "And you can see EOF because read() returns 0.";;
8783         "$undef") echo "But you can't see EOF status from read() returned value.";;
8784         *)
8785                 echo "(Assuming you can't see EOF status from read anyway.)"
8786                 d_eofnblk=$undef
8787                 ;;
8788         esac
8789         ;;
8790 esac
8791 $rm -f try try.* .out core head.c mtry
8792
8793 : see if fchmod exists
8794 set fchmod d_fchmod
8795 eval $inlibc
8796
8797 : see if fchown exists
8798 set fchown d_fchown
8799 eval $inlibc
8800
8801 : see if this is an fcntl system
8802 set fcntl d_fcntl
8803 eval $inlibc
8804
8805 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8806 while $test $# -ge 2; do
8807         case "$1" in
8808         $define) echo "#include <$2>";;
8809         esac ;
8810     shift 2;
8811 done > try.c;
8812 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8813 set try;
8814 if eval $compile; then
8815         val="$define";
8816 else
8817         val="$undef";
8818 fi;
8819 set $varname;
8820 eval $setvar;
8821 $rm -f try.c try.o'
8822
8823 socketlib=''
8824 sockethdr=''
8825 : see whether socket exists
8826 echo " "
8827 $echo $n "Hmm... $c" >&4
8828 if set socket val -f d_socket; eval $csym; $val; then
8829         echo "Looks like you have Berkeley networking support." >&4
8830         d_socket="$define"
8831         if set setsockopt val -f; eval $csym; $val; then
8832                 d_oldsock="$undef"
8833         else
8834                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8835                 d_oldsock="$define"
8836         fi
8837 else
8838         if $contains socklib libc.list >/dev/null 2>&1; then
8839                 echo "Looks like you have Berkeley networking support." >&4
8840                 d_socket="$define"
8841                 : we will have to assume that it supports the 4.2 BSD interface
8842                 d_oldsock="$undef"
8843         else
8844                 echo "You don't have Berkeley networking in libc$_a..." >&4
8845                 if test "X$d_socket" = "X$define"; then
8846                    echo "...but you seem to believe that you have sockets." >&4
8847                 else
8848                         for net in net socket
8849                         do
8850                                 if test -f /usr/lib/lib$net$_a; then
8851                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8852                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8853                                         if $contains socket libc.list >/dev/null 2>&1; then
8854                                                 d_socket="$define"
8855                                                 socketlib="-l$net"
8856                                                 case "$net" in
8857                                                 net)
8858                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8859                                                         sockethdr="-I/usr/netinclude"
8860                                                         ;;
8861                                                 esac
8862                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8863                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8864                                                         d_oldsock="$undef"
8865                                                 else
8866                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8867                                                         d_oldsock="$define"
8868                                                 fi
8869                                                 break
8870                                         fi
8871                                 fi
8872                         done
8873                         if test "X$d_socket" != "X$define"; then
8874                            echo "or anywhere else I see." >&4
8875                            d_socket="$undef"
8876                            d_oldsock="$undef"
8877                         fi
8878                 fi
8879         fi
8880 fi
8881
8882 : see if socketpair exists
8883 set socketpair d_sockpair
8884 eval $inlibc
8885
8886
8887 echo " "
8888 echo "Checking the availability of certain socket constants..." >& 4
8889 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8890         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8891         $cat >try.c <<EOF
8892 #include <sys/types.h>
8893 #include <sys/socket.h>
8894 int main() {
8895     int i = $ENUM;
8896 }
8897 EOF
8898         val="$undef"
8899         set try; if eval $compile; then
8900                 val="$define"
8901         fi
8902         set d_${enum}; eval $setvar
8903         $rm -f try.c try
8904 done
8905
8906 : see if sys/select.h has to be included
8907 set sys/select.h i_sysselct
8908 eval $inhdr
8909
8910 : see if we should include time.h, sys/time.h, or both
8911 echo " "
8912 if test "X$timeincl" = X; then
8913         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8914         $echo $n "I'm now running the test program...$c"
8915         $cat >try.c <<'EOCP'
8916 #include <sys/types.h>
8917 #ifdef I_TIME
8918 #include <time.h>
8919 #endif
8920 #ifdef I_SYSTIME
8921 #ifdef SYSTIMEKERNEL
8922 #define KERNEL
8923 #endif
8924 #include <sys/time.h>
8925 #endif
8926 #ifdef I_SYSSELECT
8927 #include <sys/select.h>
8928 #endif
8929 int main()
8930 {
8931         struct tm foo;
8932 #ifdef S_TIMEVAL
8933         struct timeval bar;
8934 #endif
8935 #ifdef S_TIMEZONE
8936         struct timezone tzp;
8937 #endif
8938         if (foo.tm_sec == foo.tm_sec)
8939                 exit(0);
8940 #ifdef S_TIMEVAL
8941         if (bar.tv_sec == bar.tv_sec)
8942                 exit(0);
8943 #endif
8944         exit(1);
8945 }
8946 EOCP
8947         flags=''
8948         for s_timezone in '-DS_TIMEZONE' ''; do
8949         sysselect=''
8950         for s_timeval in '-DS_TIMEVAL' ''; do
8951         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8952         for i_time in '' '-DI_TIME'; do
8953         for i_systime in '-DI_SYSTIME' ''; do
8954                 case "$flags" in
8955                 '') $echo $n ".$c"
8956                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8957                         if eval $compile; then
8958                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8959                                 shift
8960                                 flags="$*"
8961                                 echo " "
8962                                 $echo $n "Succeeded with $flags$c"
8963                         fi
8964                         ;;
8965                 esac
8966         done
8967         done
8968         done
8969         done
8970         done
8971         timeincl=''
8972         echo " "
8973         case "$flags" in
8974         *SYSTIMEKERNEL*) i_systimek="$define"
8975                 timeincl=`./findhdr sys/time.h`
8976                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8977         *) i_systimek="$undef";;
8978         esac
8979         case "$flags" in
8980         *I_TIME*) i_time="$define"
8981                 timeincl=`./findhdr time.h`" $timeincl"
8982                 echo "We'll include <time.h>." >&4;;
8983         *) i_time="$undef";;
8984         esac
8985         case "$flags" in
8986         *I_SYSTIME*) i_systime="$define"
8987                 timeincl=`./findhdr sys/time.h`" $timeincl"
8988                 echo "We'll include <sys/time.h>." >&4;;
8989         *) i_systime="$undef";;
8990         esac
8991         $rm -f try.c try
8992 fi
8993
8994 : check for fd_set items
8995 $cat <<EOM
8996
8997 Checking to see how well your C compiler handles fd_set and friends ...
8998 EOM
8999 $cat >fd_set.c <<EOCP
9000 #$i_systime I_SYS_TIME
9001 #$i_sysselct I_SYS_SELECT
9002 #$d_socket HAS_SOCKET
9003 #include <sys/types.h>
9004 #ifdef HAS_SOCKET
9005 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9006 #endif
9007 #ifdef I_SYS_TIME
9008 #include <sys/time.h>
9009 #endif
9010 #ifdef I_SYS_SELECT
9011 #include <sys/select.h>
9012 #endif
9013 int main() {
9014         fd_set fds;
9015
9016 #ifdef TRYBITS
9017         if(fds.fds_bits);
9018 #endif
9019
9020 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9021         exit(0);
9022 #else
9023         exit(1);
9024 #endif
9025 }
9026 EOCP
9027 set fd_set -DTRYBITS
9028 if eval $compile; then
9029         d_fds_bits="$define"
9030         d_fd_set="$define"
9031         echo "Well, your system knows about the normal fd_set typedef..." >&4
9032         if ./fd_set; then
9033                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9034                 d_fd_macros="$define"
9035         else
9036                 $cat >&4 <<'EOM'
9037 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9038 EOM
9039                 d_fd_macros="$undef"
9040         fi
9041 else
9042         $cat <<'EOM'
9043 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9044 EOM
9045         set fd_set
9046         if eval $compile; then
9047                 d_fds_bits="$undef"
9048                 d_fd_set="$define"
9049                 echo "Well, your system has some sort of fd_set available..." >&4
9050                 if ./fd_set; then
9051                         echo "and you have the normal fd_set macros." >&4
9052                         d_fd_macros="$define"
9053                 else
9054                         $cat <<'EOM'
9055 but not the normal fd_set macros!  Gross!  More work for me...
9056 EOM
9057                         d_fd_macros="$undef"
9058                 fi
9059         else
9060         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9061                 d_fd_set="$undef"
9062                 d_fds_bits="$undef"
9063                 d_fd_macros="$undef"
9064         fi
9065 fi
9066 $rm -f fd_set*
9067
9068 : see if fgetpos exists
9069 set fgetpos d_fgetpos
9070 eval $inlibc
9071
9072 : see if flock exists
9073 set flock d_flock
9074 eval $inlibc
9075
9076 : see if fork exists
9077 set fork d_fork
9078 eval $inlibc
9079
9080 : see if pathconf exists
9081 set pathconf d_pathconf
9082 eval $inlibc
9083
9084 : see if fpathconf exists
9085 set fpathconf d_fpathconf
9086 eval $inlibc
9087
9088
9089 : check for fpos64_t
9090 echo " "
9091 echo "Checking to see if you have fpos64_t..." >&4
9092 $cat >try.c <<EOCP
9093 #include <stdio.h>
9094 int main() { fpos64_t x = 7; }
9095 EOCP
9096 set try
9097 if eval $compile; then
9098         val="$define"
9099         echo "You have fpos64_t."
9100 else
9101         val="$undef"
9102         echo "You do not have fpos64_t."
9103         case "$fpossize" in
9104         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9105         esac
9106 fi
9107 $rm -f try.* try
9108 set d_fpos64_t
9109 eval $setvar
9110
9111 : see if frexpl exists
9112 set frexpl d_frexpl
9113 eval $inlibc
9114
9115 hasstruct='varname=$1; struct=$2; shift; shift;
9116 while $test $# -ge 2; do
9117         case "$1" in
9118         $define) echo "#include <$2>";;
9119         esac ;
9120     shift 2;
9121 done > try.c;
9122 echo "int main () { struct $struct foo; }" >> try.c;
9123 set try;
9124 if eval $compile; then
9125         val="$define";
9126 else
9127         val="$undef";
9128 fi;
9129 set $varname;
9130 eval $setvar;
9131 $rm -f try.c try.o'
9132
9133 : see if this is a sys/param system
9134 set sys/param.h i_sysparam
9135 eval $inhdr
9136
9137 : see if this is a sys/mount.h system
9138 set sys/mount.h i_sysmount
9139 eval $inhdr
9140
9141 : see if sys/types.h has to be included
9142 set sys/types.h i_systypes
9143 eval $inhdr
9144
9145
9146 echo " "
9147 echo "Checking to see if your system supports struct fs_data..." >&4
9148 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9149 eval $hasstruct
9150 case "$d_fs_data_s" in
9151 "$define")      echo "Yes, it does."   ;;
9152 *)              echo "No, it doesn't." ;;
9153 esac
9154
9155 : see if fseeko exists
9156 set fseeko d_fseeko
9157 eval $inlibc
9158 case "$longsize" in
9159 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9160 esac
9161
9162 : see if fsetpos exists
9163 set fsetpos d_fsetpos
9164 eval $inlibc
9165
9166
9167 : see if fstatfs exists
9168 set fstatfs d_fstatfs
9169 eval $inlibc
9170
9171
9172 : see if statvfs exists
9173 set statvfs d_statvfs
9174 eval $inlibc
9175
9176 : see if fstatvfs exists
9177 set fstatvfs d_fstatvfs
9178 eval $inlibc
9179
9180
9181 : see if ftello exists
9182 set ftello d_ftello
9183 eval $inlibc
9184 case "$longsize" in
9185 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9186 esac
9187
9188 : see if getcwd exists
9189 set getcwd d_getcwd
9190 eval $inlibc
9191
9192
9193 : see if getfsstat exists
9194 set getfsstat d_getfsstat
9195 eval $inlibc
9196
9197 : see if getgrent exists
9198 set getgrent d_getgrent
9199 eval $inlibc
9200
9201 : see if gethostbyaddr exists
9202 set gethostbyaddr d_gethbyaddr
9203 eval $inlibc
9204
9205 : see if gethostbyname exists
9206 set gethostbyname d_gethbyname
9207 eval $inlibc
9208
9209 : see if gethostent exists
9210 set gethostent d_gethent
9211 eval $inlibc
9212
9213 : see how we will look up host name
9214 echo " "
9215 call=''
9216 if set gethostname val -f d_gethname; eval $csym; $val; then
9217         echo 'gethostname() found.' >&4
9218         d_gethname="$define"
9219         call=gethostname
9220 fi
9221 if set uname val -f d_uname; eval $csym; $val; then
9222         if ./xenix; then
9223                 $cat <<'EOM'
9224 uname() was found, but you're running xenix, and older versions of xenix
9225 have a broken uname(). If you don't really know whether your xenix is old
9226 enough to have a broken system call, use the default answer.
9227
9228 EOM
9229                 dflt=y
9230                 case "$d_uname" in
9231                 "$define") dflt=n;;
9232                 esac
9233                 rp='Is your uname() broken?'
9234                 . ./myread
9235                 case "$ans" in
9236                 n*) d_uname="$define"; call=uname;;
9237                 esac
9238         else
9239                 echo 'uname() found.' >&4
9240                 d_uname="$define"
9241                 case "$call" in
9242                 '') call=uname ;;
9243                 esac
9244         fi
9245 fi
9246 case "$d_gethname" in
9247 '') d_gethname="$undef";;
9248 esac
9249 case "$d_uname" in
9250 '') d_uname="$undef";;
9251 esac
9252 case "$d_uname$d_gethname" in
9253 *define*)
9254         dflt=n
9255         cat <<EOM
9256  
9257 Every now and then someone has a $call() that lies about the hostname
9258 but can't be fixed for political or economic reasons.  If you wish, I can
9259 pretend $call() isn't there and maybe compute hostname at run-time
9260 thanks to the '$phostname' command.
9261
9262 EOM
9263         rp="Shall I ignore $call() from now on?"
9264         . ./myread
9265         case "$ans" in
9266         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9267         esac;;
9268 esac
9269 case "$phostname" in
9270 '') aphostname='';;
9271 *) case "$aphostname" in
9272         /*) ;;
9273         *) set X $phostname
9274                 shift
9275                 file=$1
9276                 shift
9277                 file=`./loc $file $file $pth`
9278                 aphostname=`echo $file $*`
9279                 ;;
9280         esac
9281         ;;
9282 esac
9283 case "$d_uname$d_gethname" in
9284 *define*) ;;
9285 *)
9286         case "$phostname" in
9287         '')
9288                 echo "There will be no way for $package to get your hostname." >&4;;
9289         *)
9290         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9291                 ;;
9292         esac;;
9293 esac
9294 case "$d_phostname" in
9295 '') d_phostname="$undef";;
9296 esac
9297
9298 : see if this is a netdb.h system
9299 set netdb.h i_netdb
9300 eval $inhdr
9301
9302 : see if prototypes for various gethostxxx netdb.h functions are available
9303 echo " "
9304 set d_gethostprotos gethostent $i_netdb netdb.h
9305 eval $hasproto
9306
9307 : see if getlogin exists
9308 set getlogin d_getlogin
9309 eval $inlibc
9310
9311 : see if getmnt exists
9312 set getmnt d_getmnt
9313 eval $inlibc
9314
9315 : see if getmntent exists
9316 set getmntent d_getmntent
9317 eval $inlibc
9318
9319 : see if getnetbyaddr exists
9320 set getnetbyaddr d_getnbyaddr
9321 eval $inlibc
9322
9323 : see if getnetbyname exists
9324 set getnetbyname d_getnbyname
9325 eval $inlibc
9326
9327 : see if getnetent exists
9328 set getnetent d_getnent
9329 eval $inlibc
9330
9331 : see if prototypes for various getnetxxx netdb.h functions are available
9332 echo " "
9333 set d_getnetprotos getnetent $i_netdb netdb.h
9334 eval $hasproto
9335
9336
9337 : see if getprotobyname exists
9338 set getprotobyname d_getpbyname
9339 eval $inlibc
9340
9341 : see if getprotobynumber exists
9342 set getprotobynumber d_getpbynumber
9343 eval $inlibc
9344
9345 : see if getprotoent exists
9346 set getprotoent d_getpent
9347 eval $inlibc
9348
9349 : see if getpgid exists
9350 set getpgid d_getpgid
9351 eval $inlibc
9352
9353 : see if getpgrp2 exists
9354 set getpgrp2 d_getpgrp2
9355 eval $inlibc
9356
9357 : see if getppid exists
9358 set getppid d_getppid
9359 eval $inlibc
9360
9361 : see if getpriority exists
9362 set getpriority d_getprior
9363 eval $inlibc
9364
9365 : see if prototypes for various getprotoxxx netdb.h functions are available
9366 echo " "
9367 set d_getprotoprotos getprotoent $i_netdb netdb.h
9368 eval $hasproto
9369
9370 : see if getpwent exists
9371 set getpwent d_getpwent
9372 eval $inlibc
9373
9374
9375 : see if getservbyname exists
9376 set getservbyname d_getsbyname
9377 eval $inlibc
9378
9379 : see if getservbyport exists
9380 set getservbyport d_getsbyport
9381 eval $inlibc
9382
9383 : see if getservent exists
9384 set getservent d_getsent
9385 eval $inlibc
9386
9387 : see if prototypes for various getservxxx netdb.h functions are available
9388 echo " "
9389 set d_getservprotos getservent $i_netdb netdb.h
9390 eval $hasproto
9391
9392 : see if getspent exists
9393 set getspent d_getspent
9394 eval $inlibc
9395
9396 : see if getspnam exists
9397 set getspnam d_getspnam
9398 eval $inlibc
9399
9400 : see if gettimeofday or ftime exists
9401 set gettimeofday d_gettimeod
9402 eval $inlibc
9403 case "$d_gettimeod" in
9404 "$undef")
9405         set ftime d_ftime 
9406         eval $inlibc
9407         ;;
9408 *)
9409         val="$undef"; set d_ftime; eval $setvar
9410         ;;
9411 esac
9412 case "$d_gettimeod$d_ftime" in
9413 "$undef$undef")
9414         echo " "
9415         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9416         ;;
9417 esac
9418
9419 : see if this is an grp system
9420 set grp.h i_grp
9421 eval $inhdr
9422
9423 case "$i_grp" in
9424 $define)
9425         xxx=`./findhdr grp.h`
9426         $cppstdin $cppflags $cppminus < $xxx >$$.h
9427
9428         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9429                 val="$define"
9430         else
9431                 val="$undef"
9432         fi
9433         set d_grpasswd
9434         eval $setvar
9435
9436         $rm -f $$.h
9437         ;;
9438 *)
9439         val="$undef";
9440         set d_grpasswd; eval $setvar
9441         ;;
9442 esac
9443
9444 : see if hasmntopt exists
9445 set hasmntopt d_hasmntopt
9446 eval $inlibc
9447
9448 : see if this is a netinet/in.h or sys/in.h system
9449 set netinet/in.h i_niin sys/in.h i_sysin
9450 eval $inhdr
9451
9452 : see if arpa/inet.h has to be included
9453 set arpa/inet.h i_arpainet
9454 eval $inhdr
9455
9456 : see if htonl --and friends-- exists
9457 val=''
9458 set htonl val
9459 eval $inlibc
9460
9461 : Maybe they are macros.
9462 case "$val" in
9463 $undef)
9464         $cat >htonl.c <<EOM
9465 #include <stdio.h>
9466 #include <sys/types.h>
9467 #$i_niin I_NETINET_IN
9468 #$i_sysin I_SYS_IN
9469 #$i_arpainet I_ARPA_INET
9470 #ifdef I_NETINET_IN
9471 #include <netinet/in.h>
9472 #endif
9473 #ifdef I_SYS_IN
9474 #include <sys/in.h>
9475 #endif
9476 #ifdef I_ARPA_INET
9477 #include <arpa/inet.h>
9478 #endif
9479 #ifdef htonl
9480 printf("Defined as a macro.");
9481 #endif
9482 EOM
9483         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9484         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9485                 val="$define"
9486                 echo "But it seems to be defined as a macro." >&4
9487         fi
9488         $rm -f htonl.?
9489         ;;
9490 esac
9491 set d_htonl
9492 eval $setvar
9493
9494 : see if iconv exists
9495 set iconv d_iconv
9496 eval $inlibc
9497
9498 : index or strchr
9499 echo " "
9500 if set index val -f; eval $csym; $val; then
9501         if set strchr val -f d_strchr; eval $csym; $val; then
9502                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9503                         val="$define"
9504                         vali="$undef"
9505                         echo "strchr() found." >&4
9506                 else
9507                         val="$undef"
9508                         vali="$define"
9509                         echo "index() found." >&4
9510                 fi
9511         else
9512                 val="$undef"
9513                 vali="$define"
9514                 echo "index() found." >&4
9515         fi
9516 else
9517         if set strchr val -f d_strchr; eval $csym; $val; then
9518                 val="$define"
9519                 vali="$undef"
9520                 echo "strchr() found." >&4
9521         else
9522                 echo "No index() or strchr() found!" >&4
9523                 val="$undef"
9524                 vali="$undef"
9525         fi
9526 fi
9527 set d_strchr; eval $setvar
9528 val="$vali"
9529 set d_index; eval $setvar
9530
9531 : check whether inet_aton exists
9532 set inet_aton d_inetaton
9533 eval $inlibc
9534
9535 : see if inttypes.h is available
9536 : we want a real compile instead of Inhdr because some systems
9537 : have an inttypes.h which includes non-existent headers
9538 echo " "
9539 $cat >try.c <<EOCP
9540 #include <inttypes.h>
9541 int main() {
9542         static int32_t foo32 = 0x12345678;
9543 }
9544 EOCP
9545 set try
9546 if eval $compile; then
9547         echo "<inttypes.h> found." >&4
9548         val="$define"
9549 else
9550         echo "<inttypes.h> NOT found." >&4
9551         val="$undef"
9552 fi
9553 $rm -f try.c try
9554 set i_inttypes
9555 eval $setvar
9556
9557 : check for int64_t
9558 echo " "
9559 echo "Checking to see if you have int64_t..." >&4
9560 $cat >try.c <<EOCP
9561 #include <sys/types.h>
9562 #$i_inttypes I_INTTYPES
9563 #ifdef I_INTTYPES
9564 #include <inttypes.h>
9565 #endif
9566 int main() { int64_t x = 7; }
9567 EOCP
9568 set try
9569 if eval $compile; then
9570         val="$define"
9571         echo "You have int64_t."
9572 else
9573         val="$undef"
9574         echo "You do not have int64_t."
9575 fi
9576 $rm -f try try.*
9577 set d_int64_t
9578 eval $setvar
9579
9580 : Look for isascii
9581 echo " "
9582 $cat >isascii.c <<'EOCP'
9583 #include <stdio.h>
9584 #include <ctype.h>
9585 int main() {
9586         int c = 'A';
9587         if (isascii(c))
9588                 exit(0);
9589         else
9590                 exit(1);
9591 }
9592 EOCP
9593 set isascii
9594 if eval $compile; then
9595         echo "isascii() found." >&4
9596         val="$define"
9597 else
9598         echo "isascii() NOT found." >&4
9599         val="$undef"
9600 fi
9601 set d_isascii
9602 eval $setvar
9603 $rm -f isascii*
9604
9605 : see if isnan exists
9606 set isnan d_isnan
9607 eval $inlibc
9608
9609 : see if isnanl exists
9610 set isnanl d_isnanl
9611 eval $inlibc
9612
9613 : see if killpg exists
9614 set killpg d_killpg
9615 eval $inlibc
9616
9617 : see if lchown exists
9618 echo " "
9619 $cat > try.c <<'EOCP'
9620 /* System header to define __stub macros and hopefully few prototypes,
9621     which can conflict with char lchown(); below.  */
9622 #include <assert.h>
9623 /* Override any gcc2 internal prototype to avoid an error.  */
9624 /* We use char because int might match the return type of a gcc2
9625    builtin and then its argument prototype would still apply.  */
9626 char lchown();
9627 int main() {
9628     /*  The GNU C library defines this for functions which it implements
9629         to always fail with ENOSYS.  Some functions are actually named
9630         something starting with __ and the normal name is an alias.  */
9631 #if defined (__stub_lchown) || defined (__stub___lchown)
9632 choke me
9633 #else
9634 lchown();
9635 #endif
9636 ; return 0; }
9637 EOCP
9638 set try
9639 if eval $compile; then
9640     $echo "lchown() found." >&4
9641     val="$define"
9642 else
9643     $echo "lchown() NOT found." >&4
9644     val="$undef"
9645 fi
9646 set d_lchown
9647 eval $setvar
9648
9649 : See if number of significant digits in a double precision number is known
9650 echo " "
9651 $cat >ldbl_dig.c <<EOM
9652 #$i_limits I_LIMITS
9653 #$i_float I_FLOAT
9654 #ifdef I_LIMITS
9655 #include <limits.h>
9656 #endif
9657 #ifdef I_FLOAT
9658 #include <float.h>
9659 #endif
9660 #ifdef LDBL_DIG
9661 printf("Contains LDBL_DIG");
9662 #endif
9663 EOM
9664 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9665 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9666         echo "LDBL_DIG found." >&4
9667         val="$define"
9668 else
9669         echo "LDBL_DIG NOT found." >&4
9670         val="$undef"
9671 fi
9672 $rm -f ldbl_dig.?
9673 set d_ldbl_dig
9674 eval $setvar
9675
9676 : see if link exists
9677 set link d_link
9678 eval $inlibc
9679
9680 : see if localeconv exists
9681 set localeconv d_locconv
9682 eval $inlibc
9683
9684 : see if lockf exists
9685 set lockf d_lockf
9686 eval $inlibc
9687
9688 : check for long long
9689 echo " "
9690 echo "Checking to see if you have long long..." >&4
9691 echo 'int main() { long long x = 7; return 0; }' > try.c
9692 set try
9693 if eval $compile; then
9694         val="$define"
9695         echo "You have have long long."
9696 else
9697         val="$undef"
9698         echo "You do not have long long."
9699 fi
9700 $rm try.*
9701 set d_longlong
9702 eval $setvar
9703
9704 : check for length of long long
9705 case "${d_longlong}${longlongsize}" in
9706 $define)
9707         echo " "
9708         echo "Checking to see how big your long longs are..." >&4
9709         $cat >try.c <<'EOCP'
9710 #include <stdio.h>
9711 int main()
9712 {
9713     printf("%d\n", (int)sizeof(long long));
9714     return(0);
9715 }
9716 EOCP
9717         set try
9718         if eval $compile_ok; then
9719                 longlongsize=`./try$exe_ext`
9720                 echo "Your long longs are $longlongsize bytes long."
9721         else
9722                 dflt='8'
9723                 echo " "
9724                 echo "(I can't seem to compile the test program.  Guessing...)"
9725                 rp="What is the size of a long long (in bytes)?"
9726                 . ./myread
9727                 longlongsize="$ans"
9728         fi
9729         if $test "X$longsize" = "X$longlongsize"; then
9730                 echo "(That isn't any different from an ordinary long.)"
9731         fi      
9732         ;;
9733 esac
9734 $rm -f try.* try
9735
9736 : see if prototype for lseek is available
9737 echo " "
9738 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9739 eval $hasproto
9740
9741 : see if lstat exists
9742 set lstat d_lstat
9743 eval $inlibc
9744
9745 : see if madvise exists
9746 set madvise d_madvise
9747 eval $inlibc
9748
9749 : see if mblen exists
9750 set mblen d_mblen
9751 eval $inlibc
9752
9753 : see if mbstowcs exists
9754 set mbstowcs d_mbstowcs
9755 eval $inlibc
9756
9757 : see if mbtowc exists
9758 set mbtowc d_mbtowc
9759 eval $inlibc
9760
9761 : see if memchr exists
9762 set memchr d_memchr
9763 eval $inlibc
9764
9765 : see if memcmp exists
9766 set memcmp d_memcmp
9767 eval $inlibc
9768
9769 : see if memcpy exists
9770 set memcpy d_memcpy
9771 eval $inlibc
9772
9773 : see if memmove exists
9774 set memmove d_memmove
9775 eval $inlibc
9776
9777 : see if memset exists
9778 set memset d_memset
9779 eval $inlibc
9780
9781 : see if mkdir exists
9782 set mkdir d_mkdir
9783 eval $inlibc
9784
9785 : see if mkdtemp exists
9786 set mkdtemp d_mkdtemp
9787 eval $inlibc
9788
9789 : see if mkfifo exists
9790 set mkfifo d_mkfifo
9791 eval $inlibc
9792
9793 : see if mkstemp exists
9794 set mkstemp d_mkstemp
9795 eval $inlibc
9796
9797 : see if mkstemps exists
9798 set mkstemps d_mkstemps
9799 eval $inlibc
9800
9801 : see if mktime exists
9802 set mktime d_mktime
9803 eval $inlibc
9804
9805 : see if this is a sys/mman.h system
9806 set sys/mman.h i_sysmman
9807 eval $inhdr
9808
9809 : see if mmap exists
9810 set mmap d_mmap
9811 eval $inlibc
9812 : see what shmat returns
9813 : default to something harmless
9814 mmaptype='void *'
9815 case "$i_sysmman$d_mmap" in
9816 "$define$define")
9817         $cat >mmap.c <<'END'
9818 #include <sys/mman.h>
9819 void *mmap();
9820 END
9821         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9822                 mmaptype='void *'
9823         else
9824                 mmaptype='caddr_t'
9825         fi
9826         echo "and it returns ($mmaptype)." >&4
9827         ;;
9828 esac
9829
9830
9831
9832 : see if modfl exists
9833 set modfl d_modfl
9834 eval $inlibc
9835
9836 : see if mprotect exists
9837 set mprotect d_mprotect
9838 eval $inlibc
9839
9840 : see if msgctl exists
9841 set msgctl d_msgctl
9842 eval $inlibc
9843
9844 : see if msgget exists
9845 set msgget d_msgget
9846 eval $inlibc
9847
9848 : see if msgsnd exists
9849 set msgsnd d_msgsnd
9850 eval $inlibc
9851
9852 : see if msgrcv exists
9853 set msgrcv d_msgrcv
9854 eval $inlibc
9855
9856 : see how much of the 'msg*(2)' library is present.
9857 h_msg=true
9858 echo " "
9859 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9860 *"$undef"*) h_msg=false;;
9861 esac
9862 case "$osname" in
9863 freebsd)
9864     case "`ipcs 2>&1`" in
9865     "SVID messages"*"not configured"*)
9866         echo "Your $osname does not have the msg*(2) configured." >&4
9867         h_msg=false
9868         val="$undef"
9869         set msgctl d_msgctl
9870         eval $setvar
9871         set msgget d_msgget
9872         eval $setvar
9873         set msgsnd d_msgsnd
9874         eval $setvar
9875         set msgrcv d_msgrcv
9876         eval $setvar
9877         ;;
9878     esac
9879     ;;
9880 esac
9881 : we could also check for sys/ipc.h ...
9882 if $h_msg && $test `./findhdr sys/msg.h`; then
9883         echo "You have the full msg*(2) library." >&4
9884         val="$define"
9885 else
9886         echo "You don't have the full msg*(2) library." >&4
9887         val="$undef"
9888 fi
9889 set d_msg
9890 eval $setvar
9891
9892 : see if msync exists
9893 set msync d_msync
9894 eval $inlibc
9895
9896 : see if munmap exists
9897 set munmap d_munmap
9898 eval $inlibc
9899
9900 : see if nice exists
9901 set nice d_nice
9902 eval $inlibc
9903
9904
9905 echo " "
9906 echo "Checking which 64-bit integer type we could use..." >&4
9907
9908 case "$intsize" in
9909 8) val=int
9910    set quadtype
9911    eval $setvar
9912    val='"unsigned int"'
9913    set uquadtype
9914    eval $setvar
9915    quadkind=1
9916    ;;
9917 *) case "$longsize" in
9918    8) val=long
9919       set quadtype
9920       eval $setvar
9921       val='"unsigned long"'
9922       set uquadtype
9923       eval $setvar
9924       quadkind=2
9925       ;;
9926    *) case "$d_longlong:$longlongsize" in
9927       define:8)
9928         val='"long long"'
9929         set quadtype
9930         eval $setvar
9931         val='"unsigned long long"'
9932         set uquadtype
9933         eval $setvar
9934         quadkind=3
9935         ;;
9936       *) case "$d_int64_t" in
9937          define)
9938            val=int64_t
9939            set quadtype
9940            eval $setvar
9941            val=uint64_t
9942            set uquadtype
9943            eval $setvar
9944            quadkind=4
9945            ;;
9946          esac
9947          ;;
9948       esac
9949       ;;
9950    esac
9951    ;;
9952 esac
9953
9954 case "$quadtype" in
9955 '')     echo "Alas, no 64-bit integer types in sight." >&4
9956         d_quad="$undef"
9957         ;;
9958 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9959             verb="will"
9960         else
9961             verb="could"
9962         fi
9963         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9964         d_quad="$define"
9965         ;;
9966 esac
9967
9968 : check for length of character
9969 echo " "
9970 case "$charsize" in
9971 '')
9972         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9973         $cat >try.c <<'EOCP'
9974 #include <stdio.h>
9975 int main()
9976 {
9977     printf("%d\n", (int)sizeof(char));
9978     exit(0);
9979 }
9980 EOCP
9981         set try
9982         if eval $compile_ok; then
9983                 dflt=`./try`
9984         else
9985                 dflt='1'
9986                 echo "(I can't seem to compile the test program.  Guessing...)"
9987         fi
9988         ;;
9989 *)
9990         dflt="$charsize"
9991         ;;
9992 esac
9993 rp="What is the size of a character (in bytes)?"
9994 . ./myread
9995 charsize="$ans"
9996 $rm -f try.c try
9997
9998
9999 echo " "
10000 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10001
10002 case "$use64bitint:$d_quad:$quadtype" in
10003 define:define:?*)
10004         ivtype="$quadtype"
10005         uvtype="$uquadtype"
10006         ivsize=8
10007         uvsize=8
10008         ;;
10009 *)      ivtype="long"
10010         uvtype="unsigned long"
10011         ivsize=$longsize
10012         uvsize=$longsize
10013         ;;
10014 esac
10015
10016 case "$uselongdouble:$d_longdbl" in
10017 define:define)
10018         nvtype="long double"
10019         nvsize=$longdblsize
10020         ;;
10021 *)      nvtype=double
10022         nvsize=$doublesize
10023         ;;
10024 esac
10025
10026 $echo "(IV will be "$ivtype", $ivsize bytes)"
10027 $echo "(UV will be "$uvtype", $uvsize bytes)"
10028 $echo "(NV will be "$nvtype", $nvsize bytes)"
10029
10030 $cat >try.c <<EOCP
10031 #$i_inttypes I_INTTYPES
10032 #ifdef I_INTTYPES
10033 #include <inttypes.h>
10034 #endif
10035 #include <stdio.h>
10036 int main() {
10037 #ifdef INT8
10038    int8_t i =  INT8_MAX;
10039   uint8_t u = UINT8_MAX;
10040   printf("int8_t\n");
10041 #endif
10042 #ifdef INT16
10043    int16_t i =  INT16_MAX;
10044   uint16_t i = UINT16_MAX;
10045   printf("int16_t\n");
10046 #endif
10047 #ifdef INT32
10048    int32_t i =  INT32_MAX;
10049   uint32_t u = UINT32_MAX;
10050   printf("int32_t\n");
10051 #endif
10052 }
10053 EOCP
10054
10055 case "$i8type" in
10056 '')     case "$charsize" in
10057         1)      i8type=char
10058                 u8type="unsigned char"
10059                 i8size=$charsize
10060                 u8size=$charsize
10061                 ;;
10062         esac
10063         ;;
10064 esac
10065 case "$i8type" in
10066 '')     set try -DINT8
10067         if eval $compile; then
10068                 case "`./try$exe_ext`" in
10069                 int8_t) i8type=int8_t
10070                         u8type=uint8_t
10071                         i8size=1
10072                         u8size=1
10073                         ;;
10074                 esac
10075         fi
10076         ;;
10077 esac
10078 case "$i8type" in
10079 '')     if $test $charsize -ge 1; then
10080                 i8type=char
10081                 u8type="unsigned char"
10082                 i8size=$charsize
10083                 u8size=$charsize
10084         fi
10085         ;;
10086 esac
10087
10088 case "$i16type" in
10089 '')     case "$shortsize" in
10090         2)      i16type=short
10091                 u16type="unsigned short"
10092                 i16size=$shortsize
10093                 u16size=$shortsize
10094                 ;;
10095         esac
10096         ;;
10097 esac
10098 case "$i16type" in
10099 '')     set try -DINT16
10100         if eval $compile; then
10101                 case "`./try$exe_ext`" in
10102                 int16_t)
10103                         i16type=int16_t
10104                         u16type=uint16_t
10105                         i16size=2
10106                         u16size=2
10107                         ;;
10108                 esac
10109         fi
10110         ;;
10111 esac
10112 case "$i16type" in
10113 '')     if $test $shortsize -ge 2; then
10114                 i16type=short
10115                 u16type="unsigned short"
10116                 i16size=$shortsize
10117                 u16size=$shortsize
10118         fi
10119         ;;
10120 esac
10121
10122 case "$i32type" in
10123 '')     case "$longsize" in
10124         4)      i32type=long
10125                 u32type="unsigned long"
10126                 i32size=$longsize
10127                 u32size=$longsize
10128                 ;;
10129         *)      case "$intsize" in
10130                 4)      i32type=int
10131                         u32type="unsigned int"
10132                         i32size=$intsize
10133                         u32size=$intsize
10134                         ;;
10135                 esac
10136                 ;;
10137         esac
10138         ;;
10139 esac
10140 case "$i32type" in
10141 '')     set try -DINT32
10142         if eval $compile; then
10143                 case "`./try$exe_ext`" in
10144                 int32_t)
10145                         i32type=int32_t
10146                         u32type=uint32_t
10147                         i32size=4
10148                         u32size=4
10149                         ;;
10150                 esac
10151         fi
10152         ;;
10153 esac
10154 case "$i32type" in
10155 '')     if $test $intsize -ge 4; then
10156                 i32type=int
10157                 u32type="unsigned int"
10158                 i32size=$intsize
10159                 u32size=$intsize
10160         fi
10161         ;;
10162 esac
10163
10164 case "$i64type" in
10165 '')     case "$d_quad:$quadtype" in
10166         define:?*)
10167                 i64type="$quadtype"
10168                 u64type="$uquadtype"
10169                 i64size=8
10170                 u64size=8
10171                 ;;
10172         esac
10173         ;;
10174 esac
10175
10176 $echo "Checking whether your NVs can preserve your UVs..." >&4
10177 $cat <<EOP >try.c
10178 #include <stdio.h>
10179 int main() {
10180     $uvtype k = ($uvtype)~0, l;
10181     $nvtype d;
10182     l = k;
10183     d = ($nvtype)l;
10184     l = ($uvtype)d;
10185     if (l == k)
10186        printf("preserve\n");
10187     exit(0);
10188 }
10189 EOP
10190 set try
10191 if eval $compile; then
10192         case "`./try$exe_ext`" in
10193         preserve) d_nv_preserves_uv="$define" ;;
10194         esac
10195 fi      
10196 case "$d_nv_preserves_uv" in
10197 $define) $echo "Yes, they can."  2>&1 ;;
10198 *)       $echo "No, they can't." 2>&1
10199          d_nv_preserves_uv="$undef"
10200          ;;
10201 esac
10202
10203 $rm -f try.* try
10204
10205
10206 : check for off64_t
10207 echo " "
10208 echo "Checking to see if you have off64_t..." >&4
10209 $cat >try.c <<EOCP
10210 #include <sys/types.h>
10211 #include <unistd.h>
10212 int main() { off64_t x = 7; }
10213 EOCP
10214 set try
10215 if eval $compile; then
10216         val="$define"
10217         echo "You have off64_t."
10218 else
10219         val="$undef"
10220         echo "You do not have off64_t."
10221         case "$lseeksize" in
10222         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10223         esac
10224 fi
10225 $rm -f try.* try
10226 set d_off64_t
10227 eval $setvar
10228
10229 : see if POSIX threads are available
10230 set pthread.h i_pthread
10231 eval $inhdr
10232
10233
10234
10235
10236 : how to create joinable pthreads
10237 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10238         echo " "
10239         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10240         $cat >try.c <<'EOCP'
10241 #include <pthread.h>
10242 int main() {
10243     int detachstate = JOINABLE;
10244 }
10245 EOCP
10246         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10247         if eval $compile; then
10248                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10249                 val="$undef" # Yes, undef.
10250                 set d_old_pthread_create_joinable
10251                 eval $setvar
10252                 val=""
10253                 set old_pthread_create_joinable
10254                 eval $setvar
10255         else
10256                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10257                 if eval $compile; then
10258                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10259                         val="$define"
10260                         set d_old_pthread_create_joinable
10261                         eval $setvar
10262                         val=PTHREAD_CREATE_UNDETACHED
10263                         set old_pthread_create_joinable
10264                         eval $setvar
10265                 else            
10266                         set try -DJOINABLE=__UNDETACHED
10267                         if eval $compile; then
10268                                 echo "You seem to use __UNDETACHED." >&4
10269                                 val="$define"
10270                                 set d_old_pthread_create_joinable
10271                                 eval $setvar
10272                                 val=__UNDETACHED
10273                                 set old_pthread_create_joinable
10274                                 eval $setvar
10275                         else
10276                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10277                                 val="$define"
10278                                 set d_old_pthread_create_joinable
10279                                 eval $setvar
10280                                 val=0
10281                                 set old_pthread_create_joinable
10282                                 eval $setvar
10283                         fi
10284                 fi
10285         fi
10286         $rm -f try try.*
10287 else
10288     d_old_pthread_create_joinable="$undef"
10289     old_pthread_create_joinable=""
10290 fi
10291
10292 : see if pause exists
10293 set pause d_pause
10294 eval $inlibc
10295
10296 : see if pipe exists
10297 set pipe d_pipe
10298 eval $inlibc
10299
10300 : see if poll exists
10301 set poll d_poll
10302 eval $inlibc
10303
10304
10305 : see whether the various POSIXish _yields exist
10306 $cat >try.c <<EOP
10307 #include <pthread.h>
10308 #include <stdio.h>
10309 int main() {
10310 #ifdef SCHED_YIELD
10311         sched_yield();
10312 #else
10313 #ifdef PTHREAD_YIELD
10314         pthread_yield();
10315 #else
10316 #ifdef PTHREAD_YIELD_NULL
10317         pthread_yield(NULL);
10318 #endif
10319 #endif
10320 #endif
10321 }
10322 EOP
10323 : see if sched_yield exists
10324 set try -DSCHED_YIELD
10325 if eval $compile; then
10326     val="$define"
10327     sched_yield='sched_yield()'
10328 else
10329     val="$undef"
10330 fi
10331 case "$usethreads" in
10332 $define)
10333         case "$val" in
10334         $define) echo 'sched_yield() found.' >&4        ;;
10335         *)       echo 'sched_yield() NOT found.' >&4    ;;
10336         esac
10337 esac
10338 set d_sched_yield
10339 eval $setvar
10340
10341 : see if pthread_yield exists
10342 set try -DPTHREAD_YIELD
10343 if eval $compile; then
10344     val="$define"
10345     case "$sched_yield" in
10346     '') sched_yield='pthread_yield()' ;;
10347     esac
10348 else
10349     set try -DPTHREAD_YIELD_NULL
10350     if eval $compile; then
10351         val="$define"
10352         case "$sched_yield" in
10353         '') sched_yield='pthread_yield(NULL)' ;;
10354         esac
10355     else
10356         val="$undef"
10357     fi
10358 fi
10359 case "$usethreads" in
10360 $define)
10361         case "$val" in
10362         $define) echo 'pthread_yield() found.' >&4      ;;
10363         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10364         esac
10365         ;;
10366 esac
10367 set d_pthread_yield
10368 eval $setvar
10369
10370 case "$sched_yield" in
10371 '') sched_yield=undef ;;
10372 esac
10373
10374 $rm -f try try.*
10375
10376 : see if this is a pwd.h system
10377 set pwd.h i_pwd
10378 eval $inhdr
10379
10380 case "$i_pwd" in
10381 $define)
10382         xxx=`./findhdr pwd.h`
10383         $cppstdin $cppflags $cppminus < $xxx >$$.h
10384
10385         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10386                 val="$define"
10387         else
10388                 val="$undef"
10389         fi
10390         set d_pwquota
10391         eval $setvar
10392
10393         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10394                 val="$define"
10395         else
10396                 val="$undef"
10397         fi
10398         set d_pwage
10399         eval $setvar
10400
10401         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10402                 val="$define"
10403         else
10404                 val="$undef"
10405         fi
10406         set d_pwchange
10407         eval $setvar
10408
10409         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10410                 val="$define"
10411         else
10412                 val="$undef"
10413         fi
10414         set d_pwclass
10415         eval $setvar
10416
10417         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10418                 val="$define"
10419         else
10420                 val="$undef"
10421         fi
10422         set d_pwexpire
10423         eval $setvar
10424
10425         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10426                 val="$define"
10427         else
10428                 val="$undef"
10429         fi
10430         set d_pwcomment
10431         eval $setvar
10432
10433         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10434                 val="$define"
10435         else
10436                 val="$undef"
10437         fi
10438         set d_pwgecos
10439         eval $setvar
10440
10441         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10442                 val="$define"
10443         else
10444                 val="$undef"
10445         fi
10446         set d_pwpasswd
10447         eval $setvar
10448
10449         $rm -f $$.h
10450         ;;
10451 *)
10452         val="$undef"; 
10453         set d_pwquota; eval $setvar
10454         set d_pwage; eval $setvar
10455         set d_pwchange; eval $setvar
10456         set d_pwclass; eval $setvar
10457         set d_pwexpire; eval $setvar
10458         set d_pwcomment; eval $setvar
10459         set d_pwgecos; eval $setvar
10460         set d_pwpasswd; eval $setvar
10461         ;;
10462 esac
10463
10464 : see if readdir and friends exist
10465 set readdir d_readdir
10466 eval $inlibc
10467 set seekdir d_seekdir
10468 eval $inlibc
10469 set telldir d_telldir
10470 eval $inlibc
10471 set rewinddir d_rewinddir
10472 eval $inlibc
10473
10474 : see if readlink exists
10475 set readlink d_readlink
10476 eval $inlibc
10477
10478 : see if rename exists
10479 set rename d_rename
10480 eval $inlibc
10481
10482 : see if rmdir exists
10483 set rmdir d_rmdir
10484 eval $inlibc
10485
10486 : see if memory.h is available.
10487 val=''
10488 set memory.h val
10489 eval $inhdr
10490
10491 : See if it conflicts with string.h
10492 case "$val" in
10493 $define)
10494         case "$strings" in
10495         '') ;;
10496         *)
10497                 $cppstdin $cppflags $cppminus < $strings > mem.h
10498                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10499                         echo " "
10500                         echo "We won't be including <memory.h>."
10501                         val="$undef"
10502                 fi
10503                 $rm -f mem.h
10504                 ;;
10505         esac
10506 esac
10507 set i_memory
10508 eval $setvar
10509
10510 : can bcopy handle overlapping blocks?
10511 val="$undef"
10512 case "$d_bcopy" in
10513 "$define")
10514         echo " "
10515         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10516         $cat >try.c <<EOCP
10517 #$i_memory I_MEMORY
10518 #$i_stdlib I_STDLIB
10519 #$i_string I_STRING
10520 #$i_unistd I_UNISTD
10521 EOCP
10522         $cat >>try.c <<'EOCP'
10523 #include <stdio.h>
10524 #ifdef I_MEMORY
10525 #  include <memory.h>
10526 #endif
10527 #ifdef I_STDLIB
10528 #  include <stdlib.h>
10529 #endif
10530 #ifdef I_STRING
10531 #  include <string.h>
10532 #else
10533 #  include <strings.h>
10534 #endif
10535 #ifdef I_UNISTD
10536 #  include <unistd.h>  /* Needed for NetBSD */
10537 #endif
10538 int main()
10539 {
10540 char buf[128], abc[128];
10541 char *b;
10542 int len;
10543 int off;
10544 int align;
10545
10546 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10547
10548 for (align = 7; align >= 0; align--) {
10549         for (len = 36; len; len--) {
10550                 b = buf+align;
10551                 bcopy(abc, b, len);
10552                 for (off = 1; off <= len; off++) {
10553                         bcopy(b, b+off, len);
10554                         bcopy(b+off, b, len);
10555                         if (bcmp(b, abc, len))
10556                                 exit(1);
10557                 }
10558         }
10559 }
10560 exit(0);
10561 }
10562 EOCP
10563         set try
10564         if eval $compile_ok; then
10565                 if ./try 2>/dev/null; then
10566                         echo "Yes, it can."
10567                         val="$define"
10568                 else
10569                         echo "It can't, sorry."
10570                         case "$d_memmove" in
10571                         "$define") echo "But that's Ok since you have memmove()." ;;
10572                         esac
10573                 fi
10574         else
10575                 echo "(I can't compile the test program, so we'll assume not...)"
10576                 case "$d_memmove" in
10577                 "$define") echo "But that's Ok since you have memmove()." ;;
10578                 esac
10579         fi
10580         ;;
10581 esac
10582 $rm -f try.* try core
10583 set d_safebcpy
10584 eval $setvar
10585
10586 : can memcpy handle overlapping blocks?
10587 val="$undef"
10588 case "$d_memcpy" in
10589 "$define")
10590         echo " "
10591         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10592         $cat >try.c <<EOCP
10593 #$i_memory I_MEMORY
10594 #$i_stdlib I_STDLIB
10595 #$i_string I_STRING
10596 #$i_unistd I_UNISTD
10597 EOCP
10598         $cat >>try.c <<'EOCP'
10599 #include <stdio.h>
10600 #ifdef I_MEMORY
10601 #  include <memory.h>
10602 #endif
10603 #ifdef I_STDLIB
10604 #  include <stdlib.h>
10605 #endif
10606 #ifdef I_STRING
10607 #  include <string.h>
10608 #else
10609 #  include <strings.h>
10610 #endif
10611 #ifdef I_UNISTD
10612 #  include <unistd.h>  /* Needed for NetBSD */
10613 #endif
10614 int main()
10615 {
10616 char buf[128], abc[128];
10617 char *b;
10618 int len;
10619 int off;
10620 int align;
10621
10622 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10623    try to store the string in read-only memory. */
10624 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10625
10626 for (align = 7; align >= 0; align--) {
10627         for (len = 36; len; len--) {
10628                 b = buf+align;
10629                 memcpy(b, abc, len);
10630                 for (off = 1; off <= len; off++) {
10631                         memcpy(b+off, b, len);
10632                         memcpy(b, b+off, len);
10633                         if (memcmp(b, abc, len))
10634                                 exit(1);
10635                 }
10636         }
10637 }
10638 exit(0);
10639 }
10640 EOCP
10641         set try
10642         if eval $compile_ok; then
10643                 if ./try 2>/dev/null; then
10644                         echo "Yes, it can."
10645                         val="$define"
10646                 else
10647                         echo "It can't, sorry."
10648                         case "$d_memmove" in
10649                         "$define") echo "But that's Ok since you have memmove()." ;;
10650                         esac
10651                 fi
10652         else
10653                 echo "(I can't compile the test program, so we'll assume not...)"
10654                 case "$d_memmove" in
10655                 "$define") echo "But that's Ok since you have memmove()." ;;
10656                 esac
10657         fi
10658         ;;
10659 esac
10660 $rm -f try.* try core
10661 set d_safemcpy
10662 eval $setvar
10663
10664 : can memcmp be trusted to compare relative magnitude?
10665 val="$undef"
10666 case "$d_memcmp" in
10667 "$define")
10668         echo " "
10669         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10670         $cat >try.c <<EOCP
10671 #$i_memory I_MEMORY
10672 #$i_stdlib I_STDLIB
10673 #$i_string I_STRING
10674 #$i_unistd I_UNISTD
10675 EOCP
10676         $cat >>try.c <<'EOCP'
10677 #include <stdio.h>
10678 #ifdef I_MEMORY
10679 #  include <memory.h>
10680 #endif
10681 #ifdef I_STDLIB
10682 #  include <stdlib.h>
10683 #endif
10684 #ifdef I_STRING
10685 #  include <string.h>
10686 #else
10687 #  include <strings.h>
10688 #endif
10689 #ifdef I_UNISTD
10690 #  include <unistd.h>  /* Needed for NetBSD */
10691 #endif
10692 int main()
10693 {
10694 char a = -1;
10695 char b = 0;
10696 if ((a < b) && memcmp(&a, &b, 1) < 0)
10697         exit(1);
10698 exit(0);
10699 }
10700 EOCP
10701         set try
10702         if eval $compile_ok; then
10703                 if ./try 2>/dev/null; then
10704                         echo "Yes, it can."
10705                         val="$define"
10706                 else
10707                         echo "No, it can't (it uses signed chars)."
10708                 fi
10709         else
10710                 echo "(I can't compile the test program, so we'll assume not...)"
10711         fi
10712         ;;
10713 esac
10714 $rm -f try.* try core
10715 set d_sanemcmp
10716 eval $setvar
10717
10718 : see if select exists
10719 set select d_select
10720 eval $inlibc
10721
10722 : see if semctl exists
10723 set semctl d_semctl
10724 eval $inlibc
10725
10726 : see if semget exists
10727 set semget d_semget
10728 eval $inlibc
10729
10730 : see if semop exists
10731 set semop d_semop
10732 eval $inlibc
10733
10734 : see how much of the 'sem*(2)' library is present.
10735 h_sem=true
10736 echo " "
10737 case "$d_semctl$d_semget$d_semop" in
10738 *"$undef"*) h_sem=false;;
10739 esac
10740 case "$osname" in
10741 freebsd)
10742     case "`ipcs 2>&1`" in
10743     "SVID messages"*"not configured"*)
10744         echo "Your $osname does not have the sem*(2) configured." >&4
10745         h_sem=false
10746         val="$undef"
10747         set semctl d_semctl
10748         eval $setvar
10749         set semget d_semget
10750         eval $setvar
10751         set semop d_semop
10752         eval $setvar
10753         ;;
10754     esac
10755     ;;
10756 esac
10757 : we could also check for sys/ipc.h ...
10758 if $h_sem && $test `./findhdr sys/sem.h`; then
10759         echo "You have the full sem*(2) library." >&4
10760         val="$define"
10761 else
10762         echo "You don't have the full sem*(2) library." >&4
10763         val="$undef"
10764 fi
10765 set d_sem
10766 eval $setvar
10767
10768 : see whether sys/sem.h defines union semun
10769 echo " "
10770 $cat > try.c <<'END'
10771 #include <sys/types.h>
10772 #include <sys/ipc.h>
10773 #include <sys/sem.h>
10774 int main () { union semun semun; semun.buf = 0; }
10775 END
10776 set try
10777 if eval $compile; then
10778     echo "You have union semun in <sys/sem.h>." >&4
10779     val="$define"
10780 else
10781     echo "You do not have union semun in <sys/sem.h>." >&4
10782     val="$undef"
10783 fi
10784 $rm -f try try.c try.h
10785 set d_union_semun
10786 eval $setvar
10787
10788 : see how to do semctl IPC_STAT
10789 case "$d_sem" in
10790 $define)
10791     : see whether semctl IPC_STAT can use union semun
10792     echo " "
10793     $cat > try.h <<END
10794 #ifndef S_IRUSR
10795 #   ifdef S_IREAD
10796 #       define S_IRUSR S_IREAD
10797 #       define S_IWUSR S_IWRITE
10798 #       define S_IXUSR S_IEXEC
10799 #   else
10800 #       define S_IRUSR 0400
10801 #       define S_IWUSR 0200
10802 #       define S_IXUSR 0100
10803 #   endif
10804 #   define S_IRGRP (S_IRUSR>>3)
10805 #   define S_IWGRP (S_IWUSR>>3)
10806 #   define S_IXGRP (S_IXUSR>>3)
10807 #   define S_IROTH (S_IRUSR>>6)
10808 #   define S_IWOTH (S_IWUSR>>6)
10809 #   define S_IXOTH (S_IXUSR>>6)
10810 #endif
10811 #ifndef S_IRWXU
10812 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10813 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10814 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10815 #endif
10816 END
10817
10818     $cat > try.c <<END
10819 #include <sys/types.h>
10820 #include <sys/ipc.h>
10821 #include <sys/sem.h>
10822 #include <sys/stat.h>
10823 #include <stdio.h>
10824 #include <errno.h>
10825 #include "try.h"
10826 #ifndef errno
10827 extern int errno;
10828 #endif
10829 #$d_union_semun HAS_UNION_SEMUN
10830 int main() {
10831     union semun
10832 #ifndef HAS_UNION_SEMUN
10833     {
10834         int val;
10835         struct semid_ds *buf;
10836         unsigned short *array;
10837     }
10838 #endif
10839     arg;
10840     int sem, st;
10841
10842 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10843     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10844     if (sem > -1) {
10845         struct semid_ds argbuf;
10846         arg.buf = &argbuf;
10847 #       ifdef IPC_STAT
10848         st = semctl(sem, 0, IPC_STAT, arg);
10849         if (st == 0)
10850             printf("semun\n");
10851         else
10852 #       endif /* IPC_STAT */
10853             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10854 #       ifdef IPC_RMID
10855         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10856 #       endif /* IPC_RMID */
10857             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10858     } else
10859 #endif /* IPC_PRIVATE && ... */
10860         printf("semget failed: errno = %d\n", errno);
10861   return 0;
10862 }
10863 END
10864     val="$undef"
10865     set try
10866     if eval $compile; then
10867         xxx=`./try`
10868         case "$xxx" in
10869         semun) val="$define" ;;
10870         esac
10871     fi
10872     $rm -f try try.c
10873     set d_semctl_semun
10874     eval $setvar
10875     case "$d_semctl_semun" in
10876     $define)
10877         echo "You can use union semun for semctl IPC_STAT." >&4
10878         also='also'
10879         ;;
10880     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10881         also=''
10882         ;;
10883     esac
10884
10885     : see whether semctl IPC_STAT can use struct semid_ds pointer
10886     $cat > try.c <<'END'
10887 #include <sys/types.h>
10888 #include <sys/ipc.h>
10889 #include <sys/sem.h>
10890 #include <sys/stat.h>
10891 #include "try.h"
10892 #include <stdio.h>
10893 #include <errno.h>
10894 #ifndef errno
10895 extern int errno;
10896 #endif
10897 int main() {
10898     struct semid_ds arg;
10899     int sem, st;
10900
10901 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10902     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10903     if (sem > -1) {
10904 #       ifdef IPC_STAT
10905         st = semctl(sem, 0, IPC_STAT, &arg);
10906         if (st == 0)
10907             printf("semid_ds\n");
10908         else
10909 #       endif /* IPC_STAT */
10910             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10911 #       ifdef IPC_RMID
10912         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10913 #       endif /* IPC_RMID */
10914             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10915     } else
10916 #endif /* IPC_PRIVATE && ... */
10917         printf("semget failed: errno = %d\n", errno);
10918
10919     return 0;
10920 }
10921 END
10922     val="$undef"
10923     set try
10924     if eval $compile; then
10925         xxx=`./try`
10926         case "$xxx" in
10927         semid_ds) val="$define" ;;
10928         esac
10929     fi
10930     $rm -f try try.c
10931     set d_semctl_semid_ds
10932     eval $setvar
10933     case "$d_semctl_semid_ds" in
10934     $define)
10935         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10936         ;;
10937     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10938         ;;
10939     esac
10940     $rm -f try.h
10941     ;;
10942 *)  val="$undef"
10943
10944     # We do not have the full sem*(2) library, so assume we can not
10945     # use either.
10946
10947     set d_semctl_semun
10948     eval $setvar
10949
10950     set d_semctl_semid_ds
10951     eval $setvar
10952     ;;
10953 esac
10954
10955 : see if setegid exists
10956 set setegid d_setegid
10957 eval $inlibc
10958
10959 : see if seteuid exists
10960 set seteuid d_seteuid
10961 eval $inlibc
10962
10963 : see if setgrent exists
10964 set setgrent d_setgrent
10965 eval $inlibc
10966
10967 : see if sethostent exists
10968 set sethostent d_sethent
10969 eval $inlibc
10970
10971 : see if setlinebuf exists
10972 set setlinebuf d_setlinebuf
10973 eval $inlibc
10974
10975 : see if setlocale exists
10976 set setlocale d_setlocale
10977 eval $inlibc
10978
10979 : see if setnetent exists
10980 set setnetent d_setnent
10981 eval $inlibc
10982
10983 : see if setprotoent exists
10984 set setprotoent d_setpent
10985 eval $inlibc
10986
10987 : see if setpgid exists
10988 set setpgid d_setpgid
10989 eval $inlibc
10990
10991 : see if setpgrp2 exists
10992 set setpgrp2 d_setpgrp2
10993 eval $inlibc
10994
10995 : see if setpriority exists
10996 set setpriority d_setprior
10997 eval $inlibc
10998
10999 : see if setpwent exists
11000 set setpwent d_setpwent
11001 eval $inlibc
11002
11003 : see if setregid exists
11004 set setregid d_setregid
11005 eval $inlibc
11006 set setresgid d_setresgid
11007 eval $inlibc
11008
11009 : see if setreuid exists
11010 set setreuid d_setreuid
11011 eval $inlibc
11012 set setresuid d_setresuid
11013 eval $inlibc
11014
11015 : see if setrgid exists
11016 set setrgid d_setrgid
11017 eval $inlibc
11018
11019 : see if setruid exists
11020 set setruid d_setruid
11021 eval $inlibc
11022
11023 : see if setservent exists
11024 set setservent d_setsent
11025 eval $inlibc
11026
11027 : see if setsid exists
11028 set setsid d_setsid
11029 eval $inlibc
11030
11031 : see if setspent exists
11032 set setspent d_setspent
11033 eval $inlibc
11034
11035 : see if setvbuf exists
11036 set setvbuf d_setvbuf
11037 eval $inlibc
11038
11039 : see if sfio.h is available
11040 set sfio.h i_sfio
11041 eval $inhdr
11042
11043
11044 : see if sfio library is available
11045 case "$i_sfio" in
11046 $define)
11047         val=''
11048         set sfreserve val
11049         eval $inlibc
11050         ;;
11051 *)
11052         val="$undef"
11053         ;;
11054 esac
11055 : Ok, but do we want to use it.
11056 case "$val" in
11057 $define)
11058         case "$usesfio" in
11059         true|$define|[yY]*) dflt='y';;
11060         *) dflt='n';;
11061         esac
11062         echo "$package can use the sfio library, but it is experimental."
11063         rp="You seem to have sfio available, do you want to try using it?"
11064         . ./myread
11065         case "$ans" in
11066         y|Y) ;;
11067         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11068                 val="$undef"
11069                 : Remove sfio from list of libraries to use
11070                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11071                 shift
11072                 libs="$*"
11073                 echo "libs = $libs" >&4
11074                 ;;
11075         esac
11076         ;;
11077 *)      case "$usesfio" in
11078         true|$define|[yY]*)
11079                 echo "Sorry, cannot find sfio on this machine" >&4
11080                 echo "Ignoring your setting of usesfio=$usesfio" >&4
11081                 ;;
11082         esac
11083         ;;
11084 esac
11085 set d_sfio
11086 eval $setvar
11087 case "$d_sfio" in
11088 $define) usesfio='true';;
11089 *) usesfio='false';;
11090 esac
11091
11092 : see if shmctl exists
11093 set shmctl d_shmctl
11094 eval $inlibc
11095
11096 : see if shmget exists
11097 set shmget d_shmget
11098 eval $inlibc
11099
11100 : see if shmat exists
11101 set shmat d_shmat
11102 eval $inlibc
11103 : see what shmat returns
11104 case "$d_shmat" in
11105 "$define")
11106         $cat >shmat.c <<'END'
11107 #include <sys/shm.h>
11108 void *shmat();
11109 END
11110         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11111                 shmattype='void *'
11112         else
11113                 shmattype='char *'
11114         fi
11115         echo "and it returns ($shmattype)." >&4
11116         : see if a prototype for shmat is available
11117         xxx=`./findhdr sys/shm.h`
11118         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11119         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11120                 val="$define"
11121         else
11122                 val="$undef"
11123         fi
11124         $rm -f shmat.[co]
11125         ;;
11126 *)
11127         val="$undef"
11128         ;;
11129 esac
11130 set d_shmatprototype
11131 eval $setvar
11132
11133 : see if shmdt exists
11134 set shmdt d_shmdt
11135 eval $inlibc
11136
11137 : see how much of the 'shm*(2)' library is present.
11138 h_shm=true
11139 echo " "
11140 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11141 *"$undef"*) h_shm=false;;
11142 esac
11143 case "$osname" in
11144 freebsd)
11145     case "`ipcs 2>&1`" in
11146     "SVID shared memory"*"not configured"*)
11147         echo "Your $osname does not have the shm*(2) configured." >&4
11148         h_shm=false
11149         val="$undef"
11150         set shmctl d_shmctl
11151         evat $setvar
11152         set shmget d_shmget
11153         evat $setvar
11154         set shmat d_shmat
11155         evat $setvar
11156         set shmdt d_shmdt
11157         evat $setvar
11158         ;;
11159     esac
11160     ;;
11161 esac
11162 : we could also check for sys/ipc.h ...
11163 if $h_shm && $test `./findhdr sys/shm.h`; then
11164         echo "You have the full shm*(2) library." >&4
11165         val="$define"
11166 else
11167         echo "You don't have the full shm*(2) library." >&4
11168         val="$undef"
11169 fi
11170 set d_shm
11171 eval $setvar
11172
11173 echo " "
11174 : see if we have sigaction
11175 if set sigaction val -f d_sigaction; eval $csym; $val; then
11176         echo 'sigaction() found.' >&4
11177         $cat > try.c <<'EOP'
11178 #include <stdio.h>
11179 #include <sys/types.h>
11180 #include <signal.h>
11181 int main()
11182 {
11183     struct sigaction act, oact;
11184     act.sa_flags = 0;
11185     oact.sa_handler = 0;
11186     /* so that act and oact are used */
11187     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11188 }
11189 EOP
11190         set try
11191         if eval $compile_ok; then
11192                 val="$define"
11193         else
11194                 echo "But you don't seem to have a useable struct sigaction." >&4
11195                 val="$undef"
11196         fi
11197 else
11198         echo 'sigaction NOT found.' >&4
11199         val="$undef"
11200 fi
11201 set d_sigaction; eval $setvar
11202 $rm -f try try$_o try.c
11203
11204 : see if sigsetjmp exists
11205 echo " "
11206 case "$d_sigsetjmp" in
11207 '')
11208         $cat >try.c <<'EOP'
11209 #include <setjmp.h>
11210 sigjmp_buf env;
11211 int set = 1;
11212 int main()
11213 {
11214         if (sigsetjmp(env,1))
11215                 exit(set);
11216         set = 0;
11217         siglongjmp(env, 1);
11218         exit(1);
11219 }
11220 EOP
11221         set try
11222         if eval $compile; then
11223                 if ./try >/dev/null 2>&1; then
11224                         echo "POSIX sigsetjmp found." >&4
11225                         val="$define"
11226                 else
11227                         $cat >&4 <<EOM
11228 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11229 I'll ignore them.
11230 EOM
11231                         val="$undef"
11232                 fi
11233         else
11234                 echo "sigsetjmp not found." >&4
11235                 val="$undef"
11236         fi
11237         ;;
11238 *) val="$d_sigsetjmp"
11239         case "$d_sigsetjmp" in
11240         $define) echo "POSIX sigsetjmp found." >&4;;
11241         $undef) echo "sigsetjmp not found." >&4;;
11242         esac
11243         ;;
11244 esac
11245 set d_sigsetjmp
11246 eval $setvar
11247 $rm -f try.c try
11248
11249 : see if sys/stat.h is available
11250 set sys/stat.h i_sysstat
11251 eval $inhdr
11252
11253
11254 : see if stat knows about block sizes
11255 echo " "
11256 echo "Checking to see if your struct stat has st_blocks field..." >&4
11257 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11258 eval $hasfield
11259
11260
11261 : see if this is a sys/vfs.h system
11262 set sys/vfs.h i_sysvfs
11263 eval $inhdr
11264
11265
11266 : see if this is a sys/statfs.h system
11267 set sys/statfs.h i_sysstatfs
11268 eval $inhdr
11269
11270
11271 echo " "
11272 echo "Checking to see if your system supports struct statfs..." >&4
11273 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
11274 eval $hasstruct
11275 case "$d_statfs_s" in
11276 "$define")      echo "Yes, it does."   ;;
11277 *)              echo "No, it doesn't." ;;
11278 esac
11279
11280
11281
11282 : see if struct statfs knows about f_flags
11283 case "$d_statfs_s" in
11284 define) 
11285         echo " "
11286         echo "Checking to see if your struct statfs has f_flags field..." >&4
11287         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
11288         eval $hasfield
11289         ;;
11290 *)      val="$undef"
11291         set d_statfs_f_flags
11292         eval $setvar
11293         ;;
11294 esac
11295 case "$d_statfs_f_flags" in
11296 "$define")      echo "Yes, it does."   ;;
11297 *)              echo "No, it doesn't." ;;
11298 esac
11299
11300 : see if _ptr and _cnt from stdio act std
11301 echo " "
11302 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11303         echo "(Looks like you have stdio.h from Linux.)"
11304         case "$stdio_ptr" in
11305         '') stdio_ptr='((fp)->_IO_read_ptr)'
11306                 ptr_lval=$define
11307                 ;;
11308         *)      ptr_lval=$d_stdio_ptr_lval;;
11309         esac
11310         case "$stdio_cnt" in
11311         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11312                 cnt_lval=$undef
11313                 ;;
11314         *)      cnt_lval=$d_stdio_cnt_lval;;
11315         esac
11316         case "$stdio_base" in
11317         '') stdio_base='((fp)->_IO_read_base)';;
11318         esac
11319         case "$stdio_bufsiz" in
11320         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11321         esac
11322 else
11323         case "$stdio_ptr" in
11324         '') stdio_ptr='((fp)->_ptr)'
11325                 ptr_lval=$define
11326                 ;;
11327         *)      ptr_lval=$d_stdio_ptr_lval;;
11328         esac
11329         case "$stdio_cnt" in
11330         '') stdio_cnt='((fp)->_cnt)'
11331                 cnt_lval=$define
11332                 ;;
11333         *)      cnt_lval=$d_stdio_cnt_lval;;
11334         esac
11335         case "$stdio_base" in
11336         '') stdio_base='((fp)->_base)';;
11337         esac
11338         case "$stdio_bufsiz" in
11339         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11340         esac
11341 fi
11342 : test whether _ptr and _cnt really work
11343 echo "Checking how std your stdio is..." >&4
11344 $cat >try.c <<EOP
11345 #include <stdio.h>
11346 #define FILE_ptr(fp)    $stdio_ptr
11347 #define FILE_cnt(fp)    $stdio_cnt
11348 int main() {
11349         FILE *fp = fopen("try.c", "r");
11350         char c = getc(fp);
11351         if (
11352                 18 <= FILE_cnt(fp) &&
11353                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11354         )
11355                 exit(0);
11356         exit(1);
11357 }
11358 EOP
11359 val="$undef"
11360 set try
11361 if eval $compile; then
11362         if ./try; then
11363                 echo "Your stdio acts pretty std."
11364                 val="$define"
11365         else
11366                 echo "Your stdio isn't very std."
11367         fi
11368 else
11369         echo "Your stdio doesn't appear very std."
11370 fi
11371 $rm -f try.c try
11372 set d_stdstdio
11373 eval $setvar
11374
11375 : Can _ptr be used as an lvalue?
11376 case "$d_stdstdio$ptr_lval" in
11377 $define$define) val=$define ;;
11378 *) val=$undef ;;
11379 esac
11380 set d_stdio_ptr_lval
11381 eval $setvar
11382
11383 : Can _cnt be used as an lvalue?
11384 case "$d_stdstdio$cnt_lval" in
11385 $define$define) val=$define ;;
11386 *) val=$undef ;;
11387 esac
11388 set d_stdio_cnt_lval
11389 eval $setvar
11390
11391 : see if _base is also standard
11392 val="$undef"
11393 case "$d_stdstdio" in
11394 $define)
11395         $cat >try.c <<EOP
11396 #include <stdio.h>
11397 #define FILE_base(fp)   $stdio_base
11398 #define FILE_bufsiz(fp) $stdio_bufsiz
11399 int main() {
11400         FILE *fp = fopen("try.c", "r");
11401         char c = getc(fp);
11402         if (
11403                 19 <= FILE_bufsiz(fp) &&
11404                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11405         )
11406                 exit(0);
11407         exit(1);
11408 }
11409 EOP
11410         set try
11411         if eval $compile; then
11412                 if ./try; then
11413                         echo "And its _base field acts std."
11414                         val="$define"
11415                 else
11416                         echo "But its _base field isn't std."
11417                 fi
11418         else
11419                 echo "However, it seems to be lacking the _base field."
11420         fi
11421         $rm -f try.c try
11422         ;;
11423 esac
11424 set d_stdiobase
11425 eval $setvar
11426
11427 $cat >&4 <<EOM
11428 Checking how to access stdio streams by file descriptor number...
11429 EOM
11430 case "$stdio_stream_array" in
11431 '')     $cat >try.c <<EOCP
11432 #include <stdio.h>
11433 int main() {
11434   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11435     printf("yes\n");
11436 }
11437 EOCP
11438         for s in _iob __iob __sF
11439         do
11440                 set try -DSTDIO_STREAM_ARRAY=$s
11441                 if eval $compile; then
11442                         case "`./try$exe_ext`" in
11443                         yes)    stdio_stream_array=$s; break ;;
11444                         esac
11445                 fi
11446         done
11447         $rm -f try.* try$exe_ext
11448 esac
11449 case "$stdio_stream_array" in
11450 '')     $cat >&4 <<EOM
11451 I can't figure out how to access stdio streams by file descriptor number.
11452 EOM
11453         d_stdio_stream_array="$undef"
11454         ;;
11455 *)      $cat >&4 <<EOM
11456 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11457 EOM
11458         d_stdio_stream_array="$define"
11459         ;;
11460 esac
11461
11462 : see if strcoll exists
11463 set strcoll d_strcoll
11464 eval $inlibc
11465
11466 : check for structure copying
11467 echo " "
11468 echo "Checking to see if your C compiler can copy structs..." >&4
11469 $cat >try.c <<'EOCP'
11470 int main()
11471 {
11472         struct blurfl {
11473                 int dyick;
11474         } foo, bar;
11475
11476         foo = bar;
11477 }
11478 EOCP
11479 if $cc -c try.c >/dev/null 2>&1 ; then
11480         val="$define"
11481         echo "Yup, it can."
11482 else
11483         val="$undef"
11484         echo "Nope, it can't."
11485 fi
11486 set d_strctcpy
11487 eval $setvar
11488 $rm -f try.*
11489
11490 : see if strerror and/or sys_errlist[] exist
11491 echo " "
11492 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11493     if set strerror val -f d_strerror; eval $csym; $val; then
11494                 echo 'strerror() found.' >&4
11495                 d_strerror="$define"
11496                 d_strerrm='strerror(e)'
11497                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11498                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11499                         d_syserrlst="$define"
11500                 else
11501                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11502                         d_syserrlst="$undef"
11503                 fi
11504     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11505                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11506                 echo 'strerror() found in string header.' >&4
11507                 d_strerror="$define"
11508                 d_strerrm='strerror(e)'
11509                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11510                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11511                                 d_syserrlst="$define"
11512                 else
11513                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11514                         d_syserrlst="$undef"
11515                 fi
11516     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11517                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11518                 d_strerror="$undef"
11519                 d_syserrlst="$define"
11520                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11521     else
11522                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11523                 d_strerror="$undef"
11524                 d_syserrlst="$undef"
11525                 d_strerrm='"unknown"'
11526     fi
11527 fi
11528
11529 : see if strtod exists
11530 set strtod d_strtod
11531 eval $inlibc
11532
11533 : see if strtol exists
11534 set strtol d_strtol
11535 eval $inlibc
11536
11537 : see if strtold exists
11538 set strtold d_strtold
11539 eval $inlibc
11540
11541 : see if strtoll exists
11542 set strtoll d_strtoll
11543 eval $inlibc
11544
11545 case "$d_longlong-$d_strtoll" in
11546 "$define-$define")
11547         $cat <<EOM
11548 Checking whether your strtoll() works okay...
11549 EOM
11550         $cat >try.c <<'EOCP'
11551 #include <errno.h>
11552 #ifdef __hpux
11553 #define strtoll __strtoll
11554 #endif
11555 #include <stdio.h>
11556 extern long long int strtoll(char *s, char **, int); 
11557 static int bad = 0;
11558 int check(char *s, long long ell, int een) {
11559         long long gll;
11560         errno = 0;
11561         gll = strtoll(s, 0, 10);
11562         if (!((gll == ell) && (errno == een)))
11563                 bad++;
11564 }
11565 int main() {
11566         check(" 1",                                      1LL, 0);
11567         check(" 0",                                      0LL, 0);
11568         check("-1",                                     -1LL, 0);
11569         check("-9223372036854775808", -9223372036854775808LL, 0);
11570         check("-9223372036854775808", -9223372036854775808LL, 0);
11571         check(" 9223372036854775807",  9223372036854775807LL, 0);
11572         check("-9223372036854775808", -9223372036854775808LL, 0);
11573         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11574         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11575         if (!bad)
11576                 printf("ok\n");
11577 }
11578 EOCP
11579         set try
11580         if eval $compile; then
11581                 case "`./try`" in
11582                 ok) echo "Your strtoll() seems to be working okay." ;;
11583                 *) cat <<EOM >&4
11584 Your strtoll() doesn't seem to be working okay.
11585 EOM
11586                    d_strtoll="$undef"
11587                    ;;
11588                 esac
11589         fi
11590         ;;
11591 esac
11592
11593 : see if strtoul exists
11594 set strtoul d_strtoul
11595 eval $inlibc
11596
11597 : see if strtoull exists
11598 set strtoull d_strtoull
11599 eval $inlibc
11600
11601 case "$d_longlong-$d_strtoull" in
11602 "$define-$define")
11603         $cat <<EOM
11604 Checking whether your strtoull() works okay...
11605 EOM
11606         $cat >try.c <<'EOCP'
11607 #include <errno.h>
11608 #ifdef __hpux
11609 #define strtoull __strtoull
11610 #endif
11611 #include <stdio.h>
11612 extern unsigned long long int strtoull(char *s, char **, int); 
11613 static int bad = 0;
11614 int check(char *s, long long eull, int een) {
11615         long long gull;
11616         errno = 0;
11617         gull = strtoull(s, 0, 10);
11618         if (!((gull == eull) && (errno == een)))
11619                 bad++;
11620 }
11621 int main() {
11622         check(" 1",                                       1LL, 0);
11623         check(" 0",                                       0LL, 0);
11624         check("18446744073709551615", 18446744073709551615ULL, 0);
11625         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11626         if (!bad)
11627                 printf("ok\n");
11628 }
11629 EOCP
11630         set try
11631         if eval $compile; then
11632                 case "`./try`" in
11633                 ok) echo "Your strtoull() seems to be working okay." ;;
11634                 *) cat <<EOM >&4
11635 Your strtoull() doesn't seem to be working okay.
11636 EOM
11637                    d_strtoull="$undef"
11638                    ;;
11639                 esac
11640         fi
11641         ;;
11642 esac
11643
11644 : see if strtouq exists
11645 set strtouq d_strtouq
11646 eval $inlibc
11647
11648 : see if strxfrm exists
11649 set strxfrm d_strxfrm
11650 eval $inlibc
11651
11652 : see if symlink exists
11653 set symlink d_symlink
11654 eval $inlibc
11655
11656 : see if syscall exists
11657 set syscall d_syscall
11658 eval $inlibc
11659
11660 : see if sysconf exists
11661 set sysconf d_sysconf
11662 eval $inlibc
11663
11664 : see if system exists
11665 set system d_system
11666 eval $inlibc
11667
11668 : see if tcgetpgrp exists
11669 set tcgetpgrp d_tcgetpgrp
11670 eval $inlibc
11671
11672 : see if tcsetpgrp exists
11673 set tcsetpgrp d_tcsetpgrp
11674 eval $inlibc
11675
11676 : see if prototype for telldir is available
11677 echo " "
11678 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11679 eval $hasproto
11680
11681 : see if this is a sys/times.h system
11682 set sys/times.h i_systimes
11683 eval $inhdr
11684
11685 : see if times exists
11686 echo " "
11687 if set times val -f d_times; eval $csym; $val; then
11688         echo 'times() found.' >&4
11689         d_times="$define"
11690         inc=''
11691         case "$i_systimes" in
11692         "$define") inc='sys/times.h';;
11693         esac
11694         rp="What is the type returned by times() on this system?"
11695         set clock_t clocktype long stdio.h sys/types.h $inc
11696         eval $typedef_ask
11697 else
11698         echo 'times() NOT found, hope that will do.' >&4
11699         d_times="$undef"
11700         clocktype='int'
11701 fi
11702
11703 : see if truncate exists
11704 set truncate d_truncate
11705 eval $inlibc
11706
11707 : see if tzname[] exists
11708 echo " "
11709 if set tzname val -a d_tzname; eval $csym; $val; then
11710         val="$define"
11711         echo 'tzname[] found.' >&4
11712 else
11713         val="$undef"
11714         echo 'tzname[] NOT found.' >&4
11715 fi
11716 set d_tzname
11717 eval $setvar
11718
11719 : see if umask exists
11720 set umask d_umask
11721 eval $inlibc
11722
11723 : see if ustat exists
11724 set ustat d_ustat
11725 eval $inlibc
11726
11727 : backward compatibility for d_hvfork
11728 if test X$d_hvfork != X; then
11729         d_vfork="$d_hvfork"
11730         d_hvfork=''
11731 fi
11732 : see if there is a vfork
11733 val=''
11734 set vfork val
11735 eval $inlibc
11736
11737 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11738 : perl on Solaris 2.x, and probably elsewhere.
11739 case "$val" in
11740 $define)
11741         echo " "
11742         case "$usevfork" in
11743         false) dflt='n';;
11744         *) dflt='y';;
11745         esac
11746         cat <<'EOM'
11747  
11748 Perl can only use a vfork() that doesn't suffer from strict
11749 restrictions on calling functions or modifying global data in
11750 the child.  For example, glibc-2.1 contains such a vfork()
11751 that is unsuitable.  If your system provides a proper fork()
11752 call, chances are that you do NOT want perl to use vfork().
11753
11754 EOM
11755         rp="Do you still want to use vfork()?"
11756         . ./myread
11757         case "$ans" in
11758         y|Y) ;;
11759         *)
11760                 echo "Ok, we won't use vfork()."
11761                 val="$undef"
11762                 ;;
11763         esac
11764         ;;
11765 esac
11766 set d_vfork
11767 eval $setvar
11768 case "$d_vfork" in
11769 $define) usevfork='true';;
11770 *) usevfork='false';;
11771 esac
11772
11773 : see if this is an sysdir system
11774 set sys/dir.h i_sysdir
11775 eval $inhdr
11776
11777 : see if this is an sysndir system
11778 set sys/ndir.h i_sysndir
11779 eval $inhdr
11780
11781 : see if closedir exists
11782 set closedir d_closedir
11783 eval $inlibc
11784
11785 case "$d_closedir" in
11786 "$define")
11787         echo " "
11788         echo "Checking whether closedir() returns a status..." >&4
11789         cat > closedir.c <<EOM
11790 #$i_dirent I_DIRENT             /**/
11791 #$i_sysdir I_SYS_DIR            /**/
11792 #$i_sysndir I_SYS_NDIR          /**/
11793 #$i_systypes I_SYS_TYPES        /**/
11794
11795 #if defined(I_SYS_TYPES)
11796 #include <sys/types.h>
11797 #endif
11798 #if defined(I_DIRENT)
11799 #include <dirent.h>
11800 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11801 #include <sys/dir.h>
11802 #endif
11803 #else
11804 #ifdef I_SYS_NDIR
11805 #include <sys/ndir.h>
11806 #else
11807 #ifdef I_SYS_DIR
11808 #ifdef hp9000s500
11809 #include <ndir.h>       /* may be wrong in the future */
11810 #else
11811 #include <sys/dir.h>
11812 #endif
11813 #endif
11814 #endif
11815 #endif 
11816 int main() { return closedir(opendir(".")); }
11817 EOM
11818         set closedir
11819         if eval $compile_ok; then
11820                 if ./closedir > /dev/null 2>&1 ; then
11821                         echo "Yes, it does."
11822                         val="$undef"
11823                 else
11824                         echo "No, it doesn't."
11825                         val="$define"
11826                 fi
11827         else
11828                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11829                 val="$define"
11830         fi
11831         ;;
11832 *)
11833         val="$undef";
11834         ;;
11835 esac
11836 set d_void_closedir
11837 eval $setvar
11838 $rm -f closedir*
11839 : check for volatile keyword
11840 echo " "
11841 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11842 $cat >try.c <<'EOCP'
11843 int main()
11844 {
11845         typedef struct _goo_struct goo_struct;
11846         goo_struct * volatile goo = ((goo_struct *)0);
11847         struct _goo_struct {
11848                 long long_int;
11849                 int reg_int;
11850                 char char_var;
11851         };
11852         typedef unsigned short foo_t;
11853         char *volatile foo;
11854         volatile int bar;
11855         volatile foo_t blech;
11856         foo = foo;
11857 }
11858 EOCP
11859 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11860         val="$define"
11861         echo "Yup, it does."
11862 else
11863         val="$undef"
11864         echo "Nope, it doesn't."
11865 fi
11866 set d_volatile
11867 eval $setvar
11868 $rm -f try.*
11869
11870 : see if there is a wait4
11871 set wait4 d_wait4
11872 eval $inlibc
11873
11874 : see if waitpid exists
11875 set waitpid d_waitpid
11876 eval $inlibc
11877
11878 : see if wcstombs exists
11879 set wcstombs d_wcstombs
11880 eval $inlibc
11881
11882 : see if wctomb exists
11883 set wctomb d_wctomb
11884 eval $inlibc
11885
11886 : preserve RCS keywords in files with variable substitution, grrr
11887 Date='$Date'
11888 Id='$Id'
11889 Log='$Log'
11890 RCSfile='$RCSfile'
11891 Revision='$Revision'
11892
11893 case "$crosscompile" in
11894 ''|[nN]*) crosscompile="$undef" ;;
11895 esac
11896
11897 case "$osname" in
11898 next|rhapsody|darwin) multiarch="$define" ;;
11899 esac
11900 case "$multiarch" in
11901 ''|[nN]*) multiarch="$undef" ;;
11902 esac
11903
11904 : check for alignment requirements
11905 echo " "
11906 case "$crosscompile$multiarch" in
11907 *$define*)
11908         $cat <<EOM
11909 You seem to be either cross-compiling or doing a multiarchitecture build,
11910 skipping the memory alignment check.
11911
11912 EOM
11913         case "$alignbytes" in
11914         '') alignbytes=8 ;;
11915         esac
11916         ;;
11917 *)
11918         case "$alignbytes" in
11919         '') echo "Checking alignment constraints..." >&4
11920                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11921                         $cat >try.c <<'EOCP'
11922 typedef long double NV;
11923 EOCP
11924                 else
11925                         $cat >try.c <<'EOCP'
11926 typedef double NV;
11927 EOCP
11928                 fi
11929                 $cat >>try.c <<'EOCP'
11930 #include <stdio.h>
11931 struct foobar {
11932         char foo;
11933         NV bar;
11934 } try_algn;
11935 int main()
11936 {
11937     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11938     return(0);
11939 }
11940 EOCP
11941                 set try
11942                 if eval $compile_ok; then
11943                         dflt=`./try`
11944                 else
11945                         dflt='8'
11946                         echo "(I can't seem to compile the test program...)"
11947                 fi
11948                 ;;
11949         *) dflt="$alignbytes"
11950                 ;;
11951         esac
11952         rp="Doubles must be aligned on a how-many-byte boundary?"
11953         . ./myread
11954         alignbytes="$ans"
11955         $rm -f try.c try
11956         ;;
11957 esac
11958
11959
11960 : set the base revision
11961 baserev=5.0
11962
11963 : check for ordering of bytes in a long
11964 echo " "
11965 case "$crosscompile$multiarch" in
11966 *$define*)
11967         $cat <<EOM
11968 You seem to be either cross-compiling or doing a multiarchitecture build,
11969 skipping the byteorder check.
11970
11971 EOM
11972         byteorder='0xffff'
11973         ;;
11974 *)
11975         case "$byteorder" in
11976         '')
11977                 $cat <<'EOM'
11978 In the following, larger digits indicate more significance.  A big-endian
11979 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11980 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11981 machines may have weird orders like 3412.  A Cray will report 87654321,
11982 an Alpha will report 12345678. If the test program works the default is
11983 probably right.
11984 I'm now running the test program...
11985 EOM
11986                 $cat >try.c <<'EOCP'
11987 #include <stdio.h>
11988 int main()
11989 {
11990         int i;
11991         union {
11992                 unsigned long l;
11993                 char c[sizeof(long)];
11994         } u;
11995
11996         if (sizeof(long) > 4)
11997                 u.l = (0x08070605L << 32) | 0x04030201L;
11998         else
11999                 u.l = 0x04030201L;
12000         for (i = 0; i < sizeof(long); i++)
12001                 printf("%c", u.c[i]+'0');
12002         printf("\n");
12003         exit(0);
12004 }
12005 EOCP
12006                 xxx_prompt=y
12007                 set try
12008                 if eval $compile && ./try > /dev/null; then
12009                         dflt=`./try`
12010                         case "$dflt" in
12011                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12012                                 echo "(The test program ran ok.)"
12013                                 echo "byteorder=$dflt"
12014                                 xxx_prompt=n
12015                         ;;
12016                         ????|????????) echo "(The test program ran ok.)" ;;
12017                         *) echo "(The test program didn't run right for some reason.)" ;;
12018                         esac
12019                 else
12020                         dflt='4321'
12021                         cat <<'EOM'
12022 (I can't seem to compile the test program.  Guessing big-endian...)
12023 EOM
12024                 fi
12025                 case "$xxx_prompt" in
12026                 y)
12027                         rp="What is the order of bytes in a long?"
12028                         . ./myread
12029                         byteorder="$ans"
12030                         ;;
12031                 *)      byteorder=$dflt
12032                         ;;
12033                 esac
12034                 ;;
12035         esac
12036         $rm -f try.c try
12037         ;;
12038 esac
12039
12040
12041 : how do we catenate cpp tokens here?
12042 echo " "
12043 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12044 $cat >cpp_stuff.c <<'EOCP'
12045 #define RCAT(a,b)a/**/b
12046 #define ACAT(a,b)a ## b
12047 RCAT(Rei,ser)
12048 ACAT(Cir,cus)
12049 EOCP
12050 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12051 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12052         echo "Oh!  Smells like ANSI's been here." >&4
12053         echo "We can catify or stringify, separately or together!"
12054         cpp_stuff=42
12055 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12056         echo "Ah, yes!  The good old days!" >&4
12057         echo "However, in the good old days we don't know how to stringify and"
12058         echo "catify at the same time."
12059         cpp_stuff=1
12060 else
12061         $cat >&4 <<EOM
12062 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12063 to have to edit the values of CAT[2-5] in config.h...
12064 EOM
12065         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12066 fi
12067 $rm -f cpp_stuff.*
12068
12069 : see if this is a db.h system
12070 set db.h i_db
12071 eval $inhdr
12072
12073 case "$i_db" in
12074 $define)
12075         : Check db version.
12076         echo " "
12077         echo "Checking Berkeley DB version ..." >&4
12078         $cat >try.c <<EOCP
12079 #$d_const HASCONST
12080 #ifndef HASCONST
12081 #define const
12082 #endif
12083 #include <sys/types.h>
12084 #include <stdio.h>
12085 #include <db.h>
12086 int main()
12087 {
12088 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12089     int Major, Minor, Patch ;
12090     unsigned long Version ;
12091     (void)db_version(&Major, &Minor, &Patch) ;
12092     printf("You have Berkeley DB Version 2 or greater\n");
12093
12094     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12095                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12096     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12097                 Major, Minor, Patch) ;
12098
12099     /* check that db.h & libdb are compatible */
12100     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12101         printf("db.h and libdb are incompatible\n") ;
12102         exit(3);        
12103     }
12104
12105     printf("db.h and libdb are compatible\n") ;
12106
12107     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12108                 + DB_VERSION_PATCH ;
12109
12110     /* needs to be >= 2.3.4 */
12111     if (Version < 2003004) {
12112     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12113         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12114         exit(2);        
12115     }
12116
12117     exit(0);
12118 #else
12119 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12120     printf("You have Berkeley DB Version 1\n");
12121     exit(0);    /* DB version < 2: the coast is clear. */
12122 #else
12123     exit(1);    /* <db.h> not Berkeley DB? */
12124 #endif
12125 #endif
12126 }
12127 EOCP
12128         set try
12129         if eval $compile_ok && ./try; then
12130                 echo 'Looks OK.' >&4
12131         else
12132                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12133                 i_db=$undef
12134                 case " $libs " in
12135                 *"-ldb "*)
12136                         : Remove db from list of libraries to use
12137                         echo "Removing unusable -ldb from library list" >&4
12138                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12139                         shift
12140                         libs="$*"
12141                         echo "libs = $libs" >&4
12142                         ;;
12143                 esac
12144         fi
12145         $rm -f try.*
12146         ;;
12147 esac
12148
12149 case "$i_db" in
12150 define)
12151         : Check the return type needed for hash 
12152         echo " "
12153         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12154         $cat >try.c <<EOCP
12155 #$d_const HASCONST
12156 #ifndef HASCONST
12157 #define const
12158 #endif
12159 #include <sys/types.h>
12160 #include <db.h>
12161
12162 #ifndef DB_VERSION_MAJOR
12163 u_int32_t hash_cb (ptr, size)
12164 const void *ptr;
12165 size_t size;
12166 {
12167 }
12168 HASHINFO info;
12169 int main()
12170 {
12171         info.hash = hash_cb;
12172 }
12173 #endif
12174 EOCP
12175         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12176                 if $contains warning try.out >>/dev/null 2>&1 ; then
12177                         db_hashtype='int'
12178                 else
12179                         db_hashtype='u_int32_t'
12180                 fi
12181         else
12182                 : XXX Maybe we should just give up here.
12183                 db_hashtype=u_int32_t
12184                 $cat try.out >&4
12185                 echo "Help:  I can't seem to compile the db test program." >&4
12186                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12187         fi
12188         $rm -f try.*
12189         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12190         ;;
12191 *)      db_hashtype=u_int32_t
12192         ;;
12193 esac
12194 case "$i_db" in
12195 define)
12196         : Check the return type needed for prefix 
12197         echo " "
12198         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12199         cat >try.c <<EOCP
12200 #$d_const HASCONST
12201 #ifndef HASCONST
12202 #define const
12203 #endif
12204 #include <sys/types.h>
12205 #include <db.h>
12206
12207 #ifndef DB_VERSION_MAJOR
12208 size_t prefix_cb (key1, key2)
12209 const DBT *key1;
12210 const DBT *key2;
12211 {
12212 }
12213 BTREEINFO info;
12214 int main()
12215 {
12216         info.prefix = prefix_cb;
12217 }
12218 #endif
12219 EOCP
12220         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12221                 if $contains warning try.out >>/dev/null 2>&1 ; then
12222                         db_prefixtype='int'
12223                 else
12224                         db_prefixtype='size_t'
12225                 fi
12226         else
12227                 db_prefixtype='size_t'
12228                 : XXX Maybe we should just give up here.
12229                 $cat try.out >&4
12230                 echo "Help:  I can't seem to compile the db test program." >&4
12231                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12232         fi
12233         $rm -f try.*
12234         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12235         ;;
12236 *)      db_prefixtype='size_t'
12237         ;;
12238 esac
12239
12240 : check for void type
12241 echo " "
12242 echo "Checking to see how well your C compiler groks the void type..." >&4
12243 case "$voidflags" in
12244 '')
12245         $cat >try.c <<'EOCP'
12246 #if TRY & 1
12247 void sub() {
12248 #else
12249 sub() {
12250 #endif
12251         extern void moo();      /* function returning void */
12252         void (*goo)();          /* ptr to func returning void */
12253 #if TRY & 8
12254         void *hue;              /* generic ptr */
12255 #endif
12256 #if TRY & 2
12257         void (*foo[10])();
12258 #endif
12259
12260 #if TRY & 4
12261         if(goo == moo) {
12262                 exit(0);
12263         }
12264 #endif
12265         exit(0);
12266 }
12267 int main() { sub(); }
12268 EOCP
12269         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12270                 voidflags=$defvoidused
12271         echo "Good.  It appears to support void to the level $package wants.">&4
12272                 if $contains warning .out >/dev/null 2>&1; then
12273                         echo "However, you might get some warnings that look like this:"
12274                         $cat .out
12275                 fi
12276         else
12277 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12278                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12279                         echo "It supports 1..."
12280                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12281                                 echo "It also supports 2..."
12282                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12283                                         voidflags=7
12284                                         echo "And it supports 4 but not 8 definitely."
12285                                 else
12286                                         echo "It doesn't support 4..."
12287                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12288                                                 voidflags=11
12289                                                 echo "But it supports 8."
12290                                         else
12291                                                 voidflags=3
12292                                                 echo "Neither does it support 8."
12293                                         fi
12294                                 fi
12295                         else
12296                                 echo "It does not support 2..."
12297                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12298                                         voidflags=13
12299                                         echo "But it supports 4 and 8."
12300                                 else
12301                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12302                                                 voidflags=5
12303                                                 echo "And it supports 4 but has not heard about 8."
12304                                         else
12305                                                 echo "However it supports 8 but not 4."
12306                                         fi
12307                                 fi
12308                         fi
12309                 else
12310                         echo "There is no support at all for void."
12311                         voidflags=0
12312                 fi
12313         fi
12314 esac
12315 case "$voidflags" in
12316 "$defvoidused") ;;
12317 *)      $cat >&4 <<'EOM'
12318   Support flag bits are:
12319     1: basic void declarations.
12320     2: arrays of pointers to functions returning void.
12321     4: operations between pointers to and addresses of void functions.
12322     8: generic void pointers.
12323 EOM
12324         dflt="$voidflags";
12325         rp="Your void support flags add up to what?"
12326         . ./myread
12327         voidflags="$ans"
12328         ;;
12329 esac
12330 $rm -f try.* .out
12331
12332
12333 : How can we generate normalized random numbers ?
12334 echo " "
12335 echo "Looking for a random number function..." >&4
12336 case "$randfunc" in
12337 '')
12338         if set drand48 val -f; eval $csym; $val; then
12339                 dflt="drand48"
12340                 echo "Good, found drand48()." >&4
12341         elif set random val -f; eval $csym; $val; then
12342                 dflt="random"
12343                 echo "OK, found random()." >&4
12344         else
12345                 dflt="rand"
12346                 echo "Yick, looks like I have to use rand()." >&4
12347         fi
12348         echo " "
12349         ;;
12350 *)
12351         dflt="$randfunc"
12352         ;;
12353 esac
12354 cont=true
12355
12356 case "$ccflags" in
12357 *-Dmy_rand=*|*-Dmy_srand=*)
12358         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12359         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12360         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12361         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12362         ;;
12363 esac
12364
12365 while $test "$cont"; do
12366         rp="Use which function to generate random numbers?"
12367         . ./myread
12368         if $test "$ans" = "$dflt"; then
12369                 : null
12370         else
12371                 randbits=''
12372         fi
12373         randfunc="$ans"
12374         if set $ans val -f; eval $csym; $val; then
12375                 cont=''
12376         else
12377                 dflt=y
12378                 rp="I cannot find function $ans. Use that name anyway?"
12379                 . ./myread
12380                 dflt=rand
12381                 case "$ans" in
12382                         [yY]*) cont='';;
12383                 esac
12384         fi
12385         case "$cont" in
12386         '')
12387                 case "$randfunc" in
12388                 drand48)
12389                         drand01="drand48()"
12390                         seedfunc="srand48"
12391                         randbits=48
12392                         randseedtype=long
12393                         ;;
12394                 rand|random)
12395                         case "$randbits" in
12396                         '')
12397 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12398                                 $cat >try.c <<EOCP
12399 #$i_unistd I_UNISTD
12400 #$i_stdlib I_STDLIB
12401 #include <stdio.h>
12402 #ifdef I_UNISTD
12403 #  include <unistd.h>
12404 #endif
12405 #ifdef I_STDLIB
12406 #  include <stdlib.h>
12407 #endif
12408 int main()
12409 {
12410         register int i;
12411         register unsigned long tmp;
12412         register unsigned long max = 0L;
12413
12414         for (i = 1000; i; i--) {
12415                 tmp = (unsigned long) $randfunc();
12416                 if (tmp > max) max = tmp;
12417         }
12418         for (i = 0; max; i++)
12419                 max /= 2;
12420         printf("%d\n",i);
12421 }
12422 EOCP
12423                                 set try
12424                                 if eval $compile_ok; then
12425                                         dflt=`try`
12426                                 else
12427                                         dflt='?'
12428                                         echo "(I can't seem to compile the test program...)"
12429                                 fi
12430                                 ;;
12431                         *)
12432                                 dflt="$randbits"
12433                                 ;;
12434                         esac
12435                         rp="How many bits does your $randfunc() function produce?"
12436                         . ./myread
12437                         randbits="$ans"
12438                         $rm -f try.c try
12439                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12440                         seedfunc="s$randfunc"
12441                         randseedtype=unsigned
12442                         ;;
12443                 *)
12444                         dflt="31"
12445                         rp="How many bits does your $randfunc() function produce?"
12446                         . ./myread
12447                         randbits="$ans"
12448                         seedfunc="s$randfunc"
12449                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12450                         if set $seedfunc val -f; eval $csym; $val; then
12451                                 echo "(Using $seedfunc() to seed random generator)"
12452                         else
12453                                 echo "(Warning: no $seedfunc() to seed random generator)"
12454                                 seedfunc=rand
12455                         fi
12456                         randseedtype=unsigned
12457                         ;;
12458                 esac
12459                 ;;
12460         esac
12461 done
12462
12463 echo " "
12464 echo "Determining whether or not we are on an EBCDIC system..." >&4
12465 $cat >tebcdic.c <<'EOM'
12466 int main()
12467 {
12468   if ('M'==0xd4) return 0;
12469   return 1;
12470 }
12471 EOM
12472
12473 val=$undef
12474 set tebcdic
12475 if eval $compile_ok; then
12476         if ./tebcdic; then
12477                 echo "You have EBCDIC." >&4
12478                 val="$define"
12479         else
12480                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12481         fi
12482 else
12483         echo "I'm unable to compile the test program." >&4
12484         echo "I'll assume ASCII or some ISO Latin." >&4
12485 fi
12486 $rm -f tebcdic.c tebcdic
12487 set ebcdic
12488 eval $setvar
12489
12490 echo " "
12491 $cat >&4 <<EOM
12492 Checking how to flush all pending stdio output...
12493 EOM
12494 # I only know how to find the first 32 possibly open files on SunOS.
12495 # See also hints/sunos_4_1.sh and util.c  --AD
12496 case "$osname" in
12497 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12498 esac
12499 $cat >>try.c <<EOCP
12500 #include <stdio.h>
12501 #$i_unistd I_UNISTD
12502 #ifdef I_UNISTD
12503 # include <unistd.h>
12504 #endif
12505 #$d_sysconf HAS_SYSCONF
12506 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12507 #ifdef HAS_STDIO_STREAM_ARRAY
12508 # define STDIO_STREAM_ARRAY $stdio_stream_array
12509 #endif
12510 int main() {
12511   FILE* p = fopen("try.out", "w");
12512 #ifdef TRY_FPUTC
12513   fputc('x', p);
12514 #else
12515 # ifdef TRY_FPRINTF
12516   fprintf(p, "x");
12517 # endif
12518 #endif
12519 #ifdef TRY_FFLUSH_NULL
12520   fflush(NULL);
12521 #endif
12522 #ifdef TRY_FFLUSH_ALL
12523   {
12524     long open_max = -1;
12525 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12526     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12527 # else
12528 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12529     open_max = sysconf(_SC_OPEN_MAX);
12530 #  else
12531 #   ifdef FOPEN_MAX
12532     open_max = FOPEN_MAX;
12533 #   else
12534 #    ifdef OPEN_MAX
12535     open_max = OPEN_MAX;
12536 #    else
12537 #     ifdef _NFILE
12538     open_max = _NFILE;
12539 #     endif
12540 #    endif
12541 #   endif
12542 #  endif
12543 # endif 
12544 # ifdef HAS_STDIO_STREAM_ARRAY
12545     if (open_max > 0) {
12546       long i;
12547       for (i = 0; i < open_max; i++)
12548             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12549                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12550                 STDIO_STREAM_ARRAY[i]._flag)
12551                 fflush(&STDIO_STREAM_ARRAY[i]);
12552     }   
12553   }
12554 # endif
12555 #endif
12556   _exit(42);
12557 }
12558 EOCP
12559 : first we have to find out how _not_ to flush
12560 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12561     output=''
12562     set try -DTRY_FPUTC
12563     if eval $compile; then
12564             $rm -f try.out
12565             ./try$exe_ext 2>/dev/null
12566             if $test ! -s try.out -a "X$?" = X42; then
12567                 output=-DTRY_FPUTC
12568             fi
12569     fi
12570     case "$output" in
12571     '')
12572             set try -DTRY_FPRINTF
12573             $rm -f try.out
12574             if eval $compile; then
12575                     $rm -f try.out
12576                     ./try$exe_ext 2>/dev/null
12577                     if $test ! -s try.out -a "X$?" = X42; then
12578                         output=-DTRY_FPRINTF
12579                     fi
12580             fi
12581         ;;
12582     esac
12583 fi
12584 : check for fflush NULL behaviour
12585 case "$fflushNULL" in
12586 '')     set try -DTRY_FFLUSH_NULL $output
12587         if eval $compile; then
12588                 $rm -f try.out
12589                 ./try$exe_ext 2>/dev/null
12590                 code="$?"
12591                 if $test -s try.out -a "X$code" = X42; then
12592                         fflushNULL="`$cat try.out`"
12593                 else
12594                         if $test "X$code" != X42; then
12595                                 $cat >&4 <<EOM
12596 (If this test failed, don't worry, we'll try another method shortly.)
12597 EOM
12598                         fi
12599                 fi
12600         fi
12601         $rm -f core try.core core.try.*
12602         case "$fflushNULL" in
12603         x)      $cat >&4 <<EOM
12604 Your fflush(NULL) works okay for output streams.
12605 Let's see if it clobbers input pipes...
12606 EOM
12607 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12608 # bug that improperly flushes the input end of pipes.  So we avoid the
12609 # autoflush on fork/system/exec support for now. :-(
12610 $cat >tryp.c <<EOCP
12611 #include <stdio.h>
12612 int
12613 main(int argc, char **argv)
12614 {
12615     char buf[1024];
12616     int i;
12617     char *bp = buf;
12618     while (1) {
12619         while ((i = getc(stdin)) != -1
12620                && (*bp++ = i) != '\n'
12621                && bp < &buf[1024])
12622         /* DO NOTHING */ ;
12623         *bp = '\0';
12624         fprintf(stdout, "%s", buf);
12625         fflush(NULL);
12626         if (i == -1)
12627             return 0;
12628         bp = buf;
12629     }
12630 }
12631 EOCP
12632                 fflushNULL="$define"
12633                 set tryp
12634                 if eval $compile; then
12635                     $rm -f tryp.out
12636                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12637                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12638                        $cat >&4 <<EOM
12639 fflush(NULL) seems to behave okay with input streams.
12640 EOM
12641                         fflushNULL="$define"
12642                     else
12643                         $cat >&4 <<EOM
12644 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12645 EOM
12646                         fflushNULL="$undef"
12647                     fi
12648                 fi
12649                 $rm -f core tryp.c tryp.core core.tryp.*
12650                 ;;
12651         '')     $cat >&4 <<EOM
12652 Your fflush(NULL) isn't working (contrary to ANSI C).
12653 EOM
12654                 fflushNULL="$undef"
12655                 ;;
12656         *)      $cat >&4 <<EOM
12657 Cannot figure out whether your fflush(NULL) works or not.
12658 I'm assuming it doesn't (contrary to ANSI C).
12659 EOM
12660                 fflushNULL="$undef"
12661                 ;;
12662         esac
12663         ;;
12664 $define|true|[yY]*)
12665         fflushNULL="$define"
12666         ;;
12667 *)
12668         fflushNULL="$undef"
12669         ;;
12670 esac
12671 : check explicit looping only if NULL did not work, and if the pipe
12672 : bug does not show up on an explicit flush too
12673 case "$fflushNULL" in
12674 "$undef")
12675         $cat >tryp.c <<EOCP
12676 #include <stdio.h>
12677 int
12678 main(int argc, char **argv)
12679 {
12680     char buf[1024];
12681     int i;
12682     char *bp = buf;
12683     while (1) {
12684         while ((i = getc(stdin)) != -1
12685                && (*bp++ = i) != '\n'
12686                && bp < &buf[1024])
12687         /* DO NOTHING */ ;
12688         *bp = '\0';
12689         fprintf(stdout, "%s", buf);
12690         fflush(stdin);
12691         if (i == -1)
12692             return 0;
12693         bp = buf;
12694     }
12695 }
12696 EOCP
12697         set tryp
12698         if eval $compile; then
12699             $rm -f tryp.out
12700             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12701             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12702                $cat >&4 <<EOM
12703 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12704 EOM
12705                 : now check for fflushall behaviour
12706                 case "$fflushall" in
12707                 '')     set try -DTRY_FFLUSH_ALL $output
12708                         if eval $compile; then
12709                                 $cat >&4 <<EOM
12710 (Now testing the other method--but note that this also may fail.)
12711 EOM
12712                                 $rm -f try.out
12713                                 ./try$exe_ext 2>/dev/null
12714                                 if $test -s try.out -a "X$?" = X42; then
12715                                         fflushall="`$cat try.out`"
12716                                 fi
12717                         fi
12718                         $rm -f core try.core core.try.*
12719                         case "$fflushall" in
12720                         x)      $cat >&4 <<EOM
12721 Whew. Flushing explicitly all the stdio streams works.
12722 EOM
12723                                 fflushall="$define"
12724                                 ;;
12725                         '')     $cat >&4 <<EOM
12726 Sigh. Flushing explicitly all the stdio streams doesn't work.
12727 EOM
12728                                 fflushall="$undef"
12729                                 ;;
12730                         *)      $cat >&4 <<EOM
12731 Cannot figure out whether flushing stdio streams explicitly works or not.
12732 I'm assuming it doesn't.
12733 EOM
12734                                 fflushall="$undef"
12735                                 ;;
12736                         esac
12737                         ;;
12738                 "$define"|true|[yY]*)
12739                         fflushall="$define"
12740                         ;;
12741                 *)
12742                         fflushall="$undef"
12743                         ;;
12744                 esac
12745             else
12746                 $cat >&4 <<EOM
12747 All is futile.  Even fflush(stdin) clobbers input pipes!
12748 EOM
12749                 fflushall="$undef"
12750             fi
12751         else
12752             fflushall="$undef"
12753         fi
12754         $rm -f core tryp.c tryp.core core.tryp.*
12755         ;;
12756 *)      fflushall="$undef"
12757         ;;
12758 esac
12759
12760 case "$fflushNULL$fflushall" in
12761 undefundef)
12762         $cat <<EOM
12763 OK, I give up.  I cannot figure out how to flush pending stdio output.
12764 We won't be flushing handles at all before fork/exec/popen.
12765 EOM
12766         ;;
12767 esac
12768 $rm -f try.* try$exe_ext
12769
12770 : Store the full pathname to the ar program for use in the C program
12771 : Respect a hint or command line value for full_ar.
12772 case "$full_ar" in
12773 '') full_ar=$ar ;;
12774 esac
12775
12776 : Store the full pathname to the sed program for use in the C program
12777 full_sed=$sed
12778
12779 : see what type gids are declared as in the kernel
12780 echo " "
12781 echo "Looking for the type for group ids returned by getgid()."
12782 set gid_t gidtype xxx stdio.h sys/types.h
12783 eval $typedef
12784 case "$gidtype" in
12785 xxx)
12786         xxx=`./findhdr sys/user.h`
12787         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12788         case $1 in
12789         unsigned) dflt="$1 $2" ;;
12790         *) dflt="$1" ;;
12791         esac
12792         ;;
12793 *) dflt="$gidtype";;
12794 esac
12795 case "$gidtype" in
12796 gid_t) echo "gid_t found." ;;
12797 *)      rp="What is the type for group ids returned by getgid()?"
12798         . ./myread
12799         gidtype="$ans"
12800         ;;
12801 esac
12802
12803 echo " "
12804 case "$gidtype" in
12805 *_t) zzz="$gidtype"     ;;
12806 *)   zzz="gid"          ;;
12807 esac
12808 echo "Checking the size of $zzz..." >&4 
12809 cat > try.c <<EOCP
12810 #include <sys/types.h>
12811 #include <stdio.h>
12812 int main() {
12813     printf("%d\n", (int)sizeof($gidtype));
12814     exit(0);
12815 }
12816 EOCP
12817 set try
12818 if eval $compile_ok; then
12819         yyy=`./try`
12820         case "$yyy" in
12821         '')     gidsize=4
12822                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12823                 ;;
12824         *)      gidsize=$yyy
12825                 echo "Your $zzz is $gidsize bytes long."
12826                 ;;
12827         esac
12828 else
12829         gidsize=4
12830         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12831 fi
12832
12833
12834 echo " "
12835 case "$gidtype" in
12836 *_t) zzz="$gidtype"     ;;
12837 *)   zzz="gid"          ;;
12838 esac
12839 echo "Checking the sign of $zzz..." >&4 
12840 cat > try.c <<EOCP
12841 #include <sys/types.h>
12842 #include <stdio.h>
12843 int main() {
12844         $gidtype foo = -1;
12845         if (foo < 0)
12846                 printf("-1\n");
12847         else
12848                 printf("1\n");
12849 }
12850 EOCP
12851 set try
12852 if eval $compile; then
12853         yyy=`./try`
12854         case "$yyy" in
12855         '')     gidsign=1
12856                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12857                 ;;
12858         *)      gidsign=$yyy
12859                 case "$gidsign" in
12860                  1) echo "Your $zzz is unsigned." ;;
12861                 -1) echo "Your $zzz is signed."   ;;
12862                 esac
12863                 ;;
12864         esac
12865 else
12866         gidsign=1
12867         echo "(I can't compile the test program--guessing unsigned.)" >&4
12868 fi
12869
12870
12871 echo " "
12872
12873 if $test X"$quadtype" != X; then
12874
12875 echo "Checking how to print 64-bit integers..." >&4
12876
12877 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12878         $cat >try.c <<'EOCP'
12879 #include <sys/types.h>
12880 #include <stdio.h>
12881 int main() {
12882   int q = 12345678901;
12883   printf("%ld\n", q);
12884 }
12885 EOCP
12886         set try
12887         if eval $compile; then
12888                 yyy=`./try$exe_ext`
12889                 case "$yyy" in
12890                 12345678901)
12891                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12892                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12893                         echo "We will use %d."
12894                         ;;
12895                 esac
12896         fi
12897 fi
12898
12899 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12900         $cat >try.c <<'EOCP'
12901 #include <sys/types.h>
12902 #include <stdio.h>
12903 int main() {
12904   long q = 12345678901;
12905   printf("%ld\n", q);
12906 }
12907 EOCP
12908         set try
12909         if eval $compile; then
12910                 yyy=`./try$exe_ext`
12911                 case "$yyy" in
12912                 12345678901)
12913                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12914                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12915                         echo "We will use %ld."
12916                         ;;
12917                 esac
12918         fi
12919 fi
12920
12921 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12922         $cat >try.c <<'EOCP'
12923 #include <sys/types.h>
12924 #include <inttypes.h>
12925 #include <stdio.h>
12926 int main() {
12927   int64_t q = 12345678901;
12928   printf("%" PRId64 "\n", q);
12929 }
12930 EOCP
12931         set try
12932         if eval $compile; then
12933                 yyy=`./try$exe_ext`
12934                 case "$yyy" in
12935                 12345678901)
12936                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12937                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12938                         echo "We will use the C9X style."
12939                         ;;
12940                 esac
12941         fi
12942 fi
12943
12944 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12945         $cat >try.c <<'EOCP'
12946 #include <sys/types.h>
12947 #include <stdio.h>
12948 int main() {
12949   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12950   printf("%lld\n", q);
12951 }
12952 EOCP
12953         set try
12954         if eval $compile; then
12955                 yyy=`./try$exe_ext`
12956                 case "$yyy" in
12957                 12345678901)
12958                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12959                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12960                         echo "We will use the %lld style."
12961                         ;;
12962                 esac
12963         fi
12964 fi
12965
12966 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12967         $cat >try.c <<EOCP
12968 #include <sys/types.h>
12969 #include <stdio.h>
12970 int main() {
12971   $quadtype q = 12345678901;
12972   printf("%Ld\n", q);
12973 }
12974 EOCP
12975         set try
12976         if eval $compile; then
12977                 yyy=`./try$exe_ext`
12978                 case "$yyy" in
12979                 12345678901)
12980                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12981                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12982                         echo "We will use %Ld."
12983                         ;;
12984                 esac
12985         fi
12986 fi
12987
12988 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12989         $cat >try.c <<EOCP
12990 #include <sys/types.h>
12991 #include <stdio.h>
12992 int main() {
12993   $quadtype q = 12345678901;
12994   printf("%qd\n", q);
12995 }
12996 EOCP
12997         set try
12998         if eval $compile; then
12999                 yyy=`./try$exe_ext`
13000                 case "$yyy" in
13001                 12345678901)
13002                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13003                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13004                         echo "We will use %qd."
13005                         ;;
13006                 esac
13007         fi
13008 fi
13009
13010 if $test X"$sPRId64" = X; then
13011         echo "Cannot figure out how to print 64-bit integers." >&4
13012 fi
13013
13014 $rm -f try try.*
13015
13016 fi
13017
13018 case "$sPRId64" in
13019 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13020         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
13021         ;;
13022 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13023         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
13024         ;;
13025 esac
13026
13027
13028 echo " "
13029 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13030
13031 if $test X"$ivsize" = X8; then
13032         ivdformat="$sPRId64"
13033         uvuformat="$sPRIu64"
13034         uvoformat="$sPRIo64"
13035         uvxformat="$sPRIx64"
13036 else
13037         if $test X"$ivsize" = X"$longsize"; then
13038                 ivdformat='"ld"'
13039                 uvuformat='"lu"'
13040                 uvoformat='"lo"'
13041                 uvxformat='"lx"'
13042         else
13043                 if $test X"$ivsize" = X"$intsize"; then
13044                         ivdformat='"d"'
13045                         uvuformat='"u"'
13046                         uvoformat='"o"'
13047                         uvxformat='"x"'
13048                 else
13049                         : far out
13050                         if $test X"$ivsize" = X"$shortsize"; then
13051                                 ivdformat='"hd"'
13052                                 uvuformat='"hu"'
13053                                 uvoformat='"ho"'
13054                                 uvxformat='"hx"'
13055                         fi
13056                 fi
13057         fi
13058 fi
13059
13060 case "$ivdformat" in
13061 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13062     exit 1
13063     ;;
13064 esac
13065
13066
13067 echo " "
13068 $echo "Checking the format string to be used for gids..." >&4
13069
13070 case "$gidsign" in
13071 -1)     if $test X"$gidsize" = X"$ivsize"; then
13072                 gidformat="$ivdformat"
13073         else
13074                 if $test X"$gidsize" = X"$longsize"; then
13075                         gidformat='"ld"'
13076                 else
13077                         if $test X"$gidsize" = X"$intsize"; then
13078                                 gidformat='"d"'
13079                         else
13080                                 if $test X"$gidsize" = X"$shortsize"; then
13081                                         gidformat='"hd"'
13082                                 fi
13083                         fi
13084                 fi
13085         fi
13086         ;;
13087 *)      if $test X"$gidsize" = X"$uvsize"; then
13088                 gidformat="$uvuformat"
13089         else
13090                 if $test X"$gidsize" = X"$longsize"; then
13091                         gidformat='"lu"'
13092                 else
13093                         if $test X"$gidsize" = X"$intsize"; then
13094                                 gidformat='"u"'
13095                         else
13096                                 if $test X"$gidsize" = X"$shortsize"; then
13097                                         gidformat='"hu"'
13098                                 fi
13099                         fi
13100                 fi
13101         fi
13102         ;;
13103 esac
13104
13105 : see if getgroups exists
13106 set getgroups d_getgrps
13107 eval $inlibc
13108
13109 : see if setgroups exists
13110 set setgroups d_setgrps
13111 eval $inlibc
13112
13113
13114 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13115 echo " "
13116 case "$d_getgrps$d_setgrps" in
13117 *define*)
13118         case "$groupstype" in
13119         '') dflt="$gidtype" ;;
13120         *)  dflt="$groupstype" ;;
13121         esac
13122         $cat <<EOM
13123 What type of pointer is the second argument to getgroups() and setgroups()?
13124 Usually this is the same as group ids, $gidtype, but not always.
13125
13126 EOM
13127         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13128         . ./myread
13129         groupstype="$ans"
13130         ;;
13131 *)  groupstype="$gidtype";;
13132 esac
13133
13134 echo " "
13135 echo "Checking if your $make program sets \$(MAKE)..." >&4
13136 case "$make_set_make" in
13137 '')
13138         $sed 's/^X //' > testmake.mak << 'EOF'
13139 Xall:
13140 X       @echo 'maketemp="$(MAKE)"'
13141 EOF
13142         case "`$make -f testmake.mak 2>/dev/null`" in
13143         *maketemp=*) make_set_make='#' ;;
13144         *)      make_set_make="MAKE=$make" ;;
13145         esac
13146         $rm -f testmake.mak
13147         ;;
13148 esac
13149 case "$make_set_make" in
13150 '#') echo "Yup, it does.";;
13151 *) echo "Nope, it doesn't.";;
13152 esac
13153
13154 : see what type is used for mode_t
13155 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13156 set mode_t modetype int stdio.h sys/types.h
13157 eval $typedef_ask
13158
13159 : define a fucntion to check prototypes
13160 $cat > protochk <<EOSH
13161 $startsh
13162 cc="$cc"
13163 optimize="$optimize"
13164 ccflags="$ccflags"
13165 prototype="$prototype"
13166 define="$define"
13167 rm=$rm
13168 EOSH
13169
13170 $cat >> protochk <<'EOSH'
13171
13172 $rm -f try.c
13173 foo="$1"
13174 shift
13175 while test $# -ge 2; do
13176         case "$1" in
13177                 $define) echo "#include <$2>" >> try.c ;;
13178                 literal) echo "$2" >> try.c ;;
13179         esac
13180     shift 2
13181 done
13182 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13183 cat >> try.c <<'EOCP'
13184 #ifdef CAN_PROTOTYPE
13185 #define _(args) args
13186 #else
13187 #define _(args) ()
13188 #endif
13189 EOCP
13190 echo "$foo" >> try.c
13191 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13192 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13193 status=$?
13194 $rm -f try.[co]
13195 exit $status
13196 EOSH
13197 chmod +x protochk
13198 $eunicefix protochk
13199
13200 : see what type is used for size_t
13201 rp="What is the type used for the length parameter for string functions?"
13202 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13203 eval $typedef_ask
13204
13205 : check for type of arguments to gethostbyaddr. 
13206 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13207         case "$d_gethbyaddr" in
13208         $define)
13209                 $cat <<EOM
13210
13211 Checking to see what type of arguments are accepted by gethostbyaddr().
13212 EOM
13213                 hdrs="$define sys/types.h
13214                         $d_socket sys/socket.h 
13215                         $i_niin netinet/in.h 
13216                         $i_netdb netdb.h
13217                         $i_unistd unistd.h"
13218                 : The first arg can 'char *' or 'void *'
13219                 : The second arg is some of integral type
13220                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13221                         for yyy in size_t long int; do
13222                                 case "$netdb_host_type" in
13223                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13224                                         if ./protochk "$try" $hdrs; then
13225                                                 echo "Your system accepts $xxx for the first arg."
13226                                                 echo "...and $yyy for the second arg."
13227                                                 netdb_host_type="$xxx"
13228                                                 netdb_hlen_type="$yyy"
13229                                         fi
13230                                         ;;
13231                                 esac
13232                         done
13233                 done
13234                 : In case none of those worked, prompt the user.
13235                 case "$netdb_host_type" in
13236                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13237                         dflt='char *'
13238                         . ./myread
13239                         netdb_host_type=$ans
13240                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13241                         dflt="$sizetype"
13242                         . ./myread
13243                         netdb_hlen_type=$ans
13244                         ;;
13245                 esac
13246                 ;;
13247         *)      : no gethostbyaddr, so pick harmless defaults
13248                 netdb_host_type='char *'
13249                 netdb_hlen_type="$sizetype"
13250                 ;;
13251         esac
13252         # Remove the "const" if needed. -- but then we'll have a 
13253         # prototype clash!
13254         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13255 fi
13256
13257 : check for type of argument to gethostbyname. 
13258 if test "X$netdb_name_type" = X ; then
13259         case "$d_gethbyname" in
13260         $define)
13261                 $cat <<EOM
13262
13263 Checking to see what type of argument is accepted by gethostbyname().
13264 EOM
13265                 hdrs="$define sys/types.h
13266                         $d_socket sys/socket.h 
13267                         $i_niin netinet/in.h 
13268                         $i_netdb netdb.h
13269                         $i_unistd unistd.h"
13270                 for xxx in "const char *" "char *"; do
13271                         case "$netdb_name_type" in
13272                         '')     try="extern struct hostent *gethostbyname($xxx);"
13273                                 if ./protochk "$try" $hdrs; then
13274                                         echo "Your system accepts $xxx."
13275                                         netdb_name_type="$xxx"
13276                                 fi
13277                                 ;;
13278                         esac
13279                 done
13280                 : In case none of those worked, prompt the user.
13281                 case "$netdb_name_type" in
13282                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13283                         dflt='char *'
13284                         . ./myread
13285                         netdb_name_type=$ans
13286                         ;;
13287                 esac
13288                 ;;
13289         *)      : no gethostbyname, so pick harmless default
13290                 netdb_name_type='char *'
13291                 ;;
13292         esac
13293 fi
13294
13295 : check for type of 1st argument to getnetbyaddr. 
13296 if test "X$netdb_net_type" = X ; then
13297         case "$d_getnbyaddr" in
13298         $define)
13299                 $cat <<EOM
13300
13301 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13302 EOM
13303                 hdrs="$define sys/types.h
13304                         $d_socket sys/socket.h 
13305                         $i_niin netinet/in.h 
13306                         $i_netdb netdb.h
13307                         $i_unistd unistd.h"
13308                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13309                         case "$netdb_net_type" in
13310                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13311                                 if ./protochk "$try" $hdrs; then
13312                                         echo "Your system accepts $xxx."
13313                                         netdb_net_type="$xxx"
13314                                 fi
13315                                 ;;
13316                         esac
13317                 done
13318                 : In case none of those worked, prompt the user.
13319                 case "$netdb_net_type" in
13320                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13321                         dflt='long'
13322                         . ./myread
13323                         netdb_net_type=$ans
13324                         ;;
13325                 esac
13326                 ;;
13327         *)      : no getnetbyaddr, so pick harmless default
13328                 netdb_net_type='long'
13329                 ;;
13330         esac
13331 fi
13332 : locate the preferred pager for this system
13333 case "$pager" in
13334 '')
13335         dflt=''
13336         case "$pg" in
13337         /*) dflt=$pg;;
13338         esac
13339         case "$more" in
13340         /*) dflt=$more;;
13341         esac
13342         case "$less" in
13343         /*) dflt=$less;;
13344         esac
13345         case "$dflt" in
13346         '') dflt=/usr/ucb/more;;
13347         esac
13348         ;;
13349 *) dflt="$pager";;
13350 esac
13351 echo " "
13352 fn=f/
13353 rp='What pager is used on your system?'
13354 . ./getfile
13355 pager="$ans"
13356
13357 : see what type pids are declared as in the kernel
13358 rp="What is the type of process ids on this system?"
13359 set pid_t pidtype int stdio.h sys/types.h
13360 eval $typedef_ask
13361
13362 : Find earliest binary compatible site_perl subdirectory perl can use.
13363 case "$bincompat5005" in
13364 "$define") xs_apiversion='5.005' ;;
13365 *) xs_apiversion=$version ;;   # The current site_perl version.
13366 esac
13367 : Find earliest pure perl site_perl subdirectory perl can use.
13368 : The versioned directories started at 5.005.
13369 pm_apiversion='5.005'
13370
13371 : check for length of pointer
13372 echo " "
13373 case "$ptrsize" in
13374 '')
13375         echo "Checking to see how big your pointers are..." >&4
13376         if test "$voidflags" -gt 7; then
13377                 echo '#define VOID_PTR char *' > try.c
13378         else
13379                 echo '#define VOID_PTR void *' > try.c
13380         fi
13381         $cat >>try.c <<'EOCP'
13382 #include <stdio.h>
13383 int main()
13384 {
13385     printf("%d\n", (int)sizeof(VOID_PTR));
13386     exit(0);
13387 }
13388 EOCP
13389         set try
13390         if eval $compile_ok; then
13391                 ptrsize=`./try`
13392                 echo "Your pointers are $ptrsize bytes long."
13393         else
13394                 dflt='4'
13395                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13396                 rp="What is the size of a pointer (in bytes)?"
13397                 . ./myread
13398                 ptrsize="$ans"
13399         fi
13400         ;;
13401 esac
13402 $rm -f try.c try
13403
13404 : see if ar generates random libraries by itself
13405 echo " "
13406 echo "Checking how to generate random libraries on your machine..." >&4
13407 echo 'int bar1() { return bar2(); }' > bar1.c
13408 echo 'int bar2() { return 2; }' > bar2.c
13409 $cat > foo.c <<'EOP'
13410 int main() { printf("%d\n", bar1()); exit(0); }
13411 EOP
13412 $cc $ccflags -c bar1.c >/dev/null 2>&1
13413 $cc $ccflags -c bar2.c >/dev/null 2>&1
13414 $cc $ccflags -c foo.c >/dev/null 2>&1
13415 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13416 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13417         ./foobar >/dev/null 2>&1; then
13418         echo "$ar appears to generate random libraries itself."
13419         orderlib=false
13420         ranlib=":"
13421 elif $ar ts bar$_a >/dev/null 2>&1 &&
13422         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13423         ./foobar >/dev/null 2>&1; then
13424                 echo "a table of contents needs to be added with '$ar ts'."
13425                 orderlib=false
13426                 ranlib="$ar ts"
13427 else
13428         case "$ranlib" in
13429         :) ranlib='';;
13430         '')
13431                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13432                 $test -f $ranlib || ranlib=''
13433                 ;;
13434         esac
13435         if $test -n "$ranlib"; then
13436                 echo "your system has '$ranlib'; we'll use that."
13437                 orderlib=false
13438         else
13439                 echo "your system doesn't seem to support random libraries"
13440                 echo "so we'll use lorder and tsort to order the libraries."
13441                 orderlib=true
13442                 ranlib=":"
13443         fi
13444 fi
13445 $rm -f foo* bar* 
13446
13447 : check for type of arguments to select. 
13448 case "$selecttype" in
13449 '') case "$d_select" in
13450         $define)
13451                 echo " "
13452                 $cat <<EOM
13453 Checking to see what type of arguments are accepted by select().
13454 EOM
13455                 hdrs="$define sys/types.h
13456                         $i_systime sys/time.h 
13457                         $i_sysselct sys/select.h
13458                         $d_socket sys/socket.h"
13459                 : The first arg can be int, unsigned, or size_t
13460                 : The last arg may or may not be 'const'
13461                 val=''
13462                 : void pointer has been seen but using that
13463                 : breaks the selectminbits test
13464                 for xxx in 'fd_set *' 'int *'; do
13465                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13466                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13467                                         case "$val" in
13468                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13469                                                 if ./protochk "$try" $hdrs; then
13470                                                         echo "Your system accepts $xxx."
13471                                                         val="$xxx"
13472                                                 fi
13473                                                 ;;
13474                                         esac
13475                                 done
13476                         done
13477                 done
13478                 case "$val" in
13479                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13480                         case "$d_fd_set" in
13481                                 $define) dflt="fd_set *" ;;
13482                                 *)              dflt="int *" ;;
13483                         esac
13484                         . ./myread
13485                         val=$ans
13486                         ;;
13487                 esac
13488                 selecttype="$val"
13489                 ;;
13490         *)      : no select, so pick a harmless default
13491                 selecttype='int *'
13492                 ;;
13493         esac
13494         ;;
13495 esac
13496
13497 : check for the select 'width'
13498 case "$selectminbits" in
13499 '') case "$d_select" in
13500         $define)
13501                 $cat <<EOM
13502
13503 Checking to see on how many bits at a time your select() operates...
13504 EOM
13505                 $cat >try.c <<EOCP
13506 #include <sys/types.h>
13507 #$i_time I_TIME
13508 #$i_systime I_SYS_TIME
13509 #$i_systimek I_SYS_TIME_KERNEL
13510 #ifdef I_TIME
13511 #   include <time.h>
13512 #endif
13513 #ifdef I_SYS_TIME
13514 #   ifdef I_SYS_TIME_KERNEL
13515 #       define KERNEL
13516 #   endif
13517 #   include <sys/time.h>
13518 #   ifdef I_SYS_TIME_KERNEL
13519 #       undef KERNEL
13520 #   endif
13521 #endif
13522 #$i_sysselct I_SYS_SELECT
13523 #ifdef I_SYS_SELECT
13524 #include <sys/select.h>
13525 #endif
13526 #$d_socket HAS_SOCKET
13527 #ifdef HAS_SOCKET
13528 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13529 #endif
13530 #include <stdio.h>
13531 $selecttype b;
13532 #define S sizeof(*(b))
13533 #define MINBITS 64
13534 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13535 #define NBITS  (NBYTES * 8)
13536 int main() {
13537     char s[NBYTES];
13538     struct timeval t;
13539     int i;
13540     FILE* fp;
13541     int fd;
13542
13543     fclose(stdin);
13544     fp = fopen("try.c", "r");
13545     if (fp == 0)
13546       exit(1);
13547     fd = fileno(fp);
13548     if (fd < 0)
13549       exit(2);
13550     b = ($selecttype)s;
13551     for (i = 0; i < NBITS; i++)
13552         FD_SET(i, b);
13553     t.tv_sec  = 0;
13554     t.tv_usec = 0;
13555     select(fd + 1, b, 0, 0, &t);
13556     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13557     printf("%d\n", i + 1);
13558     return 0;
13559 }
13560 EOCP
13561                 set try
13562                 if eval $compile_ok; then
13563                         selectminbits=`./try`
13564                         case "$selectminbits" in
13565                         '')     cat >&4 <<EOM
13566 Cannot figure out on how many bits at a time your select() operates.
13567 I'll play safe and guess it is 32 bits.
13568 EOM
13569                                 selectminbits=32
13570                                 bits="32 bits"
13571                                 ;;
13572                         1)      bits="1 bit" ;;
13573                         *)      bits="$selectminbits bits" ;;
13574                         esac
13575                         echo "Your select() operates on $bits at a time." >&4
13576                 else
13577                         rp='What is the minimum number of bits your select() operates on?'
13578                         case "$byteorder" in
13579                         1234|12345678)  dflt=32 ;;
13580                         *)              dflt=1  ;;
13581                         esac
13582                         . ./myread
13583                         val=$ans
13584                         selectminbits="$val"
13585                 fi
13586                 $rm -f try.* try
13587                 ;;
13588         *)      : no select, so pick a harmless default
13589                 selectminbits='32'
13590                 ;;
13591         esac
13592         ;;
13593 esac
13594
13595 : Trace out the files included by signal.h, then look for SIGxxx names.
13596 : Remove SIGARRAYSIZE used by HPUX.
13597 : Remove SIGSTKSIZE used by Linux.
13598 : Remove SIGSTKSZ used by Posix.
13599 : Remove SIGTYP void lines used by OS2.
13600 : Some cpps, like os390, dont give the file name anywhere
13601 if [ "X$fieldn" = X ]; then
13602         : Just make some guesses.  We check them later.
13603         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13604 else
13605         xxx=`echo '#include <signal.h>' |
13606         $cppstdin $cppminus $cppflags 2>/dev/null |
13607         $grep '^[       ]*#.*include' | 
13608         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13609 fi
13610 : Check this list of files to be sure we have parsed the cpp output ok.
13611 : This will also avoid potentially non-existent files, such 
13612 : as ../foo/bar.h
13613 xxxfiles=''
13614 for xx in $xxx /dev/null ; do
13615         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13616 done
13617 : If we have found no files, at least try signal.h
13618 case "$xxxfiles" in
13619 '')     xxxfiles=`./findhdr signal.h` ;;
13620 esac
13621 xxx=`awk '
13622 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13623         print substr($2, 4, 20)
13624 }
13625 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13626         print substr($3, 4, 20)
13627 }' $xxxfiles`
13628 : Append some common names just in case the awk scan failed.
13629 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13630 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13631 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13632 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13633 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13634
13635 : generate a few handy files for later
13636 $cat > signal.c <<'EOCP'
13637 #include <sys/types.h>
13638 #include <signal.h>
13639 #include <stdio.h>
13640 int main() {
13641
13642 /* Strange style to avoid deeply-nested #if/#else/#endif */
13643 #ifndef NSIG
13644 #  ifdef _NSIG
13645 #    define NSIG (_NSIG)
13646 #  endif
13647 #endif
13648
13649 #ifndef NSIG
13650 #  ifdef SIGMAX
13651 #    define NSIG (SIGMAX+1)
13652 #  endif
13653 #endif
13654
13655 #ifndef NSIG
13656 #  ifdef SIG_MAX
13657 #    define NSIG (SIG_MAX+1)
13658 #  endif
13659 #endif
13660
13661 #ifndef NSIG
13662 #  ifdef MAXSIG
13663 #    define NSIG (MAXSIG+1)
13664 #  endif
13665 #endif
13666
13667 #ifndef NSIG
13668 #  ifdef MAX_SIG
13669 #    define NSIG (MAX_SIG+1)
13670 #  endif
13671 #endif
13672
13673 #ifndef NSIG
13674 #  ifdef SIGARRAYSIZE
13675 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13676 #  endif
13677 #endif
13678
13679 #ifndef NSIG
13680 #  ifdef _sys_nsig
13681 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13682 #  endif
13683 #endif
13684
13685 /* Default to some arbitrary number that's big enough to get most
13686    of the common signals.
13687 */
13688 #ifndef NSIG
13689 #    define NSIG 50
13690 #endif
13691
13692 printf("NSIG %d\n", NSIG);
13693
13694 #ifndef JUST_NSIG
13695
13696 EOCP
13697
13698 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13699 {
13700         printf "#ifdef SIG"; printf $1; printf "\n"
13701         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13702         printf $1; printf ");\n"
13703         printf "#endif\n"
13704 }
13705 END {
13706         printf "#endif /* JUST_NSIG */\n";
13707         printf "exit(0);\n}\n";
13708 }
13709 ' >>signal.c
13710 $cat >signal.awk <<'EOP'
13711 BEGIN { ndups = 0 }
13712 $1 ~ /^NSIG$/ { nsig = $2 }
13713 ($1 !~ /^NSIG$/) && (NF == 2) {
13714     if ($2 > maxsig) { maxsig = $2 }
13715     if (sig_name[$2]) {
13716         dup_name[ndups] = $1
13717         dup_num[ndups] = $2
13718         ndups++ 
13719     }
13720     else {
13721         sig_name[$2] = $1
13722         sig_num[$2] = $2
13723     }
13724 }
13725 END { 
13726     if (nsig == 0) {
13727         nsig = maxsig + 1
13728     }
13729     printf("NSIG %d\n", nsig);
13730     for (n = 1; n < nsig; n++) {
13731         if (sig_name[n]) {
13732             printf("%s %d\n", sig_name[n], sig_num[n])
13733         }
13734         else {
13735             printf("NUM%d %d\n", n, n) 
13736         }
13737     }
13738     for (n = 0; n < ndups; n++) {
13739         printf("%s %d\n", dup_name[n], dup_num[n])
13740     }
13741 }
13742 EOP
13743 $cat >signal_cmd <<EOS
13744 $startsh
13745 if $test -s signal.lst; then
13746     echo "Using your existing signal.lst file"
13747         exit 0
13748 fi
13749 xxx="$xxx"
13750 EOS
13751 $cat >>signal_cmd <<'EOS'
13752
13753 set signal
13754 if eval $compile_ok; then
13755         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13756 else
13757         echo "(I can't seem be able to compile the whole test program)" >&4
13758         echo "(I'll try it in little pieces.)" >&4
13759         set signal -DJUST_NSIG
13760         if eval $compile_ok; then
13761                 ./signal$_exe > signal.nsg
13762                 $cat signal.nsg
13763         else
13764                 echo "I can't seem to figure out how many signals you have." >&4
13765                 echo "Guessing 50." >&4
13766                 echo 'NSIG 50' > signal.nsg
13767         fi
13768         : Now look at all the signal names, one at a time.
13769         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13770                 $cat > signal.c <<EOCP
13771 #include <sys/types.h>
13772 #include <signal.h>
13773 #include <stdio.h>
13774 int main() {
13775 printf("$xx %d\n", SIG${xx});
13776 return 0;
13777 }
13778 EOCP
13779                 set signal
13780                 if eval $compile; then
13781                         echo "SIG${xx} found."
13782                         ./signal$_exe  >> signal.ls1
13783                 else
13784                         echo "SIG${xx} NOT found."
13785                 fi
13786         done
13787         if $test -s signal.ls1; then
13788                 $cat signal.nsg signal.ls1 |
13789                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13790         fi
13791
13792 fi
13793 if $test -s signal.lst; then
13794         :
13795 else
13796         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13797         echo 'kill -l' >signal
13798         set X `csh -f <signal`
13799         $rm -f signal
13800         shift
13801         case $# in
13802         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13803         esac
13804         echo $@ | $tr ' ' $trnl | \
13805             $awk '{ printf "%s %d\n", $1, ++s; }
13806                   END { printf "NSIG %d\n", ++s }' >signal.lst
13807 fi
13808 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13809 EOS
13810 chmod a+x signal_cmd
13811 $eunicefix signal_cmd
13812
13813 : generate list of signal names
13814 echo " "
13815 case "$sig_name_init" in
13816 '') doinit=yes ;;
13817 *)  case "$sig_num_init" in
13818     ''|*,*) doinit=yes ;;
13819     esac ;;
13820 esac
13821 case "$doinit" in
13822 yes)
13823         echo "Generating a list of signal names and numbers..." >&4
13824         . ./signal_cmd
13825         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13826         sig_name=`$awk 'BEGIN { printf "ZERO " }
13827                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13828         sig_num=`$awk  'BEGIN { printf "0 " }
13829                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13830         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13831                              !/^NSIG/   { printf "\"%s\", ", $1 }
13832                              END        { printf "0\n" }' signal.lst`
13833         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13834                              !/^NSIG/   { printf "%d, ", $2}
13835                              END        { printf "0\n"}' signal.lst`
13836         ;;
13837 esac
13838 echo "The following $sig_count signals are available:"
13839 echo " "
13840 echo $sig_name | $awk \
13841 'BEGIN { linelen = 0 }
13842 {
13843         for (i = 1; i <= NF; i++) {
13844                 name = "SIG" $i " "
13845                 linelen = linelen + length(name)
13846                 if (linelen > 70) {
13847                         printf "\n"
13848                         linelen = length(name)
13849                 }
13850                 printf "%s", name
13851         }
13852         printf "\n"
13853 }'
13854 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13855
13856 echo " "
13857 case "$sizetype" in
13858 *_t) zzz="$sizetype"    ;;
13859 *)   zzz="filesize"     ;;
13860 esac
13861 echo "Checking the size of $zzz..." >&4 
13862 cat > try.c <<EOCP
13863 #include <sys/types.h>
13864 #include <stdio.h>
13865 int main() {
13866     printf("%d\n", (int)sizeof($sizetype));
13867     exit(0);
13868 }
13869 EOCP
13870 set try
13871 if eval $compile_ok; then
13872         yyy=`./try`
13873         case "$yyy" in
13874         '')     sizesize=4
13875                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13876                 ;;
13877         *)      sizesize=$yyy
13878                 echo "Your $zzz size is $sizesize bytes."
13879                 ;;
13880         esac
13881 else
13882         sizesize=4
13883         echo "(I can't compile the test program--guessing $sizesize.)" >&4
13884 fi
13885
13886
13887 : check for socklen_t
13888 echo " "
13889 echo "Checking to see if you have socklen_t..." >&4
13890 $cat >try.c <<EOCP
13891 #include <sys/types.h>
13892 #$d_socket HAS_SOCKET
13893 #ifdef HAS_SOCKET
13894 #include <sys/socket.h>
13895 #endif
13896 int main() { socklen_t x = 16; }
13897 EOCP
13898 set try
13899 if eval $compile; then
13900         val="$define"
13901         echo "You have socklen_t."
13902 else
13903         val="$undef"
13904         echo "You do not have socklen_t."
13905         case "$sizetype" in
13906         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
13907         esac
13908 fi
13909 $rm -f try try.*
13910 set d_socklen_t
13911 eval $setvar
13912
13913 : check for type of the size argument to socket calls
13914 case "$d_socket" in
13915 "$define")
13916         $cat <<EOM
13917
13918 Checking to see what type is the last argument of accept().
13919 EOM
13920         hdrs="$define sys/types.h $d_socket sys/socket.h" 
13921         yyy=''
13922         case "$d_socklen_t" in
13923         "$define") yyy="$yyy socklen_t"
13924         esac
13925         yyy="$yyy $sizetype int long unsigned"
13926         for xxx in $yyy; do
13927                 case "$socksizetype" in
13928                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
13929                         if ./protochk "$try" $hdrs; then
13930                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
13931                                 socksizetype="$xxx"
13932                         fi
13933                         ;;
13934                 esac
13935         done
13936 : In case none of those worked, prompt the user.
13937         case "$socksizetype" in
13938         '')     rp='What is the type for socket address structure sizes?'
13939                 dflt='int'
13940                 . ./myread
13941                 socksizetype=$ans
13942                 ;;
13943         esac
13944         ;;
13945 *)      : no sockets, so pick relatively harmless default
13946         socksizetype='int'
13947         ;;
13948 esac
13949
13950 : see what type is used for signed size_t
13951 set ssize_t ssizetype int stdio.h sys/types.h
13952 eval $typedef
13953 dflt="$ssizetype"
13954 $cat > ssize.c <<EOM
13955 #include <stdio.h>
13956 #include <sys/types.h>
13957 #define Size_t $sizetype
13958 #define SSize_t $dflt
13959 int main()
13960 {
13961         if (sizeof(Size_t) == sizeof(SSize_t))
13962                 printf("$dflt\n");
13963         else if (sizeof(Size_t) == sizeof(int))
13964                 printf("int\n");
13965         else 
13966                 printf("long\n");
13967         exit(0);
13968 }
13969 EOM
13970 echo " "
13971 set ssize
13972 if eval $compile_ok && ./ssize > /dev/null; then
13973         ssizetype=`./ssize`
13974         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13975 else
13976         $cat >&4 <<EOM
13977 Help! I can't compile and run the ssize_t test program: please enlighten me!
13978 (This is probably a misconfiguration in your system or libraries, and
13979 you really ought to fix it.  Still, I'll try anyway.)
13980
13981 I need a type that is the same size as $sizetype, but is guaranteed to
13982 be signed.  Common values are ssize_t, int and long.
13983
13984 EOM
13985         rp="What signed type is the same size as $sizetype?"
13986         . ./myread
13987         ssizetype="$ans"
13988 fi
13989 $rm -f ssize ssize.*
13990
13991 : see what type of char stdio uses.
13992 echo " "
13993 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13994         echo "Your stdio uses unsigned chars." >&4
13995         stdchar="unsigned char"
13996 else
13997         echo "Your stdio uses signed chars." >&4
13998         stdchar="char"
13999 fi
14000
14001 : see if time exists
14002 echo " "
14003 if test "X$d_time" = X -o X"$timetype" = X; then
14004     if set time val -f d_time; eval $csym; $val; then
14005                 echo 'time() found.' >&4
14006                 val="$define"
14007                 rp="What is the type returned by time() on this system?"
14008                 set time_t timetype long stdio.h sys/types.h
14009                 eval $typedef_ask
14010     else
14011                 echo 'time() not found, hope that will do.' >&4
14012                 val="$undef"
14013                 timetype='int';
14014     fi
14015     set d_time
14016     eval $setvar
14017 fi
14018
14019 : see what type uids are declared as in the kernel
14020 echo " "
14021 echo "Looking for the type for user ids returned by getuid()."
14022 set uid_t uidtype xxx stdio.h sys/types.h
14023 eval $typedef
14024 case "$uidtype" in
14025 xxx)
14026         xxx=`./findhdr sys/user.h`
14027         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14028         case $1 in
14029         unsigned) dflt="$1 $2" ;;
14030         *) dflt="$1" ;;
14031         esac
14032         ;;
14033 *) dflt="$uidtype";;
14034 esac
14035 case "$uidtype" in
14036 uid_t)  echo "uid_t found." ;;
14037 *)      rp="What is the type for user ids returned by getuid()?"
14038         . ./myread
14039         uidtype="$ans"
14040         ;;
14041 esac
14042
14043 echo " "
14044 case "$uidtype" in
14045 *_t) zzz="$uidtype"     ;;
14046 *)   zzz="uid"          ;;
14047 esac
14048 echo "Checking the size of $zzz..." >&4 
14049 cat > try.c <<EOCP
14050 #include <sys/types.h>
14051 #include <stdio.h>
14052 int main() {
14053     printf("%d\n", (int)sizeof($uidtype));
14054     exit(0);
14055 }
14056 EOCP
14057 set try
14058 if eval $compile_ok; then
14059         yyy=`./try`
14060         case "$yyy" in
14061         '')     uidsize=4
14062                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14063                 ;;
14064         *)      uidsize=$yyy
14065                 echo "Your $zzz is $uidsize bytes long."
14066                 ;;
14067         esac
14068 else
14069         uidsize=4
14070         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14071 fi
14072
14073 echo " "
14074 case "$uidtype" in
14075 *_t) zzz="$uidtype"     ;;
14076 *)   zzz="uid"          ;;
14077 esac
14078 echo "Checking the sign of $zzz..." >&4
14079 cat > try.c <<EOCP
14080 #include <sys/types.h>
14081 #include <stdio.h>
14082 int main() {
14083         $uidtype foo = -1;
14084         if (foo < 0)
14085                 printf("-1\n");
14086         else
14087                 printf("1\n");
14088 }
14089 EOCP
14090 set try
14091 if eval $compile; then
14092         yyy=`./try`
14093         case "$yyy" in
14094         '')     uidsign=1
14095                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14096                 ;;
14097         *)      uidsign=$yyy
14098                 case "$uidsign" in
14099                  1) echo "Your $zzz is unsigned." ;;
14100                 -1) echo "Your $zzz is signed."   ;;
14101                 esac
14102                 ;;
14103         esac
14104 else
14105         uidsign=1
14106         echo "(I can't compile the test program--guessing unsigned.)" >&4
14107 fi
14108
14109
14110
14111 echo " "
14112 $echo "Checking the format string to be used for uids..." >&4
14113
14114 case "$uidsign" in
14115 -1)     if $test X"$uidsize" = X"$ivsize"; then
14116                 uidformat="$ivdformat"
14117         else
14118                 if $test X"$uidsize" = X"$longsize"; then
14119                         uidformat='"ld"'
14120                 else
14121                         if $test X"$uidsize" = X"$intsize"; then
14122                                 uidformat='"d"'
14123                         else
14124                                 if $test X"$uidsize" = X"$shortsize"; then
14125                                         uidformat='"hd"'
14126                                 fi
14127                         fi
14128                 fi
14129         fi
14130         ;;
14131 *)      if $test X"$uidsize" = X"$uvsize"; then
14132                 uidformat="$uvuformat"
14133         else
14134                 if $test X"$uidsize" = X"$longsize"; then
14135                         uidformat='"lu"'
14136                 else
14137                         if $test X"$uidsize" = X"$intsize"; then
14138                                 uidformat='"u"'
14139                         else
14140                                 if $test X"$uidsize" = X"$shortsize"; then
14141                                         uidformat='"hu"'
14142                                 fi
14143                         fi
14144                 fi
14145         fi
14146         ;;
14147 esac
14148
14149 : see if dbm.h is available
14150 : see if dbmclose exists
14151 set dbmclose d_dbmclose
14152 eval $inlibc
14153
14154 case "$d_dbmclose" in
14155 $define)
14156         set dbm.h i_dbm
14157         eval $inhdr
14158         case "$i_dbm" in
14159         $define)
14160                 val="$undef"
14161                 set i_rpcsvcdbm
14162                 eval $setvar
14163                 ;;
14164         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14165                 eval $inhdr
14166                 ;;
14167         esac
14168         ;;
14169 *)      echo "We won't be including <dbm.h>"
14170         val="$undef"
14171         set i_dbm
14172         eval $setvar
14173         val="$undef"
14174         set i_rpcsvcdbm
14175         eval $setvar
14176         ;;
14177 esac
14178
14179 : see if this is a sys/file.h system
14180 val=''
14181 set sys/file.h val
14182 eval $inhdr
14183
14184 : do we need to include sys/file.h ?
14185 case "$val" in
14186 "$define")
14187         echo " "
14188         if $h_sysfile; then
14189                 val="$define"
14190                 echo "We'll be including <sys/file.h>." >&4
14191         else
14192                 val="$undef"
14193                 echo "We won't be including <sys/file.h>." >&4
14194         fi
14195         ;;
14196 *)
14197         h_sysfile=false
14198         ;;
14199 esac
14200 set i_sysfile
14201 eval $setvar
14202
14203 : see if fcntl.h is there
14204 val=''
14205 set fcntl.h val
14206 eval $inhdr
14207
14208 : see if we can include fcntl.h
14209 case "$val" in
14210 "$define")
14211         echo " "
14212         if $h_fcntl; then
14213                 val="$define"
14214                 echo "We'll be including <fcntl.h>." >&4
14215         else
14216                 val="$undef"
14217                 if $h_sysfile; then
14218         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14219                 else
14220                         echo "We won't be including <fcntl.h>." >&4
14221                 fi
14222         fi
14223         ;;
14224 *)
14225         h_fcntl=false
14226         val="$undef"
14227         ;;
14228 esac
14229 set i_fcntl
14230 eval $setvar
14231
14232 : see if this is a iconv.h system
14233 set iconv.h i_iconv
14234 eval $inhdr
14235
14236 : see if this is a ieeefp.h system
14237 set ieeefp.h i_ieeefp
14238 eval $inhdr
14239
14240 : see if locale.h is available
14241 set locale.h i_locale
14242 eval $inhdr
14243
14244 : see if mach cthreads are available
14245 if test "X$usethreads" = "X$define"; then
14246         set mach/cthreads.h i_machcthr
14247         eval $inhdr
14248 else
14249         i_machcthr="$undef"
14250 fi
14251
14252
14253
14254 : see if this is a math.h system
14255 set math.h i_math
14256 eval $inhdr
14257
14258 : see if this is a mntent.h system
14259 set mntent.h i_mntent
14260 eval $inhdr
14261
14262 : see if ndbm.h is available
14263 set ndbm.h t_ndbm
14264 eval $inhdr
14265 case "$t_ndbm" in
14266 $define)
14267         : see if dbm_open exists
14268         set dbm_open d_dbm_open
14269         eval $inlibc
14270         case "$d_dbm_open" in
14271         $undef)
14272                 t_ndbm="$undef"
14273                 echo "We won't be including <ndbm.h>"
14274                 ;;
14275         esac
14276         ;;
14277 esac
14278 val="$t_ndbm"
14279 set i_ndbm
14280 eval $setvar
14281
14282 : see if net/errno.h is available
14283 val=''
14284 set net/errno.h val
14285 eval $inhdr
14286
14287 : Unfortunately, it causes problems on some systems.  Arrgh.
14288 case "$val" in
14289 $define)
14290         cat > try.c <<'EOM'
14291 #include <stdio.h>
14292 #include <errno.h>
14293 #include <net/errno.h>
14294 int func()
14295 {
14296         return ENOTSOCK;
14297 }
14298 EOM
14299         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14300                 echo "We'll be including <net/errno.h>." >&4
14301         else
14302                 echo "We won't be including <net/errno.h>." >&4
14303                 val="$undef"
14304         fi
14305         $rm -f try.* try
14306         ;;
14307 esac
14308 set i_neterrno
14309 eval $setvar
14310
14311 : see if netinet/tcp.h is available
14312 set netinet/tcp.h i_netinettcp
14313 eval $inhdr
14314
14315 : see if this is a poll.h system
14316 set poll.h i_poll
14317 eval $inhdr
14318
14319 echo " "
14320 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14321 $cat <<'EOSH' > Cppsym.know
14322 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14323 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14324 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14325 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14326 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14327 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14328 bull c cadmus clipper CMU COFF COMPILER_VERSION
14329 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14330 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14331 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14332 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14333 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14334 H3050R H3050RX hbullx20 hcx host_mips
14335 hp200 hp300 hp700 HP700 hp800 hp9000
14336 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14337 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14338 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14339 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14340 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14341 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14342 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14343 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14344 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14345 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14346 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14347 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14348 MATH_HAS_NO_SIDE_EFFECTS
14349 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14350 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14351 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14352 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14353 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14354 NetBSD news1500 news1700 news1800 news1900 news3700
14355 news700 news800 news900 NeXT NLS ns16000 ns32000
14356 ns32016 ns32332 ns32k nsc32000
14357 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14358 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14359 pc532 pdp11 PGC PIC plexus PORTAR posix
14360 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14361 POSIX_C_SOURCE POSIX_SOURCE POWER
14362 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14363 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14364 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14365 sony sony_news sonyrisc sparc sparclite spectrum
14366 stardent stdc STDC_EXT stratos sun sun3 sun386
14367 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14368 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14369 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14370 sysV68 sysV88 Tek4132 Tek4300 titan
14371 tower tower32 tower32_200 tower32_600 tower32_700
14372 tower32_800 tower32_850 tss
14373 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14374 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14375 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14376 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14377 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14378 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14379 z8000
14380 EOSH
14381 # Maybe put other stuff here too.
14382 cat <<EOSH >>Cppsym.know
14383 $osname
14384 EOSH
14385 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14386 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14387 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14388 $rm -f Cppsym.a Cppsym.b
14389 cat <<EOSH > Cppsym
14390 $startsh
14391 if $test \$# -gt 0; then
14392     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14393     if $test -s Cppsym.got; then
14394         $rm -f Cppsym.got
14395         exit 0
14396     fi
14397     $rm -f Cppsym.got
14398     exit 1
14399 else
14400     $tr " " "$trnl" | ./Cppsym.try
14401     exit 0
14402 fi
14403 EOSH
14404 chmod +x Cppsym
14405 $eunicefix Cppsym
14406 cat <<EOSH > Cppsym.try
14407 $startsh
14408 cat <<'EOCP' > try.c
14409 #include <stdio.h>
14410 int main() {
14411 EOCP
14412 $awk \\
14413 EOSH
14414 cat <<'EOSH' >> Cppsym.try
14415 'length($1) > 0 {
14416     printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", %s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14417     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", _%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14418     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", __%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14419     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14420 }'       >> try.c
14421 echo '}' >> try.c
14422 EOSH
14423 cat <<EOSH >> Cppsym.try
14424 ccflags="$ccflags"
14425 case "$osname-$gccversion" in
14426 irix-) ccflags="\$ccflags -woff 1178" ;;
14427 esac
14428 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14429 EOSH
14430 chmod +x Cppsym.try
14431 $eunicefix Cppsym.try
14432 ./Cppsym < Cppsym.know > Cppsym.true
14433 : now check the C compiler for additional symbols
14434 postprocess_cc_v=''
14435 case "$osname" in
14436 aix) postprocess_cc_v="|$tr , ' '" ;;
14437 esac
14438 $cat >ccsym <<EOS
14439 $startsh
14440 $cat >tmp.c <<EOF
14441 extern int foo;
14442 EOF
14443 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14444 do
14445         case "\$i" in
14446         -D*) echo "\$i" | $sed 's/^-D//';;
14447         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14448         esac
14449 done
14450 $rm -f try.c
14451 EOS
14452 postprocess_cc_v=''
14453 chmod +x ccsym
14454 $eunicefix ccsym
14455 ./ccsym > ccsym1.raw
14456 if $test -s ccsym1.raw; then
14457        $sort ccsym1.raw | $uniq >ccsym.raw
14458 else
14459        mv ccsym1.raw ccsym.raw
14460 fi
14461
14462 $awk '/\=/ { print $0; next }
14463         { print $0"=1" }' ccsym.raw >ccsym.list
14464 $awk '/\=/ { print $0; next }
14465         { print $0"=1" }' Cppsym.true >ccsym.true
14466 $comm -13 ccsym.true ccsym.list >ccsym.own
14467 $comm -12 ccsym.true ccsym.list >ccsym.com
14468 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14469 also=''
14470 if $test -z ccsym.raw; then
14471         echo "Your C compiler doesn't seem to define any symbols!" >&4
14472         echo " "
14473         echo "However, your C preprocessor defines the following symbols:"
14474         $cat Cppsym.true
14475         ccsymbols=''
14476         cppsymbols=`$cat Cppsym.true`
14477         cppsymbols=`echo $cppsymbols`
14478         cppccsymbols="$cppsymbols"
14479 else
14480         if $test -s ccsym.com; then
14481                 echo "Your C compiler and pre-processor define these symbols:"
14482                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14483                 also='also '
14484                 symbols='ones'
14485                 cppccsymbols=`$cat ccsym.com`
14486                 cppccsymbols=`echo $cppccsymbols`
14487                 $test "$silent" || sleep 1
14488         fi
14489         if $test -s ccsym.cpp; then
14490                 $test "$also" && echo " "
14491                 echo "Your C pre-processor ${also}defines the following symbols:"
14492                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14493                 also='further '
14494                 cppsymbols=`$cat ccsym.cpp`
14495                 cppsymbols=`echo $cppsymbols`
14496                 $test "$silent" || sleep 1
14497         fi
14498         if $test -s ccsym.own; then
14499                 $test "$also" && echo " "
14500                 echo "Your C compiler ${also}defines the following cpp symbols:"
14501                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14502                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14503                 ccsymbols=`$cat ccsym.own`
14504                 ccsymbols=`echo $ccsymbols`
14505                 $test "$silent" || sleep 1
14506         fi
14507 fi
14508 $rm -f ccsym*
14509
14510 : see if this is a termio system
14511 val="$undef"
14512 val2="$undef"
14513 val3="$undef"
14514 if $test `./findhdr termios.h`; then
14515         set tcsetattr i_termios
14516         eval $inlibc
14517         val3="$i_termios"
14518 fi
14519 echo " "
14520 case "$val3" in
14521 "$define") echo "You have POSIX termios.h... good!" >&4;;
14522 *) if ./Cppsym pyr; then
14523                 case "`/bin/universe`" in
14524                 ucb) if $test `./findhdr sgtty.h`; then
14525                                 val2="$define"
14526                                 echo "<sgtty.h> found." >&4
14527                         else
14528                                 echo "System is pyramid with BSD universe."
14529                                 echo "<sgtty.h> not found--you could have problems." >&4
14530                         fi;;
14531                 *) if $test `./findhdr termio.h`; then
14532                                 val="$define"
14533                                 echo "<termio.h> found." >&4
14534                         else
14535                                 echo "System is pyramid with USG universe."
14536                                 echo "<termio.h> not found--you could have problems." >&4
14537                         fi;;
14538                 esac
14539         elif ./usg; then
14540                 if $test `./findhdr termio.h`; then
14541                         echo "<termio.h> found." >&4
14542                         val="$define"
14543                 elif $test `./findhdr sgtty.h`; then
14544                         echo "<sgtty.h> found." >&4
14545                         val2="$define"
14546                 else
14547 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14548                 fi
14549         else
14550                 if $test `./findhdr sgtty.h`; then
14551                         echo "<sgtty.h> found." >&4
14552                         val2="$define"
14553                 elif $test `./findhdr termio.h`; then
14554                         echo "<termio.h> found." >&4
14555                         val="$define"
14556                 else
14557 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14558                 fi
14559         fi;;
14560 esac
14561 set i_termio; eval $setvar
14562 val=$val2; set i_sgtty; eval $setvar
14563 val=$val3; set i_termios; eval $setvar
14564
14565 : see if this is a shadow.h system
14566 set shadow.h i_shadow
14567 eval $inhdr
14568
14569 : see if this is a socks.h system
14570 set socks.h i_socks
14571 eval $inhdr
14572
14573 : see if stdarg is available
14574 echo " "
14575 if $test `./findhdr stdarg.h`; then
14576         echo "<stdarg.h> found." >&4
14577         valstd="$define"
14578 else
14579         echo "<stdarg.h> NOT found." >&4
14580         valstd="$undef"
14581 fi
14582
14583 : see if varags is available
14584 echo " "
14585 if $test `./findhdr varargs.h`; then
14586         echo "<varargs.h> found." >&4
14587 else
14588         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14589 fi
14590
14591 : set up the varargs testing programs
14592 $cat > varargs.c <<EOP
14593 #ifdef I_STDARG
14594 #include <stdarg.h>
14595 #endif
14596 #ifdef I_VARARGS
14597 #include <varargs.h>
14598 #endif
14599
14600 #ifdef I_STDARG
14601 int f(char *p, ...)
14602 #else
14603 int f(va_alist)
14604 va_dcl
14605 #endif
14606 {
14607         va_list ap;
14608 #ifndef I_STDARG
14609         char *p;
14610 #endif
14611 #ifdef I_STDARG
14612         va_start(ap,p);
14613 #else
14614         va_start(ap);
14615         p = va_arg(ap, char *);
14616 #endif
14617         va_end(ap);
14618 }
14619 EOP
14620 $cat > varargs <<EOP
14621 $startsh
14622 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14623         echo "true"
14624 else
14625         echo "false"
14626 fi
14627 $rm -f varargs$_o
14628 EOP
14629 chmod +x varargs
14630
14631 : now check which varargs header should be included
14632 echo " "
14633 i_varhdr=''
14634 case "$valstd" in
14635 "$define")
14636         if `./varargs I_STDARG`; then
14637                 val='stdarg.h'
14638         elif `./varargs I_VARARGS`; then
14639                 val='varargs.h'
14640         fi
14641         ;;
14642 *)
14643         if `./varargs I_VARARGS`; then
14644                 val='varargs.h'
14645         fi
14646         ;;
14647 esac
14648 case "$val" in
14649 '')
14650 echo "I could not find the definition for va_dcl... You have problems..." >&4
14651         val="$undef"; set i_stdarg; eval $setvar
14652         val="$undef"; set i_varargs; eval $setvar
14653         ;;
14654 *) 
14655         set i_varhdr
14656         eval $setvar
14657         case "$i_varhdr" in
14658         stdarg.h)
14659                 val="$define"; set i_stdarg; eval $setvar
14660                 val="$undef"; set i_varargs; eval $setvar
14661                 ;;
14662         varargs.h)
14663                 val="$undef"; set i_stdarg; eval $setvar
14664                 val="$define"; set i_varargs; eval $setvar
14665                 ;;
14666         esac
14667         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14668 esac
14669 $rm -f varargs*
14670
14671 : see if stddef is available
14672 set stddef.h i_stddef
14673 eval $inhdr
14674
14675 : see if this is a sunmath.h system
14676 set sunmath.h i_sunmath
14677 eval $inhdr
14678
14679 : see if sys/access.h is available
14680 set sys/access.h i_sysaccess
14681 eval $inhdr
14682
14683 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14684 set sys/filio.h i_sysfilio
14685 eval $inhdr
14686 echo " "
14687 if $test `./findhdr sys/ioctl.h`; then
14688         val="$define"
14689         echo '<sys/ioctl.h> found.' >&4
14690 else
14691         val="$undef"
14692         if $test $i_sysfilio = "$define"; then
14693             echo '<sys/ioctl.h> NOT found.' >&4
14694         else
14695                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14696                 $test $i_termio = "$define" && xxx="termio.h"
14697                 $test $i_termios = "$define" && xxx="termios.h"
14698 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14699         fi
14700 fi
14701 set i_sysioctl
14702 eval $setvar
14703
14704
14705 : see if this is a syslog.h system
14706 set syslog.h i_syslog
14707 eval $inhdr
14708
14709
14710 : see if this is a sys/mode.h system
14711 set sys/mode.h i_sysmode
14712 eval $inhdr
14713
14714 : see if sys/resource.h has to be included
14715 set sys/resource.h i_sysresrc
14716 eval $inhdr
14717
14718 : see if sys/security.h is available
14719 set sys/security.h i_syssecrt
14720 eval $inhdr
14721
14722 : see if this is a sys/statvfs.h system
14723 set sys/statvfs.h i_sysstatvfs
14724 eval $inhdr
14725
14726 : see if this is a sys/uio.h system
14727 set sys/uio.h i_sysuio
14728 eval $inhdr
14729
14730 : see if this is a sys/un.h system
14731 set sys/un.h i_sysun
14732 eval $inhdr
14733
14734
14735 : see if this is a sys/utsname.h system
14736 set sys/utsname.h i_sysutsname
14737 eval $inhdr
14738
14739 : see if this is a syswait system
14740 set sys/wait.h i_syswait
14741 eval $inhdr
14742
14743 : see if this is a ustat.h system
14744 set ustat.h i_ustat
14745 eval $inhdr
14746
14747 : see if this is an utime system
14748 set utime.h i_utime
14749 eval $inhdr
14750
14751 : see if this is a values.h system
14752 set values.h i_values
14753 eval $inhdr
14754
14755 : see if this is a vfork system
14756 case "$d_vfork" in
14757 "$define")
14758         set vfork.h i_vfork
14759         eval $inhdr
14760         ;;
14761 *)
14762         i_vfork="$undef"
14763         ;;
14764 esac
14765
14766 : see if gdbm.h is available
14767 set gdbm.h t_gdbm
14768 eval $inhdr
14769 case "$t_gdbm" in
14770 $define)
14771         : see if gdbm_open exists
14772         set gdbm_open d_gdbm_open
14773         eval $inlibc
14774         case "$d_gdbm_open" in
14775         $undef)
14776                 t_gdbm="$undef"
14777                 echo "We won't be including <gdbm.h>"
14778                 ;;
14779         esac
14780         ;;
14781 esac
14782 val="$t_gdbm"
14783 set i_gdbm
14784 eval $setvar
14785
14786 echo " "
14787 echo "Looking for extensions..." >&4
14788 : If we are using the old config.sh, known_extensions may contain
14789 : old or inaccurate or duplicate values.
14790 known_extensions=''
14791 nonxs_extensions=''
14792 : We do not use find because it might not be available.
14793 : We do not just use MANIFEST because the user may have dropped
14794 : some additional extensions into the source tree and expect them
14795 : to be built.
14796
14797 : Function to recursively find available extensions, ignoring DynaLoader
14798 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14799 find_extensions='
14800     for xxx in *; do
14801        case "$xxx" in
14802            DynaLoader|dynaload) ;;
14803            *)
14804            if $test -f $xxx/$xxx.xs; then
14805                known_extensions="$known_extensions $1$xxx";
14806            elif $test -f $xxx/Makefile.PL; then
14807                nonxs_extensions="$nonxs_extensions $1$xxx";
14808            else
14809                if $test -d $xxx -a $# -lt 10; then
14810                    set $1$xxx/ $*;
14811                    cd $xxx;
14812                    eval $find_extensions;
14813                    cd ..;
14814                    shift;
14815                fi;
14816            fi
14817            ;;
14818        esac;
14819     done'
14820 tdir=`pwd`
14821 cd $rsrc/ext
14822 set X
14823 shift
14824 eval $find_extensions
14825 set X $nonxs_extensions
14826 shift
14827 nonxs_extensions="$*"
14828 set X $known_extensions
14829 shift
14830 known_extensions="$*"
14831 cd $tdir
14832
14833 : Now see which are supported on this system.
14834 avail_ext=''
14835 for xxx in $known_extensions ; do
14836         case "$xxx" in
14837         DB_File|db_file)
14838                 case "$i_db" in
14839                 $define) avail_ext="$avail_ext $xxx" ;;
14840                 esac
14841                 ;;
14842         GDBM_File|gdbm_fil)
14843                 case "$i_gdbm" in 
14844                 $define) avail_ext="$avail_ext $xxx" ;;
14845                 esac
14846                 ;;
14847         NDBM_File|ndbm_fil)
14848                 case "$i_ndbm" in
14849                 $define)
14850                     case "$osname-$use64bitint" in
14851                     hpux-define)
14852                         case "$libs" in
14853                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14854                         esac
14855                         ;;
14856                     *) avail_ext="$avail_ext $xxx" ;;
14857                     esac
14858                     ;;
14859                 esac
14860                 ;;
14861         ODBM_File|odbm_fil) 
14862                 case "${i_dbm}${i_rpcsvcdbm}" in
14863                 *"${define}"*)
14864                     case "$osname-$use64bitint" in
14865                     hpux-define)
14866                         case "$libs" in
14867                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14868                         esac
14869                         ;;
14870                     *) avail_ext="$avail_ext $xxx" ;;
14871                     esac
14872                     ;;
14873                 esac
14874                 ;;
14875         POSIX|posix)
14876                 case "$useposix" in
14877                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14878                 esac
14879                 ;;
14880         Opcode|opcode)
14881                 case "$useopcode" in
14882                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14883                 esac
14884                 ;;
14885         Socket|socket)
14886                 case "$d_socket" in 
14887                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14888                 esac
14889                 ;;
14890         Thread|thread)
14891                 case "$usethreads" in 
14892                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14893                 esac
14894                 ;;
14895         IPC/SysV|ipc/sysv)
14896                 : XXX Do we need a useipcsysv variable here
14897                 case "${d_msg}${d_sem}${d_shm}" in 
14898                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14899                 esac
14900                 ;;
14901         *)      avail_ext="$avail_ext $xxx"
14902                 ;;
14903         esac
14904 done
14905
14906 set X $avail_ext
14907 shift
14908 avail_ext="$*"
14909
14910 : Now see which nonxs extensions are supported on this system.
14911 : For now assume all are.
14912 nonxs_ext=''
14913 for xxx in $nonxs_extensions ; do
14914         case "$xxx" in
14915         *)      nonxs_ext="$nonxs_ext $xxx"
14916                 ;;
14917         esac
14918 done
14919
14920 set X $nonxs_ext
14921 shift
14922 nonxs_ext="$*"
14923
14924 case $usedl in
14925 $define)
14926         $cat <<EOM
14927 A number of extensions are supplied with $package.  You may choose to
14928 compile these extensions for dynamic loading (the default), compile
14929 them into the $package executable (static loading), or not include
14930 them at all.  Answer "none" to include no extensions.
14931 Note that DynaLoader is always built and need not be mentioned here.
14932
14933 EOM
14934         case "$dynamic_ext" in
14935         '') dflt="$avail_ext" ;;
14936         *)      dflt="$dynamic_ext"
14937                 # Perhaps we are reusing an old out-of-date config.sh.
14938                 case "$hint" in
14939                 previous)
14940                         if test X"$dynamic_ext" != X"$avail_ext"; then
14941                                 $cat <<EOM
14942 NOTICE:  Your previous config.sh list may be incorrect. 
14943 The extensions now available to you are 
14944         ${avail_ext}
14945 but the default list from your previous config.sh is
14946         ${dynamic_ext} 
14947
14948 EOM
14949                         fi
14950                         ;;
14951                 esac
14952                 ;;
14953         esac
14954         case "$dflt" in
14955         '')     dflt=none;;
14956         esac
14957         rp="What extensions do you wish to load dynamically?"
14958         . ./myread
14959         case "$ans" in
14960         none) dynamic_ext=' ' ;;
14961         *) dynamic_ext="$ans" ;;
14962         esac
14963
14964         case "$static_ext" in
14965         '')
14966                 : Exclude those already listed in dynamic linking
14967                 dflt=''
14968                 for xxx in $avail_ext; do
14969                         case " $dynamic_ext " in
14970                         *" $xxx "*) ;;
14971                         *) dflt="$dflt $xxx" ;;
14972                         esac
14973                 done
14974                 set X $dflt
14975                 shift
14976                 dflt="$*"
14977                 ;;
14978         *)  dflt="$static_ext" 
14979                 ;;
14980         esac
14981
14982         case "$dflt" in
14983         '')     dflt=none;;
14984         esac
14985         rp="What extensions do you wish to load statically?"
14986         . ./myread
14987         case "$ans" in
14988         none) static_ext=' ' ;;
14989         *) static_ext="$ans" ;;
14990         esac
14991         ;;
14992 *)
14993         $cat <<EOM
14994 A number of extensions are supplied with $package.  Answer "none" 
14995 to include no extensions. 
14996 Note that DynaLoader is always built and need not be mentioned here.
14997
14998 EOM
14999         case "$static_ext" in
15000         '') dflt="$avail_ext" ;;
15001         *)      dflt="$static_ext"
15002                 # Perhaps we are reusing an old out-of-date config.sh.
15003                 case "$hint" in
15004                 previous)
15005                         if test X"$static_ext" != X"$avail_ext"; then
15006                                 $cat <<EOM
15007 NOTICE:  Your previous config.sh list may be incorrect. 
15008 The extensions now available to you are 
15009         ${avail_ext}
15010 but the default list from your previous config.sh is
15011         ${static_ext} 
15012
15013 EOM
15014                         fi
15015                         ;;
15016                 esac
15017                 ;;
15018         esac
15019         : Exclude those that are not xs extensions
15020         case "$dflt" in
15021         '')     dflt=none;;
15022         esac
15023         rp="What extensions do you wish to include?"
15024         . ./myread
15025         case "$ans" in
15026         none) static_ext=' ' ;;
15027         *) static_ext="$ans" ;;
15028         esac
15029         ;;
15030 esac
15031
15032 set X $dynamic_ext $static_ext $nonxs_ext
15033 shift
15034 extensions="$*"
15035
15036 : Remove build directory name from cppstdin so it can be used from
15037 : either the present location or the final installed location.
15038 echo " "
15039 : Get out of the UU directory to get correct path name.
15040 cd ..
15041 case "$cppstdin" in
15042 `pwd`/cppstdin)
15043         echo "Stripping down cppstdin path name"
15044         cppstdin=cppstdin
15045         ;;
15046 esac
15047 cd UU
15048
15049 : end of configuration questions
15050 echo " "
15051 echo "End of configuration questions."
15052 echo " "
15053
15054 : back to where it started
15055 if test -d ../UU; then
15056         cd ..
15057 fi
15058
15059 : configuration may be patched via a 'config.over' file
15060 if $test -f config.over; then
15061         echo " "
15062         dflt=y
15063         rp='I see a config.over file.  Do you wish to load it?'
15064         . UU/myread
15065         case "$ans" in
15066         n*) echo "OK, I'll ignore it.";;
15067         *)      . ./config.over
15068                 echo "Configuration override changes have been loaded."
15069                 ;;
15070         esac
15071 fi
15072
15073 : in case they want portability, strip down executable paths
15074 case "$d_portable" in
15075 "$define")
15076         echo " "
15077         echo "Stripping down executable paths..." >&4
15078         for file in $loclist $trylist; do
15079                 eval temp=\$$file
15080                 eval $file=`basename $temp`
15081         done
15082         ;;
15083 esac
15084
15085 : create config.sh file
15086 echo " "
15087 echo "Creating config.sh..." >&4
15088 $spitshell <<EOT >config.sh
15089 $startsh
15090 #
15091 # This file was produced by running the Configure script. It holds all the
15092 # definitions figured out by Configure. Should you modify one of these values,
15093 # do not forget to propagate your changes by running "Configure -der". You may
15094 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15095 #
15096
15097 # Package name      : $package
15098 # Source directory  : $src
15099 # Configuration time: $cf_time
15100 # Configured by     : $cf_by
15101 # Target system     : $myuname
15102
15103 Author='$Author'
15104 Date='$Date'
15105 Header='$Header'
15106 Id='$Id'
15107 Locker='$Locker'
15108 Log='$Log'
15109 Mcc='$Mcc'
15110 RCSfile='$RCSfile'
15111 Revision='$Revision'
15112 Source='$Source'
15113 State='$State'
15114 _a='$_a'
15115 _exe='$_exe'
15116 _o='$_o'
15117 afs='$afs'
15118 alignbytes='$alignbytes'
15119 ansi2knr='$ansi2knr'
15120 aphostname='$aphostname'
15121 api_revision='$api_revision'
15122 api_subversion='$api_subversion'
15123 api_version='$api_version'
15124 api_versionstring='$api_versionstring'
15125 ar='$ar'
15126 archlib='$archlib'
15127 archlibexp='$archlibexp'
15128 archname64='$archname64'
15129 archname='$archname'
15130 archobjs='$archobjs'
15131 awk='$awk'
15132 baserev='$baserev'
15133 bash='$bash'
15134 bin='$bin'
15135 bincompat5005='$bincompat5005'
15136 binexp='$binexp'
15137 bison='$bison'
15138 byacc='$byacc'
15139 byteorder='$byteorder'
15140 c='$c'
15141 castflags='$castflags'
15142 cat='$cat'
15143 cc='$cc'
15144 cccdlflags='$cccdlflags'
15145 ccdlflags='$ccdlflags'
15146 ccflags='$ccflags'
15147 ccsymbols='$ccsymbols'
15148 cf_by='$cf_by'
15149 cf_email='$cf_email'
15150 cf_time='$cf_time'
15151 charsize='$charsize'
15152 chgrp='$chgrp'
15153 chmod='$chmod'
15154 chown='$chown'
15155 clocktype='$clocktype'
15156 comm='$comm'
15157 compress='$compress'
15158 contains='$contains'
15159 cp='$cp'
15160 cpio='$cpio'
15161 cpp='$cpp'
15162 cpp_stuff='$cpp_stuff'
15163 cppccsymbols='$cppccsymbols'
15164 cppflags='$cppflags'
15165 cpplast='$cpplast'
15166 cppminus='$cppminus'
15167 cpprun='$cpprun'
15168 cppstdin='$cppstdin'
15169 cppsymbols='$cppsymbols'
15170 crosscompile='$crosscompile'
15171 cryptlib='$cryptlib'
15172 csh='$csh'
15173 d_Gconvert='$d_Gconvert'
15174 d_PRIEldbl='$d_PRIEldbl'
15175 d_PRIFldbl='$d_PRIFldbl'
15176 d_PRIGldbl='$d_PRIGldbl'
15177 d_PRIX64='$d_PRIX64'
15178 d_PRId64='$d_PRId64'
15179 d_PRIeldbl='$d_PRIeldbl'
15180 d_PRIfldbl='$d_PRIfldbl'
15181 d_PRIgldbl='$d_PRIgldbl'
15182 d_PRIi64='$d_PRIi64'
15183 d_PRIo64='$d_PRIo64'
15184 d_PRIu64='$d_PRIu64'
15185 d_PRIx64='$d_PRIx64'
15186 d_access='$d_access'
15187 d_accessx='$d_accessx'
15188 d_alarm='$d_alarm'
15189 d_archlib='$d_archlib'
15190 d_atolf='$d_atolf'
15191 d_atoll='$d_atoll'
15192 d_attribut='$d_attribut'
15193 d_bcmp='$d_bcmp'
15194 d_bcopy='$d_bcopy'
15195 d_bincompat5005='$d_bincompat5005'
15196 d_bsd='$d_bsd'
15197 d_bsdgetpgrp='$d_bsdgetpgrp'
15198 d_bsdsetpgrp='$d_bsdsetpgrp'
15199 d_bzero='$d_bzero'
15200 d_casti32='$d_casti32'
15201 d_castneg='$d_castneg'
15202 d_charvspr='$d_charvspr'
15203 d_chown='$d_chown'
15204 d_chroot='$d_chroot'
15205 d_chsize='$d_chsize'
15206 d_closedir='$d_closedir'
15207 d_const='$d_const'
15208 d_crypt='$d_crypt'
15209 d_csh='$d_csh'
15210 d_cuserid='$d_cuserid'
15211 d_dbl_dig='$d_dbl_dig'
15212 d_difftime='$d_difftime'
15213 d_dirnamlen='$d_dirnamlen'
15214 d_dlerror='$d_dlerror'
15215 d_dlopen='$d_dlopen'
15216 d_dlsymun='$d_dlsymun'
15217 d_dosuid='$d_dosuid'
15218 d_drand48proto='$d_drand48proto'
15219 d_dup2='$d_dup2'
15220 d_eaccess='$d_eaccess'
15221 d_endgrent='$d_endgrent'
15222 d_endhent='$d_endhent'
15223 d_endnent='$d_endnent'
15224 d_endpent='$d_endpent'
15225 d_endpwent='$d_endpwent'
15226 d_endsent='$d_endsent'
15227 d_endspent='$d_endspent'
15228 d_eofnblk='$d_eofnblk'
15229 d_eunice='$d_eunice'
15230 d_fchmod='$d_fchmod'
15231 d_fchown='$d_fchown'
15232 d_fcntl='$d_fcntl'
15233 d_fd_macros='$d_fd_macros'
15234 d_fd_set='$d_fd_set'
15235 d_fds_bits='$d_fds_bits'
15236 d_fgetpos='$d_fgetpos'
15237 d_flexfnam='$d_flexfnam'
15238 d_flock='$d_flock'
15239 d_fork='$d_fork'
15240 d_fpathconf='$d_fpathconf'
15241 d_fpos64_t='$d_fpos64_t'
15242 d_frexpl='$d_frexpl'
15243 d_fs_data_s='$d_fs_data_s'
15244 d_fseeko='$d_fseeko'
15245 d_fsetpos='$d_fsetpos'
15246 d_fstatfs='$d_fstatfs'
15247 d_fstatvfs='$d_fstatvfs'
15248 d_ftello='$d_ftello'
15249 d_ftime='$d_ftime'
15250 d_getcwd='$d_getcwd'
15251 d_getfsstat='$d_getfsstat'
15252 d_getgrent='$d_getgrent'
15253 d_getgrps='$d_getgrps'
15254 d_gethbyaddr='$d_gethbyaddr'
15255 d_gethbyname='$d_gethbyname'
15256 d_gethent='$d_gethent'
15257 d_gethname='$d_gethname'
15258 d_gethostprotos='$d_gethostprotos'
15259 d_getlogin='$d_getlogin'
15260 d_getmnt='$d_getmnt'
15261 d_getmntent='$d_getmntent'
15262 d_getnbyaddr='$d_getnbyaddr'
15263 d_getnbyname='$d_getnbyname'
15264 d_getnent='$d_getnent'
15265 d_getnetprotos='$d_getnetprotos'
15266 d_getpbyname='$d_getpbyname'
15267 d_getpbynumber='$d_getpbynumber'
15268 d_getpent='$d_getpent'
15269 d_getpgid='$d_getpgid'
15270 d_getpgrp2='$d_getpgrp2'
15271 d_getpgrp='$d_getpgrp'
15272 d_getppid='$d_getppid'
15273 d_getprior='$d_getprior'
15274 d_getprotoprotos='$d_getprotoprotos'
15275 d_getpwent='$d_getpwent'
15276 d_getsbyname='$d_getsbyname'
15277 d_getsbyport='$d_getsbyport'
15278 d_getsent='$d_getsent'
15279 d_getservprotos='$d_getservprotos'
15280 d_getspent='$d_getspent'
15281 d_getspnam='$d_getspnam'
15282 d_gettimeod='$d_gettimeod'
15283 d_gnulibc='$d_gnulibc'
15284 d_grpasswd='$d_grpasswd'
15285 d_hasmntopt='$d_hasmntopt'
15286 d_htonl='$d_htonl'
15287 d_iconv='$d_iconv'
15288 d_index='$d_index'
15289 d_inetaton='$d_inetaton'
15290 d_int64_t='$d_int64_t'
15291 d_isascii='$d_isascii'
15292 d_isnan='$d_isnan'
15293 d_isnanl='$d_isnanl'
15294 d_killpg='$d_killpg'
15295 d_lchown='$d_lchown'
15296 d_ldbl_dig='$d_ldbl_dig'
15297 d_link='$d_link'
15298 d_locconv='$d_locconv'
15299 d_lockf='$d_lockf'
15300 d_longdbl='$d_longdbl'
15301 d_longlong='$d_longlong'
15302 d_lseekproto='$d_lseekproto'
15303 d_lstat='$d_lstat'
15304 d_madvise='$d_madvise'
15305 d_mblen='$d_mblen'
15306 d_mbstowcs='$d_mbstowcs'
15307 d_mbtowc='$d_mbtowc'
15308 d_memchr='$d_memchr'
15309 d_memcmp='$d_memcmp'
15310 d_memcpy='$d_memcpy'
15311 d_memmove='$d_memmove'
15312 d_memset='$d_memset'
15313 d_mkdir='$d_mkdir'
15314 d_mkdtemp='$d_mkdtemp'
15315 d_mkfifo='$d_mkfifo'
15316 d_mkstemp='$d_mkstemp'
15317 d_mkstemps='$d_mkstemps'
15318 d_mktime='$d_mktime'
15319 d_mmap='$d_mmap'
15320 d_modfl='$d_modfl'
15321 d_mprotect='$d_mprotect'
15322 d_msg='$d_msg'
15323 d_msg_ctrunc='$d_msg_ctrunc'
15324 d_msg_dontroute='$d_msg_dontroute'
15325 d_msg_oob='$d_msg_oob'
15326 d_msg_peek='$d_msg_peek'
15327 d_msg_proxy='$d_msg_proxy'
15328 d_msgctl='$d_msgctl'
15329 d_msgget='$d_msgget'
15330 d_msgrcv='$d_msgrcv'
15331 d_msgsnd='$d_msgsnd'
15332 d_msync='$d_msync'
15333 d_munmap='$d_munmap'
15334 d_mymalloc='$d_mymalloc'
15335 d_nice='$d_nice'
15336 d_nv_preserves_uv='$d_nv_preserves_uv'
15337 d_off64_t='$d_off64_t'
15338 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15339 d_oldpthreads='$d_oldpthreads'
15340 d_oldsock='$d_oldsock'
15341 d_open3='$d_open3'
15342 d_pathconf='$d_pathconf'
15343 d_pause='$d_pause'
15344 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15345 d_phostname='$d_phostname'
15346 d_pipe='$d_pipe'
15347 d_poll='$d_poll'
15348 d_portable='$d_portable'
15349 d_pthread_yield='$d_pthread_yield'
15350 d_pwage='$d_pwage'
15351 d_pwchange='$d_pwchange'
15352 d_pwclass='$d_pwclass'
15353 d_pwcomment='$d_pwcomment'
15354 d_pwexpire='$d_pwexpire'
15355 d_pwgecos='$d_pwgecos'
15356 d_pwpasswd='$d_pwpasswd'
15357 d_pwquota='$d_pwquota'
15358 d_qgcvt='$d_qgcvt'
15359 d_quad='$d_quad'
15360 d_readdir='$d_readdir'
15361 d_readlink='$d_readlink'
15362 d_rename='$d_rename'
15363 d_rewinddir='$d_rewinddir'
15364 d_rmdir='$d_rmdir'
15365 d_safebcpy='$d_safebcpy'
15366 d_safemcpy='$d_safemcpy'
15367 d_sanemcmp='$d_sanemcmp'
15368 d_sched_yield='$d_sched_yield'
15369 d_scm_rights='$d_scm_rights'
15370 d_seekdir='$d_seekdir'
15371 d_select='$d_select'
15372 d_sem='$d_sem'
15373 d_semctl='$d_semctl'
15374 d_semctl_semid_ds='$d_semctl_semid_ds'
15375 d_semctl_semun='$d_semctl_semun'
15376 d_semget='$d_semget'
15377 d_semop='$d_semop'
15378 d_setegid='$d_setegid'
15379 d_seteuid='$d_seteuid'
15380 d_setgrent='$d_setgrent'
15381 d_setgrps='$d_setgrps'
15382 d_sethent='$d_sethent'
15383 d_setlinebuf='$d_setlinebuf'
15384 d_setlocale='$d_setlocale'
15385 d_setnent='$d_setnent'
15386 d_setpent='$d_setpent'
15387 d_setpgid='$d_setpgid'
15388 d_setpgrp2='$d_setpgrp2'
15389 d_setpgrp='$d_setpgrp'
15390 d_setprior='$d_setprior'
15391 d_setpwent='$d_setpwent'
15392 d_setregid='$d_setregid'
15393 d_setresgid='$d_setresgid'
15394 d_setresuid='$d_setresuid'
15395 d_setreuid='$d_setreuid'
15396 d_setrgid='$d_setrgid'
15397 d_setruid='$d_setruid'
15398 d_setsent='$d_setsent'
15399 d_setsid='$d_setsid'
15400 d_setspent='$d_setspent'
15401 d_setvbuf='$d_setvbuf'
15402 d_sfio='$d_sfio'
15403 d_shm='$d_shm'
15404 d_shmat='$d_shmat'
15405 d_shmatprototype='$d_shmatprototype'
15406 d_shmctl='$d_shmctl'
15407 d_shmdt='$d_shmdt'
15408 d_shmget='$d_shmget'
15409 d_sigaction='$d_sigaction'
15410 d_sigsetjmp='$d_sigsetjmp'
15411 d_socket='$d_socket'
15412 d_socklen_t='$d_socklen_t'
15413 d_sockpair='$d_sockpair'
15414 d_sqrtl='$d_sqrtl'
15415 d_statblks='$d_statblks'
15416 d_statfs_f_flags='$d_statfs_f_flags'
15417 d_statfs_s='$d_statfs_s'
15418 d_statvfs='$d_statvfs'
15419 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15420 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15421 d_stdio_stream_array='$d_stdio_stream_array'
15422 d_stdiobase='$d_stdiobase'
15423 d_stdstdio='$d_stdstdio'
15424 d_strchr='$d_strchr'
15425 d_strcoll='$d_strcoll'
15426 d_strctcpy='$d_strctcpy'
15427 d_strerrm='$d_strerrm'
15428 d_strerror='$d_strerror'
15429 d_strtod='$d_strtod'
15430 d_strtol='$d_strtol'
15431 d_strtold='$d_strtold'
15432 d_strtoll='$d_strtoll'
15433 d_strtoul='$d_strtoul'
15434 d_strtoull='$d_strtoull'
15435 d_strtouq='$d_strtouq'
15436 d_strxfrm='$d_strxfrm'
15437 d_suidsafe='$d_suidsafe'
15438 d_symlink='$d_symlink'
15439 d_syscall='$d_syscall'
15440 d_sysconf='$d_sysconf'
15441 d_sysernlst='$d_sysernlst'
15442 d_syserrlst='$d_syserrlst'
15443 d_system='$d_system'
15444 d_tcgetpgrp='$d_tcgetpgrp'
15445 d_tcsetpgrp='$d_tcsetpgrp'
15446 d_telldir='$d_telldir'
15447 d_telldirproto='$d_telldirproto'
15448 d_time='$d_time'
15449 d_times='$d_times'
15450 d_truncate='$d_truncate'
15451 d_tzname='$d_tzname'
15452 d_umask='$d_umask'
15453 d_uname='$d_uname'
15454 d_union_semun='$d_union_semun'
15455 d_ustat='$d_ustat'
15456 d_vendorarch='$d_vendorarch'
15457 d_vendorbin='$d_vendorbin'
15458 d_vendorlib='$d_vendorlib'
15459 d_vfork='$d_vfork'
15460 d_void_closedir='$d_void_closedir'
15461 d_voidsig='$d_voidsig'
15462 d_voidtty='$d_voidtty'
15463 d_volatile='$d_volatile'
15464 d_vprintf='$d_vprintf'
15465 d_wait4='$d_wait4'
15466 d_waitpid='$d_waitpid'
15467 d_wcstombs='$d_wcstombs'
15468 d_wctomb='$d_wctomb'
15469 d_xenix='$d_xenix'
15470 date='$date'
15471 db_hashtype='$db_hashtype'
15472 db_prefixtype='$db_prefixtype'
15473 defvoidused='$defvoidused'
15474 direntrytype='$direntrytype'
15475 dlext='$dlext'
15476 dlsrc='$dlsrc'
15477 doublesize='$doublesize'
15478 drand01='$drand01'
15479 dynamic_ext='$dynamic_ext'
15480 eagain='$eagain'
15481 ebcdic='$ebcdic'
15482 echo='$echo'
15483 egrep='$egrep'
15484 emacs='$emacs'
15485 eunicefix='$eunicefix'
15486 exe_ext='$exe_ext'
15487 expr='$expr'
15488 extensions='$extensions'
15489 fflushNULL='$fflushNULL'
15490 fflushall='$fflushall'
15491 find='$find'
15492 firstmakefile='$firstmakefile'
15493 flex='$flex'
15494 fpossize='$fpossize'
15495 fpostype='$fpostype'
15496 freetype='$freetype'
15497 full_ar='$full_ar'
15498 full_csh='$full_csh'
15499 full_sed='$full_sed'
15500 gccversion='$gccversion'
15501 gidformat='$gidformat'
15502 gidsign='$gidsign'
15503 gidsize='$gidsize'
15504 gidtype='$gidtype'
15505 glibpth='$glibpth'
15506 grep='$grep'
15507 groupcat='$groupcat'
15508 groupstype='$groupstype'
15509 gzip='$gzip'
15510 h_fcntl='$h_fcntl'
15511 h_sysfile='$h_sysfile'
15512 hint='$hint'
15513 hostcat='$hostcat'
15514 huge='$huge'
15515 i16size='$i16size'
15516 i16type='$i16type'
15517 i32size='$i32size'
15518 i32type='$i32type'
15519 i64size='$i64size'
15520 i64type='$i64type'
15521 i8size='$i8size'
15522 i8type='$i8type'
15523 i_arpainet='$i_arpainet'
15524 i_bsdioctl='$i_bsdioctl'
15525 i_db='$i_db'
15526 i_dbm='$i_dbm'
15527 i_dirent='$i_dirent'
15528 i_dld='$i_dld'
15529 i_dlfcn='$i_dlfcn'
15530 i_fcntl='$i_fcntl'
15531 i_float='$i_float'
15532 i_gdbm='$i_gdbm'
15533 i_grp='$i_grp'
15534 i_iconv='$i_iconv'
15535 i_ieeefp='$i_ieeefp'
15536 i_inttypes='$i_inttypes'
15537 i_limits='$i_limits'
15538 i_locale='$i_locale'
15539 i_machcthr='$i_machcthr'
15540 i_malloc='$i_malloc'
15541 i_math='$i_math'
15542 i_memory='$i_memory'
15543 i_mntent='$i_mntent'
15544 i_ndbm='$i_ndbm'
15545 i_netdb='$i_netdb'
15546 i_neterrno='$i_neterrno'
15547 i_netinettcp='$i_netinettcp'
15548 i_niin='$i_niin'
15549 i_poll='$i_poll'
15550 i_pthread='$i_pthread'
15551 i_pwd='$i_pwd'
15552 i_rpcsvcdbm='$i_rpcsvcdbm'
15553 i_sfio='$i_sfio'
15554 i_sgtty='$i_sgtty'
15555 i_shadow='$i_shadow'
15556 i_socks='$i_socks'
15557 i_stdarg='$i_stdarg'
15558 i_stddef='$i_stddef'
15559 i_stdlib='$i_stdlib'
15560 i_string='$i_string'
15561 i_sunmath='$i_sunmath'
15562 i_sysaccess='$i_sysaccess'
15563 i_sysdir='$i_sysdir'
15564 i_sysfile='$i_sysfile'
15565 i_sysfilio='$i_sysfilio'
15566 i_sysin='$i_sysin'
15567 i_sysioctl='$i_sysioctl'
15568 i_syslog='$i_syslog'
15569 i_sysmman='$i_sysmman'
15570 i_sysmode='$i_sysmode'
15571 i_sysmount='$i_sysmount'
15572 i_sysndir='$i_sysndir'
15573 i_sysparam='$i_sysparam'
15574 i_sysresrc='$i_sysresrc'
15575 i_syssecrt='$i_syssecrt'
15576 i_sysselct='$i_sysselct'
15577 i_syssockio='$i_syssockio'
15578 i_sysstat='$i_sysstat'
15579 i_sysstatfs='$i_sysstatfs'
15580 i_sysstatvfs='$i_sysstatvfs'
15581 i_systime='$i_systime'
15582 i_systimek='$i_systimek'
15583 i_systimes='$i_systimes'
15584 i_systypes='$i_systypes'
15585 i_sysuio='$i_sysuio'
15586 i_sysun='$i_sysun'
15587 i_sysutsname='$i_sysutsname'
15588 i_sysvfs='$i_sysvfs'
15589 i_syswait='$i_syswait'
15590 i_termio='$i_termio'
15591 i_termios='$i_termios'
15592 i_time='$i_time'
15593 i_unistd='$i_unistd'
15594 i_ustat='$i_ustat'
15595 i_utime='$i_utime'
15596 i_values='$i_values'
15597 i_varargs='$i_varargs'
15598 i_varhdr='$i_varhdr'
15599 i_vfork='$i_vfork'
15600 ignore_versioned_solibs='$ignore_versioned_solibs'
15601 inc_version_list='$inc_version_list'
15602 inc_version_list_init='$inc_version_list_init'
15603 incpath='$incpath'
15604 inews='$inews'
15605 installarchlib='$installarchlib'
15606 installbin='$installbin'
15607 installman1dir='$installman1dir'
15608 installman3dir='$installman3dir'
15609 installprefix='$installprefix'
15610 installprefixexp='$installprefixexp'
15611 installprivlib='$installprivlib'
15612 installscript='$installscript'
15613 installsitearch='$installsitearch'
15614 installsitebin='$installsitebin'
15615 installsitelib='$installsitelib'
15616 installstyle='$installstyle'
15617 installusrbinperl='$installusrbinperl'
15618 installvendorarch='$installvendorarch'
15619 installvendorbin='$installvendorbin'
15620 installvendorlib='$installvendorlib'
15621 intsize='$intsize'
15622 ivdformat='$ivdformat'
15623 ivsize='$ivsize'
15624 ivtype='$ivtype'
15625 known_extensions='$known_extensions'
15626 ksh='$ksh'
15627 large='$large'
15628 ld='$ld'
15629 lddlflags='$lddlflags'
15630 ldflags='$ldflags'
15631 ldlibpthname='$ldlibpthname'
15632 less='$less'
15633 lib_ext='$lib_ext'
15634 libc='$libc'
15635 libperl='$libperl'
15636 libpth='$libpth'
15637 libs='$libs'
15638 libsdirs='$libsdirs'
15639 libsfiles='$libsfiles'
15640 libsfound='$libsfound'
15641 libspath='$libspath'
15642 libswanted='$libswanted'
15643 line='$line'
15644 lint='$lint'
15645 lkflags='$lkflags'
15646 ln='$ln'
15647 lns='$lns'
15648 locincpth='$locincpth'
15649 loclibpth='$loclibpth'
15650 longdblsize='$longdblsize'
15651 longlongsize='$longlongsize'
15652 longsize='$longsize'
15653 lp='$lp'
15654 lpr='$lpr'
15655 ls='$ls'
15656 lseeksize='$lseeksize'
15657 lseektype='$lseektype'
15658 mail='$mail'
15659 mailx='$mailx'
15660 make='$make'
15661 make_set_make='$make_set_make'
15662 mallocobj='$mallocobj'
15663 mallocsrc='$mallocsrc'
15664 malloctype='$malloctype'
15665 man1dir='$man1dir'
15666 man1direxp='$man1direxp'
15667 man1ext='$man1ext'
15668 man3dir='$man3dir'
15669 man3direxp='$man3direxp'
15670 man3ext='$man3ext'
15671 medium='$medium'
15672 mips_type='$mips_type'
15673 mkdir='$mkdir'
15674 mmaptype='$mmaptype'
15675 models='$models'
15676 modetype='$modetype'
15677 more='$more'
15678 multiarch='$multiarch'
15679 mv='$mv'
15680 myarchname='$myarchname'
15681 mydomain='$mydomain'
15682 myhostname='$myhostname'
15683 myuname='$myuname'
15684 n='$n'
15685 netdb_hlen_type='$netdb_hlen_type'
15686 netdb_host_type='$netdb_host_type'
15687 netdb_name_type='$netdb_name_type'
15688 netdb_net_type='$netdb_net_type'
15689 nm='$nm'
15690 nm_opt='$nm_opt'
15691 nm_so_opt='$nm_so_opt'
15692 nonxs_ext='$nonxs_ext'
15693 nroff='$nroff'
15694 nvsize='$nvsize'
15695 nvtype='$nvtype'
15696 o_nonblock='$o_nonblock'
15697 obj_ext='$obj_ext'
15698 old_pthread_create_joinable='$old_pthread_create_joinable'
15699 optimize='$optimize'
15700 orderlib='$orderlib'
15701 osname='$osname'
15702 osvers='$osvers'
15703 otherlibdirs='$otherlibdirs'
15704 package='$package'
15705 pager='$pager'
15706 passcat='$passcat'
15707 patchlevel='$patchlevel'
15708 path_sep='$path_sep'
15709 perl5='$perl5'
15710 perl='$perl'
15711 perladmin='$perladmin'
15712 perlpath='$perlpath'
15713 pg='$pg'
15714 phostname='$phostname'
15715 pidtype='$pidtype'
15716 plibpth='$plibpth'
15717 pm_apiversion='$pm_apiversion'
15718 pmake='$pmake'
15719 pr='$pr'
15720 prefix='$prefix'
15721 prefixexp='$prefixexp'
15722 privlib='$privlib'
15723 privlibexp='$privlibexp'
15724 prototype='$prototype'
15725 ptrsize='$ptrsize'
15726 quadkind='$quadkind'
15727 quadtype='$quadtype'
15728 randbits='$randbits'
15729 randfunc='$randfunc'
15730 randseedtype='$randseedtype'
15731 ranlib='$ranlib'
15732 rd_nodata='$rd_nodata'
15733 revision='$revision'
15734 rm='$rm'
15735 rmail='$rmail'
15736 runnm='$runnm'
15737 sPRIEldbl='$sPRIEldbl'
15738 sPRIFldbl='$sPRIFldbl'
15739 sPRIGldbl='$sPRIGldbl'
15740 sPRIX64='$sPRIX64'
15741 sPRId64='$sPRId64'
15742 sPRIeldbl='$sPRIeldbl'
15743 sPRIfldbl='$sPRIfldbl'
15744 sPRIgldbl='$sPRIgldbl'
15745 sPRIi64='$sPRIi64'
15746 sPRIo64='$sPRIo64'
15747 sPRIu64='$sPRIu64'
15748 sPRIx64='$sPRIx64'
15749 sched_yield='$sched_yield'
15750 scriptdir='$scriptdir'
15751 scriptdirexp='$scriptdirexp'
15752 sed='$sed'
15753 seedfunc='$seedfunc'
15754 selectminbits='$selectminbits'
15755 selecttype='$selecttype'
15756 sendmail='$sendmail'
15757 sh='$sh'
15758 shar='$shar'
15759 sharpbang='$sharpbang'
15760 shmattype='$shmattype'
15761 shortsize='$shortsize'
15762 shrpenv='$shrpenv'
15763 shsharp='$shsharp'
15764 sig_count='$sig_count'
15765 sig_name='$sig_name'
15766 sig_name_init='$sig_name_init'
15767 sig_num='$sig_num'
15768 sig_num_init='$sig_num_init'
15769 signal_t='$signal_t'
15770 sitearch='$sitearch'
15771 sitearchexp='$sitearchexp'
15772 sitebin='$sitebin'
15773 sitebinexp='$sitebinexp'
15774 sitelib='$sitelib'
15775 sitelib_stem='$sitelib_stem'
15776 sitelibexp='$sitelibexp'
15777 siteprefix='$siteprefix'
15778 siteprefixexp='$siteprefixexp'
15779 sizesize='$sizesize'
15780 sizetype='$sizetype'
15781 sleep='$sleep'
15782 smail='$smail'
15783 small='$small'
15784 so='$so'
15785 sockethdr='$sockethdr'
15786 socketlib='$socketlib'
15787 socksizetype='$socksizetype'
15788 sort='$sort'
15789 spackage='$spackage'
15790 spitshell='$spitshell'
15791 split='$split'
15792 src='$src'
15793 ssizetype='$ssizetype'
15794 startperl='$startperl'
15795 startsh='$startsh'
15796 static_ext='$static_ext'
15797 stdchar='$stdchar'
15798 stdio_base='$stdio_base'
15799 stdio_bufsiz='$stdio_bufsiz'
15800 stdio_cnt='$stdio_cnt'
15801 stdio_filbuf='$stdio_filbuf'
15802 stdio_ptr='$stdio_ptr'
15803 stdio_stream_array='$stdio_stream_array'
15804 strings='$strings'
15805 submit='$submit'
15806 subversion='$subversion'
15807 sysman='$sysman'
15808 tail='$tail'
15809 tar='$tar'
15810 tbl='$tbl'
15811 tee='$tee'
15812 test='$test'
15813 timeincl='$timeincl'
15814 timetype='$timetype'
15815 touch='$touch'
15816 tr='$tr'
15817 trnl='$trnl'
15818 troff='$troff'
15819 u16size='$u16size'
15820 u16type='$u16type'
15821 u32size='$u32size'
15822 u32type='$u32type'
15823 u64size='$u64size'
15824 u64type='$u64type'
15825 u8size='$u8size'
15826 u8type='$u8type'
15827 uidformat='$uidformat'
15828 uidsign='$uidsign'
15829 uidsize='$uidsize'
15830 uidtype='$uidtype'
15831 uname='$uname'
15832 uniq='$uniq'
15833 uquadtype='$uquadtype'
15834 use5005threads='$use5005threads'
15835 use64bitall='$use64bitall'
15836 use64bitint='$use64bitint'
15837 usedl='$usedl'
15838 useithreads='$useithreads'
15839 uselargefiles='$uselargefiles'
15840 uselongdouble='$uselongdouble'
15841 usemorebits='$usemorebits'
15842 usemultiplicity='$usemultiplicity'
15843 usemymalloc='$usemymalloc'
15844 usenm='$usenm'
15845 useopcode='$useopcode'
15846 useperlio='$useperlio'
15847 useposix='$useposix'
15848 usesfio='$usesfio'
15849 useshrplib='$useshrplib'
15850 usesocks='$usesocks'
15851 usethreads='$usethreads'
15852 usevendorprefix='$usevendorprefix'
15853 usevfork='$usevfork'
15854 usrinc='$usrinc'
15855 uuname='$uuname'
15856 uvoformat='$uvoformat'
15857 uvsize='$uvsize'
15858 uvtype='$uvtype'
15859 uvuformat='$uvuformat'
15860 uvxformat='$uvxformat'
15861 vendorarch='$vendorarch'
15862 vendorarchexp='$vendorarchexp'
15863 vendorbin='$vendorbin'
15864 vendorbinexp='$vendorbinexp'
15865 vendorlib='$vendorlib'
15866 vendorlib_stem='$vendorlib_stem'
15867 vendorlibexp='$vendorlibexp'
15868 vendorprefix='$vendorprefix'
15869 vendorprefixexp='$vendorprefixexp'
15870 version='$version'
15871 vi='$vi'
15872 voidflags='$voidflags'
15873 xlibpth='$xlibpth'
15874 xs_apiversion='$xs_apiversion'
15875 zcat='$zcat'
15876 zip='$zip'
15877 EOT
15878
15879 : Add in command line options if available
15880 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15881
15882 : add special variables
15883 $test -f $src/patchlevel.h && \
15884 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15885 echo "CONFIGDOTSH=true" >>config.sh
15886
15887 : propagate old symbols
15888 if $test -f UU/config.sh; then
15889         <UU/config.sh sort | uniq >UU/oldconfig.sh
15890         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15891         sort | uniq -u >UU/oldsyms
15892         set X `cat UU/oldsyms`
15893         shift
15894         case $# in
15895         0) ;;
15896         *)
15897                 cat <<EOM
15898 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15899 EOM
15900                 echo "# Variables propagated from previous config.sh file." >>config.sh
15901                 for sym in `cat UU/oldsyms`; do
15902                         echo "    Propagating $hint variable "'$'"$sym..."
15903                         eval 'tmp="$'"${sym}"'"'
15904                         echo "$tmp" | \
15905                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15906                 done
15907                 ;;
15908         esac
15909 fi
15910
15911 : Finish up by extracting the .SH files
15912 case "$alldone" in
15913 exit)
15914         $rm -rf UU
15915         echo "Done."
15916         exit 0
15917         ;;
15918 cont)
15919         ;;
15920 '')
15921         dflt=''
15922         nostick=true
15923         $cat <<EOM
15924
15925 If you'd like to make any changes to the config.sh file before I begin
15926 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15927
15928 EOM
15929         rp="Press return or use a shell escape to edit config.sh:"
15930         . UU/myread
15931         nostick=''
15932         case "$ans" in
15933         '') ;;
15934         *) : in case they cannot read
15935                 sh 1>&4 -c "$ans";;
15936         esac
15937         ;;
15938 esac
15939
15940 : if this fails, just run all the .SH files by hand
15941 . ./config.sh
15942
15943 echo " "
15944 exec 1>&4
15945 . ./UU/extract
15946
15947 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15948         dflt=y
15949         case "$silent" in
15950         true) ;;
15951         *)
15952                 $cat <<EOM
15953
15954 Now you need to generate make dependencies by running "$make depend".
15955 You might prefer to run it in background: "$make depend > makedepend.out &"
15956 It can take a while, so you might not want to run it right now.
15957
15958 EOM
15959                 ;;
15960         esac
15961         rp="Run $make depend now?"
15962         . UU/myread
15963         case "$ans" in
15964         y*)
15965                 $make depend && echo "Now you must run a $make."
15966                 ;;
15967         *)
15968                 echo "You must run '$make depend' then '$make'."
15969                 ;;
15970         esac
15971 elif test -f [Mm]akefile; then
15972         echo " "
15973         echo "Now you must run a $make."
15974 else
15975         echo "Done."
15976 fi
15977
15978 if $test -f Policy.sh; then
15979     $cat <<EOM
15980
15981 If you compile $package on a different machine or from a different object
15982 directory, copy the Policy.sh file from this object directory to the
15983 new one before you run Configure -- this will help you with most of
15984 the policy defaults.
15985
15986 EOM
15987 fi
15988 if $test -f config.msg; then
15989     echo "Hmm.  I also noted the following information while running:"
15990     echo " "
15991     $cat config.msg >&4
15992     $rm -f config.msg
15993 fi
15994 $rm -f kit*isdone ark*isdone
15995 $rm -rf UU
15996
15997 : End of Configure
15998