ef5626fe4bbdf2442b76dd90e30dab30c025b1af
[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 Jul 28 01:31:47 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 ccflags=''
292 cppflags=''
293 ldflags=''
294 lkflags=''
295 locincpth=''
296 optimize=''
297 cf_email=''
298 cf_by=''
299 cf_time=''
300 charsize=''
301 contains=''
302 cpp_stuff=''
303 cpplast=''
304 cppminus=''
305 cpprun=''
306 cppstdin=''
307 crosscompile=''
308 d_access=''
309 d_accessx=''
310 d_alarm=''
311 d_attribut=''
312 d_bcmp=''
313 d_bcopy=''
314 d_bzero=''
315 d_casti32=''
316 castflags=''
317 d_castneg=''
318 d_chown=''
319 d_chroot=''
320 d_chsize=''
321 d_closedir=''
322 d_void_closedir=''
323 d_const=''
324 cryptlib=''
325 d_crypt=''
326 d_csh=''
327 full_csh=''
328 d_cuserid=''
329 d_dbl_dig=''
330 d_difftime=''
331 d_dlerror=''
332 d_dlopen=''
333 d_dlsymun=''
334 d_dosuid=''
335 d_suidsafe=''
336 d_drand48proto=''
337 d_dup2=''
338 d_eaccess=''
339 d_endgrent=''
340 d_endhent=''
341 d_endnent=''
342 d_endpent=''
343 d_endpwent=''
344 d_endsent=''
345 d_fchmod=''
346 d_fchown=''
347 d_fcntl=''
348 d_fd_macros=''
349 d_fd_set=''
350 d_fds_bits=''
351 d_fgetpos=''
352 d_flexfnam=''
353 d_flock=''
354 d_fork=''
355 d_fpos64_t=''
356 d_frexpl=''
357 d_fs_data_s=''
358 d_fseeko=''
359 d_fsetpos=''
360 d_fstatfs=''
361 d_ftello=''
362 d_ftime=''
363 d_gettimeod=''
364 d_Gconvert=''
365 d_getcwd=''
366 d_getespwnam=''
367 d_getfsstat=''
368 d_getgrent=''
369 d_getgrps=''
370 d_gethbyaddr=''
371 d_gethbyname=''
372 d_gethent=''
373 aphostname=''
374 d_gethname=''
375 d_phostname=''
376 d_uname=''
377 d_gethostprotos=''
378 d_getlogin=''
379 d_getmnt=''
380 d_getmntent=''
381 d_getnbyaddr=''
382 d_getnbyname=''
383 d_getnent=''
384 d_getnetprotos=''
385 d_getpent=''
386 d_getpgid=''
387 d_getpgrp2=''
388 d_bsdgetpgrp=''
389 d_getpgrp=''
390 d_getppid=''
391 d_getprior=''
392 d_getpbyname=''
393 d_getpbynumber=''
394 d_getprotoprotos=''
395 d_getprpwnam=''
396 d_getpwent=''
397 d_getsent=''
398 d_getservprotos=''
399 d_getspnam=''
400 d_getsbyname=''
401 d_getsbyport=''
402 d_gnulibc=''
403 d_hasmntopt=''
404 d_htonl=''
405 d_iconv=''
406 d_inetaton=''
407 d_int64_t=''
408 d_isascii=''
409 d_isnan=''
410 d_isnanl=''
411 d_killpg=''
412 d_lchown=''
413 d_ldbl_dig=''
414 d_link=''
415 d_locconv=''
416 d_lockf=''
417 d_longdbl=''
418 longdblsize=''
419 d_longlong=''
420 longlongsize=''
421 d_lseekproto=''
422 d_lstat=''
423 d_madvise=''
424 d_mblen=''
425 d_mbstowcs=''
426 d_mbtowc=''
427 d_memchr=''
428 d_memcmp=''
429 d_memcpy=''
430 d_memmove=''
431 d_memset=''
432 d_mkdir=''
433 d_mkdtemp=''
434 d_mkfifo=''
435 d_mkstemp=''
436 d_mkstemps=''
437 d_mktime=''
438 d_mmap=''
439 mmaptype=''
440 d_modfl=''
441 d_mprotect=''
442 d_msg=''
443 d_msgctl=''
444 d_msgget=''
445 d_msgrcv=''
446 d_msgsnd=''
447 d_msync=''
448 d_munmap=''
449 d_nice=''
450 d_off64_t=''
451 d_open3=''
452 d_fpathconf=''
453 d_pathconf=''
454 d_pause=''
455 d_pipe=''
456 d_poll=''
457 d_portable=''
458 d_old_pthread_create_joinable=''
459 old_pthread_create_joinable=''
460 d_pthread_yield=''
461 d_sched_yield=''
462 sched_yield=''
463 d_qgcvt=''
464 d_readdir=''
465 d_rewinddir=''
466 d_seekdir=''
467 d_telldir=''
468 d_readlink=''
469 d_rename=''
470 d_rmdir=''
471 d_safebcpy=''
472 d_safemcpy=''
473 d_sanemcmp=''
474 d_select=''
475 d_sem=''
476 d_semctl=''
477 d_semget=''
478 d_semop=''
479 d_setegid=''
480 d_seteuid=''
481 d_setgrent=''
482 d_setgrps=''
483 d_sethent=''
484 d_setlinebuf=''
485 d_setlocale=''
486 d_setnent=''
487 d_setpent=''
488 d_setpgid=''
489 d_setpgrp2=''
490 d_bsdsetpgrp=''
491 d_setpgrp=''
492 d_setprior=''
493 d_setproctitle=''
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_setvbuf=''
504 d_sfio=''
505 usesfio=''
506 d_shm=''
507 d_shmat=''
508 d_shmatprototype=''
509 shmattype=''
510 d_shmctl=''
511 d_shmdt=''
512 d_shmget=''
513 d_sigaction=''
514 d_sigsetjmp=''
515 d_msg_ctrunc=''
516 d_msg_dontroute=''
517 d_msg_oob=''
518 d_msg_peek=''
519 d_msg_proxy=''
520 d_oldsock=''
521 d_scm_rights=''
522 d_socket=''
523 d_sockpair=''
524 sockethdr=''
525 socketlib=''
526 d_socklen_t=''
527 d_sqrtl=''
528 d_statblks=''
529 d_statfs_f_flags=''
530 d_statfs_s=''
531 d_fstatvfs=''
532 d_statvfs=''
533 d_stdio_cnt_lval=''
534 d_stdio_ptr_lval=''
535 d_stdiobase=''
536 d_stdstdio=''
537 stdio_base=''
538 stdio_bufsiz=''
539 stdio_cnt=''
540 stdio_filbuf=''
541 stdio_ptr=''
542 d_index=''
543 d_strchr=''
544 d_strcoll=''
545 d_strctcpy=''
546 d_strerrm=''
547 d_strerror=''
548 d_sysernlst=''
549 d_syserrlst=''
550 d_strtod=''
551 d_strtol=''
552 d_strtold=''
553 d_strtoll=''
554 d_strtoul=''
555 d_strtoull=''
556 d_strtouq=''
557 d_strxfrm=''
558 d_symlink=''
559 d_syscall=''
560 d_sysconf=''
561 d_system=''
562 d_tcgetpgrp=''
563 d_tcsetpgrp=''
564 d_telldirproto=''
565 d_time=''
566 timetype=''
567 clocktype=''
568 d_times=''
569 d_truncate=''
570 d_tzname=''
571 d_umask=''
572 d_semctl_semid_ds=''
573 d_semctl_semun=''
574 d_union_semun=''
575 d_ustat=''
576 d_vfork=''
577 usevfork=''
578 d_voidsig=''
579 signal_t=''
580 d_volatile=''
581 d_charvspr=''
582 d_vprintf=''
583 d_wait4=''
584 d_waitpid=''
585 d_wcstombs=''
586 d_wctomb=''
587 dlext=''
588 cccdlflags=''
589 ccdlflags=''
590 dlsrc=''
591 ld=''
592 lddlflags=''
593 usedl=''
594 doublesize=''
595 ebcdic=''
596 fflushNULL=''
597 fflushall=''
598 fpossize=''
599 fpostype=''
600 gccversion=''
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_prot=''
642 i_pthread=''
643 d_pwage=''
644 d_pwchange=''
645 d_pwclass=''
646 d_pwcomment=''
647 d_pwexpire=''
648 d_pwgecos=''
649 d_pwpasswd=''
650 d_pwquota=''
651 i_pwd=''
652 i_sfio=''
653 i_shadow=''
654 i_socks=''
655 i_stddef=''
656 i_stdlib=''
657 i_string=''
658 strings=''
659 i_sunmath=''
660 i_sysaccess=''
661 i_sysdir=''
662 i_sysfile=''
663 d_voidtty=''
664 i_bsdioctl=''
665 i_sysfilio=''
666 i_sysioctl=''
667 i_syssockio=''
668 i_syslog=''
669 i_sysmman=''
670 i_sysmode=''
671 i_sysmount=''
672 i_sysndir=''
673 i_sysparam=''
674 i_sysresrc=''
675 i_syssecrt=''
676 i_sysselct=''
677 i_sysstat=''
678 i_sysstatfs=''
679 i_sysstatvfs=''
680 i_systimes=''
681 i_systypes=''
682 i_sysuio=''
683 i_sysun=''
684 i_sysutsname=''
685 i_sysvfs=''
686 i_syswait=''
687 i_sgtty=''
688 i_termio=''
689 i_termios=''
690 i_systime=''
691 i_systimek=''
692 i_time=''
693 timeincl=''
694 i_unistd=''
695 i_ustat=''
696 i_utime=''
697 i_values=''
698 i_stdarg=''
699 i_varargs=''
700 i_varhdr=''
701 i_vfork=''
702 inc_version_list=''
703 inc_version_list_init=''
704 installprefix=''
705 installprefixexp=''
706 installstyle=''
707 installusrbinperl=''
708 intsize=''
709 longsize=''
710 shortsize=''
711 libc=''
712 ldlibpthname=''
713 libperl=''
714 shrpenv=''
715 useshrplib=''
716 glibpth=''
717 libpth=''
718 loclibpth=''
719 plibpth=''
720 xlibpth=''
721 ignore_versioned_solibs=''
722 libs=''
723 libsdirs=''
724 libsfiles=''
725 libsfound=''
726 libspath=''
727 lns=''
728 d_PRIEldbl=''
729 d_PRIFldbl=''
730 d_PRIGldbl=''
731 d_PRIeldbl=''
732 d_PRIfldbl=''
733 d_PRIgldbl=''
734 sPRIEldbl=''
735 sPRIFldbl=''
736 sPRIGldbl=''
737 sPRIeldbl=''
738 sPRIfldbl=''
739 sPRIgldbl=''
740 lseeksize=''
741 lseektype=''
742 make_set_make=''
743 d_mymalloc=''
744 freetype=''
745 mallocobj=''
746 mallocsrc=''
747 malloctype=''
748 usemymalloc=''
749 installman1dir=''
750 man1dir=''
751 man1direxp=''
752 man1ext=''
753 installman3dir=''
754 man3dir=''
755 man3direxp=''
756 man3ext=''
757 huge=''
758 large=''
759 medium=''
760 models=''
761 small=''
762 split=''
763 modetype=''
764 multiarch=''
765 mydomain=''
766 myhostname=''
767 phostname=''
768 c=''
769 n=''
770 d_eofnblk=''
771 eagain=''
772 o_nonblock=''
773 rd_nodata=''
774 netdb_hlen_type=''
775 netdb_host_type=''
776 netdb_name_type=''
777 netdb_net_type=''
778 groupcat=''
779 hostcat=''
780 passcat=''
781 orderlib=''
782 ranlib=''
783 d_perl_otherlibdirs=''
784 otherlibdirs=''
785 package=''
786 spackage=''
787 pager=''
788 api_revision=''
789 api_subversion=''
790 api_version=''
791 api_versionstring=''
792 patchlevel=''
793 revision=''
794 subversion=''
795 version=''
796 perl5=''
797 perladmin=''
798 perlpath=''
799 d_nv_preserves_uv=''
800 d_nv_preserves_uv_bits=''
801 i16size=''
802 i16type=''
803 i32size=''
804 i32type=''
805 i64size=''
806 i64type=''
807 i8size=''
808 i8type=''
809 ivsize=''
810 ivtype=''
811 nvsize=''
812 nvtype=''
813 u16size=''
814 u16type=''
815 u32size=''
816 u32type=''
817 u64size=''
818 u64type=''
819 u8size=''
820 u8type=''
821 uvsize=''
822 uvtype=''
823 ivdformat=''
824 uvoformat=''
825 uvuformat=''
826 uvxformat=''
827 pidtype=''
828 prefix=''
829 prefixexp=''
830 installprivlib=''
831 privlib=''
832 privlibexp=''
833 prototype=''
834 ptrsize=''
835 d_PRIX64=''
836 d_PRId64=''
837 d_PRIi64=''
838 d_PRIo64=''
839 d_PRIu64=''
840 d_PRIx64=''
841 sPRIX64=''
842 sPRId64=''
843 sPRIi64=''
844 sPRIo64=''
845 sPRIu64=''
846 sPRIx64=''
847 d_quad=''
848 quadkind=''
849 quadtype=''
850 uquadtype=''
851 drand01=''
852 randbits=''
853 randfunc=''
854 randseedtype=''
855 seedfunc=''
856 installscript=''
857 scriptdir=''
858 scriptdirexp=''
859 selectminbits=''
860 selecttype=''
861 sh=''
862 sig_count=''
863 sig_name=''
864 sig_name_init=''
865 sig_num=''
866 sig_num_init=''
867 installsitearch=''
868 sitearch=''
869 sitearchexp=''
870 installsitebin=''
871 sitebin=''
872 sitebinexp=''
873 installsitelib=''
874 sitelib=''
875 sitelib_stem=''
876 sitelibexp=''
877 siteprefix=''
878 siteprefixexp=''
879 sizesize=''
880 sizetype=''
881 so=''
882 socksizetype=''
883 sharpbang=''
884 shsharp=''
885 spitshell=''
886 src=''
887 ssizetype=''
888 startperl=''
889 startsh=''
890 stdchar=''
891 d_stdio_stream_array=''
892 stdio_stream_array=''
893 sysman=''
894 trnl=''
895 uidformat=''
896 uidsign=''
897 uidsize=''
898 uidtype=''
899 archname64=''
900 use64bitall=''
901 use64bitint=''
902 uselargefiles=''
903 uselongdouble=''
904 usemorebits=''
905 usemultiplicity=''
906 nm_opt=''
907 nm_so_opt=''
908 runnm=''
909 usenm=''
910 useperlio=''
911 usesocks=''
912 d_oldpthreads=''
913 use5005threads=''
914 useithreads=''
915 usethreads=''
916 incpath=''
917 mips_type=''
918 usrinc=''
919 d_vendorarch=''
920 installvendorarch=''
921 vendorarch=''
922 vendorarchexp=''
923 d_vendorbin=''
924 installvendorbin=''
925 vendorbin=''
926 vendorbinexp=''
927 d_vendorlib=''
928 installvendorlib=''
929 vendorlib=''
930 vendorlib_stem=''
931 vendorlibexp=''
932 usevendorprefix=''
933 vendorprefix=''
934 vendorprefixexp=''
935 defvoidused=''
936 voidflags=''
937 pm_apiversion=''
938 xs_apiversion=''
939 CONFIG=''
940
941 define='define'
942 undef='undef'
943 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
944 rmlist=''
945
946 : We must find out about Eunice early
947 eunicefix=':'
948 if test -f /etc/unixtovms; then
949         eunicefix=/etc/unixtovms
950 fi
951 if test -f /etc/unixtovms.exe; then
952         eunicefix=/etc/unixtovms.exe
953 fi
954
955 i_whoami=''
956 : set useposix=false in your hint file to disable the POSIX extension.
957 useposix=true
958 : set useopcode=false in your hint file to disable the Opcode extension.
959 useopcode=true
960 : Trailing extension.  Override this in a hint file, if needed.
961 _exe=''
962 : Extra object files, if any, needed on this platform.
963 archobjs=''
964 : Possible local include directories to search.
965 : Set locincpth to "" in a hint file to defeat local include searches.
966 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
967 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
968 :
969 : no include file wanted by default
970 inclwanted=''
971
972 groupstype=''
973 : change the next line if compiling for Xenix/286 on Xenix/386
974 xlibpth='/usr/lib/386 /lib/386'
975 : Possible local library directories to search.
976 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
977 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
978
979 : general looking path for locating libraries
980 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
981 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
982 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
983 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
984 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
985
986 : Private path used by Configure to find libraries.  Its value
987 : is prepended to libpth. This variable takes care of special
988 : machines, like the mips.  Usually, it should be empty.
989 plibpth=''
990
991 : default library list
992 libswanted=''
993 : some systems want to use only the non-versioned libso:s
994 ignore_versioned_solibs=''
995 : set usemultiplicity on the Configure command line to enable multiplicity.
996 : set usesocks on the Configure command line to enable socks.
997 : set usethreads on the Configure command line to enable threads.
998 : full support for void wanted by default
999 defvoidused=15
1000
1001 : List of libraries we want.
1002 : If anyone needs -lnet, put it in a hint file.
1003 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1004 libswanted="$libswanted dld ld sun m c cposix posix"
1005 libswanted="$libswanted ndir dir crypt sec"
1006 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1007 : We probably want to search /usr/shlib before most other libraries.
1008 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1009 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1010 glibpth="/usr/shlib $glibpth"
1011 : Do not use vfork unless overridden by a hint file.
1012 usevfork=false
1013
1014 : Find the basic shell for Bourne shell scripts
1015 case "$sh" in
1016 '')
1017         case "$SYSTYPE" in
1018         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1019         *) xxx='/bin/sh';;
1020         esac
1021         if test -f "$xxx"; then
1022                 sh="$xxx"
1023         else
1024                 : Build up a list and do a single loop so we can 'break' out.
1025                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1026                 for xxx in sh bash ksh pdksh ash; do
1027                         for p in $pth; do
1028                                 try="$try ${p}/${xxx}"
1029                         done
1030                 done
1031                 for xxx in $try; do
1032                         if test -f "$xxx"; then
1033                                 sh="$xxx";
1034                                 break
1035                         elif test -f "$xxx.exe"; then
1036                                 sh="$xxx";
1037                                 break
1038                         fi
1039                 done
1040         fi
1041         ;;
1042 esac
1043
1044 case "$sh" in
1045 '')     cat <<EOM >&2
1046 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1047
1048 Usually it's in /bin/sh.  How did you even get this far?
1049 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1050 we'll try to straighten this all out.
1051 EOM
1052         exit 1
1053         ;;
1054 esac
1055
1056 : see if sh knows # comments
1057 if `$sh -c '#' >/dev/null 2>&1`; then
1058         shsharp=true
1059         spitshell=cat
1060         xcat=/bin/cat
1061         test -f $xcat || xcat=/usr/bin/cat
1062         echo "#!$xcat" >try
1063         $eunicefix try
1064         chmod +x try
1065         ./try > today
1066         if test -s today; then
1067                 sharpbang='#!'
1068         else
1069                 echo "#! $xcat" > try
1070                 $eunicefix try
1071                 chmod +x try
1072                 ./try > today
1073                 if test -s today; then
1074                         sharpbang='#! '
1075                 else
1076                         sharpbang=': use '
1077                 fi
1078         fi
1079 else
1080         echo " "
1081         echo "Your $sh doesn't grok # comments--I will strip them later on."
1082         shsharp=false
1083         cd ..
1084         echo "exec grep -v '^[  ]*#'" >spitshell
1085         chmod +x spitshell
1086         $eunicefix spitshell
1087         spitshell=`pwd`/spitshell
1088         cd UU
1089         echo "I presume that if # doesn't work, #! won't work either!"
1090         sharpbang=': use '
1091 fi
1092 rm -f try today
1093
1094 : figure out how to guarantee sh startup
1095 case "$startsh" in
1096 '') startsh=${sharpbang}${sh} ;;
1097 *)
1098 esac
1099 cat >try <<EOSS
1100 $startsh
1101 set abc
1102 test "$?abc" != 1
1103 EOSS
1104
1105 chmod +x try
1106 $eunicefix try
1107 if ./try; then
1108         : echo "Yup, it does."
1109 else
1110         echo "Hmm... '$startsh' does not guarantee sh startup..."
1111         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1112 fi
1113 rm -f try
1114
1115
1116 : Save command line options in file UU/cmdline.opt for later use in
1117 : generating config.sh.
1118 cat > cmdline.opt <<EOSH
1119 # Configure command line arguments.
1120 config_arg0='$0'
1121 config_args='$*'
1122 config_argc=$#
1123 EOSH
1124 argn=1
1125 for arg in "$@"; do
1126         cat >>cmdline.opt <<EOSH
1127 config_arg$argn='$arg'
1128 EOSH
1129         argn=`expr $argn + 1`
1130 done
1131
1132 : produce awk script to parse command line options
1133 cat >options.awk <<'EOF'
1134 BEGIN {
1135         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1136
1137         len = length(optstr);
1138         for (i = 1; i <= len; i++) {
1139                 c = substr(optstr, i, 1);
1140                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1141                 if (a == ":") {
1142                         arg[c] = 1;
1143                         i++;
1144                 }
1145                 opt[c] = 1;
1146         }
1147 }
1148 {
1149         expect = 0;
1150         str = $0;
1151         if (substr(str, 1, 1) != "-") {
1152                 printf("'%s'\n", str);
1153                 next;
1154         }
1155         len = length($0);
1156         for (i = 2; i <= len; i++) {
1157                 c = substr(str, i, 1);
1158                 if (!opt[c]) {
1159                         printf("-%s\n", substr(str, i));
1160                         next;
1161                 }
1162                 printf("-%s\n", c);
1163                 if (arg[c]) {
1164                         if (i < len)
1165                                 printf("'%s'\n", substr(str, i + 1));
1166                         else
1167                                 expect = 1;
1168                         next;
1169                 }
1170         }
1171 }
1172 END {
1173         if (expect)
1174                 print "?";
1175 }
1176 EOF
1177
1178 : process the command line options
1179 set X `for arg in "$@"; do echo "X$arg"; done |
1180         sed -e s/X// | awk -f options.awk`
1181 eval "set $*"
1182 shift
1183 rm -f options.awk
1184
1185 : set up default values
1186 fastread=''
1187 reuseval=false
1188 config_sh=''
1189 alldone=''
1190 error=''
1191 silent=''
1192 extractsh=''
1193 override=''
1194 knowitall=''
1195 rm -f optdef.sh posthint.sh
1196 cat >optdef.sh <<EOS
1197 $startsh
1198 EOS
1199
1200
1201 : option parsing
1202 while test $# -gt 0; do
1203         case "$1" in
1204         -d) shift; fastread=yes;;
1205         -e) shift; alldone=cont;;
1206         -f)
1207                 shift
1208                 cd ..
1209                 if test -r "$1"; then
1210                         config_sh="$1"
1211                 else
1212                         echo "$me: cannot read config file $1." >&2
1213                         error=true
1214                 fi
1215                 cd UU
1216                 shift;;
1217         -h) shift; error=true;;
1218         -r) shift; reuseval=true;;
1219         -s) shift; silent=true; realsilent=true;;
1220         -E) shift; alldone=exit;;
1221         -K) shift; knowitall=true;;
1222         -O) shift; override=true;;
1223         -S) shift; silent=true; extractsh=true;;
1224         -D)
1225                 shift
1226                 case "$1" in
1227                 *=)
1228                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1229                         echo "$me: ignoring -D $1" >&2
1230                         ;;
1231                 *=*) echo "$1" | \
1232                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1233                 *) echo "$1='define'" >> optdef.sh;;
1234                 esac
1235                 shift
1236                 ;;
1237         -U)
1238                 shift
1239                 case "$1" in
1240                 *=) echo "$1" >> optdef.sh;;
1241                 *=*)
1242                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1243                         echo "$me: ignoring -U $1" >&2
1244                         ;;
1245                 *) echo "$1='undef'" >> optdef.sh;;
1246                 esac
1247                 shift
1248                 ;;
1249         -A)
1250             shift
1251             xxx=''
1252             yyy="$1"
1253             zzz=''
1254             uuu=undef
1255             case "$yyy" in
1256             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1257                  case "$zzz" in
1258                  *:*) zzz='' ;;
1259                  *)   xxx=append
1260                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1261                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1262                  esac
1263                  ;;
1264             esac
1265             case "$xxx" in
1266             '')  case "$yyy" in
1267                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1268                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1269                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1270                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1271                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1272                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1273                  esac
1274                  ;;       
1275             esac
1276             case "$xxx" in
1277             append)
1278                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1279             clear)
1280                 echo "$yyy=''"                  >> posthint.sh ;;
1281             define)
1282                 case "$zzz" in
1283                 '') zzz=define ;;
1284                 esac
1285                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1286             eval)
1287                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1288             prepend)
1289                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1290             undef)
1291                 case "$zzz" in
1292                 '') zzz="$uuu" ;;
1293                 esac
1294                 echo "$yyy=$zzz"                >> posthint.sh ;;
1295             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1296             esac
1297             shift
1298             ;;
1299         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1300             exit 0;;
1301         --) break;;
1302         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1303         *) break;;
1304         esac
1305 done
1306
1307 case "$error" in
1308 true)
1309         cat >&2 <<EOM
1310 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1311                  [-U symbol] [-U symbol=] [-A command:symbol...]
1312   -d : use defaults for all answers.
1313   -e : go on without questioning past the production of config.sh.
1314   -f : specify an alternate default configuration file.
1315   -h : print this help message and exit (with an error status).
1316   -r : reuse C symbols value if possible (skips costly nm extraction).
1317   -s : silent mode, only echoes questions and essential information.
1318   -D : define symbol to have some value:
1319          -D symbol         symbol gets the value 'define'
1320          -D symbol=value   symbol gets the value 'value'
1321   -E : stop at the end of questions, after having produced config.sh.
1322   -K : do not use unless you know what you are doing.
1323   -O : let -D and -U override definitions from loaded configuration file.
1324   -S : perform variable substitutions on all .SH files (can mix with -f)
1325   -U : undefine symbol:
1326          -U symbol    symbol gets the value 'undef'
1327          -U symbol=   symbol gets completely empty
1328   -A : manipulate symbol after the platform specific hints have been applied:
1329          -A symbol=value                append " "value to symbol
1330          -A append:symbol=value         append value to symbol
1331          -A define:symbol=value         define symbol to have value
1332          -A clear:symbol                define symbol to be ''
1333          -A define:symbol               define symbol to be 'define'
1334          -A eval:symbol=value           define symbol to be eval of value
1335          -A prepend:symbol=value        prepend value to symbol
1336          -A undef:symbol                define symbol to be 'undef'
1337          -A undef:symbol=               define symbol to be ''
1338   -V : print version number and exit (with a zero status).
1339 EOM
1340         exit 1
1341         ;;
1342 esac
1343
1344 : Sanity checks
1345 case "$fastread$alldone" in
1346 yescont|yesexit) ;;
1347 *)
1348         case "$extractsh" in
1349         true) ;;
1350         *)
1351                 if test ! -t 0; then
1352                         echo "Say 'sh Configure', not 'sh <Configure'"
1353                         exit 1
1354                 fi
1355                 ;;
1356         esac
1357         ;;
1358 esac
1359
1360 exec 4>&1
1361 case "$silent" in
1362 true) exec 1>/dev/null;;
1363 esac
1364
1365 : run the defines and the undefines, if any, but leave the file out there...
1366 touch optdef.sh
1367 . ./optdef.sh
1368 : create the posthint manipulation script and leave the file out there...
1369 touch posthint.sh
1370
1371 : set package name
1372 package=perl5
1373 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1374 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1375 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1376 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1377 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1378 esac
1379
1380 : Some greps do not return status, grrr.
1381 echo "grimblepritz" >grimble
1382 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1383         contains=contains
1384 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1385         contains=grep
1386 else
1387         contains=contains
1388 fi
1389 rm -f grimble
1390 : the following should work in any shell
1391 case "$contains" in
1392 contains*)
1393         echo " "
1394         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1395         cat >contains <<'EOSS'
1396 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1397 EOSS
1398 chmod +x contains
1399 esac
1400
1401 : Find the path to the source tree
1402 case "$src" in
1403 '') case "$0" in
1404     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1405          case "$src" in
1406          /*)    ;;
1407          *)     src=`cd ../$src && pwd` ;;
1408          esac
1409          ;;
1410     *)   src='.';;
1411     esac;;
1412 esac
1413 case "$src" in
1414 '')     src=/
1415         rsrc=/
1416         ;;
1417 /*) rsrc="$src";;
1418 *) rsrc="../$src";;
1419 esac
1420 if test -f $rsrc/Configure && \
1421         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1422 then
1423    : found it, so we are ok.
1424 else
1425         rsrc=''
1426         for src in . .. ../.. ../../.. ../../../..; do
1427                 if test -f ../$src/Configure && \
1428                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1429                 then
1430                         rsrc=../$src
1431                         break
1432                 fi
1433         done
1434 fi
1435 case "$rsrc" in
1436 '')
1437         cat <<EOM >&4
1438
1439 Sorry, I can't seem to locate the source dir for $package.  Please start
1440 Configure with an explicit path -- i.e. /some/path/Configure.
1441
1442 EOM
1443         exit 1
1444         ;;
1445 ../.)   rsrc='..';;
1446 *)
1447         echo " "
1448         echo "Sources for $package found in \"$src\"." >&4
1449         ;;
1450 esac
1451
1452 : script used to extract .SH files with variable substitutions
1453 cat >extract <<'EOS'
1454 CONFIGDOTSH=true
1455 echo "Doing variable substitutions on .SH files..."
1456 if test -f $src/MANIFEST; then
1457         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1458 else
1459         echo "(Looking for .SH files under the source directory.)"
1460         set x `(cd $src; find . -name "*.SH" -print)`
1461 fi
1462 shift
1463 case $# in
1464 0) set x `(cd $src; echo *.SH)`; shift;;
1465 esac
1466 if test ! -f $src/$1; then
1467         shift
1468 fi
1469 mkdir_p='
1470 name=$1;
1471 create="";
1472 while test $name; do
1473         if test ! -d "$name"; then
1474                 create="$name $create";
1475                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1476                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1477         else
1478                 name="";
1479         fi;
1480 done;
1481 for file in $create; do
1482         mkdir $file;
1483 done
1484 '
1485 for file in $*; do
1486         case "$src" in
1487         ".")
1488                 case "$file" in
1489                 */*)
1490                         dir=`expr X$file : 'X\(.*\)/'`
1491                         file=`expr X$file : 'X.*/\(.*\)'`
1492                         (cd $dir && . ./$file)
1493                         ;;
1494                 *)
1495                         . ./$file
1496                         ;;
1497                 esac
1498                 ;;
1499         *)
1500                 case "$file" in
1501                 */*)
1502                         dir=`expr X$file : 'X\(.*\)/'`
1503                         file=`expr X$file : 'X.*/\(.*\)'`
1504                         (set x $dir; shift; eval $mkdir_p)
1505                         sh <$src/$dir/$file
1506                         ;;
1507                 *)
1508                         sh <$src/$file
1509                         ;;
1510                 esac
1511                 ;;
1512         esac
1513 done
1514 if test -f $src/config_h.SH; then
1515         if test ! -f config.h; then
1516         : oops, they left it out of MANIFEST, probably, so do it anyway.
1517         . $src/config_h.SH
1518         fi
1519 fi
1520 EOS
1521
1522 : extract files and exit if asked to do so
1523 case "$extractsh" in
1524 true)
1525         case "$realsilent" in
1526         true) ;;
1527         *) exec 1>&4;;
1528         esac
1529         case "$config_sh" in
1530         '') config_sh='config.sh';;
1531         esac
1532         echo " "
1533         echo "Fetching answers from $config_sh..."
1534         cd ..
1535         . $config_sh
1536         test "$override" && . ./optdef.sh
1537         echo " "
1538         . UU/extract
1539         rm -rf UU
1540         echo "Done."
1541         exit 0
1542         ;;
1543 esac
1544
1545 : Eunice requires " " instead of "", can you believe it
1546 echo " "
1547 : Here we go...
1548 echo "Beginning of configuration questions for $package."
1549
1550 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1551
1552 : first determine how to suppress newline on echo command
1553 echo " "
1554 echo "Checking echo to see how to suppress newlines..."
1555 (echo "hi there\c" ; echo " ") >.echotmp
1556 if $contains c .echotmp >/dev/null 2>&1 ; then
1557         echo "...using -n."
1558         n='-n'
1559         c=''
1560 else
1561         cat <<'EOM'
1562 ...using \c
1563 EOM
1564         n=''
1565         c='\c'
1566 fi
1567 echo $n "The star should be here-->$c"
1568 echo '*'
1569 rm -f .echotmp
1570
1571 : Now test for existence of everything in MANIFEST
1572 echo " "
1573 if test -f $rsrc/MANIFEST; then
1574         echo "First let's make sure your kit is complete.  Checking..." >&4
1575         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1576         rm -f missing
1577         tmppwd=`pwd`
1578         for filelist in x??; do
1579                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1580         done
1581         if test -s missing; then
1582                 cat missing >&4
1583                 cat >&4 <<'EOM'
1584
1585 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1586
1587 You have the option of continuing the configuration process, despite the
1588 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1589 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1590 and contact the author (perlbug@perl.com).
1591
1592 EOM
1593                 echo $n "Continue? [n] $c" >&4
1594                 read ans
1595                 case "$ans" in
1596                 y*)
1597                         echo "Continuing..." >&4
1598                         rm -f missing
1599                         ;;
1600                 *)
1601                         echo "ABORTING..." >&4
1602                         kill $$
1603                         ;;
1604                 esac
1605         else
1606                 echo "Looks good..."
1607         fi
1608 else
1609         echo "There is no MANIFEST file.  I hope your kit is complete !"
1610 fi
1611 rm -f missing x??
1612
1613 echo " "
1614 : Find the appropriate value for a newline for tr
1615 if test -n "$DJGPP"; then
1616        trnl='\012'
1617 fi
1618 if test X"$trnl" = X; then
1619         case "`echo foo|tr '\n' x 2>/dev/null`" in
1620         foox) trnl='\n' ;;
1621         esac
1622 fi
1623 if test X"$trnl" = X; then
1624         case "`echo foo|tr '\012' x 2>/dev/null`" in
1625         foox) trnl='\012' ;;
1626         esac
1627 fi
1628 if test X"$trnl" = X; then
1629         cat <<EOM >&2
1630
1631 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1632
1633 EOM
1634         exit 1
1635 fi
1636
1637 : compute the number of columns on the terminal for proper question formatting
1638 case "$COLUMNS" in
1639 '') COLUMNS='80';;
1640 esac
1641
1642 : set up the echo used in my read
1643 myecho="case \"\$xxxm\" in
1644 '') echo $n \"\$rp $c\" >&4;;
1645 *) case \"\$rp\" in
1646         '') echo $n \"[\$xxxm] $c\";;
1647         *)
1648                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1649                         echo \"\$rp\" >&4
1650                         echo $n \"[\$xxxm] $c\" >&4
1651                 else
1652                         echo $n \"\$rp [\$xxxm] $c\" >&4
1653                 fi
1654                 ;;
1655         esac;;
1656 esac"
1657
1658 : now set up to do reads with possible shell escape and default assignment
1659 cat <<EOSC >myread
1660 $startsh
1661 xxxm=\$dflt
1662 $myecho
1663 ans='!'
1664 case "\$fastread" in
1665 yes) case "\$dflt" in
1666         '') ;;
1667         *) ans='';
1668                 case "\$silent-\$rp" in
1669                 true-) ;;
1670                 *) echo " " >&4;;
1671                 esac;;
1672         esac;;
1673 *) case "\$silent" in
1674         true) case "\$rp" in
1675                 '') ans='';;
1676                 esac;;
1677         esac;;
1678 esac
1679 while expr "X\$ans" : "X!" >/dev/null; do
1680         read answ
1681         set x \$xxxm
1682         shift
1683         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1684         case  "\$answ" in
1685         "!")
1686                 sh 1>&4
1687                 echo " "
1688                 $myecho
1689                 ;;
1690         !*)
1691                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1692                 shift
1693                 sh 1>&4 -c "\$*"
1694                 echo " "
1695                 $myecho
1696                 ;;
1697         "\$ans")
1698                 case "\$ans" in
1699                 \\&*)
1700                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1701                         shift
1702                         case "\$1" in
1703                         -d)
1704                                 fastread=yes
1705                                 echo "(OK, I'll run with -d after this question.)" >&4
1706                                 ;;
1707                         -*)
1708                                 echo "*** Sorry, \$1 not supported yet." >&4
1709                                 ;;
1710                         esac
1711                         $myecho
1712                         ans=!
1713                         ;;
1714                 esac;;
1715         *)
1716                 case "\$aok" in
1717                 y)
1718                         echo "*** Substitution done -- please confirm."
1719                         xxxm="\$ans"
1720                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1721                         xxxm="\$ans"
1722                         ans=!
1723                         ;;
1724                 *)
1725                         echo "*** Error -- try again."
1726                         ans=!
1727                         ;;
1728                 esac
1729                 $myecho
1730                 ;;
1731         esac
1732         case "\$ans\$xxxm\$nostick" in
1733         '')
1734                 ans=!
1735                 $myecho
1736                 ;;
1737         esac
1738 done
1739 case "\$ans" in
1740 '') ans="\$xxxm";;
1741 esac
1742 EOSC
1743
1744 : create .config dir to save info across Configure sessions
1745 test -d ../.config || mkdir ../.config
1746 cat >../.config/README <<EOF
1747 This directory created by Configure to save information that should
1748 persist across sessions for $package.
1749
1750 You may safely delete it if you wish.
1751 EOF
1752
1753 : general instructions
1754 needman=true
1755 firsttime=true
1756 user=`(logname) 2>/dev/null`
1757 case "$user" in
1758 '') user=`whoami 2>&1`;;
1759 esac
1760 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1761         firsttime=false
1762         echo " "
1763         rp='Would you like to see the instructions?'
1764         dflt=n
1765         . ./myread
1766         case "$ans" in
1767         [yY]*) ;;
1768         *) needman=false;;
1769         esac
1770 fi
1771 if $needman; then
1772         cat <<EOH
1773
1774 This installation shell script will examine your system and ask you questions
1775 to determine how the perl5 package should be installed. If you get
1776 stuck on a question, you may use a ! shell escape to start a subshell or
1777 execute a command.  Many of the questions will have default answers in square
1778 brackets; typing carriage return will give you the default.
1779
1780 On some of the questions which ask for file or directory names you are allowed
1781 to use the ~name construct to specify the login directory belonging to "name",
1782 even if you don't have a shell which knows about that.  Questions where this is
1783 allowed will be marked "(~name ok)".
1784
1785 EOH
1786         rp=''
1787         dflt='Type carriage return to continue'
1788         . ./myread
1789         cat <<'EOH'
1790
1791 The prompter used in this script allows you to use shell variables and
1792 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1793 in the default answer, as if the default line was a set of arguments given to a
1794 script shell.  This means you may also use $* to repeat the whole default line,
1795 so you do not have to re-type everything to add something to the default.
1796
1797 Everytime there is a substitution, you will have to confirm.  If there is an
1798 error (e.g. an unmatched backtick), the default answer will remain unchanged
1799 and you will be prompted again.
1800
1801 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1802 the questions and use the computed defaults (or the previous answers if there
1803 was already a config.sh file). Type 'Configure -h' for a list of options.
1804 You may also start interactively and then answer '& -d' at any prompt to turn
1805 on the non-interactive behaviour for the remainder of the execution.
1806
1807 EOH
1808         . ./myread
1809         cat <<EOH
1810
1811 Much effort has been expended to ensure that this shell script will run on any
1812 Unix system.  If despite that it blows up on yours, your best bet is to edit
1813 Configure and run it again.  If you can't run Configure for some reason,
1814 you'll have to generate a config.sh file by hand.  Whatever problems you
1815 have, let me (perlbug@perl.com) know how I blew it.
1816
1817 This installation script affects things in two ways:
1818
1819 1) it may do direct variable substitutions on some of the files included
1820    in this kit.
1821 2) it builds a config.h file for inclusion in C programs.  You may edit
1822    any of these files as the need arises after running this script.
1823
1824 If you make a mistake on a question, there is no easy way to back up to it
1825 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1826 files.  Configure will offer to let you do this before it runs the SH files.
1827
1828 EOH
1829         dflt='Type carriage return to continue'
1830         . ./myread
1831         case "$firsttime" in
1832         true) echo $user >>../.config/instruct;;
1833         esac
1834 fi
1835
1836 : find out where common programs are
1837 echo " "
1838 echo "Locating common programs..." >&4
1839 cat <<EOSC >loc
1840 $startsh
1841 case \$# in
1842 0) exit 1;;
1843 esac
1844 thing=\$1
1845 shift
1846 dflt=\$1
1847 shift
1848 for dir in \$*; do
1849         case "\$thing" in
1850         .)
1851         if test -d \$dir/\$thing; then
1852                 echo \$dir
1853                 exit 0
1854         fi
1855         ;;
1856         *)
1857         for thisthing in \$dir/\$thing; do
1858                 : just loop through to pick last item
1859         done
1860         if test -f \$thisthing; then
1861                 echo \$thisthing
1862                 exit 0
1863         elif test -f \$dir/\$thing.exe; then
1864                 if test -n "$DJGPP"; then
1865                         echo \$dir/\$thing.exe
1866                 else
1867                         : on Eunice apparently
1868                         echo \$dir/\$thing
1869                 fi
1870                 exit 0
1871         fi
1872         ;;
1873         esac
1874 done
1875 echo \$dflt
1876 exit 1
1877 EOSC
1878 chmod +x loc
1879 $eunicefix loc
1880 loclist="
1881 awk
1882 cat
1883 comm
1884 cp
1885 echo
1886 expr
1887 grep
1888 ls
1889 make
1890 mkdir
1891 rm
1892 sed
1893 sort
1894 touch
1895 tr
1896 uniq
1897 "
1898 trylist="
1899 Mcc
1900 ar
1901 byacc
1902 cpp
1903 csh
1904 date
1905 egrep
1906 gzip
1907 less
1908 ln
1909 more
1910 nm
1911 nroff
1912 pg
1913 test
1914 uname
1915 zip
1916 "
1917 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1918 pth="$pth /lib /usr/lib"
1919 for file in $loclist; do
1920         eval xxx=\$$file
1921         case "$xxx" in
1922         /*|?:[\\/]*)
1923                 if test -f "$xxx"; then
1924                         : ok
1925                 else
1926                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1927                         xxx=`./loc $file $file $pth`
1928                 fi
1929                 ;;
1930         '') xxx=`./loc $file $file $pth`;;
1931         *) xxx=`./loc $xxx $xxx $pth`;;
1932         esac
1933         eval $file=$xxx
1934         eval _$file=$xxx
1935         case "$xxx" in
1936         /*)
1937                 echo $file is in $xxx.
1938                 ;;
1939         ?:[\\/]*)
1940                 echo $file is in $xxx.
1941                 ;;
1942         *)
1943                 echo "I don't know where '$file' is, and my life depends on it." >&4
1944                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1945                 exit 1
1946                 ;;
1947         esac
1948 done
1949 echo " "
1950 echo "Don't worry if any of the following aren't found..."
1951 say=offhand
1952 for file in $trylist; do
1953         eval xxx=\$$file
1954         case "$xxx" in
1955         /*|?:[\\/]*)
1956                 if test -f "$xxx"; then
1957                         : ok
1958                 else
1959                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1960                         xxx=`./loc $file $file $pth`
1961                 fi
1962                 ;;
1963         '') xxx=`./loc $file $file $pth`;;
1964         *) xxx=`./loc $xxx $xxx $pth`;;
1965         esac
1966         eval $file=$xxx
1967         eval _$file=$xxx
1968         case "$xxx" in
1969         /*)
1970                 echo $file is in $xxx.
1971                 ;;
1972         ?:[\\/]*)
1973                 echo $file is in $xxx.
1974                 ;;
1975         *)
1976                 echo "I don't see $file out there, $say."
1977                 say=either
1978                 ;;
1979         esac
1980 done
1981 case "$egrep" in
1982 egrep)
1983         echo "Substituting grep for egrep."
1984         egrep=$grep
1985         ;;
1986 esac
1987 case "$ln" in
1988 ln)
1989         echo "Substituting cp for ln."
1990         ln=$cp
1991         ;;
1992 esac
1993 case "$test" in
1994 test)
1995         echo "Hopefully test is built into your sh."
1996         ;;
1997 *)
1998         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1999                 echo "Using the test built into your sh."
2000                 test=test
2001                 _test=test
2002         fi
2003         ;;
2004 esac
2005 case "$echo" in
2006 echo)
2007         echo "Hopefully echo is built into your sh."
2008         ;;
2009 '') ;;
2010 *)
2011         echo " "
2012 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2013         $echo $n "hi there$c" >foo1
2014         echo $n "hi there$c" >foo2
2015         if cmp foo1 foo2 >/dev/null 2>&1; then
2016                 echo "They are compatible.  In fact, they may be identical."
2017         else
2018                 case "$n" in
2019                 '-n') n='' c='\c';;
2020                 *) n='-n' c='';;
2021                 esac
2022                 cat <<FOO
2023 They are not compatible!  You are probably running ksh on a non-USG system.
2024 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2025 have echo built in and we may have to run some Bourne shell scripts.  That
2026 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2027
2028 FOO
2029                 $echo $n "The star should be here-->$c"
2030                 $echo "*"
2031         fi
2032         $rm -f foo1 foo2
2033         ;;
2034 esac
2035
2036 cat <<EOS >checkcc
2037 $startsh
2038 EOS
2039 cat <<'EOSC' >>checkcc
2040 case "$cc" in
2041 '') ;;
2042 *)  $rm -f try try.*
2043     $cat >try.c <<EOM
2044 int main(int argc, char *argv[]) {
2045   return 0;
2046 }
2047 EOM
2048     if $cc -o try try.c; then
2049        :
2050     else
2051         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2052         despair=yes
2053         trygcc=yes
2054         case "$cc" in
2055         *gcc*) trygcc=no ;;
2056         esac
2057         case "`$cc -v -c try.c 2>&1`" in
2058         *gcc*) trygcc=no ;;
2059         esac
2060         if $test X"$trygcc" = Xyes; then
2061             if gcc -o try -c try.c; then
2062                 echo " "
2063                 echo "You seem to have a working gcc, though." >&4
2064                 rp="Would you like to use it?"
2065                 dflt=y
2066                 if $test -f myread; then
2067                     . ./myread
2068                 else
2069                     if $test -f UU/myread; then
2070                         . ./UU/myread
2071                     else
2072                         echo "Cannot find myread, sorry.  Aborting." >&2
2073                         exit 1
2074                     fi
2075                 fi  
2076                 case "$ans" in
2077                 [yY]*) cc=gcc; ccflags=''; despair=no ;;
2078                 esac
2079             fi
2080         fi
2081         if $test X"$despair" = Xyes; then
2082             echo "You need to find a working C compiler." >&4
2083             echo "I cannot continue any further, aborting." >&4
2084             exit 1
2085         fi
2086     fi
2087     $rm -f try try.*
2088     ;;
2089 esac
2090 EOSC
2091
2092 : determine whether symbolic links are supported
2093 echo " "
2094 $touch blurfl
2095 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2096         echo "Symbolic links are supported." >&4
2097         lns="$ln -s"
2098 else
2099         echo "Symbolic links are NOT supported." >&4
2100         lns="$ln"
2101 fi
2102 $rm -f blurfl sym
2103
2104 : see whether [:lower:] and [:upper:] are supported character classes
2105 echo " "
2106 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2107 ABYZ)
2108         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2109         up='[:upper:]'
2110         low='[:lower:]'
2111         ;;
2112 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2113         # (0xc9 and 0xd1), therefore that is a nice testing point.
2114         if test "X$up" = X -o "X$low" = X; then
2115             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2116             ij) up='[A-Z]'
2117                 low='[a-z]'
2118                 ;;
2119             esac
2120         fi
2121         if test "X$up" = X -o "X$low" = X; then
2122             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2123             ij) up='A-Z'
2124                 low='a-z'
2125                 ;;
2126             esac
2127         fi
2128         if test "X$up" = X -o "X$low" = X; then
2129             case "`echo IJ | od -x 2>/dev/null`" in
2130             *C9D1*|*c9d1*)
2131                 echo "Hey, this might be EBCDIC." >&4
2132                 if test "X$up" = X -o "X$low" = X; then
2133                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2134                     ij) up='[A-IJ-RS-Z]'
2135                         low='[a-ij-rs-z]'
2136                         ;;
2137                     esac
2138                 fi
2139                 if test "X$up" = X -o "X$low" = X; then
2140                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2141                     ij) up='A-IJ-RS-Z'
2142                         low='a-ij-rs-z'
2143                         ;;
2144                     esac
2145                 fi
2146                 ;;
2147             esac
2148         fi
2149 esac
2150 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2151 ij)
2152     echo "Using $up and $low to convert case." >&4
2153     ;;
2154 *)
2155     echo "I don't know how to translate letters from upper to lower case." >&4
2156     echo "Your tr is not acting any way I know of." >&4
2157     exit 1
2158     ;;
2159 esac
2160 : set up the translation script tr, must be called with ./tr of course
2161 cat >tr <<EOSC
2162 $startsh
2163 case "\$1\$2" in
2164 '[A-Z][a-z]') exec $tr '$up' '$low';;
2165 '[a-z][A-Z]') exec $tr '$low' '$up';;
2166 esac
2167 exec $tr "\$@"
2168 EOSC
2169 chmod +x tr
2170 $eunicefix tr
2171
2172 : Try to determine whether config.sh was made on this system
2173 case "$config_sh" in
2174 '')
2175 myuname=`$uname -a 2>/dev/null`
2176 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2177 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2178 # because the A-Z/a-z are not consecutive.
2179 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2180         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2181 newmyuname="$myuname"
2182 dflt=n
2183 case "$knowitall" in
2184 '')
2185         if test -f ../config.sh; then
2186                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2187                         eval "`grep myuname= ../config.sh`"
2188                 fi
2189                 if test "X$myuname" = "X$newmyuname"; then
2190                         dflt=y
2191                 fi
2192         fi
2193         ;;
2194 *) dflt=y;;
2195 esac
2196
2197 : Get old answers from old config file if Configure was run on the
2198 : same system, otherwise use the hints.
2199 hint=default
2200 cd ..
2201 if test -f config.sh; then
2202         echo " "
2203         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2204         . UU/myread
2205         case "$ans" in
2206         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2207         *)  echo "Fetching default answers from your old config.sh file..." >&4
2208                 tmp_n="$n"
2209                 tmp_c="$c"
2210                 tmp_sh="$sh"
2211                 . ./config.sh
2212                 cp config.sh UU
2213                 n="$tmp_n"
2214                 c="$tmp_c"
2215                 : Older versions did not always set $sh.  Catch re-use of such
2216                 : an old config.sh.
2217                 case "$sh" in
2218                 '') sh="$tmp_sh" ;;
2219                 esac
2220                 hint=previous
2221                 ;;
2222         esac
2223 fi
2224 . ./UU/checkcc
2225 if test ! -f config.sh; then
2226         $cat <<EOM
2227
2228 First time through, eh?  I have some defaults handy for some systems
2229 that need some extra help getting the Configure answers right:
2230
2231 EOM
2232         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2233         dflt=''
2234         : Half the following guesses are probably wrong... If you have better
2235         : tests or hints, please send them to perlbug@perl.com
2236         : The metaconfig authors would also appreciate a copy...
2237         $test -f /irix && osname=irix
2238         $test -f /xenix && osname=sco_xenix
2239         $test -f /dynix && osname=dynix
2240         $test -f /dnix && osname=dnix
2241         $test -f /lynx.os && osname=lynxos
2242         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2243         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2244         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2245         $test -f /bin/mips && /bin/mips && osname=mips
2246         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2247                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2248         $test -d /usr/apollo/bin && osname=apollo
2249         $test -f /etc/saf/_sactab && osname=svr4
2250         $test -d /usr/include/minix && osname=minix
2251         if $test -d /MachTen -o -d /MachTen_Folder; then
2252                 osname=machten
2253                 if $test -x /sbin/version; then
2254                         osvers=`/sbin/version | $awk '{print $2}' |
2255                         $sed -e 's/[A-Za-z]$//'`
2256                 elif $test -x /usr/etc/version; then
2257                         osvers=`/usr/etc/version | $awk '{print $2}' |
2258                         $sed -e 's/[A-Za-z]$//'`
2259                 else
2260                         osvers="$2.$3"
2261                 fi
2262         fi
2263
2264         $test -f /sys/posix.dll &&
2265                 $test -f /usr/bin/what &&
2266                 set X `/usr/bin/what /sys/posix.dll` &&
2267                 $test "$3" = UWIN &&
2268                 osname=uwin &&
2269                 osvers="$5"
2270
2271         if $test -f $uname; then
2272                 set X $myuname
2273                 shift
2274
2275                 case "$5" in
2276                 fps*) osname=fps ;;
2277                 mips*)
2278                         case "$4" in
2279                         umips) osname=umips ;;
2280                         *) osname=mips ;;
2281                         esac;;
2282                 [23]100) osname=mips ;;
2283                 next*) osname=next ;;
2284                 i386*)
2285                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2286                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2287                                 osname='sco'
2288                                 osvers=$tmp
2289                         elif $test -f /etc/kconfig; then
2290                                 osname=isc
2291                                 if test "$lns" = "$ln -s"; then
2292                                         osvers=4
2293                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2294                                         osvers=3
2295                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2296                                         osvers=2
2297                                 fi
2298                         fi
2299                         tmp=''
2300                         ;;
2301                 pc*)
2302                         if test -n "$DJGPP"; then
2303                                 osname=dos
2304                                 osvers=djgpp
2305                         fi
2306                         ;;
2307                 esac
2308
2309                 case "$1" in
2310                 aix) osname=aix
2311                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2312                         case "$tmp" in
2313                         'not found') osvers="$4"."$3" ;;
2314                         '<3240'|'<>3240') osvers=3.2.0 ;;
2315                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2316                         '=3250'|'>3250') osvers=3.2.5 ;;
2317                         *) osvers=$tmp;;
2318                         esac
2319                         ;;
2320                 bsd386) osname=bsd386
2321                         osvers=`$uname -r`
2322                         ;;
2323                 cygwin*) osname=cygwin
2324                         osvers="$3"
2325                         ;;
2326                 *dc.osx) osname=dcosx
2327                         osvers="$3"
2328                         ;;
2329                 dnix) osname=dnix
2330                         osvers="$3"
2331                         ;;
2332                 domainos) osname=apollo
2333                         osvers="$3"
2334                         ;;
2335                 dgux) osname=dgux 
2336                         osvers="$3"
2337                         ;;
2338                 dynixptx*) osname=dynixptx
2339                         osvers=`echo "$4"|sed 's/^v//'`
2340                         ;;
2341                 freebsd) osname=freebsd 
2342                         osvers="$3" ;;
2343                 genix) osname=genix ;;
2344                 hp*) osname=hpux 
2345                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2346                         ;;
2347                 irix*) osname=irix
2348                         case "$3" in
2349                         4*) osvers=4 ;;
2350                         5*) osvers=5 ;;
2351                         *)      osvers="$3" ;;
2352                         esac
2353                         ;;
2354                 linux) osname=linux
2355                         case "$3" in
2356                         *)      osvers="$3" ;;
2357                         esac
2358                         ;;
2359                 MiNT) osname=mint
2360                         ;;
2361                 netbsd*) osname=netbsd
2362                         osvers="$3"
2363                         ;;
2364                 news-os) osvers="$3"
2365                         case "$3" in
2366                         4*) osname=newsos4 ;;
2367                         *) osname=newsos ;;
2368                         esac
2369                         ;;
2370                 next*) osname=next ;;
2371                 POSIX-BC | posix-bc ) osname=posix-bc
2372                         osvers="$3"
2373                         ;;
2374                 powerux | power_ux | powermax_os | powermaxos | \
2375                 powerunix | power_unix) osname=powerux
2376                         osvers="$3"
2377                         ;;
2378                 qnx) osname=qnx
2379                         osvers="$4"
2380                         ;;
2381                 solaris) osname=solaris
2382                         case "$3" in
2383                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2384                         *)      osvers="$3" ;;
2385                         esac
2386                         ;;
2387                 sunos) osname=sunos
2388                         case "$3" in
2389                         5*) osname=solaris
2390                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2391                         *)      osvers="$3" ;;
2392                         esac
2393                         ;;
2394                 titanos) osname=titanos
2395                         case "$3" in
2396                         1*) osvers=1 ;;
2397                         2*) osvers=2 ;;
2398                         3*) osvers=3 ;;
2399                         4*) osvers=4 ;;
2400                         *)      osvers="$3" ;;
2401                         esac
2402                         ;;
2403                 ultrix) osname=ultrix
2404                         osvers="$3"
2405                         ;;
2406                 osf1|mls+)      case "$5" in
2407                                 alpha)
2408                                         osname=dec_osf
2409                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2410                                         ;;
2411                         hp*)    osname=hp_osf1  ;;
2412                         mips)   osname=mips_osf1 ;;
2413                         esac
2414                         ;;
2415                 unixware) osname=svr5
2416                         osvers="$4"
2417                         ;;
2418                 uts) osname=uts
2419                         osvers="$3"
2420                         ;;
2421                 $2) case "$osname" in
2422                         *isc*) ;;
2423                         *freebsd*) ;;
2424                         svr*)
2425                                 : svr4.x or possibly later
2426                                 case "svr$3" in 
2427                                 ${osname}*)
2428                                         osname=svr$3
2429                                         osvers=$4
2430                                         ;;
2431                                 esac
2432                                 case "$osname" in
2433                                 svr4.0)
2434                                         : Check for ESIX
2435                                         if test -f /stand/boot ; then
2436                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2437                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2438                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2439                                                         if test -n "$isesix"; then
2440                                                                 osname=esix4
2441                                                         fi
2442                                                 fi
2443                                         fi
2444                                         ;;
2445                                 esac
2446                                 ;;
2447                         *)      if test -f /etc/systemid; then
2448                                         osname=sco
2449                                         set `echo $3 | $sed 's/\./ /g'` $4
2450                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2451                                                 osvers=$1.$2.$3
2452                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2453                                                 osvers=$1.$2
2454                                         elif $test -f $src/hints/sco_$1.sh; then
2455                                                 osvers=$1
2456                                         fi
2457                                 else
2458                                         case "$osname" in
2459                                         '') : Still unknown.  Probably a generic Sys V.
2460                                                 osname="sysv"
2461                                                 osvers="$3"
2462                                                 ;;
2463                                         esac
2464                                 fi
2465                                 ;;
2466                         esac
2467                         ;;
2468                 *)      case "$osname" in
2469                         '') : Still unknown.  Probably a generic BSD.
2470                                 osname="$1"
2471                                 osvers="$3"
2472                                 ;;
2473                         esac
2474                         ;;
2475                 esac
2476         else
2477                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2478                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2479                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2480                                 osname=news_os
2481                         fi
2482                         $rm -f UU/kernel.what
2483                 elif test -d c:/.; then
2484                         set X $myuname
2485                         osname=os2
2486                         osvers="$5"
2487                 fi
2488         fi
2489         
2490         : Now look for a hint file osname_osvers, unless one has been
2491         : specified already.
2492         case "$hintfile" in
2493         ''|' ')
2494                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2495                 : Also try without trailing minor version numbers.
2496                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2497                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2498                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2499                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2500                 case "$file" in
2501                 '') dflt=none ;;
2502                 *)  case "$osvers" in
2503                         '') dflt=$file
2504                                 ;;
2505                         *)  if $test -f $src/hints/$file.sh ; then
2506                                         dflt=$file
2507                                 elif $test -f $src/hints/$xfile.sh ; then
2508                                         dflt=$xfile
2509                                 elif $test -f $src/hints/$xxfile.sh ; then
2510                                         dflt=$xxfile
2511                                 elif $test -f $src/hints/$xxxfile.sh ; then
2512                                         dflt=$xxxfile
2513                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2514                                         dflt=$xxxxfile
2515                                 elif $test -f "$src/hints/${osname}.sh" ; then
2516                                         dflt="${osname}"
2517                                 else
2518                                         dflt=none
2519                                 fi
2520                                 ;;
2521                         esac
2522                         ;;
2523                 esac
2524                 if $test -f Policy.sh ; then
2525                         case "$dflt" in
2526                         *Policy*) ;;
2527                         none) dflt="Policy" ;;
2528                         *) dflt="Policy $dflt" ;;
2529                         esac
2530                 fi
2531                 ;;
2532         *)
2533                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2534                 ;;
2535         esac
2536
2537         if $test -f Policy.sh ; then
2538                 $cat <<EOM
2539
2540 There's also a Policy hint file available, which should make the
2541 site-specific (policy) questions easier to answer.
2542 EOM
2543
2544         fi
2545
2546         $cat <<EOM
2547
2548 You may give one or more space-separated answers, or "none" if appropriate.
2549 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2550 is a good thing.  DO NOT give a wrong version or a wrong OS.
2551
2552 EOM
2553
2554         rp="Which of these apply, if any?"
2555         . UU/myread
2556         tans=$ans
2557         for file in $tans; do
2558                 if $test X$file = XPolicy -a -f Policy.sh; then
2559                         . Policy.sh
2560                         $cat Policy.sh >> UU/config.sh
2561                 elif $test -f $src/hints/$file.sh; then
2562                         . $src/hints/$file.sh
2563                         $cat $src/hints/$file.sh >> UU/config.sh
2564                 elif $test X$tans = X -o X$tans = Xnone ; then
2565                         : nothing
2566                 else
2567                         : Give one chance to correct a possible typo.
2568                         echo "$file.sh does not exist"
2569                         dflt=$file
2570                         rp="hint to use instead?"
2571                         . UU/myread
2572                         for file in $ans; do
2573                                 if $test -f "$src/hints/$file.sh"; then
2574                                         . $src/hints/$file.sh
2575                                         $cat $src/hints/$file.sh >> UU/config.sh
2576                                 elif $test X$ans = X -o X$ans = Xnone ; then
2577                                         : nothing
2578                                 else
2579                                         echo "$file.sh does not exist -- ignored."
2580                                 fi
2581                         done
2582                 fi
2583         done
2584
2585         hint=recommended
2586         : Remember our hint file for later.
2587         if $test -f "$src/hints/$file.sh" ; then
2588                 hintfile="$file"
2589         else
2590                 hintfile=''
2591         fi
2592 fi
2593 cd UU
2594 ;;
2595 *)
2596         echo " "
2597         echo "Fetching default answers from $config_sh..." >&4
2598         tmp_n="$n"
2599         tmp_c="$c"
2600         cd ..
2601         cp $config_sh config.sh 2>/dev/null
2602         chmod +w config.sh
2603         . ./config.sh
2604         cd UU
2605         cp ../config.sh .
2606         n="$tmp_n"
2607         c="$tmp_c"
2608         hint=previous
2609         ;;
2610 esac
2611 test "$override" && . ./optdef.sh
2612 myuname="$newmyuname"
2613
2614 : Restore computed paths
2615 for file in $loclist $trylist; do
2616         eval $file="\$_$file"
2617 done
2618
2619 cat << EOM
2620
2621 Configure uses the operating system name and version to set some defaults.
2622 The default value is probably right if the name rings a bell. Otherwise,
2623 since spelling matters for me, either accept the default or answer "none"
2624 to leave it blank.
2625
2626 EOM
2627 case "$osname" in
2628         ''|' ')
2629                 case "$hintfile" in
2630                 ''|' '|none) dflt=none ;;
2631                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2632                 esac
2633                 ;;
2634         *) dflt="$osname" ;;
2635 esac
2636 rp="Operating system name?"
2637 . ./myread
2638 case "$ans" in
2639 none)  osname='' ;;
2640 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2641 esac
2642 echo " "
2643 case "$osvers" in
2644         ''|' ')
2645                 case "$hintfile" in
2646                 ''|' '|none) dflt=none ;;
2647                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2648                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2649                         case "$dflt" in
2650                         ''|' ') dflt=none ;;
2651                         esac
2652                         ;;
2653                 esac
2654                 ;;
2655         *) dflt="$osvers" ;;
2656 esac
2657 rp="Operating system version?"
2658 . ./myread
2659 case "$ans" in
2660 none)  osvers='' ;;
2661 *) osvers="$ans" ;;
2662 esac
2663
2664
2665 . ./posthint.sh
2666
2667 : who configured the system
2668 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2669 cf_by=`(logname) 2>/dev/null`
2670 case "$cf_by" in
2671 "")
2672         cf_by=`(whoami) 2>/dev/null`
2673         case "$cf_by" in
2674         "") cf_by=unknown ;;
2675         esac ;;
2676 esac
2677
2678 : set up the script used to warn in case of inconsistency
2679 cat <<EOS >whoa
2680 $startsh
2681 EOS
2682 cat <<'EOSC' >>whoa
2683 dflt=y
2684 echo " "
2685 echo "*** WHOA THERE!!! ***" >&4
2686 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2687 rp="    Keep the $hint value?"
2688 . ./myread
2689 case "$ans" in
2690 y) td=$was; tu=$was;;
2691 esac
2692 EOSC
2693
2694 : function used to set $1 to $val
2695 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2696 case "$val$was" in
2697 $define$undef) . ./whoa; eval "$var=\$td";;
2698 $undef$define) . ./whoa; eval "$var=\$tu";;
2699 *) eval "$var=$val";;
2700 esac'
2701
2702 case "$usethreads" in
2703 $define|true|[yY]*)     dflt='y';;
2704 *) dflt='n';;
2705 esac
2706 cat <<EOM
2707
2708 Perl can be built to take advantage of threads on some systems.
2709 To do so, Configure can be run with -Dusethreads.
2710
2711 Note that threading is a highly experimental feature, and
2712 some known race conditions still remain.  If you choose to try
2713 it, be very sure to not actually deploy it for production
2714 purposes.  README.threads has more details, and is required
2715 reading if you enable threads.
2716
2717 If this doesn't make any sense to you, just accept the default '$dflt'.
2718 EOM
2719 rp='Build a threading Perl?'
2720 . ./myread
2721 case "$ans" in
2722 y|Y)    val="$define" ;;
2723 *)      val="$undef" ;;
2724 esac
2725 set usethreads
2726 eval $setvar
2727
2728 case "$usethreads" in
2729 $define)
2730         $cat <<EOM
2731
2732 As of 5.5.640, Perl has two different internal threading implementations,
2733 the 5.005 version (5005threads) and an interpreter-based version
2734 (ithreads) that has one interpreter per thread.  Both are very 
2735 experimental.  This arrangement exists to help developers work out
2736 which one is better.
2737
2738 If you're a casual user, you probably don't want interpreter-threads
2739 at this time.  There doesn't yet exist a way to create threads from
2740 within Perl in this model, i.e., "use Thread;" will NOT work.
2741 EOM
2742         : Default to ithreads unless overridden on command line or with
2743         : old config.sh
2744         dflt='y'
2745         case "$use5005threads" in
2746                 $define|true|[yY]*) dflt='n';;
2747         esac
2748         case "$useithreads" in
2749                 $undef|false|[nN]*) dflt='n';;
2750         esac
2751         rp='Use interpreter-based ithreads?'
2752         . ./myread
2753         case "$ans" in
2754         y|Y)    val="$define" ;;
2755         *)      val="$undef" ;;
2756         esac
2757         set useithreads
2758         eval $setvar
2759         : Now set use5005threads to the opposite value.
2760         case "$useithreads" in
2761         $define) val="$undef" ;;
2762         *) val="$define" ;;
2763         esac
2764         set use5005threads
2765         eval $setvar
2766         ;;
2767 *)
2768         useithreads="$undef"
2769         use5005threads="$undef"
2770         ;;
2771 esac
2772
2773 case "$d_oldpthreads" in
2774 '')     : Configure tests would be welcome here.  For now, assume undef.
2775         val="$undef" ;;
2776 *)      val="$d_oldpthreads" ;;
2777 esac
2778 set d_oldpthreads
2779 eval $setvar
2780
2781
2782 case "$usethreads" in
2783 "$define"|true|[yY]*)
2784 : Look for a hint-file generated 'call-back-unit'.  If the
2785 : user has specified that a threading perl is to be built,
2786 : we may need to set or change some other defaults.
2787         if $test -f usethreads.cbu; then
2788                 echo "Your platform has some specific hints for threaded builds, using them..."
2789                 . ./usethreads.cbu
2790         else
2791                 $cat <<EOM
2792 (Your platform doesn't have any specific hints for threaded builds.
2793  Assuming POSIX threads, then.)
2794 EOM
2795         fi
2796         ;;
2797 esac
2798
2799 cat <<EOM
2800
2801 Perl can be built so that multiple Perl interpreters can coexist
2802 within the same Perl executable.
2803 EOM
2804
2805 case "$useithreads" in
2806 $define)
2807         cat <<EOM
2808 This multiple interpreter support is required for interpreter-based threads.
2809 EOM
2810         val="$define"
2811         ;;
2812 *)      case "$usemultiplicity" in
2813         $define|true|[yY]*)     dflt='y';;
2814         *) dflt='n';;
2815         esac
2816         echo " "
2817         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2818         rp='Build Perl for multiplicity?'
2819         . ./myread
2820         case "$ans" in
2821         y|Y)    val="$define" ;;
2822         *)      val="$undef" ;;
2823         esac
2824         ;;
2825 esac
2826 set usemultiplicity
2827 eval $setvar
2828
2829 : determine where manual pages are on this system
2830 echo " "
2831 case "$sysman" in
2832 '') 
2833         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2834         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2835         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2836         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2837         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2838         sysman=`./loc . /usr/man/man1 $syspath`
2839         ;;
2840 esac
2841 if $test -d "$sysman"; then
2842         echo "System manual is in $sysman." >&4
2843 else
2844         echo "Could not find manual pages in source form." >&4
2845 fi
2846
2847 : see what memory models we can support
2848 case "$models" in
2849 '')
2850         $cat >pdp11.c <<'EOP'
2851 int main() {
2852 #ifdef pdp11
2853         exit(0);
2854 #else
2855         exit(1);
2856 #endif
2857 }
2858 EOP
2859         case "$cc" in
2860         '') modelcc="$cc" ;;
2861         *) modelcc="cc" ;;
2862         esac
2863         ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
2864         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2865                 dflt='unsplit split'
2866         else
2867                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2868                 case "$tans" in
2869                 X) dflt='none';;
2870                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2871                                 dflt='small'
2872                         else
2873                                 dflt=''
2874                         fi
2875                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2876                                 dflt="$dflt medium"
2877                         fi
2878                         if $test -d /lib/large || $test -d /usr/lib/large; then
2879                                 dflt="$dflt large"
2880                         fi
2881                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2882                                 dflt="$dflt huge"
2883                         fi
2884                 esac
2885         fi;;
2886 *) dflt="$models";;
2887 esac
2888 $cat <<EOM
2889  
2890 Some systems have different model sizes.  On most systems they are called
2891 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2892 split.  If your system doesn't support different memory models, say "none".
2893 If you wish to force everything to one memory model, say "none" here and
2894 put the appropriate flags later when it asks you for other cc and ld flags.
2895 Venix systems may wish to put "none" and let the compiler figure things out.
2896 (In the following question multiple model names should be space separated.)
2897
2898 The default for most systems is "none".
2899
2900 EOM
2901 rp="Which memory models are supported?"
2902 . ./myread
2903 models="$ans"
2904
2905 case "$models" in
2906 none)
2907         small=''
2908         medium=''
2909         large=''
2910         huge=''
2911         unsplit=''
2912         split=''
2913         ;;
2914 *split)
2915         case "$split" in
2916         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2917                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2918                         dflt='-i'
2919                 else
2920                         dflt='none'
2921                 fi;;
2922         *) dflt="$split";;
2923         esac
2924         rp="What flag indicates separate I and D space?"
2925         . ./myread
2926         tans="$ans"
2927         case "$tans" in
2928         none) tans='';;
2929         esac
2930         split="$tans"
2931         unsplit='';;
2932 *large*|*small*|*medium*|*huge*)
2933         case "$models" in
2934         *large*)
2935                 case "$large" in
2936                 '') dflt='-Ml';;
2937                 *) dflt="$large";;
2938                 esac
2939         rp="What flag indicates large model?"
2940         . ./myread
2941         tans="$ans"
2942         case "$tans" in
2943         none) tans='';
2944         esac
2945         large="$tans";;
2946         *) large='';;
2947         esac
2948         case "$models" in
2949         *huge*) case "$huge" in
2950                 '') dflt='-Mh';;
2951                 *) dflt="$huge";;
2952                 esac
2953                 rp="What flag indicates huge model?"
2954                 . ./myread
2955                 tans="$ans"
2956                 case "$tans" in
2957                 none) tans='';
2958                 esac
2959                 huge="$tans";;
2960         *) huge="$large";;
2961         esac
2962         case "$models" in
2963         *medium*) case "$medium" in
2964                 '') dflt='-Mm';;
2965                 *) dflt="$medium";;
2966                 esac
2967                 rp="What flag indicates medium model?"
2968                 . ./myread
2969                 tans="$ans"
2970                 case "$tans" in
2971                 none) tans='';
2972                 esac
2973                 medium="$tans";;
2974         *) medium="$large";;
2975         esac
2976         case "$models" in
2977         *small*) case "$small" in
2978                 '') dflt='none';;
2979                 *) dflt="$small";;
2980                 esac
2981                 rp="What flag indicates small model?"
2982                 . ./myread
2983                 tans="$ans"
2984                 case "$tans" in
2985                 none) tans='';
2986                 esac
2987                 small="$tans";;
2988         *) small='';;
2989         esac
2990         ;;
2991 *)
2992         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2993         ;;
2994 esac
2995 $rm -f pdp11.* pdp11
2996
2997 : make some quick guesses about what we are up against
2998 echo " "
2999 $echo $n "Hmm...  $c"
3000 echo exit 1 >bsd
3001 echo exit 1 >usg
3002 echo exit 1 >v7
3003 echo exit 1 >osf1
3004 echo exit 1 >eunice
3005 echo exit 1 >xenix
3006 echo exit 1 >venix
3007 echo exit 1 >os2
3008 d_bsd="$undef"
3009 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3010 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3011 then
3012         echo "Looks kind of like an OSF/1 system, but we'll see..."
3013         echo exit 0 >osf1
3014 elif test `echo abc | tr a-z A-Z` = Abc ; then
3015         xxx=`./loc addbib blurfl $pth`
3016         if $test -f $xxx; then
3017         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3018                 echo exit 0 >bsd
3019                 echo exit 0 >usg
3020         else
3021                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3022                         echo "Looks kind of like an extended USG system, but we'll see..."
3023                 else
3024                         echo "Looks kind of like a USG system, but we'll see..."
3025                 fi
3026                 echo exit 0 >usg
3027         fi
3028 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3029         echo "Looks kind of like a BSD system, but we'll see..."
3030         d_bsd="$define"
3031         echo exit 0 >bsd
3032 else
3033         echo "Looks kind of like a Version 7 system, but we'll see..."
3034         echo exit 0 >v7
3035 fi
3036 case "$eunicefix" in
3037 *unixtovms*)
3038         $cat <<'EOI'
3039 There is, however, a strange, musty smell in the air that reminds me of
3040 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3041 EOI
3042         echo exit 0 >eunice
3043         d_eunice="$define"
3044 : it so happens the Eunice I know will not run shell scripts in Unix format
3045         ;;
3046 *)
3047         echo " "
3048         echo "Congratulations.  You aren't running Eunice."
3049         d_eunice="$undef"
3050         ;;
3051 esac
3052 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3053 case "$p_" in
3054 :) ;;
3055 *)
3056         $cat <<'EOI'
3057 I have the feeling something is not exactly right, however...don't tell me...
3058 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3059 EOI
3060         echo exit 0 >os2
3061         ;;
3062 esac
3063 if test -f /xenix; then
3064         echo "Actually, this looks more like a XENIX system..."
3065         echo exit 0 >xenix
3066         d_xenix="$define"
3067 else
3068         echo " "
3069         echo "It's not Xenix..."
3070         d_xenix="$undef"
3071 fi
3072 chmod +x xenix
3073 $eunicefix xenix
3074 if test -f /venix; then
3075         echo "Actually, this looks more like a VENIX system..."
3076         echo exit 0 >venix
3077 else
3078         echo " "
3079         if ./xenix; then
3080                 : null
3081         else
3082                 echo "Nor is it Venix..."
3083         fi
3084 fi
3085 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3086 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3087 $rm -f foo
3088
3089 : see if we need a special compiler
3090 echo " "
3091 if ./usg; then
3092         case "$cc" in
3093         '') case "$Mcc" in
3094                 /*) dflt='Mcc';;
3095                 *) case "$large" in
3096                         -M*) dflt='cc';;
3097                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3098                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3099                                                 dflt='cc'
3100                                         else
3101                                                 dflt='cc -M'
3102                                         fi
3103                                 else
3104                                         dflt='cc'
3105                                 fi;;
3106                         esac;;
3107                 esac;;
3108         *)  dflt="$cc";;
3109         esac
3110         case "$dflt" in
3111         *M*)    $cat <<'EOM'
3112 On some older systems the default C compiler will not resolve multiple global
3113 references that happen to have the same name.  On some such systems the "Mcc"
3114 command may be used to force these to be resolved.  On other systems a "cc -M"
3115 command is required.  (Note that the -M flag on other systems indicates a
3116 memory model to use!) If you have the Gnu C compiler, you might wish to use
3117 that instead.
3118
3119 EOM
3120         ;;
3121         esac
3122         rp="Use which C compiler?"
3123         . ./myread
3124         cc="$ans"
3125 else
3126         case "$cc" in
3127         '') dflt=cc;;
3128         *) dflt="$cc";;
3129         esac
3130         rp="Use which C compiler?"
3131         . ./myread
3132         cc="$ans"
3133 fi
3134 : Look for a hint-file generated 'call-back-unit'.  Now that the
3135 : user has specified the compiler, we may need to set or change some
3136 : other defaults.
3137 if $test -f cc.cbu; then
3138     . ./cc.cbu
3139 fi
3140 . ./checkcc
3141
3142 echo " "
3143 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3144 $cat >gccvers.c <<EOM
3145 #include <stdio.h>
3146 int main() {
3147 #ifdef __GNUC__
3148 #ifdef __VERSION__
3149         printf("%s\n", __VERSION__);
3150 #else
3151         printf("%s\n", "1");
3152 #endif
3153 #endif
3154         exit(0);
3155 }
3156 EOM
3157 if $cc $ldflags -o gccvers gccvers.c; then
3158         gccversion=`./gccvers`
3159         case "$gccversion" in
3160         '') echo "You are not using GNU cc." ;;
3161         *)  echo "You are using GNU cc $gccversion."
3162             ;;
3163         esac
3164 else
3165         echo " "
3166         echo "*** WHOA THERE!!! ***" >&4
3167         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3168         case "$knowitall" in
3169         '')
3170         echo "    You'd better start hunting for one and let me know about it." >&4
3171                 exit 1
3172                 ;;
3173         esac
3174 fi
3175 $rm -f gccvers*
3176 case "$gccversion" in
3177 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3178 esac
3179
3180 : see how we invoke the C preprocessor
3181 echo " "
3182 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3183 cat <<'EOT' >testcpp.c
3184 #define ABC abc
3185 #define XYZ xyz
3186 ABC.XYZ
3187 EOT
3188 cd ..
3189 if test ! -f cppstdin; then
3190         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3191                 # AIX cc -E doesn't show the absolute headerfile
3192                 # locations but we'll cheat by using the -M flag.
3193                 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
3194         else
3195                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3196         fi
3197 else
3198         echo "Keeping your $hint cppstdin wrapper."
3199 fi
3200 chmod 755 cppstdin
3201 wrapper=`pwd`/cppstdin
3202 ok='false'
3203 cd UU
3204
3205 if $test "X$cppstdin" != "X" && \
3206         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3207         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3208 then
3209         echo "You used to use $cppstdin $cppminus so we'll use that again."
3210         case "$cpprun" in
3211         '') echo "But let's see if we can live without a wrapper..." ;;
3212         *)
3213                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3214                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3215                 then
3216                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3217                         ok='true'
3218                 else
3219                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3220                 fi
3221                 ;;
3222         esac
3223 else
3224         case "$cppstdin" in
3225         '') ;;
3226         *)
3227                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3228                 ;;
3229         esac
3230 fi
3231
3232 if $ok; then
3233         : nothing
3234 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3235         $cc -E <testcpp.c >testcpp.out 2>&1; \
3236         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3237         echo "Yup, it does."
3238         x_cpp="$cc -E"
3239         x_minus='';
3240 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3241         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3242         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3243         echo "Yup, it does."
3244         x_cpp="$cc -E"
3245         x_minus='-';
3246 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3247         $cc -P <testcpp.c >testcpp.out 2>&1; \
3248         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3249         echo "Yipee, that works!"
3250         x_cpp="$cc -P"
3251         x_minus='';
3252 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3253         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3254         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3255         echo "At long last!"
3256         x_cpp="$cc -P"
3257         x_minus='-';
3258 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3259         $cpp <testcpp.c >testcpp.out 2>&1; \
3260         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3261         echo "It works!"
3262         x_cpp="$cpp"
3263         x_minus='';
3264 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3265         $cpp - <testcpp.c >testcpp.out 2>&1; \
3266         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3267         echo "Hooray, it works!  I was beginning to wonder."
3268         x_cpp="$cpp"
3269         x_minus='-';
3270 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3271         $wrapper <testcpp.c >testcpp.out 2>&1; \
3272         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3273         x_cpp="$wrapper"
3274         x_minus=''
3275         echo "Eureka!"
3276 else
3277         dflt=''
3278         rp="No dice.  I can't find a C preprocessor.  Name one:"
3279         . ./myread
3280         x_cpp="$ans"
3281         x_minus=''
3282         $x_cpp <testcpp.c >testcpp.out 2>&1
3283         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3284                 echo "OK, that will do." >&4
3285         else
3286 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3287                 exit 1
3288         fi
3289 fi
3290
3291 case "$ok" in
3292 false)
3293         cppstdin="$x_cpp"
3294         cppminus="$x_minus"
3295         cpprun="$x_cpp"
3296         cpplast="$x_minus"
3297         set X $x_cpp
3298         shift
3299         case "$1" in
3300         "$cpp")
3301                 echo "Perhaps can we force $cc -E using a wrapper..."
3302                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3303                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3304                 then
3305                         echo "Yup, we can."
3306                         cppstdin="$wrapper"
3307                         cppminus='';
3308                 else
3309                         echo "Nope, we'll have to live without it..."
3310                 fi
3311                 ;;
3312         esac
3313         case "$cpprun" in
3314         "$wrapper")
3315                 cpprun=''
3316                 cpplast=''
3317                 ;;
3318         esac
3319         ;;
3320 esac
3321
3322 case "$cppstdin" in
3323 "$wrapper"|'cppstdin') ;;
3324 *) $rm -f $wrapper;;
3325 esac
3326 $rm -f testcpp.c testcpp.out
3327
3328 : decide how portable to be.  Allow command line overrides.
3329 case "$d_portable" in
3330 "$undef") ;;
3331 *)      d_portable="$define" ;;
3332 esac
3333
3334 : set up shell script to do ~ expansion
3335 cat >filexp <<EOSS
3336 $startsh
3337 : expand filename
3338 case "\$1" in
3339  ~/*|~)
3340         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3341         ;;
3342  ~*)
3343         if $test -f /bin/csh; then
3344                 /bin/csh -f -c "glob \$1"
3345                 failed=\$?
3346                 echo ""
3347                 exit \$failed
3348         else
3349                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3350                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3351                 if $test ! -d "\$dir"; then
3352                         me=\`basename \$0\`
3353                         echo "\$me: can't locate home directory for: \$name" >&2
3354                         exit 1
3355                 fi
3356                 case "\$1" in
3357                 */*)
3358                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3359                         ;;
3360                 *)
3361                         echo \$dir
3362                         ;;
3363                 esac
3364         fi
3365         ;;
3366 *)
3367         echo \$1
3368         ;;
3369 esac
3370 EOSS
3371 chmod +x filexp
3372 $eunicefix filexp
3373
3374 : now set up to get a file name
3375 cat <<EOS >getfile
3376 $startsh
3377 EOS
3378 cat <<'EOSC' >>getfile
3379 tilde=''
3380 fullpath=''
3381 already=''
3382 skip=''
3383 none_ok=''
3384 exp_file=''
3385 nopath_ok=''
3386 orig_rp="$rp"
3387 orig_dflt="$dflt"
3388 case "$gfpth" in
3389 '') gfpth='.' ;;
3390 esac
3391
3392 case "$fn" in
3393 *\(*)
3394         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3395         fn=`echo $fn | sed 's/(.*)//'`
3396         ;;
3397 esac
3398
3399 case "$fn" in
3400 *:*)
3401         loc_file=`expr $fn : '.*:\(.*\)'`
3402         fn=`expr $fn : '\(.*\):.*'`
3403         ;;
3404 esac
3405
3406 case "$fn" in
3407 *~*) tilde=true;;
3408 esac
3409 case "$fn" in
3410 */*) fullpath=true;;
3411 esac
3412 case "$fn" in
3413 *+*) skip=true;;
3414 esac
3415 case "$fn" in
3416 *n*) none_ok=true;;
3417 esac
3418 case "$fn" in
3419 *e*) exp_file=true;;
3420 esac
3421 case "$fn" in
3422 *p*) nopath_ok=true;;
3423 esac
3424
3425 case "$fn" in
3426 *f*) type='File';;
3427 *d*) type='Directory';;
3428 *l*) type='Locate';;
3429 esac
3430
3431 what="$type"
3432 case "$what" in
3433 Locate) what='File';;
3434 esac
3435
3436 case "$exp_file" in
3437 '')
3438         case "$d_portable" in
3439         "$define") ;;
3440         *) exp_file=true;;
3441         esac
3442         ;;
3443 esac
3444
3445 cd ..
3446 while test "$type"; do
3447         redo=''
3448         rp="$orig_rp"
3449         dflt="$orig_dflt"
3450         case "$tilde" in
3451         true) rp="$rp (~name ok)";;
3452         esac
3453         . UU/myread
3454         if test -f UU/getfile.ok && \
3455                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3456         then
3457                 value="$ans"
3458                 ansexp="$ans"
3459                 break
3460         fi
3461         case "$ans" in
3462         none)
3463                 value=''
3464                 ansexp=''
3465                 case "$none_ok" in
3466                 true) type='';;
3467                 esac
3468                 ;;
3469         *)
3470                 case "$tilde" in
3471                 '') value="$ans"
3472                         ansexp="$ans";;
3473                 *)
3474                         value=`UU/filexp $ans`
3475                         case $? in
3476                         0)
3477                                 if test "$ans" != "$value"; then
3478                                         echo "(That expands to $value on this system.)"
3479                                 fi
3480                                 ;;
3481                         *) value="$ans";;
3482                         esac
3483                         ansexp="$value"
3484                         case "$exp_file" in
3485                         '') value="$ans";;
3486                         esac
3487                         ;;
3488                 esac
3489                 case "$fullpath" in
3490                 true)
3491                         case "$ansexp" in
3492                         /*) value="$ansexp" ;;
3493                         [a-zA-Z]:/*) value="$ansexp" ;;
3494                         *)
3495                                 redo=true
3496                                 case "$already" in
3497                                 true)
3498                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3499                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3500                                         ;;
3501                                 *)
3502                                 echo "Please give a full path name, starting with slash." >&4
3503                                         case "$tilde" in
3504                                         true)
3505                                 echo "Note that using ~name is ok provided it expands well." >&4
3506                                                 already=true
3507                                                 ;;
3508                                         esac
3509                                 esac
3510                                 ;;
3511                         esac
3512                         ;;
3513                 esac
3514                 case "$redo" in
3515                 '')
3516                         case "$type" in
3517                         File)
3518                                 for fp in $gfpth; do
3519                                         if test "X$fp" = X.; then
3520                                             pf="$ansexp"
3521                                         else    
3522                                             pf="$fp/$ansexp"
3523                                         fi
3524                                         if test -f "$pf"; then
3525                                                 type=''
3526                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3527                                         then
3528                                                 echo "($value is not a plain file, but that's ok.)"
3529                                                 type=''
3530                                         fi
3531                                         if test X"$type" = X; then
3532                                             value="$pf"
3533                                             break
3534                                         fi
3535                                 done
3536                                 ;;
3537                         Directory)
3538                                 for fp in $gfpth; do
3539                                         if test "X$fp" = X.; then
3540                                             dir="$ans"
3541                                             direxp="$ansexp"
3542                                         else    
3543                                             dir="$fp/$ansexp"
3544                                             direxp="$fp/$ansexp"
3545                                         fi
3546                                         if test -d "$direxp"; then
3547                                                 type=''
3548                                                 value="$dir"
3549                                                 break
3550                                         fi
3551                                 done
3552                                 ;;
3553                         Locate)
3554                                 if test -d "$ansexp"; then
3555                                         echo "(Looking for $loc_file in directory $value.)"
3556                                         value="$value/$loc_file"
3557                                         ansexp="$ansexp/$loc_file"
3558                                 fi
3559                                 if test -f "$ansexp"; then
3560                                         type=''
3561                                 fi
3562                                 case "$nopath_ok" in
3563                                 true)   case "$value" in
3564                                         */*) ;;
3565                                         *)      echo "Assuming $value will be in people's path."
3566                                                 type=''
3567                                                 ;;
3568                                         esac
3569                                         ;;
3570                                 esac
3571                                 ;;
3572                         esac
3573
3574                         case "$skip" in
3575                         true) type='';
3576                         esac
3577
3578                         case "$type" in
3579                         '') ;;
3580                         *)
3581                                 if test "$fastread" = yes; then
3582                                         dflt=y
3583                                 else
3584                                         dflt=n
3585                                 fi
3586                                 rp="$what $value doesn't exist.  Use that name anyway?"
3587                                 . UU/myread
3588                                 dflt=''
3589                                 case "$ans" in
3590                                 y*) type='';;
3591                                 *) echo " ";;
3592                                 esac
3593                                 ;;
3594                         esac
3595                         ;;
3596                 esac
3597                 ;;
3598         esac
3599 done
3600 cd UU
3601 ans="$value"
3602 rp="$orig_rp"
3603 dflt="$orig_dflt"
3604 rm -f getfile.ok
3605 test "X$gfpthkeep" != Xy && gfpth=""
3606 EOSC
3607
3608 : What should the include directory be ?
3609 echo " "
3610 $echo $n "Hmm...  $c"
3611 dflt='/usr/include'
3612 incpath=''
3613 mips_type=''
3614 if $test -f /bin/mips && /bin/mips; then
3615         echo "Looks like a MIPS system..."
3616         $cat >usr.c <<'EOCP'
3617 #ifdef SYSTYPE_BSD43
3618 /bsd43
3619 #endif
3620 EOCP
3621         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3622                 dflt='/bsd43/usr/include'
3623                 incpath='/bsd43'
3624                 mips_type='BSD 4.3'
3625         else
3626                 mips_type='System V'
3627         fi
3628         $rm -f usr.c usr.out
3629         echo "and you're compiling with the $mips_type compiler and libraries."
3630         xxx_prompt=y
3631         echo "exit 0" >mips
3632 else
3633         echo "Doesn't look like a MIPS system."
3634         xxx_prompt=n
3635         echo "exit 1" >mips
3636 fi
3637 chmod +x mips
3638 $eunicefix mips
3639 case "$usrinc" in
3640 '') ;;
3641 *) dflt="$usrinc";;
3642 esac
3643 case "$xxx_prompt" in
3644 y)      fn=d/
3645         echo " "
3646         rp='Where are the include files you want to use?'
3647         . ./getfile
3648         usrinc="$ans"
3649         ;;
3650 *)      usrinc="$dflt"
3651         ;;
3652 esac
3653
3654 : Set private lib path
3655 case "$plibpth" in
3656 '') if ./mips; then
3657                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3658         fi;;
3659 esac
3660 case "$libpth" in
3661 ' ') dlist='';;
3662 '') dlist="$loclibpth $plibpth $glibpth";;
3663 *) dlist="$libpth";;
3664 esac
3665
3666 : Now check and see which directories actually exist, avoiding duplicates
3667 libpth=''
3668 for xxx in $dlist
3669 do
3670     if $test -d $xxx; then
3671                 case " $libpth " in
3672                 *" $xxx "*) ;;
3673                 *) libpth="$libpth $xxx";;
3674                 esac
3675     fi
3676 done
3677 $cat <<'EOM'
3678
3679 Some systems have incompatible or broken versions of libraries.  Among
3680 the directories listed in the question below, please remove any you
3681 know not to be holding relevant libraries, and add any that are needed.
3682 Say "none" for none.
3683
3684 EOM
3685 case "$libpth" in
3686 '') dflt='none';;
3687 *)
3688         set X $libpth
3689         shift
3690         dflt=${1+"$@"}
3691         ;;
3692 esac
3693 rp="Directories to use for library searches?"
3694 . ./myread
3695 case "$ans" in
3696 none) libpth=' ';;
3697 *) libpth="$ans";;
3698 esac
3699
3700 : compute shared library extension
3701 case "$so" in
3702 '')
3703         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3704                 dflt='sl'
3705         else
3706                 dflt='so'
3707         fi
3708         ;;
3709 *) dflt="$so";;
3710 esac
3711 $cat <<EOM
3712
3713 On some systems, shared libraries may be available.  Answer 'none' if
3714 you want to suppress searching of shared libraries for the remainder
3715 of this configuration.
3716
3717 EOM
3718 rp='What is the file extension used for shared libraries?'
3719 . ./myread
3720 so="$ans"
3721
3722 : Define several unixisms.
3723 : Hints files or command line option can be used to override them.
3724 : The convoluted testing is in case hints files set either the old
3725 : or the new name.
3726 case "$_exe" in
3727 '')     case "$exe_ext" in
3728     '') ;;
3729         *)      _exe="$exe_ext" ;;
3730         esac
3731         ;;
3732 esac
3733 case "$_a" in
3734 '')     case "$lib_ext" in
3735     '') _a='.a';;
3736         *)      _a="$lib_ext" ;;
3737         esac
3738         ;;
3739 esac
3740 case "$_o" in
3741 '') case "$obj_ext" in
3742         '')     _o='.o';;
3743         *)      _o="$obj_ext";;
3744         esac
3745         ;;
3746 esac
3747 case "$p_" in
3748 '') case "$path_sep" in
3749         '')     p_=':';;
3750         *)      p_="$path_sep";;
3751         esac
3752         ;;
3753 esac
3754 exe_ext=$_exe
3755 lib_ext=$_a
3756 obj_ext=$_o
3757 path_sep=$p_
3758
3759 : Which makefile gets called first.  This is used by make depend.
3760 case "$firstmakefile" in
3761 '') firstmakefile='makefile';;
3762 esac
3763
3764 case "$usesocks" in
3765 $define|true|[yY]*)     dflt='y';;
3766 *) dflt='n';;
3767 esac
3768 cat <<EOM
3769
3770 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3771 Configure must be run with -Dusesocks.
3772
3773 If this doesn't make any sense to you, just accept the default '$dflt'.
3774 EOM
3775 rp='Build Perl for SOCKS?'
3776 . ./myread
3777 case "$ans" in
3778 y|Y)    val="$define" ;;     
3779 *)      val="$undef" ;;
3780 esac
3781 set usesocks
3782 eval $setvar
3783
3784 : Looking for optional libraries
3785 echo " "
3786 echo "Checking for optional libraries..." >&4
3787 case "$libs" in
3788 ' '|'') dflt='';;
3789 *) dflt="$libs";;
3790 esac
3791 case "$libswanted" in
3792 '') libswanted='c_s';;
3793 esac
3794 case "$usesocks" in
3795 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3796 esac
3797 libsfound=''
3798 libsfiles=''
3799 libsdirs=''
3800 libspath=''
3801 for thisdir in $libpth $xlibpth; do
3802   test -d $thisdir && libspath="$libspath $thisdir"
3803 done
3804 for thislib in $libswanted; do
3805         for thisdir in $libspath; do
3806             xxx=''
3807             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3808                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3809                 $test -f "$xxx" && eval $libscheck
3810                 $test -f "$xxx" && libstyle=shared
3811             fi
3812             if test ! -f "$xxx"; then
3813                 xxx=$thisdir/lib$thislib.$so
3814                 $test -f "$xxx" && eval $libscheck
3815                 $test -f "$xxx" && libstyle=shared
3816             fi  
3817             if test ! -f "$xxx"; then
3818                 xxx=$thisdir/lib$thislib$_a
3819                 $test -f "$xxx" && eval $libscheck
3820                 $test -f "$xxx" && libstyle=static
3821             fi
3822             if test ! -f "$xxx"; then
3823                 xxx=$thisdir/$thislib$_a
3824                 $test -f "$xxx" && eval $libscheck
3825                 $test -f "$xxx" && libstyle=static
3826             fi
3827             if test ! -f "$xxx"; then
3828                 xxx=$thisdir/lib${thislib}_s$_a
3829                 $test -f "$xxx" && eval $libscheck
3830                 $test -f "$xxx" && libstyle=static
3831                 $test -f "$xxx" && thislib=${thislib}_s
3832             fi
3833             if test ! -f "$xxx"; then
3834                 xxx=$thisdir/Slib$thislib$_a
3835                 $test -f "$xxx" && eval $libscheck
3836                 $test -f "$xxx" && libstyle=static
3837             fi
3838             if $test -f "$xxx"; then
3839                 case "$libstyle" in
3840                 shared) echo "Found -l$thislib (shared)." ;;
3841                 static) echo "Found -l$thislib." ;;
3842                 *)      echo "Found -l$thislib ($libstyle)." ;;
3843                 esac
3844                 case " $dflt " in
3845                 *"-l$thislib "*);;
3846                 *) dflt="$dflt -l$thislib"
3847                    libsfound="$libsfound $xxx"
3848                    yyy=`basename $xxx`
3849                    libsfiles="$libsfiles $yyy"
3850                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3851                    case " $libsdirs " in
3852                    *" $yyy "*) ;;
3853                    *) libsdirs="$libsdirs $yyy" ;;
3854                    esac
3855                    ;;
3856                 esac
3857                 break
3858             fi  
3859         done
3860         if $test ! -f "$xxx"; then
3861             echo "No -l$thislib."
3862         fi
3863 done
3864 set X $dflt
3865 shift
3866 dflt="$*"
3867 case "$libs" in
3868 '') dflt="$dflt";;
3869 *) dflt="$libs";;
3870 esac
3871 case "$dflt" in
3872 ' '|'') dflt='none';;
3873 esac
3874
3875 $cat <<EOM
3876
3877 In order to compile $package on your machine, a number of libraries
3878 are usually needed.  Include any other special libraries here as well.
3879 Say "none" for none.  The default list is almost always right.
3880 EOM
3881
3882 echo " "
3883 rp="What libraries to use?"
3884 . ./myread
3885 case "$ans" in
3886 none) libs=' ';;
3887 *) libs="$ans";;
3888 esac
3889
3890 : determine optimization, if desired, or use for debug flag also
3891 case "$optimize" in
3892 ' '|$undef) dflt='none';;
3893 '') dflt='-O';;
3894 *) dflt="$optimize";;
3895 esac
3896 $cat <<EOH
3897
3898 By default, $package compiles with the -O flag to use the optimizer.
3899 Alternately, you might want to use the symbolic debugger, which uses
3900 the -g flag (on traditional Unix systems).  Either flag can be
3901 specified here.  To use neither flag, specify the word "none".
3902
3903 EOH
3904 rp="What optimizer/debugger flag should be used?"
3905 . ./myread
3906 optimize="$ans"
3907 case "$optimize" in
3908 'none') optimize=" ";;
3909 esac
3910
3911 dflt=''
3912 : We will not override a previous value, but we might want to
3913 : augment a hint file
3914 case "$hint" in
3915 default|recommended)
3916         case "$gccversion" in
3917         1*) dflt='-fpcc-struct-return' ;;
3918         esac
3919         case "$optimize" in
3920         *-g*) dflt="$dflt -DDEBUGGING";;
3921         esac
3922         case "$gccversion" in
3923         2*) if test -d /etc/conf/kconfig.d &&
3924                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3925                 then
3926                         dflt="$dflt -posix"
3927                 fi
3928                 ;;
3929         esac
3930         case "$gccversion" in
3931         1*) ;;
3932         2.[0-8]*) ;;
3933         ?*)     echo " "
3934                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3935                 echo 'int main(void) { return 0; }' > gcctest.c
3936                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3937                         echo "Yes, it does." 2>&1
3938                         case "$ccflags" in
3939                         *strict-aliasing*) 
3940                                 echo "Leaving current flags $ccflags alone." 2>&1
3941                                 ;;
3942                         *) dflt="$dflt -fno-strict-aliasing" ;;
3943                         esac
3944                 else
3945                         echo "Nope, it doesn't, but that's ok." 2>&1
3946                 fi
3947                 ;;
3948         esac
3949         ;;
3950 esac
3951
3952 case "$mips_type" in
3953 *BSD*|'') inclwanted="$locincpth $usrinc";;
3954 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3955 esac
3956 for thisincl in $inclwanted; do
3957         if $test -d $thisincl; then
3958                 if $test x$thisincl != x$usrinc; then
3959                         case "$dflt" in
3960                         *$thisincl*);;
3961                         *) dflt="$dflt -I$thisincl";;
3962                         esac
3963                 fi
3964         fi
3965 done
3966
3967 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3968         xxx=true;
3969 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3970         xxx=true;
3971 else
3972         xxx=false;
3973 fi;
3974 if $xxx; then
3975         case "$dflt" in
3976         *$2*);;
3977         *) dflt="$dflt -D$2";;
3978         esac;
3979 fi'
3980
3981 set signal.h LANGUAGE_C; eval $inctest
3982
3983 case "$usesocks" in
3984 $define)
3985         ccflags="$ccflags -DSOCKS"
3986         ;;
3987 esac
3988
3989 case "$hint" in
3990 default|recommended) dflt="$ccflags $dflt" ;;
3991 *) dflt="$ccflags";;
3992 esac
3993
3994 case "$dflt" in
3995 ''|' ') dflt=none;;
3996 esac
3997 $cat <<EOH
3998
3999 Your C compiler may want other flags.  For this question you should include
4000 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4001 but you should NOT include libraries or ld flags like -lwhatever.  If you
4002 want $package to honor its debug switch, you should include -DDEBUGGING here.
4003 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4004
4005 To use no flags, specify the word "none".
4006
4007 EOH
4008 set X $dflt
4009 shift
4010 dflt=${1+"$@"}
4011 rp="Any additional cc flags?"
4012 . ./myread
4013 case "$ans" in
4014 none) ccflags='';;
4015 *) ccflags="$ans";;
4016 esac
4017
4018 : the following weeds options from ccflags that are of no interest to cpp
4019 cppflags="$ccflags"
4020 case "$gccversion" in
4021 1*) cppflags="$cppflags -D__GNUC__"
4022 esac
4023 case "$mips_type" in
4024 '');;
4025 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4026 esac
4027 case "$cppflags" in
4028 '');;
4029 *)
4030         echo " "
4031         echo "Let me guess what the preprocessor flags are..." >&4
4032         set X $cppflags
4033         shift
4034         cppflags=''
4035         $cat >cpp.c <<'EOM'
4036 #define BLURFL foo
4037
4038 BLURFL xx LFRULB
4039 EOM
4040         previous=''
4041         for flag in $*
4042         do
4043                 case "$flag" in
4044                 -*) ftry="$flag";;
4045                 *) ftry="$previous $flag";;
4046                 esac
4047                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4048                         >cpp1.out 2>/dev/null && \
4049                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4050                         >cpp2.out 2>/dev/null && \
4051                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4052                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4053                 then
4054                         cppflags="$cppflags $ftry"
4055                         previous=''
4056                 else
4057                         previous="$flag"
4058                 fi
4059         done
4060         set X $cppflags
4061         shift
4062         cppflags=${1+"$@"}
4063         case "$cppflags" in
4064         *-*)  echo "They appear to be: $cppflags";;
4065         esac
4066         $rm -f cpp.c cpp?.out
4067         ;;
4068 esac
4069
4070 : flags used in final linking phase
4071 case "$ldflags" in
4072 '') if ./venix; then
4073                 dflt='-i -z'
4074         else
4075                 dflt=''
4076         fi
4077         case "$ccflags" in
4078         *-posix*) dflt="$dflt -posix" ;;
4079         esac
4080         ;;
4081 *) dflt="$ldflags";;
4082 esac
4083
4084 : Try to guess additional flags to pick up local libraries.
4085 for thislibdir in $libpth; do
4086         case " $loclibpth " in
4087         *" $thislibdir "*)
4088                 case "$dflt " in 
4089                 *"-L$thislibdir "*) ;;
4090                 *)  dflt="$dflt -L$thislibdir" ;;
4091                 esac
4092                 ;;
4093         esac
4094 done
4095
4096 case "$dflt" in
4097 '') dflt='none' ;;
4098 esac
4099
4100 $cat <<EOH
4101
4102 Your C linker may need flags.  For this question you should
4103 include -L/whatever and any other flags used by the C linker, but you
4104 should NOT include libraries like -lwhatever.
4105
4106 Make sure you include the appropriate -L/path flags if your C linker
4107 does not normally search all of the directories you specified above,
4108 namely
4109         $libpth
4110 To use no flags, specify the word "none".
4111
4112 EOH
4113
4114 rp="Any additional ld flags (NOT including libraries)?"
4115 . ./myread
4116 case "$ans" in
4117 none) ldflags='';;
4118 *) ldflags="$ans";;
4119 esac
4120 rmlist="$rmlist pdp11"
4121
4122 : coherency check
4123 echo " "
4124 echo "Checking your choice of C compiler and flags for coherency..." >&4
4125 $cat > try.c <<'EOF'
4126 #include <stdio.h>
4127 int main() { printf("Ok\n"); exit(0); }
4128 EOF
4129 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4130 shift
4131 $cat >try.msg <<'EOM'
4132 I've tried to compile and run the following simple program:
4133
4134 EOM
4135 $cat try.c >> try.msg
4136
4137 $cat >> try.msg <<EOM
4138
4139 I used the command:
4140
4141         $*
4142         ./try
4143
4144 and I got the following output:
4145
4146 EOM
4147 dflt=y
4148 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4149         if sh -c './try' >>try.msg 2>&1; then
4150                 xxx=`./try`
4151                 case "$xxx" in
4152                 "Ok") dflt=n ;;
4153                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4154                         case " $libs " in
4155                         *" -lsfio "*)
4156                                 cat >> try.msg <<'EOQS'
4157 If $libs contains -lsfio, and sfio is mis-configured, then it
4158 sometimes (apparently) runs and exits with a 0 status, but with no
4159 output!  It may have to do with sfio's use of _exit vs. exit.
4160
4161 EOQS
4162                                 rp="You have a big problem.  Shall I abort Configure"
4163                                 dflt=y
4164                                 ;;
4165                         esac
4166                         ;;
4167                 esac
4168         else
4169                 echo "The program compiled OK, but exited with status $?." >>try.msg
4170                 rp="You have a problem.  Shall I abort Configure"
4171                 dflt=y
4172         fi
4173 else
4174         echo "I can't compile the test program." >>try.msg
4175         rp="You have a BIG problem.  Shall I abort Configure"
4176         dflt=y
4177 fi
4178 case "$dflt" in
4179 y)
4180         $cat try.msg >&4
4181         case "$knowitall" in
4182         '')
4183                 echo "(The supplied flags or libraries might be incorrect.)"
4184                 ;;
4185         *) dflt=n;;
4186         esac
4187         echo " "
4188         . ./myread
4189         case "$ans" in
4190         n*|N*) ;;
4191         *)      echo "Ok.  Stopping Configure." >&4
4192                 exit 1
4193                 ;;
4194         esac
4195         ;;
4196 n) echo "OK, that should do.";;
4197 esac
4198 $rm -f try try.* core
4199
4200 : define an is-a-typedef? function
4201 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4202 case "$inclist" in
4203 "") inclist="sys/types.h";;
4204 esac;
4205 eval "varval=\$$var";
4206 case "$varval" in
4207 "")
4208         $rm -f temp.c;
4209         for inc in $inclist; do
4210                 echo "#include <$inc>" >>temp.c;
4211         done;
4212         echo "#ifdef $type" >> temp.c;
4213         echo "printf(\"We have $type\");" >> temp.c;
4214         echo "#endif" >> temp.c;
4215         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4216         if $contains $type temp.E >/dev/null 2>&1; then
4217                 eval "$var=\$type";
4218         else
4219                 eval "$var=\$def";
4220         fi;
4221         $rm -f temp.?;;
4222 *) eval "$var=\$varval";;
4223 esac'
4224
4225 : define an is-a-typedef? function that prompts if the type is not available.
4226 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4227 case "$inclist" in
4228 "") inclist="sys/types.h";;
4229 esac;
4230 eval "varval=\$$var";
4231 case "$varval" in
4232 "")
4233         $rm -f temp.c;
4234         for inc in $inclist; do
4235                 echo "#include <$inc>" >>temp.c;
4236         done;
4237         echo "#ifdef $type" >> temp.c;
4238         echo "printf(\"We have $type\");" >> temp.c;
4239         echo "#endif" >> temp.c;
4240         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4241         echo " " ;
4242         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4243         if $contains $type temp.E >/dev/null 2>&1; then
4244                 echo "$type found." >&4;
4245                 eval "$var=\$type";
4246         else
4247                 echo "$type NOT found." >&4;
4248                 dflt="$def";
4249                 . ./myread ;
4250                 eval "$var=\$ans";
4251         fi;
4252         $rm -f temp.?;;
4253 *) eval "$var=\$varval";;
4254 esac'
4255
4256 : define a shorthand compile call
4257 compile='
4258 mc_file=$1;
4259 shift;
4260 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4261 : define a shorthand compile call for compilations that should be ok.
4262 compile_ok='
4263 mc_file=$1;
4264 shift;
4265 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4266
4267 : check for lengths of integral types
4268 echo " "
4269 case "$intsize" in
4270 '')
4271         echo "Checking to see how big your integers are..." >&4
4272         $cat >intsize.c <<'EOCP'
4273 #include <stdio.h>
4274 int main()
4275 {
4276         printf("intsize=%d;\n", (int)sizeof(int));
4277         printf("longsize=%d;\n", (int)sizeof(long));
4278         printf("shortsize=%d;\n", (int)sizeof(short));
4279         exit(0);
4280 }
4281 EOCP
4282         set intsize
4283         if eval $compile_ok && ./intsize > /dev/null; then
4284                 eval `./intsize`
4285                 echo "Your integers are $intsize bytes long."
4286                 echo "Your long integers are $longsize bytes long."
4287                 echo "Your short integers are $shortsize bytes long."
4288         else
4289                 $cat >&4 <<EOM
4290 !
4291 Help! I can't compile and run the intsize test program: please enlighten me!
4292 (This is probably a misconfiguration in your system or libraries, and
4293 you really ought to fix it.  Still, I'll try anyway.)
4294 !
4295 EOM
4296                 dflt=4
4297                 rp="What is the size of an integer (in bytes)?"
4298                 . ./myread
4299                 intsize="$ans"
4300                 dflt=$intsize
4301                 rp="What is the size of a long integer (in bytes)?"
4302                 . ./myread
4303                 longsize="$ans"
4304                 dflt=2
4305                 rp="What is the size of a short integer (in bytes)?"
4306                 . ./myread
4307                 shortsize="$ans"
4308         fi
4309         ;;
4310 esac
4311 $rm -f intsize intsize.*
4312
4313 : see what type lseek is declared as in the kernel
4314 rp="What is the type used for lseek's offset on this system?"
4315 set off_t lseektype long stdio.h sys/types.h
4316 eval $typedef_ask
4317
4318 echo " "
4319 echo "Checking to see how big your file offsets are..." >&4
4320 $cat >try.c <<EOCP
4321 #include <sys/types.h>
4322 #include <stdio.h>
4323 int main()
4324 {
4325     printf("%d\n", (int)sizeof($lseektype));
4326     return(0); 
4327 }
4328 EOCP
4329 set try
4330 if eval $compile_ok; then
4331         lseeksize=`./try`
4332         echo "Your file offsets are $lseeksize bytes long."
4333 else
4334         dflt=$longsize
4335         echo " "
4336         echo "(I can't seem to compile the test program.  Guessing...)"
4337         rp="What is the size of your file offsets (in bytes)?"
4338         . ./myread
4339         lseeksize="$ans"
4340 fi
4341 $rm -f try.c try
4342
4343 : see what type file positions are declared as in the library
4344 rp="What is the type for file position used by fsetpos()?"
4345 set fpos_t fpostype long stdio.h sys/types.h
4346 eval $typedef_ask
4347
4348 echo " "
4349 case "$fpostype" in
4350 *_t) zzz="$fpostype"    ;;
4351 *)   zzz="fpos_t"       ;;
4352 esac
4353 echo "Checking the size of $zzz..." >&4 
4354 cat > try.c <<EOCP
4355 #include <sys/types.h>
4356 #include <stdio.h>
4357 int main() {
4358     printf("%d\n", (int)sizeof($fpostype));
4359     exit(0);
4360 }
4361 EOCP
4362 set try
4363 if eval $compile_ok; then
4364         yyy=`./try`
4365         case "$yyy" in
4366         '')     fpossize=4
4367                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4368                 ;;
4369         *)      fpossize=$yyy
4370                 echo "Your $zzz is $fpossize bytes long."
4371                 ;;
4372         esac
4373 else
4374         dflt="$longsize"
4375         echo " " >&4
4376         echo "(I can't compile the test program.  Guessing...)" >&4
4377         rp="What is the size of your file positions (in bytes)?"
4378         . ./myread
4379         fpossize="$ans"
4380 fi
4381
4382
4383
4384 # Backward compatibility (uselfs is deprecated).
4385 case "$uselfs" in
4386 "$define"|true|[yY]*)
4387         cat <<EOM >&4
4388
4389 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4390 EOM
4391         uselargefiles="$define"
4392         ;;
4393 esac                          
4394
4395 case "$lseeksize:$fpossize" in
4396 8:8) cat <<EOM
4397
4398 You can have files larger than 2 gigabytes.
4399 EOM
4400    val="$define" ;;
4401 *)    case "$uselargefiles" in
4402    "$undef"|false|[nN]*) dflt='n' ;;
4403    *)   dflt='y' ;;
4404    esac
4405    cat <<EOM
4406
4407 Perl can be built to understand large files (files larger than 2 gigabytes)
4408 on some systems.  To do so, Configure can be run with -Duselargefiles.
4409
4410 If this doesn't make any sense to you, just accept the default '$dflt'.
4411 EOM
4412    rp='Try to understand large files, if available?'
4413    . ./myread
4414    case "$ans" in
4415    y|Y)         val="$define" ;;
4416    *)           val="$undef"  ;;
4417    esac
4418    ;;
4419 esac
4420 set uselargefiles
4421 eval $setvar
4422 case "$uselargefiles" in
4423 "$define")
4424 : Look for a hint-file generated 'call-back-unit'.  If the
4425 : user has specified that a large files perl is to be built,
4426 : we may need to set or change some other defaults.
4427         if $test -f uselargefiles.cbu; then
4428                 echo "Your platform has some specific hints for large file builds, using them..."
4429                 . ./uselargefiles.cbu
4430                 echo " "
4431                 echo "Rechecking to see how big your file offsets are..." >&4
4432                 $cat >try.c <<EOCP
4433 #include <sys/types.h>
4434 #include <stdio.h>
4435 int main()
4436 {
4437     printf("%d\n", (int)sizeof($lseektype));
4438     return(0); 
4439 }
4440 EOCP
4441                 set try
4442                 if eval $compile_ok; then
4443                         lseeksize=`./try`
4444                         $echo "Your file offsets are now $lseeksize bytes long."
4445                 else
4446                         dflt="$lseeksize"
4447                         echo " "
4448                         echo "(I can't seem to compile the test program.  Guessing...)"
4449                         rp="What is the size of your file offsets (in bytes)?"
4450                         . ./myread
4451                         lseeksize="$ans"
4452                 fi
4453                 case "$fpostype" in
4454                 *_t) zzz="$fpostype"    ;;
4455                 *)   zzz="fpos_t"       ;;
4456                 esac
4457                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4458                 $cat > try.c <<EOCP
4459 #include <sys/types.h>
4460 #include <stdio.h>
4461 int main() {
4462     printf("%d\n", (int)sizeof($fpostype));
4463     exit(0);
4464 }
4465 EOCP
4466                 set try
4467                 if eval $compile_ok; then
4468                         yyy=`./try`
4469                         dflt="$lseeksize"
4470                         case "$yyy" in
4471                         '')     echo " "
4472                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4473                                 ;;
4474                         *)      fpossize=$yyy
4475                                 echo " $fpossize bytes." >&4
4476                                 ;;
4477                         esac
4478                 else
4479                         dflt="$fpossize"
4480                         echo " "
4481                         echo "(I can't compile the test program.  Guessing...)" >&4
4482                         rp="What is the size of your file positions (in bytes)?"
4483                         . ./myread
4484                         fpossize="$ans"
4485                 fi
4486                 $rm -f try.c try
4487         fi
4488         ;;
4489 esac
4490
4491
4492 case "$usemorebits" in
4493 "$define"|true|[yY]*)
4494         use64bitint="$define"
4495         uselongdouble="$define"
4496         usemorebits="$define"
4497         ;;
4498 *)      usemorebits="$undef"
4499         ;;
4500 esac
4501
4502
4503 case "$uselonglong" in
4504 "$define"|true|[yY]*)
4505         cat <<EOM >&4
4506
4507 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4508 EOM
4509         use64bitint="$define"
4510         ;;
4511 esac                          
4512 case "$use64bits" in
4513 "$define"|true|[yY]*)
4514         cat <<EOM >&4
4515
4516 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4517 EOM
4518         use64bitint="$define"
4519         ;;
4520 esac                          
4521 case "$use64bitints" in
4522 "$define"|true|[yY]*)
4523         cat <<EOM >&4
4524
4525 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4526 EOM
4527         use64bitint="$define"
4528         ;;
4529 esac                          
4530 case "$use64bitsint" in
4531 "$define"|true|[yY]*)
4532         cat <<EOM >&4
4533
4534 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4535 EOM
4536         use64bitint="$define"
4537         ;;
4538 esac                          
4539 case "$uselonglongs" in
4540 "$define"|true|[yY]*)
4541         cat <<EOM >&4
4542
4543 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4544 EOM
4545         use64bitint="$define"
4546         ;;
4547 esac                          
4548 case "$use64bitsall" in
4549 "$define"|true|[yY]*)
4550         cat <<EOM >&4
4551
4552 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4553 EOM
4554         use64bitall="$define"
4555         ;;
4556 esac                          
4557
4558 case "$ccflags" in
4559 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4560 esac
4561 case "$use64bitall" in
4562 "$define"|true|[yY]*) use64bitint="$define" ;;
4563 esac
4564
4565 case "$longsize" in
4566 8) cat <<EOM
4567
4568 You have natively 64-bit long integers.
4569 EOM
4570    val="$define"
4571    ;;
4572 *) case "$use64bitint" in
4573    "$define"|true|[yY]*) dflt='y';;
4574    *) dflt='n';;
4575    esac
4576    cat <<EOM
4577
4578 Perl can be built to take advantage of 64-bit integer types
4579 on some systems.  To do so, Configure can be run with -Duse64bitint.
4580 Choosing this option will most probably introduce binary incompatibilities.
4581
4582 If this doesn't make any sense to you, just accept the default '$dflt'.
4583 EOM
4584    rp='Try to use 64-bit integers, if available?'
4585    . ./myread
4586    case "$ans" in
4587    [yY]*) val="$define" ;;
4588    *)     val="$undef"  ;;
4589    esac
4590    ;;
4591 esac
4592 set use64bitint
4593 eval $setvar
4594
4595 case "$use64bitall" in
4596 "$define"|true|[yY]*) dflt='y' ;;
4597 *) case "$longsize" in
4598    8) dflt='y' ;;
4599    *) dflt='n' ;;
4600    esac
4601    ;;
4602 esac    
4603 cat <<EOM
4604
4605 You may also choose to try maximal 64-bitness.  It means using as much
4606 64-bitness as possible on the platform.  This in turn means even more
4607 binary incompatibilities.  On the other hand, your platform may not
4608 have any more 64-bitness available than what you already have chosen.
4609
4610 If this doesn't make any sense to you, just accept the default '$dflt'.
4611 EOM
4612 rp='Try to use maximal 64-bit support, if available?'
4613 . ./myread
4614 case "$ans" in
4615 [yY]*) val="$define" ;;
4616 *)     val="$undef"  ;;
4617 esac
4618 set use64bitall
4619 eval $setvar
4620 case "$use64bitall" in
4621 "$define")
4622         case "$use64bitint" in
4623         "$undef")
4624                 cat <<EOM
4625
4626 Since you have chosen a maximally 64-bit build, I'm also turning on
4627 the use of 64-bit integers.
4628 EOM
4629                 use64bitint="$define" ;;
4630         esac
4631         ;;
4632 esac
4633
4634 case "$use64bitint" in
4635 "$define"|true|[yY]*)
4636 : Look for a hint-file generated 'call-back-unit'.  If the
4637 : user has specified that a 64-bit perl is to be built,
4638 : we may need to set or change some other defaults.
4639         if $test -f use64bitint.cbu; then
4640                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4641                 . ./use64bitint.cbu
4642         fi
4643         case "$longsize" in
4644         4) case "$archname64" in
4645            '') archname64=64int ;;
4646            esac
4647            ;;
4648         esac
4649         ;;
4650 esac
4651
4652 case "$use64bitall" in
4653 "$define"|true|[yY]*)
4654 : Look for a hint-file generated 'call-back-unit'.  If the
4655 : user has specified that a maximally 64-bit perl is to be built,
4656 : we may need to set or change some other defaults.
4657         if $test -f use64bitall.cbu; then
4658                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4659                 . ./use64bitall.cbu
4660         fi
4661         case "$longsize" in
4662         4) case "$archname64" in
4663            ''|64int) archname64=64all ;;
4664            esac
4665            ;;
4666         esac
4667         ;;
4668 esac
4669
4670 : determine the architecture name
4671 echo " "
4672 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4673         tarch=`arch`"-$osname"
4674 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4675         if uname -m > tmparch 2>&1 ; then
4676                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4677                         -e 's/$/'"-$osname/" tmparch`
4678         else
4679                 tarch="$osname"
4680         fi
4681         $rm -f tmparch
4682 else
4683         tarch="$osname"
4684 fi
4685 case "$myarchname" in
4686 ''|"$tarch") ;;
4687 *)
4688         echo "(Your architecture name used to be $myarchname.)"
4689         archname=''
4690         ;;
4691 esac
4692 myarchname="$tarch"
4693 case "$archname" in
4694 '') dflt="$tarch";;
4695 *) dflt="$archname";;
4696 esac
4697 rp='What is your architecture name'
4698 . ./myread
4699 archname="$ans"
4700 case "$usethreads" in
4701 $define)
4702         echo "Threads selected." >&4
4703         case "$archname" in
4704         *-thread*) echo "...and architecture name already has -thread." >&4
4705                 ;;
4706         *)      archname="$archname-thread"
4707                 echo "...setting architecture name to $archname." >&4
4708                 ;;
4709         esac
4710         ;;
4711 esac
4712 case "$usemultiplicity" in
4713 $define)
4714         echo "Multiplicity selected." >&4
4715         case "$archname" in
4716         *-multi*) echo "...and architecture name already has -multi." >&4
4717                 ;;
4718         *)      archname="$archname-multi"
4719                 echo "...setting architecture name to $archname." >&4
4720                 ;;
4721         esac
4722         ;;
4723 esac
4724 case "$use64bitint" in
4725 $define)
4726         case "$archname64" in
4727         '')
4728                 ;;
4729         *)
4730                 case "$archname" in
4731                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4732                         ;;
4733                 *)      archname="$archname-$archname64"
4734                         echo "...setting architecture name to $archname." >&4
4735                         ;;
4736                 esac
4737                 ;;
4738         esac
4739 esac
4740
4741 : determine root of directory hierarchy where package will be installed.
4742 case "$prefix" in
4743 '')
4744         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4745         ;;
4746 *)
4747         dflt="$prefix"
4748         ;;
4749 esac
4750 $cat <<EOM
4751
4752 By default, $package will be installed in $dflt/bin, manual pages
4753 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4754 installation directories. Typically this is something like /usr/local.
4755 If you wish to have binaries under /usr/bin but other parts of the
4756 installation under /usr/local, that's ok: you will be prompted
4757 separately for each of the installation directories, the prefix being
4758 only used to set the defaults.
4759
4760 EOM
4761 fn=d~
4762 rp='Installation prefix to use?'
4763 . ./getfile
4764 oldprefix=''
4765 case "$prefix" in
4766 '') ;;
4767 *)
4768         case "$ans" in
4769         "$prefix") ;;
4770         *) oldprefix="$prefix";;
4771         esac
4772         ;;
4773 esac
4774 prefix="$ans"
4775 prefixexp="$ansexp"
4776
4777 : is AFS running?
4778 echo " "
4779 case "$afs" in
4780 $define|true)   afs=true ;;
4781 $undef|false)   afs=false ;;
4782 *)      if test -d /afs; then
4783                 afs=true
4784         else
4785                 afs=false
4786         fi
4787         ;;
4788 esac
4789 if $afs; then
4790         echo "AFS may be running... I'll be extra cautious then..." >&4
4791 else
4792         echo "AFS does not seem to be running..." >&4
4793 fi
4794
4795 : determine installation prefix for where package is to be installed.
4796 if $afs; then 
4797 $cat <<EOM
4798
4799 Since you are running AFS, I need to distinguish the directory in which
4800 files will reside from the directory in which they are installed (and from
4801 which they are presumably copied to the former directory by occult means).
4802
4803 EOM
4804         case "$installprefix" in
4805         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4806         *) dflt="$installprefix";;
4807         esac
4808 else
4809 $cat <<EOM
4810
4811 In some special cases, particularly when building $package for distribution,
4812 it is convenient to distinguish between the directory in which files should 
4813 be installed from the directory ($prefix) in which they 
4814 will eventually reside.  For most users, these two directories are the same.
4815
4816 EOM
4817         case "$installprefix" in
4818         '') dflt=$prefix ;;
4819         *) dflt=$installprefix;;
4820         esac
4821 fi
4822 fn=d~
4823 rp='What installation prefix should I use for installing files?'
4824 . ./getfile
4825 installprefix="$ans"
4826 installprefixexp="$ansexp"
4827
4828 : set the prefixit variable, to compute a suitable default value
4829 prefixit='case "$3" in
4830 ""|none)
4831         case "$oldprefix" in
4832         "") eval "$1=\"\$$2\"";;
4833         *)
4834                 case "$3" in
4835                 "") eval "$1=";;
4836                 none)
4837                         eval "tp=\"\$$2\"";
4838                         case "$tp" in
4839                         ""|" ") eval "$1=\"\$$2\"";;
4840                         *) eval "$1=";;
4841                         esac;;
4842                 esac;;
4843         esac;;
4844 *)
4845         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4846         case "$tp" in
4847         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4848         /*-$oldprefix/*|\~*-$oldprefix/*)
4849                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4850         *) eval "$1=\"\$$2\"";;
4851         esac;;
4852 esac'
4853
4854
4855 : get the patchlevel
4856 echo " "
4857 echo "Getting the current patchlevel..." >&4
4858 if $test -r $rsrc/patchlevel.h;then
4859         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4860         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4861         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4862         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4863         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4864         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4865 else
4866         revision=0
4867         patchlevel=0
4868         subversion=0
4869         api_revision=0
4870         api_version=0
4871         api_subversion=0
4872 fi
4873 $echo $n "(You have $package revision $revision" $c
4874 $echo $n " patchlevel $patchlevel" $c
4875 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4876 echo ".)"
4877 case "$osname" in
4878 dos|vms)
4879         : XXX Should be a Configure test for double-dots in filenames.
4880         version=`echo $revision $patchlevel $subversion | \
4881                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4882         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4883                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4884         ;;
4885 *)
4886         version=`echo $revision $patchlevel $subversion | \
4887                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4888         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4889                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4890         ;;
4891 esac
4892 : Special case the 5.005_xx maintenance series, which used 5.005
4893 : without any subversion label as a subdirectory in $sitelib
4894 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4895         api_versionstring='5.005'
4896 fi
4897
4898 : determine installation style
4899 : For now, try to deduce it from prefix unless it is already set.
4900 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4901 case "$installstyle" in
4902 '')     case "$prefix" in
4903                 *perl*) dflt='lib';;
4904                 *) dflt='lib/perl5' ;;
4905         esac
4906         ;;
4907 *)      dflt="$installstyle" ;;
4908 esac
4909 : Probably not worth prompting for this since we prompt for all
4910 : the directories individually, and the prompt would be too long and
4911 : confusing anyway.
4912 installstyle=$dflt
4913
4914 : determine where private library files go
4915 : Usual default is /usr/local/lib/perl5/$version.
4916 : Also allow things like /opt/perl/lib/$version, since 
4917 : /opt/perl/lib/perl5... would be redundant.
4918 : The default "style" setting is made in installstyle.U
4919 case "$installstyle" in
4920 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4921 *)       set dflt privlib lib/$version ;;
4922 esac
4923 eval $prefixit
4924 $cat <<EOM
4925
4926 There are some auxiliary files for $package that need to be put into a
4927 private library directory that is accessible by everyone.
4928
4929 EOM
4930 fn=d~+
4931 rp='Pathname where the private library files will reside?'
4932 . ./getfile
4933 privlib="$ans"
4934 privlibexp="$ansexp"
4935 : Change installation prefix, if necessary.
4936 if $test X"$prefix" != X"$installprefix"; then
4937         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4938 else
4939         installprivlib="$privlibexp"
4940 fi
4941
4942 : set the prefixup variable, to restore leading tilda escape
4943 prefixup='case "$prefixexp" in
4944 "$prefix") ;;
4945 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4946 esac'
4947
4948 : determine where public architecture dependent libraries go
4949 set archlib archlib
4950 eval $prefixit
4951 : privlib default is /usr/local/lib/$package/$version
4952 : archlib default is /usr/local/lib/$package/$version/$archname
4953 : privlib may have an optional trailing /share.
4954 tdflt=`echo $privlib | $sed 's,/share$,,'`
4955 tdflt=$tdflt/$archname
4956 case "$archlib" in
4957 '')     dflt=$tdflt
4958         ;;
4959 *)      dflt="$archlib"
4960     ;;
4961 esac
4962 $cat <<EOM
4963
4964 $spackage contains architecture-dependent library files.  If you are
4965 sharing libraries in a heterogeneous environment, you might store
4966 these files in a separate location.  Otherwise, you can just include
4967 them with the rest of the public library files.
4968
4969 EOM
4970 fn=d+~
4971 rp='Where do you want to put the public architecture-dependent libraries?'
4972 . ./getfile
4973 archlib="$ans"
4974 archlibexp="$ansexp"
4975 if $test X"$archlib" = X"$privlib"; then
4976         d_archlib="$undef"
4977 else
4978         d_archlib="$define"
4979 fi
4980 : Change installation prefix, if necessary.
4981 if $test X"$prefix" != X"$installprefix"; then
4982         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4983 else
4984         installarchlib="$archlibexp"
4985 fi
4986
4987
4988 : Binary compatibility with 5.005 is not possible for builds
4989 : with advanced features
4990 case "$usethreads$usemultiplicity" in
4991 *define*)
4992         bincompat5005="$undef"
4993         d_bincompat5005="$undef"
4994         ;;
4995 *)      $cat <<EOM
4996
4997 This version of Perl can be compiled for binary compatibility with 5.005.
4998 If you decide to do so, you will be able to continue using most of the
4999 extensions that were compiled for Perl 5.005.
5000
5001 EOM
5002         case "$bincompat5005$d_bincompat5005" in
5003         *"$undef"*) dflt=n ;;
5004         *) dflt=y ;;
5005         esac
5006         rp='Binary compatibility with Perl 5.005?'
5007         . ./myread
5008         case "$ans" in
5009         y*) val="$define" ;;
5010         *)  val="$undef" ;;
5011         esac
5012         set d_bincompat5005
5013         eval $setvar
5014         case "$d_bincompat5005" in
5015         "$define")
5016                 bincompat5005="$define"
5017                 ;;
5018         *)      bincompat5005="$undef"
5019                 d_bincompat5005="$undef"
5020                 ;;
5021         esac
5022         ;;
5023 esac
5024
5025
5026 : see if setuid scripts can be secure
5027 $cat <<EOM
5028
5029 Some kernels have a bug that prevents setuid #! scripts from being
5030 secure.  Some sites have disabled setuid #! scripts because of this.
5031
5032 First let's decide if your kernel supports secure setuid #! scripts.
5033 (If setuid #! scripts would be secure but have been disabled anyway,
5034 don't say that they are secure if asked.)
5035
5036 EOM
5037
5038 val="$undef"
5039 if $test -d /dev/fd; then
5040         echo "#!$ls" >reflect
5041         chmod +x,u+s reflect
5042         ./reflect >flect 2>&1
5043         if $contains "/dev/fd" flect >/dev/null; then
5044                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5045                 val="$define"
5046         else
5047                 $cat <<EOM
5048 If you are not sure if they are secure, I can check but I'll need a
5049 username and password different from the one you are using right now.
5050 If you don't have such a username or don't want me to test, simply
5051 enter 'none'.
5052
5053 EOM
5054                 rp='Other username to test security of setuid scripts with?'
5055                 dflt='none'
5056                 . ./myread
5057                 case "$ans" in
5058                 n|none)
5059                         case "$d_suidsafe" in
5060                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5061                                 dflt=n;;
5062                         "$undef")
5063                                 echo "Well, the $hint value is *not* secure." >&4
5064                                 dflt=n;;
5065                         *)      echo "Well, the $hint value *is* secure." >&4
5066                                 dflt=y;;
5067                         esac
5068                         ;;
5069                 *)
5070                         $rm -f reflect flect
5071                         echo "#!$ls" >reflect
5072                         chmod +x,u+s reflect
5073                         echo >flect
5074                         chmod a+w flect
5075                         echo '"su" will (probably) prompt you for '"$ans's password."
5076                         su $ans -c './reflect >flect'
5077                         if $contains "/dev/fd" flect >/dev/null; then
5078                                 echo "Okay, it looks like setuid scripts are secure." >&4
5079                                 dflt=y
5080                         else
5081                                 echo "I don't think setuid scripts are secure." >&4
5082                                 dflt=n
5083                         fi
5084                         ;;
5085                 esac
5086                 rp='Does your kernel have *secure* setuid scripts?'
5087                 . ./myread
5088                 case "$ans" in
5089                 [yY]*)  val="$define";;
5090                 *)      val="$undef";;
5091                 esac
5092         fi
5093 else
5094         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5095         echo "(That's for file descriptors, not floppy disks.)"
5096         val="$undef"
5097 fi
5098 set d_suidsafe
5099 eval $setvar
5100
5101 $rm -f reflect flect
5102
5103 : now see if they want to do setuid emulation
5104 echo " "
5105 val="$undef"
5106 case "$d_suidsafe" in
5107 "$define")
5108         val="$undef"
5109         echo "No need to emulate SUID scripts since they are secure here." >& 4
5110         ;;
5111 *)
5112         $cat <<EOM
5113 Some systems have disabled setuid scripts, especially systems where
5114 setuid scripts cannot be secure.  On systems where setuid scripts have
5115 been disabled, the setuid/setgid bits on scripts are currently
5116 useless.  It is possible for $package to detect those bits and emulate
5117 setuid/setgid in a secure fashion.  This emulation will only work if
5118 setuid scripts have been disabled in your kernel.
5119
5120 EOM
5121         case "$d_dosuid" in
5122         "$define") dflt=y ;;
5123         *) dflt=n ;;
5124         esac
5125         rp="Do you want to do setuid/setgid emulation?"
5126         . ./myread
5127         case "$ans" in
5128         [yY]*)  val="$define";;
5129         *)      val="$undef";;
5130         esac
5131         ;;
5132 esac
5133 set d_dosuid
5134 eval $setvar
5135
5136 : determine filename position in cpp output
5137 echo " "
5138 echo "Computing filename position in cpp output for #include directives..." >&4
5139 echo '#include <stdio.h>' > foo.c
5140 $cat >fieldn <<EOF
5141 $startsh
5142 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5143 $grep '^[       ]*#.*stdio\.h' | \
5144 while read cline; do
5145         pos=1
5146         set \$cline
5147         while $test \$# -gt 0; do
5148                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5149                         echo "\$pos"
5150                         exit 0
5151                 fi
5152                 shift
5153                 pos=\`expr \$pos + 1\`
5154         done
5155 done
5156 EOF
5157 chmod +x fieldn
5158 fieldn=`./fieldn`
5159 $rm -f foo.c fieldn
5160 case $fieldn in
5161 '') pos='???';;
5162 1) pos=first;;
5163 2) pos=second;;
5164 3) pos=third;;
5165 *) pos="${fieldn}th";;
5166 esac
5167 echo "Your cpp writes the filename in the $pos field of the line."
5168
5169 : locate header file
5170 $cat >findhdr <<EOF
5171 $startsh
5172 wanted=\$1
5173 name=''
5174 for usrincdir in $usrinc
5175 do
5176         if test -f \$usrincdir/\$wanted; then
5177                 echo "\$usrincdir/\$wanted"
5178                 exit 0
5179         fi
5180 done
5181 awkprg='{ print \$$fieldn }'
5182 echo "#include <\$wanted>" > foo\$\$.c
5183 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5184 $grep "^[       ]*#.*\$wanted" | \
5185 while read cline; do
5186         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5187         case "\$name" in
5188         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5189         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5190         *) exit 2;;
5191         esac;
5192 done;
5193 #
5194 # status = 0: grep returned 0 lines, case statement not executed
5195 # status = 1: headerfile found
5196 # status = 2: while loop executed, no headerfile found
5197 #
5198 status=\$?
5199 $rm -f foo\$\$.c;
5200 if test \$status -eq 1; then
5201         exit 0;
5202 fi
5203 exit 1
5204 EOF
5205 chmod +x findhdr
5206
5207 : define an alternate in-header-list? function
5208 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5209 cont=true; xxf="echo \"<\$1> found.\" >&4";
5210 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5211 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5212 esac;
5213 case $# in 4) instead=instead;; *) instead="at last";; esac;
5214 while $test "$cont"; do
5215         xxx=`./findhdr $1`
5216         var=$2; eval "was=\$$2";
5217         if $test "$xxx" && $test -r "$xxx";
5218         then eval $xxf;
5219         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5220                 cont="";
5221         else eval $xxnf;
5222         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5223         set $yyy; shift; shift; yyy=$@;
5224         case $# in 0) cont="";;
5225         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5226                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5227         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5228                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5229         esac;
5230 done;
5231 while $test "$yyy";
5232 do set $yyy; var=$2; eval "was=\$$2";
5233         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5234         set $yyy; shift; shift; yyy=$@;
5235 done'
5236
5237 : see if this is a malloc.h system
5238 set malloc.h i_malloc
5239 eval $inhdr
5240
5241 : see if stdlib is available
5242 set stdlib.h i_stdlib
5243 eval $inhdr
5244
5245 : determine which malloc to compile in
5246 echo " "
5247 case "$usemymalloc" in
5248 ''|[yY]*|true|$define)  dflt='y' ;;
5249 *)      dflt='n' ;;
5250 esac
5251 rp="Do you wish to attempt to use the malloc that comes with $package?"
5252 . ./myread
5253 usemymalloc="$ans"
5254 case "$ans" in
5255 y*|true)
5256         usemymalloc='y'
5257         mallocsrc='malloc.c'
5258         mallocobj="malloc$_o"
5259         d_mymalloc="$define"
5260         case "$libs" in
5261         *-lmalloc*)
5262                 : Remove malloc from list of libraries to use
5263                 echo "Removing unneeded -lmalloc from library list" >&4
5264                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5265                 shift
5266                 libs="$*"
5267                 echo "libs = $libs" >&4
5268                 ;;
5269         esac
5270         ;;
5271 *)
5272         usemymalloc='n'
5273         mallocsrc=''
5274         mallocobj=''
5275         d_mymalloc="$undef"
5276         ;;
5277 esac
5278
5279 : compute the return types of malloc and free
5280 echo " "
5281 $cat >malloc.c <<END
5282 #$i_malloc I_MALLOC
5283 #$i_stdlib I_STDLIB
5284 #include <stdio.h>
5285 #include <sys/types.h>
5286 #ifdef I_MALLOC
5287 #include <malloc.h>
5288 #endif
5289 #ifdef I_STDLIB
5290 #include <stdlib.h>
5291 #endif
5292 #ifdef TRY_MALLOC
5293 void *malloc();
5294 #endif
5295 #ifdef TRY_FREE
5296 void free();
5297 #endif
5298 END
5299 case "$malloctype" in
5300 '')
5301         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5302                 malloctype='void *'
5303         else
5304                 malloctype='char *'
5305         fi
5306         ;;
5307 esac
5308 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5309
5310 case "$freetype" in
5311 '')
5312         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5313                 freetype='void'
5314         else
5315                 freetype='int'
5316         fi
5317         ;;
5318 esac
5319 echo "Your system uses $freetype free(), it would seem." >&4
5320 $rm -f malloc.[co]
5321 $cat <<EOM
5322
5323 After $package is installed, you may wish to install various
5324 add-on modules and utilities.  Typically, these add-ons will
5325 be installed under $prefix with the rest
5326 of this package.  However, you may wish to install such add-ons
5327 elsewhere under a different prefix.
5328
5329 If you do not wish to put everything under a single prefix, that's
5330 ok.  You will be prompted for the individual locations; this siteprefix
5331 is only used to suggest the defaults.
5332
5333 The default should be fine for most people.
5334
5335 EOM
5336 fn=d~+
5337 rp='Installation prefix to use for add-on modules and utilities?'
5338 : XXX Here might be another good place for an installstyle setting.
5339 case "$siteprefix" in
5340 '') dflt=$prefix ;;
5341 *)  dflt=$siteprefix ;;
5342 esac
5343 . ./getfile
5344 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5345 oldsiteprefix=''
5346 case "$siteprefix" in
5347 '') ;;
5348 *)      case "$ans" in
5349         "$prefix") ;;
5350         *) oldsiteprefix="$prefix";;
5351         esac
5352         ;;
5353 esac
5354 siteprefix="$ans"
5355 siteprefixexp="$ansexp"
5356
5357 : determine where site specific libraries go.
5358 : Usual default is /usr/local/lib/perl5/site_perl/$version
5359 : The default "style" setting is made in installstyle.U
5360 : XXX No longer works with Prefixit stuff.
5361 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5362 case "$sitelib" in
5363 '') case "$installstyle" in
5364         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5365         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5366         esac
5367         ;;
5368 *)      dflt="$sitelib"
5369         ;;
5370 esac
5371 $cat <<EOM
5372
5373 The installation process will create a directory for
5374 site-specific extensions and modules.  Most users find it convenient
5375 to place all site-specific files in this directory rather than in the
5376 main distribution directory.
5377
5378 EOM
5379 fn=d~+
5380 rp='Pathname for the site-specific library files?'
5381 . ./getfile
5382 sitelib="$ans"
5383 sitelibexp="$ansexp"
5384 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5385 : Change installation prefix, if necessary.
5386 if $test X"$prefix" != X"$installprefix"; then
5387         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5388 else
5389         installsitelib="$sitelibexp"
5390 fi
5391
5392 : determine where site specific architecture-dependent libraries go.
5393 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
5394 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5395 : sitelib may have an optional trailing /share.
5396 case "$sitearch" in
5397 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
5398         dflt="$dflt/$archname"
5399         ;;
5400 *)      dflt="$sitearch"
5401         ;;
5402 esac
5403 set sitearch sitearch none
5404 eval $prefixit
5405 $cat <<EOM
5406
5407 The installation process will also create a directory for
5408 architecture-dependent site-specific extensions and modules.
5409
5410 EOM
5411 fn=d~+
5412 rp='Pathname for the site-specific architecture-dependent library files?'
5413 . ./getfile
5414 sitearch="$ans"
5415 sitearchexp="$ansexp"
5416 : Change installation prefix, if necessary.
5417 if $test X"$prefix" != X"$installprefix"; then
5418         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5419 else
5420         installsitearch="$sitearchexp"
5421 fi
5422
5423 $cat <<EOM
5424
5425 The installation process will also create a directory for
5426 vendor-supplied add-ons.  Vendors who supply perl with their system
5427 may find it convenient to place all vendor-supplied files in this
5428 directory rather than in the main distribution directory.  This will
5429 ease upgrades between binary-compatible maintenance versions of perl.
5430
5431 Of course you may also use these directories in whatever way you see
5432 fit.  For example, you might use them to access modules shared over a
5433 company-wide network.
5434
5435 The default answer should be fine for most people.
5436 This causes further questions about vendor add-ons to be skipped
5437 and no vendor-specific directories will be configured for perl.
5438
5439 EOM
5440 rp='Do you want to configure vendor-specific add-on directories?'
5441 case "$usevendorprefix" in
5442 define|true|[yY]*) dflt=y ;;
5443 *)      : User may have set vendorprefix directly on Configure command line.
5444         case "$vendorprefix" in
5445         ''|' ') dflt=n ;;
5446         *)      dflt=y ;;
5447         esac
5448         ;;
5449 esac
5450 . ./myread
5451 case "$ans" in
5452 [yY]*)  fn=d~+
5453         rp='Installation prefix to use for vendor-supplied add-ons?'
5454         case "$vendorprefix" in
5455         '') dflt='' ;;
5456         *)  dflt=$vendorprefix ;;
5457         esac
5458         . ./getfile
5459         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5460         oldvendorprefix=''
5461         case "$vendorprefix" in
5462         '') ;;
5463         *)      case "$ans" in
5464                 "$prefix") ;;
5465                 *) oldvendorprefix="$prefix";;
5466                 esac
5467                 ;;
5468         esac
5469         usevendorprefix="$define"
5470         vendorprefix="$ans"
5471         vendorprefixexp="$ansexp"
5472         ;;
5473 *)      usevendorprefix="$undef"
5474         vendorprefix=''
5475         vendorprefixexp=''
5476         ;;
5477 esac
5478
5479 case "$vendorprefix" in
5480 '')     d_vendorlib="$undef"
5481         vendorlib=''
5482         vendorlibexp=''
5483         ;;
5484 *)      d_vendorlib="$define"
5485         : determine where vendor-supplied modules go.
5486         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5487         case "$vendorlib" in
5488         '')
5489                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5490                 case "$installstyle" in
5491                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5492                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5493                 esac
5494                 ;;
5495         *)      dflt="$vendorlib"
5496                 ;;
5497         esac
5498         fn=d~+
5499         rp='Pathname for the vendor-supplied library files?'
5500         . ./getfile
5501         vendorlib="$ans"
5502         vendorlibexp="$ansexp"
5503         ;;
5504 esac
5505 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5506 : Change installation prefix, if necessary.
5507 if $test X"$prefix" != X"$installprefix"; then
5508         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5509 else
5510         installvendorlib="$vendorlibexp"
5511 fi
5512
5513 case "$vendorprefix" in
5514 '')     d_vendorarch="$undef"
5515         vendorarch=''
5516         vendorarchexp=''
5517         ;;
5518 *)      d_vendorarch="$define"
5519         : determine where vendor-supplied architecture-dependent libraries go.
5520         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
5521         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5522         : vendorlib may have an optional trailing /share.
5523         case "$vendorarch" in
5524         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
5525                 dflt="$dflt/$archname"
5526                 ;;
5527         *)      dflt="$vendorarch" ;;
5528         esac
5529         fn=d~+
5530         rp='Pathname for vendor-supplied architecture-dependent files?'
5531         . ./getfile
5532         vendorarch="$ans"
5533         vendorarchexp="$ansexp"
5534         ;;
5535 esac
5536 : Change installation prefix, if necessary.
5537 if $test X"$prefix" != X"$installprefix"; then
5538         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5539 else
5540         installvendorarch="$vendorarchexp"
5541 fi
5542
5543 : Final catch-all directories to search
5544 $cat <<EOM
5545
5546 Lastly, you can have perl look in other directories for extensions and
5547 modules in addition to those already specified.
5548 These directories will be searched after 
5549         $sitearch 
5550         $sitelib 
5551 EOM
5552 test X"$vendorlib" != "X" && echo '     ' $vendorlib
5553 test X"$vendorarch" != "X" && echo '    ' $vendorarch
5554 echo ' '
5555 case "$otherlibdirs" in
5556 ''|' ') dflt='none' ;;
5557 *)      dflt="$otherlibdirs" ;;
5558 esac
5559 $cat <<EOM
5560 Enter a colon-separated set of extra paths to include in perl's @INC
5561 search path, or enter 'none' for no extra paths.
5562
5563 EOM
5564
5565 rp='Colon-separated list of additional directories for perl to search?'
5566 . ./myread
5567 case "$ans" in
5568 ' '|''|none)    otherlibdirs=' ' ;;     
5569 *)      otherlibdirs="$ans" ;;
5570 esac
5571 case "$otherlibdirs" in
5572 ' ') val=$undef ;;
5573 *)      val=$define ;;
5574 esac
5575 set d_perl_otherlibdirs
5576 eval $setvar
5577
5578 : Cruising for prototypes
5579 echo " "
5580 echo "Checking out function prototypes..." >&4
5581 $cat >prototype.c <<'EOCP'
5582 int main(int argc, char *argv[]) {
5583         exit(0);}
5584 EOCP
5585 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5586         echo "Your C compiler appears to support function prototypes."
5587         val="$define"
5588 else
5589         echo "Your C compiler doesn't seem to understand function prototypes."
5590         val="$undef"
5591 fi
5592 set prototype
5593 eval $setvar
5594 $rm -f prototype*
5595
5596 case "$prototype" in
5597 "$define") ;;
5598 *)      ansi2knr='ansi2knr'
5599         echo " "
5600         cat <<EOM >&4
5601
5602 $me:  FATAL ERROR:
5603 This version of $package can only be compiled by a compiler that 
5604 understands function prototypes.  Unfortunately, your C compiler 
5605         $cc $ccflags
5606 doesn't seem to understand them.  Sorry about that.
5607
5608 If GNU cc is available for your system, perhaps you could try that instead.  
5609
5610 Eventually, we hope to support building Perl with pre-ANSI compilers.
5611 If you would like to help in that effort, please contact <perlbug@perl.org>.
5612
5613 Aborting Configure now.
5614 EOM
5615         exit 2
5616         ;;
5617 esac
5618
5619 : determine where public executables go
5620 echo " "
5621 set dflt bin bin
5622 eval $prefixit
5623 fn=d~
5624 rp='Pathname where the public executables will reside?'
5625 . ./getfile
5626 if $test "X$ansexp" != "X$binexp"; then
5627         installbin=''
5628 fi
5629 bin="$ans"
5630 binexp="$ansexp"
5631 : Change installation prefix, if necessary.
5632 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5633 if $test X"$prefix" != X"$installprefix"; then
5634         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5635 else
5636         installbin="$binexp"
5637 fi
5638
5639 : Find perl5.005 or later.
5640 echo "Looking for a previously installed perl5.005 or later... "
5641 case "$perl5" in
5642 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5643                 : Check if this perl is recent and can load a simple module
5644                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5645                         perl5=$tdir/perl
5646                         break;
5647                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5648                         perl5=$tdir/perl
5649                         break;
5650                 fi
5651         done
5652         ;;
5653 *)      perl5="$perl5"
5654         ;;
5655 esac
5656 case "$perl5" in
5657 '')     echo "None found.  That's ok.";;
5658 *)      echo "Using $perl5." ;;
5659 esac
5660
5661 : Determine list of previous versions to include in @INC
5662 $cat > getverlist <<EOPL
5663 #!$perl5 -w
5664 use File::Basename;
5665 \$api_versionstring = "$api_versionstring";
5666 \$version = "$version";
5667 \$stem = "$sitelib_stem";
5668 \$archname = "$archname";
5669 EOPL
5670         $cat >> getverlist <<'EOPL'
5671 # Can't have leading @ because metaconfig interprets it as a command!
5672 ;@inc_version_list=();
5673 # XXX Redo to do opendir/readdir? 
5674 if (-d $stem) {
5675     chdir($stem);
5676     ;@candidates = glob("5.*");
5677 }
5678 else {
5679     ;@candidates = ();
5680 }
5681
5682 # XXX ToDo:  These comparisons must be reworked when two-digit
5683 # subversions come along, so that 5.7.10 compares as greater than
5684 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5685 # widespread that we can use the built-in version vectors rather
5686 # than reinventing them here.  For 5.6.0, however, we must
5687 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5688 foreach $d (@candidates) {
5689     if ($d lt $version) {
5690         if ($d ge $api_versionstring) {
5691             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
5692         }
5693         elsif ($d ge "5.005") {
5694             unshift(@inc_version_list, grep { -d } $d);
5695         }
5696     }
5697     else {
5698         # Skip newer version.  I.e. don't look in
5699         # 5.7.0 if we're installing 5.6.1.
5700     }
5701 }
5702
5703 if (@inc_version_list) {
5704     print join(' ', @inc_version_list);
5705 }
5706 else {
5707     # Blank space to preserve value for next Configure run.
5708     print " ";
5709 }
5710 EOPL
5711 chmod +x getverlist
5712 case "$inc_version_list" in
5713 '')     if test -x "$perl5"; then
5714                 dflt=`$perl5 getverlist`
5715         else
5716                 dflt='none'
5717         fi
5718         ;;
5719 $undef) dflt='none' ;;
5720 *)  dflt="$inc_version_list" ;;
5721 esac
5722 case "$dflt" in
5723 ''|' ') dflt=none ;;
5724 esac
5725 $cat <<'EOM'
5726
5727 In order to ease the process of upgrading, this version of perl 
5728 can be configured to use modules built and installed with earlier 
5729 versions of perl that were installed under $prefix.  Specify here
5730 the list of earlier versions that this version of perl should check.
5731 If Configure detected no earlier versions of perl installed under
5732 $prefix, then the list will be empty.  Answer 'none' to tell perl
5733 to not search earlier versions.
5734
5735 The default should almost always be sensible, so if you're not sure,
5736 just accept the default.
5737 EOM
5738
5739 rp='List of earlier versions to include in @INC?'
5740 . ./myread
5741 case "$ans" in
5742 [Nn]one|''|' ') inc_version_list=' ' ;;
5743 *) inc_version_list="$ans" ;;
5744 esac
5745 case "$inc_version_list" in
5746 ''|' ') 
5747         inc_version_list_init='0';;
5748 *)      inc_version_list_init=`echo $inc_version_list |
5749                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5750         ;;
5751 esac
5752 $rm -f getverlist
5753
5754 : determine whether to install perl also as /usr/bin/perl
5755
5756 echo " "
5757 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5758         $cat <<EOM
5759 Many scripts expect perl to be installed as /usr/bin/perl.
5760 I can install the perl you are about to compile also as /usr/bin/perl
5761 (in addition to $installbin/perl).
5762 EOM
5763         case "$installusrbinperl" in
5764         "$undef"|[nN]*) dflt='n';;
5765         *)              dflt='y';;
5766         esac
5767         rp="Do you want to install perl as /usr/bin/perl?"
5768         . ./myread
5769         case "$ans" in
5770         [yY]*)  val="$define";;
5771         *)      val="$undef" ;;
5772         esac
5773 else
5774         val="$undef"
5775 fi
5776 set installusrbinperl
5777 eval $setvar
5778
5779 echo " "
5780 echo "Checking for GNU C Library..." >&4
5781 cat >gnulibc.c <<EOM
5782 #include <stdio.h>
5783 int main()
5784 {
5785 #ifdef __GLIBC__
5786     exit(0);
5787 #else
5788     exit(1);
5789 #endif
5790 }
5791 EOM
5792 set gnulibc
5793 if eval $compile_ok && ./gnulibc; then
5794         val="$define"
5795         echo "You are using the GNU C Library"
5796 else
5797         val="$undef"
5798         echo "You are not using the GNU C Library"
5799 fi
5800 $rm -f gnulibc*
5801 set d_gnulibc
5802 eval $setvar
5803
5804 : see if nm is to be used to determine whether a symbol is defined or not
5805 case "$usenm" in
5806 '')
5807         dflt=''
5808         case "$d_gnulibc" in
5809         "$define")
5810                 echo " "
5811                 echo "nm probably won't work on the GNU C Library." >&4
5812                 dflt=n
5813                 ;;
5814         esac
5815         case "$dflt" in
5816         '') 
5817                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5818                         echo " "
5819                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5820                         echo "'nm' won't be sufficient on this sytem." >&4
5821                         dflt=n
5822                 fi
5823                 ;;
5824         esac
5825         case "$dflt" in
5826         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5827                 if $test $dflt -gt 20; then
5828                         dflt=y
5829                 else
5830                         dflt=n
5831                 fi
5832                 ;;
5833         esac
5834         ;;
5835 *)
5836         case "$usenm" in
5837         true|$define) dflt=y;;
5838         *) dflt=n;;
5839         esac
5840         ;;
5841 esac
5842 $cat <<EOM
5843
5844 I can use $nm to extract the symbols from your C libraries. This
5845 is a time consuming task which may generate huge output on the disk (up
5846 to 3 megabytes) but that should make the symbols extraction faster. The
5847 alternative is to skip the 'nm' extraction part and to compile a small
5848 test program instead to determine whether each symbol is present. If
5849 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5850 this may be the best solution.
5851
5852 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5853
5854 EOM
5855 rp="Shall I use $nm to extract C symbols from the libraries?"
5856 . ./myread
5857 case "$ans" in
5858 [Nn]*) usenm=false;;
5859 *) usenm=true;;
5860 esac
5861
5862 runnm=$usenm
5863 case "$reuseval" in
5864 true) runnm=false;;
5865 esac
5866
5867 : nm options which may be necessary
5868 case "$nm_opt" in
5869 '') if $test -f /mach_boot; then
5870                 nm_opt=''       # Mach
5871         elif $test -d /usr/ccs/lib; then
5872                 nm_opt='-p'     # Solaris (and SunOS?)
5873         elif $test -f /dgux; then
5874                 nm_opt='-p'     # DG-UX
5875         elif $test -f /lib64/rld; then
5876                 nm_opt='-p'     # 64-bit Irix
5877         else
5878                 nm_opt=''
5879         fi;;
5880 esac
5881
5882 : nm options which may be necessary for shared libraries but illegal
5883 : for archive libraries.  Thank you, Linux.
5884 case "$nm_so_opt" in
5885 '')     case "$myuname" in
5886         *linux*)
5887                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5888                         nm_so_opt='--dynamic'
5889                 fi
5890                 ;;
5891         esac
5892         ;;
5893 esac
5894
5895 case "$runnm" in
5896 true)
5897 : get list of predefined functions in a handy place
5898 echo " "
5899 case "$libc" in
5900 '') libc=unknown
5901         case "$libs" in
5902         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5903         esac
5904         ;;
5905 esac
5906 libnames='';
5907 case "$libs" in
5908 '') ;;
5909 *)  for thislib in $libs; do
5910         case "$thislib" in
5911         -lc|-lc_s)
5912                 : Handle C library specially below.
5913                 ;;
5914         -l*)
5915                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5916                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5917                         :
5918                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5919                         :
5920                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5921                         :
5922                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5923                         :
5924                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5925                         :
5926                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5927                         :
5928                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5929                         :
5930                 else
5931                         try=''
5932                 fi
5933                 libnames="$libnames $try"
5934                 ;;
5935         *) libnames="$libnames $thislib" ;;
5936         esac
5937         done
5938         ;;
5939 esac
5940 xxx=normal
5941 case "$libc" in
5942 unknown)
5943         set /lib/libc.$so
5944         for xxx in $libpth; do
5945                 $test -r $1 || set $xxx/libc.$so
5946                 : The messy sed command sorts on library version numbers.
5947                 $test -r $1 || \
5948                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5949                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5950                                 h
5951                                 s/[0-9][0-9]*/0000&/g
5952                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5953                                 G
5954                                 s/\n/ /' | \
5955                          sort | $sed -e 's/^.* //'`
5956                 eval set \$$#
5957         done
5958         $test -r $1 || set /usr/ccs/lib/libc.$so
5959         $test -r $1 || set /lib/libsys_s$_a
5960         ;;
5961 *)
5962         set blurfl
5963         ;;
5964 esac
5965 if $test -r "$1"; then
5966         echo "Your (shared) C library seems to be in $1."
5967         libc="$1"
5968 elif $test -r /lib/libc && $test -r /lib/clib; then
5969         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5970         xxx=apollo
5971         libc='/lib/clib /lib/libc'
5972         if $test -r /lib/syslib; then
5973                 echo "(Your math library is in /lib/syslib.)"
5974                 libc="$libc /lib/syslib"
5975         fi
5976 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5977         echo "Your C library seems to be in $libc, as you said before."
5978 elif $test -r $incpath/usr/lib/libc$_a; then
5979         libc=$incpath/usr/lib/libc$_a;
5980         echo "Your C library seems to be in $libc.  That's fine."
5981 elif $test -r /lib/libc$_a; then
5982         libc=/lib/libc$_a;
5983         echo "Your C library seems to be in $libc.  You're normal."
5984 else
5985         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5986                 :
5987         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5988                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5989         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5990                 :
5991         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5992                 :
5993         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5994                 :
5995         else
5996                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5997         fi
5998         if $test -r "$tans"; then
5999                 echo "Your C library seems to be in $tans, of all places."
6000                 libc=$tans
6001         else
6002                 libc='blurfl'
6003         fi
6004 fi
6005 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6006         dflt="$libc"
6007         cat <<EOM
6008
6009 If the guess above is wrong (which it might be if you're using a strange
6010 compiler, or your machine supports multiple models), you can override it here.
6011
6012 EOM
6013 else
6014         dflt=''
6015         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
6016         cat >&4 <<EOM
6017 I can't seem to find your C library.  I've looked in the following places:
6018
6019 EOM
6020         $sed 's/^/      /' libpath
6021         cat <<EOM
6022
6023 None of these seems to contain your C library. I need to get its name...
6024
6025 EOM
6026 fi
6027 fn=f
6028 rp='Where is your C library?'
6029 . ./getfile
6030 libc="$ans"
6031
6032 echo " "
6033 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
6034 set X `cat libnames`
6035 shift
6036 xxx=files
6037 case $# in 1) xxx=file; esac
6038 echo "Extracting names from the following $xxx for later perusal:" >&4
6039 echo " "
6040 $sed 's/^/      /' libnames >&4
6041 echo " "
6042 $echo $n "This may take a while...$c" >&4
6043
6044 for file in $*; do
6045         case $file in
6046         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
6047         *) $nm $nm_opt $file 2>/dev/null;;
6048         esac
6049 done >libc.tmp
6050
6051 $echo $n ".$c"
6052 $grep fprintf libc.tmp > libc.ptf
6053 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
6054 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
6055 xxx='[ADTSIW]'
6056 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
6057         eval $xscan;\
6058         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6059                 eval $xrun
6060 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
6061         eval $xscan;\
6062         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6063                 eval $xrun
6064 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
6065         eval $xscan;\
6066         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6067                 eval $xrun
6068 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
6069         eval $xscan;\
6070         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6071                 eval $xrun
6072 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
6073         eval $xscan;\
6074         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6075                 eval $xrun
6076 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
6077         eval $xscan;\
6078         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6079                 eval $xrun
6080 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
6081                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
6082         eval $xscan;\
6083         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6084                 eval $xrun
6085 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
6086         eval $xscan;\
6087         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6088                 eval $xrun
6089 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
6090         eval $xscan;\
6091         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6092                 eval $xrun
6093 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
6094         eval $xscan;\
6095         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6096                 eval $xrun
6097 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
6098         eval $xscan;\
6099         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6100                 eval $xrun
6101 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
6102         eval $xscan;\
6103         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6104                 eval $xrun
6105 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
6106         eval $xscan;\
6107         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6108                 eval $xrun
6109 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
6110         eval $xscan;\
6111         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6112                 eval $xrun
6113 else
6114         $nm -p $* 2>/dev/null >libc.tmp
6115         $grep fprintf libc.tmp > libc.ptf
6116         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
6117                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
6118         then
6119                 nm_opt='-p'
6120                 eval $xrun
6121         else
6122                 echo " "
6123                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
6124                 com=''
6125                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
6126                         for thisname in $libnames $libc; do
6127                                 $ar t $thisname >>libc.tmp
6128                         done
6129                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
6130                         echo "Ok." >&4
6131                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
6132                         # Repeat libc to extract forwarders to DLL entries too
6133                         for thisname in $libnames $libc; do
6134                                 $ar tv $thisname >>libc.tmp
6135                                 # Revision 50 of EMX has bug in $ar.
6136                                 # it will not extract forwarders to DLL entries
6137                                 # Use emximp which will extract exactly them.
6138                                 emximp -o tmp.imp $thisname \
6139                                     2>/dev/null && \
6140                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6141                                     < tmp.imp >>libc.tmp
6142                                 $rm tmp.imp
6143                         done
6144                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6145                         echo "Ok." >&4
6146                 else
6147                         echo "$ar didn't seem to work right." >&4
6148                         echo "Maybe this is a Cray...trying bld instead..." >&4
6149                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6150                         then
6151                                 for thisname in $libnames; do
6152                                         bld t $libnames | \
6153                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6154                                         $ar t $thisname >>libc.tmp
6155                                 done
6156                                 echo "Ok." >&4
6157                         else
6158                                 echo "That didn't work either.  Giving up." >&4
6159                                 exit 1
6160                         fi
6161                 fi
6162         fi
6163 fi
6164 nm_extract="$com"
6165 if $test -f /lib/syscalls.exp; then
6166         echo " "
6167         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6168         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6169 fi
6170 ;;
6171 esac
6172 $rm -f libnames libpath
6173
6174 : see if dld is available
6175 set dld.h i_dld
6176 eval $inhdr
6177
6178 : is a C symbol defined?
6179 csym='tlook=$1;
6180 case "$3" in
6181 -v) tf=libc.tmp; tc=""; tdc="";;
6182 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6183 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6184 esac;
6185 tx=yes;
6186 case "$reuseval-$4" in
6187 true-) ;;
6188 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6189 esac;
6190 case "$tx" in
6191 yes)
6192         case "$runnm" in
6193         true)
6194                 if $contains $tlook $tf >/dev/null 2>&1;
6195                 then tval=true;
6196                 else tval=false;
6197                 fi;;
6198         *)
6199                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6200                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6201                 then tval=true;
6202                 else tval=false;
6203                 fi;
6204                 $rm -f t t.c;;
6205         esac;;
6206 *)
6207         case "$tval" in
6208         $define) tval=true;;
6209         *) tval=false;;
6210         esac;;
6211 esac;
6212 eval "$2=$tval"'
6213
6214 : define an is-in-libc? function
6215 inlibc='echo " "; td=$define; tu=$undef;
6216 sym=$1; var=$2; eval "was=\$$2";
6217 tx=yes;
6218 case "$reuseval$was" in
6219 true) ;;
6220 true*) tx=no;;
6221 esac;
6222 case "$tx" in
6223 yes)
6224         set $sym tres -f;
6225         eval $csym;
6226         case "$tres" in
6227         true)
6228                 echo "$sym() found." >&4;
6229                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6230         *)
6231                 echo "$sym() NOT found." >&4;
6232                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6233         esac;;
6234 *)
6235         case "$was" in
6236         $define) echo "$sym() found." >&4;;
6237         *) echo "$sym() NOT found." >&4;;
6238         esac;;
6239 esac'
6240
6241 : see if dlopen exists
6242 xxx_runnm="$runnm"
6243 runnm=false
6244 set dlopen d_dlopen
6245 eval $inlibc
6246 runnm="$xxx_runnm"
6247
6248 : determine which dynamic loading, if any, to compile in
6249 echo " "
6250 dldir="ext/DynaLoader"
6251 case "$usedl" in
6252 $define|y|true)
6253         dflt='y'
6254         usedl="$define"
6255         ;;
6256 $undef|n|false)
6257         dflt='n'
6258         usedl="$undef"
6259         ;;
6260 *) 
6261         dflt='n'
6262         case "$d_dlopen" in
6263             $define) dflt='y' ;;
6264         esac
6265         case "$i_dld" in
6266             $define) dflt='y' ;;
6267         esac
6268         : Does a dl_xxx.xs file exist for this operating system
6269         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6270         ;;
6271 esac
6272 rp="Do you wish to use dynamic loading?"
6273 . ./myread
6274 usedl="$ans"
6275 case "$ans" in
6276 y*) usedl="$define"
6277         case "$dlsrc" in
6278         '')
6279                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6280                         dflt="$dldir/dl_${osname}.xs"
6281                 elif $test "$d_dlopen" = "$define" ; then
6282                         dflt="$dldir/dl_dlopen.xs"
6283                 elif $test "$i_dld" = "$define" ; then
6284                         dflt="$dldir/dl_dld.xs"
6285                 else
6286                         dflt=''
6287                 fi
6288                 ;;
6289         *)      dflt="$dldir/$dlsrc"
6290                 ;;
6291         esac
6292     echo "The following dynamic loading files are available:"
6293         : Can not go over to $dldir because getfile has path hard-coded in.
6294         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6295         rp="Source file to use for dynamic loading"
6296         fn="fne"
6297         gfpth="$src"
6298         . ./getfile
6299         usedl="$define"
6300         : emulate basename
6301         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6302
6303         $cat << EOM
6304
6305 Some systems may require passing special flags to $cc -c to
6306 compile modules that will be used to create a shared library.
6307 To use no flags, say "none".
6308
6309 EOM
6310     case "$cccdlflags" in
6311     '') case "$gccversion" in
6312                 '') case "$osname" in
6313                         hpux)   dflt='+z' ;;
6314                         next)   dflt='none' ;;
6315                         irix*)  dflt='-KPIC' ;;
6316                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6317                         sunos)  dflt='-pic' ;;
6318                         *)      dflt='none' ;;
6319                     esac
6320                         ;;
6321                 *)  case "$osname" in
6322                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6323                         *)      dflt='-fpic' ;;
6324                     esac ;;
6325             esac ;;
6326         ' ') dflt='none' ;;
6327     *)  dflt="$cccdlflags" ;;
6328     esac
6329     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6330     . ./myread
6331     case "$ans" in
6332     none) cccdlflags=' ' ;;
6333     *) cccdlflags="$ans" ;;
6334     esac
6335
6336     cat << EOM
6337
6338 Some systems use ld to create libraries that can be dynamically loaded,
6339 while other systems (such as those using ELF) use $cc.
6340
6341 EOM
6342         case "$ld" in
6343         '')     $cat >try.c <<'EOM'
6344 /* Test for whether ELF binaries are produced */
6345 #include <fcntl.h>
6346 #include <stdlib.h>
6347 int main() {
6348         char b[4];
6349         int i = open("a.out",O_RDONLY);
6350         if(i == -1) 
6351                 exit(1); /* fail */
6352         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6353                 exit(0); /* succeed (yes, it's ELF) */
6354         else
6355                 exit(1); /* fail */
6356 }
6357 EOM
6358                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6359                         cat <<EOM
6360 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6361 EOM
6362                         dflt="$cc"
6363                 else
6364                         echo "I'll use ld to build dynamic libraries."
6365                         dflt='ld'
6366                 fi
6367                 rm -f try.c a.out
6368                 ;;
6369         *)      dflt="$ld"
6370                 ;;
6371         esac
6372
6373     rp="What command should be used to create dynamic libraries?"
6374     . ./myread
6375         ld="$ans"
6376
6377     cat << EOM
6378
6379 Some systems may require passing special flags to $ld to create a
6380 library that can be dynamically loaded.  If your ld flags include
6381 -L/other/path options to locate libraries outside your loader's normal
6382 search path, you may need to specify those -L options here as well.  To
6383 use no flags, say "none".
6384
6385 EOM
6386     case "$lddlflags" in
6387     '') case "$osname" in
6388                         beos) dflt='-nostart' ;;
6389                         hpux) dflt='-b';
6390                               case "$gccversion" in
6391                               '') dflt="$dflt +vnocompatwarnings" ;;
6392                               esac
6393                               ;;        
6394                         linux|irix*)    dflt='-shared' ;;
6395                         next)  dflt='none' ;;
6396                         solaris) dflt='-G' ;;
6397                         sunos) dflt='-assert nodefinitions' ;;
6398                         svr4*|esix*) dflt="-G $ldflags" ;;
6399                 *)     dflt='none' ;;
6400                         esac
6401                         ;;
6402     *) dflt="$lddlflags" ;;
6403     esac
6404
6405         : Try to guess additional flags to pick up local libraries.
6406         : Be careful not to append to a plain 'none'
6407         case "$dflt" in
6408         none) dflt='' ;;
6409         esac
6410         for thisflag in $ldflags; do
6411                 case "$thisflag" in
6412                 -L*)
6413                         case " $dflt " in
6414                         *" $thisflag "*) ;;
6415                         *) dflt="$dflt $thisflag" ;;
6416                         esac
6417                         ;;
6418                 esac
6419         done
6420
6421         case "$dflt" in
6422         ''|' ') dflt='none' ;;
6423         esac
6424
6425     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6426     . ./myread
6427     case "$ans" in
6428     none) lddlflags=' ' ;;
6429     *) lddlflags="$ans" ;;
6430     esac
6431
6432         cat <<EOM
6433
6434 Some systems may require passing special flags to $cc to indicate that
6435 the resulting executable will use dynamic linking.  To use no flags,
6436 say "none".
6437
6438 EOM
6439     case "$ccdlflags" in
6440     '') case "$osname" in
6441                 hpux)   dflt='-Wl,-E' ;;
6442                 linux)  dflt='-rdynamic' ;;
6443                 next)   dflt='none' ;;
6444                 sunos)  dflt='none' ;;
6445                 *)      dflt='none' ;;
6446             esac ;;
6447     ' ')  dflt='none' ;;
6448     *)  dflt="$ccdlflags" ;;
6449     esac
6450     rp="Any special flags to pass to $cc to use dynamic linking?"
6451     . ./myread
6452     case "$ans" in
6453     none) ccdlflags=' ' ;;
6454     *) ccdlflags="$ans" ;;
6455     esac
6456     ;;
6457 *)  usedl="$undef"
6458         ld='ld'
6459     dlsrc='dl_none.xs'
6460     lddlflags=''
6461     ccdlflags=''
6462     ;;
6463 esac
6464
6465 also=''
6466 case "$usedl" in
6467 $undef)
6468         # No dynamic loading being used, so don't bother even to prompt.
6469         useshrplib='false'
6470         ;;
6471 *)      case "$useshrplib" in
6472         '')     case "$osname" in
6473                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6474                         dflt=y
6475                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6476                         ;;
6477                 next*)
6478                         case "$osvers" in
6479                         4*)     dflt=y
6480                                 also='Building a shared libperl is needed for MAB support.'
6481                                 ;;
6482                         *)      dflt=n
6483                                 ;;
6484                         esac
6485                         ;;
6486                 *)      dflt=n
6487                         ;;
6488                 esac
6489                 ;;
6490         $define|true|[Yy]*)
6491                 dflt=y
6492                 ;;
6493         *)      dflt=n
6494                 ;;
6495         esac
6496         $cat << EOM
6497
6498 The perl executable is normally obtained by linking perlmain.c with
6499 libperl${_a}, any static extensions (usually just DynaLoader), and
6500 any other libraries needed on this system (such as -lm, etc.).  Since
6501 your system supports dynamic loading, it is probably possible to build
6502 a shared libperl.$so.  If you will have more than one executable linked
6503 to libperl.$so, this will significantly reduce the size of each
6504 executable, but it may have a noticeable affect on performance.  The
6505 default is probably sensible for your system.
6506 $also
6507
6508 EOM
6509         rp="Build a shared libperl.$so (y/n)"
6510         . ./myread
6511         case "$ans" in
6512         true|$define|[Yy]*)
6513                 useshrplib='true'  ;;
6514         *)      useshrplib='false' ;;
6515         esac
6516         ;;
6517 esac
6518
6519 case "$useshrplib" in
6520 true)
6521         case "$libperl" in
6522         '')
6523                 # Figure out a good name for libperl.so.  Since it gets stored in
6524                 # a version-specific architecture-dependent library, the version
6525                 # number isn't really that important, except for making cc/ld happy.
6526                 #
6527                 # A name such as libperl.so.3.1
6528                 majmin="libperl.$so.$patchlevel.$subversion"
6529                 # A name such as libperl.so.301
6530                 majonly=`echo $patchlevel $subversion |
6531                         $awk '{printf "%d%02d", $1, $2}'`
6532                 majonly=libperl.$so.$majonly
6533                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6534                 # rely on figuring it out from the naming of libc.
6535                 case "${osname}${osvers}" in
6536                 next4*)
6537                         dflt=libperl.5.$so
6538                         # XXX How handle the --version stuff for MAB?
6539                         ;;
6540                 linux*)  # ld won't link with a bare -lperl otherwise.
6541                         dflt=libperl.$so
6542                         ;;
6543                 cygwin*) # include version
6544                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6545                         ;;
6546                 *)      # Try to guess based on whether libc has major.minor.
6547                         case "$libc" in
6548                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6549                         *libc.$so.[0-9]*) dflt=$majonly ;;
6550                         *)      dflt=libperl.$so ;;
6551                         esac
6552                         ;;
6553                 esac
6554                 ;;
6555         *)      dflt=$libperl
6556                 ;;
6557         esac
6558         cat << EOM
6559
6560 I need to select a good name for the shared libperl.  If your system uses
6561 library names with major and minor numbers, then you might want something
6562 like $majmin.  Alternatively, if your system uses a single version
6563 number for shared libraries, then you might want to use $majonly.
6564 Or, your system might be quite happy with a simple libperl.$so.
6565
6566 Since the shared libperl will get installed into a version-specific
6567 architecture-dependent directory, the version number of the shared perl
6568 library probably isn't important, so the default should be o.k.
6569
6570 EOM
6571         rp='What name do you want to give to the shared libperl?'
6572         . ./myread
6573         libperl=$ans
6574         echo "Ok, I'll use $libperl"
6575         ;;
6576 *)
6577         libperl="libperl${_a}"
6578         ;;
6579 esac
6580
6581 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6582 case "$shrpdir" in
6583 '') ;;
6584 *)      $cat >&4 <<EOM
6585 WARNING:  Use of the shrpdir variable for the installation location of
6586 the shared $libperl is not supported.  It was never documented and
6587 will not work in this version.  Let me (perlbug@perl.com)
6588 know of any problems this may cause.
6589
6590 EOM
6591         case "$shrpdir" in
6592         "$archlibexp/CORE")
6593                 $cat >&4 <<EOM
6594 But your current setting of $shrpdir is
6595 the default anyway, so it's harmless.
6596 EOM
6597                 ;;
6598         *)
6599                 $cat >&4 <<EOM
6600 Further, your current attempted setting of $shrpdir
6601 conflicts with the value of $archlibexp/CORE
6602 that installperl will use.
6603 EOM
6604                 ;;
6605         esac
6606         ;;
6607 esac
6608
6609 # How will the perl executable find the installed shared $libperl?
6610 # Add $xxx to ccdlflags.
6611 # If we can't figure out a command-line option, use $shrpenv to
6612 # set env LD_RUN_PATH.  The main perl makefile uses this.
6613 shrpdir=$archlibexp/CORE
6614 xxx=''
6615 tmp_shrpenv=''
6616 if "$useshrplib"; then
6617     case "$osname" in 
6618         aix)
6619                 # We'll set it in Makefile.SH...
6620                 ;;
6621         solaris|netbsd)
6622                 xxx="-R $shrpdir"
6623                 ;;
6624         freebsd)
6625                 xxx="-Wl,-R$shrpdir"
6626                 ;;
6627         linux|irix*|dec_osf)
6628                 xxx="-Wl,-rpath,$shrpdir"
6629                 ;;
6630         next)
6631                 # next doesn't like the default...
6632                 ;;
6633         beos)
6634                 # beos doesn't like the default, either.
6635                 ;;
6636         hpux*)
6637                 # hpux doesn't like the default, either.
6638                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6639                 ;;
6640         *)
6641                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6642                 ;;
6643         esac
6644         case "$xxx" in
6645         '') ;;
6646         *)      
6647                 # Only add $xxx if it isn't already in ccdlflags.
6648                 case " $ccdlflags " in
6649                 *" $xxx "*)     ;;
6650                 *)      ccdlflags="$ccdlflags $xxx"
6651                         cat <<EOM >&4
6652
6653 Adding $xxx to the flags
6654 passed to $ld so that the perl executable will find the 
6655 installed shared $libperl.
6656
6657 EOM
6658                         ;;
6659                 esac
6660                 ;;
6661         esac
6662 fi
6663 # Fix ccdlflags in AIX for building external extensions.
6664 # (For building Perl itself bare -bE:perl.exp is needed,
6665 #  Makefile.SH takes care of this.)
6666 case "$osname" in
6667 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6668 esac
6669 # Respect a hint or command-line value.
6670 case "$shrpenv" in
6671 '') shrpenv="$tmp_shrpenv" ;;
6672 esac
6673 case "$ldlibpthname" in
6674 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6675 none)   ldlibpthname='' ;;
6676 esac
6677
6678 : determine where manual pages go
6679 set man1dir man1dir none
6680 eval $prefixit
6681 $cat <<EOM
6682
6683 $spackage has manual pages available in source form.
6684 EOM
6685 case "$nroff" in
6686 nroff)
6687         echo "However, you don't have nroff, so they're probably useless to you."
6688         case "$man1dir" in
6689         '') man1dir="none";;
6690         esac;;
6691 esac
6692 echo "If you don't want the manual sources installed, answer 'none'."
6693 case "$man1dir" in
6694 ' ') dflt=none
6695         ;;
6696 '')
6697         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6698         lookpath="$lookpath $prefixexp/man/p_man/man1"
6699         lookpath="$lookpath $prefixexp/man/u_man/man1"
6700         lookpath="$lookpath $prefixexp/man/man.1"
6701         case "$sysman" in
6702         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6703         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6704         esac
6705         set dflt
6706         eval $prefixup
6707         ;;
6708 *)  dflt="$man1dir"
6709         ;;
6710 esac
6711 echo " "
6712 fn=dn+~
6713 rp="Where do the main $spackage manual pages (source) go?"
6714 . ./getfile
6715 if $test "X$man1direxp" != "X$ansexp"; then
6716         installman1dir=''
6717 fi
6718 man1dir="$ans"
6719 man1direxp="$ansexp"
6720 case "$man1dir" in
6721 '')     man1dir=' '
6722         installman1dir='';;
6723 esac
6724
6725 : Change installation prefix, if necessary.
6726 if $test X"$prefix" != X"$installprefix"; then
6727         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6728 else
6729         installman1dir="$man1direxp"
6730 fi
6731
6732 : What suffix to use on installed man pages
6733
6734 case "$man1dir" in
6735 ' ')
6736         man1ext='0'
6737         ;;
6738 *)
6739         rp="What suffix should be used for the main $spackage man pages?"
6740         case "$man1ext" in
6741         '')     case "$man1dir" in
6742                 *1)  dflt=1 ;;
6743                 *1p) dflt=1p ;;
6744                 *1pm) dflt=1pm ;;
6745                 *l) dflt=l;;
6746                 *n) dflt=n;;
6747                 *o) dflt=o;;
6748                 *p) dflt=p;;
6749                 *C) dflt=C;;
6750                 *L) dflt=L;;
6751                 *L1) dflt=L1;;
6752                 *) dflt=1;;
6753                 esac
6754                 ;;
6755         *)      dflt="$man1ext";;
6756         esac
6757         . ./myread
6758         man1ext="$ans"
6759         ;;
6760 esac
6761
6762 : see if we can have long filenames
6763 echo " "
6764 first=123456789abcdef
6765 $rm -f $first
6766 if (echo hi >$first) 2>/dev/null; then
6767         if $test -f 123456789abcde; then
6768                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6769                 val="$undef"
6770         else
6771                 echo 'You can have filenames longer than 14 characters.'>&4
6772                 val="$define"
6773         fi
6774 else
6775         $cat <<'EOM'
6776 You can't have filenames longer than 14 chars.
6777 You can't even think about them!
6778 EOM
6779         val="$undef"
6780 fi 
6781 set d_flexfnam
6782 eval $setvar
6783 $rm -rf 123456789abcde*
6784
6785 : determine where library module manual pages go
6786 set man3dir man3dir none
6787 eval $prefixit
6788 $cat <<EOM
6789
6790 $spackage has manual pages for many of the library modules.
6791 EOM
6792
6793 case "$nroff" in
6794 nroff)
6795         $cat <<'EOM'
6796 However, you don't have nroff, so they're probably useless to you.
6797 EOM
6798         case "$man3dir" in
6799         '') man3dir="none";;
6800         esac;;
6801 esac
6802
6803 case "$d_flexfnam" in
6804 undef)
6805         $cat <<'EOM'
6806 However, your system can't handle the long file names like File::Basename.3. 
6807 EOM
6808         case "$man3dir" in
6809         '') man3dir="none";;
6810         esac;;
6811 esac
6812
6813 echo "If you don't want the manual sources installed, answer 'none'."
6814 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6815 case "$man3dir" in
6816 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6817         if $test -d "$privlib/man/man3"; then
6818                 cat <<EOM >&4
6819
6820 WARNING:  Previous versions of perl installed man3 pages into
6821 $privlib/man/man3.  This version will suggest a 
6822 new default of $dflt.  
6823 EOM
6824                 tdflt=$dflt
6825                 dflt='n'
6826                 rp='Do you wish to preserve the old behavior?(y/n)'
6827                 . ./myread
6828                 case "$ans" in
6829                 y*) dflt="$privlib/man/man3" ;;
6830                 *)  dflt=$tdflt ;;
6831                 esac
6832     fi
6833         ;;
6834 *)      dflt="$man3dir" ;;
6835 esac
6836 case "$dflt" in
6837 ' ') dflt=none ;;
6838 esac
6839 echo " "
6840 fn=dn+~
6841 rp="Where do the $package library man pages (source) go?"
6842 . ./getfile
6843 man3dir="$ans"
6844 man3direxp="$ansexp"
6845 case "$man3dir" in
6846 '')     man3dir=' '
6847         installman3dir='';;
6848 esac
6849
6850 : Change installation prefix, if necessary.
6851 if $test X"$prefix" != X"$installprefix"; then
6852         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6853 else
6854         installman3dir="$man3direxp"
6855 fi
6856
6857 : What suffix to use on installed man pages
6858 case "$man3dir" in
6859 ' ')
6860         man3ext='0'
6861         ;;
6862 *)
6863         rp="What suffix should be used for the $package library man pages?"
6864         case "$man3ext" in
6865         '')     case "$man3dir" in
6866                 *3)  dflt=3 ;;
6867                 *3p) dflt=3p ;;
6868                 *3pm) dflt=3pm ;;
6869                 *l) dflt=l;;
6870                 *n) dflt=n;;
6871                 *o) dflt=o;;
6872                 *p) dflt=p;;
6873                 *C) dflt=C;;
6874                 *L) dflt=L;;
6875                 *L3) dflt=L3;;
6876                 *) dflt=3;;
6877                 esac
6878                 ;;
6879         *)      dflt="$man3ext";;
6880         esac
6881         . ./myread
6882         man3ext="$ans"
6883         ;;
6884 esac
6885
6886 : see if we have to deal with yellow pages, now NIS.
6887 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6888         if $test -f /usr/etc/nibindd; then
6889                 echo " "
6890                 echo "I'm fairly confident you're on a NeXT."
6891                 echo " "
6892                 rp='Do you get the hosts file via NetInfo?'
6893                 dflt=y
6894                 case "$hostcat" in
6895                 nidump*) ;;
6896                 '') ;;
6897                 *) dflt=n;;
6898                 esac
6899                 . ./myread
6900                 case "$ans" in
6901                 y*) hostcat='nidump hosts .';;
6902                 *)      case "$hostcat" in
6903                         nidump*) hostcat='';;
6904                         esac
6905                         ;;
6906                 esac
6907         fi
6908         case "$hostcat" in
6909         nidump*) ;;
6910         *)
6911                 case "$hostcat" in
6912                 *ypcat*) dflt=y;;
6913                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6914                                 dflt=y
6915                         else
6916                                 dflt=n
6917                         fi;;
6918                 *) dflt=n;;
6919                 esac
6920                 echo " "
6921                 rp='Are you getting the hosts file via yellow pages?'
6922                 . ./myread
6923                 case "$ans" in
6924                 y*) hostcat='ypcat hosts';;
6925                 *) hostcat='cat /etc/hosts';;
6926                 esac
6927                 ;;
6928         esac
6929 fi
6930 case "$hostcat" in
6931 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6932 esac
6933 case "$groupcat" in
6934 '') test -f /etc/group && groupcat='cat /etc/group';;
6935 esac
6936 case "$passcat" in
6937 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6938 esac
6939
6940 : now get the host name
6941 echo " "
6942 echo "Figuring out host name..." >&4
6943 case "$myhostname" in
6944 '') cont=true
6945         echo 'Maybe "hostname" will work...'
6946         if tans=`sh -c hostname 2>&1` ; then
6947                 myhostname=$tans
6948                 phostname=hostname
6949                 cont=''
6950         fi
6951         ;;
6952 *) cont='';;
6953 esac
6954 if $test "$cont"; then
6955         if ./xenix; then
6956                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6957                 if tans=`cat /etc/systemid 2>&1` ; then
6958                         myhostname=$tans
6959                         phostname='cat /etc/systemid'
6960                         echo "Whadyaknow.  Xenix always was a bit strange..."
6961                         cont=''
6962                 fi
6963         elif $test -r /etc/systemid; then
6964                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6965         fi
6966 fi
6967 if $test "$cont"; then
6968         echo 'No, maybe "uuname -l" will work...'
6969         if tans=`sh -c 'uuname -l' 2>&1` ; then
6970                 myhostname=$tans
6971                 phostname='uuname -l'
6972         else
6973                 echo 'Strange.  Maybe "uname -n" will work...'
6974                 if tans=`sh -c 'uname -n' 2>&1` ; then
6975                         myhostname=$tans
6976                         phostname='uname -n'
6977                 else
6978                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6979                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6980                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6981                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6982                         else
6983                                 case "$myhostname" in
6984                                 '') echo "Does this machine have an identity crisis or something?"
6985                                         phostname='';;
6986                                 *)
6987                                         echo "Well, you said $myhostname before..."
6988                                         phostname='echo $myhostname';;
6989                                 esac
6990                         fi
6991                 fi
6992         fi
6993 fi
6994 : you do not want to know about this
6995 set $myhostname
6996 myhostname=$1
6997
6998 : verify guess
6999 if $test "$myhostname" ; then
7000         dflt=y
7001         rp='Your host name appears to be "'$myhostname'".'" Right?"
7002         . ./myread
7003         case "$ans" in
7004         y*) ;;
7005         *) myhostname='';;
7006         esac
7007 fi
7008
7009 : bad guess or no guess
7010 while $test "X$myhostname" = X ; do
7011         dflt=''
7012         rp="Please type the (one word) name of your host:"
7013         . ./myread
7014         myhostname="$ans"
7015 done
7016
7017 : translate upper to lower if necessary
7018 case "$myhostname" in
7019 *[A-Z]*)
7020         echo "(Normalizing case in your host name)"
7021         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7022         ;;
7023 esac
7024
7025 case "$myhostname" in
7026 *.*)
7027         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7028         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7029         echo "(Trimming domain name from host name--host name is now $myhostname)"
7030         ;;
7031 *) case "$mydomain" in
7032         '')
7033                 {
7034                         test "X$hostcat" = "Xypcat hosts" &&
7035                         ypmatch "$myhostname" hosts 2>/dev/null |\
7036                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7037                         $test -s hosts
7038                 } || {
7039                         test "X$hostcat" != "X" &&
7040                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7041                                         /[       ]$myhostname[  . ]/p" > hosts
7042                 }
7043                 tmp_re="[       . ]"
7044                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7045                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7046                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7047                         hosts | $sort | $uniq | \
7048                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7049                 case `$echo X$dflt` in
7050                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
7051                         dflt=.
7052                         ;;
7053                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7054                         ;;
7055                 esac
7056                 case "$dflt" in
7057                 .)
7058                         tans=`./loc resolv.conf X /etc /usr/etc`
7059                         if $test -f "$tans"; then
7060                                 echo "(Attempting domain name extraction from $tans)"
7061                                 dflt=.`$sed -n -e 's/   / /g' \
7062                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7063                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7064                                 case "$dflt" in
7065                                 .) dflt=.`$sed -n -e 's/        / /g' \
7066                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7067                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7068                                         ;;
7069                                 esac
7070                         fi
7071                         ;;
7072                 esac
7073                 case "$dflt" in
7074                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7075                         dflt=.`sh -c domainname 2>/dev/null`
7076                         case "$dflt" in
7077                         '') dflt='.';;
7078                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7079                         esac
7080                         ;;
7081                 esac
7082                 case "$dflt" in
7083                 .) echo "(Lost all hope -- silly guess then)"
7084                         dflt='.uucp'
7085                         ;;
7086                 esac
7087                 $rm -f hosts
7088                 ;;
7089         *) dflt="$mydomain";;
7090         esac;;
7091 esac
7092 echo " "
7093 rp="What is your domain name?"
7094 . ./myread
7095 tans="$ans"
7096 case "$ans" in
7097 '') ;;
7098 .*) ;;
7099 *) tans=".$tans";;
7100 esac
7101 mydomain="$tans"
7102
7103 : translate upper to lower if necessary
7104 case "$mydomain" in
7105 *[A-Z]*)
7106         echo "(Normalizing case in your domain name)"
7107         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7108         ;;
7109 esac
7110
7111 : a little sanity check here
7112 case "$phostname" in
7113 '') ;;
7114 *)
7115         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7116         $myhostname$mydomain|$myhostname) ;;
7117         *)
7118                 case "$phostname" in
7119                 sed*)
7120                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7121                         ;;
7122                 *)
7123                         echo "(That doesn't agree with your $phostname command, by the way.)"
7124                         ;;
7125                 esac
7126         ;;
7127         esac
7128         ;;
7129 esac
7130
7131 $cat <<EOM
7132
7133 I need to get your e-mail address in Internet format if possible, i.e.
7134 something like user@host.domain. Please answer accurately since I have
7135 no easy means to double check it. The default value provided below
7136 is most probably close to reality but may not be valid from outside
7137 your organization...
7138
7139 EOM
7140 cont=x
7141 while test "$cont"; do
7142         case "$cf_email" in
7143         '') dflt="$cf_by@$myhostname$mydomain";;
7144         *) dflt="$cf_email";;
7145         esac
7146         rp='What is your e-mail address?'
7147         . ./myread
7148         cf_email="$ans"
7149         case "$cf_email" in
7150         *@*.*) cont='' ;;
7151         *)
7152                 rp='Address does not look like an Internet one.  Use it anyway?'
7153                 case "$fastread" in
7154                 yes) dflt=y ;;
7155                 *) dflt=n ;;
7156                 esac
7157                 . ./myread
7158                 case "$ans" in
7159                 y*) cont='' ;;
7160                 *) echo " " ;;
7161                 esac
7162                 ;;
7163         esac
7164 done
7165
7166 $cat <<EOM
7167
7168 If you or somebody else will be maintaining perl at your site, please
7169 fill in the correct e-mail address here so that they may be contacted
7170 if necessary. Currently, the "perlbug" program included with perl
7171 will send mail to this address in addition to perlbug@perl.com. You may
7172 enter "none" for no administrator.
7173
7174 EOM
7175 case "$perladmin" in
7176 '') dflt="$cf_email";;
7177 *) dflt="$perladmin";;
7178 esac
7179 rp='Perl administrator e-mail address'
7180 . ./myread
7181 perladmin="$ans"
7182
7183 : figure out how to guarantee perl startup
7184 case "$startperl" in
7185 '')
7186         case "$sharpbang" in
7187         *!)
7188                 $cat <<EOH
7189
7190 I can use the #! construct to start perl on your system. This will
7191 make startup of perl scripts faster, but may cause problems if you
7192 want to share those scripts and perl is not in a standard place
7193 ($binexp/perl) on all your platforms. The alternative is to force
7194 a shell by starting the script with a single ':' character.
7195
7196 EOH
7197                 dflt="$binexp/perl"
7198                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7199                 . ./myread
7200                 case "$ans" in
7201                 none)   startperl=": # use perl";;
7202                 *)      startperl="#!$ans"
7203                         if $test 30 -lt `echo "$ans" | wc -c`; then
7204                                 $cat >&4 <<EOM
7205
7206 WARNING:  Some systems limit the #! command to 32 characters.
7207 If you experience difficulty running Perl scripts with #!, try
7208 installing Perl in a directory with a shorter pathname.
7209
7210 EOM
7211                         fi ;;
7212                 esac
7213                 ;;
7214         *) startperl=": # use perl"
7215                 ;;
7216         esac
7217         ;;
7218 esac
7219 echo "I'll use $startperl to start perl scripts."
7220
7221 : figure best path for perl in scripts
7222 case "$perlpath" in
7223 '')
7224         perlpath="$binexp/perl"
7225         case "$startperl" in
7226         *!*) ;;
7227         *)
7228                 $cat <<EOH
7229
7230 I will use the "eval 'exec'" idiom to start Perl on your system.
7231 I can use the full path of your Perl binary for this purpose, but
7232 doing so may cause problems if you want to share those scripts and
7233 Perl is not always in a standard place ($binexp/perl).
7234
7235 EOH
7236                 dflt="$binexp/perl"
7237                 rp="What path shall I use in \"eval 'exec'\"?"
7238                 . ./myread
7239                 perlpath="$ans"
7240                 ;;
7241         esac
7242         ;;
7243 esac
7244 case "$startperl" in
7245 *!*)    ;;
7246 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7247 esac
7248
7249 : determine where public executable scripts go
7250 set scriptdir scriptdir
7251 eval $prefixit
7252 case "$scriptdir" in
7253 '')
7254         dflt="$bin"
7255         : guess some guesses
7256         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7257         $test -d /usr/share/bin     && dflt=/usr/share/bin
7258         $test -d /usr/local/script  && dflt=/usr/local/script
7259         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7260         $test -d $prefixexp/script  && dflt=$prefixexp/script
7261         set dflt
7262         eval $prefixup
7263         ;;
7264 *)  dflt="$scriptdir"
7265         ;;
7266 esac
7267 $cat <<EOM
7268  
7269 Some installations have a separate directory just for executable scripts so
7270 that they can mount it across multiple architectures but keep the scripts in
7271 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7272 Or you might just lump your scripts in with all your other executables.
7273  
7274 EOM
7275 fn=d~
7276 rp='Where do you keep publicly executable scripts?'
7277 . ./getfile
7278 if $test "X$ansexp" != "X$scriptdirexp"; then
7279         installscript=''
7280 fi
7281 scriptdir="$ans"
7282 scriptdirexp="$ansexp"
7283 : Change installation prefix, if necessary.
7284 if $test X"$prefix" != X"$installprefix"; then
7285         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7286 else
7287         installscript="$scriptdirexp"
7288 fi
7289
7290 : determine where add-on public executables go
7291 case "$sitebin" in
7292 '')     dflt=$siteprefix/bin ;;
7293 *)      dflt=$sitebin ;;
7294 esac
7295 fn=d~
7296 rp='Pathname where the add-on public executables should be installed?'
7297 . ./getfile
7298 sitebin="$ans"
7299 sitebinexp="$ansexp"
7300 : Change installation prefix, if necessary.
7301 if $test X"$prefix" != X"$installprefix"; then
7302         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7303 else
7304         installsitebin="$sitebinexp"
7305 fi
7306
7307 : see if sqrtl exists
7308 set sqrtl d_sqrtl
7309 eval $inlibc
7310
7311 case "$ccflags" in
7312 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7313 esac
7314
7315 case "$uselongdouble" in
7316 $define|true|[yY]*)     dflt='y';;
7317 *) dflt='n';;
7318 esac
7319 cat <<EOM
7320
7321 Perl can be built to take advantage of long doubles which
7322 (if available) may give more accuracy and range for floating point numbers.
7323
7324 If this doesn't make any sense to you, just accept the default '$dflt'.
7325 EOM
7326 rp='Try to use long doubles if available?'
7327 . ./myread
7328 case "$ans" in
7329 y|Y)    val="$define"   ;;
7330 *)      val="$undef"    ;;
7331 esac
7332 set uselongdouble
7333 eval $setvar
7334
7335 case "$uselongdouble" in
7336 true|[yY]*) uselongdouble="$define" ;;
7337 esac
7338
7339 case "$uselongdouble" in
7340 $define)
7341 : Look for a hint-file generated 'call-back-unit'.  If the
7342 : user has specified that long doubles should be used,
7343 : we may need to set or change some other defaults.
7344         if $test -f uselongdouble.cbu; then
7345                 echo "Your platform has some specific hints for long doubles, using them..."
7346                 . ./uselongdouble.cbu
7347         else
7348                 $cat <<EOM
7349 (Your platform doesn't have any specific hints for long doubles.)
7350 EOM
7351         fi
7352         ;;
7353 esac
7354
7355 case "$uselongdouble:$d_sqrtl" in
7356 $define:$undef)
7357                 $cat <<EOM >&4
7358
7359 *** You requested the use of long doubles but you do not seem to have
7360 *** the mathematic functions for long doubles.  I'm disabling the use
7361 *** of long doubles.
7362
7363 EOM
7364         uselongdouble=$undef
7365         ;;
7366 esac
7367
7368 case "$useperlio" in
7369 $define|true|[yY]*)     dflt='y';;
7370 *) dflt='n';;
7371 esac
7372 cat <<EOM
7373
7374 Previous version of $package used the standard IO mechanisms as defined
7375 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7376 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7377 the default.  This abstraction layer can use AT&T's sfio (if you already
7378 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7379 problems with some extension modules.  Using PerlIO with stdio is safe,
7380 but it is slower than plain stdio and therefore is not the default.
7381
7382 If this doesn't make any sense to you, just accept the default '$dflt'.
7383 EOM
7384 rp='Use the experimental PerlIO abstraction layer?'
7385 . ./myread
7386 case "$ans" in
7387 y|Y) 
7388         val="$define"
7389         ;;     
7390 *)      
7391         echo "Ok, doing things the stdio way"
7392         val="$undef"
7393         ;;
7394 esac
7395 set useperlio
7396 eval $setvar 
7397
7398 case "$vendorprefix" in
7399 '')     d_vendorbin="$undef"
7400         vendorbin=''
7401         vendorbinexp=''
7402         ;;
7403 *)      d_vendorbin="$define"
7404         : determine where vendor-supplied executables go.
7405         case "$vendorbin" in
7406         '') dflt=$vendorprefix/bin ;;
7407         *)      dflt="$vendorbin" ;;
7408         esac
7409         fn=d~+
7410         rp='Pathname for the vendor-supplied executables directory?'
7411         . ./getfile
7412         vendorbin="$ans"
7413         vendorbinexp="$ansexp"
7414         ;;
7415 esac
7416 : Change installation prefix, if necessary.
7417 if $test X"$prefix" != X"$installprefix"; then
7418         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7419 else
7420         installvendorbin="$vendorbinexp"
7421 fi
7422
7423 : see if qgcvt exists
7424 set qgcvt d_qgcvt
7425 eval $inlibc
7426
7427 : check for length of double
7428 echo " "
7429 case "$doublesize" in
7430 '')
7431         echo "Checking to see how big your double precision numbers are..." >&4
7432         $cat >try.c <<'EOCP'
7433 #include <stdio.h>
7434 int main()
7435 {
7436     printf("%d\n", (int)sizeof(double));
7437     exit(0);
7438 }
7439 EOCP
7440         set try
7441         if eval $compile_ok; then
7442                 doublesize=`./try`
7443                 echo "Your double is $doublesize bytes long."
7444         else
7445                 dflt='8'
7446                 echo "(I can't seem to compile the test program.  Guessing...)"
7447                 rp="What is the size of a double precision number (in bytes)?"
7448                 . ./myread
7449                 doublesize="$ans"
7450         fi
7451         ;;
7452 esac
7453 $rm -f try.c try
7454
7455 : check for long doubles
7456 echo " "
7457 echo "Checking to see if you have long double..." >&4
7458 echo 'int main() { long double x = 7.0; }' > try.c
7459 set try
7460 if eval $compile; then
7461         val="$define"
7462         echo "You have long double."
7463 else
7464         val="$undef"
7465         echo "You do not have long double."
7466 fi
7467 $rm try.*
7468 set d_longdbl
7469 eval $setvar
7470
7471 : check for length of long double
7472 case "${d_longdbl}${longdblsize}" in
7473 $define)
7474         echo " "
7475         echo "Checking to see how big your long doubles are..." >&4
7476         $cat >try.c <<'EOCP'
7477 #include <stdio.h>
7478 int main()
7479 {
7480         printf("%d\n", sizeof(long double));
7481 }
7482 EOCP
7483         set try
7484         set try
7485         if eval $compile; then
7486                 longdblsize=`./try$exe_ext`
7487                 echo "Your long doubles are $longdblsize bytes long."
7488         else
7489                 dflt='8'
7490                 echo " "
7491                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7492                 rp="What is the size of a long double (in bytes)?"
7493                 . ./myread
7494                 longdblsize="$ans"
7495         fi
7496         if $test "X$doublesize" = "X$longdblsize"; then
7497                 echo "(That isn't any different from an ordinary double.)"
7498         fi      
7499         ;;
7500 esac
7501 $rm -f try.* try
7502
7503 echo " "
7504
7505 if $test X"$d_longdbl" = X"$define"; then
7506
7507 echo "Checking how to print long doubles..." >&4
7508
7509 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7510         $cat >try.c <<'EOCP'
7511 #include <sys/types.h>
7512 #include <stdio.h>
7513 int main() {
7514   double d = 123.456;
7515   printf("%.3f\n", d);
7516 }
7517 EOCP
7518         set try
7519         if eval $compile; then
7520                 yyy=`./try$exe_ext`
7521                 case "$yyy" in
7522                 123.456)
7523                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7524                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7525                         echo "We will use %f."
7526                         ;;
7527                 esac
7528         fi
7529 fi
7530
7531 if $test X"$sPRIfldbl" = X; then
7532         $cat >try.c <<'EOCP'
7533 #include <sys/types.h>
7534 #include <stdio.h>
7535 int main() {
7536   long double d = 123.456;
7537   printf("%.3llf\n", d);
7538 }
7539 EOCP
7540         set try
7541         if eval $compile; then
7542                 yyy=`./try$exe_ext`
7543                 case "$yyy" in
7544                 123.456)
7545                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7546                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7547                         echo "We will use %llf."
7548                         ;;
7549                 esac
7550         fi
7551 fi
7552
7553 if $test X"$sPRIfldbl" = X; then
7554         $cat >try.c <<'EOCP'
7555 #include <sys/types.h>
7556 #include <stdio.h>
7557 int main() {
7558   long double d = 123.456;
7559   printf("%.3Lf\n", d);
7560 }
7561 EOCP
7562         set try
7563         if eval $compile; then
7564                 yyy=`./try$exe_ext`
7565                 case "$yyy" in
7566                 123.456)
7567                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7568                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7569                         echo "We will use %Lf."
7570                         ;;
7571                 esac
7572         fi
7573 fi
7574
7575 if $test X"$sPRIfldbl" = X; then
7576         $cat >try.c <<'EOCP'
7577 #include <sys/types.h>
7578 #include <stdio.h>
7579 int main() {
7580   long double d = 123.456;
7581   printf("%.3lf\n", d);
7582 }
7583 EOCP
7584         set try
7585         if eval $compile; then
7586                 yyy=`./try$exe_ext`
7587                 case "$yyy" in
7588                 123.456)
7589                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7590                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7591                         echo "We will use %lf."
7592                         ;;
7593                 esac
7594         fi
7595 fi
7596
7597 if $test X"$sPRIfldbl" = X; then
7598         echo "Cannot figure out how to print long doubles." >&4
7599 fi
7600
7601 $rm -f try try.*
7602
7603 fi # d_longdbl
7604
7605 case "$sPRIfldbl" in
7606 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7607         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7608         ;;
7609 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7610         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7611         ;;
7612 esac
7613
7614 : Check how to convert floats to strings.
7615 if test "X$d_Gconvert" = X; then
7616         echo " "
7617         echo "Checking for an efficient way to convert floats to strings."
7618         echo " " > try.c
7619         case "$uselongdouble" in
7620         "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7621         esac
7622         case "$d_longdbl" in
7623         "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7624         esac
7625         case "$d_PRIgldbl" in
7626         "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7627         esac
7628         $cat >>try.c <<EOP
7629 #ifdef TRY_gconvert
7630 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7631 char *myname = "gconvert";
7632 #endif
7633 #ifdef TRY_gcvt
7634 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7635 char *myname = "gcvt";
7636 #endif
7637 #ifdef TRY_qgcvt
7638 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7639 char *myname = "qgcvt";
7640 #define DOUBLETYPE long double
7641 #endif
7642 #ifdef TRY_sprintf
7643 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7644 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7645 #else
7646 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7647 #endif
7648 char *myname = "sprintf";
7649 #endif
7650
7651 #ifndef DOUBLETYPE
7652 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7653 #define DOUBLETYPE long double
7654 #else
7655 #define DOUBLETYPE double
7656 #endif
7657 #endif
7658
7659 #include <stdio.h>
7660
7661 #define I_STDLIB $i_stdlib
7662 #ifdef I_STDLIB
7663 #include <stdlib.h>
7664 #endif
7665
7666 int
7667 checkit(expect, got)
7668 char *expect;
7669 char *got;
7670 {
7671     if (strcmp(expect, got)) {
7672                 printf("%s oddity:  Expected %s, got %s\n",
7673                         myname, expect, got);
7674                 exit(1);
7675         }
7676 }
7677
7678 int main()
7679
7680         char buf[64]; 
7681         buf[63] = '\0';
7682
7683         /* This must be 1st test on (which?) platform */
7684         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7685         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7686         checkit("0.1", buf);
7687
7688         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7689         checkit("1", buf);
7690
7691         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7692         checkit("1.1", buf);
7693
7694         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7695         checkit("1.01", buf);
7696
7697         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7698         checkit("1.001", buf);
7699
7700         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7701         checkit("1.0001", buf);
7702
7703         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7704         checkit("1.00001", buf);
7705
7706         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7707         checkit("1.000001", buf);
7708
7709         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7710         checkit("0", buf);
7711
7712         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7713         checkit("-1", buf);
7714
7715         /* Some Linux gcvt's give 1.e+5 here. */
7716         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7717         checkit("100000", buf);
7718         
7719         /* Some Linux gcvt's give -1.e+5 here. */
7720         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7721         checkit("-100000", buf);
7722
7723         exit(0);
7724 }
7725 EOP
7726         case "$d_Gconvert" in
7727         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7728         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7729         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7730         *) xxx_list='gconvert gcvt sprintf' ;;
7731         esac
7732
7733         case "$d_longdbl$uselongdouble$d_qgcvt" in
7734         "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7735         esac
7736
7737         for xxx_convert in $xxx_list; do
7738                 echo "Trying $xxx_convert..."
7739                 $rm -f try try$_o
7740                 set try -DTRY_$xxx_convert
7741                 if eval $compile; then
7742                         echo "$xxx_convert() found." >&4
7743                         if ./try; then
7744                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7745                                 break;
7746                         else
7747                                 echo "...But $xxx_convert didn't work as I expected."
7748                         fi
7749                 else
7750                         echo "$xxx_convert NOT found." >&4
7751                 fi
7752         done
7753                 
7754         case "$xxx_convert" in
7755         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7756         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7757         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7758         *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7759            "$define$define$define")
7760               d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7761            *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7762            esac
7763            ;;  
7764         esac
7765 fi
7766
7767 : Initialize h_fcntl
7768 h_fcntl=false
7769
7770 : Initialize h_sysfile
7771 h_sysfile=false
7772
7773 : access call always available on UNIX
7774 set access d_access
7775 eval $inlibc
7776
7777 : locate the flags for 'access()'
7778 case "$d_access" in
7779 "$define")
7780         echo " "
7781         $cat >access.c <<'EOCP'
7782 #include <sys/types.h>
7783 #ifdef I_FCNTL
7784 #include <fcntl.h>
7785 #endif
7786 #ifdef I_SYS_FILE
7787 #include <sys/file.h>
7788 #endif
7789 #ifdef I_UNISTD
7790 #include <unistd.h>
7791 #endif
7792 int main() {
7793         exit(R_OK);
7794 }
7795 EOCP
7796         : check sys/file.h first, no particular reason here
7797         if $test `./findhdr sys/file.h` && \
7798                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7799                 h_sysfile=true;
7800                 echo "<sys/file.h> defines the *_OK access constants." >&4
7801         elif $test `./findhdr fcntl.h` && \
7802                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7803                 h_fcntl=true;
7804                 echo "<fcntl.h> defines the *_OK access constants." >&4
7805         elif $test `./findhdr unistd.h` && \
7806                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7807                 echo "<unistd.h> defines the *_OK access constants." >&4
7808         else
7809                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7810         fi
7811         ;;
7812 esac
7813 $rm -f access*
7814
7815 : see if accessx exists
7816 set accessx d_accessx
7817 eval $inlibc
7818
7819 : see if alarm exists
7820 set alarm d_alarm
7821 eval $inlibc
7822
7823 : see if atolf exists
7824 set atolf d_atolf
7825 eval $inlibc
7826
7827 : see if atoll exists
7828 set atoll d_atoll
7829 eval $inlibc
7830
7831 : Look for GNU-cc style attribute checking
7832 echo " "
7833 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7834 $cat >attrib.c <<'EOCP'
7835 #include <stdio.h>
7836 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7837 EOCP
7838 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7839         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7840                 echo "Your C compiler doesn't fully support __attribute__."
7841                 val="$undef"
7842         else
7843                 echo "Your C compiler supports __attribute__."
7844                 val="$define"
7845         fi
7846 else
7847         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7848         val="$undef"
7849 fi
7850 set d_attribut
7851 eval $setvar
7852 $rm -f attrib*
7853
7854 : see if bcmp exists
7855 set bcmp d_bcmp
7856 eval $inlibc
7857
7858 : see if bcopy exists
7859 set bcopy d_bcopy
7860 eval $inlibc
7861
7862 : see if this is a unistd.h system
7863 set unistd.h i_unistd
7864 eval $inhdr
7865
7866 : see if getpgrp exists
7867 set getpgrp d_getpgrp
7868 eval $inlibc
7869
7870 case "$d_getpgrp" in
7871 "$define")
7872         echo " "
7873         echo "Checking to see which flavor of getpgrp is in use..."
7874         $cat >set.c <<EOP
7875 #$i_unistd I_UNISTD
7876 #include <sys/types.h>
7877 #ifdef I_UNISTD
7878 #  include <unistd.h>
7879 #endif
7880 int main()
7881 {
7882         if (getuid() == 0) {
7883                 printf("(I see you are running Configure as super-user...)\n");
7884                 setuid(1);
7885         }
7886 #ifdef TRY_BSD_PGRP
7887         if (getpgrp(1) == 0)
7888                 exit(0);
7889 #else
7890         if (getpgrp() > 0)
7891                 exit(0);
7892 #endif
7893         exit(1);
7894 }
7895 EOP
7896         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7897                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7898                 val="$define"
7899         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7900                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7901                 val="$undef"
7902         else
7903                 echo "I can't seem to compile and run the test program."
7904                 if ./usg; then
7905                         xxx="a USG one, i.e. you use getpgrp()."
7906                 else
7907                         # SVR4 systems can appear rather BSD-ish.
7908                         case "$i_unistd" in
7909                         $undef)
7910                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7911                                 val="$define"
7912                                 ;;
7913                         $define)
7914                                 xxx="probably a USG one, i.e. you use getpgrp()."
7915                                 val="$undef"
7916                                 ;;
7917                         esac
7918                 fi
7919                 echo "Assuming your getpgrp is $xxx" >&4
7920         fi
7921         ;;
7922 *) val="$undef";;
7923 esac
7924 set d_bsdgetpgrp
7925 eval $setvar
7926 $rm -f set set.c
7927
7928 : see if setpgrp exists
7929 set setpgrp d_setpgrp
7930 eval $inlibc
7931
7932 case "$d_setpgrp" in
7933 "$define")
7934         echo " "
7935         echo "Checking to see which flavor of setpgrp is in use..."
7936         $cat >set.c <<EOP
7937 #$i_unistd I_UNISTD
7938 #include <sys/types.h>
7939 #ifdef I_UNISTD
7940 #  include <unistd.h>
7941 #endif
7942 int main()
7943 {
7944         if (getuid() == 0) {
7945                 printf("(I see you are running Configure as super-user...)\n");
7946                 setuid(1);
7947         }
7948 #ifdef TRY_BSD_PGRP
7949         if (-1 == setpgrp(1, 1))
7950                 exit(0);
7951 #else
7952         if (setpgrp() != -1)
7953                 exit(0);
7954 #endif
7955         exit(1);
7956 }
7957 EOP
7958         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7959                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7960                 val="$define"
7961         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7962                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7963                 val="$undef"
7964         else
7965                 echo "(I can't seem to compile and run the test program.)"
7966                 if ./usg; then
7967                         xxx="a USG one, i.e. you use setpgrp()."
7968                 else
7969                         # SVR4 systems can appear rather BSD-ish.
7970                         case "$i_unistd" in
7971                         $undef)
7972                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7973                                 val="$define"
7974                                 ;;
7975                         $define)
7976                                 xxx="probably a USG one, i.e. you use setpgrp()."
7977                                 val="$undef"
7978                                 ;;
7979                         esac
7980                 fi
7981                 echo "Assuming your setpgrp is $xxx" >&4
7982         fi
7983         ;;
7984 *) val="$undef";;
7985 esac
7986 set d_bsdsetpgrp
7987 eval $setvar
7988 $rm -f set set.c
7989 : see if bzero exists
7990 set bzero d_bzero
7991 eval $inlibc
7992
7993 : see if signal is declared as pointer to function returning int or void
7994 echo " "
7995 xxx=`./findhdr signal.h`
7996 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7997 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7998         echo "You have int (*signal())() instead of void." >&4
7999         val="$undef"
8000 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8001         echo "You have void (*signal())()." >&4
8002         val="$define"
8003 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8004         echo "You have int (*signal())() instead of void." >&4
8005         val="$undef"
8006 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8007         echo "You have void (*signal())()." >&4
8008         val="$define"
8009 else
8010         case "$d_voidsig" in
8011         '')
8012         echo "I can't determine whether signal handler returns void or int..." >&4
8013                 dflt=void
8014                 rp="What type does your signal handler return?"
8015                 . ./myread
8016                 case "$ans" in
8017                 v*) val="$define";;
8018                 *) val="$undef";;
8019                 esac;;
8020         "$define")
8021                 echo "As you already told me, signal handler returns void." >&4
8022                 val="$define"
8023                 ;;
8024         *)      echo "As you already told me, signal handler returns int." >&4
8025                 val="$undef"
8026                 ;;
8027         esac
8028 fi
8029 set d_voidsig
8030 eval $setvar
8031 case "$d_voidsig" in
8032 "$define") signal_t="void";;
8033 *) signal_t="int";;
8034 esac
8035 $rm -f $$.tmp
8036
8037 : check for ability to cast large floats to 32-bit ints.
8038 echo " "
8039 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8040 if $test "$intsize" -ge 4; then
8041         xxx=int
8042 else
8043         xxx=long
8044 fi
8045 $cat >try.c <<EOCP
8046 #include <stdio.h>
8047 #include <sys/types.h>
8048 #include <signal.h>
8049 $signal_t blech(s) int s; { exit(3); }
8050 int main()
8051 {
8052         $xxx i32;
8053         double f, g;
8054         int result = 0;
8055         char str[16];
8056         signal(SIGFPE, blech);
8057
8058         /* Don't let compiler optimize the test away.  Store the number 
8059            in a writable string for gcc to pass to sscanf under HP/UX.
8060         */
8061         sprintf(str, "2147483647");
8062         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8063         g = 10 * f;
8064         i32  = ($xxx) g;
8065
8066         /* x86 processors will probably give 0x8000 0000, which is a
8067        sign change.  We don't want that.  We want to mimic SPARC
8068            behavior here, which is to preserve the sign and give
8069            back 0x7fff ffff.
8070         */
8071         if (i32 != ($xxx) f)
8072                 result |= 1;
8073         exit(result);
8074 }
8075 EOCP
8076 set try
8077 if eval $compile_ok; then
8078         ./try
8079         yyy=$?
8080 else
8081         echo "(I can't seem to compile the test program--assuming it can't)"
8082         yyy=1
8083 fi
8084 case "$yyy" in
8085 0)      val="$define"
8086         echo "Yup, it can."
8087         ;;
8088 *)      val="$undef"
8089         echo "Nope, it can't."
8090         ;;
8091 esac
8092 set d_casti32
8093 eval $setvar
8094 $rm -f try try.*
8095
8096 : check for ability to cast negative floats to unsigned
8097 echo " "
8098 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8099 $cat >try.c <<EOCP
8100 #include <stdio.h>
8101 #include <sys/types.h>
8102 #include <signal.h>
8103 $signal_t blech(s) int s; { exit(7); }
8104 $signal_t blech_in_list(s) int s; { exit(4); }
8105 unsigned long dummy_long(p) unsigned long p; { return p; }
8106 unsigned int dummy_int(p) unsigned int p; { return p; }
8107 unsigned short dummy_short(p) unsigned short p; { return p; }
8108 int main()
8109 {
8110         double f;
8111         unsigned long along;
8112         unsigned int aint;
8113         unsigned short ashort;
8114         int result = 0;
8115         char str[16];
8116         
8117         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8118            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8119            optimized the whole file away
8120         */
8121         /* Store the number in a writable string for gcc to pass to 
8122            sscanf under HP/UX.
8123         */
8124         sprintf(str, "-123");
8125         sscanf(str, "%lf", &f);  /* f = -123.; */
8126
8127         signal(SIGFPE, blech);
8128         along = (unsigned long)f;
8129         aint = (unsigned int)f;
8130         ashort = (unsigned short)f;
8131         if (along != (unsigned long)-123)
8132                 result |= 1;
8133         if (aint != (unsigned int)-123)
8134                 result |= 1;
8135         if (ashort != (unsigned short)-123)
8136                 result |= 1;
8137         sprintf(str, "1073741824.");
8138         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8139         f = f + f;
8140         along = 0;
8141         along = (unsigned long)f;
8142         if (along != 0x80000000)
8143                 result |= 2;
8144         f -= 1.;
8145         along = 0;
8146         along = (unsigned long)f;
8147         if (along != 0x7fffffff)
8148                 result |= 1;
8149         f += 2.;
8150         along = 0;
8151         along = (unsigned long)f;
8152         if (along != 0x80000001)
8153                 result |= 2;
8154         if (result)
8155                 exit(result);
8156         signal(SIGFPE, blech_in_list);
8157         sprintf(str, "123.");
8158         sscanf(str, "%lf", &f);  /* f = 123.; */
8159         along = dummy_long((unsigned long)f);
8160         aint = dummy_int((unsigned int)f);
8161         ashort = dummy_short((unsigned short)f);
8162         if (along != (unsigned long)123)
8163                 result |= 4;
8164         if (aint != (unsigned int)123)
8165                 result |= 4;
8166         if (ashort != (unsigned short)123)
8167                 result |= 4;
8168         exit(result);
8169
8170 }
8171 EOCP
8172 set try
8173 if eval $compile_ok; then
8174         ./try
8175         castflags=$?
8176 else
8177         echo "(I can't seem to compile the test program--assuming it can't)"
8178         castflags=7
8179 fi
8180 case "$castflags" in
8181 0)      val="$define"
8182         echo "Yup, it can."
8183         ;;
8184 *)      val="$undef"
8185         echo "Nope, it can't."
8186         ;;
8187 esac
8188 set d_castneg
8189 eval $setvar
8190 $rm -f try.*
8191
8192 : see if vprintf exists
8193 echo " "
8194 if set vprintf val -f d_vprintf; eval $csym; $val; then
8195         echo 'vprintf() found.' >&4
8196         val="$define"
8197         $cat >vprintf.c <<'EOF'
8198 #include <varargs.h>
8199
8200 int main() { xxx("foo"); }
8201
8202 xxx(va_alist)
8203 va_dcl
8204 {
8205         va_list args;
8206         char buf[10];
8207
8208         va_start(args);
8209         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8210 }
8211 EOF
8212         set vprintf
8213         if eval $compile && ./vprintf; then
8214                 echo "Your vsprintf() returns (int)." >&4
8215                 val2="$undef"
8216         else
8217                 echo "Your vsprintf() returns (char*)." >&4
8218                 val2="$define"
8219         fi
8220 else
8221         echo 'vprintf() NOT found.' >&4
8222                 val="$undef"
8223                 val2="$undef"
8224 fi
8225 set d_vprintf
8226 eval $setvar
8227 val=$val2
8228 set d_charvspr
8229 eval $setvar
8230
8231 : see if chown exists
8232 set chown d_chown
8233 eval $inlibc
8234
8235 : see if chroot exists
8236 set chroot d_chroot
8237 eval $inlibc
8238
8239 : see if chsize exists
8240 set chsize d_chsize
8241 eval $inlibc
8242
8243 : check for const keyword
8244 echo " "
8245 echo 'Checking to see if your C compiler knows about "const"...' >&4
8246 $cat >const.c <<'EOCP'
8247 typedef struct spug { int drokk; } spug;
8248 int main()
8249 {
8250         const char *foo;
8251         const spug y;
8252 }
8253 EOCP
8254 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8255         val="$define"
8256         echo "Yup, it does."
8257 else
8258         val="$undef"
8259         echo "Nope, it doesn't."
8260 fi
8261 set d_const
8262 eval $setvar
8263
8264 : see if crypt exists
8265 echo " "
8266 if set crypt val -f d_crypt; eval $csym; $val; then
8267         echo 'crypt() found.' >&4
8268         val="$define"
8269         cryptlib=''
8270 else
8271         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8272         if $test -z "$cryptlib"; then
8273                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8274         else
8275                 cryptlib=-lcrypt
8276         fi
8277         if $test -z "$cryptlib"; then
8278                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8279         else
8280                 cryptlib=-lcrypt
8281         fi
8282         if $test -z "$cryptlib"; then
8283                 cryptlib=`./loc libcrypt$_a "" $libpth`
8284         else
8285                 cryptlib=-lcrypt
8286         fi
8287         if $test -z "$cryptlib"; then
8288                 echo 'crypt() NOT found.' >&4
8289                 val="$undef"
8290         else
8291                 val="$define"
8292         fi
8293 fi
8294 set d_crypt
8295 eval $setvar
8296
8297 : get csh whereabouts
8298 case "$csh" in
8299 'csh') val="$undef" ;;
8300 *) val="$define" ;;
8301 esac
8302 set d_csh
8303 eval $setvar
8304 : Respect a hint or command line value for full_csh.
8305 case "$full_csh" in
8306 '') full_csh=$csh ;;
8307 esac
8308
8309 : see if cuserid exists
8310 set cuserid d_cuserid
8311 eval $inlibc
8312
8313 : see if this is a limits.h system
8314 set limits.h i_limits
8315 eval $inhdr
8316
8317 : see if this is a float.h system
8318 set float.h i_float
8319 eval $inhdr
8320
8321 : See if number of significant digits in a double precision number is known
8322 echo " "
8323 $cat >dbl_dig.c <<EOM
8324 #$i_limits I_LIMITS
8325 #$i_float I_FLOAT
8326 #ifdef I_LIMITS
8327 #include <limits.h>
8328 #endif
8329 #ifdef I_FLOAT
8330 #include <float.h>
8331 #endif
8332 #ifdef DBL_DIG
8333 printf("Contains DBL_DIG");
8334 #endif
8335 EOM
8336 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8337 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8338         echo "DBL_DIG found." >&4
8339         val="$define"
8340 else
8341         echo "DBL_DIG NOT found." >&4
8342         val="$undef"
8343 fi
8344 $rm -f dbl_dig.?
8345 set d_dbl_dig
8346 eval $setvar
8347
8348 : see if difftime exists
8349 set difftime d_difftime
8350 eval $inlibc
8351
8352 : see if this is a dirent system
8353 echo " "
8354 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8355         val="$define"
8356         echo "<dirent.h> found." >&4
8357 else
8358         val="$undef"
8359         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8360                 echo "<sys/dir.h> found." >&4
8361                 echo " "
8362         else
8363                 xinc=`./findhdr sys/ndir.h`
8364         fi
8365         echo "<dirent.h> NOT found." >&4
8366 fi
8367 set i_dirent
8368 eval $setvar
8369
8370 : Look for type of directory structure.
8371 echo " "
8372 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8373
8374 case "$direntrytype" in
8375 ''|' ')
8376         case "$i_dirent" in
8377         $define) guess1='struct dirent' ;;
8378         *) guess1='struct direct'  ;;
8379         esac
8380         ;;
8381 *)      guess1="$direntrytype"
8382         ;;
8383 esac
8384
8385 case "$guess1" in
8386 'struct dirent') guess2='struct direct' ;;
8387 *) guess2='struct dirent' ;;
8388 esac
8389                 
8390 if $contains "$guess1" try.c >/dev/null 2>&1; then
8391         direntrytype="$guess1"
8392         echo "Your directory entries are $direntrytype." >&4
8393 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8394         direntrytype="$guess2"
8395         echo "Your directory entries seem to be $direntrytype." >&4
8396 else
8397         echo "I don't recognize your system's directory entries." >&4
8398         rp="What type is used for directory entries on this system?"
8399         dflt="$guess1"
8400         . ./myread
8401         direntrytype="$ans"
8402 fi
8403 $rm -f try.c
8404
8405
8406 : see if the directory entry stores field length
8407 echo " "
8408 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8409 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8410         echo "Good, your directory entry keeps length information in d_namlen." >&4
8411         val="$define"
8412 else
8413         echo "Your directory entry does not know about the d_namlen field." >&4
8414         val="$undef"
8415 fi
8416 set d_dirnamlen
8417 eval $setvar
8418 $rm -f try.c
8419
8420 : see if dlerror exists
8421 xxx_runnm="$runnm"
8422 runnm=false
8423 set dlerror d_dlerror
8424 eval $inlibc
8425 runnm="$xxx_runnm"
8426
8427 : see if dlfcn is available
8428 set dlfcn.h i_dlfcn
8429 eval $inhdr
8430
8431 case "$usedl" in
8432 $define|y|true)
8433         $cat << EOM
8434
8435 On a few systems, the dynamically loaded modules that perl generates and uses
8436 will need a different extension than shared libs. The default will probably
8437 be appropriate.
8438
8439 EOM
8440         case "$dlext" in
8441         '')     dflt="$so" ;;
8442         *)      dflt="$dlext" ;;
8443         esac
8444         rp='What is the extension of dynamically loaded modules'
8445         . ./myread
8446         dlext="$ans"
8447         ;;
8448 *)
8449         dlext="none"
8450         ;;
8451 esac
8452
8453 : Check if dlsym need a leading underscore
8454 echo " "
8455 val="$undef"
8456
8457 case "$dlsrc" in
8458 dl_dlopen.xs)
8459         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8460         $cat >dyna.c <<'EOM'
8461 fred () { }
8462 EOM
8463
8464 $cat >fred.c<<EOM
8465
8466 #include <stdio.h>
8467 #$i_dlfcn I_DLFCN
8468 #ifdef I_DLFCN
8469 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8470 #else
8471 #include <sys/types.h>
8472 #include <nlist.h>
8473 #include <link.h>
8474 #endif
8475
8476 extern int fred() ;
8477
8478 int main()
8479 {
8480     void * handle ;
8481     void * symbol ;
8482 #ifndef RTLD_LAZY
8483     int mode = 1 ;
8484 #else
8485     int mode = RTLD_LAZY ;
8486 #endif
8487     handle = dlopen("./dyna.$dlext", mode) ;
8488     if (handle == NULL) {
8489         printf ("1\n") ;
8490         fflush (stdout) ;
8491         exit(0);
8492     }
8493     symbol = dlsym(handle, "fred") ;
8494     if (symbol == NULL) {
8495         /* try putting a leading underscore */
8496         symbol = dlsym(handle, "_fred") ;
8497         if (symbol == NULL) {
8498             printf ("2\n") ;
8499             fflush (stdout) ;
8500             exit(0);
8501         }
8502         printf ("3\n") ;
8503     }
8504     else
8505         printf ("4\n") ;
8506     fflush (stdout) ;
8507     exit(0);
8508 }
8509 EOM
8510         : Call the object file tmp-dyna.o in case dlext=o.
8511         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8512                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8513                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8514                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8515                 xxx=`./fred`
8516                 case $xxx in
8517                 1)      echo "Test program failed using dlopen." >&4
8518                         echo "Perhaps you should not use dynamic loading." >&4;;
8519                 2)      echo "Test program failed using dlsym." >&4
8520                         echo "Perhaps you should not use dynamic loading." >&4;;
8521                 3)      echo "dlsym needs a leading underscore" >&4
8522                         val="$define" ;;
8523                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8524                 esac
8525         else
8526                 echo "I can't compile and run the test program." >&4
8527                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8528         fi
8529         ;;
8530 esac
8531                 
8532 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8533
8534 set d_dlsymun
8535 eval $setvar
8536
8537 hasproto='varname=$1; func=$2; shift; shift;
8538 while $test $# -ge 2; do
8539         case "$1" in
8540         $define) echo "#include <$2>";;
8541         esac ;
8542     shift 2;
8543 done > try.c;
8544 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8545 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8546         echo "$func() prototype found.";
8547         val="$define";
8548 else
8549         echo "$func() prototype NOT found.";
8550         val="$undef";
8551 fi;
8552 set $varname;
8553 eval $setvar;
8554 $rm -f try.c tryout.c'
8555
8556 : see if prototype for drand48 is available
8557 echo " "
8558 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8559 eval $hasproto
8560
8561 : see if dup2 exists
8562 set dup2 d_dup2
8563 eval $inlibc
8564
8565 : see if eaccess exists
8566 set eaccess d_eaccess
8567 eval $inlibc
8568
8569 : see if endgrent exists
8570 set endgrent d_endgrent
8571 eval $inlibc
8572
8573 : see if endhostent exists
8574 set endhostent d_endhent
8575 eval $inlibc
8576
8577 : see if endnetent exists
8578 set endnetent d_endnent
8579 eval $inlibc
8580
8581 : see if endprotoent exists
8582 set endprotoent d_endpent
8583 eval $inlibc
8584
8585 : see if endpwent exists
8586 set endpwent d_endpwent
8587 eval $inlibc
8588
8589 : see if endservent exists
8590 set endservent d_endsent
8591 eval $inlibc
8592
8593 : Locate the flags for 'open()'
8594 echo " "
8595 $cat >open3.c <<'EOCP'
8596 #include <sys/types.h>
8597 #ifdef I_FCNTL
8598 #include <fcntl.h>
8599 #endif
8600 #ifdef I_SYS_FILE
8601 #include <sys/file.h>
8602 #endif
8603 int main() {
8604         if(O_RDONLY);
8605 #ifdef O_TRUNC
8606         exit(0);
8607 #else
8608         exit(1);
8609 #endif
8610 }
8611 EOCP
8612 : check sys/file.h first to get FREAD on Sun
8613 if $test `./findhdr sys/file.h` && \
8614                 set open3 -DI_SYS_FILE && eval $compile; then
8615         h_sysfile=true;
8616         echo "<sys/file.h> defines the O_* constants..." >&4
8617         if ./open3; then
8618                 echo "and you have the 3 argument form of open()." >&4
8619                 val="$define"
8620         else
8621                 echo "but not the 3 argument form of open().  Oh, well." >&4
8622                 val="$undef"
8623         fi
8624 elif $test `./findhdr fcntl.h` && \
8625                 set open3 -DI_FCNTL && eval $compile; then
8626         h_fcntl=true;
8627         echo "<fcntl.h> defines the O_* constants..." >&4
8628         if ./open3; then
8629                 echo "and you have the 3 argument form of open()." >&4
8630                 val="$define"
8631         else
8632                 echo "but not the 3 argument form of open().  Oh, well." >&4
8633                 val="$undef"
8634         fi
8635 else
8636         val="$undef"
8637         echo "I can't find the O_* constant definitions!  You got problems." >&4
8638 fi
8639 set d_open3
8640 eval $setvar
8641 $rm -f open3*
8642
8643 : see which of string.h or strings.h is needed
8644 echo " "
8645 strings=`./findhdr string.h`
8646 if $test "$strings" && $test -r "$strings"; then
8647         echo "Using <string.h> instead of <strings.h>." >&4
8648         val="$define"
8649 else
8650         val="$undef"
8651         strings=`./findhdr strings.h`
8652         if $test "$strings" && $test -r "$strings"; then
8653                 echo "Using <strings.h> instead of <string.h>." >&4
8654         else
8655                 echo "No string header found -- You'll surely have problems." >&4
8656         fi
8657 fi
8658 set i_string
8659 eval $setvar
8660 case "$i_string" in
8661 "$undef") strings=`./findhdr strings.h`;;
8662 *)        strings=`./findhdr string.h`;;
8663 esac
8664
8665 : check for non-blocking I/O stuff
8666 case "$h_sysfile" in
8667 true) echo "#include <sys/file.h>" > head.c;;
8668 *)
8669         case "$h_fcntl" in
8670         true) echo "#include <fcntl.h>" > head.c;;
8671         *) echo "#include <sys/fcntl.h>" > head.c;;
8672         esac
8673         ;;
8674 esac
8675 echo " "
8676 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8677 case "$o_nonblock" in
8678 '')
8679         $cat head.c > try.c
8680         $cat >>try.c <<'EOCP'
8681 #include <stdio.h>
8682 int main() {
8683 #ifdef O_NONBLOCK
8684         printf("O_NONBLOCK\n");
8685         exit(0);
8686 #endif
8687 #ifdef O_NDELAY
8688         printf("O_NDELAY\n");
8689         exit(0);
8690 #endif
8691 #ifdef FNDELAY
8692         printf("FNDELAY\n");
8693         exit(0);
8694 #endif
8695         exit(0);
8696 }
8697 EOCP
8698         set try
8699         if eval $compile_ok; then
8700                 o_nonblock=`./try`
8701                 case "$o_nonblock" in
8702                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8703                 *) echo "Seems like we can use $o_nonblock.";;
8704                 esac
8705         else
8706                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8707         fi
8708         ;;
8709 *) echo "Using $hint value $o_nonblock.";;
8710 esac
8711 $rm -f try try.* .out core
8712
8713 echo " "
8714 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8715 case "$eagain" in
8716 '')
8717         $cat head.c > try.c
8718         $cat >>try.c <<EOCP
8719 #include <errno.h>
8720 #include <sys/types.h>
8721 #include <signal.h>
8722 #include <stdio.h> 
8723 #define MY_O_NONBLOCK $o_nonblock
8724 #ifndef errno  /* XXX need better Configure test */
8725 extern int errno;
8726 #endif
8727 #$i_unistd I_UNISTD
8728 #ifdef I_UNISTD
8729 #include <unistd.h>
8730 #endif
8731 #$i_string I_STRING
8732 #ifdef I_STRING
8733 #include <string.h>
8734 #else
8735 #include <strings.h>
8736 #endif
8737 $signal_t blech(x) int x; { exit(3); }
8738 EOCP
8739         $cat >> try.c <<'EOCP'
8740 int main()
8741 {
8742         int pd[2];
8743         int pu[2];
8744         char buf[1];
8745         char string[100];
8746
8747         pipe(pd);       /* Down: child -> parent */
8748         pipe(pu);       /* Up: parent -> child */
8749         if (0 != fork()) {
8750                 int ret;
8751                 close(pd[1]);   /* Parent reads from pd[0] */
8752                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8753                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8754                         exit(1);
8755                 signal(SIGALRM, blech);
8756                 alarm(5);
8757                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8758                         exit(2);
8759                 sprintf(string, "%d\n", ret);
8760                 write(2, string, strlen(string));
8761                 alarm(0);
8762 #ifdef EAGAIN
8763                 if (errno == EAGAIN) {
8764                         printf("EAGAIN\n");
8765                         goto ok;
8766                 }
8767 #endif
8768 #ifdef EWOULDBLOCK
8769                 if (errno == EWOULDBLOCK)
8770                         printf("EWOULDBLOCK\n");
8771 #endif
8772         ok:
8773                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8774                 sleep(2);                               /* Give it time to close our pipe */
8775                 alarm(5);
8776                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8777                 alarm(0);
8778                 sprintf(string, "%d\n", ret);
8779                 write(3, string, strlen(string));
8780                 exit(0);
8781         }
8782
8783         close(pd[0]);                   /* We write to pd[1] */
8784         close(pu[1]);                   /* We read from pu[0] */
8785         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8786         close(pd[1]);                   /* Pipe pd is now fully closed! */
8787         exit(0);                                /* Bye bye, thank you for playing! */
8788 }
8789 EOCP
8790         set try
8791         if eval $compile_ok; then
8792                 echo "$startsh" >mtry
8793                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8794                 chmod +x mtry
8795                 ./mtry >/dev/null 2>&1
8796                 case $? in
8797                 0) eagain=`$cat try.out`;;
8798                 1) echo "Could not perform non-blocking setting!";;
8799                 2) echo "I did a successful read() for something that was not there!";;
8800                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8801                 *) echo "Something terribly wrong happened during testing.";;
8802                 esac
8803                 rd_nodata=`$cat try.ret`
8804                 echo "A read() system call with no data present returns $rd_nodata."
8805                 case "$rd_nodata" in
8806                 0|-1) ;;
8807                 *)
8808                         echo "(That's peculiar, fixing that to be -1.)"
8809                         rd_nodata=-1
8810                         ;;
8811                 esac
8812                 case "$eagain" in
8813                 '')
8814                         echo "Forcing errno EAGAIN on read() with no data available."
8815                         eagain=EAGAIN
8816                         ;;
8817                 *)
8818                         echo "Your read() sets errno to $eagain when no data is available."
8819                         ;;
8820                 esac
8821                 status=`$cat try.err`
8822                 case "$status" in
8823                 0) echo "And it correctly returns 0 to signal EOF.";;
8824                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8825                 *) echo "However, your read() returns '$status' on EOF??";;
8826                 esac
8827                 val="$define"
8828                 if test "$status" = "$rd_nodata"; then
8829                         echo "WARNING: you can't distinguish between EOF and no data!"
8830                         val="$undef"
8831                 fi
8832         else
8833                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8834                 eagain=EAGAIN
8835         fi
8836         set d_eofnblk
8837         eval $setvar
8838         ;;
8839 *)
8840         echo "Using $hint value $eagain."
8841         echo "Your read() returns $rd_nodata when no data is present."
8842         case "$d_eofnblk" in
8843         "$define") echo "And you can see EOF because read() returns 0.";;
8844         "$undef") echo "But you can't see EOF status from read() returned value.";;
8845         *)
8846                 echo "(Assuming you can't see EOF status from read anyway.)"
8847                 d_eofnblk=$undef
8848                 ;;
8849         esac
8850         ;;
8851 esac
8852 $rm -f try try.* .out core head.c mtry
8853
8854 : see if fchmod exists
8855 set fchmod d_fchmod
8856 eval $inlibc
8857
8858 : see if fchown exists
8859 set fchown d_fchown
8860 eval $inlibc
8861
8862 : see if this is an fcntl system
8863 set fcntl d_fcntl
8864 eval $inlibc
8865
8866 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8867 while $test $# -ge 2; do
8868         case "$1" in
8869         $define) echo "#include <$2>";;
8870         esac ;
8871     shift 2;
8872 done > try.c;
8873 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8874 set try;
8875 if eval $compile; then
8876         val="$define";
8877 else
8878         val="$undef";
8879 fi;
8880 set $varname;
8881 eval $setvar;
8882 $rm -f try.c try.o'
8883
8884 socketlib=''
8885 sockethdr=''
8886 : see whether socket exists
8887 echo " "
8888 $echo $n "Hmm... $c" >&4
8889 if set socket val -f d_socket; eval $csym; $val; then
8890         echo "Looks like you have Berkeley networking support." >&4
8891         d_socket="$define"
8892         if set setsockopt val -f; eval $csym; $val; then
8893                 d_oldsock="$undef"
8894         else
8895                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8896                 d_oldsock="$define"
8897         fi
8898 else
8899         if $contains socklib libc.list >/dev/null 2>&1; then
8900                 echo "Looks like you have Berkeley networking support." >&4
8901                 d_socket="$define"
8902                 : we will have to assume that it supports the 4.2 BSD interface
8903                 d_oldsock="$undef"
8904         else
8905                 echo "You don't have Berkeley networking in libc$_a..." >&4
8906                 if test "X$d_socket" = "X$define"; then
8907                    echo "...but you seem to believe that you have sockets." >&4
8908                 else
8909                         for net in net socket
8910                         do
8911                                 if test -f /usr/lib/lib$net$_a; then
8912                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8913                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8914                                         if $contains socket libc.list >/dev/null 2>&1; then
8915                                                 d_socket="$define"
8916                                                 socketlib="-l$net"
8917                                                 case "$net" in
8918                                                 net)
8919                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8920                                                         sockethdr="-I/usr/netinclude"
8921                                                         ;;
8922                                                 esac
8923                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8924                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8925                                                         d_oldsock="$undef"
8926                                                 else
8927                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8928                                                         d_oldsock="$define"
8929                                                 fi
8930                                                 break
8931                                         fi
8932                                 fi
8933                         done
8934                         if test "X$d_socket" != "X$define"; then
8935                            echo "or anywhere else I see." >&4
8936                            d_socket="$undef"
8937                            d_oldsock="$undef"
8938                         fi
8939                 fi
8940         fi
8941 fi
8942
8943 : see if socketpair exists
8944 set socketpair d_sockpair
8945 eval $inlibc
8946
8947
8948 echo " "
8949 echo "Checking the availability of certain socket constants..." >& 4
8950 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8951         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8952         $cat >try.c <<EOF
8953 #include <sys/types.h>
8954 #include <sys/socket.h>
8955 int main() {
8956     int i = $ENUM;
8957 }
8958 EOF
8959         val="$undef"
8960         set try; if eval $compile; then
8961                 val="$define"
8962         fi
8963         set d_${enum}; eval $setvar
8964         $rm -f try.c try
8965 done
8966
8967 : see if sys/select.h has to be included
8968 set sys/select.h i_sysselct
8969 eval $inhdr
8970
8971 : see if we should include time.h, sys/time.h, or both
8972 echo " "
8973 if test "X$timeincl" = X; then
8974         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8975         $echo $n "I'm now running the test program...$c"
8976         $cat >try.c <<'EOCP'
8977 #include <sys/types.h>
8978 #ifdef I_TIME
8979 #include <time.h>
8980 #endif
8981 #ifdef I_SYSTIME
8982 #ifdef SYSTIMEKERNEL
8983 #define KERNEL
8984 #endif
8985 #include <sys/time.h>
8986 #endif
8987 #ifdef I_SYSSELECT
8988 #include <sys/select.h>
8989 #endif
8990 int main()
8991 {
8992         struct tm foo;
8993 #ifdef S_TIMEVAL
8994         struct timeval bar;
8995 #endif
8996 #ifdef S_TIMEZONE
8997         struct timezone tzp;
8998 #endif
8999         if (foo.tm_sec == foo.tm_sec)
9000                 exit(0);
9001 #ifdef S_TIMEVAL
9002         if (bar.tv_sec == bar.tv_sec)
9003                 exit(0);
9004 #endif
9005         exit(1);
9006 }
9007 EOCP
9008         flags=''
9009         for s_timezone in '-DS_TIMEZONE' ''; do
9010         sysselect=''
9011         for s_timeval in '-DS_TIMEVAL' ''; do
9012         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9013         for i_time in '' '-DI_TIME'; do
9014         for i_systime in '-DI_SYSTIME' ''; do
9015                 case "$flags" in
9016                 '') $echo $n ".$c"
9017                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9018                         if eval $compile; then
9019                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9020                                 shift
9021                                 flags="$*"
9022                                 echo " "
9023                                 $echo $n "Succeeded with $flags$c"
9024                         fi
9025                         ;;
9026                 esac
9027         done
9028         done
9029         done
9030         done
9031         done
9032         timeincl=''
9033         echo " "
9034         case "$flags" in
9035         *SYSTIMEKERNEL*) i_systimek="$define"
9036                 timeincl=`./findhdr sys/time.h`
9037                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9038         *) i_systimek="$undef";;
9039         esac
9040         case "$flags" in
9041         *I_TIME*) i_time="$define"
9042                 timeincl=`./findhdr time.h`" $timeincl"
9043                 echo "We'll include <time.h>." >&4;;
9044         *) i_time="$undef";;
9045         esac
9046         case "$flags" in
9047         *I_SYSTIME*) i_systime="$define"
9048                 timeincl=`./findhdr sys/time.h`" $timeincl"
9049                 echo "We'll include <sys/time.h>." >&4;;
9050         *) i_systime="$undef";;
9051         esac
9052         $rm -f try.c try
9053 fi
9054
9055 : check for fd_set items
9056 $cat <<EOM
9057
9058 Checking to see how well your C compiler handles fd_set and friends ...
9059 EOM
9060 $cat >fd_set.c <<EOCP
9061 #$i_systime I_SYS_TIME
9062 #$i_sysselct I_SYS_SELECT
9063 #$d_socket HAS_SOCKET
9064 #include <sys/types.h>
9065 #ifdef HAS_SOCKET
9066 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9067 #endif
9068 #ifdef I_SYS_TIME
9069 #include <sys/time.h>
9070 #endif
9071 #ifdef I_SYS_SELECT
9072 #include <sys/select.h>
9073 #endif
9074 int main() {
9075         fd_set fds;
9076
9077 #ifdef TRYBITS
9078         if(fds.fds_bits);
9079 #endif
9080
9081 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9082         exit(0);
9083 #else
9084         exit(1);
9085 #endif
9086 }
9087 EOCP
9088 set fd_set -DTRYBITS
9089 if eval $compile; then
9090         d_fds_bits="$define"
9091         d_fd_set="$define"
9092         echo "Well, your system knows about the normal fd_set typedef..." >&4
9093         if ./fd_set; then
9094                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9095                 d_fd_macros="$define"
9096         else
9097                 $cat >&4 <<'EOM'
9098 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9099 EOM
9100                 d_fd_macros="$undef"
9101         fi
9102 else
9103         $cat <<'EOM'
9104 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9105 EOM
9106         set fd_set
9107         if eval $compile; then
9108                 d_fds_bits="$undef"
9109                 d_fd_set="$define"
9110                 echo "Well, your system has some sort of fd_set available..." >&4
9111                 if ./fd_set; then
9112                         echo "and you have the normal fd_set macros." >&4
9113                         d_fd_macros="$define"
9114                 else
9115                         $cat <<'EOM'
9116 but not the normal fd_set macros!  Gross!  More work for me...
9117 EOM
9118                         d_fd_macros="$undef"
9119                 fi
9120         else
9121         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9122                 d_fd_set="$undef"
9123                 d_fds_bits="$undef"
9124                 d_fd_macros="$undef"
9125         fi
9126 fi
9127 $rm -f fd_set*
9128
9129 : see if fgetpos exists
9130 set fgetpos d_fgetpos
9131 eval $inlibc
9132
9133 : see if flock exists
9134 set flock d_flock
9135 eval $inlibc
9136
9137 : see if fork exists
9138 set fork d_fork
9139 eval $inlibc
9140
9141 : see if pathconf exists
9142 set pathconf d_pathconf
9143 eval $inlibc
9144
9145 : see if fpathconf exists
9146 set fpathconf d_fpathconf
9147 eval $inlibc
9148
9149
9150 : check for fpos64_t
9151 echo " "
9152 echo "Checking to see if you have fpos64_t..." >&4
9153 $cat >try.c <<EOCP
9154 #include <stdio.h>
9155 int main() { fpos64_t x = 7; }
9156 EOCP
9157 set try
9158 if eval $compile; then
9159         val="$define"
9160         echo "You have fpos64_t."
9161 else
9162         val="$undef"
9163         echo "You do not have fpos64_t."
9164         case "$fpossize" in
9165         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9166         esac
9167 fi
9168 $rm -f try.* try
9169 set d_fpos64_t
9170 eval $setvar
9171
9172 : see if frexpl exists
9173 set frexpl d_frexpl
9174 eval $inlibc
9175
9176 hasstruct='varname=$1; struct=$2; shift; shift;
9177 while $test $# -ge 2; do
9178         case "$1" in
9179         $define) echo "#include <$2>";;
9180         esac ;
9181     shift 2;
9182 done > try.c;
9183 echo "int main () { struct $struct foo; }" >> try.c;
9184 set try;
9185 if eval $compile; then
9186         val="$define";
9187 else
9188         val="$undef";
9189 fi;
9190 set $varname;
9191 eval $setvar;
9192 $rm -f try.c try.o'
9193
9194 : see if this is a sys/param system
9195 set sys/param.h i_sysparam
9196 eval $inhdr
9197
9198 : see if this is a sys/mount.h system
9199 set sys/mount.h i_sysmount
9200 eval $inhdr
9201
9202 : see if sys/types.h has to be included
9203 set sys/types.h i_systypes
9204 eval $inhdr
9205
9206
9207 echo " "
9208 echo "Checking to see if your system supports struct fs_data..." >&4
9209 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9210 eval $hasstruct
9211 case "$d_fs_data_s" in
9212 "$define")      echo "Yes, it does."   ;;
9213 *)              echo "No, it doesn't." ;;
9214 esac
9215
9216 : see if fseeko exists
9217 set fseeko d_fseeko
9218 eval $inlibc
9219 case "$longsize" in
9220 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9221 esac
9222
9223 : see if fsetpos exists
9224 set fsetpos d_fsetpos
9225 eval $inlibc
9226
9227
9228 : see if fstatfs exists
9229 set fstatfs d_fstatfs
9230 eval $inlibc
9231
9232
9233 : see if statvfs exists
9234 set statvfs d_statvfs
9235 eval $inlibc
9236
9237 : see if fstatvfs exists
9238 set fstatvfs d_fstatvfs
9239 eval $inlibc
9240
9241
9242 : see if ftello exists
9243 set ftello d_ftello
9244 eval $inlibc
9245 case "$longsize" in
9246 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9247 esac
9248
9249 : see if getcwd exists
9250 set getcwd d_getcwd
9251 eval $inlibc
9252
9253 : see if getespwnam exists
9254 set getespwnam d_getespwnam
9255 eval $inlibc
9256
9257
9258 : see if getfsstat exists
9259 set getfsstat d_getfsstat
9260 eval $inlibc
9261
9262 : see if getgrent exists
9263 set getgrent d_getgrent
9264 eval $inlibc
9265
9266 : see if gethostbyaddr exists
9267 set gethostbyaddr d_gethbyaddr
9268 eval $inlibc
9269
9270 : see if gethostbyname exists
9271 set gethostbyname d_gethbyname
9272 eval $inlibc
9273
9274 : see if gethostent exists
9275 set gethostent d_gethent
9276 eval $inlibc
9277
9278 : see how we will look up host name
9279 echo " "
9280 call=''
9281 if set gethostname val -f d_gethname; eval $csym; $val; then
9282         echo 'gethostname() found.' >&4
9283         d_gethname="$define"
9284         call=gethostname
9285 fi
9286 if set uname val -f d_uname; eval $csym; $val; then
9287         if ./xenix; then
9288                 $cat <<'EOM'
9289 uname() was found, but you're running xenix, and older versions of xenix
9290 have a broken uname(). If you don't really know whether your xenix is old
9291 enough to have a broken system call, use the default answer.
9292
9293 EOM
9294                 dflt=y
9295                 case "$d_uname" in
9296                 "$define") dflt=n;;
9297                 esac
9298                 rp='Is your uname() broken?'
9299                 . ./myread
9300                 case "$ans" in
9301                 n*) d_uname="$define"; call=uname;;
9302                 esac
9303         else
9304                 echo 'uname() found.' >&4
9305                 d_uname="$define"
9306                 case "$call" in
9307                 '') call=uname ;;
9308                 esac
9309         fi
9310 fi
9311 case "$d_gethname" in
9312 '') d_gethname="$undef";;
9313 esac
9314 case "$d_uname" in
9315 '') d_uname="$undef";;
9316 esac
9317 case "$d_uname$d_gethname" in
9318 *define*)
9319         dflt=n
9320         cat <<EOM
9321  
9322 Every now and then someone has a $call() that lies about the hostname
9323 but can't be fixed for political or economic reasons.  If you wish, I can
9324 pretend $call() isn't there and maybe compute hostname at run-time
9325 thanks to the '$phostname' command.
9326
9327 EOM
9328         rp="Shall I ignore $call() from now on?"
9329         . ./myread
9330         case "$ans" in
9331         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9332         esac;;
9333 esac
9334 case "$phostname" in
9335 '') aphostname='';;
9336 *) case "$aphostname" in
9337         /*) ;;
9338         *) set X $phostname
9339                 shift
9340                 file=$1
9341                 shift
9342                 file=`./loc $file $file $pth`
9343                 aphostname=`echo $file $*`
9344                 ;;
9345         esac
9346         ;;
9347 esac
9348 case "$d_uname$d_gethname" in
9349 *define*) ;;
9350 *)
9351         case "$phostname" in
9352         '')
9353                 echo "There will be no way for $package to get your hostname." >&4;;
9354         *)
9355         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9356                 ;;
9357         esac;;
9358 esac
9359 case "$d_phostname" in
9360 '') d_phostname="$undef";;
9361 esac
9362
9363 : see if this is a netdb.h system
9364 set netdb.h i_netdb
9365 eval $inhdr
9366
9367 : see if prototypes for various gethostxxx netdb.h functions are available
9368 echo " "
9369 set d_gethostprotos gethostent $i_netdb netdb.h
9370 eval $hasproto
9371
9372 : see if getlogin exists
9373 set getlogin d_getlogin
9374 eval $inlibc
9375
9376 : see if getmnt exists
9377 set getmnt d_getmnt
9378 eval $inlibc
9379
9380 : see if getmntent exists
9381 set getmntent d_getmntent
9382 eval $inlibc
9383
9384 : see if getnetbyaddr exists
9385 set getnetbyaddr d_getnbyaddr
9386 eval $inlibc
9387
9388 : see if getnetbyname exists
9389 set getnetbyname d_getnbyname
9390 eval $inlibc
9391
9392 : see if getnetent exists
9393 set getnetent d_getnent
9394 eval $inlibc
9395
9396 : see if prototypes for various getnetxxx netdb.h functions are available
9397 echo " "
9398 set d_getnetprotos getnetent $i_netdb netdb.h
9399 eval $hasproto
9400
9401
9402 : see if getprotobyname exists
9403 set getprotobyname d_getpbyname
9404 eval $inlibc
9405
9406 : see if getprotobynumber exists
9407 set getprotobynumber d_getpbynumber
9408 eval $inlibc
9409
9410 : see if getprotoent exists
9411 set getprotoent d_getpent
9412 eval $inlibc
9413
9414 : see if getpgid exists
9415 set getpgid d_getpgid
9416 eval $inlibc
9417
9418 : see if getpgrp2 exists
9419 set getpgrp2 d_getpgrp2
9420 eval $inlibc
9421
9422 : see if getppid exists
9423 set getppid d_getppid
9424 eval $inlibc
9425
9426 : see if getpriority exists
9427 set getpriority d_getprior
9428 eval $inlibc
9429
9430 : see if prototypes for various getprotoxxx netdb.h functions are available
9431 echo " "
9432 set d_getprotoprotos getprotoent $i_netdb netdb.h
9433 eval $hasproto
9434
9435 : see if getprpwnam exists
9436 set getprpwnam d_getprpwnam
9437 eval $inlibc
9438
9439 : see if getpwent exists
9440 set getpwent d_getpwent
9441 eval $inlibc
9442
9443
9444 : see if getservbyname exists
9445 set getservbyname d_getsbyname
9446 eval $inlibc
9447
9448 : see if getservbyport exists
9449 set getservbyport d_getsbyport
9450 eval $inlibc
9451
9452 : see if getservent exists
9453 set getservent d_getsent
9454 eval $inlibc
9455
9456 : see if prototypes for various getservxxx netdb.h functions are available
9457 echo " "
9458 set d_getservprotos getservent $i_netdb netdb.h
9459 eval $hasproto
9460
9461 : see if getspnam exists
9462 set getspnam d_getspnam
9463 eval $inlibc
9464
9465 : see if gettimeofday or ftime exists
9466 set gettimeofday d_gettimeod
9467 eval $inlibc
9468 case "$d_gettimeod" in
9469 "$undef")
9470         set ftime d_ftime 
9471         eval $inlibc
9472         ;;
9473 *)
9474         val="$undef"; set d_ftime; eval $setvar
9475         ;;
9476 esac
9477 case "$d_gettimeod$d_ftime" in
9478 "$undef$undef")
9479         echo " "
9480         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9481         ;;
9482 esac
9483
9484 : see if this is an grp system
9485 set grp.h i_grp
9486 eval $inhdr
9487
9488 case "$i_grp" in
9489 $define)
9490         xxx=`./findhdr grp.h`
9491         $cppstdin $cppflags $cppminus < $xxx >$$.h
9492
9493         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9494                 val="$define"
9495         else
9496                 val="$undef"
9497         fi
9498         set d_grpasswd
9499         eval $setvar
9500
9501         $rm -f $$.h
9502         ;;
9503 *)
9504         val="$undef";
9505         set d_grpasswd; eval $setvar
9506         ;;
9507 esac
9508
9509 : see if hasmntopt exists
9510 set hasmntopt d_hasmntopt
9511 eval $inlibc
9512
9513 : see if this is a netinet/in.h or sys/in.h system
9514 set netinet/in.h i_niin sys/in.h i_sysin
9515 eval $inhdr
9516
9517 : see if arpa/inet.h has to be included
9518 set arpa/inet.h i_arpainet
9519 eval $inhdr
9520
9521 : see if htonl --and friends-- exists
9522 val=''
9523 set htonl val
9524 eval $inlibc
9525
9526 : Maybe they are macros.
9527 case "$val" in
9528 $undef)
9529         $cat >htonl.c <<EOM
9530 #include <stdio.h>
9531 #include <sys/types.h>
9532 #$i_niin I_NETINET_IN
9533 #$i_sysin I_SYS_IN
9534 #$i_arpainet I_ARPA_INET
9535 #ifdef I_NETINET_IN
9536 #include <netinet/in.h>
9537 #endif
9538 #ifdef I_SYS_IN
9539 #include <sys/in.h>
9540 #endif
9541 #ifdef I_ARPA_INET
9542 #include <arpa/inet.h>
9543 #endif
9544 #ifdef htonl
9545 printf("Defined as a macro.");
9546 #endif
9547 EOM
9548         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9549         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9550                 val="$define"
9551                 echo "But it seems to be defined as a macro." >&4
9552         fi
9553         $rm -f htonl.?
9554         ;;
9555 esac
9556 set d_htonl
9557 eval $setvar
9558
9559 : see if iconv exists
9560 set iconv d_iconv
9561 eval $inlibc
9562
9563 : index or strchr
9564 echo " "
9565 if set index val -f; eval $csym; $val; then
9566         if set strchr val -f d_strchr; eval $csym; $val; then
9567                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9568                         val="$define"
9569                         vali="$undef"
9570                         echo "strchr() found." >&4
9571                 else
9572                         val="$undef"
9573                         vali="$define"
9574                         echo "index() found." >&4
9575                 fi
9576         else
9577                 val="$undef"
9578                 vali="$define"
9579                 echo "index() found." >&4
9580         fi
9581 else
9582         if set strchr val -f d_strchr; eval $csym; $val; then
9583                 val="$define"
9584                 vali="$undef"
9585                 echo "strchr() found." >&4
9586         else
9587                 echo "No index() or strchr() found!" >&4
9588                 val="$undef"
9589                 vali="$undef"
9590         fi
9591 fi
9592 set d_strchr; eval $setvar
9593 val="$vali"
9594 set d_index; eval $setvar
9595
9596 : check whether inet_aton exists
9597 set inet_aton d_inetaton
9598 eval $inlibc
9599
9600 : see if inttypes.h is available
9601 : we want a real compile instead of Inhdr because some systems
9602 : have an inttypes.h which includes non-existent headers
9603 echo " "
9604 $cat >try.c <<EOCP
9605 #include <inttypes.h>
9606 int main() {
9607         static int32_t foo32 = 0x12345678;
9608 }
9609 EOCP
9610 set try
9611 if eval $compile; then
9612         echo "<inttypes.h> found." >&4
9613         val="$define"
9614 else
9615         echo "<inttypes.h> NOT found." >&4
9616         val="$undef"
9617 fi
9618 $rm -f try.c try
9619 set i_inttypes
9620 eval $setvar
9621
9622 : check for int64_t
9623 echo " "
9624 echo "Checking to see if you have int64_t..." >&4
9625 $cat >try.c <<EOCP
9626 #include <sys/types.h>
9627 #$i_inttypes I_INTTYPES
9628 #ifdef I_INTTYPES
9629 #include <inttypes.h>
9630 #endif
9631 int main() { int64_t x = 7; }
9632 EOCP
9633 set try
9634 if eval $compile; then
9635         val="$define"
9636         echo "You have int64_t."
9637 else
9638         val="$undef"
9639         echo "You do not have int64_t."
9640 fi
9641 $rm -f try try.*
9642 set d_int64_t
9643 eval $setvar
9644
9645 : Look for isascii
9646 echo " "
9647 $cat >isascii.c <<'EOCP'
9648 #include <stdio.h>
9649 #include <ctype.h>
9650 int main() {
9651         int c = 'A';
9652         if (isascii(c))
9653                 exit(0);
9654         else
9655                 exit(1);
9656 }
9657 EOCP
9658 set isascii
9659 if eval $compile; then
9660         echo "isascii() found." >&4
9661         val="$define"
9662 else
9663         echo "isascii() NOT found." >&4
9664         val="$undef"
9665 fi
9666 set d_isascii
9667 eval $setvar
9668 $rm -f isascii*
9669
9670 : see if isnan exists
9671 set isnan d_isnan
9672 eval $inlibc
9673
9674 : see if isnanl exists
9675 set isnanl d_isnanl
9676 eval $inlibc
9677
9678 : see if killpg exists
9679 set killpg d_killpg
9680 eval $inlibc
9681
9682 : see if lchown exists
9683 echo " "
9684 $cat > try.c <<'EOCP'
9685 /* System header to define __stub macros and hopefully few prototypes,
9686     which can conflict with char lchown(); below.  */
9687 #include <assert.h>
9688 /* Override any gcc2 internal prototype to avoid an error.  */
9689 /* We use char because int might match the return type of a gcc2
9690    builtin and then its argument prototype would still apply.  */
9691 char lchown();
9692 int main() {
9693     /*  The GNU C library defines this for functions which it implements
9694         to always fail with ENOSYS.  Some functions are actually named
9695         something starting with __ and the normal name is an alias.  */
9696 #if defined (__stub_lchown) || defined (__stub___lchown)
9697 choke me
9698 #else
9699 lchown();
9700 #endif
9701 ; return 0; }
9702 EOCP
9703 set try
9704 if eval $compile; then
9705     $echo "lchown() found." >&4
9706     val="$define"
9707 else
9708     $echo "lchown() NOT found." >&4
9709     val="$undef"
9710 fi
9711 set d_lchown
9712 eval $setvar
9713
9714 : See if number of significant digits in a double precision number is known
9715 echo " "
9716 $cat >ldbl_dig.c <<EOM
9717 #$i_limits I_LIMITS
9718 #$i_float I_FLOAT
9719 #ifdef I_LIMITS
9720 #include <limits.h>
9721 #endif
9722 #ifdef I_FLOAT
9723 #include <float.h>
9724 #endif
9725 #ifdef LDBL_DIG
9726 printf("Contains LDBL_DIG");
9727 #endif
9728 EOM
9729 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9730 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9731         echo "LDBL_DIG found." >&4
9732         val="$define"
9733 else
9734         echo "LDBL_DIG NOT found." >&4
9735         val="$undef"
9736 fi
9737 $rm -f ldbl_dig.?
9738 set d_ldbl_dig
9739 eval $setvar
9740
9741 : see if link exists
9742 set link d_link
9743 eval $inlibc
9744
9745 : see if localeconv exists
9746 set localeconv d_locconv
9747 eval $inlibc
9748
9749 : see if lockf exists
9750 set lockf d_lockf
9751 eval $inlibc
9752
9753 : check for long long
9754 echo " "
9755 echo "Checking to see if you have long long..." >&4
9756 echo 'int main() { long long x = 7; return 0; }' > try.c
9757 set try
9758 if eval $compile; then
9759         val="$define"
9760         echo "You have long long."
9761 else
9762         val="$undef"
9763         echo "You do not have long long."
9764 fi
9765 $rm try.*
9766 set d_longlong
9767 eval $setvar
9768
9769 : check for length of long long
9770 case "${d_longlong}${longlongsize}" in
9771 $define)
9772         echo " "
9773         echo "Checking to see how big your long longs are..." >&4
9774         $cat >try.c <<'EOCP'
9775 #include <stdio.h>
9776 int main()
9777 {
9778     printf("%d\n", (int)sizeof(long long));
9779     return(0);
9780 }
9781 EOCP
9782         set try
9783         if eval $compile_ok; then
9784                 longlongsize=`./try$exe_ext`
9785                 echo "Your long longs are $longlongsize bytes long."
9786         else
9787                 dflt='8'
9788                 echo " "
9789                 echo "(I can't seem to compile the test program.  Guessing...)"
9790                 rp="What is the size of a long long (in bytes)?"
9791                 . ./myread
9792                 longlongsize="$ans"
9793         fi
9794         if $test "X$longsize" = "X$longlongsize"; then
9795                 echo "(That isn't any different from an ordinary long.)"
9796         fi      
9797         ;;
9798 esac
9799 $rm -f try.* try
9800
9801 : see if prototype for lseek is available
9802 echo " "
9803 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9804 eval $hasproto
9805
9806 : see if lstat exists
9807 set lstat d_lstat
9808 eval $inlibc
9809
9810 : see if madvise exists
9811 set madvise d_madvise
9812 eval $inlibc
9813
9814 : see if mblen exists
9815 set mblen d_mblen
9816 eval $inlibc
9817
9818 : see if mbstowcs exists
9819 set mbstowcs d_mbstowcs
9820 eval $inlibc
9821
9822 : see if mbtowc exists
9823 set mbtowc d_mbtowc
9824 eval $inlibc
9825
9826 : see if memchr exists
9827 set memchr d_memchr
9828 eval $inlibc
9829
9830 : see if memcmp exists
9831 set memcmp d_memcmp
9832 eval $inlibc
9833
9834 : see if memcpy exists
9835 set memcpy d_memcpy
9836 eval $inlibc
9837
9838 : see if memmove exists
9839 set memmove d_memmove
9840 eval $inlibc
9841
9842 : see if memset exists
9843 set memset d_memset
9844 eval $inlibc
9845
9846 : see if mkdir exists
9847 set mkdir d_mkdir
9848 eval $inlibc
9849
9850 : see if mkdtemp exists
9851 set mkdtemp d_mkdtemp
9852 eval $inlibc
9853
9854 : see if mkfifo exists
9855 set mkfifo d_mkfifo
9856 eval $inlibc
9857
9858 : see if mkstemp exists
9859 set mkstemp d_mkstemp
9860 eval $inlibc
9861
9862 : see if mkstemps exists
9863 set mkstemps d_mkstemps
9864 eval $inlibc
9865
9866 : see if mktime exists
9867 set mktime d_mktime
9868 eval $inlibc
9869
9870 : see if this is a sys/mman.h system
9871 set sys/mman.h i_sysmman
9872 eval $inhdr
9873
9874 : see if mmap exists
9875 set mmap d_mmap
9876 eval $inlibc
9877 : see what shmat returns
9878 : default to something harmless
9879 mmaptype='void *'
9880 case "$i_sysmman$d_mmap" in
9881 "$define$define")
9882         $cat >mmap.c <<'END'
9883 #include <sys/mman.h>
9884 void *mmap();
9885 END
9886         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9887                 mmaptype='void *'
9888         else
9889                 mmaptype='caddr_t'
9890         fi
9891         echo "and it returns ($mmaptype)." >&4
9892         ;;
9893 esac
9894
9895
9896
9897 : see if modfl exists
9898 set modfl d_modfl
9899 eval $inlibc
9900
9901 : see if mprotect exists
9902 set mprotect d_mprotect
9903 eval $inlibc
9904
9905 : see if msgctl exists
9906 set msgctl d_msgctl
9907 eval $inlibc
9908
9909 : see if msgget exists
9910 set msgget d_msgget
9911 eval $inlibc
9912
9913 : see if msgsnd exists
9914 set msgsnd d_msgsnd
9915 eval $inlibc
9916
9917 : see if msgrcv exists
9918 set msgrcv d_msgrcv
9919 eval $inlibc
9920
9921 : see how much of the 'msg*(2)' library is present.
9922 h_msg=true
9923 echo " "
9924 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9925 *"$undef"*) h_msg=false;;
9926 esac
9927 case "$osname" in
9928 freebsd)
9929     case "`ipcs 2>&1`" in
9930     "SVID messages"*"not configured"*)
9931         echo "Your $osname does not have the msg*(2) configured." >&4
9932         h_msg=false
9933         val="$undef"
9934         set msgctl d_msgctl
9935         eval $setvar
9936         set msgget d_msgget
9937         eval $setvar
9938         set msgsnd d_msgsnd
9939         eval $setvar
9940         set msgrcv d_msgrcv
9941         eval $setvar
9942         ;;
9943     esac
9944     ;;
9945 esac
9946 : we could also check for sys/ipc.h ...
9947 if $h_msg && $test `./findhdr sys/msg.h`; then
9948         echo "You have the full msg*(2) library." >&4
9949         val="$define"
9950 else
9951         echo "You don't have the full msg*(2) library." >&4
9952         val="$undef"
9953 fi
9954 set d_msg
9955 eval $setvar
9956
9957 : see if msync exists
9958 set msync d_msync
9959 eval $inlibc
9960
9961 : see if munmap exists
9962 set munmap d_munmap
9963 eval $inlibc
9964
9965 : see if nice exists
9966 set nice d_nice
9967 eval $inlibc
9968
9969
9970 echo " "
9971 echo "Checking which 64-bit integer type we could use..." >&4
9972
9973 case "$intsize" in
9974 8) val=int
9975    set quadtype
9976    eval $setvar
9977    val='"unsigned int"'
9978    set uquadtype
9979    eval $setvar
9980    quadkind=1
9981    ;;
9982 *) case "$longsize" in
9983    8) val=long
9984       set quadtype
9985       eval $setvar
9986       val='"unsigned long"'
9987       set uquadtype
9988       eval $setvar
9989       quadkind=2
9990       ;;
9991    *) case "$d_longlong:$longlongsize" in
9992       define:8)
9993         val='"long long"'
9994         set quadtype
9995         eval $setvar
9996         val='"unsigned long long"'
9997         set uquadtype
9998         eval $setvar
9999         quadkind=3
10000         ;;
10001       *) case "$d_int64_t" in
10002          define)
10003            val=int64_t
10004            set quadtype
10005            eval $setvar
10006            val=uint64_t
10007            set uquadtype
10008            eval $setvar
10009            quadkind=4
10010            ;;
10011          esac
10012          ;;
10013       esac
10014       ;;
10015    esac
10016    ;;
10017 esac
10018
10019 case "$quadtype" in
10020 '')     echo "Alas, no 64-bit integer types in sight." >&4
10021         d_quad="$undef"
10022         ;;
10023 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10024             verb="will"
10025         else
10026             verb="could"
10027         fi
10028         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10029         d_quad="$define"
10030         ;;
10031 esac
10032
10033 : check for length of character
10034 echo " "
10035 case "$charsize" in
10036 '')
10037         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10038         $cat >try.c <<'EOCP'
10039 #include <stdio.h>
10040 int main()
10041 {
10042     printf("%d\n", (int)sizeof(char));
10043     exit(0);
10044 }
10045 EOCP
10046         set try
10047         if eval $compile_ok; then
10048                 dflt=`./try`
10049         else
10050                 dflt='1'
10051                 echo "(I can't seem to compile the test program.  Guessing...)"
10052         fi
10053         ;;
10054 *)
10055         dflt="$charsize"
10056         ;;
10057 esac
10058 rp="What is the size of a character (in bytes)?"
10059 . ./myread
10060 charsize="$ans"
10061 $rm -f try.c try
10062
10063
10064 echo " "
10065 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10066
10067 case "$use64bitint:$d_quad:$quadtype" in
10068 define:define:?*)
10069         ivtype="$quadtype"
10070         uvtype="$uquadtype"
10071         ivsize=8
10072         uvsize=8
10073         ;;
10074 *)      ivtype="long"
10075         uvtype="unsigned long"
10076         ivsize=$longsize
10077         uvsize=$longsize
10078         ;;
10079 esac
10080
10081 case "$uselongdouble:$d_longdbl" in
10082 define:define)
10083         nvtype="long double"
10084         nvsize=$longdblsize
10085         ;;
10086 *)      nvtype=double
10087         nvsize=$doublesize
10088         ;;
10089 esac
10090
10091 $echo "(IV will be "$ivtype", $ivsize bytes)"
10092 $echo "(UV will be "$uvtype", $uvsize bytes)"
10093 $echo "(NV will be "$nvtype", $nvsize bytes)"
10094
10095 $cat >try.c <<EOCP
10096 #$i_inttypes I_INTTYPES
10097 #ifdef I_INTTYPES
10098 #include <inttypes.h>
10099 #endif
10100 #include <stdio.h>
10101 int main() {
10102 #ifdef INT8
10103    int8_t i =  INT8_MAX;
10104   uint8_t u = UINT8_MAX;
10105   printf("int8_t\n");
10106 #endif
10107 #ifdef INT16
10108    int16_t i =  INT16_MAX;
10109   uint16_t i = UINT16_MAX;
10110   printf("int16_t\n");
10111 #endif
10112 #ifdef INT32
10113    int32_t i =  INT32_MAX;
10114   uint32_t u = UINT32_MAX;
10115   printf("int32_t\n");
10116 #endif
10117 }
10118 EOCP
10119
10120 case "$i8type" in
10121 '')     case "$charsize" in
10122         1)      i8type=char
10123                 u8type="unsigned char"
10124                 i8size=$charsize
10125                 u8size=$charsize
10126                 ;;
10127         esac
10128         ;;
10129 esac
10130 case "$i8type" in
10131 '')     set try -DINT8
10132         if eval $compile; then
10133                 case "`./try$exe_ext`" in
10134                 int8_t) i8type=int8_t
10135                         u8type=uint8_t
10136                         i8size=1
10137                         u8size=1
10138                         ;;
10139                 esac
10140         fi
10141         ;;
10142 esac
10143 case "$i8type" in
10144 '')     if $test $charsize -ge 1; then
10145                 i8type=char
10146                 u8type="unsigned char"
10147                 i8size=$charsize
10148                 u8size=$charsize
10149         fi
10150         ;;
10151 esac
10152
10153 case "$i16type" in
10154 '')     case "$shortsize" in
10155         2)      i16type=short
10156                 u16type="unsigned short"
10157                 i16size=$shortsize
10158                 u16size=$shortsize
10159                 ;;
10160         esac
10161         ;;
10162 esac
10163 case "$i16type" in
10164 '')     set try -DINT16
10165         if eval $compile; then
10166                 case "`./try$exe_ext`" in
10167                 int16_t)
10168                         i16type=int16_t
10169                         u16type=uint16_t
10170                         i16size=2
10171                         u16size=2
10172                         ;;
10173                 esac
10174         fi
10175         ;;
10176 esac
10177 case "$i16type" in
10178 '')     if $test $shortsize -ge 2; then
10179                 i16type=short
10180                 u16type="unsigned short"
10181                 i16size=$shortsize
10182                 u16size=$shortsize
10183         fi
10184         ;;
10185 esac
10186
10187 case "$i32type" in
10188 '')     case "$longsize" in
10189         4)      i32type=long
10190                 u32type="unsigned long"
10191                 i32size=$longsize
10192                 u32size=$longsize
10193                 ;;
10194         *)      case "$intsize" in
10195                 4)      i32type=int
10196                         u32type="unsigned int"
10197                         i32size=$intsize
10198                         u32size=$intsize
10199                         ;;
10200                 esac
10201                 ;;
10202         esac
10203         ;;
10204 esac
10205 case "$i32type" in
10206 '')     set try -DINT32
10207         if eval $compile; then
10208                 case "`./try$exe_ext`" in
10209                 int32_t)
10210                         i32type=int32_t
10211                         u32type=uint32_t
10212                         i32size=4
10213                         u32size=4
10214                         ;;
10215                 esac
10216         fi
10217         ;;
10218 esac
10219 case "$i32type" in
10220 '')     if $test $intsize -ge 4; then
10221                 i32type=int
10222                 u32type="unsigned int"
10223                 i32size=$intsize
10224                 u32size=$intsize
10225         fi
10226         ;;
10227 esac
10228
10229 case "$i64type" in
10230 '')     case "$d_quad:$quadtype" in
10231         define:?*)
10232                 i64type="$quadtype"
10233                 u64type="$uquadtype"
10234                 i64size=8
10235                 u64size=8
10236                 ;;
10237         esac
10238         ;;
10239 esac
10240
10241 $echo "Checking whether your NVs can preserve your UVs..." >&4
10242 $cat <<EOP >try.c
10243 #include <stdio.h>
10244 int main() {
10245     $uvtype k = ($uvtype)~0, l;
10246     $nvtype d;
10247     l = k;
10248     d = ($nvtype)l;
10249     l = ($uvtype)d;
10250     if (l == k)
10251        printf("preserve\n");
10252     exit(0);
10253 }
10254 EOP
10255 set try
10256 if eval $compile; then
10257         case "`./try$exe_ext`" in
10258         preserve) d_nv_preserves_uv="$define" ;;
10259         esac
10260 fi      
10261 case "$d_nv_preserves_uv" in
10262 $define) $echo "Yes, they can."  2>&1 ;;
10263 *)       $echo "No, they can't." 2>&1
10264          d_nv_preserves_uv="$undef"
10265          ;;
10266 esac
10267
10268 $rm -f try.* try
10269
10270 case "$d_nv_preserves_uv" in
10271 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10272 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10273         $cat <<EOP >try.c
10274 #include <stdio.h>
10275 int main() {
10276     $uvtype u = 0;
10277     int     n = 8 * $uvsize;
10278     int     i;
10279     for (i = 0; i < n; i++) {
10280       u = u << 1 | ($uvtype)1;
10281       if (($uvtype)($nvtype)u != u)
10282         break;
10283     }
10284     printf("%d\n", i);
10285     exit(0);
10286 }
10287 EOP
10288         set try
10289         if eval $compile; then
10290                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10291         fi
10292         case "$d_nv_preserves_uv_bits" in
10293         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10294         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10295                 d_nv_preserves_uv_bits="$undef"
10296                 ;;
10297         esac
10298         $rm -f try.* try
10299         ;;
10300 esac
10301
10302
10303
10304 : check for off64_t
10305 echo " "
10306 echo "Checking to see if you have off64_t..." >&4
10307 $cat >try.c <<EOCP
10308 #include <sys/types.h>
10309 #include <unistd.h>
10310 int main() { off64_t x = 7; }
10311 EOCP
10312 set try
10313 if eval $compile; then
10314         val="$define"
10315         echo "You have off64_t."
10316 else
10317         val="$undef"
10318         echo "You do not have off64_t."
10319         case "$lseeksize" in
10320         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10321         esac
10322 fi
10323 $rm -f try.* try
10324 set d_off64_t
10325 eval $setvar
10326
10327 : see if POSIX threads are available
10328 set pthread.h i_pthread
10329 eval $inhdr
10330
10331
10332
10333
10334 : how to create joinable pthreads
10335 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10336         echo " "
10337         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10338         $cat >try.c <<'EOCP'
10339 #include <pthread.h>
10340 int main() {
10341     int detachstate = JOINABLE;
10342 }
10343 EOCP
10344         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10345         if eval $compile; then
10346                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10347                 val="$undef" # Yes, undef.
10348                 set d_old_pthread_create_joinable
10349                 eval $setvar
10350                 val=""
10351                 set old_pthread_create_joinable
10352                 eval $setvar
10353         else
10354                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10355                 if eval $compile; then
10356                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10357                         val="$define"
10358                         set d_old_pthread_create_joinable
10359                         eval $setvar
10360                         val=PTHREAD_CREATE_UNDETACHED
10361                         set old_pthread_create_joinable
10362                         eval $setvar
10363                 else            
10364                         set try -DJOINABLE=__UNDETACHED
10365                         if eval $compile; then
10366                                 echo "You seem to use __UNDETACHED." >&4
10367                                 val="$define"
10368                                 set d_old_pthread_create_joinable
10369                                 eval $setvar
10370                                 val=__UNDETACHED
10371                                 set old_pthread_create_joinable
10372                                 eval $setvar
10373                         else
10374                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10375                                 val="$define"
10376                                 set d_old_pthread_create_joinable
10377                                 eval $setvar
10378                                 val=0
10379                                 set old_pthread_create_joinable
10380                                 eval $setvar
10381                         fi
10382                 fi
10383         fi
10384         $rm -f try try.*
10385 else
10386     d_old_pthread_create_joinable="$undef"
10387     old_pthread_create_joinable=""
10388 fi
10389
10390 : see if pause exists
10391 set pause d_pause
10392 eval $inlibc
10393
10394 : see if pipe exists
10395 set pipe d_pipe
10396 eval $inlibc
10397
10398 : see if poll exists
10399 set poll d_poll
10400 eval $inlibc
10401
10402
10403 : see whether the various POSIXish _yields exist
10404 $cat >try.c <<EOP
10405 #include <pthread.h>
10406 #include <stdio.h>
10407 int main() {
10408 #ifdef SCHED_YIELD
10409         sched_yield();
10410 #else
10411 #ifdef PTHREAD_YIELD
10412         pthread_yield();
10413 #else
10414 #ifdef PTHREAD_YIELD_NULL
10415         pthread_yield(NULL);
10416 #endif
10417 #endif
10418 #endif
10419 }
10420 EOP
10421 : see if sched_yield exists
10422 set try -DSCHED_YIELD
10423 if eval $compile; then
10424     val="$define"
10425     sched_yield='sched_yield()'
10426 else
10427     val="$undef"
10428 fi
10429 case "$usethreads" in
10430 $define)
10431         case "$val" in
10432         $define) echo 'sched_yield() found.' >&4        ;;
10433         *)       echo 'sched_yield() NOT found.' >&4    ;;
10434         esac
10435 esac
10436 set d_sched_yield
10437 eval $setvar
10438
10439 : see if pthread_yield exists
10440 set try -DPTHREAD_YIELD
10441 if eval $compile; then
10442     val="$define"
10443     case "$sched_yield" in
10444     '') sched_yield='pthread_yield()' ;;
10445     esac
10446 else
10447     set try -DPTHREAD_YIELD_NULL
10448     if eval $compile; then
10449         val="$define"
10450         case "$sched_yield" in
10451         '') sched_yield='pthread_yield(NULL)' ;;
10452         esac
10453     else
10454         val="$undef"
10455     fi
10456 fi
10457 case "$usethreads" in
10458 $define)
10459         case "$val" in
10460         $define) echo 'pthread_yield() found.' >&4      ;;
10461         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10462         esac
10463         ;;
10464 esac
10465 set d_pthread_yield
10466 eval $setvar
10467
10468 case "$sched_yield" in
10469 '') sched_yield=undef ;;
10470 esac
10471
10472 $rm -f try try.*
10473
10474 : see if this is a pwd.h system
10475 set pwd.h i_pwd
10476 eval $inhdr
10477
10478 case "$i_pwd" in
10479 $define)
10480         xxx=`./findhdr pwd.h`
10481         $cppstdin $cppflags $cppminus < $xxx >$$.h
10482
10483         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10484                 val="$define"
10485         else
10486                 val="$undef"
10487         fi
10488         set d_pwquota
10489         eval $setvar
10490
10491         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10492                 val="$define"
10493         else
10494                 val="$undef"
10495         fi
10496         set d_pwage
10497         eval $setvar
10498
10499         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10500                 val="$define"
10501         else
10502                 val="$undef"
10503         fi
10504         set d_pwchange
10505         eval $setvar
10506
10507         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10508                 val="$define"
10509         else
10510                 val="$undef"
10511         fi
10512         set d_pwclass
10513         eval $setvar
10514
10515         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10516                 val="$define"
10517         else
10518                 val="$undef"
10519         fi
10520         set d_pwexpire
10521         eval $setvar
10522
10523         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10524                 val="$define"
10525         else
10526                 val="$undef"
10527         fi
10528         set d_pwcomment
10529         eval $setvar
10530
10531         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10532                 val="$define"
10533         else
10534                 val="$undef"
10535         fi
10536         set d_pwgecos
10537         eval $setvar
10538
10539         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10540                 val="$define"
10541         else
10542                 val="$undef"
10543         fi
10544         set d_pwpasswd
10545         eval $setvar
10546
10547         $rm -f $$.h
10548         ;;
10549 *)
10550         val="$undef"; 
10551         set d_pwquota; eval $setvar
10552         set d_pwage; eval $setvar
10553         set d_pwchange; eval $setvar
10554         set d_pwclass; eval $setvar
10555         set d_pwexpire; eval $setvar
10556         set d_pwcomment; eval $setvar
10557         set d_pwgecos; eval $setvar
10558         set d_pwpasswd; eval $setvar
10559         ;;
10560 esac
10561
10562 : see if readdir and friends exist
10563 set readdir d_readdir
10564 eval $inlibc
10565 set seekdir d_seekdir
10566 eval $inlibc
10567 set telldir d_telldir
10568 eval $inlibc
10569 set rewinddir d_rewinddir
10570 eval $inlibc
10571
10572 : see if readlink exists
10573 set readlink d_readlink
10574 eval $inlibc
10575
10576 : see if rename exists
10577 set rename d_rename
10578 eval $inlibc
10579
10580 : see if rmdir exists
10581 set rmdir d_rmdir
10582 eval $inlibc
10583
10584 : see if memory.h is available.
10585 val=''
10586 set memory.h val
10587 eval $inhdr
10588
10589 : See if it conflicts with string.h
10590 case "$val" in
10591 $define)
10592         case "$strings" in
10593         '') ;;
10594         *)
10595                 $cppstdin $cppflags $cppminus < $strings > mem.h
10596                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10597                         echo " "
10598                         echo "We won't be including <memory.h>."
10599                         val="$undef"
10600                 fi
10601                 $rm -f mem.h
10602                 ;;
10603         esac
10604 esac
10605 set i_memory
10606 eval $setvar
10607
10608 : can bcopy handle overlapping blocks?
10609 val="$undef"
10610 case "$d_bcopy" in
10611 "$define")
10612         echo " "
10613         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10614         $cat >try.c <<EOCP
10615 #$i_memory I_MEMORY
10616 #$i_stdlib I_STDLIB
10617 #$i_string I_STRING
10618 #$i_unistd I_UNISTD
10619 EOCP
10620         $cat >>try.c <<'EOCP'
10621 #include <stdio.h>
10622 #ifdef I_MEMORY
10623 #  include <memory.h>
10624 #endif
10625 #ifdef I_STDLIB
10626 #  include <stdlib.h>
10627 #endif
10628 #ifdef I_STRING
10629 #  include <string.h>
10630 #else
10631 #  include <strings.h>
10632 #endif
10633 #ifdef I_UNISTD
10634 #  include <unistd.h>  /* Needed for NetBSD */
10635 #endif
10636 int main()
10637 {
10638 char buf[128], abc[128];
10639 char *b;
10640 int len;
10641 int off;
10642 int align;
10643
10644 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10645
10646 for (align = 7; align >= 0; align--) {
10647         for (len = 36; len; len--) {
10648                 b = buf+align;
10649                 bcopy(abc, b, len);
10650                 for (off = 1; off <= len; off++) {
10651                         bcopy(b, b+off, len);
10652                         bcopy(b+off, b, len);
10653                         if (bcmp(b, abc, len))
10654                                 exit(1);
10655                 }
10656         }
10657 }
10658 exit(0);
10659 }
10660 EOCP
10661         set try
10662         if eval $compile_ok; then
10663                 if ./try 2>/dev/null; then
10664                         echo "Yes, it can."
10665                         val="$define"
10666                 else
10667                         echo "It can't, sorry."
10668                         case "$d_memmove" in
10669                         "$define") echo "But that's Ok since you have memmove()." ;;
10670                         esac
10671                 fi
10672         else
10673                 echo "(I can't compile the test program, so we'll assume not...)"
10674                 case "$d_memmove" in
10675                 "$define") echo "But that's Ok since you have memmove()." ;;
10676                 esac
10677         fi
10678         ;;
10679 esac
10680 $rm -f try.* try core
10681 set d_safebcpy
10682 eval $setvar
10683
10684 : can memcpy handle overlapping blocks?
10685 val="$undef"
10686 case "$d_memcpy" in
10687 "$define")
10688         echo " "
10689         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10690         $cat >try.c <<EOCP
10691 #$i_memory I_MEMORY
10692 #$i_stdlib I_STDLIB
10693 #$i_string I_STRING
10694 #$i_unistd I_UNISTD
10695 EOCP
10696         $cat >>try.c <<'EOCP'
10697 #include <stdio.h>
10698 #ifdef I_MEMORY
10699 #  include <memory.h>
10700 #endif
10701 #ifdef I_STDLIB
10702 #  include <stdlib.h>
10703 #endif
10704 #ifdef I_STRING
10705 #  include <string.h>
10706 #else
10707 #  include <strings.h>
10708 #endif
10709 #ifdef I_UNISTD
10710 #  include <unistd.h>  /* Needed for NetBSD */
10711 #endif
10712 int main()
10713 {
10714 char buf[128], abc[128];
10715 char *b;
10716 int len;
10717 int off;
10718 int align;
10719
10720 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10721    try to store the string in read-only memory. */
10722 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10723
10724 for (align = 7; align >= 0; align--) {
10725         for (len = 36; len; len--) {
10726                 b = buf+align;
10727                 memcpy(b, abc, len);
10728                 for (off = 1; off <= len; off++) {
10729                         memcpy(b+off, b, len);
10730                         memcpy(b, b+off, len);
10731                         if (memcmp(b, abc, len))
10732                                 exit(1);
10733                 }
10734         }
10735 }
10736 exit(0);
10737 }
10738 EOCP
10739         set try
10740         if eval $compile_ok; then
10741                 if ./try 2>/dev/null; then
10742                         echo "Yes, it can."
10743                         val="$define"
10744                 else
10745                         echo "It can't, sorry."
10746                         case "$d_memmove" in
10747                         "$define") echo "But that's Ok since you have memmove()." ;;
10748                         esac
10749                 fi
10750         else
10751                 echo "(I can't compile the test program, so we'll assume not...)"
10752                 case "$d_memmove" in
10753                 "$define") echo "But that's Ok since you have memmove()." ;;
10754                 esac
10755         fi
10756         ;;
10757 esac
10758 $rm -f try.* try core
10759 set d_safemcpy
10760 eval $setvar
10761
10762 : can memcmp be trusted to compare relative magnitude?
10763 val="$undef"
10764 case "$d_memcmp" in
10765 "$define")
10766         echo " "
10767         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10768         $cat >try.c <<EOCP
10769 #$i_memory I_MEMORY
10770 #$i_stdlib I_STDLIB
10771 #$i_string I_STRING
10772 #$i_unistd I_UNISTD
10773 EOCP
10774         $cat >>try.c <<'EOCP'
10775 #include <stdio.h>
10776 #ifdef I_MEMORY
10777 #  include <memory.h>
10778 #endif
10779 #ifdef I_STDLIB
10780 #  include <stdlib.h>
10781 #endif
10782 #ifdef I_STRING
10783 #  include <string.h>
10784 #else
10785 #  include <strings.h>
10786 #endif
10787 #ifdef I_UNISTD
10788 #  include <unistd.h>  /* Needed for NetBSD */
10789 #endif
10790 int main()
10791 {
10792 char a = -1;
10793 char b = 0;
10794 if ((a < b) && memcmp(&a, &b, 1) < 0)
10795         exit(1);
10796 exit(0);
10797 }
10798 EOCP
10799         set try
10800         if eval $compile_ok; then
10801                 if ./try 2>/dev/null; then
10802                         echo "Yes, it can."
10803                         val="$define"
10804                 else
10805                         echo "No, it can't (it uses signed chars)."
10806                 fi
10807         else
10808                 echo "(I can't compile the test program, so we'll assume not...)"
10809         fi
10810         ;;
10811 esac
10812 $rm -f try.* try core
10813 set d_sanemcmp
10814 eval $setvar
10815
10816 : see if select exists
10817 set select d_select
10818 eval $inlibc
10819
10820 : see if semctl exists
10821 set semctl d_semctl
10822 eval $inlibc
10823
10824 : see if semget exists
10825 set semget d_semget
10826 eval $inlibc
10827
10828 : see if semop exists
10829 set semop d_semop
10830 eval $inlibc
10831
10832 : see how much of the 'sem*(2)' library is present.
10833 h_sem=true
10834 echo " "
10835 case "$d_semctl$d_semget$d_semop" in
10836 *"$undef"*) h_sem=false;;
10837 esac
10838 case "$osname" in
10839 freebsd)
10840     case "`ipcs 2>&1`" in
10841     "SVID messages"*"not configured"*)
10842         echo "Your $osname does not have the sem*(2) configured." >&4
10843         h_sem=false
10844         val="$undef"
10845         set semctl d_semctl
10846         eval $setvar
10847         set semget d_semget
10848         eval $setvar
10849         set semop d_semop
10850         eval $setvar
10851         ;;
10852     esac
10853     ;;
10854 esac
10855 : we could also check for sys/ipc.h ...
10856 if $h_sem && $test `./findhdr sys/sem.h`; then
10857         echo "You have the full sem*(2) library." >&4
10858         val="$define"
10859 else
10860         echo "You don't have the full sem*(2) library." >&4
10861         val="$undef"
10862 fi
10863 set d_sem
10864 eval $setvar
10865
10866 : see whether sys/sem.h defines union semun
10867 echo " "
10868 $cat > try.c <<'END'
10869 #include <sys/types.h>
10870 #include <sys/ipc.h>
10871 #include <sys/sem.h>
10872 int main () { union semun semun; semun.buf = 0; }
10873 END
10874 set try
10875 if eval $compile; then
10876     echo "You have union semun in <sys/sem.h>." >&4
10877     val="$define"
10878 else
10879     echo "You do not have union semun in <sys/sem.h>." >&4
10880     val="$undef"
10881 fi
10882 $rm -f try try.c try.h
10883 set d_union_semun
10884 eval $setvar
10885
10886 : see how to do semctl IPC_STAT
10887 case "$d_sem" in
10888 $define)
10889     : see whether semctl IPC_STAT can use union semun
10890     echo " "
10891     $cat > try.h <<END
10892 #ifndef S_IRUSR
10893 #   ifdef S_IREAD
10894 #       define S_IRUSR S_IREAD
10895 #       define S_IWUSR S_IWRITE
10896 #       define S_IXUSR S_IEXEC
10897 #   else
10898 #       define S_IRUSR 0400
10899 #       define S_IWUSR 0200
10900 #       define S_IXUSR 0100
10901 #   endif
10902 #   define S_IRGRP (S_IRUSR>>3)
10903 #   define S_IWGRP (S_IWUSR>>3)
10904 #   define S_IXGRP (S_IXUSR>>3)
10905 #   define S_IROTH (S_IRUSR>>6)
10906 #   define S_IWOTH (S_IWUSR>>6)
10907 #   define S_IXOTH (S_IXUSR>>6)
10908 #endif
10909 #ifndef S_IRWXU
10910 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10911 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10912 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10913 #endif
10914 END
10915
10916     $cat > try.c <<END
10917 #include <sys/types.h>
10918 #include <sys/ipc.h>
10919 #include <sys/sem.h>
10920 #include <sys/stat.h>
10921 #include <stdio.h>
10922 #include <errno.h>
10923 #include "try.h"
10924 #ifndef errno
10925 extern int errno;
10926 #endif
10927 #$d_union_semun HAS_UNION_SEMUN
10928 int main() {
10929     union semun
10930 #ifndef HAS_UNION_SEMUN
10931     {
10932         int val;
10933         struct semid_ds *buf;
10934         unsigned short *array;
10935     }
10936 #endif
10937     arg;
10938     int sem, st;
10939
10940 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10941     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10942     if (sem > -1) {
10943         struct semid_ds argbuf;
10944         arg.buf = &argbuf;
10945 #       ifdef IPC_STAT
10946         st = semctl(sem, 0, IPC_STAT, arg);
10947         if (st == 0)
10948             printf("semun\n");
10949         else
10950 #       endif /* IPC_STAT */
10951             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10952 #       ifdef IPC_RMID
10953         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10954 #       endif /* IPC_RMID */
10955             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10956     } else
10957 #endif /* IPC_PRIVATE && ... */
10958         printf("semget failed: errno = %d\n", errno);
10959   return 0;
10960 }
10961 END
10962     val="$undef"
10963     set try
10964     if eval $compile; then
10965         xxx=`./try`
10966         case "$xxx" in
10967         semun) val="$define" ;;
10968         esac
10969     fi
10970     $rm -f try try.c
10971     set d_semctl_semun
10972     eval $setvar
10973     case "$d_semctl_semun" in
10974     $define)
10975         echo "You can use union semun for semctl IPC_STAT." >&4
10976         also='also'
10977         ;;
10978     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10979         also=''
10980         ;;
10981     esac
10982
10983     : see whether semctl IPC_STAT can use struct semid_ds pointer
10984     $cat > try.c <<'END'
10985 #include <sys/types.h>
10986 #include <sys/ipc.h>
10987 #include <sys/sem.h>
10988 #include <sys/stat.h>
10989 #include "try.h"
10990 #include <stdio.h>
10991 #include <errno.h>
10992 #ifndef errno
10993 extern int errno;
10994 #endif
10995 int main() {
10996     struct semid_ds arg;
10997     int sem, st;
10998
10999 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11000     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11001     if (sem > -1) {
11002 #       ifdef IPC_STAT
11003         st = semctl(sem, 0, IPC_STAT, &arg);
11004         if (st == 0)
11005             printf("semid_ds\n");
11006         else
11007 #       endif /* IPC_STAT */
11008             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11009 #       ifdef IPC_RMID
11010         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11011 #       endif /* IPC_RMID */
11012             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11013     } else
11014 #endif /* IPC_PRIVATE && ... */
11015         printf("semget failed: errno = %d\n", errno);
11016
11017     return 0;
11018 }
11019 END
11020     val="$undef"
11021     set try
11022     if eval $compile; then
11023         xxx=`./try`
11024         case "$xxx" in
11025         semid_ds) val="$define" ;;
11026         esac
11027     fi
11028     $rm -f try try.c
11029     set d_semctl_semid_ds
11030     eval $setvar
11031     case "$d_semctl_semid_ds" in
11032     $define)
11033         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11034         ;;
11035     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11036         ;;
11037     esac
11038     $rm -f try.h
11039     ;;
11040 *)  val="$undef"
11041
11042     # We do not have the full sem*(2) library, so assume we can not
11043     # use either.
11044
11045     set d_semctl_semun
11046     eval $setvar
11047
11048     set d_semctl_semid_ds
11049     eval $setvar
11050     ;;
11051 esac
11052
11053 : see if setegid exists
11054 set setegid d_setegid
11055 eval $inlibc
11056
11057 : see if seteuid exists
11058 set seteuid d_seteuid
11059 eval $inlibc
11060
11061 : see if setgrent exists
11062 set setgrent d_setgrent
11063 eval $inlibc
11064
11065 : see if sethostent exists
11066 set sethostent d_sethent
11067 eval $inlibc
11068
11069 : see if setlinebuf exists
11070 set setlinebuf d_setlinebuf
11071 eval $inlibc
11072
11073 : see if setlocale exists
11074 set setlocale d_setlocale
11075 eval $inlibc
11076
11077 : see if setnetent exists
11078 set setnetent d_setnent
11079 eval $inlibc
11080
11081 : see if setprotoent exists
11082 set setprotoent d_setpent
11083 eval $inlibc
11084
11085 : see if setpgid exists
11086 set setpgid d_setpgid
11087 eval $inlibc
11088
11089 : see if setpgrp2 exists
11090 set setpgrp2 d_setpgrp2
11091 eval $inlibc
11092
11093 : see if setpriority exists
11094 set setpriority d_setprior
11095 eval $inlibc
11096
11097 : see if setproctitle exists
11098 set setproctitle d_setproctitle
11099 eval $inlibc
11100
11101 : see if setpwent exists
11102 set setpwent d_setpwent
11103 eval $inlibc
11104
11105 : see if setregid exists
11106 set setregid d_setregid
11107 eval $inlibc
11108 set setresgid d_setresgid
11109 eval $inlibc
11110
11111 : see if setreuid exists
11112 set setreuid d_setreuid
11113 eval $inlibc
11114 set setresuid d_setresuid
11115 eval $inlibc
11116
11117 : see if setrgid exists
11118 set setrgid d_setrgid
11119 eval $inlibc
11120
11121 : see if setruid exists
11122 set setruid d_setruid
11123 eval $inlibc
11124
11125 : see if setservent exists
11126 set setservent d_setsent
11127 eval $inlibc
11128
11129 : see if setsid exists
11130 set setsid d_setsid
11131 eval $inlibc
11132
11133 : see if setvbuf exists
11134 set setvbuf d_setvbuf
11135 eval $inlibc
11136
11137 : see if sfio.h is available
11138 set sfio.h i_sfio
11139 eval $inhdr
11140
11141
11142 : see if sfio library is available
11143 case "$i_sfio" in
11144 $define)
11145         val=''
11146         set sfreserve val
11147         eval $inlibc
11148         ;;
11149 *)
11150         val="$undef"
11151         ;;
11152 esac
11153 : Ok, but do we want to use it.
11154 case "$val" in
11155 $define)
11156         case "$usesfio" in
11157         true|$define|[yY]*) dflt='y';;
11158         *) dflt='n';;
11159         esac
11160         echo "$package can use the sfio library, but it is experimental."
11161         rp="You seem to have sfio available, do you want to try using it?"
11162         . ./myread
11163         case "$ans" in
11164         y|Y) ;;
11165         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11166                 val="$undef"
11167                 : Remove sfio from list of libraries to use
11168                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11169                 shift
11170                 libs="$*"
11171                 echo "libs = $libs" >&4
11172                 ;;
11173         esac
11174         ;;
11175 *)      case "$usesfio" in
11176         true|$define|[yY]*)
11177                 echo "Sorry, cannot find sfio on this machine" >&4
11178                 echo "Ignoring your setting of usesfio=$usesfio" >&4
11179                 ;;
11180         esac
11181         ;;
11182 esac
11183 set d_sfio
11184 eval $setvar
11185 case "$d_sfio" in
11186 $define) usesfio='true';;
11187 *) usesfio='false';;
11188 esac
11189
11190 : see if shmctl exists
11191 set shmctl d_shmctl
11192 eval $inlibc
11193
11194 : see if shmget exists
11195 set shmget d_shmget
11196 eval $inlibc
11197
11198 : see if shmat exists
11199 set shmat d_shmat
11200 eval $inlibc
11201 : see what shmat returns
11202 case "$d_shmat" in
11203 "$define")
11204         $cat >shmat.c <<'END'
11205 #include <sys/shm.h>
11206 void *shmat();
11207 END
11208         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11209                 shmattype='void *'
11210         else
11211                 shmattype='char *'
11212         fi
11213         echo "and it returns ($shmattype)." >&4
11214         : see if a prototype for shmat is available
11215         xxx=`./findhdr sys/shm.h`
11216         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11217         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11218                 val="$define"
11219         else
11220                 val="$undef"
11221         fi
11222         $rm -f shmat.[co]
11223         ;;
11224 *)
11225         val="$undef"
11226         ;;
11227 esac
11228 set d_shmatprototype
11229 eval $setvar
11230
11231 : see if shmdt exists
11232 set shmdt d_shmdt
11233 eval $inlibc
11234
11235 : see how much of the 'shm*(2)' library is present.
11236 h_shm=true
11237 echo " "
11238 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11239 *"$undef"*) h_shm=false;;
11240 esac
11241 case "$osname" in
11242 freebsd)
11243     case "`ipcs 2>&1`" in
11244     "SVID shared memory"*"not configured"*)
11245         echo "Your $osname does not have the shm*(2) configured." >&4
11246         h_shm=false
11247         val="$undef"
11248         set shmctl d_shmctl
11249         evat $setvar
11250         set shmget d_shmget
11251         evat $setvar
11252         set shmat d_shmat
11253         evat $setvar
11254         set shmdt d_shmdt
11255         evat $setvar
11256         ;;
11257     esac
11258     ;;
11259 esac
11260 : we could also check for sys/ipc.h ...
11261 if $h_shm && $test `./findhdr sys/shm.h`; then
11262         echo "You have the full shm*(2) library." >&4
11263         val="$define"
11264 else
11265         echo "You don't have the full shm*(2) library." >&4
11266         val="$undef"
11267 fi
11268 set d_shm
11269 eval $setvar
11270
11271 echo " "
11272 : see if we have sigaction
11273 if set sigaction val -f d_sigaction; eval $csym; $val; then
11274         echo 'sigaction() found.' >&4
11275         $cat > try.c <<'EOP'
11276 #include <stdio.h>
11277 #include <sys/types.h>
11278 #include <signal.h>
11279 int main()
11280 {
11281     struct sigaction act, oact;
11282     act.sa_flags = 0;
11283     oact.sa_handler = 0;
11284     /* so that act and oact are used */
11285     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11286 }
11287 EOP
11288         set try
11289         if eval $compile_ok; then
11290                 val="$define"
11291         else
11292                 echo "But you don't seem to have a useable struct sigaction." >&4
11293                 val="$undef"
11294         fi
11295 else
11296         echo 'sigaction NOT found.' >&4
11297         val="$undef"
11298 fi
11299 set d_sigaction; eval $setvar
11300 $rm -f try try$_o try.c
11301
11302 : see if sigsetjmp exists
11303 echo " "
11304 case "$d_sigsetjmp" in
11305 '')
11306         $cat >try.c <<'EOP'
11307 #include <setjmp.h>
11308 sigjmp_buf env;
11309 int set = 1;
11310 int main()
11311 {
11312         if (sigsetjmp(env,1))
11313                 exit(set);
11314         set = 0;
11315         siglongjmp(env, 1);
11316         exit(1);
11317 }
11318 EOP
11319         set try
11320         if eval $compile; then
11321                 if ./try >/dev/null 2>&1; then
11322                         echo "POSIX sigsetjmp found." >&4
11323                         val="$define"
11324                 else
11325                         $cat >&4 <<EOM
11326 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11327 I'll ignore them.
11328 EOM
11329                         val="$undef"
11330                 fi
11331         else
11332                 echo "sigsetjmp not found." >&4
11333                 val="$undef"
11334         fi
11335         ;;
11336 *) val="$d_sigsetjmp"
11337         case "$d_sigsetjmp" in
11338         $define) echo "POSIX sigsetjmp found." >&4;;
11339         $undef) echo "sigsetjmp not found." >&4;;
11340         esac
11341         ;;
11342 esac
11343 set d_sigsetjmp
11344 eval $setvar
11345 $rm -f try.c try
11346
11347 : see if sys/stat.h is available
11348 set sys/stat.h i_sysstat
11349 eval $inhdr
11350
11351
11352 : see if stat knows about block sizes
11353 echo " "
11354 echo "Checking to see if your struct stat has st_blocks field..." >&4
11355 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11356 eval $hasfield
11357
11358
11359 : see if this is a sys/vfs.h system
11360 set sys/vfs.h i_sysvfs
11361 eval $inhdr
11362
11363
11364 : see if this is a sys/statfs.h system
11365 set sys/statfs.h i_sysstatfs
11366 eval $inhdr
11367
11368
11369 echo " "
11370 echo "Checking to see if your system supports struct statfs..." >&4
11371 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
11372 eval $hasstruct
11373 case "$d_statfs_s" in
11374 "$define")      echo "Yes, it does."   ;;
11375 *)              echo "No, it doesn't." ;;
11376 esac
11377
11378
11379
11380 : see if struct statfs knows about f_flags
11381 case "$d_statfs_s" in
11382 define) 
11383         echo " "
11384         echo "Checking to see if your struct statfs has f_flags field..." >&4
11385         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
11386         eval $hasfield
11387         ;;
11388 *)      val="$undef"
11389         set d_statfs_f_flags
11390         eval $setvar
11391         ;;
11392 esac
11393 case "$d_statfs_f_flags" in
11394 "$define")      echo "Yes, it does."   ;;
11395 *)              echo "No, it doesn't." ;;
11396 esac
11397
11398 : see if _ptr and _cnt from stdio act std
11399 echo " "
11400 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11401         echo "(Looks like you have stdio.h from Linux.)"
11402         case "$stdio_ptr" in
11403         '') stdio_ptr='((fp)->_IO_read_ptr)'
11404                 ptr_lval=$define
11405                 ;;
11406         *)      ptr_lval=$d_stdio_ptr_lval;;
11407         esac
11408         case "$stdio_cnt" in
11409         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11410                 cnt_lval=$undef
11411                 ;;
11412         *)      cnt_lval=$d_stdio_cnt_lval;;
11413         esac
11414         case "$stdio_base" in
11415         '') stdio_base='((fp)->_IO_read_base)';;
11416         esac
11417         case "$stdio_bufsiz" in
11418         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11419         esac
11420 else
11421         case "$stdio_ptr" in
11422         '') stdio_ptr='((fp)->_ptr)'
11423                 ptr_lval=$define
11424                 ;;
11425         *)      ptr_lval=$d_stdio_ptr_lval;;
11426         esac
11427         case "$stdio_cnt" in
11428         '') stdio_cnt='((fp)->_cnt)'
11429                 cnt_lval=$define
11430                 ;;
11431         *)      cnt_lval=$d_stdio_cnt_lval;;
11432         esac
11433         case "$stdio_base" in
11434         '') stdio_base='((fp)->_base)';;
11435         esac
11436         case "$stdio_bufsiz" in
11437         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11438         esac
11439 fi
11440 : test whether _ptr and _cnt really work
11441 echo "Checking how std your stdio is..." >&4
11442 $cat >try.c <<EOP
11443 #include <stdio.h>
11444 #define FILE_ptr(fp)    $stdio_ptr
11445 #define FILE_cnt(fp)    $stdio_cnt
11446 int main() {
11447         FILE *fp = fopen("try.c", "r");
11448         char c = getc(fp);
11449         if (
11450                 18 <= FILE_cnt(fp) &&
11451                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11452         )
11453                 exit(0);
11454         exit(1);
11455 }
11456 EOP
11457 val="$undef"
11458 set try
11459 if eval $compile; then
11460         if ./try; then
11461                 echo "Your stdio acts pretty std."
11462                 val="$define"
11463         else
11464                 echo "Your stdio isn't very std."
11465         fi
11466 else
11467         echo "Your stdio doesn't appear very std."
11468 fi
11469 $rm -f try.c try
11470 set d_stdstdio
11471 eval $setvar
11472
11473 : Can _ptr be used as an lvalue?
11474 case "$d_stdstdio$ptr_lval" in
11475 $define$define) val=$define ;;
11476 *) val=$undef ;;
11477 esac
11478 set d_stdio_ptr_lval
11479 eval $setvar
11480
11481 : Can _cnt be used as an lvalue?
11482 case "$d_stdstdio$cnt_lval" in
11483 $define$define) val=$define ;;
11484 *) val=$undef ;;
11485 esac
11486 set d_stdio_cnt_lval
11487 eval $setvar
11488
11489 : see if _base is also standard
11490 val="$undef"
11491 case "$d_stdstdio" in
11492 $define)
11493         $cat >try.c <<EOP
11494 #include <stdio.h>
11495 #define FILE_base(fp)   $stdio_base
11496 #define FILE_bufsiz(fp) $stdio_bufsiz
11497 int main() {
11498         FILE *fp = fopen("try.c", "r");
11499         char c = getc(fp);
11500         if (
11501                 19 <= FILE_bufsiz(fp) &&
11502                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11503         )
11504                 exit(0);
11505         exit(1);
11506 }
11507 EOP
11508         set try
11509         if eval $compile; then
11510                 if ./try; then
11511                         echo "And its _base field acts std."
11512                         val="$define"
11513                 else
11514                         echo "But its _base field isn't std."
11515                 fi
11516         else
11517                 echo "However, it seems to be lacking the _base field."
11518         fi
11519         $rm -f try.c try
11520         ;;
11521 esac
11522 set d_stdiobase
11523 eval $setvar
11524
11525 $cat >&4 <<EOM
11526 Checking how to access stdio streams by file descriptor number...
11527 EOM
11528 case "$stdio_stream_array" in
11529 '')     $cat >try.c <<EOCP
11530 #include <stdio.h>
11531 int main() {
11532   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11533     printf("yes\n");
11534 }
11535 EOCP
11536         for s in _iob __iob __sF
11537         do
11538                 set try -DSTDIO_STREAM_ARRAY=$s
11539                 if eval $compile; then
11540                         case "`./try$exe_ext`" in
11541                         yes)    stdio_stream_array=$s; break ;;
11542                         esac
11543                 fi
11544         done
11545         $rm -f try.* try$exe_ext
11546 esac
11547 case "$stdio_stream_array" in
11548 '')     $cat >&4 <<EOM
11549 I can't figure out how to access stdio streams by file descriptor number.
11550 EOM
11551         d_stdio_stream_array="$undef"
11552         ;;
11553 *)      $cat >&4 <<EOM
11554 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11555 EOM
11556         d_stdio_stream_array="$define"
11557         ;;
11558 esac
11559
11560 : see if strcoll exists
11561 set strcoll d_strcoll
11562 eval $inlibc
11563
11564 : check for structure copying
11565 echo " "
11566 echo "Checking to see if your C compiler can copy structs..." >&4
11567 $cat >try.c <<'EOCP'
11568 int main()
11569 {
11570         struct blurfl {
11571                 int dyick;
11572         } foo, bar;
11573
11574         foo = bar;
11575 }
11576 EOCP
11577 if $cc -c try.c >/dev/null 2>&1 ; then
11578         val="$define"
11579         echo "Yup, it can."
11580 else
11581         val="$undef"
11582         echo "Nope, it can't."
11583 fi
11584 set d_strctcpy
11585 eval $setvar
11586 $rm -f try.*
11587
11588 : see if strerror and/or sys_errlist[] exist
11589 echo " "
11590 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11591     if set strerror val -f d_strerror; eval $csym; $val; then
11592                 echo 'strerror() found.' >&4
11593                 d_strerror="$define"
11594                 d_strerrm='strerror(e)'
11595                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11596                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11597                         d_syserrlst="$define"
11598                 else
11599                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11600                         d_syserrlst="$undef"
11601                 fi
11602     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11603                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11604                 echo 'strerror() found in string header.' >&4
11605                 d_strerror="$define"
11606                 d_strerrm='strerror(e)'
11607                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11608                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11609                                 d_syserrlst="$define"
11610                 else
11611                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11612                         d_syserrlst="$undef"
11613                 fi
11614     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11615                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11616                 d_strerror="$undef"
11617                 d_syserrlst="$define"
11618                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11619     else
11620                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11621                 d_strerror="$undef"
11622                 d_syserrlst="$undef"
11623                 d_strerrm='"unknown"'
11624     fi
11625 fi
11626
11627 : see if strtod exists
11628 set strtod d_strtod
11629 eval $inlibc
11630
11631 : see if strtol exists
11632 set strtol d_strtol
11633 eval $inlibc
11634
11635 : see if strtold exists
11636 set strtold d_strtold
11637 eval $inlibc
11638
11639 : see if strtoll exists
11640 set strtoll d_strtoll
11641 eval $inlibc
11642
11643 case "$d_longlong-$d_strtoll" in
11644 "$define-$define")
11645         $cat <<EOM
11646 Checking whether your strtoll() works okay...
11647 EOM
11648         $cat >try.c <<'EOCP'
11649 #include <errno.h>
11650 #ifdef __hpux
11651 #define strtoll __strtoll
11652 #endif
11653 #include <stdio.h>
11654 extern long long int strtoll(char *s, char **, int); 
11655 static int bad = 0;
11656 int check(char *s, long long ell, int een) {
11657         long long gll;
11658         errno = 0;
11659         gll = strtoll(s, 0, 10);
11660         if (!((gll == ell) && (errno == een)))
11661                 bad++;
11662 }
11663 int main() {
11664         check(" 1",                                      1LL, 0);
11665         check(" 0",                                      0LL, 0);
11666         check("-1",                                     -1LL, 0);
11667         check("-9223372036854775808", -9223372036854775808LL, 0);
11668         check("-9223372036854775808", -9223372036854775808LL, 0);
11669         check(" 9223372036854775807",  9223372036854775807LL, 0);
11670         check("-9223372036854775808", -9223372036854775808LL, 0);
11671         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11672         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11673         if (!bad)
11674                 printf("ok\n");
11675 }
11676 EOCP
11677         set try
11678         if eval $compile; then
11679                 case "`./try`" in
11680                 ok) echo "Your strtoll() seems to be working okay." ;;
11681                 *) cat <<EOM >&4
11682 Your strtoll() doesn't seem to be working okay.
11683 EOM
11684                    d_strtoll="$undef"
11685                    ;;
11686                 esac
11687         fi
11688         ;;
11689 esac
11690
11691 : see if strtoul exists
11692 set strtoul d_strtoul
11693 eval $inlibc
11694
11695 : see if strtoull exists
11696 set strtoull d_strtoull
11697 eval $inlibc
11698
11699 case "$d_longlong-$d_strtoull" in
11700 "$define-$define")
11701         $cat <<EOM
11702 Checking whether your strtoull() works okay...
11703 EOM
11704         $cat >try.c <<'EOCP'
11705 #include <errno.h>
11706 #ifdef __hpux
11707 #define strtoull __strtoull
11708 #endif
11709 #include <stdio.h>
11710 extern unsigned long long int strtoull(char *s, char **, int); 
11711 static int bad = 0;
11712 int check(char *s, long long eull, int een) {
11713         long long gull;
11714         errno = 0;
11715         gull = strtoull(s, 0, 10);
11716         if (!((gull == eull) && (errno == een)))
11717                 bad++;
11718 }
11719 int main() {
11720         check(" 1",                                       1LL, 0);
11721         check(" 0",                                       0LL, 0);
11722         check("18446744073709551615", 18446744073709551615ULL, 0);
11723         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11724         if (!bad)
11725                 printf("ok\n");
11726 }
11727 EOCP
11728         set try
11729         if eval $compile; then
11730                 case "`./try`" in
11731                 ok) echo "Your strtoull() seems to be working okay." ;;
11732                 *) cat <<EOM >&4
11733 Your strtoull() doesn't seem to be working okay.
11734 EOM
11735                    d_strtoull="$undef"
11736                    ;;
11737                 esac
11738         fi
11739         ;;
11740 esac
11741
11742 : see if strtouq exists
11743 set strtouq d_strtouq
11744 eval $inlibc
11745
11746 : see if strxfrm exists
11747 set strxfrm d_strxfrm
11748 eval $inlibc
11749
11750 : see if symlink exists
11751 set symlink d_symlink
11752 eval $inlibc
11753
11754 : see if syscall exists
11755 set syscall d_syscall
11756 eval $inlibc
11757
11758 : see if sysconf exists
11759 set sysconf d_sysconf
11760 eval $inlibc
11761
11762 : see if system exists
11763 set system d_system
11764 eval $inlibc
11765
11766 : see if tcgetpgrp exists
11767 set tcgetpgrp d_tcgetpgrp
11768 eval $inlibc
11769
11770 : see if tcsetpgrp exists
11771 set tcsetpgrp d_tcsetpgrp
11772 eval $inlibc
11773
11774 : see if prototype for telldir is available
11775 echo " "
11776 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11777 eval $hasproto
11778
11779 : see if this is a sys/times.h system
11780 set sys/times.h i_systimes
11781 eval $inhdr
11782
11783 : see if times exists
11784 echo " "
11785 if set times val -f d_times; eval $csym; $val; then
11786         echo 'times() found.' >&4
11787         d_times="$define"
11788         inc=''
11789         case "$i_systimes" in
11790         "$define") inc='sys/times.h';;
11791         esac
11792         rp="What is the type returned by times() on this system?"
11793         set clock_t clocktype long stdio.h sys/types.h $inc
11794         eval $typedef_ask
11795 else
11796         echo 'times() NOT found, hope that will do.' >&4
11797         d_times="$undef"
11798         clocktype='int'
11799 fi
11800
11801 : see if truncate exists
11802 set truncate d_truncate
11803 eval $inlibc
11804
11805 : see if tzname[] exists
11806 echo " "
11807 if set tzname val -a d_tzname; eval $csym; $val; then
11808         val="$define"
11809         echo 'tzname[] found.' >&4
11810 else
11811         val="$undef"
11812         echo 'tzname[] NOT found.' >&4
11813 fi
11814 set d_tzname
11815 eval $setvar
11816
11817 : see if umask exists
11818 set umask d_umask
11819 eval $inlibc
11820
11821 : see if ustat exists
11822 set ustat d_ustat
11823 eval $inlibc
11824
11825 : backward compatibility for d_hvfork
11826 if test X$d_hvfork != X; then
11827         d_vfork="$d_hvfork"
11828         d_hvfork=''
11829 fi
11830 : see if there is a vfork
11831 val=''
11832 set vfork val
11833 eval $inlibc
11834
11835 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11836 : perl on Solaris 2.x, and probably elsewhere.
11837 case "$val" in
11838 $define)
11839         echo " "
11840         case "$usevfork" in
11841         false) dflt='n';;
11842         *) dflt='y';;
11843         esac
11844         cat <<'EOM'
11845  
11846 Perl can only use a vfork() that doesn't suffer from strict
11847 restrictions on calling functions or modifying global data in
11848 the child.  For example, glibc-2.1 contains such a vfork()
11849 that is unsuitable.  If your system provides a proper fork()
11850 call, chances are that you do NOT want perl to use vfork().
11851
11852 EOM
11853         rp="Do you still want to use vfork()?"
11854         . ./myread
11855         case "$ans" in
11856         y|Y) ;;
11857         *)
11858                 echo "Ok, we won't use vfork()."
11859                 val="$undef"
11860                 ;;
11861         esac
11862         ;;
11863 esac
11864 set d_vfork
11865 eval $setvar
11866 case "$d_vfork" in
11867 $define) usevfork='true';;
11868 *) usevfork='false';;
11869 esac
11870
11871 : see if this is an sysdir system
11872 set sys/dir.h i_sysdir
11873 eval $inhdr
11874
11875 : see if this is an sysndir system
11876 set sys/ndir.h i_sysndir
11877 eval $inhdr
11878
11879 : see if closedir exists
11880 set closedir d_closedir
11881 eval $inlibc
11882
11883 case "$d_closedir" in
11884 "$define")
11885         echo " "
11886         echo "Checking whether closedir() returns a status..." >&4
11887         cat > closedir.c <<EOM
11888 #$i_dirent I_DIRENT             /**/
11889 #$i_sysdir I_SYS_DIR            /**/
11890 #$i_sysndir I_SYS_NDIR          /**/
11891 #$i_systypes I_SYS_TYPES        /**/
11892
11893 #if defined(I_SYS_TYPES)
11894 #include <sys/types.h>
11895 #endif
11896 #if defined(I_DIRENT)
11897 #include <dirent.h>
11898 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11899 #include <sys/dir.h>
11900 #endif
11901 #else
11902 #ifdef I_SYS_NDIR
11903 #include <sys/ndir.h>
11904 #else
11905 #ifdef I_SYS_DIR
11906 #ifdef hp9000s500
11907 #include <ndir.h>       /* may be wrong in the future */
11908 #else
11909 #include <sys/dir.h>
11910 #endif
11911 #endif
11912 #endif
11913 #endif 
11914 int main() { return closedir(opendir(".")); }
11915 EOM
11916         set closedir
11917         if eval $compile_ok; then
11918                 if ./closedir > /dev/null 2>&1 ; then
11919                         echo "Yes, it does."
11920                         val="$undef"
11921                 else
11922                         echo "No, it doesn't."
11923                         val="$define"
11924                 fi
11925         else
11926                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11927                 val="$define"
11928         fi
11929         ;;
11930 *)
11931         val="$undef";
11932         ;;
11933 esac
11934 set d_void_closedir
11935 eval $setvar
11936 $rm -f closedir*
11937 : check for volatile keyword
11938 echo " "
11939 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11940 $cat >try.c <<'EOCP'
11941 int main()
11942 {
11943         typedef struct _goo_struct goo_struct;
11944         goo_struct * volatile goo = ((goo_struct *)0);
11945         struct _goo_struct {
11946                 long long_int;
11947                 int reg_int;
11948                 char char_var;
11949         };
11950         typedef unsigned short foo_t;
11951         char *volatile foo;
11952         volatile int bar;
11953         volatile foo_t blech;
11954         foo = foo;
11955 }
11956 EOCP
11957 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11958         val="$define"
11959         echo "Yup, it does."
11960 else
11961         val="$undef"
11962         echo "Nope, it doesn't."
11963 fi
11964 set d_volatile
11965 eval $setvar
11966 $rm -f try.*
11967
11968 : see if there is a wait4
11969 set wait4 d_wait4
11970 eval $inlibc
11971
11972 : see if waitpid exists
11973 set waitpid d_waitpid
11974 eval $inlibc
11975
11976 : see if wcstombs exists
11977 set wcstombs d_wcstombs
11978 eval $inlibc
11979
11980 : see if wctomb exists
11981 set wctomb d_wctomb
11982 eval $inlibc
11983
11984 : preserve RCS keywords in files with variable substitution, grrr
11985 Date='$Date'
11986 Id='$Id'
11987 Log='$Log'
11988 RCSfile='$RCSfile'
11989 Revision='$Revision'
11990
11991 case "$crosscompile" in
11992 ''|[nN]*) crosscompile="$undef" ;;
11993 esac
11994
11995 case "$osname" in
11996 next|rhapsody|darwin) multiarch="$define" ;;
11997 esac
11998 case "$multiarch" in
11999 ''|[nN]*) multiarch="$undef" ;;
12000 esac
12001
12002 : check for alignment requirements
12003 echo " "
12004 case "$crosscompile$multiarch" in
12005 *$define*)
12006         $cat <<EOM
12007 You seem to be either cross-compiling or doing a multiarchitecture build,
12008 skipping the memory alignment check.
12009
12010 EOM
12011         case "$alignbytes" in
12012         '') alignbytes=8 ;;
12013         esac
12014         ;;
12015 *)
12016         case "$alignbytes" in
12017         '') echo "Checking alignment constraints..." >&4
12018                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12019                         $cat >try.c <<'EOCP'
12020 typedef long double NV;
12021 EOCP
12022                 else
12023                         $cat >try.c <<'EOCP'
12024 typedef double NV;
12025 EOCP
12026                 fi
12027                 $cat >>try.c <<'EOCP'
12028 #include <stdio.h>
12029 struct foobar {
12030         char foo;
12031         NV bar;
12032 } try_algn;
12033 int main()
12034 {
12035     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12036     return(0);
12037 }
12038 EOCP
12039                 set try
12040                 if eval $compile_ok; then
12041                         dflt=`./try`
12042                 else
12043                         dflt='8'
12044                         echo "(I can't seem to compile the test program...)"
12045                 fi
12046                 ;;
12047         *) dflt="$alignbytes"
12048                 ;;
12049         esac
12050         rp="Doubles must be aligned on a how-many-byte boundary?"
12051         . ./myread
12052         alignbytes="$ans"
12053         $rm -f try.c try
12054         ;;
12055 esac
12056
12057
12058 : set the base revision
12059 baserev=5.0
12060
12061 : check for ordering of bytes in a long
12062 echo " "
12063 case "$crosscompile$multiarch" in
12064 *$define*)
12065         $cat <<EOM
12066 You seem to be either cross-compiling or doing a multiarchitecture build,
12067 skipping the byteorder check.
12068
12069 EOM
12070         byteorder='0xffff'
12071         ;;
12072 *)
12073         case "$byteorder" in
12074         '')
12075                 $cat <<'EOM'
12076 In the following, larger digits indicate more significance.  A big-endian
12077 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12078 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12079 machines may have weird orders like 3412.  A Cray will report 87654321,
12080 an Alpha will report 12345678. If the test program works the default is
12081 probably right.
12082 I'm now running the test program...
12083 EOM
12084                 $cat >try.c <<'EOCP'
12085 #include <stdio.h>
12086 int main()
12087 {
12088         int i;
12089         union {
12090                 unsigned long l;
12091                 char c[sizeof(long)];
12092         } u;
12093
12094         if (sizeof(long) > 4)
12095                 u.l = (0x08070605L << 32) | 0x04030201L;
12096         else
12097                 u.l = 0x04030201L;
12098         for (i = 0; i < sizeof(long); i++)
12099                 printf("%c", u.c[i]+'0');
12100         printf("\n");
12101         exit(0);
12102 }
12103 EOCP
12104                 xxx_prompt=y
12105                 set try
12106                 if eval $compile && ./try > /dev/null; then
12107                         dflt=`./try`
12108                         case "$dflt" in
12109                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12110                                 echo "(The test program ran ok.)"
12111                                 echo "byteorder=$dflt"
12112                                 xxx_prompt=n
12113                         ;;
12114                         ????|????????) echo "(The test program ran ok.)" ;;
12115                         *) echo "(The test program didn't run right for some reason.)" ;;
12116                         esac
12117                 else
12118                         dflt='4321'
12119                         cat <<'EOM'
12120 (I can't seem to compile the test program.  Guessing big-endian...)
12121 EOM
12122                 fi
12123                 case "$xxx_prompt" in
12124                 y)
12125                         rp="What is the order of bytes in a long?"
12126                         . ./myread
12127                         byteorder="$ans"
12128                         ;;
12129                 *)      byteorder=$dflt
12130                         ;;
12131                 esac
12132                 ;;
12133         esac
12134         $rm -f try.c try
12135         ;;
12136 esac
12137
12138
12139 : how do we catenate cpp tokens here?
12140 echo " "
12141 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12142 $cat >cpp_stuff.c <<'EOCP'
12143 #define RCAT(a,b)a/**/b
12144 #define ACAT(a,b)a ## b
12145 RCAT(Rei,ser)
12146 ACAT(Cir,cus)
12147 EOCP
12148 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12149 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12150         echo "Oh!  Smells like ANSI's been here." >&4
12151         echo "We can catify or stringify, separately or together!"
12152         cpp_stuff=42
12153 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12154         echo "Ah, yes!  The good old days!" >&4
12155         echo "However, in the good old days we don't know how to stringify and"
12156         echo "catify at the same time."
12157         cpp_stuff=1
12158 else
12159         $cat >&4 <<EOM
12160 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12161 to have to edit the values of CAT[2-5] in config.h...
12162 EOM
12163         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12164 fi
12165 $rm -f cpp_stuff.*
12166
12167 : see if this is a db.h system
12168 set db.h i_db
12169 eval $inhdr
12170
12171 case "$i_db" in
12172 $define)
12173         : Check db version.
12174         echo " "
12175         echo "Checking Berkeley DB version ..." >&4
12176         $cat >try.c <<EOCP
12177 #$d_const HASCONST
12178 #ifndef HASCONST
12179 #define const
12180 #endif
12181 #include <sys/types.h>
12182 #include <stdio.h>
12183 #include <db.h>
12184 int main()
12185 {
12186 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12187     int Major, Minor, Patch ;
12188     unsigned long Version ;
12189     (void)db_version(&Major, &Minor, &Patch) ;
12190     printf("You have Berkeley DB Version 2 or greater\n");
12191
12192     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12193                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12194     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12195                 Major, Minor, Patch) ;
12196
12197     /* check that db.h & libdb are compatible */
12198     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12199         printf("db.h and libdb are incompatible\n") ;
12200         exit(3);        
12201     }
12202
12203     printf("db.h and libdb are compatible\n") ;
12204
12205     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12206                 + DB_VERSION_PATCH ;
12207
12208     /* needs to be >= 2.3.4 */
12209     if (Version < 2003004) {
12210     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12211         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12212         exit(2);        
12213     }
12214
12215     exit(0);
12216 #else
12217 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12218     printf("You have Berkeley DB Version 1\n");
12219     exit(0);    /* DB version < 2: the coast is clear. */
12220 #else
12221     exit(1);    /* <db.h> not Berkeley DB? */
12222 #endif
12223 #endif
12224 }
12225 EOCP
12226         set try
12227         if eval $compile_ok && ./try; then
12228                 echo 'Looks OK.' >&4
12229         else
12230                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12231                 i_db=$undef
12232                 case " $libs " in
12233                 *"-ldb "*)
12234                         : Remove db from list of libraries to use
12235                         echo "Removing unusable -ldb from library list" >&4
12236                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12237                         shift
12238                         libs="$*"
12239                         echo "libs = $libs" >&4
12240                         ;;
12241                 esac
12242         fi
12243         $rm -f try.*
12244         ;;
12245 esac
12246
12247 case "$i_db" in
12248 define)
12249         : Check the return type needed for hash 
12250         echo " "
12251         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12252         $cat >try.c <<EOCP
12253 #$d_const HASCONST
12254 #ifndef HASCONST
12255 #define const
12256 #endif
12257 #include <sys/types.h>
12258 #include <db.h>
12259
12260 #ifndef DB_VERSION_MAJOR
12261 u_int32_t hash_cb (ptr, size)
12262 const void *ptr;
12263 size_t size;
12264 {
12265 }
12266 HASHINFO info;
12267 int main()
12268 {
12269         info.hash = hash_cb;
12270 }
12271 #endif
12272 EOCP
12273         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12274                 if $contains warning try.out >>/dev/null 2>&1 ; then
12275                         db_hashtype='int'
12276                 else
12277                         db_hashtype='u_int32_t'
12278                 fi
12279         else
12280                 : XXX Maybe we should just give up here.
12281                 db_hashtype=u_int32_t
12282                 $cat try.out >&4
12283                 echo "Help:  I can't seem to compile the db test program." >&4
12284                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12285         fi
12286         $rm -f try.*
12287         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12288         ;;
12289 *)      db_hashtype=u_int32_t
12290         ;;
12291 esac
12292 case "$i_db" in
12293 define)
12294         : Check the return type needed for prefix 
12295         echo " "
12296         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12297         cat >try.c <<EOCP
12298 #$d_const HASCONST
12299 #ifndef HASCONST
12300 #define const
12301 #endif
12302 #include <sys/types.h>
12303 #include <db.h>
12304
12305 #ifndef DB_VERSION_MAJOR
12306 size_t prefix_cb (key1, key2)
12307 const DBT *key1;
12308 const DBT *key2;
12309 {
12310 }
12311 BTREEINFO info;
12312 int main()
12313 {
12314         info.prefix = prefix_cb;
12315 }
12316 #endif
12317 EOCP
12318         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12319                 if $contains warning try.out >>/dev/null 2>&1 ; then
12320                         db_prefixtype='int'
12321                 else
12322                         db_prefixtype='size_t'
12323                 fi
12324         else
12325                 db_prefixtype='size_t'
12326                 : XXX Maybe we should just give up here.
12327                 $cat try.out >&4
12328                 echo "Help:  I can't seem to compile the db test program." >&4
12329                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12330         fi
12331         $rm -f try.*
12332         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12333         ;;
12334 *)      db_prefixtype='size_t'
12335         ;;
12336 esac
12337
12338 : check for void type
12339 echo " "
12340 echo "Checking to see how well your C compiler groks the void type..." >&4
12341 case "$voidflags" in
12342 '')
12343         $cat >try.c <<'EOCP'
12344 #if TRY & 1
12345 void sub() {
12346 #else
12347 sub() {
12348 #endif
12349         extern void moo();      /* function returning void */
12350         void (*goo)();          /* ptr to func returning void */
12351 #if TRY & 8
12352         void *hue;              /* generic ptr */
12353 #endif
12354 #if TRY & 2
12355         void (*foo[10])();
12356 #endif
12357
12358 #if TRY & 4
12359         if(goo == moo) {
12360                 exit(0);
12361         }
12362 #endif
12363         exit(0);
12364 }
12365 int main() { sub(); }
12366 EOCP
12367         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12368                 voidflags=$defvoidused
12369         echo "Good.  It appears to support void to the level $package wants.">&4
12370                 if $contains warning .out >/dev/null 2>&1; then
12371                         echo "However, you might get some warnings that look like this:"
12372                         $cat .out
12373                 fi
12374         else
12375 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12376                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12377                         echo "It supports 1..."
12378                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12379                                 echo "It also supports 2..."
12380                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12381                                         voidflags=7
12382                                         echo "And it supports 4 but not 8 definitely."
12383                                 else
12384                                         echo "It doesn't support 4..."
12385                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12386                                                 voidflags=11
12387                                                 echo "But it supports 8."
12388                                         else
12389                                                 voidflags=3
12390                                                 echo "Neither does it support 8."
12391                                         fi
12392                                 fi
12393                         else
12394                                 echo "It does not support 2..."
12395                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12396                                         voidflags=13
12397                                         echo "But it supports 4 and 8."
12398                                 else
12399                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12400                                                 voidflags=5
12401                                                 echo "And it supports 4 but has not heard about 8."
12402                                         else
12403                                                 echo "However it supports 8 but not 4."
12404                                         fi
12405                                 fi
12406                         fi
12407                 else
12408                         echo "There is no support at all for void."
12409                         voidflags=0
12410                 fi
12411         fi
12412 esac
12413 case "$voidflags" in
12414 "$defvoidused") ;;
12415 *)      $cat >&4 <<'EOM'
12416   Support flag bits are:
12417     1: basic void declarations.
12418     2: arrays of pointers to functions returning void.
12419     4: operations between pointers to and addresses of void functions.
12420     8: generic void pointers.
12421 EOM
12422         dflt="$voidflags";
12423         rp="Your void support flags add up to what?"
12424         . ./myread
12425         voidflags="$ans"
12426         ;;
12427 esac
12428 $rm -f try.* .out
12429
12430
12431 : How can we generate normalized random numbers ?
12432 echo " "
12433 echo "Looking for a random number function..." >&4
12434 case "$randfunc" in
12435 '')
12436         if set drand48 val -f; eval $csym; $val; then
12437                 dflt="drand48"
12438                 echo "Good, found drand48()." >&4
12439         elif set random val -f; eval $csym; $val; then
12440                 dflt="random"
12441                 echo "OK, found random()." >&4
12442         else
12443                 dflt="rand"
12444                 echo "Yick, looks like I have to use rand()." >&4
12445         fi
12446         echo " "
12447         ;;
12448 *)
12449         dflt="$randfunc"
12450         ;;
12451 esac
12452 cont=true
12453
12454 case "$ccflags" in
12455 *-Dmy_rand=*|*-Dmy_srand=*)
12456         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12457         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12458         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12459         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12460         ;;
12461 esac
12462
12463 while $test "$cont"; do
12464         rp="Use which function to generate random numbers?"
12465         . ./myread
12466         if $test "$ans" = "$dflt"; then
12467                 : null
12468         else
12469                 randbits=''
12470         fi
12471         randfunc="$ans"
12472         if set $ans val -f; eval $csym; $val; then
12473                 cont=''
12474         else
12475                 dflt=y
12476                 rp="I cannot find function $ans. Use that name anyway?"
12477                 . ./myread
12478                 dflt=rand
12479                 case "$ans" in
12480                         [yY]*) cont='';;
12481                 esac
12482         fi
12483         case "$cont" in
12484         '')
12485                 case "$randfunc" in
12486                 drand48)
12487                         drand01="drand48()"
12488                         seedfunc="srand48"
12489                         randbits=48
12490                         randseedtype=long
12491                         ;;
12492                 rand|random)
12493                         case "$randbits" in
12494                         '')
12495 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12496                                 $cat >try.c <<EOCP
12497 #$i_unistd I_UNISTD
12498 #$i_stdlib I_STDLIB
12499 #include <stdio.h>
12500 #ifdef I_UNISTD
12501 #  include <unistd.h>
12502 #endif
12503 #ifdef I_STDLIB
12504 #  include <stdlib.h>
12505 #endif
12506 int main()
12507 {
12508         register int i;
12509         register unsigned long tmp;
12510         register unsigned long max = 0L;
12511
12512         for (i = 1000; i; i--) {
12513                 tmp = (unsigned long) $randfunc();
12514                 if (tmp > max) max = tmp;
12515         }
12516         for (i = 0; max; i++)
12517                 max /= 2;
12518         printf("%d\n",i);
12519 }
12520 EOCP
12521                                 set try
12522                                 if eval $compile_ok; then
12523                                         dflt=`try`
12524                                 else
12525                                         dflt='?'
12526                                         echo "(I can't seem to compile the test program...)"
12527                                 fi
12528                                 ;;
12529                         *)
12530                                 dflt="$randbits"
12531                                 ;;
12532                         esac
12533                         rp="How many bits does your $randfunc() function produce?"
12534                         . ./myread
12535                         randbits="$ans"
12536                         $rm -f try.c try
12537                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12538                         seedfunc="s$randfunc"
12539                         randseedtype=unsigned
12540                         ;;
12541                 *)
12542                         dflt="31"
12543                         rp="How many bits does your $randfunc() function produce?"
12544                         . ./myread
12545                         randbits="$ans"
12546                         seedfunc="s$randfunc"
12547                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12548                         if set $seedfunc val -f; eval $csym; $val; then
12549                                 echo "(Using $seedfunc() to seed random generator)"
12550                         else
12551                                 echo "(Warning: no $seedfunc() to seed random generator)"
12552                                 seedfunc=rand
12553                         fi
12554                         randseedtype=unsigned
12555                         ;;
12556                 esac
12557                 ;;
12558         esac
12559 done
12560
12561 echo " "
12562 echo "Determining whether or not we are on an EBCDIC system..." >&4
12563 $cat >tebcdic.c <<'EOM'
12564 int main()
12565 {
12566   if ('M'==0xd4) return 0;
12567   return 1;
12568 }
12569 EOM
12570
12571 val=$undef
12572 set tebcdic
12573 if eval $compile_ok; then
12574         if ./tebcdic; then
12575                 echo "You have EBCDIC." >&4
12576                 val="$define"
12577         else
12578                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12579         fi
12580 else
12581         echo "I'm unable to compile the test program." >&4
12582         echo "I'll assume ASCII or some ISO Latin." >&4
12583 fi
12584 $rm -f tebcdic.c tebcdic
12585 set ebcdic
12586 eval $setvar
12587
12588 echo " "
12589 $cat >&4 <<EOM
12590 Checking how to flush all pending stdio output...
12591 EOM
12592 # I only know how to find the first 32 possibly open files on SunOS.
12593 # See also hints/sunos_4_1.sh and util.c  --AD
12594 case "$osname" in
12595 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12596 esac
12597 $cat >>try.c <<EOCP
12598 #include <stdio.h>
12599 #$i_unistd I_UNISTD
12600 #ifdef I_UNISTD
12601 # include <unistd.h>
12602 #endif
12603 #$d_sysconf HAS_SYSCONF
12604 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12605 #ifdef HAS_STDIO_STREAM_ARRAY
12606 # define STDIO_STREAM_ARRAY $stdio_stream_array
12607 #endif
12608 int main() {
12609   FILE* p = fopen("try.out", "w");
12610 #ifdef TRY_FPUTC
12611   fputc('x', p);
12612 #else
12613 # ifdef TRY_FPRINTF
12614   fprintf(p, "x");
12615 # endif
12616 #endif
12617 #ifdef TRY_FFLUSH_NULL
12618   fflush(NULL);
12619 #endif
12620 #ifdef TRY_FFLUSH_ALL
12621   {
12622     long open_max = -1;
12623 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12624     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12625 # else
12626 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12627     open_max = sysconf(_SC_OPEN_MAX);
12628 #  else
12629 #   ifdef FOPEN_MAX
12630     open_max = FOPEN_MAX;
12631 #   else
12632 #    ifdef OPEN_MAX
12633     open_max = OPEN_MAX;
12634 #    else
12635 #     ifdef _NFILE
12636     open_max = _NFILE;
12637 #     endif
12638 #    endif
12639 #   endif
12640 #  endif
12641 # endif 
12642 # ifdef HAS_STDIO_STREAM_ARRAY
12643     if (open_max > 0) {
12644       long i;
12645       for (i = 0; i < open_max; i++)
12646             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12647                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12648                 STDIO_STREAM_ARRAY[i]._flag)
12649                 fflush(&STDIO_STREAM_ARRAY[i]);
12650     }   
12651   }
12652 # endif
12653 #endif
12654   _exit(42);
12655 }
12656 EOCP
12657 : first we have to find out how _not_ to flush
12658 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12659     output=''
12660     set try -DTRY_FPUTC
12661     if eval $compile; then
12662             $rm -f try.out
12663             ./try$exe_ext 2>/dev/null
12664             if $test ! -s try.out -a "X$?" = X42; then
12665                 output=-DTRY_FPUTC
12666             fi
12667     fi
12668     case "$output" in
12669     '')
12670             set try -DTRY_FPRINTF
12671             $rm -f try.out
12672             if eval $compile; then
12673                     $rm -f try.out
12674                     ./try$exe_ext 2>/dev/null
12675                     if $test ! -s try.out -a "X$?" = X42; then
12676                         output=-DTRY_FPRINTF
12677                     fi
12678             fi
12679         ;;
12680     esac
12681 fi
12682 : check for fflush NULL behaviour
12683 case "$fflushNULL" in
12684 '')     set try -DTRY_FFLUSH_NULL $output
12685         if eval $compile; then
12686                 $rm -f try.out
12687                 ./try$exe_ext 2>/dev/null
12688                 code="$?"
12689                 if $test -s try.out -a "X$code" = X42; then
12690                         fflushNULL="`$cat try.out`"
12691                 else
12692                         if $test "X$code" != X42; then
12693                                 $cat >&4 <<EOM
12694 (If this test failed, don't worry, we'll try another method shortly.)
12695 EOM
12696                         fi
12697                 fi
12698         fi
12699         $rm -f core try.core core.try.*
12700         case "$fflushNULL" in
12701         x)      $cat >&4 <<EOM
12702 Your fflush(NULL) works okay for output streams.
12703 Let's see if it clobbers input pipes...
12704 EOM
12705 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12706 # bug that improperly flushes the input end of pipes.  So we avoid the
12707 # autoflush on fork/system/exec support for now. :-(
12708 $cat >tryp.c <<EOCP
12709 #include <stdio.h>
12710 int
12711 main(int argc, char **argv)
12712 {
12713     char buf[1024];
12714     int i;
12715     char *bp = buf;
12716     while (1) {
12717         while ((i = getc(stdin)) != -1
12718                && (*bp++ = i) != '\n'
12719                && bp < &buf[1024])
12720         /* DO NOTHING */ ;
12721         *bp = '\0';
12722         fprintf(stdout, "%s", buf);
12723         fflush(NULL);
12724         if (i == -1)
12725             return 0;
12726         bp = buf;
12727     }
12728 }
12729 EOCP
12730                 fflushNULL="$define"
12731                 set tryp
12732                 if eval $compile; then
12733                     $rm -f tryp.out
12734                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12735                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12736                        $cat >&4 <<EOM
12737 fflush(NULL) seems to behave okay with input streams.
12738 EOM
12739                         fflushNULL="$define"
12740                     else
12741                         $cat >&4 <<EOM
12742 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12743 EOM
12744                         fflushNULL="$undef"
12745                     fi
12746                 fi
12747                 $rm -f core tryp.c tryp.core core.tryp.*
12748                 ;;
12749         '')     $cat >&4 <<EOM
12750 Your fflush(NULL) isn't working (contrary to ANSI C).
12751 EOM
12752                 fflushNULL="$undef"
12753                 ;;
12754         *)      $cat >&4 <<EOM
12755 Cannot figure out whether your fflush(NULL) works or not.
12756 I'm assuming it doesn't (contrary to ANSI C).
12757 EOM
12758                 fflushNULL="$undef"
12759                 ;;
12760         esac
12761         ;;
12762 $define|true|[yY]*)
12763         fflushNULL="$define"
12764         ;;
12765 *)
12766         fflushNULL="$undef"
12767         ;;
12768 esac
12769 : check explicit looping only if NULL did not work, and if the pipe
12770 : bug does not show up on an explicit flush too
12771 case "$fflushNULL" in
12772 "$undef")
12773         $cat >tryp.c <<EOCP
12774 #include <stdio.h>
12775 int
12776 main(int argc, char **argv)
12777 {
12778     char buf[1024];
12779     int i;
12780     char *bp = buf;
12781     while (1) {
12782         while ((i = getc(stdin)) != -1
12783                && (*bp++ = i) != '\n'
12784                && bp < &buf[1024])
12785         /* DO NOTHING */ ;
12786         *bp = '\0';
12787         fprintf(stdout, "%s", buf);
12788         fflush(stdin);
12789         if (i == -1)
12790             return 0;
12791         bp = buf;
12792     }
12793 }
12794 EOCP
12795         set tryp
12796         if eval $compile; then
12797             $rm -f tryp.out
12798             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12799             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12800                $cat >&4 <<EOM
12801 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12802 EOM
12803                 : now check for fflushall behaviour
12804                 case "$fflushall" in
12805                 '')     set try -DTRY_FFLUSH_ALL $output
12806                         if eval $compile; then
12807                                 $cat >&4 <<EOM
12808 (Now testing the other method--but note that this also may fail.)
12809 EOM
12810                                 $rm -f try.out
12811                                 ./try$exe_ext 2>/dev/null
12812                                 if $test -s try.out -a "X$?" = X42; then
12813                                         fflushall="`$cat try.out`"
12814                                 fi
12815                         fi
12816                         $rm -f core try.core core.try.*
12817                         case "$fflushall" in
12818                         x)      $cat >&4 <<EOM
12819 Whew. Flushing explicitly all the stdio streams works.
12820 EOM
12821                                 fflushall="$define"
12822                                 ;;
12823                         '')     $cat >&4 <<EOM
12824 Sigh. Flushing explicitly all the stdio streams doesn't work.
12825 EOM
12826                                 fflushall="$undef"
12827                                 ;;
12828                         *)      $cat >&4 <<EOM
12829 Cannot figure out whether flushing stdio streams explicitly works or not.
12830 I'm assuming it doesn't.
12831 EOM
12832                                 fflushall="$undef"
12833                                 ;;
12834                         esac
12835                         ;;
12836                 "$define"|true|[yY]*)
12837                         fflushall="$define"
12838                         ;;
12839                 *)
12840                         fflushall="$undef"
12841                         ;;
12842                 esac
12843             else
12844                 $cat >&4 <<EOM
12845 All is futile.  Even fflush(stdin) clobbers input pipes!
12846 EOM
12847                 fflushall="$undef"
12848             fi
12849         else
12850             fflushall="$undef"
12851         fi
12852         $rm -f core tryp.c tryp.core core.tryp.*
12853         ;;
12854 *)      fflushall="$undef"
12855         ;;
12856 esac
12857
12858 case "$fflushNULL$fflushall" in
12859 undefundef)
12860         $cat <<EOM
12861 OK, I give up.  I cannot figure out how to flush pending stdio output.
12862 We won't be flushing handles at all before fork/exec/popen.
12863 EOM
12864         ;;
12865 esac
12866 $rm -f try.* try$exe_ext
12867
12868 : Store the full pathname to the ar program for use in the C program
12869 : Respect a hint or command line value for full_ar.
12870 case "$full_ar" in
12871 '') full_ar=$ar ;;
12872 esac
12873
12874 : Store the full pathname to the sed program for use in the C program
12875 full_sed=$sed
12876
12877 : see what type gids are declared as in the kernel
12878 echo " "
12879 echo "Looking for the type for group ids returned by getgid()."
12880 set gid_t gidtype xxx stdio.h sys/types.h
12881 eval $typedef
12882 case "$gidtype" in
12883 xxx)
12884         xxx=`./findhdr sys/user.h`
12885         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12886         case $1 in
12887         unsigned) dflt="$1 $2" ;;
12888         *) dflt="$1" ;;
12889         esac
12890         ;;
12891 *) dflt="$gidtype";;
12892 esac
12893 case "$gidtype" in
12894 gid_t) echo "gid_t found." ;;
12895 *)      rp="What is the type for group ids returned by getgid()?"
12896         . ./myread
12897         gidtype="$ans"
12898         ;;
12899 esac
12900
12901 echo " "
12902 case "$gidtype" in
12903 *_t) zzz="$gidtype"     ;;
12904 *)   zzz="gid"          ;;
12905 esac
12906 echo "Checking the size of $zzz..." >&4 
12907 cat > try.c <<EOCP
12908 #include <sys/types.h>
12909 #include <stdio.h>
12910 int main() {
12911     printf("%d\n", (int)sizeof($gidtype));
12912     exit(0);
12913 }
12914 EOCP
12915 set try
12916 if eval $compile_ok; then
12917         yyy=`./try`
12918         case "$yyy" in
12919         '')     gidsize=4
12920                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12921                 ;;
12922         *)      gidsize=$yyy
12923                 echo "Your $zzz is $gidsize bytes long."
12924                 ;;
12925         esac
12926 else
12927         gidsize=4
12928         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12929 fi
12930
12931
12932 echo " "
12933 case "$gidtype" in
12934 *_t) zzz="$gidtype"     ;;
12935 *)   zzz="gid"          ;;
12936 esac
12937 echo "Checking the sign of $zzz..." >&4 
12938 cat > try.c <<EOCP
12939 #include <sys/types.h>
12940 #include <stdio.h>
12941 int main() {
12942         $gidtype foo = -1;
12943         if (foo < 0)
12944                 printf("-1\n");
12945         else
12946                 printf("1\n");
12947 }
12948 EOCP
12949 set try
12950 if eval $compile; then
12951         yyy=`./try`
12952         case "$yyy" in
12953         '')     gidsign=1
12954                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12955                 ;;
12956         *)      gidsign=$yyy
12957                 case "$gidsign" in
12958                  1) echo "Your $zzz is unsigned." ;;
12959                 -1) echo "Your $zzz is signed."   ;;
12960                 esac
12961                 ;;
12962         esac
12963 else
12964         gidsign=1
12965         echo "(I can't compile the test program--guessing unsigned.)" >&4
12966 fi
12967
12968
12969 echo " "
12970
12971 if $test X"$quadtype" != X; then
12972
12973 echo "Checking how to print 64-bit integers..." >&4
12974
12975 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12976         $cat >try.c <<'EOCP'
12977 #include <sys/types.h>
12978 #include <stdio.h>
12979 int main() {
12980   int q = 12345678901;
12981   printf("%ld\n", q);
12982 }
12983 EOCP
12984         set try
12985         if eval $compile; then
12986                 yyy=`./try$exe_ext`
12987                 case "$yyy" in
12988                 12345678901)
12989                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12990                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12991                         echo "We will use %d."
12992                         ;;
12993                 esac
12994         fi
12995 fi
12996
12997 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12998         $cat >try.c <<'EOCP'
12999 #include <sys/types.h>
13000 #include <stdio.h>
13001 int main() {
13002   long q = 12345678901;
13003   printf("%ld\n", q);
13004 }
13005 EOCP
13006         set try
13007         if eval $compile; then
13008                 yyy=`./try$exe_ext`
13009                 case "$yyy" in
13010                 12345678901)
13011                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13012                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
13013                         echo "We will use %ld."
13014                         ;;
13015                 esac
13016         fi
13017 fi
13018
13019 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13020         $cat >try.c <<'EOCP'
13021 #include <sys/types.h>
13022 #include <inttypes.h>
13023 #include <stdio.h>
13024 int main() {
13025   int64_t q = 12345678901;
13026   printf("%" PRId64 "\n", q);
13027 }
13028 EOCP
13029         set try
13030         if eval $compile; then
13031                 yyy=`./try$exe_ext`
13032                 case "$yyy" in
13033                 12345678901)
13034                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13035                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
13036                         echo "We will use the C9X style."
13037                         ;;
13038                 esac
13039         fi
13040 fi
13041
13042 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13043         $cat >try.c <<'EOCP'
13044 #include <sys/types.h>
13045 #include <stdio.h>
13046 int main() {
13047   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
13048   printf("%lld\n", q);
13049 }
13050 EOCP
13051         set try
13052         if eval $compile; then
13053                 yyy=`./try$exe_ext`
13054                 case "$yyy" in
13055                 12345678901)
13056                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13057                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
13058                         echo "We will use the %lld style."
13059                         ;;
13060                 esac
13061         fi
13062 fi
13063
13064 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13065         $cat >try.c <<EOCP
13066 #include <sys/types.h>
13067 #include <stdio.h>
13068 int main() {
13069   $quadtype q = 12345678901;
13070   printf("%Ld\n", q);
13071 }
13072 EOCP
13073         set try
13074         if eval $compile; then
13075                 yyy=`./try$exe_ext`
13076                 case "$yyy" in
13077                 12345678901)
13078                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13079                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13080                         echo "We will use %Ld."
13081                         ;;
13082                 esac
13083         fi
13084 fi
13085
13086 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13087         $cat >try.c <<EOCP
13088 #include <sys/types.h>
13089 #include <stdio.h>
13090 int main() {
13091   $quadtype q = 12345678901;
13092   printf("%qd\n", q);
13093 }
13094 EOCP
13095         set try
13096         if eval $compile; then
13097                 yyy=`./try$exe_ext`
13098                 case "$yyy" in
13099                 12345678901)
13100                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13101                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13102                         echo "We will use %qd."
13103                         ;;
13104                 esac
13105         fi
13106 fi
13107
13108 if $test X"$sPRId64" = X; then
13109         echo "Cannot figure out how to print 64-bit integers." >&4
13110 fi
13111
13112 $rm -f try try.*
13113
13114 fi
13115
13116 case "$sPRId64" in
13117 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13118         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
13119         ;;
13120 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13121         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
13122         ;;
13123 esac
13124
13125
13126 echo " "
13127 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13128
13129 if $test X"$ivsize" = X8; then
13130         ivdformat="$sPRId64"
13131         uvuformat="$sPRIu64"
13132         uvoformat="$sPRIo64"
13133         uvxformat="$sPRIx64"
13134 else
13135         if $test X"$ivsize" = X"$longsize"; then
13136                 ivdformat='"ld"'
13137                 uvuformat='"lu"'
13138                 uvoformat='"lo"'
13139                 uvxformat='"lx"'
13140         else
13141                 if $test X"$ivsize" = X"$intsize"; then
13142                         ivdformat='"d"'
13143                         uvuformat='"u"'
13144                         uvoformat='"o"'
13145                         uvxformat='"x"'
13146                 else
13147                         : far out
13148                         if $test X"$ivsize" = X"$shortsize"; then
13149                                 ivdformat='"hd"'
13150                                 uvuformat='"hu"'
13151                                 uvoformat='"ho"'
13152                                 uvxformat='"hx"'
13153                         fi
13154                 fi
13155         fi
13156 fi
13157
13158 case "$ivdformat" in
13159 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13160     exit 1
13161     ;;
13162 esac
13163
13164
13165 echo " "
13166 $echo "Checking the format string to be used for gids..." >&4
13167
13168 case "$gidsign" in
13169 -1)     if $test X"$gidsize" = X"$ivsize"; then
13170                 gidformat="$ivdformat"
13171         else
13172                 if $test X"$gidsize" = X"$longsize"; then
13173                         gidformat='"ld"'
13174                 else
13175                         if $test X"$gidsize" = X"$intsize"; then
13176                                 gidformat='"d"'
13177                         else
13178                                 if $test X"$gidsize" = X"$shortsize"; then
13179                                         gidformat='"hd"'
13180                                 fi
13181                         fi
13182                 fi
13183         fi
13184         ;;
13185 *)      if $test X"$gidsize" = X"$uvsize"; then
13186                 gidformat="$uvuformat"
13187         else
13188                 if $test X"$gidsize" = X"$longsize"; then
13189                         gidformat='"lu"'
13190                 else
13191                         if $test X"$gidsize" = X"$intsize"; then
13192                                 gidformat='"u"'
13193                         else
13194                                 if $test X"$gidsize" = X"$shortsize"; then
13195                                         gidformat='"hu"'
13196                                 fi
13197                         fi
13198                 fi
13199         fi
13200         ;;
13201 esac
13202
13203 : see if getgroups exists
13204 set getgroups d_getgrps
13205 eval $inlibc
13206
13207 : see if setgroups exists
13208 set setgroups d_setgrps
13209 eval $inlibc
13210
13211
13212 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13213 echo " "
13214 case "$d_getgrps$d_setgrps" in
13215 *define*)
13216         case "$groupstype" in
13217         '') dflt="$gidtype" ;;
13218         *)  dflt="$groupstype" ;;
13219         esac
13220         $cat <<EOM
13221 What type of pointer is the second argument to getgroups() and setgroups()?
13222 Usually this is the same as group ids, $gidtype, but not always.
13223
13224 EOM
13225         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13226         . ./myread
13227         groupstype="$ans"
13228         ;;
13229 *)  groupstype="$gidtype";;
13230 esac
13231
13232 echo " "
13233 echo "Checking if your $make program sets \$(MAKE)..." >&4
13234 case "$make_set_make" in
13235 '')
13236         $sed 's/^X //' > testmake.mak << 'EOF'
13237 Xall:
13238 X       @echo 'maketemp="$(MAKE)"'
13239 EOF
13240         case "`$make -f testmake.mak 2>/dev/null`" in
13241         *maketemp=*) make_set_make='#' ;;
13242         *)      make_set_make="MAKE=$make" ;;
13243         esac
13244         $rm -f testmake.mak
13245         ;;
13246 esac
13247 case "$make_set_make" in
13248 '#') echo "Yup, it does.";;
13249 *) echo "Nope, it doesn't.";;
13250 esac
13251
13252 : see what type is used for mode_t
13253 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13254 set mode_t modetype int stdio.h sys/types.h
13255 eval $typedef_ask
13256
13257 : define a fucntion to check prototypes
13258 $cat > protochk <<EOSH
13259 $startsh
13260 cc="$cc"
13261 optimize="$optimize"
13262 ccflags="$ccflags"
13263 prototype="$prototype"
13264 define="$define"
13265 rm=$rm
13266 EOSH
13267
13268 $cat >> protochk <<'EOSH'
13269
13270 $rm -f try.c
13271 foo="$1"
13272 shift
13273 while test $# -ge 2; do
13274         case "$1" in
13275                 $define) echo "#include <$2>" >> try.c ;;
13276                 literal) echo "$2" >> try.c ;;
13277         esac
13278     shift 2
13279 done
13280 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13281 cat >> try.c <<'EOCP'
13282 #ifdef CAN_PROTOTYPE
13283 #define _(args) args
13284 #else
13285 #define _(args) ()
13286 #endif
13287 EOCP
13288 echo "$foo" >> try.c
13289 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13290 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13291 status=$?
13292 $rm -f try.[co]
13293 exit $status
13294 EOSH
13295 chmod +x protochk
13296 $eunicefix protochk
13297
13298 : see what type is used for size_t
13299 rp="What is the type used for the length parameter for string functions?"
13300 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13301 eval $typedef_ask
13302
13303 : check for type of arguments to gethostbyaddr. 
13304 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13305         case "$d_gethbyaddr" in
13306         $define)
13307                 $cat <<EOM
13308
13309 Checking to see what type of arguments are accepted by gethostbyaddr().
13310 EOM
13311                 hdrs="$define sys/types.h
13312                         $d_socket sys/socket.h 
13313                         $i_niin netinet/in.h 
13314                         $i_netdb netdb.h
13315                         $i_unistd unistd.h"
13316                 : The first arg can 'char *' or 'void *'
13317                 : The second arg is some of integral type
13318                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13319                         for yyy in size_t long int; do
13320                                 case "$netdb_host_type" in
13321                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13322                                         if ./protochk "$try" $hdrs; then
13323                                                 echo "Your system accepts $xxx for the first arg."
13324                                                 echo "...and $yyy for the second arg."
13325                                                 netdb_host_type="$xxx"
13326                                                 netdb_hlen_type="$yyy"
13327                                         fi
13328                                         ;;
13329                                 esac
13330                         done
13331                 done
13332                 : In case none of those worked, prompt the user.
13333                 case "$netdb_host_type" in
13334                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13335                         dflt='char *'
13336                         . ./myread
13337                         netdb_host_type=$ans
13338                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13339                         dflt="$sizetype"
13340                         . ./myread
13341                         netdb_hlen_type=$ans
13342                         ;;
13343                 esac
13344                 ;;
13345         *)      : no gethostbyaddr, so pick harmless defaults
13346                 netdb_host_type='char *'
13347                 netdb_hlen_type="$sizetype"
13348                 ;;
13349         esac
13350         # Remove the "const" if needed. -- but then we'll have a 
13351         # prototype clash!
13352         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13353 fi
13354
13355 : check for type of argument to gethostbyname. 
13356 if test "X$netdb_name_type" = X ; then
13357         case "$d_gethbyname" in
13358         $define)
13359                 $cat <<EOM
13360
13361 Checking to see what type of argument is accepted by gethostbyname().
13362 EOM
13363                 hdrs="$define sys/types.h
13364                         $d_socket sys/socket.h 
13365                         $i_niin netinet/in.h 
13366                         $i_netdb netdb.h
13367                         $i_unistd unistd.h"
13368                 for xxx in "const char *" "char *"; do
13369                         case "$netdb_name_type" in
13370                         '')     try="extern struct hostent *gethostbyname($xxx);"
13371                                 if ./protochk "$try" $hdrs; then
13372                                         echo "Your system accepts $xxx."
13373                                         netdb_name_type="$xxx"
13374                                 fi
13375                                 ;;
13376                         esac
13377                 done
13378                 : In case none of those worked, prompt the user.
13379                 case "$netdb_name_type" in
13380                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13381                         dflt='char *'
13382                         . ./myread
13383                         netdb_name_type=$ans
13384                         ;;
13385                 esac
13386                 ;;
13387         *)      : no gethostbyname, so pick harmless default
13388                 netdb_name_type='char *'
13389                 ;;
13390         esac
13391 fi
13392
13393 : check for type of 1st argument to getnetbyaddr. 
13394 if test "X$netdb_net_type" = X ; then
13395         case "$d_getnbyaddr" in
13396         $define)
13397                 $cat <<EOM
13398
13399 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13400 EOM
13401                 hdrs="$define sys/types.h
13402                         $d_socket sys/socket.h 
13403                         $i_niin netinet/in.h 
13404                         $i_netdb netdb.h
13405                         $i_unistd unistd.h"
13406                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13407                         case "$netdb_net_type" in
13408                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13409                                 if ./protochk "$try" $hdrs; then
13410                                         echo "Your system accepts $xxx."
13411                                         netdb_net_type="$xxx"
13412                                 fi
13413                                 ;;
13414                         esac
13415                 done
13416                 : In case none of those worked, prompt the user.
13417                 case "$netdb_net_type" in
13418                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13419                         dflt='long'
13420                         . ./myread
13421                         netdb_net_type=$ans
13422                         ;;
13423                 esac
13424                 ;;
13425         *)      : no getnetbyaddr, so pick harmless default
13426                 netdb_net_type='long'
13427                 ;;
13428         esac
13429 fi
13430 : locate the preferred pager for this system
13431 case "$pager" in
13432 '')
13433         dflt=''
13434         case "$pg" in
13435         /*) dflt=$pg;;
13436         esac
13437         case "$more" in
13438         /*) dflt=$more;;
13439         esac
13440         case "$less" in
13441         /*) dflt=$less;;
13442         esac
13443         case "$dflt" in
13444         '') dflt=/usr/ucb/more;;
13445         esac
13446         ;;
13447 *) dflt="$pager";;
13448 esac
13449 echo " "
13450 fn=f/
13451 rp='What pager is used on your system?'
13452 . ./getfile
13453 pager="$ans"
13454
13455 : see what type pids are declared as in the kernel
13456 rp="What is the type of process ids on this system?"
13457 set pid_t pidtype int stdio.h sys/types.h
13458 eval $typedef_ask
13459
13460 : Find earliest binary compatible site_perl subdirectory perl can use.
13461 case "$bincompat5005" in
13462 "$define") xs_apiversion='5.005' ;;
13463 *) xs_apiversion=$version ;;   # The current site_perl version.
13464 esac
13465 : Find earliest pure perl site_perl subdirectory perl can use.
13466 : The versioned directories started at 5.005.
13467 pm_apiversion='5.005'
13468
13469 : check for length of pointer
13470 echo " "
13471 case "$ptrsize" in
13472 '')
13473         echo "Checking to see how big your pointers are..." >&4
13474         if test "$voidflags" -gt 7; then
13475                 echo '#define VOID_PTR char *' > try.c
13476         else
13477                 echo '#define VOID_PTR void *' > try.c
13478         fi
13479         $cat >>try.c <<'EOCP'
13480 #include <stdio.h>
13481 int main()
13482 {
13483     printf("%d\n", (int)sizeof(VOID_PTR));
13484     exit(0);
13485 }
13486 EOCP
13487         set try
13488         if eval $compile_ok; then
13489                 ptrsize=`./try`
13490                 echo "Your pointers are $ptrsize bytes long."
13491         else
13492                 dflt='4'
13493                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13494                 rp="What is the size of a pointer (in bytes)?"
13495                 . ./myread
13496                 ptrsize="$ans"
13497         fi
13498         ;;
13499 esac
13500 $rm -f try.c try
13501
13502 : see if ar generates random libraries by itself
13503 echo " "
13504 echo "Checking how to generate random libraries on your machine..." >&4
13505 echo 'int bar1() { return bar2(); }' > bar1.c
13506 echo 'int bar2() { return 2; }' > bar2.c
13507 $cat > foo.c <<'EOP'
13508 int main() { printf("%d\n", bar1()); exit(0); }
13509 EOP
13510 $cc $ccflags -c bar1.c >/dev/null 2>&1
13511 $cc $ccflags -c bar2.c >/dev/null 2>&1
13512 $cc $ccflags -c foo.c >/dev/null 2>&1
13513 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13514 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13515         ./foobar >/dev/null 2>&1; then
13516         echo "$ar appears to generate random libraries itself."
13517         orderlib=false
13518         ranlib=":"
13519 elif $ar ts bar$_a >/dev/null 2>&1 &&
13520         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13521         ./foobar >/dev/null 2>&1; then
13522                 echo "a table of contents needs to be added with '$ar ts'."
13523                 orderlib=false
13524                 ranlib="$ar ts"
13525 else
13526         case "$ranlib" in
13527         :) ranlib='';;
13528         '')
13529                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13530                 $test -f $ranlib || ranlib=''
13531                 ;;
13532         esac
13533         if $test -n "$ranlib"; then
13534                 echo "your system has '$ranlib'; we'll use that."
13535                 orderlib=false
13536         else
13537                 echo "your system doesn't seem to support random libraries"
13538                 echo "so we'll use lorder and tsort to order the libraries."
13539                 orderlib=true
13540                 ranlib=":"
13541         fi
13542 fi
13543 $rm -f foo* bar* 
13544
13545 : check for type of arguments to select. 
13546 case "$selecttype" in
13547 '') case "$d_select" in
13548         $define)
13549                 echo " "
13550                 $cat <<EOM
13551 Checking to see what type of arguments are accepted by select().
13552 EOM
13553                 hdrs="$define sys/types.h
13554                         $i_systime sys/time.h 
13555                         $i_sysselct sys/select.h
13556                         $d_socket sys/socket.h"
13557                 : The first arg can be int, unsigned, or size_t
13558                 : The last arg may or may not be 'const'
13559                 val=''
13560                 : void pointer has been seen but using that
13561                 : breaks the selectminbits test
13562                 for xxx in 'fd_set *' 'int *'; do
13563                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13564                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13565                                         case "$val" in
13566                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13567                                                 if ./protochk "$try" $hdrs; then
13568                                                         echo "Your system accepts $xxx."
13569                                                         val="$xxx"
13570                                                 fi
13571                                                 ;;
13572                                         esac
13573                                 done
13574                         done
13575                 done
13576                 case "$val" in
13577                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13578                         case "$d_fd_set" in
13579                                 $define) dflt="fd_set *" ;;
13580                                 *)              dflt="int *" ;;
13581                         esac
13582                         . ./myread
13583                         val=$ans
13584                         ;;
13585                 esac
13586                 selecttype="$val"
13587                 ;;
13588         *)      : no select, so pick a harmless default
13589                 selecttype='int *'
13590                 ;;
13591         esac
13592         ;;
13593 esac
13594
13595 : check for the select 'width'
13596 case "$selectminbits" in
13597 '') case "$d_select" in
13598         $define)
13599                 $cat <<EOM
13600
13601 Checking to see on how many bits at a time your select() operates...
13602 EOM
13603                 $cat >try.c <<EOCP
13604 #include <sys/types.h>
13605 #$i_time I_TIME
13606 #$i_systime I_SYS_TIME
13607 #$i_systimek I_SYS_TIME_KERNEL
13608 #ifdef I_TIME
13609 #   include <time.h>
13610 #endif
13611 #ifdef I_SYS_TIME
13612 #   ifdef I_SYS_TIME_KERNEL
13613 #       define KERNEL
13614 #   endif
13615 #   include <sys/time.h>
13616 #   ifdef I_SYS_TIME_KERNEL
13617 #       undef KERNEL
13618 #   endif
13619 #endif
13620 #$i_sysselct I_SYS_SELECT
13621 #ifdef I_SYS_SELECT
13622 #include <sys/select.h>
13623 #endif
13624 #$d_socket HAS_SOCKET
13625 #ifdef HAS_SOCKET
13626 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13627 #endif
13628 #include <stdio.h>
13629 $selecttype b;
13630 #define S sizeof(*(b))
13631 #define MINBITS 64
13632 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13633 #define NBITS  (NBYTES * 8)
13634 int main() {
13635     char s[NBYTES];
13636     struct timeval t;
13637     int i;
13638     FILE* fp;
13639     int fd;
13640
13641     fclose(stdin);
13642     fp = fopen("try.c", "r");
13643     if (fp == 0)
13644       exit(1);
13645     fd = fileno(fp);
13646     if (fd < 0)
13647       exit(2);
13648     b = ($selecttype)s;
13649     for (i = 0; i < NBITS; i++)
13650         FD_SET(i, b);
13651     t.tv_sec  = 0;
13652     t.tv_usec = 0;
13653     select(fd + 1, b, 0, 0, &t);
13654     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13655     printf("%d\n", i + 1);
13656     return 0;
13657 }
13658 EOCP
13659                 set try
13660                 if eval $compile_ok; then
13661                         selectminbits=`./try`
13662                         case "$selectminbits" in
13663                         '')     cat >&4 <<EOM
13664 Cannot figure out on how many bits at a time your select() operates.
13665 I'll play safe and guess it is 32 bits.
13666 EOM
13667                                 selectminbits=32
13668                                 bits="32 bits"
13669                                 ;;
13670                         1)      bits="1 bit" ;;
13671                         *)      bits="$selectminbits bits" ;;
13672                         esac
13673                         echo "Your select() operates on $bits at a time." >&4
13674                 else
13675                         rp='What is the minimum number of bits your select() operates on?'
13676                         case "$byteorder" in
13677                         1234|12345678)  dflt=32 ;;
13678                         *)              dflt=1  ;;
13679                         esac
13680                         . ./myread
13681                         val=$ans
13682                         selectminbits="$val"
13683                 fi
13684                 $rm -f try.* try
13685                 ;;
13686         *)      : no select, so pick a harmless default
13687                 selectminbits='32'
13688                 ;;
13689         esac
13690         ;;
13691 esac
13692
13693 : Trace out the files included by signal.h, then look for SIGxxx names.
13694 : Remove SIGARRAYSIZE used by HPUX.
13695 : Remove SIGSTKSIZE used by Linux.
13696 : Remove SIGSTKSZ used by Posix.
13697 : Remove SIGTYP void lines used by OS2.
13698 : Some cpps, like os390, dont give the file name anywhere
13699 if [ "X$fieldn" = X ]; then
13700         : Just make some guesses.  We check them later.
13701         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13702 else
13703         xxx=`echo '#include <signal.h>' |
13704         $cppstdin $cppminus $cppflags 2>/dev/null |
13705         $grep '^[       ]*#.*include' | 
13706         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13707 fi
13708 : Check this list of files to be sure we have parsed the cpp output ok.
13709 : This will also avoid potentially non-existent files, such 
13710 : as ../foo/bar.h
13711 xxxfiles=''
13712 for xx in $xxx /dev/null ; do
13713         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13714 done
13715 : If we have found no files, at least try signal.h
13716 case "$xxxfiles" in
13717 '')     xxxfiles=`./findhdr signal.h` ;;
13718 esac
13719 xxx=`awk '
13720 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13721         print substr($2, 4, 20)
13722 }
13723 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13724         print substr($3, 4, 20)
13725 }' $xxxfiles`
13726 : Append some common names just in case the awk scan failed.
13727 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13728 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13729 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13730 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13731 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13732
13733 : generate a few handy files for later
13734 $cat > signal.c <<'EOCP'
13735 #include <sys/types.h>
13736 #include <signal.h>
13737 #include <stdio.h>
13738 int main() {
13739
13740 /* Strange style to avoid deeply-nested #if/#else/#endif */
13741 #ifndef NSIG
13742 #  ifdef _NSIG
13743 #    define NSIG (_NSIG)
13744 #  endif
13745 #endif
13746
13747 #ifndef NSIG
13748 #  ifdef SIGMAX
13749 #    define NSIG (SIGMAX+1)
13750 #  endif
13751 #endif
13752
13753 #ifndef NSIG
13754 #  ifdef SIG_MAX
13755 #    define NSIG (SIG_MAX+1)
13756 #  endif
13757 #endif
13758
13759 #ifndef NSIG
13760 #  ifdef MAXSIG
13761 #    define NSIG (MAXSIG+1)
13762 #  endif
13763 #endif
13764
13765 #ifndef NSIG
13766 #  ifdef MAX_SIG
13767 #    define NSIG (MAX_SIG+1)
13768 #  endif
13769 #endif
13770
13771 #ifndef NSIG
13772 #  ifdef SIGARRAYSIZE
13773 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13774 #  endif
13775 #endif
13776
13777 #ifndef NSIG
13778 #  ifdef _sys_nsig
13779 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13780 #  endif
13781 #endif
13782
13783 /* Default to some arbitrary number that's big enough to get most
13784    of the common signals.
13785 */
13786 #ifndef NSIG
13787 #    define NSIG 50
13788 #endif
13789
13790 printf("NSIG %d\n", NSIG);
13791
13792 #ifndef JUST_NSIG
13793
13794 EOCP
13795
13796 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13797 {
13798         printf "#ifdef SIG"; printf $1; printf "\n"
13799         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13800         printf $1; printf ");\n"
13801         printf "#endif\n"
13802 }
13803 END {
13804         printf "#endif /* JUST_NSIG */\n";
13805         printf "exit(0);\n}\n";
13806 }
13807 ' >>signal.c
13808 $cat >signal.awk <<'EOP'
13809 BEGIN { ndups = 0 }
13810 $1 ~ /^NSIG$/ { nsig = $2 }
13811 ($1 !~ /^NSIG$/) && (NF == 2) {
13812     if ($2 > maxsig) { maxsig = $2 }
13813     if (sig_name[$2]) {
13814         dup_name[ndups] = $1
13815         dup_num[ndups] = $2
13816         ndups++ 
13817     }
13818     else {
13819         sig_name[$2] = $1
13820         sig_num[$2] = $2
13821     }
13822 }
13823 END { 
13824     if (nsig == 0) {
13825         nsig = maxsig + 1
13826     }
13827     printf("NSIG %d\n", nsig);
13828     for (n = 1; n < nsig; n++) {
13829         if (sig_name[n]) {
13830             printf("%s %d\n", sig_name[n], sig_num[n])
13831         }
13832         else {
13833             printf("NUM%d %d\n", n, n) 
13834         }
13835     }
13836     for (n = 0; n < ndups; n++) {
13837         printf("%s %d\n", dup_name[n], dup_num[n])
13838     }
13839 }
13840 EOP
13841 $cat >signal_cmd <<EOS
13842 $startsh
13843 if $test -s signal.lst; then
13844     echo "Using your existing signal.lst file"
13845         exit 0
13846 fi
13847 xxx="$xxx"
13848 EOS
13849 $cat >>signal_cmd <<'EOS'
13850
13851 set signal
13852 if eval $compile_ok; then
13853         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13854 else
13855         echo "(I can't seem be able to compile the whole test program)" >&4
13856         echo "(I'll try it in little pieces.)" >&4
13857         set signal -DJUST_NSIG
13858         if eval $compile_ok; then
13859                 ./signal$_exe > signal.nsg
13860                 $cat signal.nsg
13861         else
13862                 echo "I can't seem to figure out how many signals you have." >&4
13863                 echo "Guessing 50." >&4
13864                 echo 'NSIG 50' > signal.nsg
13865         fi
13866         : Now look at all the signal names, one at a time.
13867         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13868                 $cat > signal.c <<EOCP
13869 #include <sys/types.h>
13870 #include <signal.h>
13871 #include <stdio.h>
13872 int main() {
13873 printf("$xx %d\n", SIG${xx});
13874 return 0;
13875 }
13876 EOCP
13877                 set signal
13878                 if eval $compile; then
13879                         echo "SIG${xx} found."
13880                         ./signal$_exe  >> signal.ls1
13881                 else
13882                         echo "SIG${xx} NOT found."
13883                 fi
13884         done
13885         if $test -s signal.ls1; then
13886                 $cat signal.nsg signal.ls1 |
13887                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13888         fi
13889
13890 fi
13891 if $test -s signal.lst; then
13892         :
13893 else
13894         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13895         echo 'kill -l' >signal
13896         set X `csh -f <signal`
13897         $rm -f signal
13898         shift
13899         case $# in
13900         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13901         esac
13902         echo $@ | $tr ' ' $trnl | \
13903             $awk '{ printf "%s %d\n", $1, ++s; }
13904                   END { printf "NSIG %d\n", ++s }' >signal.lst
13905 fi
13906 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13907 EOS
13908 chmod a+x signal_cmd
13909 $eunicefix signal_cmd
13910
13911 : generate list of signal names
13912 echo " "
13913 case "$sig_name_init" in
13914 '') doinit=yes ;;
13915 *)  case "$sig_num_init" in
13916     ''|*,*) doinit=yes ;;
13917     esac ;;
13918 esac
13919 case "$doinit" in
13920 yes)
13921         echo "Generating a list of signal names and numbers..." >&4
13922         . ./signal_cmd
13923         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13924         sig_name=`$awk 'BEGIN { printf "ZERO " }
13925                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13926         sig_num=`$awk  'BEGIN { printf "0 " }
13927                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13928         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13929                              !/^NSIG/   { printf "\"%s\", ", $1 }
13930                              END        { printf "0\n" }' signal.lst`
13931         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13932                              !/^NSIG/   { printf "%d, ", $2}
13933                              END        { printf "0\n"}' signal.lst`
13934         ;;
13935 esac
13936 echo "The following $sig_count signals are available:"
13937 echo " "
13938 echo $sig_name | $awk \
13939 'BEGIN { linelen = 0 }
13940 {
13941         for (i = 1; i <= NF; i++) {
13942                 name = "SIG" $i " "
13943                 linelen = linelen + length(name)
13944                 if (linelen > 70) {
13945                         printf "\n"
13946                         linelen = length(name)
13947                 }
13948                 printf "%s", name
13949         }
13950         printf "\n"
13951 }'
13952 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13953
13954 echo " "
13955 case "$sizetype" in
13956 *_t) zzz="$sizetype"    ;;
13957 *)   zzz="filesize"     ;;
13958 esac
13959 echo "Checking the size of $zzz..." >&4 
13960 cat > try.c <<EOCP
13961 #include <sys/types.h>
13962 #include <stdio.h>
13963 int main() {
13964     printf("%d\n", (int)sizeof($sizetype));
13965     exit(0);
13966 }
13967 EOCP
13968 set try
13969 if eval $compile_ok; then
13970         yyy=`./try`
13971         case "$yyy" in
13972         '')     sizesize=4
13973                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13974                 ;;
13975         *)      sizesize=$yyy
13976                 echo "Your $zzz size is $sizesize bytes."
13977                 ;;
13978         esac
13979 else
13980         sizesize=4
13981         echo "(I can't compile the test program--guessing $sizesize.)" >&4
13982 fi
13983
13984
13985 : check for socklen_t
13986 echo " "
13987 echo "Checking to see if you have socklen_t..." >&4
13988 $cat >try.c <<EOCP
13989 #include <sys/types.h>
13990 #$d_socket HAS_SOCKET
13991 #ifdef HAS_SOCKET
13992 #include <sys/socket.h>
13993 #endif
13994 int main() { socklen_t x = 16; }
13995 EOCP
13996 set try
13997 if eval $compile; then
13998         val="$define"
13999         echo "You have socklen_t."
14000 else
14001         val="$undef"
14002         echo "You do not have socklen_t."
14003         case "$sizetype" in
14004         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14005         esac
14006 fi
14007 $rm -f try try.*
14008 set d_socklen_t
14009 eval $setvar
14010
14011 : check for type of the size argument to socket calls
14012 case "$d_socket" in
14013 "$define")
14014         $cat <<EOM
14015
14016 Checking to see what type is the last argument of accept().
14017 EOM
14018         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14019         yyy=''
14020         case "$d_socklen_t" in
14021         "$define") yyy="$yyy socklen_t"
14022         esac
14023         yyy="$yyy $sizetype int long unsigned"
14024         for xxx in $yyy; do
14025                 case "$socksizetype" in
14026                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14027                         if ./protochk "$try" $hdrs; then
14028                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14029                                 socksizetype="$xxx"
14030                         fi
14031                         ;;
14032                 esac
14033         done
14034 : In case none of those worked, prompt the user.
14035         case "$socksizetype" in
14036         '')     rp='What is the type for socket address structure sizes?'
14037                 dflt='int'
14038                 . ./myread
14039                 socksizetype=$ans
14040                 ;;
14041         esac
14042         ;;
14043 *)      : no sockets, so pick relatively harmless default
14044         socksizetype='int'
14045         ;;
14046 esac
14047
14048 : see what type is used for signed size_t
14049 set ssize_t ssizetype int stdio.h sys/types.h
14050 eval $typedef
14051 dflt="$ssizetype"
14052 $cat > ssize.c <<EOM
14053 #include <stdio.h>
14054 #include <sys/types.h>
14055 #define Size_t $sizetype
14056 #define SSize_t $dflt
14057 int main()
14058 {
14059         if (sizeof(Size_t) == sizeof(SSize_t))
14060                 printf("$dflt\n");
14061         else if (sizeof(Size_t) == sizeof(int))
14062                 printf("int\n");
14063         else 
14064                 printf("long\n");
14065         exit(0);
14066 }
14067 EOM
14068 echo " "
14069 set ssize
14070 if eval $compile_ok && ./ssize > /dev/null; then
14071         ssizetype=`./ssize`
14072         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14073 else
14074         $cat >&4 <<EOM
14075 Help! I can't compile and run the ssize_t test program: please enlighten me!
14076 (This is probably a misconfiguration in your system or libraries, and
14077 you really ought to fix it.  Still, I'll try anyway.)
14078
14079 I need a type that is the same size as $sizetype, but is guaranteed to
14080 be signed.  Common values are ssize_t, int and long.
14081
14082 EOM
14083         rp="What signed type is the same size as $sizetype?"
14084         . ./myread
14085         ssizetype="$ans"
14086 fi
14087 $rm -f ssize ssize.*
14088
14089 : see what type of char stdio uses.
14090 echo " "
14091 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14092         echo "Your stdio uses unsigned chars." >&4
14093         stdchar="unsigned char"
14094 else
14095         echo "Your stdio uses signed chars." >&4
14096         stdchar="char"
14097 fi
14098
14099 : see if time exists
14100 echo " "
14101 if test "X$d_time" = X -o X"$timetype" = X; then
14102     if set time val -f d_time; eval $csym; $val; then
14103                 echo 'time() found.' >&4
14104                 val="$define"
14105                 rp="What is the type returned by time() on this system?"
14106                 set time_t timetype long stdio.h sys/types.h
14107                 eval $typedef_ask
14108     else
14109                 echo 'time() not found, hope that will do.' >&4
14110                 val="$undef"
14111                 timetype='int';
14112     fi
14113     set d_time
14114     eval $setvar
14115 fi
14116
14117 : see what type uids are declared as in the kernel
14118 echo " "
14119 echo "Looking for the type for user ids returned by getuid()."
14120 set uid_t uidtype xxx stdio.h sys/types.h
14121 eval $typedef
14122 case "$uidtype" in
14123 xxx)
14124         xxx=`./findhdr sys/user.h`
14125         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14126         case $1 in
14127         unsigned) dflt="$1 $2" ;;
14128         *) dflt="$1" ;;
14129         esac
14130         ;;
14131 *) dflt="$uidtype";;
14132 esac
14133 case "$uidtype" in
14134 uid_t)  echo "uid_t found." ;;
14135 *)      rp="What is the type for user ids returned by getuid()?"
14136         . ./myread
14137         uidtype="$ans"
14138         ;;
14139 esac
14140
14141 echo " "
14142 case "$uidtype" in
14143 *_t) zzz="$uidtype"     ;;
14144 *)   zzz="uid"          ;;
14145 esac
14146 echo "Checking the size of $zzz..." >&4 
14147 cat > try.c <<EOCP
14148 #include <sys/types.h>
14149 #include <stdio.h>
14150 int main() {
14151     printf("%d\n", (int)sizeof($uidtype));
14152     exit(0);
14153 }
14154 EOCP
14155 set try
14156 if eval $compile_ok; then
14157         yyy=`./try`
14158         case "$yyy" in
14159         '')     uidsize=4
14160                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14161                 ;;
14162         *)      uidsize=$yyy
14163                 echo "Your $zzz is $uidsize bytes long."
14164                 ;;
14165         esac
14166 else
14167         uidsize=4
14168         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14169 fi
14170
14171 echo " "
14172 case "$uidtype" in
14173 *_t) zzz="$uidtype"     ;;
14174 *)   zzz="uid"          ;;
14175 esac
14176 echo "Checking the sign of $zzz..." >&4
14177 cat > try.c <<EOCP
14178 #include <sys/types.h>
14179 #include <stdio.h>
14180 int main() {
14181         $uidtype foo = -1;
14182         if (foo < 0)
14183                 printf("-1\n");
14184         else
14185                 printf("1\n");
14186 }
14187 EOCP
14188 set try
14189 if eval $compile; then
14190         yyy=`./try`
14191         case "$yyy" in
14192         '')     uidsign=1
14193                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14194                 ;;
14195         *)      uidsign=$yyy
14196                 case "$uidsign" in
14197                  1) echo "Your $zzz is unsigned." ;;
14198                 -1) echo "Your $zzz is signed."   ;;
14199                 esac
14200                 ;;
14201         esac
14202 else
14203         uidsign=1
14204         echo "(I can't compile the test program--guessing unsigned.)" >&4
14205 fi
14206
14207
14208
14209 echo " "
14210 $echo "Checking the format string to be used for uids..." >&4
14211
14212 case "$uidsign" in
14213 -1)     if $test X"$uidsize" = X"$ivsize"; then
14214                 uidformat="$ivdformat"
14215         else
14216                 if $test X"$uidsize" = X"$longsize"; then
14217                         uidformat='"ld"'
14218                 else
14219                         if $test X"$uidsize" = X"$intsize"; then
14220                                 uidformat='"d"'
14221                         else
14222                                 if $test X"$uidsize" = X"$shortsize"; then
14223                                         uidformat='"hd"'
14224                                 fi
14225                         fi
14226                 fi
14227         fi
14228         ;;
14229 *)      if $test X"$uidsize" = X"$uvsize"; then
14230                 uidformat="$uvuformat"
14231         else
14232                 if $test X"$uidsize" = X"$longsize"; then
14233                         uidformat='"lu"'
14234                 else
14235                         if $test X"$uidsize" = X"$intsize"; then
14236                                 uidformat='"u"'
14237                         else
14238                                 if $test X"$uidsize" = X"$shortsize"; then
14239                                         uidformat='"hu"'
14240                                 fi
14241                         fi
14242                 fi
14243         fi
14244         ;;
14245 esac
14246
14247 : see if dbm.h is available
14248 : see if dbmclose exists
14249 set dbmclose d_dbmclose
14250 eval $inlibc
14251
14252 case "$d_dbmclose" in
14253 $define)
14254         set dbm.h i_dbm
14255         eval $inhdr
14256         case "$i_dbm" in
14257         $define)
14258                 val="$undef"
14259                 set i_rpcsvcdbm
14260                 eval $setvar
14261                 ;;
14262         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14263                 eval $inhdr
14264                 ;;
14265         esac
14266         ;;
14267 *)      echo "We won't be including <dbm.h>"
14268         val="$undef"
14269         set i_dbm
14270         eval $setvar
14271         val="$undef"
14272         set i_rpcsvcdbm
14273         eval $setvar
14274         ;;
14275 esac
14276
14277 : see if this is a sys/file.h system
14278 val=''
14279 set sys/file.h val
14280 eval $inhdr
14281
14282 : do we need to include sys/file.h ?
14283 case "$val" in
14284 "$define")
14285         echo " "
14286         if $h_sysfile; then
14287                 val="$define"
14288                 echo "We'll be including <sys/file.h>." >&4
14289         else
14290                 val="$undef"
14291                 echo "We won't be including <sys/file.h>." >&4
14292         fi
14293         ;;
14294 *)
14295         h_sysfile=false
14296         ;;
14297 esac
14298 set i_sysfile
14299 eval $setvar
14300
14301 : see if fcntl.h is there
14302 val=''
14303 set fcntl.h val
14304 eval $inhdr
14305
14306 : see if we can include fcntl.h
14307 case "$val" in
14308 "$define")
14309         echo " "
14310         if $h_fcntl; then
14311                 val="$define"
14312                 echo "We'll be including <fcntl.h>." >&4
14313         else
14314                 val="$undef"
14315                 if $h_sysfile; then
14316         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14317                 else
14318                         echo "We won't be including <fcntl.h>." >&4
14319                 fi
14320         fi
14321         ;;
14322 *)
14323         h_fcntl=false
14324         val="$undef"
14325         ;;
14326 esac
14327 set i_fcntl
14328 eval $setvar
14329
14330 : see if this is a iconv.h system
14331 set iconv.h i_iconv
14332 eval $inhdr
14333
14334 : see if this is a ieeefp.h system
14335 set ieeefp.h i_ieeefp
14336 eval $inhdr
14337
14338 : see if locale.h is available
14339 set locale.h i_locale
14340 eval $inhdr
14341
14342 : see if mach cthreads are available
14343 if test "X$usethreads" = "X$define"; then
14344         set mach/cthreads.h i_machcthr
14345         eval $inhdr
14346 else
14347         i_machcthr="$undef"
14348 fi
14349
14350
14351
14352 : see if this is a math.h system
14353 set math.h i_math
14354 eval $inhdr
14355
14356 : see if this is a mntent.h system
14357 set mntent.h i_mntent
14358 eval $inhdr
14359
14360 : see if ndbm.h is available
14361 set ndbm.h t_ndbm
14362 eval $inhdr
14363 case "$t_ndbm" in
14364 $define)
14365         : see if dbm_open exists
14366         set dbm_open d_dbm_open
14367         eval $inlibc
14368         case "$d_dbm_open" in
14369         $undef)
14370                 t_ndbm="$undef"
14371                 echo "We won't be including <ndbm.h>"
14372                 ;;
14373         esac
14374         ;;
14375 esac
14376 val="$t_ndbm"
14377 set i_ndbm
14378 eval $setvar
14379
14380 : see if net/errno.h is available
14381 val=''
14382 set net/errno.h val
14383 eval $inhdr
14384
14385 : Unfortunately, it causes problems on some systems.  Arrgh.
14386 case "$val" in
14387 $define)
14388         cat > try.c <<'EOM'
14389 #include <stdio.h>
14390 #include <errno.h>
14391 #include <net/errno.h>
14392 int func()
14393 {
14394         return ENOTSOCK;
14395 }
14396 EOM
14397         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14398                 echo "We'll be including <net/errno.h>." >&4
14399         else
14400                 echo "We won't be including <net/errno.h>." >&4
14401                 val="$undef"
14402         fi
14403         $rm -f try.* try
14404         ;;
14405 esac
14406 set i_neterrno
14407 eval $setvar
14408
14409 : see if netinet/tcp.h is available
14410 set netinet/tcp.h i_netinettcp
14411 eval $inhdr
14412
14413 : see if this is a poll.h system
14414 set poll.h i_poll
14415 eval $inhdr
14416
14417 : see if this is a prot.h system
14418 set prot.h i_prot
14419 eval $inhdr
14420
14421 echo " "
14422 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14423 $cat <<'EOSH' > Cppsym.know
14424 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14425 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14426 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14427 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14428 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14429 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14430 bull c cadmus clipper CMU COFF COMPILER_VERSION
14431 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14432 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14433 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14434 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14435 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14436 H3050R H3050RX hbullx20 hcx host_mips
14437 hp200 hp300 hp700 HP700 hp800 hp9000
14438 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14439 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14440 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14441 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14442 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14443 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14444 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14445 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14446 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14447 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14448 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14449 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14450 MATH_HAS_NO_SIDE_EFFECTS
14451 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14452 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14453 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14454 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14455 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14456 NetBSD news1500 news1700 news1800 news1900 news3700
14457 news700 news800 news900 NeXT NLS ns16000 ns32000
14458 ns32016 ns32332 ns32k nsc32000
14459 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14460 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14461 pc532 pdp11 PGC PIC plexus PORTAR posix
14462 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14463 POSIX_C_SOURCE POSIX_SOURCE POWER
14464 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14465 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14466 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14467 sony sony_news sonyrisc sparc sparclite spectrum
14468 stardent stdc STDC_EXT stratos sun sun3 sun386
14469 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14470 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14471 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14472 sysV68 sysV88 Tek4132 Tek4300 titan
14473 tower tower32 tower32_200 tower32_600 tower32_700
14474 tower32_800 tower32_850 tss
14475 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14476 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14477 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14478 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14479 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14480 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14481 z8000
14482 EOSH
14483 # Maybe put other stuff here too.
14484 cat <<EOSH >>Cppsym.know
14485 $osname
14486 EOSH
14487 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14488 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14489 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14490 $rm -f Cppsym.a Cppsym.b
14491 cat <<EOSH > Cppsym
14492 $startsh
14493 if $test \$# -gt 0; then
14494     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14495     if $test -s Cppsym.got; then
14496         $rm -f Cppsym.got
14497         exit 0
14498     fi
14499     $rm -f Cppsym.got
14500     exit 1
14501 else
14502     $tr " " "$trnl" | ./Cppsym.try
14503     exit 0
14504 fi
14505 EOSH
14506 chmod +x Cppsym
14507 $eunicefix Cppsym
14508 cat <<EOSH > Cppsym.try
14509 $startsh
14510 cat <<'EOCP' > try.c
14511 #include <stdio.h>
14512 int main() {
14513 EOCP
14514 $awk \\
14515 EOSH
14516 cat <<'EOSH' >> Cppsym.try
14517 'length($1) > 0 {
14518     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
14519     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
14520     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
14521     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
14522 }'       >> try.c
14523 echo '}' >> try.c
14524 EOSH
14525 cat <<EOSH >> Cppsym.try
14526 ccflags="$ccflags"
14527 case "$osname-$gccversion" in
14528 irix-) ccflags="\$ccflags -woff 1178" ;;
14529 esac
14530 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14531 EOSH
14532 chmod +x Cppsym.try
14533 $eunicefix Cppsym.try
14534 ./Cppsym < Cppsym.know > Cppsym.true
14535 : now check the C compiler for additional symbols
14536 postprocess_cc_v=''
14537 case "$osname" in
14538 aix) postprocess_cc_v="|$tr , ' '" ;;
14539 esac
14540 $cat >ccsym <<EOS
14541 $startsh
14542 $cat >tmp.c <<EOF
14543 extern int foo;
14544 EOF
14545 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14546 do
14547         case "\$i" in
14548         -D*) echo "\$i" | $sed 's/^-D//';;
14549         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14550         esac
14551 done
14552 $rm -f try.c
14553 EOS
14554 postprocess_cc_v=''
14555 chmod +x ccsym
14556 $eunicefix ccsym
14557 ./ccsym > ccsym1.raw
14558 if $test -s ccsym1.raw; then
14559        $sort ccsym1.raw | $uniq >ccsym.raw
14560 else
14561        mv ccsym1.raw ccsym.raw
14562 fi
14563
14564 $awk '/\=/ { print $0; next }
14565         { print $0"=1" }' ccsym.raw >ccsym.list
14566 $awk '/\=/ { print $0; next }
14567         { print $0"=1" }' Cppsym.true >ccsym.true
14568 $comm -13 ccsym.true ccsym.list >ccsym.own
14569 $comm -12 ccsym.true ccsym.list >ccsym.com
14570 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14571 also=''
14572 if $test -z ccsym.raw; then
14573         echo "Your C compiler doesn't seem to define any symbols!" >&4
14574         echo " "
14575         echo "However, your C preprocessor defines the following symbols:"
14576         $cat Cppsym.true
14577         ccsymbols=''
14578         cppsymbols=`$cat Cppsym.true`
14579         cppsymbols=`echo $cppsymbols`
14580         cppccsymbols="$cppsymbols"
14581 else
14582         if $test -s ccsym.com; then
14583                 echo "Your C compiler and pre-processor define these symbols:"
14584                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14585                 also='also '
14586                 symbols='ones'
14587                 cppccsymbols=`$cat ccsym.com`
14588                 cppccsymbols=`echo $cppccsymbols`
14589                 $test "$silent" || sleep 1
14590         fi
14591         if $test -s ccsym.cpp; then
14592                 $test "$also" && echo " "
14593                 echo "Your C pre-processor ${also}defines the following symbols:"
14594                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14595                 also='further '
14596                 cppsymbols=`$cat ccsym.cpp`
14597                 cppsymbols=`echo $cppsymbols`
14598                 $test "$silent" || sleep 1
14599         fi
14600         if $test -s ccsym.own; then
14601                 $test "$also" && echo " "
14602                 echo "Your C compiler ${also}defines the following cpp symbols:"
14603                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14604                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14605                 ccsymbols=`$cat ccsym.own`
14606                 ccsymbols=`echo $ccsymbols`
14607                 $test "$silent" || sleep 1
14608         fi
14609 fi
14610 $rm -f ccsym*
14611
14612 : see if this is a termio system
14613 val="$undef"
14614 val2="$undef"
14615 val3="$undef"
14616 if $test `./findhdr termios.h`; then
14617         set tcsetattr i_termios
14618         eval $inlibc
14619         val3="$i_termios"
14620 fi
14621 echo " "
14622 case "$val3" in
14623 "$define") echo "You have POSIX termios.h... good!" >&4;;
14624 *) if ./Cppsym pyr; then
14625                 case "`/bin/universe`" in
14626                 ucb) if $test `./findhdr sgtty.h`; then
14627                                 val2="$define"
14628                                 echo "<sgtty.h> found." >&4
14629                         else
14630                                 echo "System is pyramid with BSD universe."
14631                                 echo "<sgtty.h> not found--you could have problems." >&4
14632                         fi;;
14633                 *) if $test `./findhdr termio.h`; then
14634                                 val="$define"
14635                                 echo "<termio.h> found." >&4
14636                         else
14637                                 echo "System is pyramid with USG universe."
14638                                 echo "<termio.h> not found--you could have problems." >&4
14639                         fi;;
14640                 esac
14641         elif ./usg; then
14642                 if $test `./findhdr termio.h`; then
14643                         echo "<termio.h> found." >&4
14644                         val="$define"
14645                 elif $test `./findhdr sgtty.h`; then
14646                         echo "<sgtty.h> found." >&4
14647                         val2="$define"
14648                 else
14649 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14650                 fi
14651         else
14652                 if $test `./findhdr sgtty.h`; then
14653                         echo "<sgtty.h> found." >&4
14654                         val2="$define"
14655                 elif $test `./findhdr termio.h`; then
14656                         echo "<termio.h> found." >&4
14657                         val="$define"
14658                 else
14659 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14660                 fi
14661         fi;;
14662 esac
14663 set i_termio; eval $setvar
14664 val=$val2; set i_sgtty; eval $setvar
14665 val=$val3; set i_termios; eval $setvar
14666
14667 : see if this is a shadow.h system
14668 set shadow.h i_shadow
14669 eval $inhdr
14670
14671 : see if this is a socks.h system
14672 set socks.h i_socks
14673 eval $inhdr
14674
14675 : see if stdarg is available
14676 echo " "
14677 if $test `./findhdr stdarg.h`; then
14678         echo "<stdarg.h> found." >&4
14679         valstd="$define"
14680 else
14681         echo "<stdarg.h> NOT found." >&4
14682         valstd="$undef"
14683 fi
14684
14685 : see if varags is available
14686 echo " "
14687 if $test `./findhdr varargs.h`; then
14688         echo "<varargs.h> found." >&4
14689 else
14690         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14691 fi
14692
14693 : set up the varargs testing programs
14694 $cat > varargs.c <<EOP
14695 #ifdef I_STDARG
14696 #include <stdarg.h>
14697 #endif
14698 #ifdef I_VARARGS
14699 #include <varargs.h>
14700 #endif
14701
14702 #ifdef I_STDARG
14703 int f(char *p, ...)
14704 #else
14705 int f(va_alist)
14706 va_dcl
14707 #endif
14708 {
14709         va_list ap;
14710 #ifndef I_STDARG
14711         char *p;
14712 #endif
14713 #ifdef I_STDARG
14714         va_start(ap,p);
14715 #else
14716         va_start(ap);
14717         p = va_arg(ap, char *);
14718 #endif
14719         va_end(ap);
14720 }
14721 EOP
14722 $cat > varargs <<EOP
14723 $startsh
14724 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14725         echo "true"
14726 else
14727         echo "false"
14728 fi
14729 $rm -f varargs$_o
14730 EOP
14731 chmod +x varargs
14732
14733 : now check which varargs header should be included
14734 echo " "
14735 i_varhdr=''
14736 case "$valstd" in
14737 "$define")
14738         if `./varargs I_STDARG`; then
14739                 val='stdarg.h'
14740         elif `./varargs I_VARARGS`; then
14741                 val='varargs.h'
14742         fi
14743         ;;
14744 *)
14745         if `./varargs I_VARARGS`; then
14746                 val='varargs.h'
14747         fi
14748         ;;
14749 esac
14750 case "$val" in
14751 '')
14752 echo "I could not find the definition for va_dcl... You have problems..." >&4
14753         val="$undef"; set i_stdarg; eval $setvar
14754         val="$undef"; set i_varargs; eval $setvar
14755         ;;
14756 *) 
14757         set i_varhdr
14758         eval $setvar
14759         case "$i_varhdr" in
14760         stdarg.h)
14761                 val="$define"; set i_stdarg; eval $setvar
14762                 val="$undef"; set i_varargs; eval $setvar
14763                 ;;
14764         varargs.h)
14765                 val="$undef"; set i_stdarg; eval $setvar
14766                 val="$define"; set i_varargs; eval $setvar
14767                 ;;
14768         esac
14769         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14770 esac
14771 $rm -f varargs*
14772
14773 : see if stddef is available
14774 set stddef.h i_stddef
14775 eval $inhdr
14776
14777 : see if this is a sunmath.h system
14778 set sunmath.h i_sunmath
14779 eval $inhdr
14780
14781 : see if sys/access.h is available
14782 set sys/access.h i_sysaccess
14783 eval $inhdr
14784
14785 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14786 set sys/filio.h i_sysfilio
14787 eval $inhdr
14788 echo " "
14789 if $test `./findhdr sys/ioctl.h`; then
14790         val="$define"
14791         echo '<sys/ioctl.h> found.' >&4
14792 else
14793         val="$undef"
14794         if $test $i_sysfilio = "$define"; then
14795             echo '<sys/ioctl.h> NOT found.' >&4
14796         else
14797                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14798                 $test $i_termio = "$define" && xxx="termio.h"
14799                 $test $i_termios = "$define" && xxx="termios.h"
14800 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14801         fi
14802 fi
14803 set i_sysioctl
14804 eval $setvar
14805
14806
14807 : see if this is a syslog.h system
14808 set syslog.h i_syslog
14809 eval $inhdr
14810
14811
14812 : see if this is a sys/mode.h system
14813 set sys/mode.h i_sysmode
14814 eval $inhdr
14815
14816 : see if sys/resource.h has to be included
14817 set sys/resource.h i_sysresrc
14818 eval $inhdr
14819
14820 : see if sys/security.h is available
14821 set sys/security.h i_syssecrt
14822 eval $inhdr
14823
14824 : see if this is a sys/statvfs.h system
14825 set sys/statvfs.h i_sysstatvfs
14826 eval $inhdr
14827
14828 : see if this is a sys/uio.h system
14829 set sys/uio.h i_sysuio
14830 eval $inhdr
14831
14832 : see if this is a sys/un.h system
14833 set sys/un.h i_sysun
14834 eval $inhdr
14835
14836
14837 : see if this is a sys/utsname.h system
14838 set sys/utsname.h i_sysutsname
14839 eval $inhdr
14840
14841 : see if this is a syswait system
14842 set sys/wait.h i_syswait
14843 eval $inhdr
14844
14845 : see if this is a ustat.h system
14846 set ustat.h i_ustat
14847 eval $inhdr
14848
14849 : see if this is an utime system
14850 set utime.h i_utime
14851 eval $inhdr
14852
14853 : see if this is a values.h system
14854 set values.h i_values
14855 eval $inhdr
14856
14857 : see if this is a vfork system
14858 case "$d_vfork" in
14859 "$define")
14860         set vfork.h i_vfork
14861         eval $inhdr
14862         ;;
14863 *)
14864         i_vfork="$undef"
14865         ;;
14866 esac
14867
14868 : see if gdbm.h is available
14869 set gdbm.h t_gdbm
14870 eval $inhdr
14871 case "$t_gdbm" in
14872 $define)
14873         : see if gdbm_open exists
14874         set gdbm_open d_gdbm_open
14875         eval $inlibc
14876         case "$d_gdbm_open" in
14877         $undef)
14878                 t_gdbm="$undef"
14879                 echo "We won't be including <gdbm.h>"
14880                 ;;
14881         esac
14882         ;;
14883 esac
14884 val="$t_gdbm"
14885 set i_gdbm
14886 eval $setvar
14887
14888 echo " "
14889 echo "Looking for extensions..." >&4
14890 : If we are using the old config.sh, known_extensions may contain
14891 : old or inaccurate or duplicate values.
14892 known_extensions=''
14893 nonxs_extensions=''
14894 : We do not use find because it might not be available.
14895 : We do not just use MANIFEST because the user may have dropped
14896 : some additional extensions into the source tree and expect them
14897 : to be built.
14898
14899 : Function to recursively find available extensions, ignoring DynaLoader
14900 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14901 find_extensions='
14902     for xxx in *; do
14903        case "$xxx" in
14904            DynaLoader|dynaload) ;;
14905            *)
14906            if $test -f $xxx/$xxx.xs; then
14907                known_extensions="$known_extensions $1$xxx";
14908            elif $test -f $xxx/Makefile.PL; then
14909                nonxs_extensions="$nonxs_extensions $1$xxx";
14910            else
14911                if $test -d $xxx -a $# -lt 10; then
14912                    set $1$xxx/ $*;
14913                    cd $xxx;
14914                    eval $find_extensions;
14915                    cd ..;
14916                    shift;
14917                fi;
14918            fi
14919            ;;
14920        esac;
14921     done'
14922 tdir=`pwd`
14923 cd $rsrc/ext
14924 set X
14925 shift
14926 eval $find_extensions
14927 set X $nonxs_extensions
14928 shift
14929 nonxs_extensions="$*"
14930 set X $known_extensions
14931 shift
14932 known_extensions="$*"
14933 cd $tdir
14934
14935 : Now see which are supported on this system.
14936 avail_ext=''
14937 for xxx in $known_extensions ; do
14938         case "$xxx" in
14939         DB_File|db_file)
14940                 case "$i_db" in
14941                 $define) avail_ext="$avail_ext $xxx" ;;
14942                 esac
14943                 ;;
14944         GDBM_File|gdbm_fil)
14945                 case "$i_gdbm" in 
14946                 $define) avail_ext="$avail_ext $xxx" ;;
14947                 esac
14948                 ;;
14949         NDBM_File|ndbm_fil)
14950                 case "$i_ndbm" in
14951                 $define)
14952                     case "$osname-$use64bitint" in
14953                     hpux-define)
14954                         case "$libs" in
14955                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14956                         esac
14957                         ;;
14958                     *) avail_ext="$avail_ext $xxx" ;;
14959                     esac
14960                     ;;
14961                 esac
14962                 ;;
14963         ODBM_File|odbm_fil) 
14964                 case "${i_dbm}${i_rpcsvcdbm}" in
14965                 *"${define}"*)
14966                     case "$osname-$use64bitint" in
14967                     hpux-define)
14968                         case "$libs" in
14969                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14970                         esac
14971                         ;;
14972                     *) avail_ext="$avail_ext $xxx" ;;
14973                     esac
14974                     ;;
14975                 esac
14976                 ;;
14977         POSIX|posix)
14978                 case "$useposix" in
14979                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14980                 esac
14981                 ;;
14982         Opcode|opcode)
14983                 case "$useopcode" in
14984                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14985                 esac
14986                 ;;
14987         Socket|socket)
14988                 case "$d_socket" in 
14989                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14990                 esac
14991                 ;;
14992         Sys/Syslog|sys/syslog)
14993                 : XXX syslog requires socket
14994                 case "$d_socket" in 
14995                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14996                 esac
14997                 ;;
14998         Thread|thread)
14999                 case "$usethreads" in 
15000                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15001                 esac
15002                 ;;
15003         IPC/SysV|ipc/sysv)
15004                 : XXX Do we need a useipcsysv variable here
15005                 case "${d_msg}${d_sem}${d_shm}" in 
15006                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15007                 esac
15008                 ;;
15009         *)      avail_ext="$avail_ext $xxx"
15010                 ;;
15011         esac
15012 done
15013
15014 set X $avail_ext
15015 shift
15016 avail_ext="$*"
15017
15018 : Now see which nonxs extensions are supported on this system.
15019 : For now assume all are.
15020 nonxs_ext=''
15021 for xxx in $nonxs_extensions ; do
15022         case "$xxx" in
15023         *)      nonxs_ext="$nonxs_ext $xxx"
15024                 ;;
15025         esac
15026 done
15027
15028 set X $nonxs_ext
15029 shift
15030 nonxs_ext="$*"
15031
15032 case $usedl in
15033 $define)
15034         $cat <<EOM
15035 A number of extensions are supplied with $package.  You may choose to
15036 compile these extensions for dynamic loading (the default), compile
15037 them into the $package executable (static loading), or not include
15038 them at all.  Answer "none" to include no extensions.
15039 Note that DynaLoader is always built and need not be mentioned here.
15040
15041 EOM
15042         case "$dynamic_ext" in
15043         '') dflt="$avail_ext" ;;
15044         *)      dflt="$dynamic_ext"
15045                 # Perhaps we are reusing an old out-of-date config.sh.
15046                 case "$hint" in
15047                 previous)
15048                         if test X"$dynamic_ext" != X"$avail_ext"; then
15049                                 $cat <<EOM
15050 NOTICE:  Your previous config.sh list may be incorrect. 
15051 The extensions now available to you are 
15052         ${avail_ext}
15053 but the default list from your previous config.sh is
15054         ${dynamic_ext} 
15055
15056 EOM
15057                         fi
15058                         ;;
15059                 esac
15060                 ;;
15061         esac
15062         case "$dflt" in
15063         '')     dflt=none;;
15064         esac
15065         rp="What extensions do you wish to load dynamically?"
15066         . ./myread
15067         case "$ans" in
15068         none) dynamic_ext=' ' ;;
15069         *) dynamic_ext="$ans" ;;
15070         esac
15071
15072         case "$static_ext" in
15073         '')
15074                 : Exclude those already listed in dynamic linking
15075                 dflt=''
15076                 for xxx in $avail_ext; do
15077                         case " $dynamic_ext " in
15078                         *" $xxx "*) ;;
15079                         *) dflt="$dflt $xxx" ;;
15080                         esac
15081                 done
15082                 set X $dflt
15083                 shift
15084                 dflt="$*"
15085                 ;;
15086         *)  dflt="$static_ext" 
15087                 ;;
15088         esac
15089
15090         case "$dflt" in
15091         '')     dflt=none;;
15092         esac
15093         rp="What extensions do you wish to load statically?"
15094         . ./myread
15095         case "$ans" in
15096         none) static_ext=' ' ;;
15097         *) static_ext="$ans" ;;
15098         esac
15099         ;;
15100 *)
15101         $cat <<EOM
15102 A number of extensions are supplied with $package.  Answer "none" 
15103 to include no extensions. 
15104 Note that DynaLoader is always built and need not be mentioned here.
15105
15106 EOM
15107         case "$static_ext" in
15108         '') dflt="$avail_ext" ;;
15109         *)      dflt="$static_ext"
15110                 # Perhaps we are reusing an old out-of-date config.sh.
15111                 case "$hint" in
15112                 previous)
15113                         if test X"$static_ext" != X"$avail_ext"; then
15114                                 $cat <<EOM
15115 NOTICE:  Your previous config.sh list may be incorrect. 
15116 The extensions now available to you are 
15117         ${avail_ext}
15118 but the default list from your previous config.sh is
15119         ${static_ext} 
15120
15121 EOM
15122                         fi
15123                         ;;
15124                 esac
15125                 ;;
15126         esac
15127         : Exclude those that are not xs extensions
15128         case "$dflt" in
15129         '')     dflt=none;;
15130         esac
15131         rp="What extensions do you wish to include?"
15132         . ./myread
15133         case "$ans" in
15134         none) static_ext=' ' ;;
15135         *) static_ext="$ans" ;;
15136         esac
15137         ;;
15138 esac
15139
15140 set X $dynamic_ext $static_ext $nonxs_ext
15141 shift
15142 extensions="$*"
15143
15144 : Remove build directory name from cppstdin so it can be used from
15145 : either the present location or the final installed location.
15146 echo " "
15147 : Get out of the UU directory to get correct path name.
15148 cd ..
15149 case "$cppstdin" in
15150 `pwd`/cppstdin)
15151         echo "Stripping down cppstdin path name"
15152         cppstdin=cppstdin
15153         ;;
15154 esac
15155 cd UU
15156
15157 : end of configuration questions
15158 echo " "
15159 echo "End of configuration questions."
15160 echo " "
15161
15162 : back to where it started
15163 if test -d ../UU; then
15164         cd ..
15165 fi
15166
15167 : configuration may be patched via a 'config.over' file
15168 if $test -f config.over; then
15169         echo " "
15170         dflt=y
15171         rp='I see a config.over file.  Do you wish to load it?'
15172         . UU/myread
15173         case "$ans" in
15174         n*) echo "OK, I'll ignore it.";;
15175         *)      . ./config.over
15176                 echo "Configuration override changes have been loaded."
15177                 ;;
15178         esac
15179 fi
15180
15181 : in case they want portability, strip down executable paths
15182 case "$d_portable" in
15183 "$define")
15184         echo " "
15185         echo "Stripping down executable paths..." >&4
15186         for file in $loclist $trylist; do
15187                 eval temp=\$$file
15188                 eval $file=`basename $temp`
15189         done
15190         ;;
15191 esac
15192
15193 : create config.sh file
15194 echo " "
15195 echo "Creating config.sh..." >&4
15196 $spitshell <<EOT >config.sh
15197 $startsh
15198 #
15199 # This file was produced by running the Configure script. It holds all the
15200 # definitions figured out by Configure. Should you modify one of these values,
15201 # do not forget to propagate your changes by running "Configure -der". You may
15202 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15203 #
15204
15205 # Package name      : $package
15206 # Source directory  : $src
15207 # Configuration time: $cf_time
15208 # Configured by     : $cf_by
15209 # Target system     : $myuname
15210
15211 Author='$Author'
15212 Date='$Date'
15213 Header='$Header'
15214 Id='$Id'
15215 Locker='$Locker'
15216 Log='$Log'
15217 Mcc='$Mcc'
15218 RCSfile='$RCSfile'
15219 Revision='$Revision'
15220 Source='$Source'
15221 State='$State'
15222 _a='$_a'
15223 _exe='$_exe'
15224 _o='$_o'
15225 afs='$afs'
15226 alignbytes='$alignbytes'
15227 ansi2knr='$ansi2knr'
15228 aphostname='$aphostname'
15229 api_revision='$api_revision'
15230 api_subversion='$api_subversion'
15231 api_version='$api_version'
15232 api_versionstring='$api_versionstring'
15233 ar='$ar'
15234 archlib='$archlib'
15235 archlibexp='$archlibexp'
15236 archname64='$archname64'
15237 archname='$archname'
15238 archobjs='$archobjs'
15239 awk='$awk'
15240 baserev='$baserev'
15241 bash='$bash'
15242 bin='$bin'
15243 bincompat5005='$bincompat5005'
15244 binexp='$binexp'
15245 bison='$bison'
15246 byacc='$byacc'
15247 byteorder='$byteorder'
15248 c='$c'
15249 castflags='$castflags'
15250 cat='$cat'
15251 cc='$cc'
15252 cccdlflags='$cccdlflags'
15253 ccdlflags='$ccdlflags'
15254 ccflags='$ccflags'
15255 ccsymbols='$ccsymbols'
15256 cf_by='$cf_by'
15257 cf_email='$cf_email'
15258 cf_time='$cf_time'
15259 charsize='$charsize'
15260 chgrp='$chgrp'
15261 chmod='$chmod'
15262 chown='$chown'
15263 clocktype='$clocktype'
15264 comm='$comm'
15265 compress='$compress'
15266 contains='$contains'
15267 cp='$cp'
15268 cpio='$cpio'
15269 cpp='$cpp'
15270 cpp_stuff='$cpp_stuff'
15271 cppccsymbols='$cppccsymbols'
15272 cppflags='$cppflags'
15273 cpplast='$cpplast'
15274 cppminus='$cppminus'
15275 cpprun='$cpprun'
15276 cppstdin='$cppstdin'
15277 cppsymbols='$cppsymbols'
15278 crosscompile='$crosscompile'
15279 cryptlib='$cryptlib'
15280 csh='$csh'
15281 d_Gconvert='$d_Gconvert'
15282 d_PRIEldbl='$d_PRIEldbl'
15283 d_PRIFldbl='$d_PRIFldbl'
15284 d_PRIGldbl='$d_PRIGldbl'
15285 d_PRIX64='$d_PRIX64'
15286 d_PRId64='$d_PRId64'
15287 d_PRIeldbl='$d_PRIeldbl'
15288 d_PRIfldbl='$d_PRIfldbl'
15289 d_PRIgldbl='$d_PRIgldbl'
15290 d_PRIi64='$d_PRIi64'
15291 d_PRIo64='$d_PRIo64'
15292 d_PRIu64='$d_PRIu64'
15293 d_PRIx64='$d_PRIx64'
15294 d_access='$d_access'
15295 d_accessx='$d_accessx'
15296 d_alarm='$d_alarm'
15297 d_archlib='$d_archlib'
15298 d_atolf='$d_atolf'
15299 d_atoll='$d_atoll'
15300 d_attribut='$d_attribut'
15301 d_bcmp='$d_bcmp'
15302 d_bcopy='$d_bcopy'
15303 d_bincompat5005='$d_bincompat5005'
15304 d_bsd='$d_bsd'
15305 d_bsdgetpgrp='$d_bsdgetpgrp'
15306 d_bsdsetpgrp='$d_bsdsetpgrp'
15307 d_bzero='$d_bzero'
15308 d_casti32='$d_casti32'
15309 d_castneg='$d_castneg'
15310 d_charvspr='$d_charvspr'
15311 d_chown='$d_chown'
15312 d_chroot='$d_chroot'
15313 d_chsize='$d_chsize'
15314 d_closedir='$d_closedir'
15315 d_const='$d_const'
15316 d_crypt='$d_crypt'
15317 d_csh='$d_csh'
15318 d_cuserid='$d_cuserid'
15319 d_dbl_dig='$d_dbl_dig'
15320 d_difftime='$d_difftime'
15321 d_dirnamlen='$d_dirnamlen'
15322 d_dlerror='$d_dlerror'
15323 d_dlopen='$d_dlopen'
15324 d_dlsymun='$d_dlsymun'
15325 d_dosuid='$d_dosuid'
15326 d_drand48proto='$d_drand48proto'
15327 d_dup2='$d_dup2'
15328 d_eaccess='$d_eaccess'
15329 d_endgrent='$d_endgrent'
15330 d_endhent='$d_endhent'
15331 d_endnent='$d_endnent'
15332 d_endpent='$d_endpent'
15333 d_endpwent='$d_endpwent'
15334 d_endsent='$d_endsent'
15335 d_eofnblk='$d_eofnblk'
15336 d_eunice='$d_eunice'
15337 d_fchmod='$d_fchmod'
15338 d_fchown='$d_fchown'
15339 d_fcntl='$d_fcntl'
15340 d_fd_macros='$d_fd_macros'
15341 d_fd_set='$d_fd_set'
15342 d_fds_bits='$d_fds_bits'
15343 d_fgetpos='$d_fgetpos'
15344 d_flexfnam='$d_flexfnam'
15345 d_flock='$d_flock'
15346 d_fork='$d_fork'
15347 d_fpathconf='$d_fpathconf'
15348 d_fpos64_t='$d_fpos64_t'
15349 d_frexpl='$d_frexpl'
15350 d_fs_data_s='$d_fs_data_s'
15351 d_fseeko='$d_fseeko'
15352 d_fsetpos='$d_fsetpos'
15353 d_fstatfs='$d_fstatfs'
15354 d_fstatvfs='$d_fstatvfs'
15355 d_ftello='$d_ftello'
15356 d_ftime='$d_ftime'
15357 d_getcwd='$d_getcwd'
15358 d_getespwnam='$d_getespwnam'
15359 d_getfsstat='$d_getfsstat'
15360 d_getgrent='$d_getgrent'
15361 d_getgrps='$d_getgrps'
15362 d_gethbyaddr='$d_gethbyaddr'
15363 d_gethbyname='$d_gethbyname'
15364 d_gethent='$d_gethent'
15365 d_gethname='$d_gethname'
15366 d_gethostprotos='$d_gethostprotos'
15367 d_getlogin='$d_getlogin'
15368 d_getmnt='$d_getmnt'
15369 d_getmntent='$d_getmntent'
15370 d_getnbyaddr='$d_getnbyaddr'
15371 d_getnbyname='$d_getnbyname'
15372 d_getnent='$d_getnent'
15373 d_getnetprotos='$d_getnetprotos'
15374 d_getpbyname='$d_getpbyname'
15375 d_getpbynumber='$d_getpbynumber'
15376 d_getpent='$d_getpent'
15377 d_getpgid='$d_getpgid'
15378 d_getpgrp2='$d_getpgrp2'
15379 d_getpgrp='$d_getpgrp'
15380 d_getppid='$d_getppid'
15381 d_getprior='$d_getprior'
15382 d_getprotoprotos='$d_getprotoprotos'
15383 d_getprpwnam='$d_getprpwnam'
15384 d_getpwent='$d_getpwent'
15385 d_getsbyname='$d_getsbyname'
15386 d_getsbyport='$d_getsbyport'
15387 d_getsent='$d_getsent'
15388 d_getservprotos='$d_getservprotos'
15389 d_getspnam='$d_getspnam'
15390 d_gettimeod='$d_gettimeod'
15391 d_gnulibc='$d_gnulibc'
15392 d_grpasswd='$d_grpasswd'
15393 d_hasmntopt='$d_hasmntopt'
15394 d_htonl='$d_htonl'
15395 d_iconv='$d_iconv'
15396 d_index='$d_index'
15397 d_inetaton='$d_inetaton'
15398 d_int64_t='$d_int64_t'
15399 d_isascii='$d_isascii'
15400 d_isnan='$d_isnan'
15401 d_isnanl='$d_isnanl'
15402 d_killpg='$d_killpg'
15403 d_lchown='$d_lchown'
15404 d_ldbl_dig='$d_ldbl_dig'
15405 d_link='$d_link'
15406 d_locconv='$d_locconv'
15407 d_lockf='$d_lockf'
15408 d_longdbl='$d_longdbl'
15409 d_longlong='$d_longlong'
15410 d_lseekproto='$d_lseekproto'
15411 d_lstat='$d_lstat'
15412 d_madvise='$d_madvise'
15413 d_mblen='$d_mblen'
15414 d_mbstowcs='$d_mbstowcs'
15415 d_mbtowc='$d_mbtowc'
15416 d_memchr='$d_memchr'
15417 d_memcmp='$d_memcmp'
15418 d_memcpy='$d_memcpy'
15419 d_memmove='$d_memmove'
15420 d_memset='$d_memset'
15421 d_mkdir='$d_mkdir'
15422 d_mkdtemp='$d_mkdtemp'
15423 d_mkfifo='$d_mkfifo'
15424 d_mkstemp='$d_mkstemp'
15425 d_mkstemps='$d_mkstemps'
15426 d_mktime='$d_mktime'
15427 d_mmap='$d_mmap'
15428 d_modfl='$d_modfl'
15429 d_mprotect='$d_mprotect'
15430 d_msg='$d_msg'
15431 d_msg_ctrunc='$d_msg_ctrunc'
15432 d_msg_dontroute='$d_msg_dontroute'
15433 d_msg_oob='$d_msg_oob'
15434 d_msg_peek='$d_msg_peek'
15435 d_msg_proxy='$d_msg_proxy'
15436 d_msgctl='$d_msgctl'
15437 d_msgget='$d_msgget'
15438 d_msgrcv='$d_msgrcv'
15439 d_msgsnd='$d_msgsnd'
15440 d_msync='$d_msync'
15441 d_munmap='$d_munmap'
15442 d_mymalloc='$d_mymalloc'
15443 d_nice='$d_nice'
15444 d_nv_preserves_uv='$d_nv_preserves_uv'
15445 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15446 d_off64_t='$d_off64_t'
15447 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15448 d_oldpthreads='$d_oldpthreads'
15449 d_oldsock='$d_oldsock'
15450 d_open3='$d_open3'
15451 d_pathconf='$d_pathconf'
15452 d_pause='$d_pause'
15453 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15454 d_phostname='$d_phostname'
15455 d_pipe='$d_pipe'
15456 d_poll='$d_poll'
15457 d_portable='$d_portable'
15458 d_pthread_yield='$d_pthread_yield'
15459 d_pwage='$d_pwage'
15460 d_pwchange='$d_pwchange'
15461 d_pwclass='$d_pwclass'
15462 d_pwcomment='$d_pwcomment'
15463 d_pwexpire='$d_pwexpire'
15464 d_pwgecos='$d_pwgecos'
15465 d_pwpasswd='$d_pwpasswd'
15466 d_pwquota='$d_pwquota'
15467 d_qgcvt='$d_qgcvt'
15468 d_quad='$d_quad'
15469 d_readdir='$d_readdir'
15470 d_readlink='$d_readlink'
15471 d_rename='$d_rename'
15472 d_rewinddir='$d_rewinddir'
15473 d_rmdir='$d_rmdir'
15474 d_safebcpy='$d_safebcpy'
15475 d_safemcpy='$d_safemcpy'
15476 d_sanemcmp='$d_sanemcmp'
15477 d_sched_yield='$d_sched_yield'
15478 d_scm_rights='$d_scm_rights'
15479 d_seekdir='$d_seekdir'
15480 d_select='$d_select'
15481 d_sem='$d_sem'
15482 d_semctl='$d_semctl'
15483 d_semctl_semid_ds='$d_semctl_semid_ds'
15484 d_semctl_semun='$d_semctl_semun'
15485 d_semget='$d_semget'
15486 d_semop='$d_semop'
15487 d_setegid='$d_setegid'
15488 d_seteuid='$d_seteuid'
15489 d_setgrent='$d_setgrent'
15490 d_setgrps='$d_setgrps'
15491 d_sethent='$d_sethent'
15492 d_setlinebuf='$d_setlinebuf'
15493 d_setlocale='$d_setlocale'
15494 d_setnent='$d_setnent'
15495 d_setpent='$d_setpent'
15496 d_setpgid='$d_setpgid'
15497 d_setpgrp2='$d_setpgrp2'
15498 d_setpgrp='$d_setpgrp'
15499 d_setprior='$d_setprior'
15500 d_setproctitle='$d_setproctitle'
15501 d_setpwent='$d_setpwent'
15502 d_setregid='$d_setregid'
15503 d_setresgid='$d_setresgid'
15504 d_setresuid='$d_setresuid'
15505 d_setreuid='$d_setreuid'
15506 d_setrgid='$d_setrgid'
15507 d_setruid='$d_setruid'
15508 d_setsent='$d_setsent'
15509 d_setsid='$d_setsid'
15510 d_setvbuf='$d_setvbuf'
15511 d_sfio='$d_sfio'
15512 d_shm='$d_shm'
15513 d_shmat='$d_shmat'
15514 d_shmatprototype='$d_shmatprototype'
15515 d_shmctl='$d_shmctl'
15516 d_shmdt='$d_shmdt'
15517 d_shmget='$d_shmget'
15518 d_sigaction='$d_sigaction'
15519 d_sigsetjmp='$d_sigsetjmp'
15520 d_socket='$d_socket'
15521 d_socklen_t='$d_socklen_t'
15522 d_sockpair='$d_sockpair'
15523 d_sqrtl='$d_sqrtl'
15524 d_statblks='$d_statblks'
15525 d_statfs_f_flags='$d_statfs_f_flags'
15526 d_statfs_s='$d_statfs_s'
15527 d_statvfs='$d_statvfs'
15528 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15529 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15530 d_stdio_stream_array='$d_stdio_stream_array'
15531 d_stdiobase='$d_stdiobase'
15532 d_stdstdio='$d_stdstdio'
15533 d_strchr='$d_strchr'
15534 d_strcoll='$d_strcoll'
15535 d_strctcpy='$d_strctcpy'
15536 d_strerrm='$d_strerrm'
15537 d_strerror='$d_strerror'
15538 d_strtod='$d_strtod'
15539 d_strtol='$d_strtol'
15540 d_strtold='$d_strtold'
15541 d_strtoll='$d_strtoll'
15542 d_strtoul='$d_strtoul'
15543 d_strtoull='$d_strtoull'
15544 d_strtouq='$d_strtouq'
15545 d_strxfrm='$d_strxfrm'
15546 d_suidsafe='$d_suidsafe'
15547 d_symlink='$d_symlink'
15548 d_syscall='$d_syscall'
15549 d_sysconf='$d_sysconf'
15550 d_sysernlst='$d_sysernlst'
15551 d_syserrlst='$d_syserrlst'
15552 d_system='$d_system'
15553 d_tcgetpgrp='$d_tcgetpgrp'
15554 d_tcsetpgrp='$d_tcsetpgrp'
15555 d_telldir='$d_telldir'
15556 d_telldirproto='$d_telldirproto'
15557 d_time='$d_time'
15558 d_times='$d_times'
15559 d_truncate='$d_truncate'
15560 d_tzname='$d_tzname'
15561 d_umask='$d_umask'
15562 d_uname='$d_uname'
15563 d_union_semun='$d_union_semun'
15564 d_ustat='$d_ustat'
15565 d_vendorarch='$d_vendorarch'
15566 d_vendorbin='$d_vendorbin'
15567 d_vendorlib='$d_vendorlib'
15568 d_vfork='$d_vfork'
15569 d_void_closedir='$d_void_closedir'
15570 d_voidsig='$d_voidsig'
15571 d_voidtty='$d_voidtty'
15572 d_volatile='$d_volatile'
15573 d_vprintf='$d_vprintf'
15574 d_wait4='$d_wait4'
15575 d_waitpid='$d_waitpid'
15576 d_wcstombs='$d_wcstombs'
15577 d_wctomb='$d_wctomb'
15578 d_xenix='$d_xenix'
15579 date='$date'
15580 db_hashtype='$db_hashtype'
15581 db_prefixtype='$db_prefixtype'
15582 defvoidused='$defvoidused'
15583 direntrytype='$direntrytype'
15584 dlext='$dlext'
15585 dlsrc='$dlsrc'
15586 doublesize='$doublesize'
15587 drand01='$drand01'
15588 dynamic_ext='$dynamic_ext'
15589 eagain='$eagain'
15590 ebcdic='$ebcdic'
15591 echo='$echo'
15592 egrep='$egrep'
15593 emacs='$emacs'
15594 eunicefix='$eunicefix'
15595 exe_ext='$exe_ext'
15596 expr='$expr'
15597 extensions='$extensions'
15598 fflushNULL='$fflushNULL'
15599 fflushall='$fflushall'
15600 find='$find'
15601 firstmakefile='$firstmakefile'
15602 flex='$flex'
15603 fpossize='$fpossize'
15604 fpostype='$fpostype'
15605 freetype='$freetype'
15606 full_ar='$full_ar'
15607 full_csh='$full_csh'
15608 full_sed='$full_sed'
15609 gccversion='$gccversion'
15610 gidformat='$gidformat'
15611 gidsign='$gidsign'
15612 gidsize='$gidsize'
15613 gidtype='$gidtype'
15614 glibpth='$glibpth'
15615 grep='$grep'
15616 groupcat='$groupcat'
15617 groupstype='$groupstype'
15618 gzip='$gzip'
15619 h_fcntl='$h_fcntl'
15620 h_sysfile='$h_sysfile'
15621 hint='$hint'
15622 hostcat='$hostcat'
15623 huge='$huge'
15624 i16size='$i16size'
15625 i16type='$i16type'
15626 i32size='$i32size'
15627 i32type='$i32type'
15628 i64size='$i64size'
15629 i64type='$i64type'
15630 i8size='$i8size'
15631 i8type='$i8type'
15632 i_arpainet='$i_arpainet'
15633 i_bsdioctl='$i_bsdioctl'
15634 i_db='$i_db'
15635 i_dbm='$i_dbm'
15636 i_dirent='$i_dirent'
15637 i_dld='$i_dld'
15638 i_dlfcn='$i_dlfcn'
15639 i_fcntl='$i_fcntl'
15640 i_float='$i_float'
15641 i_gdbm='$i_gdbm'
15642 i_grp='$i_grp'
15643 i_iconv='$i_iconv'
15644 i_ieeefp='$i_ieeefp'
15645 i_inttypes='$i_inttypes'
15646 i_limits='$i_limits'
15647 i_locale='$i_locale'
15648 i_machcthr='$i_machcthr'
15649 i_malloc='$i_malloc'
15650 i_math='$i_math'
15651 i_memory='$i_memory'
15652 i_mntent='$i_mntent'
15653 i_ndbm='$i_ndbm'
15654 i_netdb='$i_netdb'
15655 i_neterrno='$i_neterrno'
15656 i_netinettcp='$i_netinettcp'
15657 i_niin='$i_niin'
15658 i_poll='$i_poll'
15659 i_prot='$i_prot'
15660 i_pthread='$i_pthread'
15661 i_pwd='$i_pwd'
15662 i_rpcsvcdbm='$i_rpcsvcdbm'
15663 i_sfio='$i_sfio'
15664 i_sgtty='$i_sgtty'
15665 i_shadow='$i_shadow'
15666 i_socks='$i_socks'
15667 i_stdarg='$i_stdarg'
15668 i_stddef='$i_stddef'
15669 i_stdlib='$i_stdlib'
15670 i_string='$i_string'
15671 i_sunmath='$i_sunmath'
15672 i_sysaccess='$i_sysaccess'
15673 i_sysdir='$i_sysdir'
15674 i_sysfile='$i_sysfile'
15675 i_sysfilio='$i_sysfilio'
15676 i_sysin='$i_sysin'
15677 i_sysioctl='$i_sysioctl'
15678 i_syslog='$i_syslog'
15679 i_sysmman='$i_sysmman'
15680 i_sysmode='$i_sysmode'
15681 i_sysmount='$i_sysmount'
15682 i_sysndir='$i_sysndir'
15683 i_sysparam='$i_sysparam'
15684 i_sysresrc='$i_sysresrc'
15685 i_syssecrt='$i_syssecrt'
15686 i_sysselct='$i_sysselct'
15687 i_syssockio='$i_syssockio'
15688 i_sysstat='$i_sysstat'
15689 i_sysstatfs='$i_sysstatfs'
15690 i_sysstatvfs='$i_sysstatvfs'
15691 i_systime='$i_systime'
15692 i_systimek='$i_systimek'
15693 i_systimes='$i_systimes'
15694 i_systypes='$i_systypes'
15695 i_sysuio='$i_sysuio'
15696 i_sysun='$i_sysun'
15697 i_sysutsname='$i_sysutsname'
15698 i_sysvfs='$i_sysvfs'
15699 i_syswait='$i_syswait'
15700 i_termio='$i_termio'
15701 i_termios='$i_termios'
15702 i_time='$i_time'
15703 i_unistd='$i_unistd'
15704 i_ustat='$i_ustat'
15705 i_utime='$i_utime'
15706 i_values='$i_values'
15707 i_varargs='$i_varargs'
15708 i_varhdr='$i_varhdr'
15709 i_vfork='$i_vfork'
15710 ignore_versioned_solibs='$ignore_versioned_solibs'
15711 inc_version_list='$inc_version_list'
15712 inc_version_list_init='$inc_version_list_init'
15713 incpath='$incpath'
15714 inews='$inews'
15715 installarchlib='$installarchlib'
15716 installbin='$installbin'
15717 installman1dir='$installman1dir'
15718 installman3dir='$installman3dir'
15719 installprefix='$installprefix'
15720 installprefixexp='$installprefixexp'
15721 installprivlib='$installprivlib'
15722 installscript='$installscript'
15723 installsitearch='$installsitearch'
15724 installsitebin='$installsitebin'
15725 installsitelib='$installsitelib'
15726 installstyle='$installstyle'
15727 installusrbinperl='$installusrbinperl'
15728 installvendorarch='$installvendorarch'
15729 installvendorbin='$installvendorbin'
15730 installvendorlib='$installvendorlib'
15731 intsize='$intsize'
15732 ivdformat='$ivdformat'
15733 ivsize='$ivsize'
15734 ivtype='$ivtype'
15735 known_extensions='$known_extensions'
15736 ksh='$ksh'
15737 large='$large'
15738 ld='$ld'
15739 lddlflags='$lddlflags'
15740 ldflags='$ldflags'
15741 ldlibpthname='$ldlibpthname'
15742 less='$less'
15743 lib_ext='$lib_ext'
15744 libc='$libc'
15745 libperl='$libperl'
15746 libpth='$libpth'
15747 libs='$libs'
15748 libsdirs='$libsdirs'
15749 libsfiles='$libsfiles'
15750 libsfound='$libsfound'
15751 libspath='$libspath'
15752 libswanted='$libswanted'
15753 line='$line'
15754 lint='$lint'
15755 lkflags='$lkflags'
15756 ln='$ln'
15757 lns='$lns'
15758 locincpth='$locincpth'
15759 loclibpth='$loclibpth'
15760 longdblsize='$longdblsize'
15761 longlongsize='$longlongsize'
15762 longsize='$longsize'
15763 lp='$lp'
15764 lpr='$lpr'
15765 ls='$ls'
15766 lseeksize='$lseeksize'
15767 lseektype='$lseektype'
15768 mail='$mail'
15769 mailx='$mailx'
15770 make='$make'
15771 make_set_make='$make_set_make'
15772 mallocobj='$mallocobj'
15773 mallocsrc='$mallocsrc'
15774 malloctype='$malloctype'
15775 man1dir='$man1dir'
15776 man1direxp='$man1direxp'
15777 man1ext='$man1ext'
15778 man3dir='$man3dir'
15779 man3direxp='$man3direxp'
15780 man3ext='$man3ext'
15781 medium='$medium'
15782 mips_type='$mips_type'
15783 mkdir='$mkdir'
15784 mmaptype='$mmaptype'
15785 models='$models'
15786 modetype='$modetype'
15787 more='$more'
15788 multiarch='$multiarch'
15789 mv='$mv'
15790 myarchname='$myarchname'
15791 mydomain='$mydomain'
15792 myhostname='$myhostname'
15793 myuname='$myuname'
15794 n='$n'
15795 netdb_hlen_type='$netdb_hlen_type'
15796 netdb_host_type='$netdb_host_type'
15797 netdb_name_type='$netdb_name_type'
15798 netdb_net_type='$netdb_net_type'
15799 nm='$nm'
15800 nm_opt='$nm_opt'
15801 nm_so_opt='$nm_so_opt'
15802 nonxs_ext='$nonxs_ext'
15803 nroff='$nroff'
15804 nvsize='$nvsize'
15805 nvtype='$nvtype'
15806 o_nonblock='$o_nonblock'
15807 obj_ext='$obj_ext'
15808 old_pthread_create_joinable='$old_pthread_create_joinable'
15809 optimize='$optimize'
15810 orderlib='$orderlib'
15811 osname='$osname'
15812 osvers='$osvers'
15813 otherlibdirs='$otherlibdirs'
15814 package='$package'
15815 pager='$pager'
15816 passcat='$passcat'
15817 patchlevel='$patchlevel'
15818 path_sep='$path_sep'
15819 perl5='$perl5'
15820 perl='$perl'
15821 perladmin='$perladmin'
15822 perlpath='$perlpath'
15823 pg='$pg'
15824 phostname='$phostname'
15825 pidtype='$pidtype'
15826 plibpth='$plibpth'
15827 pm_apiversion='$pm_apiversion'
15828 pmake='$pmake'
15829 pr='$pr'
15830 prefix='$prefix'
15831 prefixexp='$prefixexp'
15832 privlib='$privlib'
15833 privlibexp='$privlibexp'
15834 prototype='$prototype'
15835 ptrsize='$ptrsize'
15836 quadkind='$quadkind'
15837 quadtype='$quadtype'
15838 randbits='$randbits'
15839 randfunc='$randfunc'
15840 randseedtype='$randseedtype'
15841 ranlib='$ranlib'
15842 rd_nodata='$rd_nodata'
15843 revision='$revision'
15844 rm='$rm'
15845 rmail='$rmail'
15846 runnm='$runnm'
15847 sPRIEldbl='$sPRIEldbl'
15848 sPRIFldbl='$sPRIFldbl'
15849 sPRIGldbl='$sPRIGldbl'
15850 sPRIX64='$sPRIX64'
15851 sPRId64='$sPRId64'
15852 sPRIeldbl='$sPRIeldbl'
15853 sPRIfldbl='$sPRIfldbl'
15854 sPRIgldbl='$sPRIgldbl'
15855 sPRIi64='$sPRIi64'
15856 sPRIo64='$sPRIo64'
15857 sPRIu64='$sPRIu64'
15858 sPRIx64='$sPRIx64'
15859 sched_yield='$sched_yield'
15860 scriptdir='$scriptdir'
15861 scriptdirexp='$scriptdirexp'
15862 sed='$sed'
15863 seedfunc='$seedfunc'
15864 selectminbits='$selectminbits'
15865 selecttype='$selecttype'
15866 sendmail='$sendmail'
15867 sh='$sh'
15868 shar='$shar'
15869 sharpbang='$sharpbang'
15870 shmattype='$shmattype'
15871 shortsize='$shortsize'
15872 shrpenv='$shrpenv'
15873 shsharp='$shsharp'
15874 sig_count='$sig_count'
15875 sig_name='$sig_name'
15876 sig_name_init='$sig_name_init'
15877 sig_num='$sig_num'
15878 sig_num_init='$sig_num_init'
15879 signal_t='$signal_t'
15880 sitearch='$sitearch'
15881 sitearchexp='$sitearchexp'
15882 sitebin='$sitebin'
15883 sitebinexp='$sitebinexp'
15884 sitelib='$sitelib'
15885 sitelib_stem='$sitelib_stem'
15886 sitelibexp='$sitelibexp'
15887 siteprefix='$siteprefix'
15888 siteprefixexp='$siteprefixexp'
15889 sizesize='$sizesize'
15890 sizetype='$sizetype'
15891 sleep='$sleep'
15892 smail='$smail'
15893 small='$small'
15894 so='$so'
15895 sockethdr='$sockethdr'
15896 socketlib='$socketlib'
15897 socksizetype='$socksizetype'
15898 sort='$sort'
15899 spackage='$spackage'
15900 spitshell='$spitshell'
15901 split='$split'
15902 src='$src'
15903 ssizetype='$ssizetype'
15904 startperl='$startperl'
15905 startsh='$startsh'
15906 static_ext='$static_ext'
15907 stdchar='$stdchar'
15908 stdio_base='$stdio_base'
15909 stdio_bufsiz='$stdio_bufsiz'
15910 stdio_cnt='$stdio_cnt'
15911 stdio_filbuf='$stdio_filbuf'
15912 stdio_ptr='$stdio_ptr'
15913 stdio_stream_array='$stdio_stream_array'
15914 strings='$strings'
15915 submit='$submit'
15916 subversion='$subversion'
15917 sysman='$sysman'
15918 tail='$tail'
15919 tar='$tar'
15920 tbl='$tbl'
15921 tee='$tee'
15922 test='$test'
15923 timeincl='$timeincl'
15924 timetype='$timetype'
15925 touch='$touch'
15926 tr='$tr'
15927 trnl='$trnl'
15928 troff='$troff'
15929 u16size='$u16size'
15930 u16type='$u16type'
15931 u32size='$u32size'
15932 u32type='$u32type'
15933 u64size='$u64size'
15934 u64type='$u64type'
15935 u8size='$u8size'
15936 u8type='$u8type'
15937 uidformat='$uidformat'
15938 uidsign='$uidsign'
15939 uidsize='$uidsize'
15940 uidtype='$uidtype'
15941 uname='$uname'
15942 uniq='$uniq'
15943 uquadtype='$uquadtype'
15944 use5005threads='$use5005threads'
15945 use64bitall='$use64bitall'
15946 use64bitint='$use64bitint'
15947 usedl='$usedl'
15948 useithreads='$useithreads'
15949 uselargefiles='$uselargefiles'
15950 uselongdouble='$uselongdouble'
15951 usemorebits='$usemorebits'
15952 usemultiplicity='$usemultiplicity'
15953 usemymalloc='$usemymalloc'
15954 usenm='$usenm'
15955 useopcode='$useopcode'
15956 useperlio='$useperlio'
15957 useposix='$useposix'
15958 usesfio='$usesfio'
15959 useshrplib='$useshrplib'
15960 usesocks='$usesocks'
15961 usethreads='$usethreads'
15962 usevendorprefix='$usevendorprefix'
15963 usevfork='$usevfork'
15964 usrinc='$usrinc'
15965 uuname='$uuname'
15966 uvoformat='$uvoformat'
15967 uvsize='$uvsize'
15968 uvtype='$uvtype'
15969 uvuformat='$uvuformat'
15970 uvxformat='$uvxformat'
15971 vendorarch='$vendorarch'
15972 vendorarchexp='$vendorarchexp'
15973 vendorbin='$vendorbin'
15974 vendorbinexp='$vendorbinexp'
15975 vendorlib='$vendorlib'
15976 vendorlib_stem='$vendorlib_stem'
15977 vendorlibexp='$vendorlibexp'
15978 vendorprefix='$vendorprefix'
15979 vendorprefixexp='$vendorprefixexp'
15980 version='$version'
15981 vi='$vi'
15982 voidflags='$voidflags'
15983 xlibpth='$xlibpth'
15984 xs_apiversion='$xs_apiversion'
15985 zcat='$zcat'
15986 zip='$zip'
15987 EOT
15988
15989 : Add in command line options if available
15990 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15991
15992 : add special variables
15993 $test -f $src/patchlevel.h && \
15994 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15995 echo "CONFIGDOTSH=true" >>config.sh
15996
15997 : propagate old symbols
15998 if $test -f UU/config.sh; then
15999         <UU/config.sh sort | uniq >UU/oldconfig.sh
16000         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16001         sort | uniq -u >UU/oldsyms
16002         set X `cat UU/oldsyms`
16003         shift
16004         case $# in
16005         0) ;;
16006         *)
16007                 cat <<EOM
16008 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16009 EOM
16010                 echo "# Variables propagated from previous config.sh file." >>config.sh
16011                 for sym in `cat UU/oldsyms`; do
16012                         echo "    Propagating $hint variable "'$'"$sym..."
16013                         eval 'tmp="$'"${sym}"'"'
16014                         echo "$tmp" | \
16015                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16016                 done
16017                 ;;
16018         esac
16019 fi
16020
16021 : Finish up by extracting the .SH files
16022 case "$alldone" in
16023 exit)
16024         $rm -rf UU
16025         echo "Done."
16026         exit 0
16027         ;;
16028 cont)
16029         ;;
16030 '')
16031         dflt=''
16032         nostick=true
16033         $cat <<EOM
16034
16035 If you'd like to make any changes to the config.sh file before I begin
16036 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16037
16038 EOM
16039         rp="Press return or use a shell escape to edit config.sh:"
16040         . UU/myread
16041         nostick=''
16042         case "$ans" in
16043         '') ;;
16044         *) : in case they cannot read
16045                 sh 1>&4 -c "$ans";;
16046         esac
16047         ;;
16048 esac
16049
16050 : if this fails, just run all the .SH files by hand
16051 . ./config.sh
16052
16053 echo " "
16054 exec 1>&4
16055 . ./UU/extract
16056
16057 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16058         dflt=y
16059         case "$silent" in
16060         true) ;;
16061         *)
16062                 $cat <<EOM
16063
16064 Now you need to generate make dependencies by running "$make depend".
16065 You might prefer to run it in background: "$make depend > makedepend.out &"
16066 It can take a while, so you might not want to run it right now.
16067
16068 EOM
16069                 ;;
16070         esac
16071         rp="Run $make depend now?"
16072         . UU/myread
16073         case "$ans" in
16074         y*)
16075                 $make depend && echo "Now you must run a $make."
16076                 ;;
16077         *)
16078                 echo "You must run '$make depend' then '$make'."
16079                 ;;
16080         esac
16081 elif test -f [Mm]akefile; then
16082         echo " "
16083         echo "Now you must run a $make."
16084 else
16085         echo "Done."
16086 fi
16087
16088 if $test -f Policy.sh; then
16089     $cat <<EOM
16090
16091 If you compile $package on a different machine or from a different object
16092 directory, copy the Policy.sh file from this object directory to the
16093 new one before you run Configure -- this will help you with most of
16094 the policy defaults.
16095
16096 EOM
16097 fi
16098 if $test -f config.msg; then
16099     echo "Hmm.  I also noted the following information while running:"
16100     echo " "
16101     $cat config.msg >&4
16102     $rm -f config.msg
16103 fi
16104 $rm -f kit*isdone ark*isdone
16105 $rm -rf UU
16106
16107 : End of Configure
16108