Remove unused "squatter" symbols; regen Configure.
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Wed Oct 27 21:32:42 EET DST 1999 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 d_atolf=''
282 d_atoll=''
283 baserev=''
284 bin=''
285 binexp=''
286 installbin=''
287 bincompat5005=''
288 d_bincompat5005=''
289 byteorder=''
290 cc=''
291 gccversion=''
292 ccflags=''
293 cppflags=''
294 ldflags=''
295 lkflags=''
296 locincpth=''
297 optimize=''
298 cf_email=''
299 cf_by=''
300 cf_time=''
301 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_endspent=''
346 d_fchmod=''
347 d_fchown=''
348 d_fcntl=''
349 d_fd_macros=''
350 d_fd_set=''
351 d_fds_bits=''
352 d_fgetpos=''
353 d_flexfnam=''
354 d_flock=''
355 d_fork=''
356 d_fs_data_s=''
357 d_fseeko=''
358 d_fsetpos=''
359 d_fstatfs=''
360 d_ftello=''
361 d_ftime=''
362 d_gettimeod=''
363 d_Gconvert=''
364 d_getgrent=''
365 d_getgrps=''
366 d_gethbyaddr=''
367 d_gethbyname=''
368 d_gethent=''
369 aphostname=''
370 d_gethname=''
371 d_phostname=''
372 d_uname=''
373 d_gethostprotos=''
374 d_getlogin=''
375 d_getmnt=''
376 d_getmntent=''
377 d_getnbyaddr=''
378 d_getnbyname=''
379 d_getnent=''
380 d_getnetprotos=''
381 d_getpent=''
382 d_getpgid=''
383 d_getpgrp2=''
384 d_bsdgetpgrp=''
385 d_getpgrp=''
386 d_getppid=''
387 d_getprior=''
388 d_getpbyname=''
389 d_getpbynumber=''
390 d_getprotoprotos=''
391 d_getpwent=''
392 d_getsent=''
393 d_getservprotos=''
394 d_getspent=''
395 d_getspnam=''
396 d_getsbyname=''
397 d_getsbyport=''
398 d_gnulibc=''
399 d_hasmntopt=''
400 d_htonl=''
401 d_inetaton=''
402 d_isascii=''
403 d_killpg=''
404 d_lchown=''
405 d_ldbl_dig=''
406 d_link=''
407 d_locconv=''
408 d_lockf=''
409 d_longdbl=''
410 longdblsize=''
411 d_longlong=''
412 longlongsize=''
413 d_lstat=''
414 d_mblen=''
415 d_mbstowcs=''
416 d_mbtowc=''
417 d_memchr=''
418 d_memcmp=''
419 d_memcpy=''
420 d_memmove=''
421 d_memset=''
422 d_mkdir=''
423 d_mkfifo=''
424 d_mktime=''
425 d_msg=''
426 d_msgctl=''
427 d_msgget=''
428 d_msgrcv=''
429 d_msgsnd=''
430 d_nice=''
431 d_open3=''
432 d_fpathconf=''
433 d_pathconf=''
434 d_pause=''
435 d_pipe=''
436 d_poll=''
437 d_portable=''
438 d_old_pthread_create_joinable=''
439 old_pthread_create_joinable=''
440 d_pthread_yield=''
441 d_sched_yield=''
442 sched_yield=''
443 d_readdir=''
444 d_rewinddir=''
445 d_seekdir=''
446 d_telldir=''
447 d_readlink=''
448 d_rename=''
449 d_rmdir=''
450 d_safebcpy=''
451 d_safemcpy=''
452 d_sanemcmp=''
453 d_select=''
454 d_sem=''
455 d_semctl=''
456 d_semget=''
457 d_semop=''
458 d_setegid=''
459 d_seteuid=''
460 d_setgrent=''
461 d_setgrps=''
462 d_sethent=''
463 d_setlinebuf=''
464 d_setlocale=''
465 d_setnent=''
466 d_setpent=''
467 d_setpgid=''
468 d_setpgrp2=''
469 d_bsdsetpgrp=''
470 d_setpgrp=''
471 d_setprior=''
472 d_setpwent=''
473 d_setregid=''
474 d_setresgid=''
475 d_setresuid=''
476 d_setreuid=''
477 d_setrgid=''
478 d_setruid=''
479 d_setsent=''
480 d_setsid=''
481 d_setspent=''
482 d_setvbuf=''
483 d_sfio=''
484 usesfio=''
485 d_shm=''
486 d_shmat=''
487 d_shmatprototype=''
488 shmattype=''
489 d_shmctl=''
490 d_shmdt=''
491 d_shmget=''
492 d_sigaction=''
493 d_sigsetjmp=''
494 d_msg_ctrunc=''
495 d_msg_dontroute=''
496 d_msg_oob=''
497 d_msg_peek=''
498 d_msg_proxy=''
499 d_oldsock=''
500 d_scm_rights=''
501 d_socket=''
502 d_sockpair=''
503 sockethdr=''
504 socketlib=''
505 d_sqrtl=''
506 d_statblks=''
507 d_statfs_f_flags=''
508 d_statfs_s=''
509 d_fstatvfs=''
510 d_statvfs=''
511 d_stdio_cnt_lval=''
512 d_stdio_ptr_lval=''
513 d_stdiobase=''
514 d_stdstdio=''
515 stdio_base=''
516 stdio_bufsiz=''
517 stdio_cnt=''
518 stdio_filbuf=''
519 stdio_ptr=''
520 d_index=''
521 d_strchr=''
522 d_strcoll=''
523 d_strctcpy=''
524 d_strerrm=''
525 d_strerror=''
526 d_sysernlst=''
527 d_syserrlst=''
528 d_strtod=''
529 d_strtol=''
530 d_strtoul=''
531 d_strxfrm=''
532 d_symlink=''
533 d_syscall=''
534 d_sysconf=''
535 d_system=''
536 d_tcgetpgrp=''
537 d_tcsetpgrp=''
538 d_telldirproto=''
539 d_time=''
540 timetype=''
541 clocktype=''
542 d_times=''
543 d_truncate=''
544 d_tzname=''
545 d_umask=''
546 d_semctl_semid_ds=''
547 d_semctl_semun=''
548 d_union_semun=''
549 d_ustat=''
550 d_vfork=''
551 usevfork=''
552 d_voidsig=''
553 signal_t=''
554 d_volatile=''
555 d_charvspr=''
556 d_vprintf=''
557 d_wait4=''
558 d_waitpid=''
559 d_wcstombs=''
560 d_wctomb=''
561 dlext=''
562 cccdlflags=''
563 ccdlflags=''
564 dlsrc=''
565 ld=''
566 lddlflags=''
567 usedl=''
568 doublesize=''
569 ebcdic=''
570 fflushNULL=''
571 fflushall=''
572 fpostype=''
573 gidtype=''
574 groupstype=''
575 h_fcntl=''
576 h_sysfile=''
577 i_arpainet=''
578 db_hashtype=''
579 db_prefixtype=''
580 i_db=''
581 i_dbm=''
582 i_rpcsvcdbm=''
583 d_dirnamlen=''
584 direntrytype=''
585 i_dirent=''
586 i_dld=''
587 i_dlfcn=''
588 i_fcntl=''
589 i_float=''
590 i_gdbm=''
591 d_grpasswd=''
592 i_grp=''
593 d_int64t=''
594 i_inttypes=''
595 i_limits=''
596 i_locale=''
597 i_machcthr=''
598 i_malloc=''
599 i_math=''
600 i_memory=''
601 i_mntent=''
602 i_ndbm=''
603 i_netdb=''
604 i_neterrno=''
605 i_netinettcp=''
606 i_niin=''
607 i_sysin=''
608 i_poll=''
609 i_pthread=''
610 d_pwage=''
611 d_pwchange=''
612 d_pwclass=''
613 d_pwcomment=''
614 d_pwexpire=''
615 d_pwgecos=''
616 d_pwpasswd=''
617 d_pwquota=''
618 i_pwd=''
619 i_sfio=''
620 i_shadow=''
621 i_socks=''
622 i_stddef=''
623 i_stdlib=''
624 i_string=''
625 strings=''
626 i_sysaccess=''
627 i_sysdir=''
628 i_sysfile=''
629 d_voidtty=''
630 i_bsdioctl=''
631 i_sysfilio=''
632 i_sysioctl=''
633 i_syssockio=''
634 i_sysmount=''
635 i_sysndir=''
636 i_sysparam=''
637 i_sysresrc=''
638 i_syssecrt=''
639 i_sysselct=''
640 i_sysstat=''
641 i_sysstatfs=''
642 i_sysstatvfs=''
643 i_systimes=''
644 i_systypes=''
645 d_iovec_s=''
646 i_sysuio=''
647 i_sysun=''
648 i_sysvfs=''
649 i_syswait=''
650 i_sgtty=''
651 i_termio=''
652 i_termios=''
653 i_systime=''
654 i_systimek=''
655 i_time=''
656 timeincl=''
657 i_unistd=''
658 i_ustat=''
659 i_utime=''
660 i_values=''
661 i_stdarg=''
662 i_varargs=''
663 i_varhdr=''
664 i_vfork=''
665 installprefix=''
666 installprefixexp=''
667 installstyle=''
668 installusrbinperl=''
669 intsize=''
670 longsize=''
671 shortsize=''
672 d_fpos64_t=''
673 d_llseek=''
674 d_off64_t=''
675 libc=''
676 ldlibpthname=''
677 libperl=''
678 shrpenv=''
679 useshrplib=''
680 glibpth=''
681 libpth=''
682 loclibpth=''
683 plibpth=''
684 xlibpth=''
685 ignore_versioned_solibs=''
686 libs=''
687 lns=''
688 d_PRIEldbl=''
689 d_PRIFldbl=''
690 d_PRIGldbl=''
691 d_PRIeldbl=''
692 d_PRIfldbl=''
693 d_PRIgldbl=''
694 sPRIEldbl=''
695 sPRIFldbl=''
696 sPRIGldbl=''
697 sPRIeldbl=''
698 sPRIfldbl=''
699 sPRIgldbl=''
700 lseeksize=''
701 lseektype=''
702 make_set_make=''
703 d_mymalloc=''
704 freetype=''
705 mallocobj=''
706 mallocsrc=''
707 malloctype=''
708 usemymalloc=''
709 installman1dir=''
710 man1dir=''
711 man1direxp=''
712 man1ext=''
713 installman3dir=''
714 man3dir=''
715 man3direxp=''
716 man3ext=''
717 huge=''
718 large=''
719 medium=''
720 models=''
721 small=''
722 split=''
723 modetype=''
724 multiarch=''
725 mydomain=''
726 myhostname=''
727 phostname=''
728 c=''
729 n=''
730 d_eofnblk=''
731 eagain=''
732 o_nonblock=''
733 rd_nodata=''
734 netdb_hlen_type=''
735 netdb_host_type=''
736 netdb_name_type=''
737 netdb_net_type=''
738 groupcat=''
739 hostcat=''
740 passcat=''
741 orderlib=''
742 ranlib=''
743 package=''
744 spackage=''
745 pager=''
746 apiversion=''
747 patchlevel=''
748 subversion=''
749 version=''
750 perladmin=''
751 perlpath=''
752 pidtype=''
753 prefix=''
754 prefixexp=''
755 installprivlib=''
756 privlib=''
757 privlibexp=''
758 prototype=''
759 ptrsize=''
760 d_PRIX64=''
761 d_PRId64=''
762 d_PRIi64=''
763 d_PRIo64=''
764 d_PRIu64=''
765 d_PRIx64=''
766 sPRIX64=''
767 sPRId64=''
768 sPRIi64=''
769 sPRIo64=''
770 sPRIu64=''
771 sPRIx64=''
772 drand01=''
773 randbits=''
774 randfunc=''
775 randseedtype=''
776 seedfunc=''
777 installscript=''
778 scriptdir=''
779 scriptdirexp=''
780 selectminbits=''
781 selecttype=''
782 sh=''
783 sig_count=''
784 sig_name=''
785 sig_name_init=''
786 sig_num=''
787 sig_num_init=''
788 installsitearch=''
789 sitearch=''
790 sitearchexp=''
791 installsitebin=''
792 sitebin=''
793 sitebinexp=''
794 installsitelib=''
795 sitelib=''
796 sitelibexp=''
797 siteprefix=''
798 siteprefixexp=''
799 sizetype=''
800 so=''
801 sharpbang=''
802 shsharp=''
803 spitshell=''
804 src=''
805 ssizetype=''
806 startperl=''
807 startsh=''
808 stdchar=''
809 d_stdio_stream_array=''
810 stdio_stream_array=''
811 d_strtoull=''
812 sysman=''
813 trnl=''
814 uidsign=''
815 uidtype=''
816 archname64=''
817 use64bits=''
818 uselargefiles=''
819 uselongdouble=''
820 usemorebits=''
821 usemultiplicity=''
822 nm_opt=''
823 nm_so_opt=''
824 runnm=''
825 usenm=''
826 useperlio=''
827 usesocks=''
828 d_oldpthreads=''
829 usethreads=''
830 incpath=''
831 mips_type=''
832 usrinc=''
833 d_vendorbin=''
834 installvendorbin=''
835 vendorbin=''
836 vendorbinexp=''
837 d_vendorlib=''
838 installvendorlib=''
839 vendorlib=''
840 vendorlibexp=''
841 usevendorprefix=''
842 vendorprefix=''
843 vendorprefixexp=''
844 defvoidused=''
845 voidflags=''
846 pm_apiversion=''
847 xs_apiversion=''
848 CONFIG=''
849
850 define='define'
851 undef='undef'
852 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
853 rmlist=''
854
855 : We must find out about Eunice early
856 eunicefix=':'
857 if test -f /etc/unixtovms; then
858         eunicefix=/etc/unixtovms
859 fi
860 if test -f /etc/unixtovms.exe; then
861         eunicefix=/etc/unixtovms.exe
862 fi
863
864 i_whoami=''
865 : Possible local include directories to search.
866 : Set locincpth to "" in a hint file to defeat local include searches.
867 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
868 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
869 :
870 : no include file wanted by default
871 inclwanted=''
872
873 : list of known cpp symbols, sorted alphabetically
874 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
875 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
876 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
877 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
878 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
879 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
880 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4 SVR5"
881 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
882 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
883 al="$al VMS Xenix286"
884 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
885 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
886 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
887 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
888 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
889 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
890 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
891 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
892 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
893 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
894 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
895 al="$al __SVR4_2__ __UMAXV__"
896 al="$al ____386BSD____ __alpha __alpha__ __amiga"
897 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
898 al="$al __host_mips__"
899 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
900 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
901 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
902 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
903 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
904 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
905 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
906 al="$al __mc88100 __mc88100__ __mips __mips__"
907 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
908 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
909 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
910 al="$al _host_mips _mips _unix"
911 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
912 al="$al apollo ardent att386 att3b"
913 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
914 al="$al cadmus clipper concurrent convex cray ctix"
915 al="$al dmert encore gcos gcx gimpel gould"
916 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
917 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
918 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
919 al="$al i186 i286 i386 i486 i8086"
920 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
921 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
922 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
923 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
924 al="$al mc88000 mc88100 merlin mert mips mvs n16"
925 al="$al ncl_el ncl_mr"
926 al="$al news1500 news1700 news1800 news1900 news3700"
927 al="$al news700 news800 news900 ns16000 ns32000"
928 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
929 al="$al parisc pc532 pdp11 plexus posix pyr"
930 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
931 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
932 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
933 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
934 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
935 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
936 al="$al xenix z8000"
937
938 : Trailing extension.  Override this in a hint file, if needed.
939 _exe=''
940 : Extra object files, if any, needed on this platform.
941 archobjs=''
942 groupstype=''
943 : change the next line if compiling for Xenix/286 on Xenix/386
944 xlibpth='/usr/lib/386 /lib/386'
945
946 : Possible local library directories to search.
947 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
948 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
949
950 : general looking path for locating libraries
951 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
952 glibpth="$glibpth /lib /usr/lib $xlibpth"
953 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
954 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
955
956 : Private path used by Configure to find libraries.  Its value
957 : is prepended to libpth. This variable takes care of special
958 : machines, like the mips.  Usually, it should be empty.
959 plibpth=''
960
961 : default library list
962 libswanted=''
963 : some systems want to use only the non-versioned libso:s
964 ignore_versioned_solibs=''
965 : full support for void wanted by default
966 defvoidused=15
967
968 : set useposix=false in your hint file to disable the POSIX extension.
969 useposix=true
970 : set useopcode=false in your hint file to disable the Opcode extension.
971 useopcode=true
972 : set usemultiplicity on the Configure command line to enable multiplicity.
973 : set usesocks on the Configure command line to enable socks.
974 : set usethreads on the Configure command line to enable threads.
975 : List of libraries we want.
976 : If anyone needs -lnet, put it in a hint file.
977 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
978 libswanted="$libswanted dld ld sun m c cposix posix"
979 libswanted="$libswanted ndir dir crypt sec"
980 libswanted="$libswanted ucb bsd BSD PW x"
981 : We probably want to search /usr/shlib before most other libraries.
982 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
983 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
984 glibpth="/usr/shlib $glibpth"
985 : Do not use vfork unless overridden by a hint file.
986 usevfork=false
987
988 : Find the basic shell for Bourne shell scripts
989 case "$sh" in
990 '')
991         case "$SYSTYPE" in
992         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
993         *) xxx='/bin/sh';;
994         esac
995         if test -f "$xxx"; then
996                 sh="$xxx"
997         else
998                 : Build up a list and do a single loop so we can 'break' out.
999                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1000                 for xxx in sh bash ksh pdksh ash; do
1001                         for p in $pth; do
1002                                 try="$try ${p}/${xxx}"
1003                         done
1004                 done
1005                 for xxx in $try; do
1006                         if test -f "$xxx"; then
1007                                 sh="$xxx";
1008                                 break
1009                         elif test -f "$xxx.exe"; then
1010                                 sh="$xxx";
1011                                 break
1012                         fi
1013                 done
1014         fi
1015         ;;
1016 esac
1017
1018 case "$sh" in
1019 '')     cat <<EOM >&2
1020 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1021
1022 Usually it's in /bin/sh.  How did you even get this far?
1023 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1024 we'll try to straighten this all out.
1025 EOM
1026         exit 1
1027         ;;
1028 esac
1029
1030 : see if sh knows # comments
1031 if `$sh -c '#' >/dev/null 2>&1`; then
1032         shsharp=true
1033         spitshell=cat
1034         xcat=/bin/cat
1035         test -f $xcat || xcat=/usr/bin/cat
1036         echo "#!$xcat" >try
1037         $eunicefix try
1038         chmod +x try
1039         ./try > today
1040         if test -s today; then
1041                 sharpbang='#!'
1042         else
1043                 echo "#! $xcat" > try
1044                 $eunicefix try
1045                 chmod +x try
1046                 ./try > today
1047                 if test -s today; then
1048                         sharpbang='#! '
1049                 else
1050                         sharpbang=': use '
1051                 fi
1052         fi
1053 else
1054         echo " "
1055         echo "Your $sh doesn't grok # comments--I will strip them later on."
1056         shsharp=false
1057         cd ..
1058         echo "exec grep -v '^[  ]*#'" >spitshell
1059         chmod +x spitshell
1060         $eunicefix spitshell
1061         spitshell=`pwd`/spitshell
1062         cd UU
1063         echo "I presume that if # doesn't work, #! won't work either!"
1064         sharpbang=': use '
1065 fi
1066 rm -f try today
1067
1068 : figure out how to guarantee sh startup
1069 case "$startsh" in
1070 '') startsh=${sharpbang}${sh} ;;
1071 *)
1072 esac
1073 cat >try <<EOSS
1074 $startsh
1075 set abc
1076 test "$?abc" != 1
1077 EOSS
1078
1079 chmod +x try
1080 $eunicefix try
1081 if ./try; then
1082         : echo "Yup, it does."
1083 else
1084         echo "Hmm... '$startsh' does not guarantee sh startup..."
1085         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1086 fi
1087 rm -f try
1088
1089
1090 : Save command line options in file UU/cmdline.opt for later use in
1091 : generating config.sh.
1092 cat > cmdline.opt <<EOSH
1093 # Configure command line arguments.
1094 config_arg0='$0'
1095 config_args='$*'
1096 config_argc=$#
1097 EOSH
1098 argn=1
1099 for arg in "$@"; do
1100         cat >>cmdline.opt <<EOSH
1101 config_arg$argn='$arg'
1102 EOSH
1103         argn=`expr $argn + 1`
1104 done
1105
1106 : produce awk script to parse command line options
1107 cat >options.awk <<'EOF'
1108 BEGIN {
1109         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1110
1111         len = length(optstr);
1112         for (i = 1; i <= len; i++) {
1113                 c = substr(optstr, i, 1);
1114                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1115                 if (a == ":") {
1116                         arg[c] = 1;
1117                         i++;
1118                 }
1119                 opt[c] = 1;
1120         }
1121 }
1122 {
1123         expect = 0;
1124         str = $0;
1125         if (substr(str, 1, 1) != "-") {
1126                 printf("'%s'\n", str);
1127                 next;
1128         }
1129         len = length($0);
1130         for (i = 2; i <= len; i++) {
1131                 c = substr(str, i, 1);
1132                 if (!opt[c]) {
1133                         printf("-%s\n", substr(str, i));
1134                         next;
1135                 }
1136                 printf("-%s\n", c);
1137                 if (arg[c]) {
1138                         if (i < len)
1139                                 printf("'%s'\n", substr(str, i + 1));
1140                         else
1141                                 expect = 1;
1142                         next;
1143                 }
1144         }
1145 }
1146 END {
1147         if (expect)
1148                 print "?";
1149 }
1150 EOF
1151
1152 : process the command line options
1153 set X `for arg in "$@"; do echo "X$arg"; done |
1154         sed -e s/X// | awk -f options.awk`
1155 eval "set $*"
1156 shift
1157 rm -f options.awk
1158
1159 : set up default values
1160 fastread=''
1161 reuseval=false
1162 config_sh=''
1163 alldone=''
1164 error=''
1165 silent=''
1166 extractsh=''
1167 override=''
1168 knowitall=''
1169 rm -f optdef.sh posthint.sh
1170 cat >optdef.sh <<EOS
1171 $startsh
1172 EOS
1173
1174
1175 : option parsing
1176 while test $# -gt 0; do
1177         case "$1" in
1178         -d) shift; fastread=yes;;
1179         -e) shift; alldone=cont;;
1180         -f)
1181                 shift
1182                 cd ..
1183                 if test -r "$1"; then
1184                         config_sh="$1"
1185                 else
1186                         echo "$me: cannot read config file $1." >&2
1187                         error=true
1188                 fi
1189                 cd UU
1190                 shift;;
1191         -h) shift; error=true;;
1192         -r) shift; reuseval=true;;
1193         -s) shift; silent=true; realsilent=true;;
1194         -E) shift; alldone=exit;;
1195         -K) shift; knowitall=true;;
1196         -O) shift; override=true;;
1197         -S) shift; silent=true; extractsh=true;;
1198         -D)
1199                 shift
1200                 case "$1" in
1201                 *=)
1202                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1203                         echo "$me: ignoring -D $1" >&2
1204                         ;;
1205                 *=*) echo "$1" | \
1206                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1207                 *) echo "$1='define'" >> optdef.sh;;
1208                 esac
1209                 shift
1210                 ;;
1211         -U)
1212                 shift
1213                 case "$1" in
1214                 *=) echo "$1" >> optdef.sh;;
1215                 *=*)
1216                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1217                         echo "$me: ignoring -U $1" >&2
1218                         ;;
1219                 *) echo "$1='undef'" >> optdef.sh;;
1220                 esac
1221                 shift
1222                 ;;
1223         -A)
1224             shift
1225             xxx=''
1226             yyy="$1"
1227             zzz=''
1228             uuu=undef
1229             case "$yyy" in
1230             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1231                  case "$zzz" in
1232                  *:*) zzz='' ;;
1233                  *)   xxx=append
1234                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1235                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1236                  esac
1237                  ;;
1238             esac
1239             case "$xxx" in
1240             '')  case "$yyy" in
1241                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1242                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1243                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1244                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1245                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1246                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1247                  esac
1248                  ;;       
1249             esac
1250             case "$xxx" in
1251             append)
1252                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1253             clear)
1254                 echo "$yyy=''"                  >> posthint.sh ;;
1255             define)
1256                 case "$zzz" in
1257                 '') zzz=define ;;
1258                 esac
1259                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1260             eval)
1261                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1262             prepend)
1263                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1264             undef)
1265                 case "$zzz" in
1266                 '') zzz="$uuu" ;;
1267                 esac
1268                 echo "$yyy=$zzz"                >> posthint.sh ;;
1269             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1270             esac
1271             ;;
1272         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1273             exit 0;;
1274         --) break;;
1275         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1276         *) break;;
1277         esac
1278 done
1279
1280 case "$error" in
1281 true)
1282         cat >&2 <<EOM
1283 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1284                  [-U symbol] [-U symbol=] [-A command:symbol...]
1285   -d : use defaults for all answers.
1286   -e : go on without questioning past the production of config.sh.
1287   -f : specify an alternate default configuration file.
1288   -h : print this help message and exit (with an error status).
1289   -r : reuse C symbols value if possible (skips costly nm extraction).
1290   -s : silent mode, only echoes questions and essential information.
1291   -D : define symbol to have some value:
1292          -D symbol         symbol gets the value 'define'
1293          -D symbol=value   symbol gets the value 'value'
1294   -E : stop at the end of questions, after having produced config.sh.
1295   -K : do not use unless you know what you are doing.
1296   -O : let -D and -U override definitions from loaded configuration file.
1297   -S : perform variable substitutions on all .SH files (can mix with -f)
1298   -U : undefine symbol:
1299          -U symbol    symbol gets the value 'undef'
1300          -U symbol=   symbol gets completely empty
1301   -A : manipulate symbol after the platform specific hints have been applied:
1302          -A symbol=value                append " "value to symbol
1303          -A append:symbol=value         append value to symbol
1304          -A define:symbol=value         define symbol to have value
1305          -A clear:symbol                define symbol to be ''
1306          -A define:symbol               define symbol to be 'define'
1307          -A eval:symbol=value           define symbol to be eval of value
1308          -A prepend:symbol=value        prepend value to symbol
1309          -A undef:symbol                define symbol to be 'undef'
1310          -A undef:symbol=               define symbol to be ''
1311   -V : print version number and exit (with a zero status).
1312 EOM
1313         exit 1
1314         ;;
1315 esac
1316
1317 : Sanity checks
1318 case "$fastread$alldone" in
1319 yescont|yesexit) ;;
1320 *)
1321         if test ! -t 0; then
1322                 echo "Say 'sh Configure', not 'sh <Configure'"
1323                 exit 1
1324         fi
1325         ;;
1326 esac
1327
1328 exec 4>&1
1329 case "$silent" in
1330 true) exec 1>/dev/null;;
1331 esac
1332
1333 : run the defines and the undefines, if any, but leave the file out there...
1334 touch optdef.sh
1335 . ./optdef.sh
1336 : create the posthint manipulation script and leave the file out there...
1337 touch posthint.sh
1338
1339 : set package name
1340 package=perl5
1341 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1342 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1343 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1344 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1345 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1346 esac
1347
1348 : Some greps do not return status, grrr.
1349 echo "grimblepritz" >grimble
1350 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1351         contains=contains
1352 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1353         contains=grep
1354 else
1355         contains=contains
1356 fi
1357 rm -f grimble
1358 : the following should work in any shell
1359 case "$contains" in
1360 contains*)
1361         echo " "
1362         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1363         cat >contains <<'EOSS'
1364 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1365 EOSS
1366 chmod +x contains
1367 esac
1368
1369 : Find the path to the source tree
1370 case "$src" in
1371 '') case "$0" in
1372     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1373          case "$src" in
1374          /*)    ;;
1375          *)     src=`cd ../$src && pwd` ;;
1376          esac
1377          ;;
1378     *)   src='.';;
1379     esac;;
1380 esac
1381 case "$src" in
1382 '')     src=/
1383         rsrc=/
1384         ;;
1385 /*) rsrc="$src";;
1386 *) rsrc="../$src";;
1387 esac
1388 if test -f $rsrc/Configure && \
1389         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1390 then
1391    : found it, so we are ok.
1392 else
1393         rsrc=''
1394         for src in . .. ../.. ../../.. ../../../..; do
1395                 if test -f ../$src/Configure && \
1396                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1397                 then
1398                         rsrc=../$src
1399                         break
1400                 fi
1401         done
1402 fi
1403 case "$rsrc" in
1404 '')
1405         cat <<EOM >&4
1406
1407 Sorry, I can't seem to locate the source dir for $package.  Please start
1408 Configure with an explicit path -- i.e. /some/path/Configure.
1409
1410 EOM
1411         exit 1
1412         ;;
1413 ../.)   rsrc='..';;
1414 *)
1415         echo " "
1416         echo "Sources for $package found in \"$src\"." >&4
1417         ;;
1418 esac
1419
1420 : script used to extract .SH files with variable substitutions
1421 cat >extract <<'EOS'
1422 CONFIGDOTSH=true
1423 echo "Doing variable substitutions on .SH files..."
1424 if test -f $src/MANIFEST; then
1425         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1426 else
1427         echo "(Looking for .SH files under the source directory.)"
1428         set x `(cd $src; find . -name "*.SH" -print)`
1429 fi
1430 shift
1431 case $# in
1432 0) set x `(cd $src; echo *.SH)`; shift;;
1433 esac
1434 if test ! -f $src/$1; then
1435         shift
1436 fi
1437 mkdir_p='
1438 name=$1;
1439 create="";
1440 while test $name; do
1441         if test ! -d "$name"; then
1442                 create="$name $create";
1443                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1444                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1445         else
1446                 name="";
1447         fi;
1448 done;
1449 for file in $create; do
1450         mkdir $file;
1451 done
1452 '
1453 for file in $*; do
1454         case "$src" in
1455         ".")
1456                 case "$file" in
1457                 */*)
1458                         dir=`expr X$file : 'X\(.*\)/'`
1459                         file=`expr X$file : 'X.*/\(.*\)'`
1460                         (cd $dir && . ./$file)
1461                         ;;
1462                 *)
1463                         . ./$file
1464                         ;;
1465                 esac
1466                 ;;
1467         *)
1468                 case "$file" in
1469                 */*)
1470                         dir=`expr X$file : 'X\(.*\)/'`
1471                         file=`expr X$file : 'X.*/\(.*\)'`
1472                         (set x $dir; shift; eval $mkdir_p)
1473                         sh <$src/$dir/$file
1474                         ;;
1475                 *)
1476                         sh <$src/$file
1477                         ;;
1478                 esac
1479                 ;;
1480         esac
1481 done
1482 if test -f $src/config_h.SH; then
1483         if test ! -f config.h; then
1484         : oops, they left it out of MANIFEST, probably, so do it anyway.
1485         . $src/config_h.SH
1486         fi
1487 fi
1488 EOS
1489
1490 : extract files and exit if asked to do so
1491 case "$extractsh" in
1492 true)
1493         case "$realsilent" in
1494         true) ;;
1495         *) exec 1>&4;;
1496         esac
1497         case "$config_sh" in
1498         '') config_sh='config.sh';;
1499         esac
1500         echo " "
1501         echo "Fetching answers from $config_sh..."
1502         cd ..
1503         . $config_sh
1504         test "$override" && . ./optdef.sh
1505         echo " "
1506         . UU/extract
1507         rm -rf UU
1508         echo "Done."
1509         exit 0
1510         ;;
1511 esac
1512
1513 : Eunice requires " " instead of "", can you believe it
1514 echo " "
1515 : Here we go...
1516 echo "Beginning of configuration questions for $package."
1517
1518 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1519
1520 : first determine how to suppress newline on echo command
1521 echo " "
1522 echo "Checking echo to see how to suppress newlines..."
1523 (echo "hi there\c" ; echo " ") >.echotmp
1524 if $contains c .echotmp >/dev/null 2>&1 ; then
1525         echo "...using -n."
1526         n='-n'
1527         c=''
1528 else
1529         cat <<'EOM'
1530 ...using \c
1531 EOM
1532         n=''
1533         c='\c'
1534 fi
1535 echo $n "The star should be here-->$c"
1536 echo '*'
1537 rm -f .echotmp
1538
1539 : Now test for existence of everything in MANIFEST
1540 echo " "
1541 if test -f $rsrc/MANIFEST; then
1542         echo "First let's make sure your kit is complete.  Checking..." >&4
1543         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1544         rm -f missing
1545         tmppwd=`pwd`
1546         for filelist in x??; do
1547                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1548         done
1549         if test -s missing; then
1550                 cat missing >&4
1551                 cat >&4 <<'EOM'
1552
1553 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1554
1555 You have the option of continuing the configuration process, despite the
1556 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1557 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1558 and contact the author (perlbug@perl.com).
1559
1560 EOM
1561                 echo $n "Continue? [n] $c" >&4
1562                 read ans
1563                 case "$ans" in
1564                 y*)
1565                         echo "Continuing..." >&4
1566                         rm -f missing
1567                         ;;
1568                 *)
1569                         echo "ABORTING..." >&4
1570                         kill $$
1571                         ;;
1572                 esac
1573         else
1574                 echo "Looks good..."
1575         fi
1576 else
1577         echo "There is no MANIFEST file.  I hope your kit is complete !"
1578 fi
1579 rm -f missing x??
1580
1581 echo " "
1582 : Find the appropriate value for a newline for tr
1583 if test -n "$DJGPP"; then
1584        trnl='\012'
1585 fi
1586 if test X"$trnl" = X; then
1587         case "`echo foo|tr '\n' x 2>/dev/null`" in
1588         foox) trnl='\n' ;;
1589         esac
1590 fi
1591 if test X"$trnl" = X; then
1592         case "`echo foo|tr '\012' x 2>/dev/null`" in
1593         foox) trnl='\012' ;;
1594         esac
1595 fi
1596 if test X"$trnl" = X; then
1597         cat <<EOM >&2
1598
1599 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1600
1601 EOM
1602         exit 1
1603 fi
1604
1605 : compute the number of columns on the terminal for proper question formatting
1606 case "$COLUMNS" in
1607 '') COLUMNS='80';;
1608 esac
1609
1610 : set up the echo used in my read
1611 myecho="case \"\$xxxm\" in
1612 '') echo $n \"\$rp $c\" >&4;;
1613 *) case \"\$rp\" in
1614         '') echo $n \"[\$xxxm] $c\";;
1615         *)
1616                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1617                         echo \"\$rp\" >&4
1618                         echo $n \"[\$xxxm] $c\" >&4
1619                 else
1620                         echo $n \"\$rp [\$xxxm] $c\" >&4
1621                 fi
1622                 ;;
1623         esac;;
1624 esac"
1625
1626 : now set up to do reads with possible shell escape and default assignment
1627 cat <<EOSC >myread
1628 $startsh
1629 xxxm=\$dflt
1630 $myecho
1631 ans='!'
1632 case "\$fastread" in
1633 yes) case "\$dflt" in
1634         '') ;;
1635         *) ans='';
1636                 case "\$silent-\$rp" in
1637                 true-) ;;
1638                 *) echo " " >&4;;
1639                 esac;;
1640         esac;;
1641 *) case "\$silent" in
1642         true) case "\$rp" in
1643                 '') ans='';;
1644                 esac;;
1645         esac;;
1646 esac
1647 while expr "X\$ans" : "X!" >/dev/null; do
1648         read answ
1649         set x \$xxxm
1650         shift
1651         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1652         case  "\$answ" in
1653         "!")
1654                 sh 1>&4
1655                 echo " "
1656                 $myecho
1657                 ;;
1658         !*)
1659                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1660                 shift
1661                 sh 1>&4 -c "\$*"
1662                 echo " "
1663                 $myecho
1664                 ;;
1665         "\$ans")
1666                 case "\$ans" in
1667                 \\&*)
1668                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1669                         shift
1670                         case "\$1" in
1671                         -d)
1672                                 fastread=yes
1673                                 echo "(OK, I'll run with -d after this question.)" >&4
1674                                 ;;
1675                         -*)
1676                                 echo "*** Sorry, \$1 not supported yet." >&4
1677                                 ;;
1678                         esac
1679                         $myecho
1680                         ans=!
1681                         ;;
1682                 esac;;
1683         *)
1684                 case "\$aok" in
1685                 y)
1686                         echo "*** Substitution done -- please confirm."
1687                         xxxm="\$ans"
1688                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1689                         xxxm="\$ans"
1690                         ans=!
1691                         ;;
1692                 *)
1693                         echo "*** Error -- try again."
1694                         ans=!
1695                         ;;
1696                 esac
1697                 $myecho
1698                 ;;
1699         esac
1700         case "\$ans\$xxxm\$nostick" in
1701         '')
1702                 ans=!
1703                 $myecho
1704                 ;;
1705         esac
1706 done
1707 case "\$ans" in
1708 '') ans="\$xxxm";;
1709 esac
1710 EOSC
1711
1712 : create .config dir to save info across Configure sessions
1713 test -d ../.config || mkdir ../.config
1714 cat >../.config/README <<EOF
1715 This directory created by Configure to save information that should
1716 persist across sessions for $package.
1717
1718 You may safely delete it if you wish.
1719 EOF
1720
1721 : general instructions
1722 needman=true
1723 firsttime=true
1724 user=`(logname) 2>/dev/null`
1725 case "$user" in
1726 '') user=`whoami 2>&1`;;
1727 esac
1728 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1729         firsttime=false
1730         echo " "
1731         rp='Would you like to see the instructions?'
1732         dflt=n
1733         . ./myread
1734         case "$ans" in
1735         [yY]*) ;;
1736         *) needman=false;;
1737         esac
1738 fi
1739 if $needman; then
1740         cat <<EOH
1741
1742 This installation shell script will examine your system and ask you questions
1743 to determine how the perl5 package should be installed. If you get
1744 stuck on a question, you may use a ! shell escape to start a subshell or
1745 execute a command.  Many of the questions will have default answers in square
1746 brackets; typing carriage return will give you the default.
1747
1748 On some of the questions which ask for file or directory names you are allowed
1749 to use the ~name construct to specify the login directory belonging to "name",
1750 even if you don't have a shell which knows about that.  Questions where this is
1751 allowed will be marked "(~name ok)".
1752
1753 EOH
1754         rp=''
1755         dflt='Type carriage return to continue'
1756         . ./myread
1757         cat <<'EOH'
1758
1759 The prompter used in this script allows you to use shell variables and
1760 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1761 in the default answer, as if the default line was a set of arguments given to a
1762 script shell.  This means you may also use $* to repeat the whole default line,
1763 so you do not have to re-type everything to add something to the default.
1764
1765 Everytime there is a substitution, you will have to confirm.  If there is an
1766 error (e.g. an unmatched backtick), the default answer will remain unchanged
1767 and you will be prompted again.
1768
1769 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1770 the questions and use the computed defaults (or the previous answers if there
1771 was already a config.sh file). Type 'Configure -h' for a list of options.
1772 You may also start interactively and then answer '& -d' at any prompt to turn
1773 on the non-interactive behaviour for the remainder of the execution.
1774
1775 EOH
1776         . ./myread
1777         cat <<EOH
1778
1779 Much effort has been expended to ensure that this shell script will run on any
1780 Unix system.  If despite that it blows up on yours, your best bet is to edit
1781 Configure and run it again.  If you can't run Configure for some reason,
1782 you'll have to generate a config.sh file by hand.  Whatever problems you
1783 have, let me (perlbug@perl.com) know how I blew it.
1784
1785 This installation script affects things in two ways:
1786
1787 1) it may do direct variable substitutions on some of the files included
1788    in this kit.
1789 2) it builds a config.h file for inclusion in C programs.  You may edit
1790    any of these files as the need arises after running this script.
1791
1792 If you make a mistake on a question, there is no easy way to back up to it
1793 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1794 files.  Configure will offer to let you do this before it runs the SH files.
1795
1796 EOH
1797         dflt='Type carriage return to continue'
1798         . ./myread
1799         case "$firsttime" in
1800         true) echo $user >>../.config/instruct;;
1801         esac
1802 fi
1803
1804 : find out where common programs are
1805 echo " "
1806 echo "Locating common programs..." >&4
1807 cat <<EOSC >loc
1808 $startsh
1809 case \$# in
1810 0) exit 1;;
1811 esac
1812 thing=\$1
1813 shift
1814 dflt=\$1
1815 shift
1816 for dir in \$*; do
1817         case "\$thing" in
1818         .)
1819         if test -d \$dir/\$thing; then
1820                 echo \$dir
1821                 exit 0
1822         fi
1823         ;;
1824         *)
1825         for thisthing in \$dir/\$thing; do
1826                 : just loop through to pick last item
1827         done
1828         if test -f \$thisthing; then
1829                 echo \$thisthing
1830                 exit 0
1831         elif test -f \$dir/\$thing.exe; then
1832                 if test -n "$DJGPP"; then
1833                         echo \$dir/\$thing.exe
1834                 else
1835                         : on Eunice apparently
1836                         echo \$dir/\$thing
1837                 fi
1838                 exit 0
1839         fi
1840         ;;
1841         esac
1842 done
1843 echo \$dflt
1844 exit 1
1845 EOSC
1846 chmod +x loc
1847 $eunicefix loc
1848 loclist="
1849 awk
1850 cat
1851 comm
1852 cp
1853 echo
1854 expr
1855 grep
1856 ls
1857 make
1858 mkdir
1859 rm
1860 sed
1861 sort
1862 touch
1863 tr
1864 uniq
1865 "
1866 trylist="
1867 Mcc
1868 ar
1869 byacc
1870 cpp
1871 csh
1872 date
1873 egrep
1874 gzip
1875 less
1876 ln
1877 more
1878 nm
1879 nroff
1880 pg
1881 test
1882 uname
1883 zip
1884 "
1885 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1886 pth="$pth /lib /usr/lib"
1887 for file in $loclist; do
1888         eval xxx=\$$file
1889         case "$xxx" in
1890         /*|?:[\\/]*)
1891                 if test -f "$xxx"; then
1892                         : ok
1893                 else
1894                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1895                         xxx=`./loc $file $file $pth`
1896                 fi
1897                 ;;
1898         '') xxx=`./loc $file $file $pth`;;
1899         *) xxx=`./loc $xxx $xxx $pth`;;
1900         esac
1901         eval $file=$xxx
1902         eval _$file=$xxx
1903         case "$xxx" in
1904         /*)
1905                 echo $file is in $xxx.
1906                 ;;
1907         ?:[\\/]*)
1908                 echo $file is in $xxx.
1909                 ;;
1910         *)
1911                 echo "I don't know where '$file' is, and my life depends on it." >&4
1912                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1913                 exit 1
1914                 ;;
1915         esac
1916 done
1917 echo " "
1918 echo "Don't worry if any of the following aren't found..."
1919 say=offhand
1920 for file in $trylist; do
1921         eval xxx=\$$file
1922         case "$xxx" in
1923         /*|?:[\\/]*)
1924                 if test -f "$xxx"; then
1925                         : ok
1926                 else
1927                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1928                         xxx=`./loc $file $file $pth`
1929                 fi
1930                 ;;
1931         '') xxx=`./loc $file $file $pth`;;
1932         *) xxx=`./loc $xxx $xxx $pth`;;
1933         esac
1934         eval $file=$xxx
1935         eval _$file=$xxx
1936         case "$xxx" in
1937         /*)
1938                 echo $file is in $xxx.
1939                 ;;
1940         ?:[\\/]*)
1941                 echo $file is in $xxx.
1942                 ;;
1943         *)
1944                 echo "I don't see $file out there, $say."
1945                 say=either
1946                 ;;
1947         esac
1948 done
1949 case "$egrep" in
1950 egrep)
1951         echo "Substituting grep for egrep."
1952         egrep=$grep
1953         ;;
1954 esac
1955 case "$ln" in
1956 ln)
1957         echo "Substituting cp for ln."
1958         ln=$cp
1959         ;;
1960 esac
1961 case "$test" in
1962 test)
1963         echo "Hopefully test is built into your sh."
1964         ;;
1965 *)
1966         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1967                 echo "Using the test built into your sh."
1968                 test=test
1969                 _test=test
1970         fi
1971         ;;
1972 esac
1973 case "$echo" in
1974 echo)
1975         echo "Hopefully echo is built into your sh."
1976         ;;
1977 '') ;;
1978 *)
1979         echo " "
1980 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1981         $echo $n "hi there$c" >foo1
1982         echo $n "hi there$c" >foo2
1983         if cmp foo1 foo2 >/dev/null 2>&1; then
1984                 echo "They are compatible.  In fact, they may be identical."
1985         else
1986                 case "$n" in
1987                 '-n') n='' c='\c';;
1988                 *) n='-n' c='';;
1989                 esac
1990                 cat <<FOO
1991 They are not compatible!  You are probably running ksh on a non-USG system.
1992 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1993 have echo built in and we may have to run some Bourne shell scripts.  That
1994 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1995
1996 FOO
1997                 $echo $n "The star should be here-->$c"
1998                 $echo "*"
1999         fi
2000         $rm -f foo1 foo2
2001         ;;
2002 esac
2003
2004 : determine whether symbolic links are supported
2005 echo " "
2006 $touch blurfl
2007 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2008         echo "Symbolic links are supported." >&4
2009         lns="$ln -s"
2010 else
2011         echo "Symbolic links are NOT supported." >&4
2012         lns="$ln"
2013 fi
2014 $rm -f blurfl sym
2015
2016 : see whether [:lower:] and [:upper:] are supported character classes
2017 echo " "
2018 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2019 ABYZ)
2020         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2021         up='[:upper:]'
2022         low='[:lower:]'
2023         ;;
2024 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2025         # (0xc9 and 0xd1), therefore that is a nice testing point.
2026         if test "X$up" = X -o "X$low" = X; then
2027             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2028             ij) up='[A-Z]'
2029                 low='[a-z]'
2030                 ;;
2031             esac
2032         fi
2033         if test "X$up" = X -o "X$low" = X; then
2034             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2035             ij) up='A-Z'
2036                 low='a-z'
2037                 ;;
2038             esac
2039         fi
2040         if test "X$up" = X -o "X$low" = X; then
2041             case "`echo IJ | od -x 2>/dev/null`" in
2042             *C9D1*|*c9d1*)
2043                 echo "Hey, this might be EBCDIC." >&4
2044                 if test "X$up" = X -o "X$low" = X; then
2045                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2046                     ij) up='[A-IJ-RS-Z]'
2047                         low='[a-ij-rs-z]'
2048                         ;;
2049                     esac
2050                 fi
2051                 if test "X$up" = X -o "X$low" = X; then
2052                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2053                     ij) up='A-IJ-RS-Z'
2054                         low='a-ij-rs-z'
2055                         ;;
2056                     esac
2057                 fi
2058                 ;;
2059             esac
2060         fi
2061 esac
2062 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2063 ij)
2064     echo "Using $up and $low to convert case." >&4
2065     ;;
2066 *)
2067     echo "I don't know how to translate letters from upper to lower case." >&4
2068     echo "Your tr is not acting any way I know of." >&4
2069     exit 1
2070     ;;
2071 esac
2072 : set up the translation script tr, must be called with ./tr of course
2073 cat >tr <<EOSC
2074 $startsh
2075 case "\$1\$2" in
2076 '[A-Z][a-z]') exec $tr '$up' '$low';;
2077 '[a-z][A-Z]') exec $tr '$low' '$up';;
2078 esac
2079 exec $tr "\$@"
2080 EOSC
2081 chmod +x tr
2082 $eunicefix tr
2083
2084 : Try to determine whether config.sh was made on this system
2085 case "$config_sh" in
2086 '')
2087 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
2088 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2089 # because the A-Z/a-z are not consecutive.
2090 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2091         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2092 newmyuname="$myuname"
2093 dflt=n
2094 case "$knowitall" in
2095 '')
2096         if test -f ../config.sh; then
2097                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2098                         eval "`grep myuname= ../config.sh`"
2099                 fi
2100                 if test "X$myuname" = "X$newmyuname"; then
2101                         dflt=y
2102                 fi
2103         fi
2104         ;;
2105 *) dflt=y;;
2106 esac
2107
2108 : Get old answers from old config file if Configure was run on the
2109 : same system, otherwise use the hints.
2110 hint=default
2111 cd ..
2112 if test -f config.sh; then
2113         echo " "
2114         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2115         . UU/myread
2116         case "$ans" in
2117         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2118         *)  echo "Fetching default answers from your old config.sh file..." >&4
2119                 tmp_n="$n"
2120                 tmp_c="$c"
2121                 tmp_sh="$sh"
2122                 . ./config.sh
2123                 cp config.sh UU
2124                 n="$tmp_n"
2125                 c="$tmp_c"
2126                 : Older versions did not always set $sh.  Catch re-use of such
2127                 : an old config.sh.
2128                 case "$sh" in
2129                 '') sh="$tmp_sh" ;;
2130                 esac
2131                 hint=previous
2132                 ;;
2133         esac
2134 fi
2135 if test ! -f config.sh; then
2136         $cat <<EOM
2137
2138 First time through, eh?  I have some defaults handy for some systems
2139 that need some extra help getting the Configure answers right:
2140
2141 EOM
2142         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2143         dflt=''
2144         : Half the following guesses are probably wrong... If you have better
2145         : tests or hints, please send them to perlbug@perl.com
2146         : The metaconfig authors would also appreciate a copy...
2147         $test -f /irix && osname=irix
2148         $test -f /xenix && osname=sco_xenix
2149         $test -f /dynix && osname=dynix
2150         $test -f /dnix && osname=dnix
2151         $test -f /lynx.os && osname=lynxos
2152         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2153         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2154         $test -f /bin/mips && /bin/mips && osname=mips
2155         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2156                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2157         $test -d /usr/apollo/bin && osname=apollo
2158         $test -f /etc/saf/_sactab && osname=svr4
2159         $test -d /usr/include/minix && osname=minix
2160         if $test -d /MachTen -o -d /MachTen_Folder; then
2161                 osname=machten
2162                 if $test -x /sbin/version; then
2163                         osvers=`/sbin/version | $awk '{print $2}' |
2164                         $sed -e 's/[A-Za-z]$//'`
2165                 elif $test -x /usr/etc/version; then
2166                         osvers=`/usr/etc/version | $awk '{print $2}' |
2167                         $sed -e 's/[A-Za-z]$//'`
2168                 else
2169                         osvers="$2.$3"
2170                 fi
2171         fi
2172        $test -f /sys/posix.dll &&
2173                $test -f /usr/bin/what &&
2174                set X `/usr/bin/what /sys/posix.dll` &&
2175                $test "$3" = UWIN &&
2176                osname=uwin &&
2177                osvers="$5"
2178         if $test -f $uname; then
2179                 set X $myuname
2180                 shift
2181
2182                 case "$5" in
2183                 fps*) osname=fps ;;
2184                 mips*)
2185                         case "$4" in
2186                         umips) osname=umips ;;
2187                         *) osname=mips ;;
2188                         esac;;
2189                 [23]100) osname=mips ;;
2190                 next*) osname=next ;;
2191                 i386*)
2192                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2193                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2194                                 osname='sco'
2195                                 osvers=$tmp
2196                         elif $test -f /etc/kconfig; then
2197                                 osname=isc
2198                                 if test "$lns" = "$ln -s"; then
2199                                         osvers=4
2200                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2201                                         osvers=3
2202                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2203                                         osvers=2
2204                                 fi
2205                         fi
2206                         tmp=''
2207                         ;;
2208                 pc*)
2209                         if test -n "$DJGPP"; then
2210                                 osname=dos
2211                                 osvers=djgpp
2212                         fi
2213                         ;;
2214                 esac
2215
2216                 case "$1" in
2217                 aix) osname=aix
2218                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2219                         case "$tmp" in
2220                         'not found') osvers="$4"."$3" ;;
2221                         '<3240'|'<>3240') osvers=3.2.0 ;;
2222                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2223                         '=3250'|'>3250') osvers=3.2.5 ;;
2224                         *) osvers=$tmp;;
2225                         esac
2226                         ;;
2227                 *dc.osx) osname=dcosx
2228                         osvers="$3"
2229                         ;;
2230                 dnix) osname=dnix
2231                         osvers="$3"
2232                         ;;
2233                 domainos) osname=apollo
2234                         osvers="$3"
2235                         ;;
2236                 dgux) osname=dgux 
2237                         osvers="$3"
2238                         ;;
2239                 dynixptx*) osname=dynixptx
2240                         osvers=`echo "$4"|sed 's/^v//'`
2241                         ;;
2242                 freebsd) osname=freebsd 
2243                         osvers="$3" ;;
2244                 genix) osname=genix ;;
2245                 hp*) osname=hpux 
2246                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2247                         ;;
2248                 irix*) osname=irix
2249                         case "$3" in
2250                         4*) osvers=4 ;;
2251                         5*) osvers=5 ;;
2252                         *)      osvers="$3" ;;
2253                         esac
2254                         ;;
2255                 linux) osname=linux
2256                         case "$3" in
2257                         *)      osvers="$3" ;;
2258                         esac
2259                         ;;
2260                 MiNT) osname=mint
2261                         ;;
2262                 netbsd*) osname=netbsd
2263                         osvers="$3"
2264                         ;;
2265                 news-os) osvers="$3"
2266                         case "$3" in
2267                         4*) osname=newsos4 ;;
2268                         *) osname=newsos ;;
2269                         esac
2270                         ;;
2271                 bsd386) osname=bsd386
2272                         osvers=`$uname -r`
2273                         ;;
2274                 POSIX-BC | posix-bc ) osname=posix-bc
2275                         osvers="$3"
2276                         ;;
2277                 powerux | power_ux | powermax_os | powermaxos | \
2278                 powerunix | power_unix) osname=powerux
2279                         osvers="$3"
2280                         ;;
2281                 next*) osname=next ;;
2282                 solaris) osname=solaris
2283                         case "$3" in
2284                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2285                         *)      osvers="$3" ;;
2286                         esac
2287                         ;;
2288                 sunos) osname=sunos
2289                         case "$3" in
2290                         5*) osname=solaris
2291                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2292                         *)      osvers="$3" ;;
2293                         esac
2294                         ;;
2295                 titanos) osname=titanos
2296                         case "$3" in
2297                         1*) osvers=1 ;;
2298                         2*) osvers=2 ;;
2299                         3*) osvers=3 ;;
2300                         4*) osvers=4 ;;
2301                         *)      osvers="$3" ;;
2302                         esac
2303                         ;;
2304                 ultrix) osname=ultrix
2305                         osvers="$3"
2306                         ;;
2307                 osf1|mls+)      case "$5" in
2308                                 alpha)
2309                                         osname=dec_osf
2310                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2311                                         ;;
2312                         hp*)    osname=hp_osf1  ;;
2313                         mips)   osname=mips_osf1 ;;
2314                         esac
2315                         ;;
2316                 unixware) osname=svr5
2317                         osvers="$4"
2318                         ;;
2319                 uts) osname=uts
2320                         osvers="$3"
2321                         ;;
2322                 qnx) osname=qnx
2323                         osvers="$4"
2324                         ;;
2325                 $2) case "$osname" in
2326                         *isc*) ;;
2327                         *freebsd*) ;;
2328                         svr*)
2329                                 : svr4.x or possibly later
2330                                 case "svr$3" in 
2331                                 ${osname}*)
2332                                         osname=svr$3
2333                                         osvers=$4
2334                                         ;;
2335                                 esac
2336                                 case "$osname" in
2337                                 svr4.0)
2338                                         : Check for ESIX
2339                                         if test -f /stand/boot ; then
2340                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2341                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2342                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2343                                                         if test -n "$isesix"; then
2344                                                                 osname=esix4
2345                                                         fi
2346                                                 fi
2347                                         fi
2348                                         ;;
2349                                 esac
2350                                 ;;
2351                         *)      if test -f /etc/systemid; then
2352                                         osname=sco
2353                                         set `echo $3 | $sed 's/\./ /g'` $4
2354                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2355                                                 osvers=$1.$2.$3
2356                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2357                                                 osvers=$1.$2
2358                                         elif $test -f $src/hints/sco_$1.sh; then
2359                                                 osvers=$1
2360                                         fi
2361                                 else
2362                                         case "$osname" in
2363                                         '') : Still unknown.  Probably a generic Sys V.
2364                                                 osname="sysv"
2365                                                 osvers="$3"
2366                                                 ;;
2367                                         esac
2368                                 fi
2369                                 ;;
2370                         esac
2371                         ;;
2372                 *)      case "$osname" in
2373                         '') : Still unknown.  Probably a generic BSD.
2374                                 osname="$1"
2375                                 osvers="$3"
2376                                 ;;
2377                         esac
2378                         ;;
2379                 esac
2380         else
2381                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2382                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2383                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2384                                 osname=news_os
2385                         fi
2386                         $rm -f UU/kernel.what
2387                 elif test -d c:/.; then
2388                         set X $myuname
2389                         osname=os2
2390                         osvers="$5"
2391                 fi
2392         fi
2393         
2394         : Now look for a hint file osname_osvers, unless one has been
2395         : specified already.
2396         case "$hintfile" in
2397         ''|' ')
2398                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2399                 : Also try without trailing minor version numbers.
2400                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2401                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2402                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2403                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2404                 case "$file" in
2405                 '') dflt=none ;;
2406                 *)  case "$osvers" in
2407                         '') dflt=$file
2408                                 ;;
2409                         *)  if $test -f $src/hints/$file.sh ; then
2410                                         dflt=$file
2411                                 elif $test -f $src/hints/$xfile.sh ; then
2412                                         dflt=$xfile
2413                                 elif $test -f $src/hints/$xxfile.sh ; then
2414                                         dflt=$xxfile
2415                                 elif $test -f $src/hints/$xxxfile.sh ; then
2416                                         dflt=$xxxfile
2417                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2418                                         dflt=$xxxxfile
2419                                 elif $test -f "$src/hints/${osname}.sh" ; then
2420                                         dflt="${osname}"
2421                                 else
2422                                         dflt=none
2423                                 fi
2424                                 ;;
2425                         esac
2426                         ;;
2427                 esac
2428                 if $test -f Policy.sh ; then
2429                         case "$dflt" in
2430                         *Policy*) ;;
2431                         none) dflt="Policy" ;;
2432                         *) dflt="Policy $dflt" ;;
2433                         esac
2434                 fi
2435                 ;;
2436         *)
2437                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2438                 ;;
2439         esac
2440
2441         if $test -f Policy.sh ; then
2442                 $cat <<EOM
2443
2444 There's also a Policy hint file available, which should make the
2445 site-specific (policy) questions easier to answer.
2446 EOM
2447
2448         fi
2449
2450         $cat <<EOM
2451
2452 You may give one or more space-separated answers, or "none" if appropriate.
2453 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2454 is a good thing.  DO NOT give a wrong version or a wrong OS.
2455
2456 EOM
2457
2458         rp="Which of these apply, if any?"
2459         . UU/myread
2460         tans=$ans
2461         for file in $tans; do
2462                 if $test X$file = XPolicy -a -f Policy.sh; then
2463                         . Policy.sh
2464                         $cat Policy.sh >> UU/config.sh
2465                 elif $test -f $src/hints/$file.sh; then
2466                         . $src/hints/$file.sh
2467                         $cat $src/hints/$file.sh >> UU/config.sh
2468                 elif $test X$tans = X -o X$tans = Xnone ; then
2469                         : nothing
2470                 else
2471                         : Give one chance to correct a possible typo.
2472                         echo "$file.sh does not exist"
2473                         dflt=$file
2474                         rp="hint to use instead?"
2475                         . UU/myread
2476                         for file in $ans; do
2477                                 if $test -f "$src/hints/$file.sh"; then
2478                                         . $src/hints/$file.sh
2479                                         $cat $src/hints/$file.sh >> UU/config.sh
2480                                 elif $test X$ans = X -o X$ans = Xnone ; then
2481                                         : nothing
2482                                 else
2483                                         echo "$file.sh does not exist -- ignored."
2484                                 fi
2485                         done
2486                 fi
2487         done
2488
2489         hint=recommended
2490         : Remember our hint file for later.
2491         if $test -f "$src/hints/$file.sh" ; then
2492                 hintfile="$file"
2493         else
2494                 hintfile=''
2495         fi
2496 fi
2497 cd UU
2498 ;;
2499 *)
2500         echo " "
2501         echo "Fetching default answers from $config_sh..." >&4
2502         tmp_n="$n"
2503         tmp_c="$c"
2504         cd ..
2505         cp $config_sh config.sh 2>/dev/null
2506         chmod +w config.sh
2507         . ./config.sh
2508         cd UU
2509         cp ../config.sh .
2510         n="$tmp_n"
2511         c="$tmp_c"
2512         hint=previous
2513         ;;
2514 esac
2515 test "$override" && . ./optdef.sh
2516 myuname="$newmyuname"
2517
2518 : Restore computed paths
2519 for file in $loclist $trylist; do
2520         eval $file="\$_$file"
2521 done
2522
2523 cat << EOM
2524
2525 Configure uses the operating system name and version to set some defaults.
2526 The default value is probably right if the name rings a bell. Otherwise,
2527 since spelling matters for me, either accept the default or answer "none"
2528 to leave it blank.
2529
2530 EOM
2531 case "$osname" in
2532         ''|' ')
2533                 case "$hintfile" in
2534                 ''|' '|none) dflt=none ;;
2535                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2536                 esac
2537                 ;;
2538         *) dflt="$osname" ;;
2539 esac
2540 rp="Operating system name?"
2541 . ./myread
2542 case "$ans" in
2543 none)  osname='' ;;
2544 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2545 esac
2546 echo " "
2547 case "$osvers" in
2548         ''|' ')
2549                 case "$hintfile" in
2550                 ''|' '|none) dflt=none ;;
2551                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2552                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2553                         case "$dflt" in
2554                         ''|' ') dflt=none ;;
2555                         esac
2556                         ;;
2557                 esac
2558                 ;;
2559         *) dflt="$osvers" ;;
2560 esac
2561 rp="Operating system version?"
2562 . ./myread
2563 case "$ans" in
2564 none)  osvers='' ;;
2565 *) osvers="$ans" ;;
2566 esac
2567
2568
2569 . ./posthint.sh
2570
2571 : who configured the system
2572 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2573 cf_by=`(logname) 2>/dev/null`
2574 case "$cf_by" in
2575 "")
2576         cf_by=`(whoami) 2>/dev/null`
2577         case "$cf_by" in
2578         "") cf_by=unknown ;;
2579         esac ;;
2580 esac
2581
2582 : set up the script used to warn in case of inconsistency
2583 cat <<EOS >whoa
2584 $startsh
2585 EOS
2586 cat <<'EOSC' >>whoa
2587 dflt=y
2588 echo " "
2589 echo "*** WHOA THERE!!! ***" >&4
2590 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2591 rp="    Keep the $hint value?"
2592 . ./myread
2593 case "$ans" in
2594 y) td=$was; tu=$was;;
2595 esac
2596 EOSC
2597
2598 : function used to set $1 to $val
2599 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2600 case "$val$was" in
2601 $define$undef) . ./whoa; eval "$var=\$td";;
2602 $undef$define) . ./whoa; eval "$var=\$tu";;
2603 *) eval "$var=$val";;
2604 esac'
2605
2606 cat <<EOM
2607
2608 Perl can be built to take advantage of threads, on some systems.
2609 To do so, Configure must be run with -Dusethreads.
2610
2611 Note that threading is a highly experimental feature, and
2612 some known race conditions still remain.  If you choose to try
2613 it, be very sure to not actually deploy it for production
2614 purposes.  README.threads has more details, and is required
2615 reading if you enable threads.
2616 EOM
2617 case "$usethreads" in
2618 $define|true|[yY]*)     dflt='y';;
2619 *) dflt='n';;
2620 esac
2621 rp='Build a threading Perl?'
2622 . ./myread
2623 case "$ans" in
2624 y|Y)    val="$define" ;;     
2625 *)      val="$undef" ;;
2626 esac
2627 set usethreads
2628 eval $setvar 
2629
2630 case "$d_oldpthreads" in
2631 '')     : Configure tests would be welcome here.  For now, assume undef.
2632         val="$undef" ;;
2633 *)      val="$d_oldpthreads" ;;
2634 esac
2635 set d_oldpthreads
2636 eval $setvar
2637
2638
2639 case "$usethreads" in
2640 "$define"|true|[yY]*)
2641 : Look for a hint-file generated 'call-back-unit'.  If the
2642 : user has specified that a threading perl is to be built,
2643 : we may need to set or change some other defaults.
2644         if $test -f usethreads.cbu; then
2645                 echo "Your platform has some specific hints for threaded builds, using them..."
2646                 . ./usethreads.cbu
2647         else
2648                 $cat <<EOM
2649 (Your platform doesn't have any specific hints for threaded builds.
2650  Assuming POSIX threads, then.)
2651 EOM
2652         fi
2653     ;;
2654 esac
2655
2656 cat <<EOM
2657
2658 Perl can be built so that multiple Perl interpreters can coexist
2659 within the same Perl executable.  To do so, Configure must be run with
2660 -Dusemultiplicity.
2661
2662 Normally you do not need this and you should answer no.
2663
2664 EOM
2665 case "$usemultiplicity" in
2666 $define|true|[yY]*)     dflt='y';;
2667 *) dflt='n';;
2668 esac
2669 rp='Build Perl for multiplicity?'
2670 . ./myread
2671 case "$ans" in
2672 y|Y)    val="$define" ;;     
2673 *)      val="$undef" ;;
2674 esac
2675 set usemultiplicity
2676 eval $setvar 
2677
2678 : determine where manual pages are on this system
2679 echo " "
2680 case "$sysman" in
2681 '') 
2682         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2683         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2684         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2685         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2686         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2687         sysman=`./loc . /usr/man/man1 $syspath`
2688         ;;
2689 esac
2690 if $test -d "$sysman"; then
2691         echo "System manual is in $sysman." >&4
2692 else
2693         echo "Could not find manual pages in source form." >&4
2694 fi
2695
2696 : see what memory models we can support
2697 case "$models" in
2698 '')
2699         $cat >pdp11.c <<'EOP'
2700 int main() {
2701 #ifdef pdp11
2702         exit(0);
2703 #else
2704         exit(1);
2705 #endif
2706 }
2707 EOP
2708         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2709         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2710                 dflt='unsplit split'
2711         else
2712                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2713                 case "$tans" in
2714                 X) dflt='none';;
2715                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2716                                 dflt='small'
2717                         else
2718                                 dflt=''
2719                         fi
2720                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2721                                 dflt="$dflt medium"
2722                         fi
2723                         if $test -d /lib/large || $test -d /usr/lib/large; then
2724                                 dflt="$dflt large"
2725                         fi
2726                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2727                                 dflt="$dflt huge"
2728                         fi
2729                 esac
2730         fi;;
2731 *) dflt="$models";;
2732 esac
2733 $cat <<EOM
2734  
2735 Some systems have different model sizes.  On most systems they are called
2736 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2737 split.  If your system doesn't support different memory models, say "none".
2738 If you wish to force everything to one memory model, say "none" here and
2739 put the appropriate flags later when it asks you for other cc and ld flags.
2740 Venix systems may wish to put "none" and let the compiler figure things out.
2741 (In the following question multiple model names should be space separated.)
2742
2743 The default for most systems is "none".
2744
2745 EOM
2746 rp="Which memory models are supported?"
2747 . ./myread
2748 models="$ans"
2749
2750 case "$models" in
2751 none)
2752         small=''
2753         medium=''
2754         large=''
2755         huge=''
2756         unsplit=''
2757         split=''
2758         ;;
2759 *split)
2760         case "$split" in
2761         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2762                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2763                         dflt='-i'
2764                 else
2765                         dflt='none'
2766                 fi;;
2767         *) dflt="$split";;
2768         esac
2769         rp="What flag indicates separate I and D space?"
2770         . ./myread
2771         tans="$ans"
2772         case "$tans" in
2773         none) tans='';;
2774         esac
2775         split="$tans"
2776         unsplit='';;
2777 *large*|*small*|*medium*|*huge*)
2778         case "$models" in
2779         *large*)
2780                 case "$large" in
2781                 '') dflt='-Ml';;
2782                 *) dflt="$large";;
2783                 esac
2784         rp="What flag indicates large model?"
2785         . ./myread
2786         tans="$ans"
2787         case "$tans" in
2788         none) tans='';
2789         esac
2790         large="$tans";;
2791         *) large='';;
2792         esac
2793         case "$models" in
2794         *huge*) case "$huge" in
2795                 '') dflt='-Mh';;
2796                 *) dflt="$huge";;
2797                 esac
2798                 rp="What flag indicates huge model?"
2799                 . ./myread
2800                 tans="$ans"
2801                 case "$tans" in
2802                 none) tans='';
2803                 esac
2804                 huge="$tans";;
2805         *) huge="$large";;
2806         esac
2807         case "$models" in
2808         *medium*) case "$medium" in
2809                 '') dflt='-Mm';;
2810                 *) dflt="$medium";;
2811                 esac
2812                 rp="What flag indicates medium model?"
2813                 . ./myread
2814                 tans="$ans"
2815                 case "$tans" in
2816                 none) tans='';
2817                 esac
2818                 medium="$tans";;
2819         *) medium="$large";;
2820         esac
2821         case "$models" in
2822         *small*) case "$small" in
2823                 '') dflt='none';;
2824                 *) dflt="$small";;
2825                 esac
2826                 rp="What flag indicates small model?"
2827                 . ./myread
2828                 tans="$ans"
2829                 case "$tans" in
2830                 none) tans='';
2831                 esac
2832                 small="$tans";;
2833         *) small='';;
2834         esac
2835         ;;
2836 *)
2837         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2838         ;;
2839 esac
2840 $rm -f pdp11.* pdp11
2841
2842 : make some quick guesses about what we are up against
2843 echo " "
2844 $echo $n "Hmm...  $c"
2845 echo exit 1 >bsd
2846 echo exit 1 >usg
2847 echo exit 1 >v7
2848 echo exit 1 >osf1
2849 echo exit 1 >eunice
2850 echo exit 1 >xenix
2851 echo exit 1 >venix
2852 echo exit 1 >os2
2853 d_bsd="$undef"
2854 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2855 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2856 then
2857         echo "Looks kind of like an OSF/1 system, but we'll see..."
2858         echo exit 0 >osf1
2859 elif test `echo abc | tr a-z A-Z` = Abc ; then
2860         xxx=`./loc addbib blurfl $pth`
2861         if $test -f $xxx; then
2862         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2863                 echo exit 0 >bsd
2864                 echo exit 0 >usg
2865         else
2866                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2867                         echo "Looks kind of like an extended USG system, but we'll see..."
2868                 else
2869                         echo "Looks kind of like a USG system, but we'll see..."
2870                 fi
2871                 echo exit 0 >usg
2872         fi
2873 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2874         echo "Looks kind of like a BSD system, but we'll see..."
2875         d_bsd="$define"
2876         echo exit 0 >bsd
2877 else
2878         echo "Looks kind of like a Version 7 system, but we'll see..."
2879         echo exit 0 >v7
2880 fi
2881 case "$eunicefix" in
2882 *unixtovms*)
2883         $cat <<'EOI'
2884 There is, however, a strange, musty smell in the air that reminds me of
2885 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2886 EOI
2887         echo exit 0 >eunice
2888         d_eunice="$define"
2889 : it so happens the Eunice I know will not run shell scripts in Unix format
2890         ;;
2891 *)
2892         echo " "
2893         echo "Congratulations.  You aren't running Eunice."
2894         d_eunice="$undef"
2895         ;;
2896 esac
2897 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2898 case "$p_" in
2899 :) ;;
2900 *)
2901         $cat <<'EOI'
2902 I have the feeling something is not exactly right, however...don't tell me...
2903 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2904 EOI
2905         echo exit 0 >os2
2906         ;;
2907 esac
2908 if test -f /xenix; then
2909         echo "Actually, this looks more like a XENIX system..."
2910         echo exit 0 >xenix
2911         d_xenix="$define"
2912 else
2913         echo " "
2914         echo "It's not Xenix..."
2915         d_xenix="$undef"
2916 fi
2917 chmod +x xenix
2918 $eunicefix xenix
2919 if test -f /venix; then
2920         echo "Actually, this looks more like a VENIX system..."
2921         echo exit 0 >venix
2922 else
2923         echo " "
2924         if ./xenix; then
2925                 : null
2926         else
2927                 echo "Nor is it Venix..."
2928         fi
2929 fi
2930 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2931 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2932 $rm -f foo
2933
2934 : see if we need a special compiler
2935 echo " "
2936 if ./usg; then
2937         case "$cc" in
2938         '') case "$Mcc" in
2939                 /*) dflt='Mcc';;
2940                 *) case "$large" in
2941                         -M*) dflt='cc';;
2942                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
2943                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
2944                                                 dflt='cc'
2945                                         else
2946                                                 dflt='cc -M'
2947                                         fi
2948                                 else
2949                                         dflt='cc'
2950                                 fi;;
2951                         esac;;
2952                 esac;;
2953         *)  dflt="$cc";;
2954         esac
2955         case "$dflt" in
2956         *M*)    $cat <<'EOM'
2957 On some older systems the default C compiler will not resolve multiple global
2958 references that happen to have the same name.  On some such systems the "Mcc"
2959 command may be used to force these to be resolved.  On other systems a "cc -M"
2960 command is required.  (Note that the -M flag on other systems indicates a
2961 memory model to use!) If you have the Gnu C compiler, you might wish to use
2962 that instead.
2963
2964 EOM
2965         ;;
2966         esac
2967         rp="Use which C compiler?"
2968         . ./myread
2969         cc="$ans"
2970 else
2971         case "$cc" in
2972         '') dflt=cc;;
2973         *) dflt="$cc";;
2974         esac
2975         rp="Use which C compiler?"
2976         . ./myread
2977         cc="$ans"
2978 fi
2979 : Look for a hint-file generated 'call-back-unit'.  Now that the
2980 : user has specified the compiler, we may need to set or change some
2981 : other defaults.
2982 if $test -f cc.cbu; then
2983     . ./cc.cbu
2984 fi
2985 echo " "
2986 echo "Checking for GNU cc in disguise and/or its version number..." >&4
2987 $cat >gccvers.c <<EOM
2988 #include <stdio.h>
2989 int main() {
2990 #ifdef __GNUC__
2991 #ifdef __VERSION__
2992         printf("%s\n", __VERSION__);
2993 #else
2994         printf("%s\n", "1");
2995 #endif
2996 #endif
2997         exit(0);
2998 }
2999 EOM
3000 if $cc -o gccvers gccvers.c; then
3001         gccversion=`./gccvers`
3002         case "$gccversion" in
3003         '') echo "You are not using GNU cc." ;;
3004         *)  echo "You are using GNU cc $gccversion." ;;
3005         esac
3006 else
3007         echo " "
3008         echo "*** WHOA THERE!!! ***" >&4
3009         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3010         case "$knowitall" in
3011         '')
3012         echo "    You'd better start hunting for one and let me know about it." >&4
3013                 exit 1
3014                 ;;
3015         esac
3016 fi
3017 $rm -f gccvers*
3018 case "$gccversion" in
3019 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3020 esac
3021
3022
3023 case "$usemorebits" in
3024 "$define"|true|[yY]*)
3025         use64bits="$define"
3026         uselongdouble="$define"
3027         usemorebits="$define"
3028         ;;
3029 *)      usemorebits="$undef"
3030         ;;
3031 esac
3032
3033
3034 cat <<EOM
3035
3036 Perl can be built to understand large files (files larger than 2 gigabytes)
3037 on some systems.  To do so, Configure must be run with -Duselargefiles.
3038
3039 If this doesn't make any sense to you, just accept the default.
3040 EOM
3041 case "$uselargefiles" in
3042 "$define"|true|[yY]*) dflt='y' ;;
3043 *)      dflt='n' ;;
3044 esac
3045 rp='Try to understand large files?'
3046 . ./myread
3047 case "$ans" in
3048 y|Y)    val="$define" ;;
3049 *)      val="$undef"  ;;
3050 esac
3051 set uselargefiles
3052 eval $setvar
3053 case "$uselargefiles" in
3054 "$define") use64bits="$define" ;;
3055 esac
3056
3057 cat <<EOM
3058
3059 Perl can be built to take advantage of explicit 64-bit interfaces,
3060 on some systems.  To do so, Configure must be run with -Duse64bits.
3061
3062 If this doesn't make any sense to you, just accept the default.
3063 EOM
3064 case "$use64bits" in
3065 $define|true|[yY]*)     dflt='y';;
3066 *) dflt='n';;
3067 esac
3068 rp='Try to use explicit 64-bit interfaces, if available?'
3069 . ./myread
3070 case "$ans" in
3071 y|Y) 
3072         val="$define"
3073         ;;     
3074 *)      
3075         val="$undef"
3076         ;;
3077 esac
3078 set use64bits
3079 eval $setvar
3080
3081 case "$archname64" in
3082 '') archname64='' ;;    # not a typo
3083 esac
3084
3085 case "$use64bits" in
3086 "$define"|true|[yY]*)
3087 : Look for a hint-file generated 'call-back-unit'.  If the
3088 : user has specified that a 64 bit perl is to be built,
3089 : we may need to set or change some other defaults.
3090         if $test -f use64bits.cbu; then
3091                 echo "Your platform has some specific hints for 64-bit builds, using them..."
3092                 . ./use64bits.cbu
3093         else
3094                 $cat <<EOM
3095 (Your platform doesn't have any specific hints for 64-bit builds.
3096  This is probably okay, especially if your system is a true 64-bit system.)
3097 EOM
3098                 case "$gccversion" in
3099                 '')     ;;
3100                 *)      $cat <<EOM
3101 But since you seem to be using gcc,
3102 I will now add -DUSE_LONG_LONG to the compilation flags.
3103 EOM
3104                         ccflags="$ccflags -DUSE_LONG_LONG"
3105                         ;;
3106                 esac
3107         fi
3108         ;;
3109 esac
3110
3111 : determine the architecture name
3112 echo " "
3113 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
3114         tarch=`arch`"-$osname"
3115 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
3116         if uname -m > tmparch 2>&1 ; then
3117                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
3118                         -e 's/$/'"-$osname/" tmparch`
3119         else
3120                 tarch="$osname"
3121         fi
3122         $rm -f tmparch
3123 else
3124         tarch="$osname"
3125 fi
3126 case "$myarchname" in
3127 ''|"$tarch") ;;
3128 *)
3129         echo "(Your architecture name used to be $myarchname.)"
3130         archname=''
3131         ;;
3132 esac
3133 myarchname="$tarch"
3134 case "$archname" in
3135 '') dflt="$tarch";;
3136 *) dflt="$archname";;
3137 esac
3138 rp='What is your architecture name'
3139 . ./myread
3140 archname="$ans"
3141 case "$usethreads" in
3142 $define)
3143         echo "Threads selected." >&4
3144         case "$archname" in
3145         *-thread*) echo "...and architecture name already has -thread." >&4
3146                 ;;
3147         *)      archname="$archname-thread"
3148                 echo "...setting architecture name to $archname." >&4
3149                 ;;
3150         esac
3151         ;;
3152 esac
3153 case "$usemultiplicity" in
3154 $define)
3155         echo "Multiplicity selected." >&4
3156         case "$archname" in
3157         *-multi*) echo "...and architecture name already has -multi." >&4
3158                 ;;
3159         *)      archname="$archname-multi"
3160                 echo "...setting architecture name to $archname." >&4
3161                 ;;
3162         esac
3163         ;;
3164 esac
3165 case "$use64bits" in
3166 $define)
3167         echo "Explicit 64-bitness selected." >&4
3168         case "$archname64" in
3169         '')
3170                 ;;
3171         *)
3172                 case "$archname" in
3173                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
3174                         ;;
3175                 *)      archname="$archname-$archname64"
3176                         echo "...setting architecture name to $archname." >&4
3177                         ;;
3178                 esac
3179                 ;;
3180         esac
3181 esac
3182
3183 : decide how portable to be.  Allow command line overrides.
3184 case "$d_portable" in
3185 "$undef") ;;
3186 *)      d_portable="$define" ;;
3187 esac
3188
3189 : set up shell script to do ~ expansion
3190 cat >filexp <<EOSS
3191 $startsh
3192 : expand filename
3193 case "\$1" in
3194  ~/*|~)
3195         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3196         ;;
3197  ~*)
3198         if $test -f /bin/csh; then
3199                 /bin/csh -f -c "glob \$1"
3200                 failed=\$?
3201                 echo ""
3202                 exit \$failed
3203         else
3204                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3205                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3206                 if $test ! -d "\$dir"; then
3207                         me=\`basename \$0\`
3208                         echo "\$me: can't locate home directory for: \$name" >&2
3209                         exit 1
3210                 fi
3211                 case "\$1" in
3212                 */*)
3213                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3214                         ;;
3215                 *)
3216                         echo \$dir
3217                         ;;
3218                 esac
3219         fi
3220         ;;
3221 *)
3222         echo \$1
3223         ;;
3224 esac
3225 EOSS
3226 chmod +x filexp
3227 $eunicefix filexp
3228
3229 : now set up to get a file name
3230 cat <<EOS >getfile
3231 $startsh
3232 EOS
3233 cat <<'EOSC' >>getfile
3234 tilde=''
3235 fullpath=''
3236 already=''
3237 skip=''
3238 none_ok=''
3239 exp_file=''
3240 nopath_ok=''
3241 orig_rp="$rp"
3242 orig_dflt="$dflt"
3243 case "$gfpth" in
3244 '') gfpth='.' ;;
3245 esac
3246
3247 case "$fn" in
3248 *\(*)
3249         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3250         fn=`echo $fn | sed 's/(.*)//'`
3251         ;;
3252 esac
3253
3254 case "$fn" in
3255 *:*)
3256         loc_file=`expr $fn : '.*:\(.*\)'`
3257         fn=`expr $fn : '\(.*\):.*'`
3258         ;;
3259 esac
3260
3261 case "$fn" in
3262 *~*) tilde=true;;
3263 esac
3264 case "$fn" in
3265 */*) fullpath=true;;
3266 esac
3267 case "$fn" in
3268 *+*) skip=true;;
3269 esac
3270 case "$fn" in
3271 *n*) none_ok=true;;
3272 esac
3273 case "$fn" in
3274 *e*) exp_file=true;;
3275 esac
3276 case "$fn" in
3277 *p*) nopath_ok=true;;
3278 esac
3279
3280 case "$fn" in
3281 *f*) type='File';;
3282 *d*) type='Directory';;
3283 *l*) type='Locate';;
3284 esac
3285
3286 what="$type"
3287 case "$what" in
3288 Locate) what='File';;
3289 esac
3290
3291 case "$exp_file" in
3292 '')
3293         case "$d_portable" in
3294         "$define") ;;
3295         *) exp_file=true;;
3296         esac
3297         ;;
3298 esac
3299
3300 cd ..
3301 while test "$type"; do
3302         redo=''
3303         rp="$orig_rp"
3304         dflt="$orig_dflt"
3305         case "$tilde" in
3306         true) rp="$rp (~name ok)";;
3307         esac
3308         . UU/myread
3309         if test -f UU/getfile.ok && \
3310                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3311         then
3312                 value="$ans"
3313                 ansexp="$ans"
3314                 break
3315         fi
3316         case "$ans" in
3317         none)
3318                 value=''
3319                 ansexp=''
3320                 case "$none_ok" in
3321                 true) type='';;
3322                 esac
3323                 ;;
3324         *)
3325                 case "$tilde" in
3326                 '') value="$ans"
3327                         ansexp="$ans";;
3328                 *)
3329                         value=`UU/filexp $ans`
3330                         case $? in
3331                         0)
3332                                 if test "$ans" != "$value"; then
3333                                         echo "(That expands to $value on this system.)"
3334                                 fi
3335                                 ;;
3336                         *) value="$ans";;
3337                         esac
3338                         ansexp="$value"
3339                         case "$exp_file" in
3340                         '') value="$ans";;
3341                         esac
3342                         ;;
3343                 esac
3344                 case "$fullpath" in
3345                 true)
3346                         case "$ansexp" in
3347                         /*) value="$ansexp" ;;
3348                         *)
3349                                 redo=true
3350                                 case "$already" in
3351                                 true)
3352                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3353                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3354                                         ;;
3355                                 *)
3356                                 echo "Please give a full path name, starting with slash." >&4
3357                                         case "$tilde" in
3358                                         true)
3359                                 echo "Note that using ~name is ok provided it expands well." >&4
3360                                                 already=true
3361                                                 ;;
3362                                         esac
3363                                 esac
3364                                 ;;
3365                         esac
3366                         ;;
3367                 esac
3368                 case "$redo" in
3369                 '')
3370                         case "$type" in
3371                         File)
3372                                 for fp in $gfpth; do
3373                                         if test "X$fp" = X.; then
3374                                             pf="$ansexp"
3375                                         else    
3376                                             pf="$fp/$ansexp"
3377                                         fi
3378                                         if test -f "$pf"; then
3379                                                 type=''
3380                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3381                                         then
3382                                                 echo "($value is not a plain file, but that's ok.)"
3383                                                 type=''
3384                                         fi
3385                                         if test X"$type" = X; then
3386                                             value="$pf"
3387                                             break
3388                                         fi
3389                                 done
3390                                 ;;
3391                         Directory)
3392                                 for fp in $gfpth; do
3393                                         if test "X$fp" = X.; then
3394                                             pf="$ansexp"
3395                                         else    
3396                                             pf="$fp/$ansexp"
3397                                         fi
3398                                         if test -d "$pf"; then
3399                                                 type=''
3400                                                 value="$pf"
3401                                                 break
3402                                         fi
3403                                 done
3404                                 ;;
3405                         Locate)
3406                                 if test -d "$ansexp"; then
3407                                         echo "(Looking for $loc_file in directory $value.)"
3408                                         value="$value/$loc_file"
3409                                         ansexp="$ansexp/$loc_file"
3410                                 fi
3411                                 if test -f "$ansexp"; then
3412                                         type=''
3413                                 fi
3414                                 case "$nopath_ok" in
3415                                 true)   case "$value" in
3416                                         */*) ;;
3417                                         *)      echo "Assuming $value will be in people's path."
3418                                                 type=''
3419                                                 ;;
3420                                         esac
3421                                         ;;
3422                                 esac
3423                                 ;;
3424                         esac
3425
3426                         case "$skip" in
3427                         true) type='';
3428                         esac
3429
3430                         case "$type" in
3431                         '') ;;
3432                         *)
3433                                 if test "$fastread" = yes; then
3434                                         dflt=y
3435                                 else
3436                                         dflt=n
3437                                 fi
3438                                 rp="$what $value doesn't exist.  Use that name anyway?"
3439                                 . UU/myread
3440                                 dflt=''
3441                                 case "$ans" in
3442                                 y*) type='';;
3443                                 *) echo " ";;
3444                                 esac
3445                                 ;;
3446                         esac
3447                         ;;
3448                 esac
3449                 ;;
3450         esac
3451 done
3452 cd UU
3453 ans="$value"
3454 rp="$orig_rp"
3455 dflt="$orig_dflt"
3456 rm -f getfile.ok
3457 test "X$gfpthkeep" != Xy && gfpth=""
3458 EOSC
3459
3460 : determine root of directory hierarchy where package will be installed.
3461 case "$prefix" in
3462 '')
3463         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3464         ;;
3465 *)
3466         dflt="$prefix"
3467         ;;
3468 esac
3469 $cat <<EOM
3470
3471 By default, $package will be installed in $dflt/bin, manual pages
3472 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3473 installation directories. Typically this is something like /usr/local.
3474 If you wish to have binaries under /usr/bin but other parts of the
3475 installation under /usr/local, that's ok: you will be prompted
3476 separately for each of the installation directories, the prefix being
3477 only used to set the defaults.
3478
3479 EOM
3480 fn=d~
3481 rp='Installation prefix to use?'
3482 . ./getfile
3483 oldprefix=''
3484 case "$prefix" in
3485 '') ;;
3486 *)
3487         case "$ans" in
3488         "$prefix") ;;
3489         *) oldprefix="$prefix";;
3490         esac
3491         ;;
3492 esac
3493 prefix="$ans"
3494 prefixexp="$ansexp"
3495
3496 : is AFS running?
3497 echo " "
3498 case "$afs" in
3499 $define|true)   afs=true ;;
3500 $undef|false)   afs=false ;;
3501 *)      if test -d /afs; then
3502                 afs=true
3503         else
3504                 afs=false
3505         fi
3506         ;;
3507 esac
3508 if $afs; then
3509         echo "AFS may be running... I'll be extra cautious then..." >&4
3510 else
3511         echo "AFS does not seem to be running..." >&4
3512 fi
3513
3514 : determine installation prefix for where package is to be installed.
3515 if $afs; then 
3516 $cat <<EOM
3517
3518 Since you are running AFS, I need to distinguish the directory in which
3519 files will reside from the directory in which they are installed (and from
3520 which they are presumably copied to the former directory by occult means).
3521
3522 EOM
3523         case "$installprefix" in
3524         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3525         *) dflt="$installprefix";;
3526         esac
3527 else
3528 $cat <<EOM
3529
3530 In some special cases, particularly when building $package for distribution,
3531 it is convenient to distinguish between the directory in which files should 
3532 be installed from the directory ($prefix) in which they 
3533 will eventually reside.  For most users, these two directories are the same.
3534
3535 EOM
3536         case "$installprefix" in
3537         '') dflt=$prefix ;;
3538         *) dflt=$installprefix;;
3539         esac
3540 fi
3541 fn=d~
3542 rp='What installation prefix should I use for installing files?'
3543 . ./getfile
3544 installprefix="$ans"
3545 installprefixexp="$ansexp"
3546
3547 : set the prefixit variable, to compute a suitable default value
3548 prefixit='case "$3" in
3549 ""|none)
3550         case "$oldprefix" in
3551         "") eval "$1=\"\$$2\"";;
3552         *)
3553                 case "$3" in
3554                 "") eval "$1=";;
3555                 none)
3556                         eval "tp=\"\$$2\"";
3557                         case "$tp" in
3558                         ""|" ") eval "$1=\"\$$2\"";;
3559                         *) eval "$1=";;
3560                         esac;;
3561                 esac;;
3562         esac;;
3563 *)
3564         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3565         case "$tp" in
3566         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3567         /*-$oldprefix/*|\~*-$oldprefix/*)
3568                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3569         *) eval "$1=\"\$$2\"";;
3570         esac;;
3571 esac'
3572
3573 : set the base revision
3574 baserev=5.0
3575
3576 : get the patchlevel
3577 echo " "
3578 echo "Getting the current patchlevel..." >&4
3579 if $test -r $rsrc/patchlevel.h;then
3580         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3581         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3582         apiversion=`awk '/define[       ]+PERL_APIVERSION/ {print $3}' $rsrc/patchlevel.h`
3583 else
3584         patchlevel=0
3585         subversion=0
3586         apiversion=0
3587 fi
3588 $echo $n "(You have $package" $c
3589 case "$package" in
3590 "*$baserev")    ;;
3591 *)              $echo $n " $baserev" $c ;;
3592 esac
3593 $echo $n " patchlevel $patchlevel" $c
3594 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3595 echo ".)"
3596
3597 if test 0 -eq "$subversion"; then
3598         version=`LC_ALL=C; export LC_ALL; \
3599                  echo $baserev $patchlevel | \
3600                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3601 else
3602         version=`LC_ALL=C; export LC_ALL; \
3603                  echo $baserev $patchlevel $subversion | \
3604                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3605 fi
3606
3607 : determine installation style
3608 : For now, try to deduce it from prefix unless it is already set.
3609 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
3610 case "$installstyle" in
3611 '')     case "$prefix" in
3612                 *perl*) dflt='lib';;
3613                 *) dflt='lib/perl5' ;;
3614         esac
3615         ;;
3616 *)      dflt='lib/perl5' ;;
3617 esac
3618 : Probably not worth prompting for this since we prompt for all
3619 : the directories individually, and the prompt would be too long and
3620 : confusing anyway.
3621 installstyle=$dflt
3622
3623 : determine where private library files go
3624 : Usual default is /usr/local/lib/perl5/$version.
3625 : Also allow things like /opt/perl/lib/$version, since 
3626 : /opt/perl/lib/perl5... would be redundant.
3627 : The default "style" setting is made in installstyle.U
3628 case "$installstyle" in
3629 *lib/perl5*) set dflt privlib lib/$package/$version ;;
3630 *)       set dflt privlib lib/$version ;;
3631 esac
3632 eval $prefixit
3633 $cat <<EOM
3634
3635 There are some auxiliary files for $package that need to be put into a
3636 private library directory that is accessible by everyone.
3637
3638 EOM
3639 fn=d~+
3640 rp='Pathname where the private library files will reside?'
3641 . ./getfile
3642 privlib="$ans"
3643 privlibexp="$ansexp"
3644 : Change installation prefix, if necessary.
3645 if $test X"$prefix" != X"$installprefix"; then
3646         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
3647 else
3648         installprivlib="$privlibexp"
3649 fi
3650
3651 : set the prefixup variable, to restore leading tilda escape
3652 prefixup='case "$prefixexp" in
3653 "$prefix") ;;
3654 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3655 esac'
3656
3657 : determine where public architecture dependent libraries go
3658 set archlib archlib
3659 eval $prefixit
3660 : privlib default is /usr/local/lib/$package/$version
3661 : archlib default is /usr/local/lib/$package/$version/$archname
3662 : privlib may have an optional trailing /share.
3663 tdflt=`echo $privlib | $sed 's,/share$,,'`
3664 tdflt=$tdflt/$archname
3665 case "$archlib" in
3666 '')     dflt=$tdflt
3667         ;;
3668 *)      dflt="$archlib"
3669     ;;
3670 esac
3671 $cat <<EOM
3672
3673 $spackage contains architecture-dependent library files.  If you are
3674 sharing libraries in a heterogeneous environment, you might store
3675 these files in a separate location.  Otherwise, you can just include
3676 them with the rest of the public library files.
3677
3678 EOM
3679 fn=d+~
3680 rp='Where do you want to put the public architecture-dependent libraries?'
3681 . ./getfile
3682 archlib="$ans"
3683 archlibexp="$ansexp"
3684 if $test X"$archlib" = X"$privlib"; then
3685         d_archlib="$undef"
3686 else
3687         d_archlib="$define"
3688 fi
3689 : Change installation prefix, if necessary.
3690 if $test X"$prefix" != X"$installprefix"; then
3691         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
3692 else
3693         installarchlib="$archlibexp"
3694 fi
3695
3696
3697 : Binary compatibility with 5.005 is not possible for builds
3698 : with advanced features
3699 case "$usethreads$usemultiplicity" in
3700 *define*)
3701         bincompat5005="$undef"
3702         d_bincompat5005="$undef"
3703         ;;
3704 *)      $cat <<EOM
3705
3706 Perl 5.006 can be compiled for binary compatibility with 5.005.
3707 If you decide to do so, you will be able to continue using most
3708 of the extensions that were compiled for Perl 5.005.
3709
3710 EOM
3711         case "$bincompat5005$d_bincompat5005" in
3712         *"$undef"*) dflt=n ;;
3713         *) dflt=y ;;
3714         esac
3715         rp='Binary compatibility with Perl 5.005?'
3716         . ./myread
3717         case "$ans" in
3718         y*) val="$define" ;;
3719         *)  val="$undef" ;;
3720         esac
3721         set d_bincompat5005
3722         eval $setvar
3723         case "$d_bincompat5005" in
3724         "$define")
3725                 bincompat5005="$define"
3726                 ;;
3727         *)      bincompat5005="$undef"
3728                 d_bincompat5005="$undef"
3729                 ;;
3730         esac
3731         ;;
3732 esac
3733
3734
3735 : see if setuid scripts can be secure
3736 $cat <<EOM
3737
3738 Some kernels have a bug that prevents setuid #! scripts from being
3739 secure.  Some sites have disabled setuid #! scripts because of this.
3740
3741 First let's decide if your kernel supports secure setuid #! scripts.
3742 (If setuid #! scripts would be secure but have been disabled anyway,
3743 don't say that they are secure if asked.)
3744
3745 EOM
3746
3747 val="$undef"
3748 if $test -d /dev/fd; then
3749         echo "#!$ls" >reflect
3750         chmod +x,u+s reflect
3751         ./reflect >flect 2>&1
3752         if $contains "/dev/fd" flect >/dev/null; then
3753                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3754                 val="$define"
3755         else
3756                 $cat <<EOM
3757 If you are not sure if they are secure, I can check but I'll need a
3758 username and password different from the one you are using right now.
3759 If you don't have such a username or don't want me to test, simply
3760 enter 'none'.
3761
3762 EOM
3763                 rp='Other username to test security of setuid scripts with?'
3764                 dflt='none'
3765                 . ./myread
3766                 case "$ans" in
3767                 n|none)
3768                         case "$d_suidsafe" in
3769                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3770                                 dflt=n;;
3771                         "$undef")
3772                                 echo "Well, the $hint value is *not* secure." >&4
3773                                 dflt=n;;
3774                         *)      echo "Well, the $hint value *is* secure." >&4
3775                                 dflt=y;;
3776                         esac
3777                         ;;
3778                 *)
3779                         $rm -f reflect flect
3780                         echo "#!$ls" >reflect
3781                         chmod +x,u+s reflect
3782                         echo >flect
3783                         chmod a+w flect
3784                         echo '"su" will (probably) prompt you for '"$ans's password."
3785                         su $ans -c './reflect >flect'
3786                         if $contains "/dev/fd" flect >/dev/null; then
3787                                 echo "Okay, it looks like setuid scripts are secure." >&4
3788                                 dflt=y
3789                         else
3790                                 echo "I don't think setuid scripts are secure." >&4
3791                                 dflt=n
3792                         fi
3793                         ;;
3794                 esac
3795                 rp='Does your kernel have *secure* setuid scripts?'
3796                 . ./myread
3797                 case "$ans" in
3798                 [yY]*)  val="$define";;
3799                 *)      val="$undef";;
3800                 esac
3801         fi
3802 else
3803         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3804         echo "(That's for file descriptors, not floppy disks.)"
3805         val="$undef"
3806 fi
3807 set d_suidsafe
3808 eval $setvar
3809
3810 $rm -f reflect flect
3811
3812 : now see if they want to do setuid emulation
3813 echo " "
3814 val="$undef"
3815 case "$d_suidsafe" in
3816 "$define")
3817         val="$undef"
3818         echo "No need to emulate SUID scripts since they are secure here." >& 4
3819         ;;
3820 *)
3821         $cat <<EOM
3822 Some systems have disabled setuid scripts, especially systems where
3823 setuid scripts cannot be secure.  On systems where setuid scripts have
3824 been disabled, the setuid/setgid bits on scripts are currently
3825 useless.  It is possible for $package to detect those bits and emulate
3826 setuid/setgid in a secure fashion.  This emulation will only work if
3827 setuid scripts have been disabled in your kernel.
3828
3829 EOM
3830         case "$d_dosuid" in
3831         "$define") dflt=y ;;
3832         *) dflt=n ;;
3833         esac
3834         rp="Do you want to do setuid/setgid emulation?"
3835         . ./myread
3836         case "$ans" in
3837         [yY]*)  val="$define";;
3838         *)      val="$undef";;
3839         esac
3840         ;;
3841 esac
3842 set d_dosuid
3843 eval $setvar
3844
3845 : What should the include directory be ?
3846 echo " "
3847 $echo $n "Hmm...  $c"
3848 dflt='/usr/include'
3849 incpath=''
3850 mips_type=''
3851 if $test -f /bin/mips && /bin/mips; then
3852         echo "Looks like a MIPS system..."
3853         $cat >usr.c <<'EOCP'
3854 #ifdef SYSTYPE_BSD43
3855 /bsd43
3856 #endif
3857 EOCP
3858         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3859                 dflt='/bsd43/usr/include'
3860                 incpath='/bsd43'
3861                 mips_type='BSD 4.3'
3862         else
3863                 mips_type='System V'
3864         fi
3865         $rm -f usr.c usr.out
3866         echo "and you're compiling with the $mips_type compiler and libraries."
3867         xxx_prompt=y
3868         echo "exit 0" >mips
3869 else
3870         echo "Doesn't look like a MIPS system."
3871         xxx_prompt=n
3872         echo "exit 1" >mips
3873 fi
3874 chmod +x mips
3875 $eunicefix mips
3876 case "$usrinc" in
3877 '') ;;
3878 *) dflt="$usrinc";;
3879 esac
3880 case "$xxx_prompt" in
3881 y)      fn=d/
3882         echo " "
3883         rp='Where are the include files you want to use?'
3884         . ./getfile
3885         usrinc="$ans"
3886         ;;
3887 *)      usrinc="$dflt"
3888         ;;
3889 esac
3890
3891 : see how we invoke the C preprocessor
3892 echo " "
3893 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3894 cat <<'EOT' >testcpp.c
3895 #define ABC abc
3896 #define XYZ xyz
3897 ABC.XYZ
3898 EOT
3899 cd ..
3900 if test ! -f cppstdin; then
3901         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3902                 # AIX cc -E doesn't show the absolute headerfile
3903                 # locations but we'll cheat by using the -M flag.
3904                 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
3905         else
3906                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3907         fi
3908 else
3909         echo "Keeping your $hint cppstdin wrapper."
3910 fi
3911 chmod 755 cppstdin
3912 wrapper=`pwd`/cppstdin
3913 ok='false'
3914 cd UU
3915
3916 if $test "X$cppstdin" != "X" && \
3917         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3918         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3919 then
3920         echo "You used to use $cppstdin $cppminus so we'll use that again."
3921         case "$cpprun" in
3922         '') echo "But let's see if we can live without a wrapper..." ;;
3923         *)
3924                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3925                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3926                 then
3927                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3928                         ok='true'
3929                 else
3930                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3931                 fi
3932                 ;;
3933         esac
3934 else
3935         case "$cppstdin" in
3936         '') ;;
3937         *)
3938                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3939                 ;;
3940         esac
3941 fi
3942
3943 if $ok; then
3944         : nothing
3945 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3946         $cc -E <testcpp.c >testcpp.out 2>&1; \
3947         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3948         echo "Yup, it does."
3949         x_cpp="$cc -E"
3950         x_minus='';
3951 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3952         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3953         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3954         echo "Yup, it does."
3955         x_cpp="$cc -E"
3956         x_minus='-';
3957 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3958         $cc -P <testcpp.c >testcpp.out 2>&1; \
3959         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3960         echo "Yipee, that works!"
3961         x_cpp="$cc -P"
3962         x_minus='';
3963 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3964         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3965         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3966         echo "At long last!"
3967         x_cpp="$cc -P"
3968         x_minus='-';
3969 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3970         $cpp <testcpp.c >testcpp.out 2>&1; \
3971         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3972         echo "It works!"
3973         x_cpp="$cpp"
3974         x_minus='';
3975 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3976         $cpp - <testcpp.c >testcpp.out 2>&1; \
3977         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3978         echo "Hooray, it works!  I was beginning to wonder."
3979         x_cpp="$cpp"
3980         x_minus='-';
3981 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3982         $wrapper <testcpp.c >testcpp.out 2>&1; \
3983         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3984         x_cpp="$wrapper"
3985         x_minus=''
3986         echo "Eureka!"
3987 else
3988         dflt=''
3989         rp="No dice.  I can't find a C preprocessor.  Name one:"
3990         . ./myread
3991         x_cpp="$ans"
3992         x_minus=''
3993         $x_cpp <testcpp.c >testcpp.out 2>&1
3994         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3995                 echo "OK, that will do." >&4
3996         else
3997 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3998                 exit 1
3999         fi
4000 fi
4001
4002 case "$ok" in
4003 false)
4004         cppstdin="$x_cpp"
4005         cppminus="$x_minus"
4006         cpprun="$x_cpp"
4007         cpplast="$x_minus"
4008         set X $x_cpp
4009         shift
4010         case "$1" in
4011         "$cpp")
4012                 echo "Perhaps can we force $cc -E using a wrapper..."
4013                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4014                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4015                 then
4016                         echo "Yup, we can."
4017                         cppstdin="$wrapper"
4018                         cppminus='';
4019                 else
4020                         echo "Nope, we'll have to live without it..."
4021                 fi
4022                 ;;
4023         esac
4024         case "$cpprun" in
4025         "$wrapper")
4026                 cpprun=''
4027                 cpplast=''
4028                 ;;
4029         esac
4030         ;;
4031 esac
4032
4033 case "$cppstdin" in
4034 "$wrapper"|'cppstdin') ;;
4035 *) $rm -f $wrapper;;
4036 esac
4037 $rm -f testcpp.c testcpp.out
4038
4039 : Set private lib path
4040 case "$plibpth" in
4041 '') if ./mips; then
4042                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4043         fi;;
4044 esac
4045 case "$libpth" in
4046 ' ') dlist='';;
4047 '') dlist="$loclibpth $plibpth $glibpth";;
4048 *) dlist="$libpth";;
4049 esac
4050
4051 : Now check and see which directories actually exist, avoiding duplicates
4052 libpth=''
4053 for xxx in $dlist
4054 do
4055     if $test -d $xxx; then
4056                 case " $libpth " in
4057                 *" $xxx "*) ;;
4058                 *) libpth="$libpth $xxx";;
4059                 esac
4060     fi
4061 done
4062 $cat <<'EOM'
4063
4064 Some systems have incompatible or broken versions of libraries.  Among
4065 the directories listed in the question below, please remove any you
4066 know not to be holding relevant libraries, and add any that are needed.
4067 Say "none" for none.
4068
4069 EOM
4070 case "$libpth" in
4071 '') dflt='none';;
4072 *)
4073         set X $libpth
4074         shift
4075         dflt=${1+"$@"}
4076         ;;
4077 esac
4078 rp="Directories to use for library searches?"
4079 . ./myread
4080 case "$ans" in
4081 none) libpth=' ';;
4082 *) libpth="$ans";;
4083 esac
4084
4085 : compute shared library extension
4086 case "$so" in
4087 '')
4088         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4089                 dflt='sl'
4090         else
4091                 dflt='so'
4092         fi
4093         ;;
4094 *) dflt="$so";;
4095 esac
4096 $cat <<EOM
4097
4098 On some systems, shared libraries may be available.  Answer 'none' if
4099 you want to suppress searching of shared libraries for the remaining
4100 of this configuration.
4101
4102 EOM
4103 rp='What is the file extension used for shared libraries?'
4104 . ./myread
4105 so="$ans"
4106
4107 : Define several unixisms.
4108 : Hints files or command line option can be used to override them.
4109 : The convoluted testing is in case hints files set either the old
4110 : or the new name.
4111 case "$_exe" in
4112 '')     case "$exe_ext" in
4113     '') ;;
4114         *)      _exe="$exe_ext" ;;
4115         esac
4116         ;;
4117 esac
4118 case "$_a" in
4119 '')     case "$lib_ext" in
4120     '') _a='.a';;
4121         *)      _a="$lib_ext" ;;
4122         esac
4123         ;;
4124 esac
4125 case "$_o" in
4126 '') case "$obj_ext" in
4127         '')     _o='.o';;
4128         *)      _o="$obj_ext";;
4129         esac
4130         ;;
4131 esac
4132 case "$p_" in
4133 '') case "$path_sep" in
4134         '')     p_=':';;
4135         *)      p_="$path_sep";;
4136         esac
4137         ;;
4138 esac
4139 exe_ext=$_exe
4140 lib_ext=$_a
4141 obj_ext=$_o
4142 path_sep=$p_
4143
4144 : Which makefile gets called first.  This is used by make depend.
4145 case "$firstmakefile" in
4146 '') firstmakefile='makefile';;
4147 esac
4148
4149 cat <<EOM
4150
4151 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4152 Configure must be run with -Dusesocks.
4153
4154 Normally you do not need this and you should answer no.
4155
4156 EOM
4157 case "$usesocks" in
4158 $define|true|[yY]*)     dflt='y';;
4159 *) dflt='n';;
4160 esac
4161 rp='Build Perl for SOCKS?'
4162 . ./myread
4163 case "$ans" in
4164 y|Y)    val="$define" ;;     
4165 *)      val="$undef" ;;
4166 esac
4167 set usesocks
4168 eval $setvar
4169
4170 : Looking for optional libraries
4171 echo " "
4172 echo "Checking for optional libraries..." >&4
4173 case "$libs" in
4174 ' '|'') dflt='';;
4175 *) dflt="$libs";;
4176 esac
4177 case "$libswanted" in
4178 '') libswanted='c_s';;
4179 esac
4180 case "$usesocks" in
4181 $define)
4182         libswanted="$libswanted socks5 socks5_sh"
4183         ;;
4184 esac
4185 for thislib in $libswanted; do
4186         
4187         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
4188                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4189                 echo "Found -l$thislib (shared)."
4190                 case " $dflt " in
4191                 *"-l$thislib "*);;
4192                 *) dflt="$dflt -l$thislib";;
4193                 esac
4194         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
4195                 echo "Found -l$thislib (shared)."
4196                 case " $dflt " in
4197                 *"-l$thislib "*);;
4198                 *) dflt="$dflt -l$thislib";;
4199                 esac
4200         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
4201                 echo "Found -l$thislib."
4202                 case " $dflt " in
4203                 *"-l$thislib "*);;
4204                 *) dflt="$dflt -l$thislib";;
4205                 esac
4206         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
4207                 echo "Found -l$thislib."
4208                 case " $dflt " in
4209                 *"-l$thislib "*);;
4210                 *) dflt="$dflt -l$thislib";;
4211                 esac
4212         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
4213                 echo "Found -l${thislib}_s."
4214                 case " $dflt " in
4215                 *"-l$thislib "*);;
4216                 *) dflt="$dflt -l${thislib}_s";;
4217                 esac
4218         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
4219                 echo "Found -l$thislib."
4220                 case " $dflt " in
4221                 *"-l$thislib "*);;
4222                 *) dflt="$dflt -l$thislib";;
4223                 esac
4224         else
4225                 echo "No -l$thislib."
4226         fi
4227 done
4228 set X $dflt
4229 shift
4230 dflt="$*"
4231 case "$libs" in
4232 '') dflt="$dflt";;
4233 *) dflt="$libs";;
4234 esac
4235 case "$dflt" in
4236 ' '|'') dflt='none';;
4237 esac
4238
4239 $cat <<EOM
4240
4241 In order to compile $package on your machine, a number of libraries
4242 are usually needed.  Include any other special libraries here as well.
4243 Say "none" for none.  The default list is almost always right.
4244 EOM
4245
4246 echo " "
4247 rp="What libraries to use?"
4248 . ./myread
4249 case "$ans" in
4250 none) libs=' ';;
4251 *) libs="$ans";;
4252 esac
4253
4254 : determine optimization, if desired, or use for debug flag also
4255 case "$optimize" in
4256 ' '|$undef) dflt='none';;
4257 '') dflt='-O';;
4258 *) dflt="$optimize";;
4259 esac
4260 $cat <<EOH
4261
4262 By default, $package compiles with the -O flag to use the optimizer.
4263 Alternately, you might want to use the symbolic debugger, which uses
4264 the -g flag (on traditional Unix systems).  Either flag can be
4265 specified here.  To use neither flag, specify the word "none".
4266
4267 EOH
4268 rp="What optimizer/debugger flag should be used?"
4269 . ./myread
4270 optimize="$ans"
4271 case "$optimize" in
4272 'none') optimize=" ";;
4273 esac
4274
4275 dflt=''
4276 : We will not override a previous value, but we might want to
4277 : augment a hint file
4278 case "$hint" in
4279 default|recommended)
4280         case "$gccversion" in
4281         1*) dflt='-fpcc-struct-return' ;;
4282         esac
4283         case "$optimize" in
4284         *-g*) dflt="$dflt -DDEBUGGING";;
4285         esac
4286         case "$gccversion" in
4287         2*) if test -d /etc/conf/kconfig.d &&
4288                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4289                 then
4290                         dflt="$dflt -posix"
4291                 fi
4292                 ;;
4293         esac
4294         case "$gccversion" in
4295         1*) ;;
4296         2.[0-8]*) ;;
4297         ?*)     echo " "
4298                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4299                 echo 'int main(void) { return 0; }' > gcctest.c
4300                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4301                         echo "Yes, it does." 2>&1
4302                         case "$ccflags" in
4303                         *strict-aliasing*) 
4304                                 echo "Leaving current flags $ccflags alone." 2>&1
4305                                 ;;
4306                         *) dflt="$dflt -fno-strict-aliasing" ;;
4307                         esac
4308                 else
4309                         echo "Nope, it doesn't, but that's ok." 2>&1
4310                 fi
4311                 ;;
4312         esac
4313         ;;
4314 esac
4315
4316 case "$mips_type" in
4317 *BSD*|'') inclwanted="$locincpth $usrinc";;
4318 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4319 esac
4320 for thisincl in $inclwanted; do
4321         if $test -d $thisincl; then
4322                 if $test x$thisincl != x$usrinc; then
4323                         case "$dflt" in
4324                         *$thisincl*);;
4325                         *) dflt="$dflt -I$thisincl";;
4326                         esac
4327                 fi
4328         fi
4329 done
4330
4331 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4332         xxx=true;
4333 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4334         xxx=true;
4335 else
4336         xxx=false;
4337 fi;
4338 if $xxx; then
4339         case "$dflt" in
4340         *$2*);;
4341         *) dflt="$dflt -D$2";;
4342         esac;
4343 fi'
4344
4345 set signal.h LANGUAGE_C; eval $inctest
4346
4347 case "$usesocks" in
4348 $define)
4349         ccflags="$ccflags -DSOCKS"
4350         ;;
4351 esac
4352
4353 case "$hint" in
4354 default|recommended) dflt="$ccflags $dflt" ;;
4355 *) dflt="$ccflags";;
4356 esac
4357
4358 case "$dflt" in
4359 ''|' ') dflt=none;;
4360 esac
4361 $cat <<EOH
4362
4363 Your C compiler may want other flags.  For this question you should include
4364 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4365 but you should NOT include libraries or ld flags like -lwhatever.  If you
4366 want $package to honor its debug switch, you should include -DDEBUGGING here.
4367 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4368
4369 To use no flags, specify the word "none".
4370
4371 EOH
4372 set X $dflt
4373 shift
4374 dflt=${1+"$@"}
4375 rp="Any additional cc flags?"
4376 . ./myread
4377 case "$ans" in
4378 none) ccflags='';;
4379 *) ccflags="$ans";;
4380 esac
4381
4382 : the following weeds options from ccflags that are of no interest to cpp
4383 cppflags="$ccflags"
4384 case "$gccversion" in
4385 1*) cppflags="$cppflags -D__GNUC__"
4386 esac
4387 case "$mips_type" in
4388 '');;
4389 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4390 esac
4391 case "$cppflags" in
4392 '');;
4393 *)
4394         echo " "
4395         echo "Let me guess what the preprocessor flags are..." >&4
4396         set X $cppflags
4397         shift
4398         cppflags=''
4399         $cat >cpp.c <<'EOM'
4400 #define BLURFL foo
4401
4402 BLURFL xx LFRULB
4403 EOM
4404         previous=''
4405         for flag in $*
4406         do
4407                 case "$flag" in
4408                 -*) ftry="$flag";;
4409                 *) ftry="$previous $flag";;
4410                 esac
4411                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4412                         >cpp1.out 2>/dev/null && \
4413                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4414                         >cpp2.out 2>/dev/null && \
4415                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4416                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4417                 then
4418                         cppflags="$cppflags $ftry"
4419                         previous=''
4420                 else
4421                         previous="$flag"
4422                 fi
4423         done
4424         set X $cppflags
4425         shift
4426         cppflags=${1+"$@"}
4427         case "$cppflags" in
4428         *-*)  echo "They appear to be: $cppflags";;
4429         esac
4430         $rm -f cpp.c cpp?.out
4431         ;;
4432 esac
4433
4434 : flags used in final linking phase
4435 case "$ldflags" in
4436 '') if ./venix; then
4437                 dflt='-i -z'
4438         else
4439                 dflt=''
4440         fi
4441         case "$ccflags" in
4442         *-posix*) dflt="$dflt -posix" ;;
4443         esac
4444         ;;
4445 *) dflt="$ldflags";;
4446 esac
4447
4448 : Try to guess additional flags to pick up local libraries.
4449 for thislibdir in $libpth; do
4450         case " $loclibpth " in
4451         *" $thislibdir "*)
4452                 case "$dflt " in 
4453                 *"-L$thislibdir "*) ;;
4454                 *)  dflt="$dflt -L$thislibdir" ;;
4455                 esac
4456                 ;;
4457         esac
4458 done
4459
4460 case "$dflt" in
4461 '') dflt='none' ;;
4462 esac
4463
4464 $cat <<EOH
4465
4466 Your C linker may need flags.  For this question you should
4467 include -L/whatever and any other flags used by the C linker, but you
4468 should NOT include libraries like -lwhatever.
4469
4470 Make sure you include the appropriate -L/path flags if your C linker
4471 does not normally search all of the directories you specified above,
4472 namely
4473         $libpth
4474 To use no flags, specify the word "none".
4475
4476 EOH
4477
4478 rp="Any additional ld flags (NOT including libraries)?"
4479 . ./myread
4480 case "$ans" in
4481 none) ldflags='';;
4482 *) ldflags="$ans";;
4483 esac
4484 rmlist="$rmlist pdp11"
4485
4486 : coherency check
4487 echo " "
4488 echo "Checking your choice of C compiler and flags for coherency..." >&4
4489 $cat > try.c <<'EOF'
4490 #include <stdio.h>
4491 int main() { printf("Ok\n"); exit(0); }
4492 EOF
4493 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4494 shift
4495 $cat >try.msg <<'EOM'
4496 I've tried to compile and run the following simple program:
4497
4498 EOM
4499 $cat try.c >> try.msg
4500
4501 $cat >> try.msg <<EOM
4502
4503 I used the command:
4504
4505         $*
4506         ./try
4507
4508 and I got the following output:
4509
4510 EOM
4511 dflt=y
4512 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4513         if sh -c './try' >>try.msg 2>&1; then
4514                 xxx=`./try`
4515                 case "$xxx" in
4516                 "Ok") dflt=n ;;
4517                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4518                         case " $libs " in
4519                         *" -lsfio "*)
4520                                 cat >> try.msg <<'EOQS'
4521 If $libs contains -lsfio, and sfio is mis-configured, then it
4522 sometimes (apparently) runs and exits with a 0 status, but with no
4523 output!  It may have to do with sfio's use of _exit vs. exit.
4524
4525 EOQS
4526                                 rp="You have a big problem.  Shall I abort Configure"
4527                                 dflt=y
4528                                 ;;
4529                         esac
4530                         ;;
4531                 esac
4532         else
4533                 echo "The program compiled OK, but exited with status $?." >>try.msg
4534                 rp="You have a problem.  Shall I abort Configure"
4535                 dflt=y
4536         fi
4537 else
4538         echo "I can't compile the test program." >>try.msg
4539         rp="You have a BIG problem.  Shall I abort Configure"
4540         dflt=y
4541 fi
4542 case "$dflt" in
4543 y)
4544         $cat try.msg >&4
4545         case "$knowitall" in
4546         '')
4547                 echo "(The supplied flags or libraries might be incorrect.)"
4548                 ;;
4549         *) dflt=n;;
4550         esac
4551         echo " "
4552         . ./myread
4553         case "$ans" in
4554         n*|N*) ;;
4555         *)      echo "Ok.  Stopping Configure." >&4
4556                 exit 1
4557                 ;;
4558         esac
4559         ;;
4560 n) echo "OK, that should do.";;
4561 esac
4562 $rm -f try try.* core
4563
4564 : determine filename position in cpp output
4565 echo " "
4566 echo "Computing filename position in cpp output for #include directives..." >&4
4567 echo '#include <stdio.h>' > foo.c
4568 $cat >fieldn <<EOF
4569 $startsh
4570 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4571 $grep '^[       ]*#.*stdio\.h' | \
4572 while read cline; do
4573         pos=1
4574         set \$cline
4575         while $test \$# -gt 0; do
4576                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4577                         echo "\$pos"
4578                         exit 0
4579                 fi
4580                 shift
4581                 pos=\`expr \$pos + 1\`
4582         done
4583 done
4584 EOF
4585 chmod +x fieldn
4586 fieldn=`./fieldn`
4587 $rm -f foo.c fieldn
4588 case $fieldn in
4589 '') pos='???';;
4590 1) pos=first;;
4591 2) pos=second;;
4592 3) pos=third;;
4593 *) pos="${fieldn}th";;
4594 esac
4595 echo "Your cpp writes the filename in the $pos field of the line."
4596
4597 : locate header file
4598 $cat >findhdr <<EOF
4599 $startsh
4600 wanted=\$1
4601 name=''
4602 for usrincdir in $usrinc
4603 do
4604         if test -f \$usrincdir/\$wanted; then
4605                 echo "\$usrincdir/\$wanted"
4606                 exit 0
4607         fi
4608 done
4609 awkprg='{ print \$$fieldn }'
4610 echo "#include <\$wanted>" > foo\$\$.c
4611 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4612 $grep "^[       ]*#.*\$wanted" | \
4613 while read cline; do
4614         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4615         case "\$name" in
4616         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4617         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4618         *) exit 2;;
4619         esac;
4620 done;
4621 #
4622 # status = 0: grep returned 0 lines, case statement not executed
4623 # status = 1: headerfile found
4624 # status = 2: while loop executed, no headerfile found
4625 #
4626 status=\$?
4627 $rm -f foo\$\$.c;
4628 if test \$status -eq 1; then
4629         exit 0;
4630 fi
4631 exit 1
4632 EOF
4633 chmod +x findhdr
4634
4635 : define an alternate in-header-list? function
4636 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4637 cont=true; xxf="echo \"<\$1> found.\" >&4";
4638 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4639 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4640 esac;
4641 case $# in 4) instead=instead;; *) instead="at last";; esac;
4642 while $test "$cont"; do
4643         xxx=`./findhdr $1`
4644         var=$2; eval "was=\$$2";
4645         if $test "$xxx" && $test -r "$xxx";
4646         then eval $xxf;
4647         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4648                 cont="";
4649         else eval $xxnf;
4650         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4651         set $yyy; shift; shift; yyy=$@;
4652         case $# in 0) cont="";;
4653         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4654                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4655         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4656                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4657         esac;
4658 done;
4659 while $test "$yyy";
4660 do set $yyy; var=$2; eval "was=\$$2";
4661         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4662         set $yyy; shift; shift; yyy=$@;
4663 done'
4664
4665 : see if this is a malloc.h system
4666 set malloc.h i_malloc
4667 eval $inhdr
4668
4669 : see if stdlib is available
4670 set stdlib.h i_stdlib
4671 eval $inhdr
4672
4673 : determine which malloc to compile in
4674 echo " "
4675 case "$usemymalloc" in
4676 ''|[yY]*|true|$define)  dflt='y' ;;
4677 *)      dflt='n' ;;
4678 esac
4679 rp="Do you wish to attempt to use the malloc that comes with $package?"
4680 . ./myread
4681 usemymalloc="$ans"
4682 case "$ans" in
4683 y*|true)
4684         usemymalloc='y'
4685         mallocsrc='malloc.c'
4686         mallocobj="malloc$_o"
4687         d_mymalloc="$define"
4688         case "$libs" in
4689         *-lmalloc*)
4690                 : Remove malloc from list of libraries to use
4691                 echo "Removing unneeded -lmalloc from library list" >&4
4692                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4693                 shift
4694                 libs="$*"
4695                 echo "libs = $libs" >&4
4696                 ;;
4697         esac
4698         ;;
4699 *)
4700         usemymalloc='n'
4701         mallocsrc=''
4702         mallocobj=''
4703         d_mymalloc="$undef"
4704         ;;
4705 esac
4706
4707 : compute the return types of malloc and free
4708 echo " "
4709 $cat >malloc.c <<END
4710 #$i_malloc I_MALLOC
4711 #$i_stdlib I_STDLIB
4712 #include <stdio.h>
4713 #include <sys/types.h>
4714 #ifdef I_MALLOC
4715 #include <malloc.h>
4716 #endif
4717 #ifdef I_STDLIB
4718 #include <stdlib.h>
4719 #endif
4720 #ifdef TRY_MALLOC
4721 void *malloc();
4722 #endif
4723 #ifdef TRY_FREE
4724 void free();
4725 #endif
4726 END
4727 case "$malloctype" in
4728 '')
4729         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4730                 malloctype='void *'
4731         else
4732                 malloctype='char *'
4733         fi
4734         ;;
4735 esac
4736 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4737
4738 case "$freetype" in
4739 '')
4740         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4741                 freetype='void'
4742         else
4743                 freetype='int'
4744         fi
4745         ;;
4746 esac
4747 echo "Your system uses $freetype free(), it would seem." >&4
4748 $rm -f malloc.[co]
4749 $cat <<EOM
4750
4751 The installation process will also create a directory for
4752 vendor-supplied add-ons.  Vendors who supply perl with their system
4753 may find it convenient to place all vendor-supplied files in this
4754 directory rather than in the main distribution directory.  This will
4755 ease upgrades between binary-compatible maintenance versions of perl.
4756
4757 Of course you may also use these directories in whatever way you see
4758 fit.  For example, you might use them to access modules shared over a
4759 company-wide network.
4760
4761 The default answer should be fine for most people.
4762 This causes further questions about vendor add-ons to be skipped
4763 and no vendor-specific directories will be configured for perl.
4764
4765 EOM
4766 rp='Do you want to configure vendor-specific add-on directories?'
4767 case "$usevendorprefix" in
4768 define|true|[yY]*) dflt=y ;;
4769 *) dflt=n ;;
4770 esac
4771 . ./myread
4772 case "$ans" in
4773 [yY]*)  fn=d~+
4774         rp='Installation prefix to use for vendor-supplied add-ons?'
4775         case "$vendorprefix" in
4776         '') dflt='' ;;
4777         *)  dflt=$vendorprefix ;;
4778         esac
4779         . ./getfile
4780         oldvendorprefix=''
4781         case "$vendorprefix" in
4782         '') ;;
4783         *)      case "$ans" in
4784                 "$prefix") ;;
4785                 *) oldvendorprefix="$prefix";;
4786                 esac
4787                 ;;
4788         esac
4789         usevendorprefix="$define"
4790         vendorprefix="$ans"
4791         vendorprefixexp="$ansexp"
4792         ;;
4793 *)      usevendorprefix="$undef"
4794         vendorprefix=''
4795         vendorprefixexp=''
4796         ;;
4797 esac
4798
4799 case "$vendorprefix" in
4800 '')     d_vendorlib="$undef"
4801         vendorlib=''
4802         vendorlibexp=''
4803         ;;
4804 *)      d_vendorlib="$define"
4805         : determine where vendor-supplied modules go.
4806         : Usual default is /usr/local/lib/perl5/vendor_perl
4807         prog=`echo $package | $sed 's/-*[0-9.]*$//'`
4808         case "$installstyle" in
4809         *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog ;;
4810         *)           dflt=$vendorprefix/lib/vendor_$prog ;;
4811         esac
4812         fn=d~+
4813         rp='Pathname for the vendor-supplied library files?'
4814         . ./getfile
4815         vendorlib="$ans"
4816         vendorlibexp="$ansexp"
4817         : Change installation prefix, if necessary.
4818         if $test X"$prefix" != X"$installprefix"; then
4819                 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
4820         else
4821                 installvendorlib="$vendorlibexp"
4822         fi
4823         ;;
4824 esac
4825
4826 : Cruising for prototypes
4827 echo " "
4828 echo "Checking out function prototypes..." >&4
4829 $cat >prototype.c <<'EOCP'
4830 int main(int argc, char *argv[]) {
4831         exit(0);}
4832 EOCP
4833 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4834         echo "Your C compiler appears to support function prototypes."
4835         val="$define"
4836 else
4837         echo "Your C compiler doesn't seem to understand function prototypes."
4838         val="$undef"
4839 fi
4840 set prototype
4841 eval $setvar
4842 $rm -f prototype*
4843
4844 case "$prototype" in
4845 "$define") ;;
4846 *)      ansi2knr='ansi2knr'
4847         echo " "
4848         cat <<EOM >&4
4849
4850 $me:  FATAL ERROR:
4851 This version of $package can only be compiled by a compiler that 
4852 understands function prototypes.  Unfortunately, your C compiler 
4853         $cc $ccflags
4854 doesn't seem to understand them.  Sorry about that.
4855
4856 If GNU cc is available for your system, perhaps you could try that instead.  
4857
4858 Eventually, we hope to support building Perl with pre-ANSI compilers.
4859 If you would like to help in that effort, please contact <perlbug@perl.org>.
4860
4861 Aborting Configure now.
4862 EOM
4863         exit 2
4864         ;;
4865 esac
4866
4867 : determine where public executables go
4868 echo " "
4869 set dflt bin bin
4870 eval $prefixit
4871 fn=d~
4872 rp='Pathname where the public executables will reside?'
4873 . ./getfile
4874 if $test "X$ansexp" != "X$binexp"; then
4875         installbin=''
4876 fi
4877 bin="$ans"
4878 binexp="$ansexp"
4879 : Change installation prefix, if necessary.
4880 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
4881 if $test X"$prefix" != X"$installprefix"; then
4882         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
4883 else
4884         installbin="$binexp"
4885 fi
4886
4887 : determine whether to install perl also as /usr/bin/perl
4888
4889 echo " "
4890 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4891         $cat <<EOM
4892 Many scripts expect to perl to be installed as /usr/bin/perl.
4893 I can install the perl you are about to compile also as /usr/bin/perl
4894 (in addition to $installbin/perl).
4895 EOM
4896         case "$installusrbinperl" in
4897         "$undef"|[nN]*) dflt='n';;
4898         *)              dflt='y';;
4899         esac
4900         rp="Do you want to install perl as /usr/bin/perl?"
4901         . ./myread
4902         case "$ans" in
4903         [yY]*)  val="$define";;
4904         *)      val="$undef" ;;
4905         esac
4906 else
4907         val="$undef"
4908 fi
4909 set installusrbinperl
4910 eval $setvar
4911
4912 : define a shorthand compile call
4913 compile='
4914 mc_file=$1;
4915 shift;
4916 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4917 : define a shorthand compile call for compilations that should be ok.
4918 compile_ok='
4919 mc_file=$1;
4920 shift;
4921 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4922
4923 echo " "
4924 echo "Checking for GNU C Library..." >&4
4925 cat >gnulibc.c <<EOM
4926 #include <stdio.h>
4927 int main()
4928 {
4929 #ifdef __GLIBC__
4930     exit(0);
4931 #else
4932     exit(1);
4933 #endif
4934 }
4935 EOM
4936 set gnulibc
4937 if eval $compile_ok && ./gnulibc; then
4938         val="$define"
4939         echo "You are using the GNU C Library"
4940 else
4941         val="$undef"
4942         echo "You are not using the GNU C Library"
4943 fi
4944 $rm -f gnulibc*
4945 set d_gnulibc
4946 eval $setvar
4947
4948 : see if nm is to be used to determine whether a symbol is defined or not
4949 case "$usenm" in
4950 '')
4951         dflt=''
4952         case "$d_gnulibc" in
4953         "$define")
4954                 echo " "
4955                 echo "nm probably won't work on the GNU C Library." >&4
4956                 dflt=n
4957                 ;;
4958         esac
4959         case "$dflt" in
4960         '') 
4961                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4962                         echo " "
4963                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4964                         echo "'nm' won't be sufficient on this sytem." >&4
4965                         dflt=n
4966                 fi
4967                 ;;
4968         esac
4969         case "$dflt" in
4970         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4971                 if $test $dflt -gt 20; then
4972                         dflt=y
4973                 else
4974                         dflt=n
4975                 fi
4976                 ;;
4977         esac
4978         ;;
4979 *)
4980         case "$usenm" in
4981         true|$define) dflt=y;;
4982         *) dflt=n;;
4983         esac
4984         ;;
4985 esac
4986 $cat <<EOM
4987
4988 I can use $nm to extract the symbols from your C libraries. This
4989 is a time consuming task which may generate huge output on the disk (up
4990 to 3 megabytes) but that should make the symbols extraction faster. The
4991 alternative is to skip the 'nm' extraction part and to compile a small
4992 test program instead to determine whether each symbol is present. If
4993 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4994 this may be the best solution.
4995
4996 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4997
4998 EOM
4999 rp="Shall I use $nm to extract C symbols from the libraries?"
5000 . ./myread
5001 case "$ans" in
5002 [Nn]*) usenm=false;;
5003 *) usenm=true;;
5004 esac
5005
5006 runnm=$usenm
5007 case "$reuseval" in
5008 true) runnm=false;;
5009 esac
5010
5011 : nm options which may be necessary
5012 case "$nm_opt" in
5013 '') if $test -f /mach_boot; then
5014                 nm_opt=''       # Mach
5015         elif $test -d /usr/ccs/lib; then
5016                 nm_opt='-p'     # Solaris (and SunOS?)
5017         elif $test -f /dgux; then
5018                 nm_opt='-p'     # DG-UX
5019         elif $test -f /lib64/rld; then
5020                 nm_opt='-p'     # 64-bit Irix
5021         else
5022                 nm_opt=''
5023         fi;;
5024 esac
5025
5026 : nm options which may be necessary for shared libraries but illegal
5027 : for archive libraries.  Thank you, Linux.
5028 case "$nm_so_opt" in
5029 '')     case "$myuname" in
5030         *linux*)
5031                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5032                         nm_so_opt='--dynamic'
5033                 fi
5034                 ;;
5035         esac
5036         ;;
5037 esac
5038
5039 case "$runnm" in
5040 true)
5041 : get list of predefined functions in a handy place
5042 echo " "
5043 case "$libc" in
5044 '') libc=unknown
5045         case "$libs" in
5046         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5047         esac
5048         ;;
5049 esac
5050 libnames='';
5051 case "$libs" in
5052 '') ;;
5053 *)  for thislib in $libs; do
5054         case "$thislib" in
5055         -lc|-lc_s)
5056                 : Handle C library specially below.
5057                 ;;
5058         -l*)
5059                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5060                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5061                         :
5062                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5063                         :
5064                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5065                         :
5066                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5067                         :
5068                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5069                         :
5070                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5071                         :
5072                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5073                         :
5074                 else
5075                         try=''
5076                 fi
5077                 libnames="$libnames $try"
5078                 ;;
5079         *) libnames="$libnames $thislib" ;;
5080         esac
5081         done
5082         ;;
5083 esac
5084 xxx=normal
5085 case "$libc" in
5086 unknown)
5087         set /lib/libc.$so
5088         for xxx in $libpth; do
5089                 $test -r $1 || set $xxx/libc.$so
5090                 : The messy sed command sorts on library version numbers.
5091                 $test -r $1 || \
5092                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5093                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5094                                 h
5095                                 s/[0-9][0-9]*/0000&/g
5096                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5097                                 G
5098                                 s/\n/ /' | \
5099                          sort | $sed -e 's/^.* //'`
5100                 eval set \$$#
5101         done
5102         $test -r $1 || set /usr/ccs/lib/libc.$so
5103         $test -r $1 || set /lib/libsys_s$_a
5104         ;;
5105 *)
5106         set blurfl
5107         ;;
5108 esac
5109 if $test -r "$1"; then
5110         echo "Your (shared) C library seems to be in $1."
5111         libc="$1"
5112 elif $test -r /lib/libc && $test -r /lib/clib; then
5113         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5114         xxx=apollo
5115         libc='/lib/clib /lib/libc'
5116         if $test -r /lib/syslib; then
5117                 echo "(Your math library is in /lib/syslib.)"
5118                 libc="$libc /lib/syslib"
5119         fi
5120 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5121         echo "Your C library seems to be in $libc, as you said before."
5122 elif $test -r $incpath/usr/lib/libc$_a; then
5123         libc=$incpath/usr/lib/libc$_a;
5124         echo "Your C library seems to be in $libc.  That's fine."
5125 elif $test -r /lib/libc$_a; then
5126         libc=/lib/libc$_a;
5127         echo "Your C library seems to be in $libc.  You're normal."
5128 else
5129         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5130                 :
5131         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5132                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5133         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5134                 :
5135         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5136                 :
5137         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5138                 :
5139         else
5140                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5141         fi
5142         if $test -r "$tans"; then
5143                 echo "Your C library seems to be in $tans, of all places."
5144                 libc=$tans
5145         else
5146                 libc='blurfl'
5147         fi
5148 fi
5149 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5150         dflt="$libc"
5151         cat <<EOM
5152
5153 If the guess above is wrong (which it might be if you're using a strange
5154 compiler, or your machine supports multiple models), you can override it here.
5155
5156 EOM
5157 else
5158         dflt=''
5159         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5160         cat >&4 <<EOM
5161 I can't seem to find your C library.  I've looked in the following places:
5162
5163 EOM
5164         $sed 's/^/      /' libpath
5165         cat <<EOM
5166
5167 None of these seems to contain your C library. I need to get its name...
5168
5169 EOM
5170 fi
5171 fn=f
5172 rp='Where is your C library?'
5173 . ./getfile
5174 libc="$ans"
5175
5176 echo " "
5177 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5178 set X `cat libnames`
5179 shift
5180 xxx=files
5181 case $# in 1) xxx=file; esac
5182 echo "Extracting names from the following $xxx for later perusal:" >&4
5183 echo " "
5184 $sed 's/^/      /' libnames >&4
5185 echo " "
5186 $echo $n "This may take a while...$c" >&4
5187
5188 for file in $*; do
5189         case $file in
5190         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5191         *) $nm $nm_opt $file 2>/dev/null;;
5192         esac
5193 done >libc.tmp
5194
5195 $echo $n ".$c"
5196 $grep fprintf libc.tmp > libc.ptf
5197 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5198 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5199 xxx='[ADTSIW]'
5200 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5201         eval $xscan;\
5202         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5203                 eval $xrun
5204 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5205         eval $xscan;\
5206         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5207                 eval $xrun
5208 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5209         eval $xscan;\
5210         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5211                 eval $xrun
5212 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5213         eval $xscan;\
5214         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5215                 eval $xrun
5216 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5217         eval $xscan;\
5218         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5219                 eval $xrun
5220 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5221         eval $xscan;\
5222         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5223                 eval $xrun
5224 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5225                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5226         eval $xscan;\
5227         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5228                 eval $xrun
5229 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5230         eval $xscan;\
5231         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5232                 eval $xrun
5233 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5234         eval $xscan;\
5235         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5236                 eval $xrun
5237 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5238         eval $xscan;\
5239         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5240                 eval $xrun
5241 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5242         eval $xscan;\
5243         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5244                 eval $xrun
5245 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5246         eval $xscan;\
5247         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5248                 eval $xrun
5249 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5250         eval $xscan;\
5251         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5252                 eval $xrun
5253 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5254         eval $xscan;\
5255         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5256                 eval $xrun
5257 else
5258         $nm -p $* 2>/dev/null >libc.tmp
5259         $grep fprintf libc.tmp > libc.ptf
5260         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5261                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5262         then
5263                 nm_opt='-p'
5264                 eval $xrun
5265         else
5266                 echo " "
5267                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5268                 com=''
5269                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5270                         for thisname in $libnames $libc; do
5271                                 $ar t $thisname >>libc.tmp
5272                         done
5273                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5274                         echo "Ok." >&4
5275                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5276                         # Repeat libc to extract forwarders to DLL entries too
5277                         for thisname in $libnames $libc; do
5278                                 $ar tv $thisname >>libc.tmp
5279                                 # Revision 50 of EMX has bug in $ar.
5280                                 # it will not extract forwarders to DLL entries
5281                                 # Use emximp which will extract exactly them.
5282                                 emximp -o tmp.imp $thisname \
5283                                     2>/dev/null && \
5284                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5285                                     < tmp.imp >>libc.tmp
5286                                 $rm tmp.imp
5287                         done
5288                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5289                         echo "Ok." >&4
5290                 else
5291                         echo "$ar didn't seem to work right." >&4
5292                         echo "Maybe this is a Cray...trying bld instead..." >&4
5293                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5294                         then
5295                                 for thisname in $libnames; do
5296                                         bld t $libnames | \
5297                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5298                                         $ar t $thisname >>libc.tmp
5299                                 done
5300                                 echo "Ok." >&4
5301                         else
5302                                 echo "That didn't work either.  Giving up." >&4
5303                                 exit 1
5304                         fi
5305                 fi
5306         fi
5307 fi
5308 nm_extract="$com"
5309 if $test -f /lib/syscalls.exp; then
5310         echo " "
5311         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5312         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5313 fi
5314 ;;
5315 esac
5316 $rm -f libnames libpath
5317
5318 : see if dld is available
5319 set dld.h i_dld
5320 eval $inhdr
5321
5322 : is a C symbol defined?
5323 csym='tlook=$1;
5324 case "$3" in
5325 -v) tf=libc.tmp; tc=""; tdc="";;
5326 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5327 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5328 esac;
5329 tx=yes;
5330 case "$reuseval-$4" in
5331 true-) ;;
5332 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5333 esac;
5334 case "$tx" in
5335 yes)
5336         case "$runnm" in
5337         true)
5338                 if $contains $tlook $tf >/dev/null 2>&1;
5339                 then tval=true;
5340                 else tval=false;
5341                 fi;;
5342         *)
5343                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5344                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5345                 then tval=true;
5346                 else tval=false;
5347                 fi;
5348                 $rm -f t t.c;;
5349         esac;;
5350 *)
5351         case "$tval" in
5352         $define) tval=true;;
5353         *) tval=false;;
5354         esac;;
5355 esac;
5356 eval "$2=$tval"'
5357
5358 : define an is-in-libc? function
5359 inlibc='echo " "; td=$define; tu=$undef;
5360 sym=$1; var=$2; eval "was=\$$2";
5361 tx=yes;
5362 case "$reuseval$was" in
5363 true) ;;
5364 true*) tx=no;;
5365 esac;
5366 case "$tx" in
5367 yes)
5368         set $sym tres -f;
5369         eval $csym;
5370         case "$tres" in
5371         true)
5372                 echo "$sym() found." >&4;
5373                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5374         *)
5375                 echo "$sym() NOT found." >&4;
5376                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5377         esac;;
5378 *)
5379         case "$was" in
5380         $define) echo "$sym() found." >&4;;
5381         *) echo "$sym() NOT found." >&4;;
5382         esac;;
5383 esac'
5384
5385 : see if dlopen exists
5386 xxx_runnm="$runnm"
5387 runnm=false
5388 set dlopen d_dlopen
5389 eval $inlibc
5390 runnm="$xxx_runnm"
5391
5392 : determine which dynamic loading, if any, to compile in
5393 echo " "
5394 dldir="ext/DynaLoader"
5395 case "$usedl" in
5396 $define|y|true)
5397         dflt='y'
5398         usedl="$define"
5399         ;;
5400 $undef|n|false)
5401         dflt='n'
5402         usedl="$undef"
5403         ;;
5404 *) 
5405         dflt='n'
5406         case "$d_dlopen" in
5407             $define) dflt='y' ;;
5408         esac
5409         case "$i_dld" in
5410             $define) dflt='y' ;;
5411         esac
5412         : Does a dl_xxx.xs file exist for this operating system
5413         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5414         ;;
5415 esac
5416 rp="Do you wish to use dynamic loading?"
5417 . ./myread
5418 usedl="$ans"
5419 case "$ans" in
5420 y*) usedl="$define"
5421         case "$dlsrc" in
5422         '')
5423                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5424                         dflt="$dldir/dl_${osname}.xs"
5425                 elif $test "$d_dlopen" = "$define" ; then
5426                         dflt="$dldir/dl_dlopen.xs"
5427                 elif $test "$i_dld" = "$define" ; then
5428                         dflt="$dldir/dl_dld.xs"
5429                 else
5430                         dflt=''
5431                 fi
5432                 ;;
5433         *)      dflt="$dldir/$dlsrc"
5434                 ;;
5435         esac
5436     echo "The following dynamic loading files are available:"
5437         : Can not go over to $dldir because getfile has path hard-coded in.
5438         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5439         rp="Source file to use for dynamic loading"
5440         fn="fne"
5441         gfpth="$src"
5442         . ./getfile
5443         usedl="$define"
5444         : emulate basename
5445         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5446
5447         $cat << EOM
5448
5449 Some systems may require passing special flags to $cc -c to
5450 compile modules that will be used to create a shared library.
5451 To use no flags, say "none".
5452
5453 EOM
5454     case "$cccdlflags" in
5455     '') case "$gccversion" in
5456                 '') case "$osname" in
5457                         hpux)   dflt='+z' ;;
5458                         next)   dflt='none' ;;
5459                         irix*)  dflt='-KPIC' ;;
5460                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5461                         sunos)  dflt='-pic' ;;
5462                         *)      dflt='none' ;;
5463                     esac
5464                         ;;
5465                 *)  case "$osname" in
5466                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5467                         *)      dflt='-fpic' ;;
5468                     esac ;;
5469             esac ;;
5470         ' ') dflt='none' ;;
5471     *)  dflt="$cccdlflags" ;;
5472     esac
5473     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5474     . ./myread
5475     case "$ans" in
5476     none) cccdlflags=' ' ;;
5477     *) cccdlflags="$ans" ;;
5478     esac
5479
5480     cat << EOM
5481
5482 Some systems use ld to create libraries that can be dynamically loaded,
5483 while other systems (such as those using ELF) use $cc.
5484
5485 EOM
5486         case "$ld" in
5487         '')     $cat >try.c <<'EOM'
5488 /* Test for whether ELF binaries are produced */
5489 #include <fcntl.h>
5490 #include <stdlib.h>
5491 int main() {
5492         char b[4];
5493         int i = open("a.out",O_RDONLY);
5494         if(i == -1) 
5495                 exit(1); /* fail */
5496         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5497                 exit(0); /* succeed (yes, it's ELF) */
5498         else
5499                 exit(1); /* fail */
5500 }
5501 EOM
5502                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5503                         cat <<EOM
5504 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5505 EOM
5506                         dflt="$cc"
5507                 else
5508                         echo "I'll use ld to build dynamic libraries."
5509                         dflt='ld'
5510                 fi
5511                 rm -f try.c a.out
5512                 ;;
5513         *)      dflt="$ld"
5514                 ;;
5515         esac
5516
5517     rp="What command should be used to create dynamic libraries?"
5518     . ./myread
5519         ld="$ans"
5520
5521     cat << EOM
5522
5523 Some systems may require passing special flags to $ld to create a
5524 library that can be dynamically loaded.  If your ld flags include
5525 -L/other/path options to locate libraries outside your loader's normal
5526 search path, you may need to specify those -L options here as well.  To
5527 use no flags, say "none".
5528
5529 EOM
5530     case "$lddlflags" in
5531     '') case "$osname" in
5532                         beos) dflt='-nostart' ;;
5533                         hpux)  dflt='-b' ;;
5534                         linux|irix*)    dflt='-shared' ;;
5535                         next)  dflt='none' ;;
5536                         solaris) dflt='-G' ;;
5537                         sunos) dflt='-assert nodefinitions' ;;
5538                         svr4*|esix*) dflt="-G $ldflags" ;;
5539                 *)     dflt='none' ;;
5540                         esac
5541                         ;;
5542     *) dflt="$lddlflags" ;;
5543     esac
5544
5545         : Try to guess additional flags to pick up local libraries.
5546         : Be careful not to append to a plain 'none'
5547         case "$dflt" in
5548         none) dflt='' ;;
5549         esac
5550         for thisflag in $ldflags; do
5551                 case "$thisflag" in
5552                 -L*)
5553                         case " $dflt " in
5554                         *" $thisflag "*) ;;
5555                         *) dflt="$dflt $thisflag" ;;
5556                         esac
5557                         ;;
5558                 esac
5559         done
5560
5561         case "$dflt" in
5562         ''|' ') dflt='none' ;;
5563         esac
5564
5565     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5566     . ./myread
5567     case "$ans" in
5568     none) lddlflags=' ' ;;
5569     *) lddlflags="$ans" ;;
5570     esac
5571
5572         cat <<EOM
5573
5574 Some systems may require passing special flags to $cc to indicate that
5575 the resulting executable will use dynamic linking.  To use no flags,
5576 say "none".
5577
5578 EOM
5579     case "$ccdlflags" in
5580     '') case "$osname" in
5581                 hpux)   dflt='-Wl,-E' ;;
5582                 linux)  dflt='-rdynamic' ;;
5583                 next)   dflt='none' ;;
5584                 sunos)  dflt='none' ;;
5585                 *)      dflt='none' ;;
5586             esac ;;
5587     ' ')  dflt='none' ;;
5588     *)  dflt="$ccdlflags" ;;
5589     esac
5590     rp="Any special flags to pass to $cc to use dynamic loading?"
5591     . ./myread
5592     case "$ans" in
5593     none) ccdlflags=' ' ;;
5594     *) ccdlflags="$ans" ;;
5595     esac
5596     ;;
5597 *)  usedl="$undef"
5598         ld='ld'
5599     dlsrc='dl_none.xs'
5600     lddlflags=''
5601     ccdlflags=''
5602     ;;
5603 esac
5604
5605 also=''
5606 case "$usedl" in
5607 $undef)
5608         # No dynamic loading being used, so don't bother even to prompt.
5609         useshrplib='false'
5610         ;;
5611 *)      case "$useshrplib" in
5612         '')     case "$osname" in
5613                 svr4*|dgux|dynixptx|esix|powerux|beos)
5614                         dflt=y
5615                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5616                         ;;
5617                 next*)
5618                         case "$osvers" in
5619                         4*)     dflt=y
5620                                 also='Building a shared libperl is needed for MAB support.'
5621                                 ;;
5622                         *)      dflt=n
5623                                 ;;
5624                         esac
5625                         ;;
5626                 *)      dflt=n
5627                         ;;
5628                 esac
5629                 ;;
5630         $define|true|[Yy]*)
5631                 dflt=y
5632                 ;;
5633         *)      dflt=n
5634                 ;;
5635         esac
5636         $cat << EOM
5637
5638 The perl executable is normally obtained by linking perlmain.c with
5639 libperl${_a}, any static extensions (usually just DynaLoader), and
5640 any other libraries needed on this system (such as -lm, etc.).  Since
5641 your system supports dynamic loading, it is probably possible to build
5642 a shared libperl.$so.  If you will have more than one executable linked
5643 to libperl.$so, this will significantly reduce the size of each
5644 executable, but it may have a noticeable affect on performance.  The
5645 default is probably sensible for your system.
5646 $also
5647
5648 EOM
5649         rp="Build a shared libperl.$so (y/n)"
5650         . ./myread
5651         case "$ans" in
5652         true|$define|[Yy]*)
5653                 useshrplib='true'  ;;
5654         *)      useshrplib='false' ;;
5655         esac
5656         ;;
5657 esac
5658
5659 case "$useshrplib" in
5660 true)
5661         case "$libperl" in
5662         '')
5663                 # Figure out a good name for libperl.so.  Since it gets stored in
5664                 # a version-specific architecture-dependent library, the version
5665                 # number isn't really that important, except for making cc/ld happy.
5666                 #
5667                 # A name such as libperl.so.3.1
5668                 majmin="libperl.$so.$patchlevel.$subversion"
5669                 # A name such as libperl.so.301
5670                 majonly=`echo $patchlevel $subversion |
5671                         $awk '{printf "%d%02d", $1, $2}'`
5672                 majonly=libperl.$so.$majonly
5673                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5674                 # rely on figuring it out from the naming of libc.
5675                 case "${osname}${osvers}" in
5676                 next4*)
5677                         dflt=libperl.5.$so
5678                         # XXX How handle the --version stuff for MAB?
5679                         ;;
5680                 linux*)  # ld won't link with a bare -lperl otherwise.
5681                         dflt=libperl.$so
5682                         ;;
5683                 *)      # Try to guess based on whether libc has major.minor.
5684                         case "$libc" in
5685                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5686                         *libc.$so.[0-9]*) dflt=$majonly ;;
5687                         *)      dflt=libperl.$so ;;
5688                         esac
5689                         ;;
5690                 esac
5691                 ;;
5692         *)      dflt=$libperl
5693                 ;;
5694         esac
5695         cat << EOM
5696
5697 I need to select a good name for the shared libperl.  If your system uses
5698 library names with major and minor numbers, then you might want something
5699 like $majmin.  Alternatively, if your system uses a single version
5700 number for shared libraries, then you might want to use $majonly.
5701 Or, your system might be quite happy with a simple libperl.$so.
5702
5703 Since the shared libperl will get installed into a version-specific
5704 architecture-dependent directory, the version number of the shared perl
5705 library probably isn't important, so the default should be o.k.
5706
5707 EOM
5708         rp='What name do you want to give to the shared libperl?'
5709         . ./myread
5710         libperl=$ans
5711         echo "Ok, I'll use $libperl"
5712         ;;
5713 *)
5714         libperl="libperl${_a}"
5715         ;;
5716 esac
5717
5718 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5719 case "$shrpdir" in
5720 '') ;;
5721 *)      $cat >&4 <<EOM
5722 WARNING:  Use of the shrpdir variable for the installation location of
5723 the shared $libperl is not supported.  It was never documented and
5724 will not work in this version.  Let me (perlbug@perl.com)
5725 know of any problems this may cause.
5726
5727 EOM
5728         case "$shrpdir" in
5729         "$archlibexp/CORE")
5730                 $cat >&4 <<EOM
5731 But your current setting of $shrpdir is
5732 the default anyway, so it's harmless.
5733 EOM
5734                 ;;
5735         *)
5736                 $cat >&4 <<EOM
5737 Further, your current attempted setting of $shrpdir
5738 conflicts with the value of $archlibexp/CORE
5739 that installperl will use.
5740 EOM
5741                 ;;
5742         esac
5743         ;;
5744 esac
5745
5746 # How will the perl executable find the installed shared $libperl?
5747 # Add $xxx to ccdlflags.
5748 # If we can't figure out a command-line option, use $shrpenv to
5749 # set env LD_RUN_PATH.  The main perl makefile uses this.
5750 shrpdir=$archlibexp/CORE
5751 xxx=''
5752 tmp_shrpenv=''
5753 if "$useshrplib"; then
5754     case "$osname" in 
5755         aix)
5756                 # We'll set it in Makefile.SH...
5757                 ;;
5758         solaris|netbsd)
5759                 xxx="-R $shrpdir"
5760                 ;;
5761         freebsd)
5762                 xxx="-Wl,-R$shrpdir"
5763                 ;;
5764         linux|irix*|dec_osf)
5765                 xxx="-Wl,-rpath,$shrpdir"
5766                 ;;
5767         next)
5768                 # next doesn't like the default...
5769                 ;;
5770         beos)
5771                 # beos doesn't like the default, either.
5772                 ;;
5773         hpux*)
5774                 # hpux doesn't like the default, either.
5775                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
5776                 ;;
5777         *)
5778                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5779                 ;;
5780         esac
5781         case "$xxx" in
5782         '') ;;
5783         *)      
5784                 # Only add $xxx if it isn't already in ccdlflags.
5785                 case " $ccdlflags " in
5786                 *" $xxx "*)     ;;
5787                 *)      ccdlflags="$ccdlflags $xxx"
5788                         cat <<EOM >&4
5789
5790 Adding $xxx to the flags
5791 passed to $ld so that the perl executable will find the 
5792 installed shared $libperl.
5793
5794 EOM
5795                         ;;
5796                 esac
5797                 ;;
5798         esac
5799 fi
5800 # Fix ccdlflags in AIX for building external extensions.
5801 # (For building Perl itself bare -bE:perl.exp is needed,
5802 #  Makefile.SH takes care of this.)
5803 case "$osname" in
5804 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
5805 esac
5806 # Respect a hint or command-line value.
5807 case "$shrpenv" in
5808 '') shrpenv="$tmp_shrpenv" ;;
5809 esac
5810 case "$ldlibpthname" in
5811 '')     ldlibpthname=LD_LIBRARY_PATH ;;
5812 none)   ldlibpthname='' ;;
5813 esac
5814
5815 : determine where manual pages go
5816 set man1dir man1dir none
5817 eval $prefixit
5818 $cat <<EOM
5819
5820 $spackage has manual pages available in source form.
5821 EOM
5822 case "$nroff" in
5823 nroff)
5824         echo "However, you don't have nroff, so they're probably useless to you."
5825         case "$man1dir" in
5826         '') man1dir="none";;
5827         esac;;
5828 esac
5829 echo "If you don't want the manual sources installed, answer 'none'."
5830 case "$man1dir" in
5831 ' ') dflt=none
5832         ;;
5833 '')
5834         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5835         lookpath="$lookpath $prefixexp/man/p_man/man1"
5836         lookpath="$lookpath $prefixexp/man/u_man/man1"
5837         lookpath="$lookpath $prefixexp/man/man.1"
5838         case "$sysman" in
5839         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5840         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5841         esac
5842         set dflt
5843         eval $prefixup
5844         ;;
5845 *)  dflt="$man1dir"
5846         ;;
5847 esac
5848 echo " "
5849 fn=dn+~
5850 rp="Where do the main $spackage manual pages (source) go?"
5851 . ./getfile
5852 if $test "X$man1direxp" != "X$ansexp"; then
5853         installman1dir=''
5854 fi
5855 man1dir="$ans"
5856 man1direxp="$ansexp"
5857 case "$man1dir" in
5858 '')     man1dir=' '
5859         installman1dir='';;
5860 esac
5861
5862 : Change installation prefix, if necessary.
5863 if $test X"$prefix" != X"$installprefix"; then
5864         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
5865 else
5866         installman1dir="$man1direxp"
5867 fi
5868
5869 : What suffix to use on installed man pages
5870
5871 case "$man1dir" in
5872 ' ')
5873         man1ext='0'
5874         ;;
5875 *)
5876         rp="What suffix should be used for the main $spackage man pages?"
5877         case "$man1ext" in
5878         '')     case "$man1dir" in
5879                 *1)  dflt=1 ;;
5880                 *1p) dflt=1p ;;
5881                 *1pm) dflt=1pm ;;
5882                 *l) dflt=l;;
5883                 *n) dflt=n;;
5884                 *o) dflt=o;;
5885                 *p) dflt=p;;
5886                 *C) dflt=C;;
5887                 *L) dflt=L;;
5888                 *L1) dflt=L1;;
5889                 *) dflt=1;;
5890                 esac
5891                 ;;
5892         *)      dflt="$man1ext";;
5893         esac
5894         . ./myread
5895         man1ext="$ans"
5896         ;;
5897 esac
5898
5899 : see if we can have long filenames
5900 echo " "
5901 rmlist="$rmlist /tmp/cf$$"
5902 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5903 first=123456789abcdef
5904 second=/tmp/cf$$/$first
5905 $rm -f $first $second
5906 if (echo hi >$first) 2>/dev/null; then
5907         if $test -f 123456789abcde; then
5908                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5909                 val="$undef"
5910         else
5911                 if (echo hi >$second) 2>/dev/null; then
5912                         if $test -f /tmp/cf$$/123456789abcde; then
5913                                 $cat <<'EOM'
5914 That's peculiar... You can have filenames longer than 14 characters, but only
5915 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5916 I shall consider your system cannot support long filenames at all.
5917 EOM
5918                                 val="$undef"
5919                         else
5920                                 echo 'You can have filenames longer than 14 characters.' >&4
5921                                 val="$define"
5922                         fi
5923                 else
5924                         $cat <<'EOM'
5925 How confusing! Some of your filesystems are sane enough to allow filenames
5926 longer than 14 characters but some others like /tmp can't even think about them.
5927 So, for now on, I shall assume your kernel does not allow them at all.
5928 EOM
5929                         val="$undef"
5930                 fi
5931         fi
5932 else
5933         $cat <<'EOM'
5934 You can't have filenames longer than 14 chars.  You can't even think about them!
5935 EOM
5936         val="$undef"
5937 fi 
5938 set d_flexfnam
5939 eval $setvar
5940 $rm -rf /tmp/cf$$ 123456789abcde*
5941
5942 : determine where library module manual pages go
5943 set man3dir man3dir none
5944 eval $prefixit
5945 $cat <<EOM
5946
5947 $spackage has manual pages for many of the library modules.
5948 EOM
5949
5950 case "$nroff" in
5951 nroff)
5952         $cat <<'EOM'
5953 However, you don't have nroff, so they're probably useless to you.
5954 EOM
5955         case "$man3dir" in
5956         '') man3dir="none";;
5957         esac;;
5958 esac
5959
5960 case "$d_flexfnam" in
5961 undef)
5962         $cat <<'EOM'
5963 However, your system can't handle the long file names like File::Basename.3. 
5964 EOM
5965         case "$man3dir" in
5966         '') man3dir="none";;
5967         esac;;
5968 esac
5969
5970 echo "If you don't want the manual sources installed, answer 'none'."
5971 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5972 case "$man3dir" in
5973 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
5974         if $test -d "$privlib/man/man3"; then
5975                 cat <<EOM >&4
5976
5977 WARNING:  Previous versions of perl installed man3 pages into
5978 $privlib/man/man3.  This version will suggest a 
5979 new default of $dflt.  
5980 EOM
5981                 tdflt=$dflt
5982                 dflt='n'
5983                 rp='Do you wish to preserve the old behavior?(y/n)'
5984                 . ./myread
5985                 case "$ans" in
5986                 y*) dflt="$privlib/man/man3" ;;
5987                 *)  dflt=$tdflt ;;
5988                 esac
5989     fi
5990         ;;
5991 ' ') dflt=none;;
5992 *)      dflt="$man3dir" ;;
5993 esac
5994 echo " "
5995 fn=dn+~
5996 rp="Where do the $package library man pages (source) go?"
5997 . ./getfile
5998 man3dir="$ans"
5999 man3direxp="$ansexp"
6000 case "$man1dir" in
6001 '')     man3dir=' '
6002         installman3dir='';;
6003 esac
6004
6005 : Change installation prefix, if necessary.
6006 if $test X"$prefix" != X"$installprefix"; then
6007         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6008 else
6009         installman3dir="$man3direxp"
6010 fi
6011
6012 : What suffix to use on installed man pages
6013 case "$man3dir" in
6014 ' ')
6015         man3ext='0'
6016         ;;
6017 *)
6018         rp="What suffix should be used for the $package library man pages?"
6019         case "$man3ext" in
6020         '')     case "$man3dir" in
6021                 *3)  dflt=3 ;;
6022                 *3p) dflt=3p ;;
6023                 *3pm) dflt=3pm ;;
6024                 *l) dflt=l;;
6025                 *n) dflt=n;;
6026                 *o) dflt=o;;
6027                 *p) dflt=p;;
6028                 *C) dflt=C;;
6029                 *L) dflt=L;;
6030                 *L3) dflt=L3;;
6031                 *) dflt=3;;
6032                 esac
6033                 ;;
6034         *)      dflt="$man3ext";;
6035         esac
6036         . ./myread
6037         man3ext="$ans"
6038         ;;
6039 esac
6040
6041 : see if we have to deal with yellow pages, now NIS.
6042 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6043         if $test -f /usr/etc/nibindd; then
6044                 echo " "
6045                 echo "I'm fairly confident you're on a NeXT."
6046                 echo " "
6047                 rp='Do you get the hosts file via NetInfo?'
6048                 dflt=y
6049                 case "$hostcat" in
6050                 nidump*) ;;
6051                 '') ;;
6052                 *) dflt=n;;
6053                 esac
6054                 . ./myread
6055                 case "$ans" in
6056                 y*) hostcat='nidump hosts .';;
6057                 *)      case "$hostcat" in
6058                         nidump*) hostcat='';;
6059                         esac
6060                         ;;
6061                 esac
6062         fi
6063         case "$hostcat" in
6064         nidump*) ;;
6065         *)
6066                 case "$hostcat" in
6067                 *ypcat*) dflt=y;;
6068                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6069                                 dflt=y
6070                         else
6071                                 dflt=n
6072                         fi;;
6073                 *) dflt=n;;
6074                 esac
6075                 echo " "
6076                 rp='Are you getting the hosts file via yellow pages?'
6077                 . ./myread
6078                 case "$ans" in
6079                 y*) hostcat='ypcat hosts';;
6080                 *) hostcat='cat /etc/hosts';;
6081                 esac
6082                 ;;
6083         esac
6084 fi
6085 case "$hostcat" in
6086 '') hostcat='cat /etc/hosts';;
6087 esac
6088 case "$groupcat" in
6089 '') groupcat='cat /etc/group';;
6090 esac
6091 case "$passcat" in
6092 '') passcat='cat /etc/passwd';;
6093 esac
6094
6095 : now get the host name
6096 echo " "
6097 echo "Figuring out host name..." >&4
6098 case "$myhostname" in
6099 '') cont=true
6100         echo 'Maybe "hostname" will work...'
6101         if tans=`sh -c hostname 2>&1` ; then
6102                 myhostname=$tans
6103                 phostname=hostname
6104                 cont=''
6105         fi
6106         ;;
6107 *) cont='';;
6108 esac
6109 if $test "$cont"; then
6110         if ./xenix; then
6111                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6112                 if tans=`cat /etc/systemid 2>&1` ; then
6113                         myhostname=$tans
6114                         phostname='cat /etc/systemid'
6115                         echo "Whadyaknow.  Xenix always was a bit strange..."
6116                         cont=''
6117                 fi
6118         elif $test -r /etc/systemid; then
6119                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6120         fi
6121 fi
6122 if $test "$cont"; then
6123         echo 'No, maybe "uuname -l" will work...'
6124         if tans=`sh -c 'uuname -l' 2>&1` ; then
6125                 myhostname=$tans
6126                 phostname='uuname -l'
6127         else
6128                 echo 'Strange.  Maybe "uname -n" will work...'
6129                 if tans=`sh -c 'uname -n' 2>&1` ; then
6130                         myhostname=$tans
6131                         phostname='uname -n'
6132                 else
6133                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6134                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6135                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6136                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6137                         else
6138                                 case "$myhostname" in
6139                                 '') echo "Does this machine have an identity crisis or something?"
6140                                         phostname='';;
6141                                 *)
6142                                         echo "Well, you said $myhostname before..."
6143                                         phostname='echo $myhostname';;
6144                                 esac
6145                         fi
6146                 fi
6147         fi
6148 fi
6149 : you do not want to know about this
6150 set $myhostname
6151 myhostname=$1
6152
6153 : verify guess
6154 if $test "$myhostname" ; then
6155         dflt=y
6156         rp='Your host name appears to be "'$myhostname'".'" Right?"
6157         . ./myread
6158         case "$ans" in
6159         y*) ;;
6160         *) myhostname='';;
6161         esac
6162 fi
6163
6164 : bad guess or no guess
6165 while $test "X$myhostname" = X ; do
6166         dflt=''
6167         rp="Please type the (one word) name of your host:"
6168         . ./myread
6169         myhostname="$ans"
6170 done
6171
6172 : translate upper to lower if necessary
6173 case "$myhostname" in
6174 *[A-Z]*)
6175         echo "(Normalizing case in your host name)"
6176         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6177         ;;
6178 esac
6179
6180 case "$myhostname" in
6181 *.*)
6182         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6183         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6184         echo "(Trimming domain name from host name--host name is now $myhostname)"
6185         ;;
6186 *) case "$mydomain" in
6187         '')
6188                 {
6189                         test "X$hostcat" = "Xypcat hosts" &&
6190                         ypmatch "$myhostname" hosts 2>/dev/null |\
6191                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6192                         $test -s hosts
6193                 } || {
6194                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6195                                         /[       ]$myhostname[  . ]/p" > hosts
6196                 }
6197                 tmp_re="[       . ]"
6198                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6199                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6200                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6201                         hosts | $sort | $uniq | \
6202                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6203                 case `$echo X$dflt` in
6204                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6205                         dflt=.
6206                         ;;
6207                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6208                         ;;
6209                 esac
6210                 case "$dflt" in
6211                 .)
6212                         tans=`./loc resolv.conf X /etc /usr/etc`
6213                         if $test -f "$tans"; then
6214                                 echo "(Attempting domain name extraction from $tans)"
6215                                 dflt=.`$sed -n -e 's/   / /g' \
6216                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6217                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6218                                 case "$dflt" in
6219                                 .) dflt=.`$sed -n -e 's/        / /g' \
6220                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6221                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6222                                         ;;
6223                                 esac
6224                         fi
6225                         ;;
6226                 esac
6227                 case "$dflt" in
6228                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6229                         dflt=.`sh -c domainname 2>/dev/null`
6230                         case "$dflt" in
6231                         '') dflt='.';;
6232                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6233                         esac
6234                         ;;
6235                 esac
6236                 case "$dflt" in
6237                 .) echo "(Lost all hope -- silly guess then)"
6238                         dflt='.uucp'
6239                         ;;
6240                 esac
6241                 $rm -f hosts
6242                 ;;
6243         *) dflt="$mydomain";;
6244         esac;;
6245 esac
6246 echo " "
6247 rp="What is your domain name?"
6248 . ./myread
6249 tans="$ans"
6250 case "$ans" in
6251 '') ;;
6252 .*) ;;
6253 *) tans=".$tans";;
6254 esac
6255 mydomain="$tans"
6256
6257 : translate upper to lower if necessary
6258 case "$mydomain" in
6259 *[A-Z]*)
6260         echo "(Normalizing case in your domain name)"
6261         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6262         ;;
6263 esac
6264
6265 : a little sanity check here
6266 case "$phostname" in
6267 '') ;;
6268 *)
6269         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6270         $myhostname$mydomain|$myhostname) ;;
6271         *)
6272                 case "$phostname" in
6273                 sed*)
6274                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6275                         ;;
6276                 *)
6277                         echo "(That doesn't agree with your $phostname command, by the way.)"
6278                         ;;
6279                 esac
6280         ;;
6281         esac
6282         ;;
6283 esac
6284
6285 $cat <<EOM
6286
6287 I need to get your e-mail address in Internet format if possible, i.e.
6288 something like user@host.domain. Please answer accurately since I have
6289 no easy means to double check it. The default value provided below
6290 is most probably close to the reality but may not be valid from outside
6291 your organization...
6292
6293 EOM
6294 cont=x
6295 while test "$cont"; do
6296         case "$cf_email" in
6297         '') dflt="$cf_by@$myhostname$mydomain";;
6298         *) dflt="$cf_email";;
6299         esac
6300         rp='What is your e-mail address?'
6301         . ./myread
6302         cf_email="$ans"
6303         case "$cf_email" in
6304         *@*.*) cont='' ;;
6305         *)
6306                 rp='Address does not look like an Internet one.  Use it anyway?'
6307                 case "$fastread" in
6308                 yes) dflt=y ;;
6309                 *) dflt=n ;;
6310                 esac
6311                 . ./myread
6312                 case "$ans" in
6313                 y*) cont='' ;;
6314                 *) echo " " ;;
6315                 esac
6316                 ;;
6317         esac
6318 done
6319
6320 $cat <<EOM
6321
6322 If you or somebody else will be maintaining perl at your site, please
6323 fill in the correct e-mail address here so that they may be contacted
6324 if necessary. Currently, the "perlbug" program included with perl
6325 will send mail to this address in addition to perlbug@perl.com. You may
6326 enter "none" for no administrator.
6327
6328 EOM
6329 case "$perladmin" in
6330 '') dflt="$cf_email";;
6331 *) dflt="$perladmin";;
6332 esac
6333 rp='Perl administrator e-mail address'
6334 . ./myread
6335 perladmin="$ans"
6336
6337 : figure out how to guarantee perl startup
6338 case "$startperl" in
6339 '')
6340         case "$sharpbang" in
6341         *!)
6342                 $cat <<EOH
6343
6344 I can use the #! construct to start perl on your system. This will
6345 make startup of perl scripts faster, but may cause problems if you
6346 want to share those scripts and perl is not in a standard place
6347 ($binexp/perl) on all your platforms. The alternative is to force
6348 a shell by starting the script with a single ':' character.
6349
6350 EOH
6351                 dflt="$binexp/perl"
6352                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6353                 . ./myread
6354                 case "$ans" in
6355                 none)   startperl=": # use perl";;
6356                 *)      startperl="#!$ans"
6357                         if $test 30 -lt `echo "$ans" | wc -c`; then
6358                                 $cat >&4 <<EOM
6359
6360 WARNING:  Some systems limit the #! command to 32 characters.
6361 If you experience difficulty running Perl scripts with #!, try
6362 installing Perl in a directory with a shorter pathname.
6363
6364 EOM
6365                         fi ;;
6366                 esac
6367                 ;;
6368         *) startperl=": # use perl"
6369                 ;;
6370         esac
6371         ;;
6372 esac
6373 echo "I'll use $startperl to start perl scripts."
6374
6375 : figure best path for perl in scripts
6376 case "$perlpath" in
6377 '')
6378         perlpath="$binexp/perl"
6379         case "$startperl" in
6380         *!*) ;;
6381         *)
6382                 $cat <<EOH
6383
6384 I will use the "eval 'exec'" idiom to start Perl on your system.
6385 I can use the full path of your Perl binary for this purpose, but
6386 doing so may cause problems if you want to share those scripts and
6387 Perl is not always in a standard place ($binexp/perl).
6388
6389 EOH
6390                 dflt="$binexp/perl"
6391                 rp="What path shall I use in \"eval 'exec'\"?"
6392                 . ./myread
6393                 perlpath="$ans"
6394                 ;;
6395         esac
6396         ;;
6397 esac
6398 case "$startperl" in
6399 *!*)    ;;
6400 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6401 esac
6402
6403 : determine where public executable scripts go
6404 set scriptdir scriptdir
6405 eval $prefixit
6406 case "$scriptdir" in
6407 '')
6408         dflt="$bin"
6409         : guess some guesses
6410         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6411         $test -d /usr/share/bin     && dflt=/usr/share/bin
6412         $test -d /usr/local/script  && dflt=/usr/local/script
6413         $test -d /usr/local/scripts && dflt=/usr/local/scripts
6414         $test -d $prefixexp/script  && dflt=$prefixexp/script
6415         set dflt
6416         eval $prefixup
6417         ;;
6418 *)  dflt="$scriptdir"
6419         ;;
6420 esac
6421 $cat <<EOM
6422  
6423 Some installations have a separate directory just for executable scripts so
6424 that they can mount it across multiple architectures but keep the scripts in
6425 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6426 Or you might just lump your scripts in with all your other executables.
6427  
6428 EOM
6429 fn=d~
6430 rp='Where do you keep publicly executable scripts?'
6431 . ./getfile
6432 if $test "X$ansexp" != "X$scriptdirexp"; then
6433         installscript=''
6434 fi
6435 scriptdir="$ans"
6436 scriptdirexp="$ansexp"
6437 : Change installation prefix, if necessary.
6438 if $test X"$prefix" != X"$installprefix"; then
6439         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6440 else
6441         installscript="$scriptdirexp"
6442 fi
6443
6444 $cat <<EOM
6445
6446 After $package is installed, you may wish to install various
6447 add-on modules and utilities.  Typically, these add-ons will
6448 be installed under $prefix with the rest
6449 of this package.  However, you may wish to install such add-ons
6450 elsewhere under a different prefix.
6451
6452 If you do not wish to put everything under a single prefix, that's
6453 ok.  You will be prompted for the individual locations; this siteprefix
6454 is only used to suggest the defaults.
6455
6456 The default should be fine for most people.
6457
6458 EOM
6459 fn=d~+
6460 rp='Installation prefix to use for add-on modules and utilities?'
6461 : XXX Here might be another good place for an installstyle setting.
6462 case "$siteprefix" in
6463 '') dflt=$prefix ;;
6464 *)  dflt=$siteprefix ;;
6465 esac
6466 . ./getfile
6467 oldsiteprefix=''
6468 case "$siteprefix" in
6469 '') ;;
6470 *)
6471         case "$ans" in
6472         "$prefix") ;;
6473         *) oldsiteprefix="$prefix";;
6474         esac
6475         ;;
6476 esac
6477 siteprefix="$ans"
6478 siteprefixexp="$ansexp"
6479
6480 : determine where site specific libraries go.
6481 : Usual default is /usr/local/lib/perl5/site_perl
6482 : The default "style" setting is made in installstyle.U
6483 : XXX No longer works with Prefixit stuff.
6484 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6485 case "$installstyle" in
6486 *lib/perl5*) dflt=$siteprefix/lib/site_$prog ;;
6487 *)       dflt=$siteprefix/lib/site_$prog ;;
6488 esac
6489 $cat <<EOM
6490
6491 The installation process will create a directory for
6492 site-specific extensions and modules.  Most users find it convenient
6493 to place all site-specific files in this directory rather than in the
6494 main distribution directory.
6495
6496 EOM
6497 fn=d~+
6498 rp='Pathname for the site-specific library files?'
6499 . ./getfile
6500 sitelib="$ans"
6501 sitelibexp="$ansexp"
6502 : Change installation prefix, if necessary.
6503 if $test X"$prefix" != X"$installprefix"; then
6504         installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
6505 else
6506         installsitelib="$sitelibexp"
6507 fi
6508
6509 : determine where site specific architecture-dependent libraries go.
6510 : sitelib  default is /usr/local/lib/perl5/site_perl/
6511 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6512 : sitelib may have an optional trailing /share.
6513 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6514 tdflt="$tdflt/$apiversion/$archname"
6515 set sitearch sitearch none
6516 eval $prefixit
6517 case "$sitearch" in
6518 '')     dflt="$tdflt" ;;
6519 *)      dflt="$sitearch" ;;
6520 esac
6521 $cat <<EOM
6522
6523 The installation process will also create a directory for
6524 architecture-dependent site-specific extensions and modules.
6525
6526 EOM
6527 fn=nd~+
6528 rp='Pathname for the site-specific architecture-dependent library files?'
6529 . ./getfile
6530 sitearch="$ans"
6531 sitearchexp="$ansexp"
6532 : Change installation prefix, if necessary.
6533 if $test X"$prefix" != X"$installprefix"; then
6534         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6535 else
6536         installsitearch="$sitearchexp"
6537 fi
6538
6539 : determine where add-on public executables go
6540 case "$sitebin" in
6541 '')     dflt=$siteprefix/bin ;;
6542 *)      dflt=$sitebin ;;
6543 esac
6544 fn=d~
6545 rp='Pathname where the add-on public executables should be installed?'
6546 . ./getfile
6547 sitebin="$ans"
6548 sitebinexp="$ansexp"
6549 : Change installation prefix, if necessary.
6550 if $test X"$prefix" != X"$installprefix"; then
6551         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
6552 else
6553         installsitebin="$sitebinexp"
6554 fi
6555
6556 cat <<EOM
6557
6558 Perl can be built to take advantage of long doubles which
6559 (if available) may give more accuracy and range for floating point
6560 numbers.  To do so, Configure must be run with -Duselongdouble.
6561
6562 If this doesn't make any sense to you, just accept the default 'n'.
6563 EOM
6564 case "$uselongdouble" in
6565 $define|true|[yY]*)     dflt='y';;
6566 *) dflt='n';;
6567 esac
6568 rp='Try to use long doubles if available?'
6569 . ./myread
6570 case "$ans" in
6571 y|Y)    val="$define"   ;;
6572 *)      val="$undef"    ;;
6573 esac
6574 set uselongdouble
6575 eval $setvar
6576
6577 case "$uselongdouble" in
6578 "$define"|true|[yY]*)
6579 : Look for a hint-file generated 'call-back-unit'.  If the
6580 : user has specified that long doubles should be used,
6581 : we may need to set or change some other defaults.
6582         if $test -f uselongdouble.cbu; then
6583                 echo "Your platform has some specific hints for long doubles, using them..."
6584                 . ./uselongdouble.cbu
6585         else
6586                 $cat <<EOM
6587 (Your platform doesn't have any specific hints for long doubles.)
6588 EOM
6589         fi
6590         ;;
6591 esac
6592
6593 cat <<EOM
6594
6595 Previous version of $package used the standard IO mechanisms as defined
6596 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6597 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6598 the default.  This abstraction layer can use AT&T's sfio (if you already
6599 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6600 problems with some extension modules.  Using PerlIO with stdio is safe,
6601 but it is slower than plain stdio and therefore is not the default.
6602
6603 If this doesn't make any sense to you, just accept the default 'n'.
6604 EOM
6605 case "$useperlio" in
6606 $define|true|[yY]*)     dflt='y';;
6607 *) dflt='n';;
6608 esac
6609 rp='Use the experimental PerlIO abstraction layer?'
6610 . ./myread
6611 case "$ans" in
6612 y|Y) 
6613         val="$define"
6614         ;;     
6615 *)      
6616         echo "Ok, doing things the stdio way"
6617         val="$undef"
6618         ;;
6619 esac
6620 set useperlio
6621 eval $setvar 
6622
6623 case "$vendorprefix" in
6624 '')     d_vendorbin="$undef"
6625         vendorbin=''
6626         vendorbinexp=''
6627         ;;
6628 *)      d_vendorbin="$define"
6629         : determine where vendor-supplied executables go.
6630         dflt=$vendorprefix/bin
6631         fn=d~+
6632         rp='Pathname for the vendor-supplied executables directory?'
6633         . ./getfile
6634         vendorbin="$ans"
6635         vendorbinexp="$ansexp"
6636         : Change installation prefix, if necessary.
6637         if $test X"$prefix" != X"$installprefix"; then
6638                 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
6639         else
6640                 installvendorbin="$vendorbinexp"
6641         fi
6642         ;;
6643 esac
6644
6645 : Check how to convert floats to strings.
6646 if test "X$d_Gconvert" = X; then
6647         echo " "
6648         echo "Checking for an efficient way to convert floats to strings."
6649         $cat >try.c <<'EOP'
6650 #ifdef TRY_gconvert
6651 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6652 char *myname = "gconvert";
6653 #endif
6654 #ifdef TRY_gcvt
6655 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6656 char *myname = "gcvt";
6657 #endif
6658 #ifdef TRY_sprintf
6659 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6660 char *myname = "sprintf";
6661 #endif
6662
6663 #include <stdio.h>
6664
6665 int
6666 checkit(expect, got)
6667 char *expect;
6668 char *got;
6669 {
6670     if (strcmp(expect, got)) {
6671                 printf("%s oddity:  Expected %s, got %s\n",
6672                         myname, expect, got);
6673                 exit(1);
6674         }
6675 }
6676
6677 int main()
6678
6679         char buf[64]; 
6680         buf[63] = '\0';
6681
6682         /* This must be 1st test on (which?) platform */
6683         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6684         Gconvert(0.1, 8, 0, buf);
6685         checkit("0.1", buf);
6686
6687         Gconvert(1.0, 8, 0, buf); 
6688         checkit("1", buf);
6689
6690         Gconvert(0.0, 8, 0, buf); 
6691         checkit("0", buf);
6692
6693         Gconvert(-1.0, 8, 0, buf); 
6694         checkit("-1", buf);
6695
6696         /* Some Linux gcvt's give 1.e+5 here. */
6697         Gconvert(100000.0, 8, 0, buf); 
6698         checkit("100000", buf);
6699         
6700         /* Some Linux gcvt's give -1.e+5 here. */
6701         Gconvert(-100000.0, 8, 0, buf); 
6702         checkit("-100000", buf);
6703
6704         exit(0);
6705 }
6706 EOP
6707         case "$d_Gconvert" in
6708         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6709         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6710         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6711         *) xxx_list='gconvert gcvt sprintf' ;;
6712         esac
6713
6714         for xxx_convert in $xxx_list; do
6715                 echo "Trying $xxx_convert"
6716                 $rm -f try try$_o
6717                 set try -DTRY_$xxx_convert
6718                 if eval $compile; then
6719                         echo "$xxx_convert" found. >&4
6720                         if ./try; then
6721                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6722                                 break;
6723                         else
6724                                 echo "...But $xxx_convert didn't work as I expected."
6725                         fi
6726                 else
6727                         echo "$xxx_convert NOT found." >&4
6728                 fi
6729         done
6730                 
6731         case "$xxx_convert" in
6732         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6733         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6734         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6735         esac
6736 fi
6737
6738 : see if inttypes.h is available
6739 : we want a real compile instead of Inhdr because some systems
6740 : have an inttypes.h which includes non-existent headers
6741 echo " "
6742 $cat >try.c <<EOCP
6743 #include <inttypes.h>
6744 int main() {
6745         static int32_t foo32 = 0x12345678;
6746 }
6747 EOCP
6748 set try
6749 if eval $compile; then
6750         echo "<inttypes.h> found." >&4
6751         val="$define"
6752 else
6753         echo "<inttypes.h> NOT found." >&4
6754         val="$undef"
6755 fi
6756 $rm -f try.c try
6757 set i_inttypes
6758 eval $setvar
6759
6760 : check for int64_t
6761 case "$use64bits" in
6762 "$define" )
6763         echo " "
6764         $echo $n "Checking to see if your system supports int64_t...$c" >&4
6765         $cat >try.c <<EOCP
6766 #include <sys/types.h>
6767 #$i_inttypes I_INTTYPES
6768 #ifdef I_INTTYPES
6769 #include <inttypes.h>
6770 #endif
6771 int64_t foo() { int64_t x; x = 7; return x; }
6772 EOCP
6773         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6774                 val="$define"
6775                 echo " Yup, it does." >&4
6776         else
6777                 val="$undef"
6778                 echo " Nope, it doesn't." >&4
6779         fi
6780         $rm -f try.*
6781         ;;
6782 *)      val="$undef"
6783         ;;
6784 esac
6785 set d_int64t
6786 eval $setvar
6787
6788
6789 : check for lengths of integral types
6790 echo " "
6791 case "$intsize" in
6792 '')
6793         echo "Checking to see how big your integers are..." >&4
6794         $cat >intsize.c <<'EOCP'
6795 #include <stdio.h>
6796 int main()
6797 {
6798         printf("intsize=%d;\n", sizeof(int));
6799         printf("longsize=%d;\n", sizeof(long));
6800         printf("shortsize=%d;\n", sizeof(short));
6801         exit(0);
6802 }
6803 EOCP
6804         set intsize
6805         if eval $compile_ok && ./intsize > /dev/null; then
6806                 eval `./intsize`
6807                 echo "Your integers are $intsize bytes long."
6808                 echo "Your long integers are $longsize bytes long."
6809                 echo "Your short integers are $shortsize bytes long."
6810         else
6811                 $cat >&4 <<EOM
6812 !
6813 Help! I can't compile and run the intsize test program: please enlighten me!
6814 (This is probably a misconfiguration in your system or libraries, and
6815 you really ought to fix it.  Still, I'll try anyway.)
6816 !
6817 EOM
6818                 dflt=4
6819                 rp="What is the size of an integer (in bytes)?"
6820                 . ./myread
6821                 intsize="$ans"
6822                 dflt=$intsize
6823                 rp="What is the size of a long integer (in bytes)?"
6824                 . ./myread
6825                 longsize="$ans"
6826                 dflt=2
6827                 rp="What is the size of a short integer (in bytes)?"
6828                 . ./myread
6829                 shortsize="$ans"
6830         fi
6831         ;;
6832 esac
6833 $rm -f intsize intsize.*
6834
6835 : check for long long
6836 echo " "
6837 $echo $n "Checking to see if your system supports long long...$c" >&4
6838 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
6839 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6840         val="$define"
6841         echo " Yup, it does." >&4
6842 else
6843         val="$undef"
6844         echo " Nope, it doesn't." >&4
6845 fi
6846 $rm try.*
6847 set d_longlong
6848 eval $setvar
6849
6850 : check for length of long long
6851 case "${d_longlong}${longlongsize}" in
6852 $define)
6853         echo " "
6854         $echo $n "Checking to see how big your long longs are...$c" >&4
6855         $cat >try.c <<'EOCP'
6856 #include <stdio.h>
6857 int main()
6858 {
6859         printf("%d\n", sizeof(long long));
6860 }
6861 EOCP
6862         set try
6863         if eval $compile_ok; then
6864                 longlongsize=`./try`
6865                 $echo " $longlongsize bytes." >&4
6866         else
6867                 dflt='8'
6868                 echo " "
6869                 echo "(I can't seem to compile the test program.  Guessing...)"
6870                 rp="What is the size of a long long (in bytes)?"
6871                 . ./myread
6872                 longlongsize="$ans"
6873         fi
6874         if $test "X$longsize" = "X$longlongsize"; then
6875                 echo "(That isn't any different from an ordinary long.)"
6876         fi      
6877         ;;
6878 esac
6879 $rm -f try.c try
6880
6881 echo " "
6882
6883 if $test X"$intsize" = X8 -o X"$longsize" = X8 -o X"$d_int64t" = X"$define" -o X"$d_longlong" = X"$define"; then
6884
6885 echo "Checking how to print 64-bit integers..." >&4
6886
6887 if $test X"$sPRId64" = X -a X"$intsize" = X8; then
6888         quad=int
6889         $cat >try.c <<'EOCP'
6890 #include <sys/types.h>
6891 #include <stdio.h>
6892 int main() {
6893   int q = 12345678901;
6894   printf("%ld\n", q);
6895 }
6896 EOCP
6897         set try
6898         if eval $compile; then
6899                 yyy=`./try$exe_ext`
6900                 case "$yyy" in
6901                 12345678901)
6902                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
6903                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
6904                         echo "We will use %d."
6905                         ;;
6906                 esac
6907         fi
6908 fi
6909
6910 if $test X"$sPRId64" = X -a X"$longsize" = X8; then
6911         quad=long
6912         $cat >try.c <<'EOCP'
6913 #include <sys/types.h>
6914 #include <stdio.h>
6915 int main() {
6916   long q = 12345678901;
6917   printf("%ld\n", q);
6918 }
6919 EOCP
6920         set try
6921         if eval $compile; then
6922                 yyy=`./try$exe_ext`
6923                 case "$yyy" in
6924                 12345678901)
6925                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
6926                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
6927                         echo "We will use %ld."
6928                         ;;
6929                 esac
6930         fi
6931 fi
6932
6933 if $test X"$sPRId64" = X -a X"$i_inttypes.h" = X"$define" -a X"$d_int64t" = X"$define"; then
6934         quad=int64_t
6935         $cat >try.c <<'EOCP'
6936 #include <sys/types.h>
6937 #include <inttypes.h>
6938 #include <stdio.h>
6939 int main() {
6940   int64_t q = 12345678901;
6941   printf("%" PRId64 "\n", q);
6942 }
6943 EOCP
6944         set try
6945         if eval $compile; then
6946                 yyy=`./try$exe_ext`
6947                 case "$yyy" in
6948                 12345678901)
6949                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
6950                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
6951                         echo "We will use the C9X style."
6952                         ;;
6953                 esac
6954         fi
6955 fi
6956
6957 if $test X"$sPRId64" = X -a X"$d_longlong" = X"$define" -a X"$longlongsize" = X8; then
6958         quad="long long"
6959         $cat >try.c <<'EOCP'
6960 #include <sys/types.h>
6961 #include <stdio.h>
6962 int main() {
6963   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
6964   printf("%lld\n", q);
6965 }
6966 EOCP
6967         set try
6968         if eval $compile; then
6969                 yyy=`./try$exe_ext`
6970                 case "$yyy" in
6971                 12345678901)
6972                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
6973                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
6974                         echo "We will use the %lld style."
6975                         ;;
6976                 esac
6977         fi
6978 fi
6979
6980 if $test X"$sPRId64" = X -a X"$quad" != X; then
6981         $cat >try.c <<EOCP
6982 #include <sys/types.h>
6983 #include <stdio.h>
6984 int main() {
6985   $quad q = 12345678901;
6986   printf("%Ld\n", q);
6987 }
6988 EOCP
6989         set try
6990         if eval $compile; then
6991                 yyy=`./try$exe_ext`
6992                 case "$yyy" in
6993                 12345678901)
6994                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
6995                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
6996                         echo "We will use %lld."
6997                         ;;
6998                 esac
6999         fi
7000 fi
7001
7002 if $test X"$sPRId64" = X -a X"$quad" != X; then
7003         $cat >try.c <<EOCP
7004 #include <sys/types.h>
7005 #include <stdio.h>
7006 int main() {
7007   $quad q = 12345678901;
7008   printf("%qd\n", q);
7009 }
7010 EOCP
7011         set try
7012         if eval $compile; then
7013                 yyy=`./try$exe_ext`
7014                 case "$yyy" in
7015                 12345678901)
7016                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
7017                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
7018                         echo "We will use %qd."
7019                         ;;
7020                 esac
7021         fi
7022 fi
7023
7024 if $test X"$sPRId64" = X; then
7025         echo "Cannot figure out how to print 64-bit integers." >&4
7026 fi
7027
7028 $rm -f try try.*
7029
7030 fi # intsize -o longsize -o d_int64t -o d_longlong
7031
7032 case "$sPRId64" in
7033 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
7034         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
7035         ;;
7036 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
7037         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
7038         ;;
7039 esac
7040
7041 : check for length of double
7042 echo " "
7043 case "$doublesize" in
7044 '')
7045         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7046         $cat >try.c <<'EOCP'
7047 #include <stdio.h>
7048 int main()
7049 {
7050         printf("%d\n", sizeof(double));
7051 }
7052 EOCP
7053         set try
7054         if eval $compile_ok; then
7055                 doublesize=`./try`
7056                 $echo " $doublesize bytes." >&4
7057         else
7058                 dflt='8'
7059                 echo "(I can't seem to compile the test program.  Guessing...)"
7060                 rp="What is the size of a double precision number (in bytes)?"
7061                 . ./myread
7062                 doublesize="$ans"
7063         fi
7064         ;;
7065 esac
7066 $rm -f try.c try
7067
7068 : check for long doubles
7069 echo " "
7070 $echo $n "Checking to see if your system supports long double...$c" >&4
7071 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
7072 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7073         val="$define"
7074         echo " Yup, it does." >&4
7075 else
7076         val="$undef"
7077         echo " Nope, it doesn't." >&4
7078 fi
7079 $rm try.*
7080 set d_longdbl
7081 eval $setvar
7082
7083 : check for length of long double
7084 case "${d_longdbl}${longdblsize}" in
7085 $define)
7086         echo " "
7087         $echo $n "Checking to see how big your long doubles are...$c" >&4
7088         $cat >try.c <<'EOCP'
7089 #include <stdio.h>
7090 int main()
7091 {
7092         printf("%d\n", sizeof(long double));
7093 }
7094 EOCP
7095         set try
7096         if eval $compile; then
7097                 longdblsize=`./try`
7098                 $echo " $longdblsize bytes." >&4
7099         else
7100                 dflt='8'
7101                 echo " "
7102                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7103                 rp="What is the size of a long double (in bytes)?"
7104                 . ./myread
7105                 longdblsize="$ans"
7106         fi
7107         if $test "X$doublesize" = "X$longdblsize"; then
7108                 echo "(That isn't any different from an ordinary double.)"
7109         fi      
7110         ;;
7111 esac
7112 $rm -f try.c try
7113
7114 echo " "
7115
7116 if $test X"$d_longdbl" = X"$define"; then
7117
7118 echo "Checking how to print long doubles..." >&4
7119
7120 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7121         $cat >try.c <<'EOCP'
7122 #include <sys/types.h>
7123 #include <stdio.h>
7124 int main() {
7125   double d = 123.456;
7126   printf("%.3f\n", d);
7127 }
7128 EOCP
7129         set try
7130         if eval $compile; then
7131                 yyy=`./try$exe_ext`
7132                 case "$yyy" in
7133                 123.456)
7134                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7135                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7136                         echo "We will use %f."
7137                         ;;
7138                 esac
7139         fi
7140 fi
7141
7142 if $test X"$sPRIfldbl" = X; then
7143         $cat >try.c <<'EOCP'
7144 #include <sys/types.h>
7145 #include <stdio.h>
7146 int main() {
7147   long double d = 123.456;
7148   printf("%.3llf\n", d);
7149 }
7150 EOCP
7151         set try
7152         if eval $compile; then
7153                 yyy=`./try$exe_ext`
7154                 case "$yyy" in
7155                 123.456)
7156                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7157                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7158                         echo "We will use %llf."
7159                         ;;
7160                 esac
7161         fi
7162 fi
7163
7164 if $test X"$sPRIfldbl" = X; then
7165         $cat >try.c <<'EOCP'
7166 #include <sys/types.h>
7167 #include <stdio.h>
7168 int main() {
7169   long double d = 123.456;
7170   printf("%.3Lf\n", d);
7171 }
7172 EOCP
7173         set try
7174         if eval $compile; then
7175                 yyy=`./try$exe_ext`
7176                 case "$yyy" in
7177                 123.456)
7178                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7179                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7180                         echo "We will use %Lf."
7181                         ;;
7182                 esac
7183         fi
7184 fi
7185
7186 if $test X"$sPRIfldbl" = X; then
7187         $cat >try.c <<'EOCP'
7188 #include <sys/types.h>
7189 #include <stdio.h>
7190 int main() {
7191   long double d = 123.456;
7192   printf("%.3lf\n", d);
7193 }
7194 EOCP
7195         set try
7196         if eval $compile; then
7197                 yyy=`./try$exe_ext`
7198                 case "$yyy" in
7199                 123.456)
7200                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7201                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7202                         echo "We will use %lf."
7203                         ;;
7204                 esac
7205         fi
7206 fi
7207
7208 if $test X"$sPRIfldbl" = X; then
7209         echo "Cannot figure out how to print long doubles." >&4
7210 fi
7211
7212 $rm -f try try.*
7213
7214 fi # d_longdbl
7215
7216 case "$sPRIfldbl" in
7217 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7218         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7219         ;;
7220 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7221         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7222         ;;
7223 esac
7224
7225 : Initialize h_fcntl
7226 h_fcntl=false
7227
7228 : Initialize h_sysfile
7229 h_sysfile=false
7230
7231 : access call always available on UNIX
7232 set access d_access
7233 eval $inlibc
7234
7235 : locate the flags for 'access()'
7236 case "$d_access" in
7237 "$define")
7238         echo " "
7239         $cat >access.c <<'EOCP'
7240 #include <sys/types.h>
7241 #ifdef I_FCNTL
7242 #include <fcntl.h>
7243 #endif
7244 #ifdef I_SYS_FILE
7245 #include <sys/file.h>
7246 #endif
7247 #ifdef I_UNISTD
7248 #include <unistd.h>
7249 #endif
7250 int main() {
7251         exit(R_OK);
7252 }
7253 EOCP
7254         : check sys/file.h first, no particular reason here
7255         if $test `./findhdr sys/file.h` && \
7256                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7257                 h_sysfile=true;
7258                 echo "<sys/file.h> defines the *_OK access constants." >&4
7259         elif $test `./findhdr fcntl.h` && \
7260                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7261                 h_fcntl=true;
7262                 echo "<fcntl.h> defines the *_OK access constants." >&4
7263         elif $test `./findhdr unistd.h` && \
7264                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7265                 echo "<unistd.h> defines the *_OK access constants." >&4
7266         else
7267                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7268         fi
7269         ;;
7270 esac
7271 $rm -f access*
7272
7273 : see if accessx exists
7274 set accessx d_accessx
7275 eval $inlibc
7276
7277 : see if alarm exists
7278 set alarm d_alarm
7279 eval $inlibc
7280
7281 : see if atolf exists
7282 set atolf d_atolf
7283 eval $inlibc
7284
7285 : see if atoll exists
7286 set atoll d_atoll
7287 eval $inlibc
7288
7289 : Look for GNU-cc style attribute checking
7290 echo " "
7291 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7292 $cat >attrib.c <<'EOCP'
7293 #include <stdio.h>
7294 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7295 EOCP
7296 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7297         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7298                 echo "Your C compiler doesn't fully support __attribute__."
7299                 val="$undef"
7300         else
7301                 echo "Your C compiler supports __attribute__."
7302                 val="$define"
7303         fi
7304 else
7305         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7306         val="$undef"
7307 fi
7308 set d_attribut
7309 eval $setvar
7310 $rm -f attrib*
7311
7312 : see if bcmp exists
7313 set bcmp d_bcmp
7314 eval $inlibc
7315
7316 : see if bcopy exists
7317 set bcopy d_bcopy
7318 eval $inlibc
7319
7320 : see if this is a unistd.h system
7321 set unistd.h i_unistd
7322 eval $inhdr
7323
7324 : see if getpgrp exists
7325 set getpgrp d_getpgrp
7326 eval $inlibc
7327
7328 case "$d_getpgrp" in
7329 "$define")
7330         echo " "
7331         echo "Checking to see which flavor of getpgrp is in use..."
7332         $cat >set.c <<EOP
7333 #$i_unistd I_UNISTD
7334 #include <sys/types.h>
7335 #ifdef I_UNISTD
7336 #  include <unistd.h>
7337 #endif
7338 int main()
7339 {
7340         if (getuid() == 0) {
7341                 printf("(I see you are running Configure as super-user...)\n");
7342                 setuid(1);
7343         }
7344 #ifdef TRY_BSD_PGRP
7345         if (getpgrp(1) == 0)
7346                 exit(0);
7347 #else
7348         if (getpgrp() > 0)
7349                 exit(0);
7350 #endif
7351         exit(1);
7352 }
7353 EOP
7354         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7355                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7356                 val="$define"
7357         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7358                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7359                 val="$undef"
7360         else
7361                 echo "I can't seem to compile and run the test program."
7362                 if ./usg; then
7363                         xxx="a USG one, i.e. you use getpgrp()."
7364                 else
7365                         # SVR4 systems can appear rather BSD-ish.
7366                         case "$i_unistd" in
7367                         $undef)
7368                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7369                                 val="$define"
7370                                 ;;
7371                         $define)
7372                                 xxx="probably a USG one, i.e. you use getpgrp()."
7373                                 val="$undef"
7374                                 ;;
7375                         esac
7376                 fi
7377                 echo "Assuming your getpgrp is $xxx" >&4
7378         fi
7379         ;;
7380 *) val="$undef";;
7381 esac
7382 set d_bsdgetpgrp
7383 eval $setvar
7384 $rm -f set set.c
7385
7386 : see if setpgrp exists
7387 set setpgrp d_setpgrp
7388 eval $inlibc
7389
7390 case "$d_setpgrp" in
7391 "$define")
7392         echo " "
7393         echo "Checking to see which flavor of setpgrp is in use..."
7394         $cat >set.c <<EOP
7395 #$i_unistd I_UNISTD
7396 #include <sys/types.h>
7397 #ifdef I_UNISTD
7398 #  include <unistd.h>
7399 #endif
7400 int main()
7401 {
7402         if (getuid() == 0) {
7403                 printf("(I see you are running Configure as super-user...)\n");
7404                 setuid(1);
7405         }
7406 #ifdef TRY_BSD_PGRP
7407         if (-1 == setpgrp(1, 1))
7408                 exit(0);
7409 #else
7410         if (setpgrp() != -1)
7411                 exit(0);
7412 #endif
7413         exit(1);
7414 }
7415 EOP
7416         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7417                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7418                 val="$define"
7419         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7420                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7421                 val="$undef"
7422         else
7423                 echo "(I can't seem to compile and run the test program.)"
7424                 if ./usg; then
7425                         xxx="a USG one, i.e. you use setpgrp()."
7426                 else
7427                         # SVR4 systems can appear rather BSD-ish.
7428                         case "$i_unistd" in
7429                         $undef)
7430                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7431                                 val="$define"
7432                                 ;;
7433                         $define)
7434                                 xxx="probably a USG one, i.e. you use setpgrp()."
7435                                 val="$undef"
7436                                 ;;
7437                         esac
7438                 fi
7439                 echo "Assuming your setpgrp is $xxx" >&4
7440         fi
7441         ;;
7442 *) val="$undef";;
7443 esac
7444 set d_bsdsetpgrp
7445 eval $setvar
7446 $rm -f set set.c
7447 : see if bzero exists
7448 set bzero d_bzero
7449 eval $inlibc
7450
7451 : see if signal is declared as pointer to function returning int or void
7452 echo " "
7453 xxx=`./findhdr signal.h`
7454 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7455 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7456         echo "You have int (*signal())() instead of void." >&4
7457         val="$undef"
7458 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7459         echo "You have void (*signal())()." >&4
7460         val="$define"
7461 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7462         echo "You have int (*signal())() instead of void." >&4
7463         val="$undef"
7464 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7465         echo "You have void (*signal())()." >&4
7466         val="$define"
7467 else
7468         case "$d_voidsig" in
7469         '')
7470         echo "I can't determine whether signal handler returns void or int..." >&4
7471                 dflt=void
7472                 rp="What type does your signal handler return?"
7473                 . ./myread
7474                 case "$ans" in
7475                 v*) val="$define";;
7476                 *) val="$undef";;
7477                 esac;;
7478         "$define")
7479                 echo "As you already told me, signal handler returns void." >&4
7480                 val="$define"
7481                 ;;
7482         *)      echo "As you already told me, signal handler returns int." >&4
7483                 val="$undef"
7484                 ;;
7485         esac
7486 fi
7487 set d_voidsig
7488 eval $setvar
7489 case "$d_voidsig" in
7490 "$define") signal_t="void";;
7491 *) signal_t="int";;
7492 esac
7493 $rm -f $$.tmp
7494
7495 : check for ability to cast large floats to 32-bit ints.
7496 echo " "
7497 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7498 if $test "$intsize" -ge 4; then
7499         xxx=int
7500 else
7501         xxx=long
7502 fi
7503 $cat >try.c <<EOCP
7504 #include <stdio.h>
7505 #include <sys/types.h>
7506 #include <signal.h>
7507 $signal_t blech(s) int s; { exit(3); }
7508 int main()
7509 {
7510         $xxx i32;
7511         double f, g;
7512         int result = 0;
7513         char str[16];
7514         signal(SIGFPE, blech);
7515
7516         /* Don't let compiler optimize the test away.  Store the number 
7517            in a writable string for gcc to pass to sscanf under HP/UX.
7518         */
7519         sprintf(str, "2147483647");
7520         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7521         g = 10 * f;
7522         i32  = ($xxx) g;
7523
7524         /* x86 processors will probably give 0x8000 0000, which is a
7525        sign change.  We don't want that.  We want to mimic SPARC
7526            behavior here, which is to preserve the sign and give
7527            back 0x7fff ffff.
7528         */
7529         if (i32 != ($xxx) f)
7530                 result |= 1;
7531         exit(result);
7532 }
7533 EOCP
7534 set try
7535 if eval $compile_ok; then
7536         ./try
7537         yyy=$?
7538 else
7539         echo "(I can't seem to compile the test program--assuming it can't)"
7540         yyy=1
7541 fi
7542 case "$yyy" in
7543 0)      val="$define"
7544         echo "Yup, it can."
7545         ;;
7546 *)      val="$undef"
7547         echo "Nope, it can't."
7548         ;;
7549 esac
7550 set d_casti32
7551 eval $setvar
7552 $rm -f try try.*
7553
7554 : check for ability to cast negative floats to unsigned
7555 echo " "
7556 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7557 $cat >try.c <<EOCP
7558 #include <stdio.h>
7559 #include <sys/types.h>
7560 #include <signal.h>
7561 $signal_t blech(s) int s; { exit(7); }
7562 $signal_t blech_in_list(s) int s; { exit(4); }
7563 unsigned long dummy_long(p) unsigned long p; { return p; }
7564 unsigned int dummy_int(p) unsigned int p; { return p; }
7565 unsigned short dummy_short(p) unsigned short p; { return p; }
7566 int main()
7567 {
7568         double f;
7569         unsigned long along;
7570         unsigned int aint;
7571         unsigned short ashort;
7572         int result = 0;
7573         char str[16];
7574         
7575         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7576            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7577            optimized the whole file away
7578         */
7579         /* Store the number in a writable string for gcc to pass to 
7580            sscanf under HP/UX.
7581         */
7582         sprintf(str, "-123");
7583         sscanf(str, "%lf", &f);  /* f = -123.; */
7584
7585         signal(SIGFPE, blech);
7586         along = (unsigned long)f;
7587         aint = (unsigned int)f;
7588         ashort = (unsigned short)f;
7589         if (along != (unsigned long)-123)
7590                 result |= 1;
7591         if (aint != (unsigned int)-123)
7592                 result |= 1;
7593         if (ashort != (unsigned short)-123)
7594                 result |= 1;
7595         sprintf(str, "1073741824.");
7596         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7597         f = f + f;
7598         along = 0;
7599         along = (unsigned long)f;
7600         if (along != 0x80000000)
7601                 result |= 2;
7602         f -= 1.;
7603         along = 0;
7604         along = (unsigned long)f;
7605         if (along != 0x7fffffff)
7606                 result |= 1;
7607         f += 2.;
7608         along = 0;
7609         along = (unsigned long)f;
7610         if (along != 0x80000001)
7611                 result |= 2;
7612         if (result)
7613                 exit(result);
7614         signal(SIGFPE, blech_in_list);
7615         sprintf(str, "123.");
7616         sscanf(str, "%lf", &f);  /* f = 123.; */
7617         along = dummy_long((unsigned long)f);
7618         aint = dummy_int((unsigned int)f);
7619         ashort = dummy_short((unsigned short)f);
7620         if (along != (unsigned long)123)
7621                 result |= 4;
7622         if (aint != (unsigned int)123)
7623                 result |= 4;
7624         if (ashort != (unsigned short)123)
7625                 result |= 4;
7626         exit(result);
7627
7628 }
7629 EOCP
7630 set try
7631 if eval $compile_ok; then
7632         ./try
7633         castflags=$?
7634 else
7635         echo "(I can't seem to compile the test program--assuming it can't)"
7636         castflags=7
7637 fi
7638 case "$castflags" in
7639 0)      val="$define"
7640         echo "Yup, it can."
7641         ;;
7642 *)      val="$undef"
7643         echo "Nope, it can't."
7644         ;;
7645 esac
7646 set d_castneg
7647 eval $setvar
7648 $rm -f try.*
7649
7650 : see if vprintf exists
7651 echo " "
7652 if set vprintf val -f d_vprintf; eval $csym; $val; then
7653         echo 'vprintf() found.' >&4
7654         val="$define"
7655         $cat >vprintf.c <<'EOF'
7656 #include <varargs.h>
7657
7658 int main() { xxx("foo"); }
7659
7660 xxx(va_alist)
7661 va_dcl
7662 {
7663         va_list args;
7664         char buf[10];
7665
7666         va_start(args);
7667         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7668 }
7669 EOF
7670         set vprintf
7671         if eval $compile && ./vprintf; then
7672                 echo "Your vsprintf() returns (int)." >&4
7673                 val2="$undef"
7674         else
7675                 echo "Your vsprintf() returns (char*)." >&4
7676                 val2="$define"
7677         fi
7678 else
7679         echo 'vprintf() NOT found.' >&4
7680                 val="$undef"
7681                 val2="$undef"
7682 fi
7683 set d_vprintf
7684 eval $setvar
7685 val=$val2
7686 set d_charvspr
7687 eval $setvar
7688
7689 : see if chown exists
7690 set chown d_chown
7691 eval $inlibc
7692
7693 : see if chroot exists
7694 set chroot d_chroot
7695 eval $inlibc
7696
7697 : see if chsize exists
7698 set chsize d_chsize
7699 eval $inlibc
7700
7701 : check for const keyword
7702 echo " "
7703 echo 'Checking to see if your C compiler knows about "const"...' >&4
7704 $cat >const.c <<'EOCP'
7705 typedef struct spug { int drokk; } spug;
7706 int main()
7707 {
7708         const char *foo;
7709         const spug y;
7710 }
7711 EOCP
7712 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7713         val="$define"
7714         echo "Yup, it does."
7715 else
7716         val="$undef"
7717         echo "Nope, it doesn't."
7718 fi
7719 set d_const
7720 eval $setvar
7721
7722 : see if crypt exists
7723 echo " "
7724 if set crypt val -f d_crypt; eval $csym; $val; then
7725         echo 'crypt() found.' >&4
7726         val="$define"
7727         cryptlib=''
7728 else
7729         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7730         if $test -z "$cryptlib"; then
7731                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7732         else
7733                 cryptlib=-lcrypt
7734         fi
7735         if $test -z "$cryptlib"; then
7736                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7737         else
7738                 cryptlib=-lcrypt
7739         fi
7740         if $test -z "$cryptlib"; then
7741                 cryptlib=`./loc libcrypt$_a "" $libpth`
7742         else
7743                 cryptlib=-lcrypt
7744         fi
7745         if $test -z "$cryptlib"; then
7746                 echo 'crypt() NOT found.' >&4
7747                 val="$undef"
7748         else
7749                 val="$define"
7750         fi
7751 fi
7752 set d_crypt
7753 eval $setvar
7754
7755 : get csh whereabouts
7756 case "$csh" in
7757 'csh') val="$undef" ;;
7758 *) val="$define" ;;
7759 esac
7760 set d_csh
7761 eval $setvar
7762 : Respect a hint or command line value for full_csh.
7763 case "$full_csh" in
7764 '') full_csh=$csh ;;
7765 esac
7766
7767 : see if cuserid exists
7768 set cuserid d_cuserid
7769 eval $inlibc
7770
7771 : see if this is a limits.h system
7772 set limits.h i_limits
7773 eval $inhdr
7774
7775 : see if this is a float.h system
7776 set float.h i_float
7777 eval $inhdr
7778
7779 : See if number of significant digits in a double precision number is known
7780 echo " "
7781 $cat >dbl_dig.c <<EOM
7782 #$i_limits I_LIMITS
7783 #$i_float I_FLOAT
7784 #ifdef I_LIMITS
7785 #include <limits.h>
7786 #endif
7787 #ifdef I_FLOAT
7788 #include <float.h>
7789 #endif
7790 #ifdef DBL_DIG
7791 printf("Contains DBL_DIG");
7792 #endif
7793 EOM
7794 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7795 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7796         echo "DBL_DIG found." >&4
7797         val="$define"
7798 else
7799         echo "DBL_DIG NOT found." >&4
7800         val="$undef"
7801 fi
7802 $rm -f dbl_dig.?
7803 set d_dbl_dig
7804 eval $setvar
7805
7806 : see if difftime exists
7807 set difftime d_difftime
7808 eval $inlibc
7809
7810 : see if this is a dirent system
7811 echo " "
7812 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7813         val="$define"
7814         echo "<dirent.h> found." >&4
7815 else
7816         val="$undef"
7817         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7818                 echo "<sys/dir.h> found." >&4
7819                 echo " "
7820         else
7821                 xinc=`./findhdr sys/ndir.h`
7822         fi
7823         echo "<dirent.h> NOT found." >&4
7824 fi
7825 set i_dirent
7826 eval $setvar
7827
7828 : Look for type of directory structure.
7829 echo " "
7830 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7831
7832 case "$direntrytype" in
7833 ''|' ')
7834         case "$i_dirent" in
7835         $define) guess1='struct dirent' ;;
7836         *) guess1='struct direct'  ;;
7837         esac
7838         ;;
7839 *)      guess1="$direntrytype"
7840         ;;
7841 esac
7842
7843 case "$guess1" in
7844 'struct dirent') guess2='struct direct' ;;
7845 *) guess2='struct dirent' ;;
7846 esac
7847                 
7848 if $contains "$guess1" try.c >/dev/null 2>&1; then
7849         direntrytype="$guess1"
7850         echo "Your directory entries are $direntrytype." >&4
7851 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7852         direntrytype="$guess2"
7853         echo "Your directory entries seem to be $direntrytype." >&4
7854 else
7855         echo "I don't recognize your system's directory entries." >&4
7856         rp="What type is used for directory entries on this system?"
7857         dflt="$guess1"
7858         . ./myread
7859         direntrytype="$ans"
7860 fi
7861 $rm -f try.c
7862
7863
7864 : see if the directory entry stores field length
7865 echo " "
7866 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7867 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7868         echo "Good, your directory entry keeps length information in d_namlen." >&4
7869         val="$define"
7870 else
7871         echo "Your directory entry does not know about the d_namlen field." >&4
7872         val="$undef"
7873 fi
7874 set d_dirnamlen
7875 eval $setvar
7876 $rm -f try.c
7877
7878 : see if dlerror exists
7879 xxx_runnm="$runnm"
7880 runnm=false
7881 set dlerror d_dlerror
7882 eval $inlibc
7883 runnm="$xxx_runnm"
7884
7885 : see if dlfcn is available
7886 set dlfcn.h i_dlfcn
7887 eval $inhdr
7888
7889 case "$usedl" in
7890 $define|y|true)
7891         $cat << EOM
7892
7893 On a few systems, the dynamically loaded modules that perl generates and uses
7894 will need a different extension than shared libs. The default will probably
7895 be appropriate.
7896
7897 EOM
7898         case "$dlext" in
7899         '')     dflt="$so" ;;
7900         *)      dflt="$dlext" ;;
7901         esac
7902         rp='What is the extension of dynamically loaded modules'
7903         . ./myread
7904         dlext="$ans"
7905         ;;
7906 *)
7907         dlext="none"
7908         ;;
7909 esac
7910
7911 : Check if dlsym need a leading underscore
7912 echo " "
7913 val="$undef"
7914
7915 case "$dlsrc" in
7916 dl_dlopen.xs)
7917         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7918         $cat >dyna.c <<'EOM'
7919 fred () { }
7920 EOM
7921
7922 $cat >fred.c<<EOM
7923
7924 #include <stdio.h>
7925 #$i_dlfcn I_DLFCN
7926 #ifdef I_DLFCN
7927 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7928 #else
7929 #include <sys/types.h>
7930 #include <nlist.h>
7931 #include <link.h>
7932 #endif
7933
7934 extern int fred() ;
7935
7936 int main()
7937 {
7938     void * handle ;
7939     void * symbol ;
7940 #ifndef RTLD_LAZY
7941     int mode = 1 ;
7942 #else
7943     int mode = RTLD_LAZY ;
7944 #endif
7945     handle = dlopen("./dyna.$dlext", mode) ;
7946     if (handle == NULL) {
7947         printf ("1\n") ;
7948         fflush (stdout) ;
7949         exit(0);
7950     }
7951     symbol = dlsym(handle, "fred") ;
7952     if (symbol == NULL) {
7953         /* try putting a leading underscore */
7954         symbol = dlsym(handle, "_fred") ;
7955         if (symbol == NULL) {
7956             printf ("2\n") ;
7957             fflush (stdout) ;
7958             exit(0);
7959         }
7960         printf ("3\n") ;
7961     }
7962     else
7963         printf ("4\n") ;
7964     fflush (stdout) ;
7965     exit(0);
7966 }
7967 EOM
7968         : Call the object file tmp-dyna.o in case dlext=o.
7969         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7970                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7971                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7972                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7973                 xxx=`./fred`
7974                 case $xxx in
7975                 1)      echo "Test program failed using dlopen." >&4
7976                         echo "Perhaps you should not use dynamic loading." >&4;;
7977                 2)      echo "Test program failed using dlsym." >&4
7978                         echo "Perhaps you should not use dynamic loading." >&4;;
7979                 3)      echo "dlsym needs a leading underscore" >&4
7980                         val="$define" ;;
7981                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7982                 esac
7983         else
7984                 echo "I can't compile and run the test program." >&4
7985                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
7986         fi
7987         ;;
7988 esac
7989                 
7990 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7991
7992 set d_dlsymun
7993 eval $setvar
7994
7995 hasproto='varname=$1; func=$2; shift; shift;
7996 while $test $# -ge 2; do
7997         case "$1" in
7998         $define) echo "#include <$2>";;
7999         esac ;
8000     shift 2;
8001 done > try.c;
8002 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8003 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8004         echo "$func() prototype found.";
8005         val="$define";
8006 else
8007         echo "$func() prototype NOT found.";
8008         val="$undef";
8009 fi;
8010 set $varname;
8011 eval $setvar;
8012 $rm -f try.c tryout.c'
8013
8014 : see if prototype for drand48 is available
8015 echo " "
8016 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8017 eval $hasproto
8018
8019 : see if dup2 exists
8020 set dup2 d_dup2
8021 eval $inlibc
8022
8023 : see if eaccess exists
8024 set eaccess d_eaccess
8025 eval $inlibc
8026
8027 : see if endgrent exists
8028 set endgrent d_endgrent
8029 eval $inlibc
8030
8031 : see if endhostent exists
8032 set endhostent d_endhent
8033 eval $inlibc
8034
8035 : see if endnetent exists
8036 set endnetent d_endnent
8037 eval $inlibc
8038
8039 : see if endprotoent exists
8040 set endprotoent d_endpent
8041 eval $inlibc
8042
8043 : see if endpwent exists
8044 set endpwent d_endpwent
8045 eval $inlibc
8046
8047 : see if endservent exists
8048 set endservent d_endsent
8049 eval $inlibc
8050
8051 : see if endspent exists
8052 set endspent d_endspent
8053 eval $inlibc
8054
8055 : Locate the flags for 'open()'
8056 echo " "
8057 $cat >open3.c <<'EOCP'
8058 #include <sys/types.h>
8059 #ifdef I_FCNTL
8060 #include <fcntl.h>
8061 #endif
8062 #ifdef I_SYS_FILE
8063 #include <sys/file.h>
8064 #endif
8065 int main() {
8066         if(O_RDONLY);
8067 #ifdef O_TRUNC
8068         exit(0);
8069 #else
8070         exit(1);
8071 #endif
8072 }
8073 EOCP
8074 : check sys/file.h first to get FREAD on Sun
8075 if $test `./findhdr sys/file.h` && \
8076                 set open3 -DI_SYS_FILE && eval $compile; then
8077         h_sysfile=true;
8078         echo "<sys/file.h> defines the O_* constants..." >&4
8079         if ./open3; then
8080                 echo "and you have the 3 argument form of open()." >&4
8081                 val="$define"
8082         else
8083                 echo "but not the 3 argument form of open().  Oh, well." >&4
8084                 val="$undef"
8085         fi
8086 elif $test `./findhdr fcntl.h` && \
8087                 set open3 -DI_FCNTL && eval $compile; then
8088         h_fcntl=true;
8089         echo "<fcntl.h> defines the O_* constants..." >&4
8090         if ./open3; then
8091                 echo "and you have the 3 argument form of open()." >&4
8092                 val="$define"
8093         else
8094                 echo "but not the 3 argument form of open().  Oh, well." >&4
8095                 val="$undef"
8096         fi
8097 else
8098         val="$undef"
8099         echo "I can't find the O_* constant definitions!  You got problems." >&4
8100 fi
8101 set d_open3
8102 eval $setvar
8103 $rm -f open3*
8104
8105 : check for non-blocking I/O stuff
8106 case "$h_sysfile" in
8107 true) echo "#include <sys/file.h>" > head.c;;
8108 *)
8109         case "$h_fcntl" in
8110         true) echo "#include <fcntl.h>" > head.c;;
8111         *) echo "#include <sys/fcntl.h>" > head.c;;
8112         esac
8113         ;;
8114 esac
8115 echo " "
8116 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8117 case "$o_nonblock" in
8118 '')
8119         $cat head.c > try.c
8120         $cat >>try.c <<'EOCP'
8121 int main() {
8122 #ifdef O_NONBLOCK
8123         printf("O_NONBLOCK\n");
8124         exit(0);
8125 #endif
8126 #ifdef O_NDELAY
8127         printf("O_NDELAY\n");
8128         exit(0);
8129 #endif
8130 #ifdef FNDELAY
8131         printf("FNDELAY\n");
8132         exit(0);
8133 #endif
8134         exit(0);
8135 }
8136 EOCP
8137         set try
8138         if eval $compile_ok; then
8139                 o_nonblock=`./try`
8140                 case "$o_nonblock" in
8141                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8142                 *) echo "Seems like we can use $o_nonblock.";;
8143                 esac
8144         else
8145                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8146         fi
8147         ;;
8148 *) echo "Using $hint value $o_nonblock.";;
8149 esac
8150 $rm -f try try.* .out core
8151
8152 echo " "
8153 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8154 case "$eagain" in
8155 '')
8156         $cat head.c > try.c
8157         $cat >>try.c <<EOCP
8158 #include <errno.h>
8159 #include <sys/types.h>
8160 #include <signal.h>
8161 #define MY_O_NONBLOCK $o_nonblock
8162 #ifndef errno  /* XXX need better Configure test */
8163 extern int errno;
8164 #endif
8165 $signal_t blech(x) int x; { exit(3); }
8166 EOCP
8167         $cat >> try.c <<'EOCP'
8168 int main()
8169 {
8170         int pd[2];
8171         int pu[2];
8172         char buf[1];
8173         char string[100];
8174
8175         pipe(pd);       /* Down: child -> parent */
8176         pipe(pu);       /* Up: parent -> child */
8177         if (0 != fork()) {
8178                 int ret;
8179                 close(pd[1]);   /* Parent reads from pd[0] */
8180                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8181                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8182                         exit(1);
8183                 signal(SIGALRM, blech);
8184                 alarm(5);
8185                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8186                         exit(2);
8187                 sprintf(string, "%d\n", ret);
8188                 write(2, string, strlen(string));
8189                 alarm(0);
8190 #ifdef EAGAIN
8191                 if (errno == EAGAIN) {
8192                         printf("EAGAIN\n");
8193                         goto ok;
8194                 }
8195 #endif
8196 #ifdef EWOULDBLOCK
8197                 if (errno == EWOULDBLOCK)
8198                         printf("EWOULDBLOCK\n");
8199 #endif
8200         ok:
8201                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8202                 sleep(2);                               /* Give it time to close our pipe */
8203                 alarm(5);
8204                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8205                 alarm(0);
8206                 sprintf(string, "%d\n", ret);
8207                 write(3, string, strlen(string));
8208                 exit(0);
8209         }
8210
8211         close(pd[0]);                   /* We write to pd[1] */
8212         close(pu[1]);                   /* We read from pu[0] */
8213         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8214         close(pd[1]);                   /* Pipe pd is now fully closed! */
8215         exit(0);                                /* Bye bye, thank you for playing! */
8216 }
8217 EOCP
8218         set try
8219         if eval $compile_ok; then
8220                 echo "$startsh" >mtry
8221                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8222                 chmod +x mtry
8223                 ./mtry >/dev/null 2>&1
8224                 case $? in
8225                 0) eagain=`$cat try.out`;;
8226                 1) echo "Could not perform non-blocking setting!";;
8227                 2) echo "I did a successful read() for something that was not there!";;
8228                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8229                 *) echo "Something terribly wrong happened during testing.";;
8230                 esac
8231                 rd_nodata=`$cat try.ret`
8232                 echo "A read() system call with no data present returns $rd_nodata."
8233                 case "$rd_nodata" in
8234                 0|-1) ;;
8235                 *)
8236                         echo "(That's peculiar, fixing that to be -1.)"
8237                         rd_nodata=-1
8238                         ;;
8239                 esac
8240                 case "$eagain" in
8241                 '')
8242                         echo "Forcing errno EAGAIN on read() with no data available."
8243                         eagain=EAGAIN
8244                         ;;
8245                 *)
8246                         echo "Your read() sets errno to $eagain when no data is available."
8247                         ;;
8248                 esac
8249                 status=`$cat try.err`
8250                 case "$status" in
8251                 0) echo "And it correctly returns 0 to signal EOF.";;
8252                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8253                 *) echo "However, your read() returns '$status' on EOF??";;
8254                 esac
8255                 val="$define"
8256                 if test "$status" = "$rd_nodata"; then
8257                         echo "WARNING: you can't distinguish between EOF and no data!"
8258                         val="$undef"
8259                 fi
8260         else
8261                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8262                 eagain=EAGAIN
8263         fi
8264         set d_eofnblk
8265         eval $setvar
8266         ;;
8267 *)
8268         echo "Using $hint value $eagain."
8269         echo "Your read() returns $rd_nodata when no data is present."
8270         case "$d_eofnblk" in
8271         "$define") echo "And you can see EOF because read() returns 0.";;
8272         "$undef") echo "But you can't see EOF status from read() returned value.";;
8273         *)
8274                 echo "(Assuming you can't see EOF status from read anyway.)"
8275                 d_eofnblk=$undef
8276                 ;;
8277         esac
8278         ;;
8279 esac
8280 $rm -f try try.* .out core head.c mtry
8281
8282 : see if fchmod exists
8283 set fchmod d_fchmod
8284 eval $inlibc
8285
8286 : see if fchown exists
8287 set fchown d_fchown
8288 eval $inlibc
8289
8290 : see if this is an fcntl system
8291 set fcntl d_fcntl
8292 eval $inlibc
8293
8294 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8295 while $test $# -ge 2; do
8296         case "$1" in
8297         $define) echo "#include <$2>";;
8298         esac ;
8299     shift 2;
8300 done > try.c;
8301 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8302 set try;
8303 if eval $compile; then
8304         val="$define";
8305 else
8306         val="$undef";
8307 fi;
8308 set $varname;
8309 eval $setvar;
8310 $rm -f try.c try.o'
8311
8312 socketlib=''
8313 sockethdr=''
8314 : see whether socket exists
8315 echo " "
8316 $echo $n "Hmm... $c" >&4
8317 if set socket val -f d_socket; eval $csym; $val; then
8318         echo "Looks like you have Berkeley networking support." >&4
8319         d_socket="$define"
8320         if set setsockopt val -f; eval $csym; $val; then
8321                 d_oldsock="$undef"
8322         else
8323                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8324                 d_oldsock="$define"
8325         fi
8326 else
8327         if $contains socklib libc.list >/dev/null 2>&1; then
8328                 echo "Looks like you have Berkeley networking support." >&4
8329                 d_socket="$define"
8330                 : we will have to assume that it supports the 4.2 BSD interface
8331                 d_oldsock="$undef"
8332         else
8333                 echo "You don't have Berkeley networking in libc$_a..." >&4
8334                 if test "X$d_socket" = "X$define"; then
8335                    echo "...but you seem to believe that you have sockets." >&4
8336                 else
8337                         for net in net socket
8338                         do
8339                                 if test -f /usr/lib/lib$net$_a; then
8340                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8341                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8342                                         if $contains socket libc.list >/dev/null 2>&1; then
8343                                                 d_socket="$define"
8344                                                 socketlib="-l$net"
8345                                                 case "$net" in
8346                                                 net)
8347                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8348                                                         sockethdr="-I/usr/netinclude"
8349                                                         ;;
8350                                                 esac
8351                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8352                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8353                                                         d_oldsock="$undef"
8354                                                 else
8355                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8356                                                         d_oldsock="$define"
8357                                                 fi
8358                                                 break
8359                                         fi
8360                                 fi
8361                         done
8362                         if test "X$d_socket" != "X$define"; then
8363                            echo "or anywhere else I see." >&4
8364                            d_socket="$undef"
8365                            d_oldsock="$undef"
8366                         fi
8367                 fi
8368         fi
8369 fi
8370
8371 : see if socketpair exists
8372 set socketpair d_sockpair
8373 eval $inlibc
8374
8375
8376 echo " "
8377 echo "Checking the availability of certain socket constants..." >& 4
8378 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8379         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8380         $cat >try.c <<EOF
8381 #include <sys/types.h>
8382 #include <sys/socket.h>
8383 int main() {
8384     int i = $ENUM;
8385 }
8386 EOF
8387         val="$undef"
8388         set try; if eval $compile; then
8389                 val="$define"
8390         fi
8391         set d_${enum}; eval $setvar
8392         $rm -f try.c try
8393 done
8394
8395 : see if sys/select.h has to be included
8396 set sys/select.h i_sysselct
8397 eval $inhdr
8398
8399 : see if we should include time.h, sys/time.h, or both
8400 echo " "
8401 if test "X$timeincl" = X; then
8402         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8403         $echo $n "I'm now running the test program...$c"
8404         $cat >try.c <<'EOCP'
8405 #include <sys/types.h>
8406 #ifdef I_TIME
8407 #include <time.h>
8408 #endif
8409 #ifdef I_SYSTIME
8410 #ifdef SYSTIMEKERNEL
8411 #define KERNEL
8412 #endif
8413 #include <sys/time.h>
8414 #endif
8415 #ifdef I_SYSSELECT
8416 #include <sys/select.h>
8417 #endif
8418 int main()
8419 {
8420         struct tm foo;
8421 #ifdef S_TIMEVAL
8422         struct timeval bar;
8423 #endif
8424 #ifdef S_TIMEZONE
8425         struct timezone tzp;
8426 #endif
8427         if (foo.tm_sec == foo.tm_sec)
8428                 exit(0);
8429 #ifdef S_TIMEVAL
8430         if (bar.tv_sec == bar.tv_sec)
8431                 exit(0);
8432 #endif
8433         exit(1);
8434 }
8435 EOCP
8436         flags=''
8437         for s_timezone in '-DS_TIMEZONE' ''; do
8438         sysselect=''
8439         for s_timeval in '-DS_TIMEVAL' ''; do
8440         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8441         for i_time in '' '-DI_TIME'; do
8442         for i_systime in '-DI_SYSTIME' ''; do
8443                 case "$flags" in
8444                 '') $echo $n ".$c"
8445                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8446                         if eval $compile; then
8447                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8448                                 shift
8449                                 flags="$*"
8450                                 echo " "
8451                                 $echo $n "Succeeded with $flags$c"
8452                         fi
8453                         ;;
8454                 esac
8455         done
8456         done
8457         done
8458         done
8459         done
8460         timeincl=''
8461         echo " "
8462         case "$flags" in
8463         *SYSTIMEKERNEL*) i_systimek="$define"
8464                 timeincl=`./findhdr sys/time.h`
8465                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8466         *) i_systimek="$undef";;
8467         esac
8468         case "$flags" in
8469         *I_TIME*) i_time="$define"
8470                 timeincl=`./findhdr time.h`" $timeincl"
8471                 echo "We'll include <time.h>." >&4;;
8472         *) i_time="$undef";;
8473         esac
8474         case "$flags" in
8475         *I_SYSTIME*) i_systime="$define"
8476                 timeincl=`./findhdr sys/time.h`" $timeincl"
8477                 echo "We'll include <sys/time.h>." >&4;;
8478         *) i_systime="$undef";;
8479         esac
8480         $rm -f try.c try
8481 fi
8482
8483 : check for fd_set items
8484 $cat <<EOM
8485
8486 Checking to see how well your C compiler handles fd_set and friends ...
8487 EOM
8488 $cat >fd_set.c <<EOCP
8489 #$i_systime I_SYS_TIME
8490 #$i_sysselct I_SYS_SELECT
8491 #$d_socket HAS_SOCKET
8492 #include <sys/types.h>
8493 #ifdef HAS_SOCKET
8494 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8495 #endif
8496 #ifdef I_SYS_TIME
8497 #include <sys/time.h>
8498 #endif
8499 #ifdef I_SYS_SELECT
8500 #include <sys/select.h>
8501 #endif
8502 int main() {
8503         fd_set fds;
8504
8505 #ifdef TRYBITS
8506         if(fds.fds_bits);
8507 #endif
8508
8509 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8510         exit(0);
8511 #else
8512         exit(1);
8513 #endif
8514 }
8515 EOCP
8516 set fd_set -DTRYBITS
8517 if eval $compile; then
8518         d_fds_bits="$define"
8519         d_fd_set="$define"
8520         echo "Well, your system knows about the normal fd_set typedef..." >&4
8521         if ./fd_set; then
8522                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8523                 d_fd_macros="$define"
8524         else
8525                 $cat >&4 <<'EOM'
8526 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8527 EOM
8528                 d_fd_macros="$undef"
8529         fi
8530 else
8531         $cat <<'EOM'
8532 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8533 EOM
8534         set fd_set
8535         if eval $compile; then
8536                 d_fds_bits="$undef"
8537                 d_fd_set="$define"
8538                 echo "Well, your system has some sort of fd_set available..." >&4
8539                 if ./fd_set; then
8540                         echo "and you have the normal fd_set macros." >&4
8541                         d_fd_macros="$define"
8542                 else
8543                         $cat <<'EOM'
8544 but not the normal fd_set macros!  Gross!  More work for me...
8545 EOM
8546                         d_fd_macros="$undef"
8547                 fi
8548         else
8549         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8550                 d_fd_set="$undef"
8551                 d_fds_bits="$undef"
8552                 d_fd_macros="$undef"
8553         fi
8554 fi
8555 $rm -f fd_set*
8556
8557 : see if fgetpos exists
8558 set fgetpos d_fgetpos
8559 eval $inlibc
8560
8561 : see if flock exists
8562 set flock d_flock
8563 eval $inlibc
8564
8565 : see if fork exists
8566 set fork d_fork
8567 eval $inlibc
8568
8569 : see if pathconf exists
8570 set pathconf d_pathconf
8571 eval $inlibc
8572
8573 : see if fpathconf exists
8574 set fpathconf d_fpathconf
8575 eval $inlibc
8576
8577
8578 : see if llseek exists
8579 set llseek d_llseek
8580 eval $inlibc
8581
8582 : check for off64_t
8583 echo " "
8584 $echo $n "Checking to see if your system supports off64_t...$c" >&4
8585 $cat >try.c <<EOCP
8586 #include <sys/types.h>
8587 #include <unistd.h>
8588 off64_t foo() { off64_t x; x = 7; return x; }'
8589 EOCP
8590 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8591         val="$define"
8592         echo " Yup, it does." >&4
8593 else
8594         val="$undef"
8595         echo " Nope, it doesn't." >&4
8596 fi
8597 $rm -f try.*
8598 set d_off64_t
8599 eval $setvar
8600
8601 : check for fpos64_t
8602 echo " "
8603 $echo $n "Checking to see if your system supports fpos64_t...$c" >&4
8604 $cat >try.c <<EOCP
8605 #include <sys/stdio.h>
8606 fpos64_t foo() { fpos64_t x; x = 7; return x; }'
8607 EOCP
8608 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8609         val="$define"
8610         echo " Yup, it does." >&4
8611 else
8612         val="$undef"
8613         echo " Nope, it doesn't." >&4
8614 fi
8615 $rm -f try.*
8616 set d_fpos64_t
8617 eval $setvar
8618
8619 hasstruct='varname=$1; struct=$2; shift; shift;
8620 while $test $# -ge 2; do
8621         case "$1" in
8622         $define) echo "#include <$2>";;
8623         esac ;
8624     shift 2;
8625 done > try.c;
8626 echo "int main () { struct $struct foo; }" >> try.c;
8627 set try;
8628 if eval $compile; then
8629         val="$define";
8630 else
8631         val="$undef";
8632 fi;
8633 set $varname;
8634 eval $setvar;
8635 $rm -f try.c try.o'
8636
8637 : see if this is a sys/param system
8638 set sys/param.h i_sysparam
8639 eval $inhdr
8640
8641 : see if this is a sys/mount.h system
8642 set sys/mount.h i_sysmount
8643 eval $inhdr
8644
8645 : see if sys/types.h has to be included
8646 set sys/types.h i_systypes
8647 eval $inhdr
8648
8649
8650 echo " "
8651 echo "Checking to see if your system supports struct fs_data..." >&4
8652 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8653 eval $hasstruct
8654 case "$d_fs_data_s" in
8655 "$define")      echo "Yup, it does."     >&4 ;;
8656 *)              echo "Nope, it doesn't." >&4 ;;
8657 esac
8658
8659 : see if fseeko exists
8660 set fseeko d_fseeko
8661 eval $inlibc
8662
8663 : see if fsetpos exists
8664 set fsetpos d_fsetpos
8665 eval $inlibc
8666
8667
8668 : see if fstatfs exists
8669 set fstatfs d_fstatfs
8670 eval $inlibc
8671
8672
8673 : see if statvfs exists
8674 set statvfs d_statvfs
8675 eval $inlibc
8676
8677 : see if fstatvfs exists
8678 set fstatvfs d_fstatvfs
8679 eval $inlibc
8680
8681
8682 : see if ftello exists
8683 set ftello d_ftello
8684 eval $inlibc
8685
8686 : see if getgrent exists
8687 set getgrent d_getgrent
8688 eval $inlibc
8689
8690 : see if gethostbyaddr exists
8691 set gethostbyaddr d_gethbyaddr
8692 eval $inlibc
8693
8694 : see if gethostbyname exists
8695 set gethostbyname d_gethbyname
8696 eval $inlibc
8697
8698 : see if gethostent exists
8699 set gethostent d_gethent
8700 eval $inlibc
8701
8702 : see how we will look up host name
8703 echo " "
8704 call=''
8705 if set gethostname val -f d_gethname; eval $csym; $val; then
8706         echo 'gethostname() found.' >&4
8707         d_gethname="$define"
8708         call=gethostname
8709 fi
8710 if set uname val -f d_uname; eval $csym; $val; then
8711         if ./xenix; then
8712                 $cat <<'EOM'
8713 uname() was found, but you're running xenix, and older versions of xenix
8714 have a broken uname(). If you don't really know whether your xenix is old
8715 enough to have a broken system call, use the default answer.
8716
8717 EOM
8718                 dflt=y
8719                 case "$d_uname" in
8720                 "$define") dflt=n;;
8721                 esac
8722                 rp='Is your uname() broken?'
8723                 . ./myread
8724                 case "$ans" in
8725                 n*) d_uname="$define"; call=uname;;
8726                 esac
8727         else
8728                 echo 'uname() found.' >&4
8729                 d_uname="$define"
8730                 case "$call" in
8731                 '') call=uname ;;
8732                 esac
8733         fi
8734 fi
8735 case "$d_gethname" in
8736 '') d_gethname="$undef";;
8737 esac
8738 case "$d_uname" in
8739 '') d_uname="$undef";;
8740 esac
8741 case "$d_uname$d_gethname" in
8742 *define*)
8743         dflt=n
8744         cat <<EOM
8745  
8746 Every now and then someone has a $call() that lies about the hostname
8747 but can't be fixed for political or economic reasons.  If you wish, I can
8748 pretend $call() isn't there and maybe compute hostname at run-time
8749 thanks to the '$phostname' command.
8750
8751 EOM
8752         rp="Shall I ignore $call() from now on?"
8753         . ./myread
8754         case "$ans" in
8755         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8756         esac;;
8757 esac
8758 case "$phostname" in
8759 '') aphostname='';;
8760 *) case "$aphostname" in
8761         /*) ;;
8762         *) set X $phostname
8763                 shift
8764                 file=$1
8765                 shift
8766                 file=`./loc $file $file $pth`
8767                 aphostname=`echo $file $*`
8768                 ;;
8769         esac
8770         ;;
8771 esac
8772 case "$d_uname$d_gethname" in
8773 *define*) ;;
8774 *)
8775         case "$phostname" in
8776         '')
8777                 echo "There will be no way for $package to get your hostname." >&4;;
8778         *)
8779         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8780                 ;;
8781         esac;;
8782 esac
8783 case "$d_phostname" in
8784 '') d_phostname="$undef";;
8785 esac
8786
8787 : see if this is a netdb.h system
8788 set netdb.h i_netdb
8789 eval $inhdr
8790
8791 : see if prototypes for various gethostxxx netdb.h functions are available
8792 echo " "
8793 set d_gethostprotos gethostent $i_netdb netdb.h
8794 eval $hasproto
8795
8796 : see if getlogin exists
8797 set getlogin d_getlogin
8798 eval $inlibc
8799
8800 : see if getmnt exists
8801 set getmnt d_getmnt
8802 eval $inlibc
8803
8804 : see if getmntent exists
8805 set getmntent d_getmntent
8806 eval $inlibc
8807
8808 : see if getnetbyaddr exists
8809 set getnetbyaddr d_getnbyaddr
8810 eval $inlibc
8811
8812 : see if getnetbyname exists
8813 set getnetbyname d_getnbyname
8814 eval $inlibc
8815
8816 : see if getnetent exists
8817 set getnetent d_getnent
8818 eval $inlibc
8819
8820 : see if prototypes for various getnetxxx netdb.h functions are available
8821 echo " "
8822 set d_getnetprotos getnetent $i_netdb netdb.h
8823 eval $hasproto
8824
8825
8826 : see if getprotobyname exists
8827 set getprotobyname d_getpbyname
8828 eval $inlibc
8829
8830 : see if getprotobynumber exists
8831 set getprotobynumber d_getpbynumber
8832 eval $inlibc
8833
8834 : see if getprotoent exists
8835 set getprotoent d_getpent
8836 eval $inlibc
8837
8838 : see if getpgid exists
8839 set getpgid d_getpgid
8840 eval $inlibc
8841
8842 : see if getpgrp2 exists
8843 set getpgrp2 d_getpgrp2
8844 eval $inlibc
8845
8846 : see if getppid exists
8847 set getppid d_getppid
8848 eval $inlibc
8849
8850 : see if getpriority exists
8851 set getpriority d_getprior
8852 eval $inlibc
8853
8854 : see if prototypes for various getprotoxxx netdb.h functions are available
8855 echo " "
8856 set d_getprotoprotos getprotoent $i_netdb netdb.h
8857 eval $hasproto
8858
8859 : see if getpwent exists
8860 set getpwent d_getpwent
8861 eval $inlibc
8862
8863
8864 : see if getservbyname exists
8865 set getservbyname d_getsbyname
8866 eval $inlibc
8867
8868 : see if getservbyport exists
8869 set getservbyport d_getsbyport
8870 eval $inlibc
8871
8872 : see if getservent exists
8873 set getservent d_getsent
8874 eval $inlibc
8875
8876 : see if prototypes for various getservxxx netdb.h functions are available
8877 echo " "
8878 set d_getservprotos getservent $i_netdb netdb.h
8879 eval $hasproto
8880
8881 : see if getspent exists
8882 set getspent d_getspent
8883 eval $inlibc
8884
8885 : see if getspnam exists
8886 set getspnam d_getspnam
8887 eval $inlibc
8888
8889 : see if gettimeofday or ftime exists
8890 set gettimeofday d_gettimeod
8891 eval $inlibc
8892 case "$d_gettimeod" in
8893 "$undef")
8894         set ftime d_ftime 
8895         eval $inlibc
8896         ;;
8897 *)
8898         val="$undef"; set d_ftime; eval $setvar
8899         ;;
8900 esac
8901 case "$d_gettimeod$d_ftime" in
8902 "$undef$undef")
8903         echo " "
8904         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8905         ;;
8906 esac
8907
8908 : see if this is an grp system
8909 set grp.h i_grp
8910 eval $inhdr
8911
8912 case "$i_grp" in
8913 $define)
8914         xxx=`./findhdr grp.h`
8915         $cppstdin $cppflags $cppminus < $xxx >$$.h
8916
8917         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8918                 val="$define"
8919         else
8920                 val="$undef"
8921         fi
8922         set d_grpasswd
8923         eval $setvar
8924
8925         $rm -f $$.h
8926         ;;
8927 *)
8928         val="$undef";
8929         set d_grpasswd; eval $setvar
8930         ;;
8931 esac
8932
8933 : see if hasmntopt exists
8934 set hasmntopt d_hasmntopt
8935 eval $inlibc
8936
8937 : see if this is a netinet/in.h or sys/in.h system
8938 set netinet/in.h i_niin sys/in.h i_sysin
8939 eval $inhdr
8940
8941 : see if arpa/inet.h has to be included
8942 set arpa/inet.h i_arpainet
8943 eval $inhdr
8944
8945 : see if htonl --and friends-- exists
8946 val=''
8947 set htonl val
8948 eval $inlibc
8949
8950 : Maybe they are macros.
8951 case "$val" in
8952 $undef)
8953         $cat >htonl.c <<EOM
8954 #include <stdio.h>
8955 #include <sys/types.h>
8956 #$i_niin I_NETINET_IN
8957 #$i_sysin I_SYS_IN
8958 #$i_arpainet I_ARPA_INET
8959 #ifdef I_NETINET_IN
8960 #include <netinet/in.h>
8961 #endif
8962 #ifdef I_SYS_IN
8963 #include <sys/in.h>
8964 #endif
8965 #ifdef I_ARPA_INET
8966 #include <arpa/inet.h>
8967 #endif
8968 #ifdef htonl
8969 printf("Defined as a macro.");
8970 #endif
8971 EOM
8972         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8973         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8974                 val="$define"
8975                 echo "But it seems to be defined as a macro." >&4
8976         fi
8977         $rm -f htonl.?
8978         ;;
8979 esac
8980 set d_htonl
8981 eval $setvar
8982
8983 : see which of string.h or strings.h is needed
8984 echo " "
8985 strings=`./findhdr string.h`
8986 if $test "$strings" && $test -r "$strings"; then
8987         echo "Using <string.h> instead of <strings.h>." >&4
8988         val="$define"
8989 else
8990         val="$undef"
8991         strings=`./findhdr strings.h`
8992         if $test "$strings" && $test -r "$strings"; then
8993                 echo "Using <strings.h> instead of <string.h>." >&4
8994         else
8995                 echo "No string header found -- You'll surely have problems." >&4
8996         fi
8997 fi
8998 set i_string
8999 eval $setvar
9000 case "$i_string" in
9001 "$undef") strings=`./findhdr strings.h`;;
9002 *)        strings=`./findhdr string.h`;;
9003 esac
9004
9005 : index or strchr
9006 echo " "
9007 if set index val -f; eval $csym; $val; then
9008         if set strchr val -f d_strchr; eval $csym; $val; then
9009                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9010                         val="$define"
9011                         vali="$undef"
9012                         echo "strchr() found." >&4
9013                 else
9014                         val="$undef"
9015                         vali="$define"
9016                         echo "index() found." >&4
9017                 fi
9018         else
9019                 val="$undef"
9020                 vali="$define"
9021                 echo "index() found." >&4
9022         fi
9023 else
9024         if set strchr val -f d_strchr; eval $csym; $val; then
9025                 val="$define"
9026                 vali="$undef"
9027                 echo "strchr() found." >&4
9028         else
9029                 echo "No index() or strchr() found!" >&4
9030                 val="$undef"
9031                 vali="$undef"
9032         fi
9033 fi
9034 set d_strchr; eval $setvar
9035 val="$vali"
9036 set d_index; eval $setvar
9037
9038 : check whether inet_aton exists
9039 set inet_aton d_inetaton
9040 eval $inlibc
9041
9042 : Look for isascii
9043 echo " "
9044 $cat >isascii.c <<'EOCP'
9045 #include <stdio.h>
9046 #include <ctype.h>
9047 int main() {
9048         int c = 'A';
9049         if (isascii(c))
9050                 exit(0);
9051         else
9052                 exit(1);
9053 }
9054 EOCP
9055 set isascii
9056 if eval $compile; then
9057         echo "isascii() found." >&4
9058         val="$define"
9059 else
9060         echo "isascii() NOT found." >&4
9061         val="$undef"
9062 fi
9063 set d_isascii
9064 eval $setvar
9065 $rm -f isascii*
9066
9067 : see if killpg exists
9068 set killpg d_killpg
9069 eval $inlibc
9070
9071 : see if lchown exists
9072 echo " "
9073 $cat > try.c <<'EOCP'
9074 /* System header to define __stub macros and hopefully few prototypes,
9075     which can conflict with char lchown(); below.  */
9076 #include <assert.h>
9077 /* Override any gcc2 internal prototype to avoid an error.  */
9078 /* We use char because int might match the return type of a gcc2
9079    builtin and then its argument prototype would still apply.  */
9080 char lchown();
9081 int main() {
9082     /*  The GNU C library defines this for functions which it implements
9083         to always fail with ENOSYS.  Some functions are actually named
9084         something starting with __ and the normal name is an alias.  */
9085 #if defined (__stub_lchown) || defined (__stub___lchown)
9086 choke me
9087 #else
9088 lchown();
9089 #endif
9090 ; return 0; }
9091 EOCP
9092 set try
9093 if eval $compile; then
9094     $echo "lchown() found." >&4
9095     val="$define"
9096 else
9097     $echo "lchown() NOT found." >&4
9098     val="$undef"
9099 fi
9100 set d_lchown
9101 eval $setvar
9102
9103 : See if number of significant digits in a double precision number is known
9104 echo " "
9105 $cat >ldbl_dig.c <<EOM
9106 #$i_limits I_LIMITS
9107 #$i_float I_FLOAT
9108 #ifdef I_LIMITS
9109 #include <limits.h>
9110 #endif
9111 #ifdef I_FLOAT
9112 #include <float.h>
9113 #endif
9114 #ifdef LDBL_DIG
9115 printf("Contains LDBL_DIG");
9116 #endif
9117 EOM
9118 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9119 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9120         echo "LDBL_DIG found." >&4
9121         val="$define"
9122 else
9123         echo "LDBL_DIG NOT found." >&4
9124         val="$undef"
9125 fi
9126 $rm -f ldbl_dig.?
9127 set d_ldbl_dig
9128 eval $setvar
9129
9130 : see if link exists
9131 set link d_link
9132 eval $inlibc
9133
9134 : see if localeconv exists
9135 set localeconv d_locconv
9136 eval $inlibc
9137
9138 : see if lockf exists
9139 set lockf d_lockf
9140 eval $inlibc
9141
9142 : see if lstat exists
9143 set lstat d_lstat
9144 eval $inlibc
9145
9146 : see if mblen exists
9147 set mblen d_mblen
9148 eval $inlibc
9149
9150 : see if mbstowcs exists
9151 set mbstowcs d_mbstowcs
9152 eval $inlibc
9153
9154 : see if mbtowc exists
9155 set mbtowc d_mbtowc
9156 eval $inlibc
9157
9158 : see if memchr exists
9159 set memchr d_memchr
9160 eval $inlibc
9161
9162 : see if memcmp exists
9163 set memcmp d_memcmp
9164 eval $inlibc
9165
9166 : see if memcpy exists
9167 set memcpy d_memcpy
9168 eval $inlibc
9169
9170 : see if memmove exists
9171 set memmove d_memmove
9172 eval $inlibc
9173
9174 : see if memset exists
9175 set memset d_memset
9176 eval $inlibc
9177
9178 : see if mkdir exists
9179 set mkdir d_mkdir
9180 eval $inlibc
9181
9182 : see if mkfifo exists
9183 set mkfifo d_mkfifo
9184 eval $inlibc
9185
9186 : see if mktime exists
9187 set mktime d_mktime
9188 eval $inlibc
9189
9190 : see if msgctl exists
9191 set msgctl d_msgctl
9192 eval $inlibc
9193
9194 : see if msgget exists
9195 set msgget d_msgget
9196 eval $inlibc
9197
9198 : see if msgsnd exists
9199 set msgsnd d_msgsnd
9200 eval $inlibc
9201
9202 : see if msgrcv exists
9203 set msgrcv d_msgrcv
9204 eval $inlibc
9205
9206 : see how much of the 'msg*(2)' library is present.
9207 h_msg=true
9208 echo " "
9209 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9210 *"$undef"*) h_msg=false;;
9211 esac
9212 case "$osname" in
9213 freebsd)
9214     case "`ipcs 2>&1`" in
9215     "SVID messages"*"not configured"*)
9216         echo "Your $osname does not have the msg*(2) configured." >&4
9217         h_msg=false
9218         val="$undef"
9219         set msgctl d_msgctl
9220         eval $setvar
9221         set msgget d_msgget
9222         eval $setvar
9223         set msgsnd d_msgsnd
9224         eval $setvar
9225         set msgrcv d_msgrcv
9226         eval $setvar
9227         ;;
9228     esac
9229     ;;
9230 esac
9231 : we could also check for sys/ipc.h ...
9232 if $h_msg && $test `./findhdr sys/msg.h`; then
9233         echo "You have the full msg*(2) library." >&4
9234         val="$define"
9235 else
9236         echo "You don't have the full msg*(2) library." >&4
9237         val="$undef"
9238 fi
9239 set d_msg
9240 eval $setvar
9241
9242 : see if nice exists
9243 set nice d_nice
9244 eval $inlibc
9245
9246 : see if POSIX threads are available
9247 set pthread.h i_pthread
9248 eval $inhdr
9249
9250
9251
9252
9253 : how to create joinable pthreads
9254 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9255         echo " "
9256         echo "Checking what constant to use for creating joinable pthreads..." >&4 
9257         $cat >try.c <<'EOCP'
9258 #include <pthread.h>
9259 int main() {
9260     int detachstate = JOINABLE;
9261 }
9262 EOCP
9263         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9264         if eval $compile; then
9265                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9266                 val="$undef" # Yes, undef.
9267                 set d_old_pthread_create_joinable
9268                 eval $setvar
9269                 val=""
9270                 set old_pthread_create_joinable
9271                 eval $setvar
9272         else
9273                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9274                 if eval $compile; then
9275                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9276                         val="$define"
9277                         set d_old_pthread_create_joinable
9278                         eval $setvar
9279                         val=PTHREAD_CREATE_UNDETACHED
9280                         set old_pthread_create_joinable
9281                         eval $setvar
9282                 else            
9283                         set try -DJOINABLE=__UNDETACHED
9284                         if eval $compile; then
9285                                 echo "You seem to use __UNDETACHED." >&4
9286                                 val="$define"
9287                                 set d_old_pthread_create_joinable
9288                                 eval $setvar
9289                                 val=__UNDETACHED
9290                                 set old_pthread_create_joinable
9291                                 eval $setvar
9292                         else
9293                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
9294                                 val="$define"
9295                                 set d_old_pthread_create_joinable
9296                                 eval $setvar
9297                                 val=0
9298                                 set old_pthread_create_joinable
9299                                 eval $setvar
9300                         fi
9301                 fi
9302         fi
9303         $rm -f try try.*
9304 else
9305     d_old_pthread_create_joinable="$undef"
9306     old_pthread_create_joinable=""
9307 fi
9308
9309 : see if pause exists
9310 set pause d_pause
9311 eval $inlibc
9312
9313 : see if pipe exists
9314 set pipe d_pipe
9315 eval $inlibc
9316
9317 : see if poll exists
9318 set poll d_poll
9319 eval $inlibc
9320
9321
9322 : see whether the various POSIXish _yields exist
9323 $cat >try.c <<EOP
9324 #include <pthread.h>
9325 #include <stdio.h>
9326 int main() {
9327 #ifdef SCHED_YIELD
9328         sched_yield();
9329 #else
9330 #ifdef PTHREAD_YIELD
9331         pthread_yield();
9332 #else
9333 #ifdef PTHREAD_YIELD_NULL
9334         pthread_yield(NULL);
9335 #endif
9336 #endif
9337 #endif
9338 }
9339 EOP
9340 : see if sched_yield exists
9341 set try -DSCHED_YIELD
9342 if eval $compile; then
9343     val="$define"
9344     sched_yield='sched_yield()'
9345 else
9346     val="$undef"
9347 fi
9348 case "$usethreads" in
9349 $define)
9350         case "$val" in
9351         $define) echo 'sched_yield() found.' >&4        ;;
9352         *)       echo 'sched_yield() NOT found.' >&4    ;;
9353         esac
9354 esac
9355 set d_sched_yield
9356 eval $setvar
9357
9358 : see if pthread_yield exists
9359 set try -DPTHREAD_YIELD
9360 if eval $compile; then
9361     val="$define"
9362     case "$sched_yield" in
9363     '') sched_yield='pthread_yield()' ;;
9364     esac
9365 else
9366     set try -DPTHREAD_YIELD_NULL
9367     if eval $compile; then
9368         val="$define"
9369         case "$sched_yield" in
9370         '') sched_yield='pthread_yield(NULL)' ;;
9371         esac
9372     else
9373         val="$undef"
9374     fi
9375 fi
9376 case "$usethreads" in
9377 $define)
9378         case "$val" in
9379         $define) echo 'pthread_yield() found.' >&4      ;;
9380         *)       echo 'pthread_yield() NOT found.' >&4  ;;
9381         esac
9382         ;;
9383 esac
9384 set d_pthread_yield
9385 eval $setvar
9386
9387 case "$sched_yield" in
9388 '') sched_yield=undef ;;
9389 esac
9390
9391 $rm -f try try.*
9392
9393 : see if this is a pwd.h system
9394 set pwd.h i_pwd
9395 eval $inhdr
9396
9397 case "$i_pwd" in
9398 $define)
9399         xxx=`./findhdr pwd.h`
9400         $cppstdin $cppflags $cppminus < $xxx >$$.h
9401
9402         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
9403                 val="$define"
9404         else
9405                 val="$undef"
9406         fi
9407         set d_pwquota
9408         eval $setvar
9409
9410         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
9411                 val="$define"
9412         else
9413                 val="$undef"
9414         fi
9415         set d_pwage
9416         eval $setvar
9417
9418         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
9419                 val="$define"
9420         else
9421                 val="$undef"
9422         fi
9423         set d_pwchange
9424         eval $setvar
9425
9426         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
9427                 val="$define"
9428         else
9429                 val="$undef"
9430         fi
9431         set d_pwclass
9432         eval $setvar
9433
9434         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
9435                 val="$define"
9436         else
9437                 val="$undef"
9438         fi
9439         set d_pwexpire
9440         eval $setvar
9441
9442         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
9443                 val="$define"
9444         else
9445                 val="$undef"
9446         fi
9447         set d_pwcomment
9448         eval $setvar
9449
9450         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
9451                 val="$define"
9452         else
9453                 val="$undef"
9454         fi
9455         set d_pwgecos
9456         eval $setvar
9457
9458         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
9459                 val="$define"
9460         else
9461                 val="$undef"
9462         fi
9463         set d_pwpasswd
9464         eval $setvar
9465
9466         $rm -f $$.h
9467         ;;
9468 *)
9469         val="$undef"; 
9470         set d_pwquota; eval $setvar
9471         set d_pwage; eval $setvar
9472         set d_pwchange; eval $setvar
9473         set d_pwclass; eval $setvar
9474         set d_pwexpire; eval $setvar
9475         set d_pwcomment; eval $setvar
9476         set d_pwgecos; eval $setvar
9477         set d_pwpasswd; eval $setvar
9478         ;;
9479 esac
9480
9481 : see if readdir and friends exist
9482 set readdir d_readdir
9483 eval $inlibc
9484 set seekdir d_seekdir
9485 eval $inlibc
9486 set telldir d_telldir
9487 eval $inlibc
9488 set rewinddir d_rewinddir
9489 eval $inlibc
9490
9491 : see if readlink exists
9492 set readlink d_readlink
9493 eval $inlibc
9494
9495 : see if rename exists
9496 set rename d_rename
9497 eval $inlibc
9498
9499 : see if rmdir exists
9500 set rmdir d_rmdir
9501 eval $inlibc
9502
9503 : see if memory.h is available.
9504 val=''
9505 set memory.h val
9506 eval $inhdr
9507
9508 : See if it conflicts with string.h
9509 case "$val" in
9510 $define)
9511         case "$strings" in
9512         '') ;;
9513         *)
9514                 $cppstdin $cppflags $cppminus < $strings > mem.h
9515                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9516                         echo " "
9517                         echo "We won't be including <memory.h>."
9518                         val="$undef"
9519                 fi
9520                 $rm -f mem.h
9521                 ;;
9522         esac
9523 esac
9524 set i_memory
9525 eval $setvar
9526
9527 : can bcopy handle overlapping blocks?
9528 val="$undef"
9529 case "$d_bcopy" in
9530 "$define")
9531         echo " "
9532         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
9533         $cat >try.c <<EOCP
9534 #$i_memory I_MEMORY
9535 #$i_stdlib I_STDLIB
9536 #$i_string I_STRING
9537 #$i_unistd I_UNISTD
9538 EOCP
9539         $cat >>try.c <<'EOCP'
9540 #include <stdio.h>
9541 #ifdef I_MEMORY
9542 #  include <memory.h>
9543 #endif
9544 #ifdef I_STDLIB
9545 #  include <stdlib.h>
9546 #endif
9547 #ifdef I_STRING
9548 #  include <string.h>
9549 #else
9550 #  include <strings.h>
9551 #endif
9552 #ifdef I_UNISTD
9553 #  include <unistd.h>  /* Needed for NetBSD */
9554 #endif
9555 int main()
9556 {
9557 char buf[128], abc[128];
9558 char *b;
9559 int len;
9560 int off;
9561 int align;
9562
9563 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9564
9565 for (align = 7; align >= 0; align--) {
9566         for (len = 36; len; len--) {
9567                 b = buf+align;
9568                 bcopy(abc, b, len);
9569                 for (off = 1; off <= len; off++) {
9570                         bcopy(b, b+off, len);
9571                         bcopy(b+off, b, len);
9572                         if (bcmp(b, abc, len))
9573                                 exit(1);
9574                 }
9575         }
9576 }
9577 exit(0);
9578 }
9579 EOCP
9580         set try
9581         if eval $compile_ok; then
9582                 if ./try 2>/dev/null; then
9583                         echo "Yes, it can."
9584                         val="$define"
9585                 else
9586                         echo "It can't, sorry."
9587                         case "$d_memmove" in
9588                         "$define") echo "But that's Ok since you have memmove()." ;;
9589                         esac
9590                 fi
9591         else
9592                 echo "(I can't compile the test program, so we'll assume not...)"
9593                 case "$d_memmove" in
9594                 "$define") echo "But that's Ok since you have memmove()." ;;
9595                 esac
9596         fi
9597         ;;
9598 esac
9599 $rm -f try.* try core
9600 set d_safebcpy
9601 eval $setvar
9602
9603 : can memcpy handle overlapping blocks?
9604 val="$undef"
9605 case "$d_memcpy" in
9606 "$define")
9607         echo " "
9608         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9609         $cat >try.c <<EOCP
9610 #$i_memory I_MEMORY
9611 #$i_stdlib I_STDLIB
9612 #$i_string I_STRING
9613 #$i_unistd I_UNISTD
9614 EOCP
9615         $cat >>try.c <<'EOCP'
9616 #include <stdio.h>
9617 #ifdef I_MEMORY
9618 #  include <memory.h>
9619 #endif
9620 #ifdef I_STDLIB
9621 #  include <stdlib.h>
9622 #endif
9623 #ifdef I_STRING
9624 #  include <string.h>
9625 #else
9626 #  include <strings.h>
9627 #endif
9628 #ifdef I_UNISTD
9629 #  include <unistd.h>  /* Needed for NetBSD */
9630 #endif
9631 int main()
9632 {
9633 char buf[128], abc[128];
9634 char *b;
9635 int len;
9636 int off;
9637 int align;
9638
9639 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9640    try to store the string in read-only memory. */
9641 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9642
9643 for (align = 7; align >= 0; align--) {
9644         for (len = 36; len; len--) {
9645                 b = buf+align;
9646                 memcpy(b, abc, len);
9647                 for (off = 1; off <= len; off++) {
9648                         memcpy(b+off, b, len);
9649                         memcpy(b, b+off, len);
9650                         if (memcmp(b, abc, len))
9651                                 exit(1);
9652                 }
9653         }
9654 }
9655 exit(0);
9656 }
9657 EOCP
9658         set try
9659         if eval $compile_ok; then
9660                 if ./try 2>/dev/null; then
9661                         echo "Yes, it can."
9662                         val="$define"
9663                 else
9664                         echo "It can't, sorry."
9665                         case "$d_memmove" in
9666                         "$define") echo "But that's Ok since you have memmove()." ;;
9667                         esac
9668                 fi
9669         else
9670                 echo "(I can't compile the test program, so we'll assume not...)"
9671                 case "$d_memmove" in
9672                 "$define") echo "But that's Ok since you have memmove()." ;;
9673                 esac
9674         fi
9675         ;;
9676 esac
9677 $rm -f try.* try core
9678 set d_safemcpy
9679 eval $setvar
9680
9681 : can memcmp be trusted to compare relative magnitude?
9682 val="$undef"
9683 case "$d_memcmp" in
9684 "$define")
9685         echo " "
9686         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9687         $cat >try.c <<EOCP
9688 #$i_memory I_MEMORY
9689 #$i_stdlib I_STDLIB
9690 #$i_string I_STRING
9691 #$i_unistd I_UNISTD
9692 EOCP
9693         $cat >>try.c <<'EOCP'
9694 #include <stdio.h>
9695 #ifdef I_MEMORY
9696 #  include <memory.h>
9697 #endif
9698 #ifdef I_STDLIB
9699 #  include <stdlib.h>
9700 #endif
9701 #ifdef I_STRING
9702 #  include <string.h>
9703 #else
9704 #  include <strings.h>
9705 #endif
9706 #ifdef I_UNISTD
9707 #  include <unistd.h>  /* Needed for NetBSD */
9708 #endif
9709 int main()
9710 {
9711 char a = -1;
9712 char b = 0;
9713 if ((a < b) && memcmp(&a, &b, 1) < 0)
9714         exit(1);
9715 exit(0);
9716 }
9717 EOCP
9718         set try
9719         if eval $compile_ok; then
9720                 if ./try 2>/dev/null; then
9721                         echo "Yes, it can."
9722                         val="$define"
9723                 else
9724                         echo "No, it can't (it uses signed chars)."
9725                 fi
9726         else
9727                 echo "(I can't compile the test program, so we'll assume not...)"
9728         fi
9729         ;;
9730 esac
9731 $rm -f try.* try core
9732 set d_sanemcmp
9733 eval $setvar
9734
9735 : see if select exists
9736 set select d_select
9737 eval $inlibc
9738
9739 : see if semctl exists
9740 set semctl d_semctl
9741 eval $inlibc
9742
9743 : see if semget exists
9744 set semget d_semget
9745 eval $inlibc
9746
9747 : see if semop exists
9748 set semop d_semop
9749 eval $inlibc
9750
9751 : see how much of the 'sem*(2)' library is present.
9752 h_sem=true
9753 echo " "
9754 case "$d_semctl$d_semget$d_semop" in
9755 *"$undef"*) h_sem=false;;
9756 esac
9757 case "$osname" in
9758 freebsd)
9759     case "`ipcs 2>&1`" in
9760     "SVID messages"*"not configured"*)
9761         echo "Your $osname does not have the sem*(2) configured." >&4
9762         h_sem=false
9763         val="$undef"
9764         set semctl d_semctl
9765         eval $setvar
9766         set semget d_semget
9767         eval $setvar
9768         set semop d_semop
9769         eval $setvar
9770         ;;
9771     esac
9772     ;;
9773 esac
9774 : we could also check for sys/ipc.h ...
9775 if $h_sem && $test `./findhdr sys/sem.h`; then
9776         echo "You have the full sem*(2) library." >&4
9777         val="$define"
9778 else
9779         echo "You don't have the full sem*(2) library." >&4
9780         val="$undef"
9781 fi
9782 set d_sem
9783 eval $setvar
9784
9785 : see whether sys/sem.h defines union semun
9786 echo " "
9787 $cat > try.c <<'END'
9788 #include <sys/types.h>
9789 #include <sys/ipc.h>
9790 #include <sys/sem.h>
9791 int main () { union semun semun; semun.buf = 0; }
9792 END
9793 set try
9794 if eval $compile; then
9795     echo "You have union semun in <sys/sem.h>." >&4
9796     val="$define"
9797 else
9798     echo "You do not have union semun in <sys/sem.h>." >&4
9799     val="$undef"
9800 fi
9801 $rm -f try try.c try.h
9802 set d_union_semun
9803 eval $setvar
9804
9805 : see how to do semctl IPC_STAT
9806 case "$d_sem" in
9807 $define)
9808     : see whether semctl IPC_STAT can use union semun
9809     echo " "
9810     $cat > try.h <<END
9811 #ifndef S_IRUSR
9812 #   ifdef S_IREAD
9813 #       define S_IRUSR S_IREAD
9814 #       define S_IWUSR S_IWRITE
9815 #       define S_IXUSR S_IEXEC
9816 #   else
9817 #       define S_IRUSR 0400
9818 #       define S_IWUSR 0200
9819 #       define S_IXUSR 0100
9820 #   endif
9821 #   define S_IRGRP (S_IRUSR>>3)
9822 #   define S_IWGRP (S_IWUSR>>3)
9823 #   define S_IXGRP (S_IXUSR>>3)
9824 #   define S_IROTH (S_IRUSR>>6)
9825 #   define S_IWOTH (S_IWUSR>>6)
9826 #   define S_IXOTH (S_IXUSR>>6)
9827 #endif
9828 #ifndef S_IRWXU
9829 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9830 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9831 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9832 #endif
9833 END
9834
9835     $cat > try.c <<END
9836 #include <sys/types.h>
9837 #include <sys/ipc.h>
9838 #include <sys/sem.h>
9839 #include <sys/stat.h>
9840 #include <stdio.h>
9841 #include <errno.h>
9842 #include "try.h"
9843 #ifndef errno
9844 extern int errno;
9845 #endif
9846 #$d_union_semun HAS_UNION_SEMUN
9847 int main() {
9848     union semun
9849 #ifndef HAS_UNION_SEMUN
9850     {
9851         int val;
9852         struct semid_ds *buf;
9853         unsigned short *array;
9854     }
9855 #endif
9856     arg;
9857     int sem, st;
9858
9859 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9860     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9861     if (sem > -1) {
9862         struct semid_ds argbuf;
9863         arg.buf = &argbuf;
9864 #       ifdef IPC_STAT
9865         st = semctl(sem, 0, IPC_STAT, arg);
9866         if (st == 0)
9867             printf("semun\n");
9868         else
9869 #       endif /* IPC_STAT */
9870             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9871 #       ifdef IPC_RMID
9872         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9873 #       endif /* IPC_RMID */
9874             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9875     } else
9876 #endif /* IPC_PRIVATE && ... */
9877         printf("semget failed: errno = %d\n", errno);
9878   return 0;
9879 }
9880 END
9881     val="$undef"
9882     set try
9883     if eval $compile; then
9884         xxx=`./try`
9885         case "$xxx" in
9886         semun) val="$define" ;;
9887         esac
9888     fi
9889     $rm -f try try.c
9890     set d_semctl_semun
9891     eval $setvar
9892     case "$d_semctl_semun" in
9893     $define)
9894         echo "You can use union semun for semctl IPC_STAT." >&4
9895         also='also'
9896         ;;
9897     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9898         also=''
9899         ;;
9900     esac
9901
9902     : see whether semctl IPC_STAT can use struct semid_ds pointer
9903     $cat > try.c <<'END'
9904 #include <sys/types.h>
9905 #include <sys/ipc.h>
9906 #include <sys/sem.h>
9907 #include <sys/stat.h>
9908 #include "try.h"
9909 #include <stdio.h>
9910 #include <errno.h>
9911 #ifndef errno
9912 extern int errno;
9913 #endif
9914 int main() {
9915     struct semid_ds arg;
9916     int sem, st;
9917
9918 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9919     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9920     if (sem > -1) {
9921 #       ifdef IPC_STAT
9922         st = semctl(sem, 0, IPC_STAT, &arg);
9923         if (st == 0)
9924             printf("semid_ds\n");
9925         else
9926 #       endif /* IPC_STAT */
9927             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9928 #       ifdef IPC_RMID
9929         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9930 #       endif /* IPC_RMID */
9931             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9932     } else
9933 #endif /* IPC_PRIVATE && ... */
9934         printf("semget failed: errno = %d\n", errno);
9935
9936     return 0;
9937 }
9938 END
9939     val="$undef"
9940     set try
9941     if eval $compile; then
9942         xxx=`./try`
9943         case "$xxx" in
9944         semid_ds) val="$define" ;;
9945         esac
9946     fi
9947     $rm -f try try.c
9948     set d_semctl_semid_ds
9949     eval $setvar
9950     case "$d_semctl_semid_ds" in
9951     $define)
9952         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9953         ;;
9954     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9955         ;;
9956     esac
9957     $rm -f try.h
9958     ;;
9959 *)  val="$undef"
9960
9961     # We do not have the full sem*(2) library, so assume we can not
9962     # use either.
9963
9964     set d_semctl_semun
9965     eval $setvar
9966
9967     set d_semctl_semid_ds
9968     eval $setvar
9969     ;;
9970 esac
9971
9972 : see if setegid exists
9973 set setegid d_setegid
9974 eval $inlibc
9975
9976 : see if seteuid exists
9977 set seteuid d_seteuid
9978 eval $inlibc
9979
9980 : see if setgrent exists
9981 set setgrent d_setgrent
9982 eval $inlibc
9983
9984 : see if sethostent exists
9985 set sethostent d_sethent
9986 eval $inlibc
9987
9988 : see if setlinebuf exists
9989 set setlinebuf d_setlinebuf
9990 eval $inlibc
9991
9992 : see if setlocale exists
9993 set setlocale d_setlocale
9994 eval $inlibc
9995
9996 : see if setnetent exists
9997 set setnetent d_setnent
9998 eval $inlibc
9999
10000 : see if setprotoent exists
10001 set setprotoent d_setpent
10002 eval $inlibc
10003
10004 : see if setpgid exists
10005 set setpgid d_setpgid
10006 eval $inlibc
10007
10008 : see if setpgrp2 exists
10009 set setpgrp2 d_setpgrp2
10010 eval $inlibc
10011
10012 : see if setpriority exists
10013 set setpriority d_setprior
10014 eval $inlibc
10015
10016 : see if setpwent exists
10017 set setpwent d_setpwent
10018 eval $inlibc
10019
10020 : see if setregid exists
10021 set setregid d_setregid
10022 eval $inlibc
10023 set setresgid d_setresgid
10024 eval $inlibc
10025
10026 : see if setreuid exists
10027 set setreuid d_setreuid
10028 eval $inlibc
10029 set setresuid d_setresuid
10030 eval $inlibc
10031
10032 : see if setrgid exists
10033 set setrgid d_setrgid
10034 eval $inlibc
10035
10036 : see if setruid exists
10037 set setruid d_setruid
10038 eval $inlibc
10039
10040 : see if setservent exists
10041 set setservent d_setsent
10042 eval $inlibc
10043
10044 : see if setsid exists
10045 set setsid d_setsid
10046 eval $inlibc
10047
10048 : see if setspent exists
10049 set setspent d_setspent
10050 eval $inlibc
10051
10052 : see if setvbuf exists
10053 set setvbuf d_setvbuf
10054 eval $inlibc
10055
10056 : see if sfio.h is available
10057 set sfio.h i_sfio
10058 eval $inhdr
10059
10060
10061 : see if sfio library is available
10062 case "$i_sfio" in
10063 $define)
10064         val=''
10065         set sfreserve val
10066         eval $inlibc
10067         ;;
10068 *)
10069         val="$undef"
10070         ;;
10071 esac
10072 : Ok, but do we want to use it.
10073 case "$val" in
10074 $define)
10075         case "$usesfio" in
10076         true|$define|[yY]*) dflt='y';;
10077         *) dflt='n';;
10078         esac
10079         echo "$package can use the sfio library, but it is experimental."
10080         rp="You seem to have sfio available, do you want to try using it?"
10081         . ./myread
10082         case "$ans" in
10083         y|Y) ;;
10084         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10085                 val="$undef"
10086                 : Remove sfio from list of libraries to use
10087                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10088                 shift
10089                 libs="$*"
10090                 echo "libs = $libs" >&4
10091                 ;;
10092         esac
10093         ;;
10094 *)      case "$usesfio" in
10095         true|$define|[yY]*)
10096                 echo "Sorry, cannot find sfio on this machine" >&4
10097                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10098                 ;;
10099         esac
10100         ;;
10101 esac
10102 set d_sfio
10103 eval $setvar
10104 case "$d_sfio" in
10105 $define) usesfio='true';;
10106 *) usesfio='false';;
10107 esac
10108
10109 : see if shmctl exists
10110 set shmctl d_shmctl
10111 eval $inlibc
10112
10113 : see if shmget exists
10114 set shmget d_shmget
10115 eval $inlibc
10116
10117 : see if shmat exists
10118 set shmat d_shmat
10119 eval $inlibc
10120 : see what shmat returns
10121 case "$d_shmat" in
10122 "$define")
10123         $cat >shmat.c <<'END'
10124 #include <sys/shm.h>
10125 void *shmat();
10126 END
10127         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10128                 shmattype='void *'
10129         else
10130                 shmattype='char *'
10131         fi
10132         echo "and it returns ($shmattype)." >&4
10133         : see if a prototype for shmat is available
10134         xxx=`./findhdr sys/shm.h`
10135         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10136         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10137                 val="$define"
10138         else
10139                 val="$undef"
10140         fi
10141         $rm -f shmat.[co]
10142         ;;
10143 *)
10144         val="$undef"
10145         ;;
10146 esac
10147 set d_shmatprototype
10148 eval $setvar
10149
10150 : see if shmdt exists
10151 set shmdt d_shmdt
10152 eval $inlibc
10153
10154 : see how much of the 'shm*(2)' library is present.
10155 h_shm=true
10156 echo " "
10157 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10158 *"$undef"*) h_shm=false;;
10159 esac
10160 case "$osname" in
10161 freebsd)
10162     case "`ipcs 2>&1`" in
10163     "SVID shared memory"*"not configured"*)
10164         echo "Your $osname does not have the shm*(2) configured." >&4
10165         h_shm=false
10166         val="$undef"
10167         set shmctl d_shmctl
10168         evat $setvar
10169         set shmget d_shmget
10170         evat $setvar
10171         set shmat d_shmat
10172         evat $setvar
10173         set shmdt d_shmdt
10174         evat $setvar
10175         ;;
10176     esac
10177     ;;
10178 esac
10179 : we could also check for sys/ipc.h ...
10180 if $h_shm && $test `./findhdr sys/shm.h`; then
10181         echo "You have the full shm*(2) library." >&4
10182         val="$define"
10183 else
10184         echo "You don't have the full shm*(2) library." >&4
10185         val="$undef"
10186 fi
10187 set d_shm
10188 eval $setvar
10189
10190 echo " "
10191 : see if we have sigaction
10192 if set sigaction val -f d_sigaction; eval $csym; $val; then
10193         echo 'sigaction() found.' >&4
10194         $cat > try.c <<'EOP'
10195 #include <stdio.h>
10196 #include <sys/types.h>
10197 #include <signal.h>
10198 int main()
10199 {
10200     struct sigaction act, oact;
10201     act.sa_flags = 0;
10202     oact.sa_handler = 0;
10203 }
10204 EOP
10205         set try
10206         if eval $compile_ok; then
10207                 val="$define"
10208         else
10209                 echo "But you don't seem to have a useable struct sigaction." >&4
10210                 val="$undef"
10211         fi
10212 else
10213         echo 'sigaction NOT found.' >&4
10214         val="$undef"
10215 fi
10216 set d_sigaction; eval $setvar
10217 $rm -f try try$_o try.c
10218
10219 : see if sigsetjmp exists
10220 echo " "
10221 case "$d_sigsetjmp" in
10222 '')
10223         $cat >try.c <<'EOP'
10224 #include <setjmp.h>
10225 sigjmp_buf env;
10226 int set = 1;
10227 int main()
10228 {
10229         if (sigsetjmp(env,1))
10230                 exit(set);
10231         set = 0;
10232         siglongjmp(env, 1);
10233         exit(1);
10234 }
10235 EOP
10236         set try
10237         if eval $compile; then
10238                 if ./try >/dev/null 2>&1; then
10239                         echo "POSIX sigsetjmp found." >&4
10240                         val="$define"
10241                 else
10242                         $cat >&4 <<EOM
10243 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10244 I'll ignore them.
10245 EOM
10246                         val="$undef"
10247                 fi
10248         else
10249                 echo "sigsetjmp not found." >&4
10250                 val="$undef"
10251         fi
10252         ;;
10253 *) val="$d_sigsetjmp"
10254         case "$d_sigsetjmp" in
10255         $define) echo "POSIX sigsetjmp found." >&4;;
10256         $undef) echo "sigsetjmp not found." >&4;;
10257         esac
10258         ;;
10259 esac
10260 set d_sigsetjmp
10261 eval $setvar
10262 $rm -f try.c try
10263
10264 : see if sqrtl exists
10265 set sqrtl d_sqrtl
10266 eval $inlibc
10267
10268 : see if sys/stat.h is available
10269 set sys/stat.h i_sysstat
10270 eval $inhdr
10271
10272
10273 : see if stat knows about block sizes
10274 echo " "
10275 echo "Checking to see if your struct stat has st_blocks field..." >&4
10276 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10277 eval $hasfield
10278
10279
10280 : see if this is a sys/vfs.h system
10281 set sys/vfs.h i_sysvfs
10282 eval $inhdr
10283
10284
10285 : see if this is a sys/statfs.h system
10286 set sys/statfs.h i_sysstatfs
10287 eval $inhdr
10288
10289
10290 echo " "
10291 echo "Checking to see if your system supports struct statfs..." >&4
10292 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
10293 eval $hasstruct
10294 case "$d_statfs_s" in
10295 "$define")      echo "Yup, it does."     >&4 ;;
10296 *)              echo "Nope, it doesn't." >&4 ;;
10297 esac
10298
10299
10300
10301 : see if struct statfs knows about f_flags
10302 case "$d_statfs_s" in
10303 define) 
10304         echo " "
10305         echo "Checking to see if your struct statfs has f_flags field..." >&4
10306         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
10307         eval $hasfield
10308         ;;
10309 *)      val="$undef"
10310         set d_statfs_f_flags
10311         eval $setvar
10312         ;;
10313 esac
10314 case "$d_statfs_f_flags" in
10315 "$define")      echo "Yup, it does."     >&4 ;;
10316 *)              echo "Nope, it doesn't." >&4 ;;
10317 esac
10318
10319 : see if _ptr and _cnt from stdio act std
10320 echo " "
10321 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10322         echo "(Looks like you have stdio.h from Linux.)"
10323         case "$stdio_ptr" in
10324         '') stdio_ptr='((fp)->_IO_read_ptr)'
10325                 ptr_lval=$define
10326                 ;;
10327         *)      ptr_lval=$d_stdio_ptr_lval;;
10328         esac
10329         case "$stdio_cnt" in
10330         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10331                 cnt_lval=$undef
10332                 ;;
10333         *)      cnt_lval=$d_stdio_cnt_lval;;
10334         esac
10335         case "$stdio_base" in
10336         '') stdio_base='((fp)->_IO_read_base)';;
10337         esac
10338         case "$stdio_bufsiz" in
10339         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
10340         esac
10341 else
10342         case "$stdio_ptr" in
10343         '') stdio_ptr='((fp)->_ptr)'
10344                 ptr_lval=$define
10345                 ;;
10346         *)      ptr_lval=$d_stdio_ptr_lval;;
10347         esac
10348         case "$stdio_cnt" in
10349         '') stdio_cnt='((fp)->_cnt)'
10350                 cnt_lval=$define
10351                 ;;
10352         *)      cnt_lval=$d_stdio_cnt_lval;;
10353         esac
10354         case "$stdio_base" in
10355         '') stdio_base='((fp)->_base)';;
10356         esac
10357         case "$stdio_bufsiz" in
10358         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
10359         esac
10360 fi
10361 : test whether _ptr and _cnt really work
10362 echo "Checking how std your stdio is..." >&4
10363 $cat >try.c <<EOP
10364 #include <stdio.h>
10365 #define FILE_ptr(fp)    $stdio_ptr
10366 #define FILE_cnt(fp)    $stdio_cnt
10367 int main() {
10368         FILE *fp = fopen("try.c", "r");
10369         char c = getc(fp);
10370         if (
10371                 18 <= FILE_cnt(fp) &&
10372                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
10373         )
10374                 exit(0);
10375         exit(1);
10376 }
10377 EOP
10378 val="$undef"
10379 set try
10380 if eval $compile; then
10381         if ./try; then
10382                 echo "Your stdio acts pretty std."
10383                 val="$define"
10384         else
10385                 echo "Your stdio isn't very std."
10386         fi
10387 else
10388         echo "Your stdio doesn't appear very std."
10389 fi
10390 $rm -f try.c try
10391 set d_stdstdio
10392 eval $setvar
10393
10394 : Can _ptr be used as an lvalue?
10395 case "$d_stdstdio$ptr_lval" in
10396 $define$define) val=$define ;;
10397 *) val=$undef ;;
10398 esac
10399 set d_stdio_ptr_lval
10400 eval $setvar
10401
10402 : Can _cnt be used as an lvalue?
10403 case "$d_stdstdio$cnt_lval" in
10404 $define$define) val=$define ;;
10405 *) val=$undef ;;
10406 esac
10407 set d_stdio_cnt_lval
10408 eval $setvar
10409
10410 : see if _base is also standard
10411 val="$undef"
10412 case "$d_stdstdio" in
10413 $define)
10414         $cat >try.c <<EOP
10415 #include <stdio.h>
10416 #define FILE_base(fp)   $stdio_base
10417 #define FILE_bufsiz(fp) $stdio_bufsiz
10418 int main() {
10419         FILE *fp = fopen("try.c", "r");
10420         char c = getc(fp);
10421         if (
10422                 19 <= FILE_bufsiz(fp) &&
10423                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
10424         )
10425                 exit(0);
10426         exit(1);
10427 }
10428 EOP
10429         set try
10430         if eval $compile; then
10431                 if ./try; then
10432                         echo "And its _base field acts std."
10433                         val="$define"
10434                 else
10435                         echo "But its _base field isn't std."
10436                 fi
10437         else
10438                 echo "However, it seems to be lacking the _base field."
10439         fi
10440         $rm -f try.c try
10441         ;;
10442 esac
10443 set d_stdiobase
10444 eval $setvar
10445
10446 $cat >&4 <<EOM
10447 Checking how to access stdio streams by file descriptor number...
10448 EOM
10449 case "$stdio_stream_array" in
10450 '')     $cat >try.c <<EOCP
10451 #include <stdio.h>
10452 int main() {
10453   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
10454     printf("yes\n");
10455 }
10456 EOCP
10457         for s in _iob __iob __sF
10458         do
10459                 set try -DSTDIO_STREAM_ARRAY=$s
10460                 if eval $compile; then
10461                         case "`./try$exe_ext`" in
10462                         yes)    stdio_stream_array=$s; break ;;
10463                         esac
10464                 fi
10465         done
10466         $rm -f try.* try$exe_ext
10467 esac
10468 case "$stdio_stream_array" in
10469 '')     $cat >&4 <<EOM
10470 I can't figure out how to access stdio streams by file descriptor number.
10471 EOM
10472         d_stdio_stream_array="$undef"
10473         ;;
10474 *)      $cat >&4 <<EOM
10475 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
10476 EOM
10477         d_stdio_stream_array="$define"
10478         ;;
10479 esac
10480
10481 : see if strcoll exists
10482 set strcoll d_strcoll
10483 eval $inlibc
10484
10485 : check for structure copying
10486 echo " "
10487 echo "Checking to see if your C compiler can copy structs..." >&4
10488 $cat >try.c <<'EOCP'
10489 int main()
10490 {
10491         struct blurfl {
10492                 int dyick;
10493         } foo, bar;
10494
10495         foo = bar;
10496 }
10497 EOCP
10498 if $cc -c try.c >/dev/null 2>&1 ; then
10499         val="$define"
10500         echo "Yup, it can."
10501 else
10502         val="$undef"
10503         echo "Nope, it can't."
10504 fi
10505 set d_strctcpy
10506 eval $setvar
10507 $rm -f try.*
10508
10509 : see if strerror and/or sys_errlist[] exist
10510 echo " "
10511 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
10512     if set strerror val -f d_strerror; eval $csym; $val; then
10513                 echo 'strerror() found.' >&4
10514                 d_strerror="$define"
10515                 d_strerrm='strerror(e)'
10516                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
10517                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
10518                         d_syserrlst="$define"
10519                 else
10520                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
10521                         d_syserrlst="$undef"
10522                 fi
10523     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
10524                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
10525                 echo 'strerror() found in string header.' >&4
10526                 d_strerror="$define"
10527                 d_strerrm='strerror(e)'
10528                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
10529                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
10530                                 d_syserrlst="$define"
10531                 else
10532                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
10533                         d_syserrlst="$undef"
10534                 fi
10535     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10536                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
10537                 d_strerror="$undef"
10538                 d_syserrlst="$define"
10539                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
10540     else
10541                 echo 'strerror() and sys_errlist[] NOT found.' >&4
10542                 d_strerror="$undef"
10543                 d_syserrlst="$undef"
10544                 d_strerrm='"unknown"'
10545     fi
10546 fi
10547
10548 : see if strtod exists
10549 set strtod d_strtod
10550 eval $inlibc
10551
10552 : see if strtol exists
10553 set strtol d_strtol
10554 eval $inlibc
10555
10556 : see if strtoul exists
10557 set strtoul d_strtoul
10558 eval $inlibc
10559
10560 : see if strtoull exists
10561 set strtoull d_strtoull
10562 eval $inlibc
10563
10564 : see if strxfrm exists
10565 set strxfrm d_strxfrm
10566 eval $inlibc
10567
10568 : see if symlink exists
10569 set symlink d_symlink
10570 eval $inlibc
10571
10572 : see if syscall exists
10573 set syscall d_syscall
10574 eval $inlibc
10575
10576 : see if sysconf exists
10577 set sysconf d_sysconf
10578 eval $inlibc
10579
10580 : see if system exists
10581 set system d_system
10582 eval $inlibc
10583
10584 : see if tcgetpgrp exists
10585 set tcgetpgrp d_tcgetpgrp
10586 eval $inlibc
10587
10588 : see if tcsetpgrp exists
10589 set tcsetpgrp d_tcsetpgrp
10590 eval $inlibc
10591
10592 : see if prototype for telldir is available
10593 echo " "
10594 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10595 eval $hasproto
10596
10597 : define an is-a-typedef? function
10598 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10599 case "$inclist" in
10600 "") inclist="sys/types.h";;
10601 esac;
10602 eval "varval=\$$var";
10603 case "$varval" in
10604 "")
10605         $rm -f temp.c;
10606         for inc in $inclist; do
10607                 echo "#include <$inc>" >>temp.c;
10608         done;
10609         echo "#ifdef $type" >> temp.c;
10610         echo "printf(\"We have $type\");" >> temp.c;
10611         echo "#endif" >> temp.c;
10612         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10613         if $contains $type temp.E >/dev/null 2>&1; then
10614                 eval "$var=\$type";
10615         else
10616                 eval "$var=\$def";
10617         fi;
10618         $rm -f temp.?;;
10619 *) eval "$var=\$varval";;
10620 esac'
10621
10622 : define an is-a-typedef? function that prompts if the type is not available.
10623 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10624 case "$inclist" in
10625 "") inclist="sys/types.h";;
10626 esac;
10627 eval "varval=\$$var";
10628 case "$varval" in
10629 "")
10630         $rm -f temp.c;
10631         for inc in $inclist; do
10632                 echo "#include <$inc>" >>temp.c;
10633         done;
10634         echo "#ifdef $type" >> temp.c;
10635         echo "printf(\"We have $type\");" >> temp.c;
10636         echo "#endif" >> temp.c;
10637         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10638         echo " " ;
10639         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10640         if $contains $type temp.E >/dev/null 2>&1; then
10641                 echo "$type found." >&4;
10642                 eval "$var=\$type";
10643         else
10644                 echo "$type NOT found." >&4;
10645                 dflt="$def";
10646                 . ./myread ;
10647                 eval "$var=\$ans";
10648         fi;
10649         $rm -f temp.?;;
10650 *) eval "$var=\$varval";;
10651 esac'
10652
10653 : see if this is a sys/times.h system
10654 set sys/times.h i_systimes
10655 eval $inhdr
10656
10657 : see if times exists
10658 echo " "
10659 if set times val -f d_times; eval $csym; $val; then
10660         echo 'times() found.' >&4
10661         d_times="$define"
10662         inc=''
10663         case "$i_systimes" in
10664         "$define") inc='sys/times.h';;
10665         esac
10666         rp="What is the type returned by times() on this system?"
10667         set clock_t clocktype long stdio.h sys/types.h $inc
10668         eval $typedef_ask
10669 else
10670         echo 'times() NOT found, hope that will do.' >&4
10671         d_times="$undef"
10672         clocktype='int'
10673 fi
10674
10675 : see if truncate exists
10676 set truncate d_truncate
10677 eval $inlibc
10678
10679 : see if tzname[] exists
10680 echo " "
10681 if set tzname val -a d_tzname; eval $csym; $val; then
10682         val="$define"
10683         echo 'tzname[] found.' >&4
10684 else
10685         val="$undef"
10686         echo 'tzname[] NOT found.' >&4
10687 fi
10688 set d_tzname
10689 eval $setvar
10690
10691 : see if umask exists
10692 set umask d_umask
10693 eval $inlibc
10694
10695 : see if ustat exists
10696 set ustat d_ustat
10697 eval $inlibc
10698
10699 : backward compatibility for d_hvfork
10700 if test X$d_hvfork != X; then
10701         d_vfork="$d_hvfork"
10702         d_hvfork=''
10703 fi
10704 : see if there is a vfork
10705 val=''
10706 set vfork val
10707 eval $inlibc
10708
10709 : Ok, but do we want to use it. vfork is reportedly unreliable in 
10710 : perl on Solaris 2.x, and probably elsewhere.
10711 case "$val" in
10712 $define)
10713         echo " "
10714         case "$usevfork" in
10715         false) dflt='n';;
10716         *) dflt='y';;
10717         esac
10718         cat <<'EOM'
10719  
10720 Perl can only use a vfork() that doesn't suffer from strict
10721 restrictions on calling functions or modifying global data in
10722 the child.  For example, glibc-2.1 contains such a vfork()
10723 that is unsuitable.  If your system provides a proper fork()
10724 call, chances are that you do NOT want perl to use vfork().
10725
10726 EOM
10727         rp="Do you still want to use vfork()?"
10728         . ./myread
10729         case "$ans" in
10730         y|Y) ;;
10731         *)
10732                 echo "Ok, we won't use vfork()."
10733                 val="$undef"
10734                 ;;
10735         esac
10736         ;;
10737 esac
10738 set d_vfork
10739 eval $setvar
10740 case "$d_vfork" in
10741 $define) usevfork='true';;
10742 *) usevfork='false';;
10743 esac
10744
10745 : see if this is an sysdir system
10746 set sys/dir.h i_sysdir
10747 eval $inhdr
10748
10749 : see if this is an sysndir system
10750 set sys/ndir.h i_sysndir
10751 eval $inhdr
10752
10753 : see if closedir exists
10754 set closedir d_closedir
10755 eval $inlibc
10756
10757 case "$d_closedir" in
10758 "$define")
10759         echo " "
10760         echo "Checking whether closedir() returns a status..." >&4
10761         cat > closedir.c <<EOM
10762 #$i_dirent I_DIRENT             /**/
10763 #$i_sysdir I_SYS_DIR            /**/
10764 #$i_sysndir I_SYS_NDIR          /**/
10765 #$i_systypes I_SYS_TYPES        /**/
10766
10767 #if defined(I_SYS_TYPES)
10768 #include <sys/types.h>
10769 #endif
10770 #if defined(I_DIRENT)
10771 #include <dirent.h>
10772 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10773 #include <sys/dir.h>
10774 #endif
10775 #else
10776 #ifdef I_SYS_NDIR
10777 #include <sys/ndir.h>
10778 #else
10779 #ifdef I_SYS_DIR
10780 #ifdef hp9000s500
10781 #include <ndir.h>       /* may be wrong in the future */
10782 #else
10783 #include <sys/dir.h>
10784 #endif
10785 #endif
10786 #endif
10787 #endif 
10788 int main() { return closedir(opendir(".")); }
10789 EOM
10790         set closedir
10791         if eval $compile_ok; then
10792                 if ./closedir > /dev/null 2>&1 ; then
10793                         echo "Yes, it does."
10794                         val="$undef"
10795                 else
10796                         echo "No, it doesn't."
10797                         val="$define"
10798                 fi
10799         else
10800                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10801                 val="$define"
10802         fi
10803         ;;
10804 *)
10805         val="$undef";
10806         ;;
10807 esac
10808 set d_void_closedir
10809 eval $setvar
10810 $rm -f closedir*
10811 : check for volatile keyword
10812 echo " "
10813 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10814 $cat >try.c <<'EOCP'
10815 int main()
10816 {
10817         typedef struct _goo_struct goo_struct;
10818         goo_struct * volatile goo = ((goo_struct *)0);
10819         struct _goo_struct {
10820                 long long_int;
10821                 int reg_int;
10822                 char char_var;
10823         };
10824         typedef unsigned short foo_t;
10825         char *volatile foo;
10826         volatile int bar;
10827         volatile foo_t blech;
10828         foo = foo;
10829 }
10830 EOCP
10831 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10832         val="$define"
10833         echo "Yup, it does."
10834 else
10835         val="$undef"
10836         echo "Nope, it doesn't."
10837 fi
10838 set d_volatile
10839 eval $setvar
10840 $rm -f try.*
10841
10842 : see if there is a wait4
10843 set wait4 d_wait4
10844 eval $inlibc
10845
10846 : see if waitpid exists
10847 set waitpid d_waitpid
10848 eval $inlibc
10849
10850 : see if wcstombs exists
10851 set wcstombs d_wcstombs
10852 eval $inlibc
10853
10854 : see if wctomb exists
10855 set wctomb d_wctomb
10856 eval $inlibc
10857
10858 : preserve RCS keywords in files with variable substitution, grrr
10859 Date='$Date'
10860 Id='$Id'
10861 Log='$Log'
10862 RCSfile='$RCSfile'
10863 Revision='$Revision'
10864
10865 case "$crosscompile" in
10866 ''|[nN]*) crosscompile="$undef" ;;
10867 esac
10868
10869 case "$osname" in
10870 next|rhapsody) multiarch="$define" ;;
10871 esac
10872 case "$multiarch" in
10873 ''|[nN]*) multiarch="$undef" ;;
10874 esac
10875
10876 : check for alignment requirements
10877 echo " "
10878 case "$crosscompile$multiarch" in
10879 *$define*)
10880         $cat <<EOM
10881 You seem to be either cross-compiling or doing a multiarchitecture build,
10882 skipping the memory alignment check.
10883
10884 EOM
10885         case "$alignbytes" in
10886         '') alignbytes=8 ;;
10887         esac
10888         ;;
10889 *)
10890         case "$alignbytes" in
10891         '') echo "Checking alignment constraints..." >&4
10892                 $cat >try.c <<'EOCP'
10893 struct foobar {
10894         char foo;
10895         double bar;
10896 } try_algn;
10897 int main()
10898 {
10899         printf("%d\n", (char *)&try_algn.bar - (char *)&try_algn.foo);
10900 }
10901 EOCP
10902                 set try
10903                 if eval $compile_ok; then
10904                         dflt=`./try`
10905                 else
10906                         dflt='8'
10907                         echo "(I can't seem to compile the test program...)"
10908                 fi
10909                 ;;
10910         *) dflt="$alignbytes"
10911                 ;;
10912         esac
10913         rp="Doubles must be aligned on a how-many-byte boundary?"
10914         . ./myread
10915         alignbytes="$ans"
10916         $rm -f try.c try
10917         ;;
10918 esac
10919
10920
10921 : check for ordering of bytes in a long
10922 echo " "
10923 case "$crosscompile$multiarch" in
10924 *$define*)
10925         $cat <<EOM
10926 You seem to be either cross-compiling or doing a multiarchitecture build,
10927 skipping the byteorder check.
10928
10929 EOM
10930         byteorder='0xffff'
10931         ;;
10932 *)
10933         case "$byteorder" in
10934         '')
10935                 $cat <<'EOM'
10936 In the following, larger digits indicate more significance.  A big-endian
10937 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10938 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10939 machines may have weird orders like 3412.  A Cray will report 87654321,
10940 an Alpha will report 12345678. If the test program works the default is
10941 probably right.
10942 I'm now running the test program...
10943 EOM
10944                 $cat >try.c <<'EOCP'
10945 #include <stdio.h>
10946 int main()
10947 {
10948         int i;
10949         union {
10950                 unsigned long l;
10951                 char c[sizeof(long)];
10952         } u;
10953
10954         if (sizeof(long) > 4)
10955                 u.l = (0x08070605L << 32) | 0x04030201L;
10956         else
10957                 u.l = 0x04030201L;
10958         for (i = 0; i < sizeof(long); i++)
10959                 printf("%c", u.c[i]+'0');
10960         printf("\n");
10961         exit(0);
10962 }
10963 EOCP
10964                 xxx_prompt=y
10965                 set try
10966                 if eval $compile && ./try > /dev/null; then
10967                         dflt=`./try`
10968                         case "$dflt" in
10969                         [1-4][1-4][1-4][1-4]|12345678|87654321)
10970                                 echo "(The test program ran ok.)"
10971                                 echo "byteorder=$dflt"
10972                                 xxx_prompt=n
10973                         ;;
10974                         ????|????????) echo "(The test program ran ok.)" ;;
10975                         *) echo "(The test program didn't run right for some reason.)" ;;
10976                         esac
10977                 else
10978                         dflt='4321'
10979                         cat <<'EOM'
10980 (I can't seem to compile the test program.  Guessing big-endian...)
10981 EOM
10982                 fi
10983                 case "$xxx_prompt" in
10984                 y)
10985                         rp="What is the order of bytes in a long?"
10986                         . ./myread
10987                         byteorder="$ans"
10988                         ;;
10989                 *)      byteorder=$dflt
10990                         ;;
10991                 esac
10992                 ;;
10993         esac
10994         $rm -f try.c try
10995         ;;
10996 esac
10997
10998
10999 : how do we catenate cpp tokens here?
11000 echo " "
11001 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11002 $cat >cpp_stuff.c <<'EOCP'
11003 #define RCAT(a,b)a/**/b
11004 #define ACAT(a,b)a ## b
11005 RCAT(Rei,ser)
11006 ACAT(Cir,cus)
11007 EOCP
11008 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11009 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11010         echo "Oh!  Smells like ANSI's been here." >&4
11011         echo "We can catify or stringify, separately or together!"
11012         cpp_stuff=42
11013 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11014         echo "Ah, yes!  The good old days!" >&4
11015         echo "However, in the good old days we don't know how to stringify and"
11016         echo "catify at the same time."
11017         cpp_stuff=1
11018 else
11019         $cat >&4 <<EOM
11020 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11021 to have to edit the values of CAT[2-5] in config.h...
11022 EOM
11023         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11024 fi
11025 $rm -f cpp_stuff.*
11026
11027 : see if this is a db.h system
11028 set db.h i_db
11029 eval $inhdr
11030
11031 case "$i_db" in
11032 $define)
11033         : Check db version.
11034         echo " "
11035         echo "Checking Berkeley DB version ..." >&4
11036         $cat >try.c <<EOCP
11037 #$d_const HASCONST
11038 #ifndef HASCONST
11039 #define const
11040 #endif
11041 #include <sys/types.h>
11042 #include <stdio.h>
11043 #include <db.h>
11044 int main()
11045 {
11046 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11047     int Major, Minor, Patch ;
11048     unsigned long Version ;
11049     (void)db_version(&Major, &Minor, &Patch) ;
11050     printf("You have Berkeley DB Version 2 or greater\n");
11051
11052     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11053                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11054     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11055                 Major, Minor, Patch) ;
11056
11057     /* check that db.h & libdb are compatible */
11058     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11059         printf("db.h and libdb are incompatible\n") ;
11060         exit(3);        
11061     }
11062
11063     printf("db.h and libdb are compatible\n") ;
11064
11065     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11066                 + DB_VERSION_PATCH ;
11067
11068     /* needs to be >= 2.3.4 */
11069     if (Version < 2003004) {
11070     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11071         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11072         exit(2);        
11073     }
11074
11075     exit(0);
11076 #else
11077 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11078     printf("You have Berkeley DB Version 1\n");
11079     exit(0);    /* DB version < 2: the coast is clear. */
11080 #else
11081     exit(1);    /* <db.h> not Berkeley DB? */
11082 #endif
11083 #endif
11084 }
11085 EOCP
11086         set try
11087         if eval $compile && ./try; then
11088                 echo 'Looks OK.' >&4
11089         else
11090                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11091                 i_db=$undef
11092                 case " $libs " in
11093                 *"-ldb "*)
11094                         : Remove db from list of libraries to use
11095                         echo "Removing unusable -ldb from library list" >&4
11096                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11097                         shift
11098                         libs="$*"
11099                         echo "libs = $libs" >&4
11100                         ;;
11101                 esac
11102         fi
11103         $rm -f try.*
11104         ;;
11105 esac
11106
11107 case "$i_db" in
11108 define)
11109         : Check the return type needed for hash 
11110         echo " "
11111         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11112         $cat >try.c <<EOCP
11113 #$d_const HASCONST
11114 #ifndef HASCONST
11115 #define const
11116 #endif
11117 #include <sys/types.h>
11118 #include <db.h>
11119
11120 #ifndef DB_VERSION_MAJOR
11121 u_int32_t hash_cb (ptr, size)
11122 const void *ptr;
11123 size_t size;
11124 {
11125 }
11126 HASHINFO info;
11127 int main()
11128 {
11129         info.hash = hash_cb;
11130 }
11131 #endif
11132 EOCP
11133         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11134                 if $contains warning try.out >>/dev/null 2>&1 ; then
11135                         db_hashtype='int'
11136                 else
11137                         db_hashtype='u_int32_t'
11138                 fi
11139         else
11140                 : XXX Maybe we should just give up here.
11141                 db_hashtype=u_int32_t
11142                 $cat try.out >&4
11143                 echo "Help:  I can't seem to compile the db test program." >&4
11144                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11145         fi
11146         $rm -f try.*
11147         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11148         ;;
11149 *)      db_hashtype=u_int32_t
11150         ;;
11151 esac
11152 case "$i_db" in
11153 define)
11154         : Check the return type needed for prefix 
11155         echo " "
11156         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11157         cat >try.c <<EOCP
11158 #$d_const HASCONST
11159 #ifndef HASCONST
11160 #define const
11161 #endif
11162 #include <sys/types.h>
11163 #include <db.h>
11164
11165 #ifndef DB_VERSION_MAJOR
11166 size_t prefix_cb (key1, key2)
11167 const DBT *key1;
11168 const DBT *key2;
11169 {
11170 }
11171 BTREEINFO info;
11172 int main()
11173 {
11174         info.prefix = prefix_cb;
11175 }
11176 #endif
11177 EOCP
11178         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11179                 if $contains warning try.out >>/dev/null 2>&1 ; then
11180                         db_prefixtype='int'
11181                 else
11182                         db_prefixtype='size_t'
11183                 fi
11184         else
11185                 db_prefixtype='size_t'
11186                 : XXX Maybe we should just give up here.
11187                 $cat try.out >&4
11188                 echo "Help:  I can't seem to compile the db test program." >&4
11189                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11190         fi
11191         $rm -f try.*
11192         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11193         ;;
11194 *)      db_prefixtype='size_t'
11195         ;;
11196 esac
11197
11198 : check for void type
11199 echo " "
11200 echo "Checking to see how well your C compiler groks the void type..." >&4
11201 case "$voidflags" in
11202 '')
11203         $cat >try.c <<'EOCP'
11204 #if TRY & 1
11205 void sub() {
11206 #else
11207 sub() {
11208 #endif
11209         extern void moo();      /* function returning void */
11210         void (*goo)();          /* ptr to func returning void */
11211 #if TRY & 8
11212         void *hue;              /* generic ptr */
11213 #endif
11214 #if TRY & 2
11215         void (*foo[10])();
11216 #endif
11217
11218 #if TRY & 4
11219         if(goo == moo) {
11220                 exit(0);
11221         }
11222 #endif
11223         exit(0);
11224 }
11225 int main() { sub(); }
11226 EOCP
11227         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11228                 voidflags=$defvoidused
11229         echo "Good.  It appears to support void to the level $package wants.">&4
11230                 if $contains warning .out >/dev/null 2>&1; then
11231                         echo "However, you might get some warnings that look like this:"
11232                         $cat .out
11233                 fi
11234         else
11235 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11236                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11237                         echo "It supports 1..."
11238                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11239                                 echo "It also supports 2..."
11240                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11241                                         voidflags=7
11242                                         echo "And it supports 4 but not 8 definitely."
11243                                 else
11244                                         echo "It doesn't support 4..."
11245                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11246                                                 voidflags=11
11247                                                 echo "But it supports 8."
11248                                         else
11249                                                 voidflags=3
11250                                                 echo "Neither does it support 8."
11251                                         fi
11252                                 fi
11253                         else
11254                                 echo "It does not support 2..."
11255                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11256                                         voidflags=13
11257                                         echo "But it supports 4 and 8."
11258                                 else
11259                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11260                                                 voidflags=5
11261                                                 echo "And it supports 4 but has not heard about 8."
11262                                         else
11263                                                 echo "However it supports 8 but not 4."
11264                                         fi
11265                                 fi
11266                         fi
11267                 else
11268                         echo "There is no support at all for void."
11269                         voidflags=0
11270                 fi
11271         fi
11272 esac
11273 case "$voidflags" in
11274 "$defvoidused") ;;
11275 *)      $cat >&4 <<'EOM'
11276   Support flag bits are:
11277     1: basic void declarations.
11278     2: arrays of pointers to functions returning void.
11279     4: operations between pointers to and addresses of void functions.
11280     8: generic void pointers.
11281 EOM
11282         dflt="$voidflags";
11283         rp="Your void support flags add up to what?"
11284         . ./myread
11285         voidflags="$ans"
11286         ;;
11287 esac
11288 $rm -f try.* .out
11289
11290
11291 : How can we generate normalized random numbers ?
11292 echo " "
11293 echo "Looking for a random number function..." >&4
11294 case "$randfunc" in
11295 '')
11296         if set drand48 val -f; eval $csym; $val; then
11297                 dflt="drand48"
11298                 echo "Good, found drand48()." >&4
11299         elif set random val -f; eval $csym; $val; then
11300                 dflt="random"
11301                 echo "OK, found random()." >&4
11302         else
11303                 dflt="rand"
11304                 echo "Yick, looks like I have to use rand()." >&4
11305         fi
11306         echo " "
11307         ;;
11308 *)
11309         dflt="$randfunc"
11310         ;;
11311 esac
11312 cont=true
11313
11314 case "$ccflags" in
11315 *-Dmy_rand=*|*-Dmy_srand=*)
11316         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11317         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11318         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11319         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11320         ;;
11321 esac
11322
11323 while $test "$cont"; do
11324         rp="Use which function to generate random numbers?"
11325         . ./myread
11326         if $test "$ans" = "$dflt"; then
11327                 : null
11328         else
11329                 randbits=''
11330         fi
11331         randfunc="$ans"
11332         if set $ans val -f; eval $csym; $val; then
11333                 cont=''
11334         else
11335                 dflt=y
11336                 rp="I cannot find function $ans. Use that name anyway?"
11337                 . ./myread
11338                 dflt=rand
11339                 case "$ans" in
11340                         [yY]*) cont='';;
11341                 esac
11342         fi
11343         case "$cont" in
11344         '')
11345                 case "$randfunc" in
11346                 drand48)
11347                         drand01="drand48()"
11348                         seedfunc="srand48"
11349                         randbits=48
11350                         randseedtype=long
11351                         ;;
11352                 rand|random)
11353                         case "$randbits" in
11354                         '')
11355 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11356                                 $cat >try.c <<EOCP
11357 #$i_unistd I_UNISTD
11358 #$i_stdlib I_STDLIB
11359 #include <stdio.h>
11360 #ifdef I_UNISTD
11361 #  include <unistd.h>
11362 #endif
11363 #ifdef I_STDLIB
11364 #  include <stdlib.h>
11365 #endif
11366 int main()
11367 {
11368         register int i;
11369         register unsigned long tmp;
11370         register unsigned long max = 0L;
11371
11372         for (i = 1000; i; i--) {
11373                 tmp = (unsigned long) $randfunc();
11374                 if (tmp > max) max = tmp;
11375         }
11376         for (i = 0; max; i++)
11377                 max /= 2;
11378         printf("%d\n",i);
11379 }
11380 EOCP
11381                                 set try
11382                                 if eval $compile_ok; then
11383                                         dflt=`try`
11384                                 else
11385                                         dflt='?'
11386                                         echo "(I can't seem to compile the test program...)"
11387                                 fi
11388                                 ;;
11389                         *)
11390                                 dflt="$randbits"
11391                                 ;;
11392                         esac
11393                         rp="How many bits does your $randfunc() function produce?"
11394                         . ./myread
11395                         randbits="$ans"
11396                         $rm -f try.c try
11397                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11398                         seedfunc="s$randfunc"
11399                         randseedtype=unsigned
11400                         ;;
11401                 *)
11402                         dflt="31"
11403                         rp="How many bits does your $randfunc() function produce?"
11404                         . ./myread
11405                         randbits="$ans"
11406                         seedfunc="s$randfunc"
11407                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11408                         if set $seedfunc val -f; eval $csym; $val; then
11409                                 echo "(Using $seedfunc() to seed random generator)"
11410                         else
11411                                 echo "(Warning: no $seedfunc() to seed random generator)"
11412                                 seedfunc=rand
11413                         fi
11414                         randseedtype=unsigned
11415                         ;;
11416                 esac
11417                 ;;
11418         esac
11419 done
11420
11421 echo " "
11422 echo "Determining whether or not we are on an EBCDIC system..." >&4
11423 $cat >tebcdic.c <<'EOM'
11424 int main()
11425 {
11426   if ('M'==0xd4) return 0;
11427   return 1;
11428 }
11429 EOM
11430
11431 val=$undef
11432 set tebcdic
11433 if eval $compile_ok; then
11434         if ./tebcdic; then
11435                 echo "You have EBCDIC." >&4
11436                 val="$define"
11437         else
11438                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
11439         fi
11440 else
11441         echo "I'm unable to compile the test program." >&4
11442         echo "I'll assume ASCII or some ISO Latin." >&4
11443 fi
11444 $rm -f tebcdic.c tebcdic
11445 set ebcdic
11446 eval $setvar
11447
11448 echo " "
11449 $cat >&4 <<EOM
11450 Checking how to flush all pending stdio output...
11451 EOM
11452 # I only know how to find the first 32 possibly open files on SunOS.
11453 # See also hints/sunos_4_1.sh and util.c  --AD
11454 case "$osname" in
11455 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
11456 esac
11457 $cat >>try.c <<EOCP
11458 #include <stdio.h>
11459 #$i_unistd I_UNISTD
11460 #ifdef I_UNISTD
11461 # include <unistd.h>
11462 #endif
11463 #$d_sysconf HAS_SYSCONF
11464 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
11465 #ifdef HAS_STDIO_STREAM_ARRAY
11466 # define STDIO_STREAM_ARRAY $stdio_stream_array
11467 #endif
11468 int main() {
11469   FILE* p = fopen("try.out", "w");
11470 #ifdef TRY_FPUTC
11471   fputc('x', p);
11472 #else
11473 # ifdef TRY_FPRINTF
11474   fprintf(p, "x");
11475 # endif
11476 #endif
11477 #ifdef TRY_FFLUSH_NULL
11478   fflush(NULL);
11479 #endif
11480 #ifdef TRY_FFLUSH_ALL
11481   {
11482     long open_max = -1;
11483 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
11484     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
11485 # else
11486 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
11487     open_max = sysconf(_SC_OPEN_MAX);
11488 #  else
11489 #   ifdef FOPEN_MAX
11490     open_max = FOPEN_MAX;
11491 #   else
11492 #    ifdef OPEN_MAX
11493     open_max = OPEN_MAX;
11494 #    else
11495 #     ifdef _NFILE
11496     open_max = _NFILE;
11497 #     endif
11498 #    endif
11499 #   endif
11500 #  endif
11501 # endif 
11502 # ifdef HAS_STDIO_STREAM_ARRAY
11503     if (open_max > 0) {
11504       long i;
11505       for (i = 0; i < open_max; i++)
11506             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
11507                 STDIO_STREAM_ARRAY[i]._file < open_max &&
11508                 STDIO_STREAM_ARRAY[i]._flag)
11509                 fflush(&STDIO_STREAM_ARRAY[i]);
11510     }   
11511   }
11512 # endif
11513 #endif
11514   _exit(42);
11515 }
11516 EOCP
11517 : first we have to find out how _not_ to flush
11518 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
11519     output=''
11520     set try -DTRY_FPUTC
11521     if eval $compile; then
11522             $rm -f try.out
11523             ./try$exe_ext 2>/dev/null
11524             if $test ! -s try.out -a "X$?" = X42; then
11525                 output=-DTRY_FPUTC
11526             fi
11527     fi
11528     case "$output" in
11529     '')
11530             set try -DTRY_FPRINTF
11531             $rm -f try.out
11532             if eval $compile; then
11533                     $rm -f try.out
11534                     ./try$exe_ext 2>/dev/null
11535                     if $test ! -s try.out -a "X$?" = X42; then
11536                         output=-DTRY_FPRINTF
11537                     fi
11538             fi
11539         ;;
11540     esac
11541 fi
11542 : check for fflush NULL behaviour
11543 case "$fflushNULL" in
11544 '')     set try -DTRY_FFLUSH_NULL $output
11545         if eval $compile; then
11546                 $rm -f try.out
11547                 ./try$exe_ext 2>/dev/null
11548                 code="$?"
11549                 if $test -s try.out -a "X$code" = X42; then
11550                         fflushNULL="`$cat try.out`"
11551                 else
11552                         if $test "X$code" != X42; then
11553                                 $cat >&4 <<EOM
11554 (If this test failed, don't worry, we'll try another method shortly.)
11555 EOM
11556                         fi
11557                 fi
11558         fi
11559         $rm -f core try.core core.try.*
11560         case "$fflushNULL" in
11561         x)      $cat >&4 <<EOM
11562 Your fflush(NULL) works okay.
11563 EOM
11564                 fflushNULL="$define"
11565                 ;;
11566         '')     $cat >&4 <<EOM
11567 Your fflush(NULL) isn't working (contrary to ANSI C).
11568 EOM
11569                 fflushNULL="$undef"
11570                 ;;
11571         *)      $cat >&4 <<EOM
11572 Cannot figure out whether your fflush(NULL) works or not.
11573 I'm assuming it doesn't (contrary to ANSI C).
11574 EOM
11575                 fflushNULL="$undef"
11576                 ;;
11577         esac
11578         ;;
11579 $define|true|[yY]*)
11580         fflushNULL="$define"
11581         ;;
11582 *)
11583         fflushNULL="$undef"
11584         ;;
11585 esac
11586 : check explicit looping only if NULL did not work
11587 case "$fflushNULL" in
11588 "$undef")
11589         : check for fflush all behaviour
11590         case "$fflushall" in
11591         '')     set try -DTRY_FFLUSH_ALL $output
11592                 if eval $compile; then
11593                         $cat >&4 <<EOM
11594 (Now testing the other method--but note that also this may fail.)
11595 EOM
11596                         $rm -f try.out
11597                         ./try$exe_ext 2>/dev/null
11598                         if $test -s try.out -a "X$?" = X42; then
11599                                 fflushall="`$cat try.out`"
11600                         fi
11601                 fi
11602                 $rm -f core try.core core.try.*
11603                 case "$fflushall" in
11604                 x)      $cat >&4 <<EOM
11605 Whew. Flushing explicitly all the stdio streams works.
11606 EOM
11607                         fflushall="$define"
11608                         ;;
11609                 '')     $cat >&4 <<EOM
11610 Sigh. Flushing explicitly all the stdio streams doesn't work.
11611 EOM
11612                         fflushall="$undef"
11613                         ;;
11614                 *)      $cat >&4 <<EOM
11615 Cannot figure out whether flushing stdio streams explicitly works or not.
11616 I'm assuming it doesn't.
11617 EOM
11618                         fflushall="$undef"
11619                         ;;
11620                 esac
11621                 ;;
11622         "$define"|true|[yY]*)
11623                 fflushall="$define"
11624                 ;;
11625         *)
11626                 fflushall="$undef"
11627                 ;;
11628         esac
11629         ;;
11630 *)      fflushall="$undef"      
11631         ;;
11632 esac
11633 case "$fflushNULL$fflushall" in
11634 undefundef)
11635         $cat <<EOM
11636 I cannot figure out how to flush pending stdio output.
11637 EOM
11638         ;;
11639 esac
11640 $rm -f try.* try$exe_ext
11641
11642 : see what type file positions are declared as in the library
11643 rp="What is the type for file position used by fsetpos()?"
11644 set fpos_t fpostype long stdio.h sys/types.h
11645 eval $typedef_ask
11646
11647 : Store the full pathname to the ar program for use in the C program
11648 : Respect a hint or command line value for full_ar.
11649 case "$full_ar" in
11650 '') full_ar=$ar ;;
11651 esac
11652
11653 : Store the full pathname to the sed program for use in the C program
11654 full_sed=$sed
11655
11656 : see what type gids are declared as in the kernel
11657 echo " "
11658 echo "Looking for the type for group ids returned by getgid()."
11659 set gid_t gidtype xxx stdio.h sys/types.h
11660 eval $typedef
11661 case "$gidtype" in
11662 xxx)
11663         xxx=`./findhdr sys/user.h`
11664         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
11665         case $1 in
11666         unsigned) dflt="$1 $2" ;;
11667         *) dflt="$1" ;;
11668         esac
11669         ;;
11670 *) dflt="$gidtype";;
11671 esac
11672 case "$gidtype" in
11673 gid_t) echo "gid_t found." ;;
11674 *)      rp="What is the type for group ids returned by getgid()?"
11675         . ./myread
11676         gidtype="$ans"
11677         ;;
11678 esac
11679
11680 : see if getgroups exists
11681 set getgroups d_getgrps
11682 eval $inlibc
11683
11684 : see if setgroups exists
11685 set setgroups d_setgrps
11686 eval $inlibc
11687
11688
11689 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
11690 echo " "
11691 case "$d_getgrps$d_setgrps" in
11692 *define*)
11693         case "$groupstype" in
11694         '') dflt="$gidtype" ;;
11695         *)  dflt="$groupstype" ;;
11696         esac
11697         $cat <<EOM
11698 What type of pointer is the second argument to getgroups() and setgroups()?
11699 Usually this is the same as group ids, $gidtype, but not always.
11700
11701 EOM
11702         rp='What type pointer is the second argument to getgroups() and setgroups()?'
11703         . ./myread
11704         groupstype="$ans"
11705         ;;
11706 *)  groupstype="$gidtype";;
11707 esac
11708
11709 : see what type lseek is declared as in the kernel
11710 rp="What is the type used for lseek's offset on this system?"
11711 set off_t lseektype long stdio.h sys/types.h
11712 eval $typedef_ask
11713
11714 echo " "
11715 $echo $n "Checking to see how big your file offsets are...$c" >&4
11716 $cat >try.c <<EOCP
11717 #include <sys/types.h>
11718 #include <stdio.h>
11719 int main()
11720 {
11721         printf("%d\n", sizeof($lseektype));
11722 }
11723 EOCP
11724 set try
11725 if eval $compile_ok; then
11726         lseeksize=`./try`
11727         $echo " $lseeksize bytes." >&4
11728 else
11729         dflt='4'
11730         echo " "
11731         echo "(I can't seem to compile the test program.  Guessing...)"
11732         rp="What is the size of your file offsets (in bytes)?"
11733         . ./myread
11734         lseeksize="$ans"
11735 fi
11736 $rm -f try.c try
11737
11738 echo " "
11739 echo "Checking if your $make program sets \$(MAKE)..." >&4
11740 case "$make_set_make" in
11741 '')
11742         $sed 's/^X //' > testmake.mak << 'EOF'
11743 Xall:
11744 X       @echo 'maketemp="$(MAKE)"'
11745 EOF
11746         case "`$make -f testmake.mak 2>/dev/null`" in
11747         *maketemp=*) make_set_make='#' ;;
11748         *)      make_set_make="MAKE=$make" ;;
11749         esac
11750         $rm -f testmake.mak
11751         ;;
11752 esac
11753 case "$make_set_make" in
11754 '#') echo "Yup, it does.";;
11755 *) echo "Nope, it doesn't.";;
11756 esac
11757
11758 : see what type is used for mode_t
11759 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
11760 set mode_t modetype int stdio.h sys/types.h
11761 eval $typedef_ask
11762
11763 : define a fucntion to check prototypes
11764 $cat > protochk <<EOSH
11765 $startsh
11766 cc="$cc"
11767 optimize="$optimize"
11768 ccflags="$ccflags"
11769 prototype="$prototype"
11770 define="$define"
11771 rm=$rm
11772 EOSH
11773
11774 $cat >> protochk <<'EOSH'
11775
11776 $rm -f try.c
11777 foo="$1"
11778 shift
11779 while test $# -ge 2; do
11780         case "$1" in
11781                 $define) echo "#include <$2>" >> try.c ;;
11782                 literal) echo "$2" >> try.c ;;
11783         esac
11784     shift 2
11785 done
11786 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
11787 cat >> try.c <<'EOCP'
11788 #ifdef CAN_PROTOTYPE
11789 #define _(args) args
11790 #else
11791 #define _(args) ()
11792 #endif
11793 EOCP
11794 echo "$foo" >> try.c
11795 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
11796 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
11797 status=$?
11798 $rm -f try.[co]
11799 exit $status
11800 EOSH
11801 chmod +x protochk
11802 $eunicefix protochk
11803
11804 : see what type is used for size_t
11805 rp="What is the type used for the length parameter for string functions?"
11806 set size_t sizetype 'unsigned int' stdio.h sys/types.h
11807 eval $typedef_ask
11808
11809 : check for type of arguments to gethostbyaddr. 
11810 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
11811         case "$d_gethbyaddr" in
11812         $define)
11813                 $cat <<EOM
11814
11815 Checking to see what type of arguments are accepted by gethostbyaddr().
11816 EOM
11817                 hdrs="$define sys/types.h
11818                         $d_socket sys/socket.h 
11819                         $i_niin netinet/in.h 
11820                         $i_netdb netdb.h
11821                         $i_unistd unistd.h"
11822                 : The first arg can 'char *' or 'void *'
11823                 : The second arg is some of integral type
11824                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
11825                         for yyy in size_t long int; do
11826                                 case "$netdb_host_type" in
11827                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
11828                                         if ./protochk "$try" $hdrs; then
11829                                                 echo "Your system accepts $xxx for the first arg."
11830                                                 echo "...and $yyy for the second arg."
11831                                                 netdb_host_type="$xxx"
11832                                                 netdb_hlen_type="$yyy"
11833                                         fi
11834                                         ;;
11835                                 esac
11836                         done
11837                 done
11838                 : In case none of those worked, prompt the user.
11839                 case "$netdb_host_type" in
11840                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
11841                         dflt='char *'
11842                         . ./myread
11843                         netdb_host_type=$ans
11844                         rp='What is the type for the 2nd argument to gethostbyaddr?'
11845                         dflt="$sizetype"
11846                         . ./myread
11847                         netdb_hlen_type=$ans
11848                         ;;
11849                 esac
11850                 ;;
11851         *)      : no gethostbyaddr, so pick harmless defaults
11852                 netdb_host_type='char *'
11853                 netdb_hlen_type="$sizetype"
11854                 ;;
11855         esac
11856         # Remove the "const" if needed. -- but then we'll have a 
11857         # prototype clash!
11858         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
11859 fi
11860
11861 : check for type of argument to gethostbyname. 
11862 if test "X$netdb_name_type" = X ; then
11863         case "$d_gethbyname" in
11864         $define)
11865                 $cat <<EOM
11866
11867 Checking to see what type of argument is accepted by gethostbyname().
11868 EOM
11869                 hdrs="$define sys/types.h
11870                         $d_socket sys/socket.h 
11871                         $i_niin netinet/in.h 
11872                         $i_netdb netdb.h
11873                         $i_unistd unistd.h"
11874                 for xxx in "const char *" "char *"; do
11875                         case "$netdb_name_type" in
11876                         '')     try="extern struct hostent *gethostbyname($xxx);"
11877                                 if ./protochk "$try" $hdrs; then
11878                                         echo "Your system accepts $xxx."
11879                                         netdb_name_type="$xxx"
11880                                 fi
11881                                 ;;
11882                         esac
11883                 done
11884                 : In case none of those worked, prompt the user.
11885                 case "$netdb_name_type" in
11886                 '')     rp='What is the type for the 1st argument to gethostbyname?'
11887                         dflt='char *'
11888                         . ./myread
11889                         netdb_name_type=$ans
11890                         ;;
11891                 esac
11892                 ;;
11893         *)      : no gethostbyname, so pick harmless default
11894                 netdb_name_type='char *'
11895                 ;;
11896         esac
11897 fi
11898
11899 : check for type of 1st argument to getnetbyaddr. 
11900 if test "X$netdb_net_type" = X ; then
11901         case "$d_getnbyaddr" in
11902         $define)
11903                 $cat <<EOM
11904
11905 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11906 EOM
11907                 hdrs="$define sys/types.h
11908                         $d_socket sys/socket.h 
11909                         $i_niin netinet/in.h 
11910                         $i_netdb netdb.h
11911                         $i_unistd unistd.h"
11912                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11913                         case "$netdb_net_type" in
11914                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
11915                                 if ./protochk "$try" $hdrs; then
11916                                         echo "Your system accepts $xxx."
11917                                         netdb_net_type="$xxx"
11918                                 fi
11919                                 ;;
11920                         esac
11921                 done
11922                 : In case none of those worked, prompt the user.
11923                 case "$netdb_net_type" in
11924                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
11925                         dflt='long'
11926                         . ./myread
11927                         netdb_net_type=$ans
11928                         ;;
11929                 esac
11930                 ;;
11931         *)      : no getnetbyaddr, so pick harmless default
11932                 netdb_net_type='long'
11933                 ;;
11934         esac
11935 fi
11936 : locate the preferred pager for this system
11937 case "$pager" in
11938 '')
11939         dflt=''
11940         case "$pg" in
11941         /*) dflt=$pg;;
11942         esac
11943         case "$more" in
11944         /*) dflt=$more;;
11945         esac
11946         case "$less" in
11947         /*) dflt=$less;;
11948         esac
11949         case "$dflt" in
11950         '') dflt=/usr/ucb/more;;
11951         esac
11952         ;;
11953 *) dflt="$pager";;
11954 esac
11955 echo " "
11956 fn=f/
11957 rp='What pager is used on your system?'
11958 . ./getfile
11959 pager="$ans"
11960
11961 : see what type pids are declared as in the kernel
11962 rp="What is the type of process ids on this system?"
11963 set pid_t pidtype int stdio.h sys/types.h
11964 eval $typedef_ask
11965
11966 : Find earliest binary compatible site_perl subdirectory perl can use.
11967 case "$bincompat5005" in
11968 "$define") xs_apiversion='5.005' ;;
11969 *) xs_apiversion=$apiversion ;;   # The current site_perl version.
11970 esac
11971 : Find earliest pure perl site_perl subdirectory perl can use.
11972 : The versioned directories started at 5.005.
11973 pm_apiversion='5.005'
11974
11975 : check for length of pointer
11976 echo " "
11977 case "$ptrsize" in
11978 '')
11979         $echo $n "Checking to see how big your pointers are...$c" >&4
11980         if test "$voidflags" -gt 7; then
11981                 echo '#define VOID_PTR char *' > try.c
11982         else
11983                 echo '#define VOID_PTR void *' > try.c
11984         fi
11985         $cat >>try.c <<'EOCP'
11986 #include <stdio.h>
11987 int main()
11988 {
11989         printf("%d\n", sizeof(VOID_PTR));
11990         exit(0);
11991 }
11992 EOCP
11993         set try
11994         if eval $compile_ok; then
11995                 ptrsize=`./try`
11996                 $echo " $ptrsize bytes." >&4
11997         else
11998                 dflt='4'
11999                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
12000                 rp="What is the size of a pointer (in bytes)?"
12001                 . ./myread
12002                 ptrsize="$ans"
12003         fi
12004         ;;
12005 esac
12006 $rm -f try.c try
12007
12008 : see if ar generates random libraries by itself
12009 echo " "
12010 echo "Checking how to generate random libraries on your machine..." >&4
12011 echo 'int bar1() { return bar2(); }' > bar1.c
12012 echo 'int bar2() { return 2; }' > bar2.c
12013 $cat > foo.c <<'EOP'
12014 int main() { printf("%d\n", bar1()); exit(0); }
12015 EOP
12016 $cc $ccflags -c bar1.c >/dev/null 2>&1
12017 $cc $ccflags -c bar2.c >/dev/null 2>&1
12018 $cc $ccflags -c foo.c >/dev/null 2>&1
12019 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12020 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12021         ./foobar >/dev/null 2>&1; then
12022         echo "$ar appears to generate random libraries itself."
12023         orderlib=false
12024         ranlib=":"
12025 elif $ar ts bar$_a >/dev/null 2>&1 &&
12026         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12027         ./foobar >/dev/null 2>&1; then
12028                 echo "a table of contents needs to be added with '$ar ts'."
12029                 orderlib=false
12030                 ranlib="$ar ts"
12031 else
12032         case "$ranlib" in
12033         :) ranlib='';;
12034         '')
12035                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12036                 $test -f $ranlib || ranlib=''
12037                 ;;
12038         esac
12039         if $test -n "$ranlib"; then
12040                 echo "your system has '$ranlib'; we'll use that."
12041                 orderlib=false
12042         else
12043                 echo "your system doesn't seem to support random libraries"
12044                 echo "so we'll use lorder and tsort to order the libraries."
12045                 orderlib=true
12046                 ranlib=":"
12047         fi
12048 fi
12049 $rm -f foo* bar* 
12050
12051 : check for type of arguments to select. 
12052 case "$selecttype" in
12053 '') case "$d_select" in
12054         $define)
12055                 $cat <<EOM
12056 Checking to see what type of arguments are accepted by select().
12057 EOM
12058                 hdrs="$define sys/types.h
12059                         $i_systime sys/time.h 
12060                         $i_sysselct sys/select.h
12061                         $d_socket sys/socket.h"
12062                 : The first arg can be int, unsigned, or size_t
12063                 : The last arg may or may not be 'const'
12064                 val=''
12065                 : void pointer has been seen but using that
12066                 : breaks the selectminbits test
12067                 for xxx in 'fd_set *' 'int *'; do
12068                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12069                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
12070                                         case "$val" in
12071                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12072                                                 if ./protochk "$try" $hdrs; then
12073                                                         echo "Your system accepts $xxx."
12074                                                         val="$xxx"
12075                                                 fi
12076                                                 ;;
12077                                         esac
12078                                 done
12079                         done
12080                 done
12081                 case "$val" in
12082                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12083                         case "$d_fd_set" in
12084                                 $define) dflt="fd_set *" ;;
12085                                 *)              dflt="int *" ;;
12086                         esac
12087                         . ./myread
12088                         val=$ans
12089                         ;;
12090                 esac
12091                 selecttype="$val"
12092                 ;;
12093         *)      : no select, so pick a harmless default
12094                 selecttype='int *'
12095                 ;;
12096         esac
12097         ;;
12098 esac
12099
12100 : check for the select 'width'
12101 case "$selectminbits" in
12102 '') case "$d_select" in
12103         $define)
12104                 $cat <<EOM
12105
12106 Checking to see on how many bits at a time your select() operates...
12107 EOM
12108                 $cat >try.c <<EOCP
12109 #include <sys/types.h>
12110 #$i_time I_TIME
12111 #$i_systime I_SYS_TIME
12112 #$i_systimek I_SYS_TIME_KERNEL
12113 #ifdef I_TIME
12114 #   include <time.h>
12115 #endif
12116 #ifdef I_SYS_TIME
12117 #   ifdef I_SYS_TIME_KERNEL
12118 #       define KERNEL
12119 #   endif
12120 #   include <sys/time.h>
12121 #   ifdef I_SYS_TIME_KERNEL
12122 #       undef KERNEL
12123 #   endif
12124 #endif
12125 #$i_sysselct I_SYS_SELECT
12126 #ifdef I_SYS_SELECT
12127 #include <sys/select.h>
12128 #endif
12129 #$d_socket HAS_SOCKET
12130 #ifdef HAS_SOCKET
12131 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12132 #endif
12133 #include <stdio.h>
12134 $selecttype b;
12135 #define S sizeof(*(b))
12136 #define MINBITS 64
12137 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
12138 #define NBITS  (NBYTES * 8)
12139 int main() {
12140     char s[NBYTES];
12141     struct timeval t;
12142     int i;
12143     FILE* fp;
12144     int fd;
12145
12146     fclose(stdin);
12147     fp = fopen("try.c", "r");
12148     if (fp == 0)
12149       exit(1);
12150     fd = fileno(fp);
12151     if (fd < 0)
12152       exit(2);
12153     b = ($selecttype)s;
12154     for (i = 0; i < NBITS; i++)
12155         FD_SET(i, b);
12156     t.tv_sec  = 0;
12157     t.tv_usec = 0;
12158     select(fd + 1, b, 0, 0, &t);
12159     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
12160     printf("%d\n", i + 1);
12161     return 0;
12162 }
12163 EOCP
12164                 set try
12165                 if eval $compile_ok; then
12166                         selectminbits=`./try`
12167                         case "$selectminbits" in
12168                         '')     cat >&4 <<EOM
12169 Cannot figure out on how many bits at a time your select() operates.
12170 I'll play safe and guess it is 32 bits.
12171 EOM
12172                                 selectminbits=32
12173                                 bits="32 bits"
12174                                 ;;
12175                         1)      bits="1 bit" ;;
12176                         *)      bits="$selectminbits bits" ;;
12177                         esac
12178                         echo "Your select() operates on $bits at a time." >&4
12179                 else
12180                         rp='What is the minimum number of bits your select() operates on?'
12181                         case "$byteorder" in
12182                         1234|12345678)  dflt=32 ;;
12183                         *)              dflt=1  ;;
12184                         esac
12185                         . ./myread
12186                         val=$ans
12187                         selectminbits="$val"
12188                 fi
12189                 $rm -f try.* try
12190                 ;;
12191         *)      : no select, so pick a harmless default
12192                 selectminbits='32'
12193                 ;;
12194         esac
12195         ;;
12196 esac
12197
12198 : Trace out the files included by signal.h, then look for SIGxxx names.
12199 : Remove SIGARRAYSIZE used by HPUX.
12200 : Remove SIGSTKSIZE used by Linux.
12201 : Remove SIGSTKSZ used by Posix.
12202 : Remove SIGTYP void lines used by OS2.
12203 xxx=`echo '#include <signal.h>' |
12204         $cppstdin $cppminus $cppflags 2>/dev/null |
12205         $grep '^[       ]*#.*include' | 
12206         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
12207 : Check this list of files to be sure we have parsed the cpp output ok.
12208 : This will also avoid potentially non-existent files, such 
12209 : as ../foo/bar.h
12210 xxxfiles=''
12211 for xx in $xxx /dev/null ; do
12212         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
12213 done
12214 : If we have found no files, at least try signal.h
12215 case "$xxxfiles" in
12216 '')     xxxfiles=`./findhdr signal.h` ;;
12217 esac
12218 xxx=`awk '
12219 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
12220         print substr($2, 4, 20)
12221 }
12222 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
12223         print substr($3, 4, 20)
12224 }' $xxxfiles`
12225 : Append some common names just in case the awk scan failed.
12226 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
12227 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
12228 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
12229 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
12230 : generate a few handy files for later
12231 $cat > signal.c <<'EOCP'
12232 #include <sys/types.h>
12233 #include <signal.h>
12234 #include <stdio.h>
12235 int main() {
12236
12237 /* Strange style to avoid deeply-nested #if/#else/#endif */
12238 #ifndef NSIG
12239 #  ifdef _NSIG
12240 #    define NSIG (_NSIG)
12241 #  endif
12242 #endif
12243
12244 #ifndef NSIG
12245 #  ifdef SIGMAX
12246 #    define NSIG (SIGMAX+1)
12247 #  endif
12248 #endif
12249
12250 #ifndef NSIG
12251 #  ifdef SIG_MAX
12252 #    define NSIG (SIG_MAX+1)
12253 #  endif
12254 #endif
12255
12256 #ifndef NSIG
12257 #  ifdef MAXSIG
12258 #    define NSIG (MAXSIG+1)
12259 #  endif
12260 #endif
12261
12262 #ifndef NSIG
12263 #  ifdef MAX_SIG
12264 #    define NSIG (MAX_SIG+1)
12265 #  endif
12266 #endif
12267
12268 #ifndef NSIG
12269 #  ifdef SIGARRAYSIZE
12270 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
12271 #  endif
12272 #endif
12273
12274 #ifndef NSIG
12275 #  ifdef _sys_nsig
12276 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
12277 #  endif
12278 #endif
12279
12280 /* Default to some arbitrary number that's big enough to get most
12281    of the common signals.
12282 */
12283 #ifndef NSIG
12284 #    define NSIG 50
12285 #endif
12286
12287 printf("NSIG %d\n", NSIG);
12288
12289 #ifndef JUST_NSIG
12290
12291 EOCP
12292
12293 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
12294 {
12295         printf "#ifdef SIG"; printf $1; printf "\n"
12296         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
12297         printf $1; printf ");\n"
12298         printf "#endif\n"
12299 }
12300 END {
12301         printf "#endif /* JUST_NSIG */\n";
12302         printf "}\n";
12303 }
12304 ' >>signal.c
12305 $cat >signal.awk <<'EOP'
12306 BEGIN { ndups = 0 }
12307 $1 ~ /^NSIG$/ { nsig = $2 }
12308 ($1 !~ /^NSIG$/) && (NF == 2) {
12309     if ($2 > maxsig) { maxsig = $2 }
12310     if (sig_name[$2]) {
12311         dup_name[ndups] = $1
12312         dup_num[ndups] = $2
12313         ndups++ 
12314     }
12315     else {
12316         sig_name[$2] = $1
12317         sig_num[$2] = $2
12318     }
12319 }
12320 END { 
12321     if (nsig == 0) {
12322         nsig = maxsig + 1
12323     }
12324     printf("NSIG %d\n", nsig);
12325     for (n = 1; n < nsig; n++) {
12326         if (sig_name[n]) {
12327             printf("%s %d\n", sig_name[n], sig_num[n])
12328         }
12329         else {
12330             printf("NUM%d %d\n", n, n) 
12331         }
12332     }
12333     for (n = 0; n < ndups; n++) {
12334         printf("%s %d\n", dup_name[n], dup_num[n])
12335     }
12336 }
12337 EOP
12338 $cat >signal_cmd <<EOS
12339 $startsh
12340 if $test -s signal.lst; then
12341     echo "Using your existing signal.lst file"
12342         exit 0
12343 fi
12344 xxx="$xxx"
12345 EOS
12346 $cat >>signal_cmd <<'EOS'
12347
12348 set signal
12349 if eval $compile_ok; then
12350         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
12351 else
12352         echo "(I can't seem be able to compile the whole test program)" >&4
12353         echo "(I'll try it in little pieces.)" >&4
12354         set signal -DJUST_NSIG
12355         if eval $compile_ok; then
12356                 ./signal$_exe > signal.nsg
12357                 $cat signal.nsg
12358         else
12359                 echo "I can't seem to figure out how many signals you have." >&4
12360                 echo "Guessing 50." >&4
12361                 echo 'NSIG 50' > signal.nsg
12362         fi
12363         : Now look at all the signal names, one at a time.
12364         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
12365                 $cat > signal.c <<EOCP
12366 #include <sys/types.h>
12367 #include <signal.h>
12368 #include <stdio.h>
12369 int main() {
12370 printf("$xx %d\n", SIG${xx});
12371 return 0;
12372 }
12373 EOCP
12374                 set signal
12375                 if eval $compile; then
12376                         echo "SIG${xx} found."
12377                         ./signal$_exe  >> signal.ls1
12378                 else
12379                         echo "SIG${xx} NOT found."
12380                 fi
12381         done
12382         if $test -s signal.ls1; then
12383                 $cat signal.nsg signal.ls1 |
12384                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
12385         fi
12386
12387 fi
12388 if $test -s signal.lst; then
12389         :
12390 else
12391         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
12392         echo 'kill -l' >signal
12393         set X `csh -f <signal`
12394         $rm -f signal
12395         shift
12396         case $# in
12397         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
12398         esac
12399         echo $@ | $tr ' ' $trnl | \
12400             $awk '{ printf "%s %d\n", $1, ++s; }
12401                   END { printf "NSIG %d\n", ++s }' >signal.lst
12402 fi
12403 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
12404 EOS
12405 chmod a+x signal_cmd
12406 $eunicefix signal_cmd
12407
12408 : generate list of signal names
12409 echo " "
12410 case "$sig_name_init" in
12411 '') doinit=yes ;;
12412 *)  case "$sig_num_init" in
12413     ''|*,*) doinit=yes ;;
12414     esac ;;
12415 esac
12416 case "$doinit" in
12417 yes)
12418         echo "Generating a list of signal names and numbers..." >&4
12419         . ./signal_cmd
12420         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
12421         sig_name=`$awk 'BEGIN { printf "ZERO " }
12422                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
12423         sig_num=`$awk  'BEGIN { printf "0 " }
12424                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
12425         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
12426                              !/^NSIG/   { printf "\"%s\", ", $1 }
12427                              END        { printf "0\n" }' signal.lst`
12428         sig_num_init=`$awk  'BEGIN      { printf "0, " }
12429                              !/^NSIG/   { printf "%d, ", $2}
12430                              END        { printf "0\n"}' signal.lst`
12431         ;;
12432 esac
12433 echo "The following $sig_count signals are available:"
12434 echo " "
12435 echo $sig_name | $awk \
12436 'BEGIN { linelen = 0 }
12437 {
12438         for (i = 1; i <= NF; i++) {
12439                 name = "SIG" $i " "
12440                 linelen = linelen + length(name)
12441                 if (linelen > 70) {
12442                         printf "\n"
12443                         linelen = length(name)
12444                 }
12445                 printf "%s", name
12446         }
12447         printf "\n"
12448 }'
12449 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
12450
12451 : see what type is used for signed size_t
12452 set ssize_t ssizetype int stdio.h sys/types.h
12453 eval $typedef
12454 dflt="$ssizetype"
12455 $cat > ssize.c <<EOM
12456 #include <stdio.h>
12457 #include <sys/types.h>
12458 #define Size_t $sizetype
12459 #define SSize_t $dflt
12460 int main()
12461 {
12462         if (sizeof(Size_t) == sizeof(SSize_t))
12463                 printf("$dflt\n");
12464         else if (sizeof(Size_t) == sizeof(int))
12465                 printf("int\n");
12466         else 
12467                 printf("long\n");
12468         exit(0);
12469 }
12470 EOM
12471 echo " "
12472 set ssize
12473 if eval $compile_ok && ./ssize > /dev/null; then
12474         ssizetype=`./ssize`
12475         echo "I'll be using $ssizetype for functions returning a byte count." >&4
12476 else
12477         $cat >&4 <<EOM
12478 Help! I can't compile and run the ssize_t test program: please enlighten me!
12479 (This is probably a misconfiguration in your system or libraries, and
12480 you really ought to fix it.  Still, I'll try anyway.)
12481
12482 I need a type that is the same size as $sizetype, but is guaranteed to
12483 be signed.  Common values are ssize_t, int and long.
12484
12485 EOM
12486         rp="What signed type is the same size as $sizetype?"
12487         . ./myread
12488         ssizetype="$ans"
12489 fi
12490 $rm -f ssize ssize.*
12491
12492 : see what type of char stdio uses.
12493 echo " "
12494 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12495         echo "Your stdio uses unsigned chars." >&4
12496         stdchar="unsigned char"
12497 else
12498         echo "Your stdio uses signed chars." >&4
12499         stdchar="char"
12500 fi
12501
12502 : see if time exists
12503 echo " "
12504 if test "X$d_time" = X -o X"$timetype" = X; then
12505     if set time val -f d_time; eval $csym; $val; then
12506                 echo 'time() found.' >&4
12507                 val="$define"
12508                 rp="What is the type returned by time() on this system?"
12509                 set time_t timetype long stdio.h sys/types.h
12510                 eval $typedef_ask
12511     else
12512                 echo 'time() not found, hope that will do.' >&4
12513                 val="$undef"
12514                 timetype='int';
12515     fi
12516     set d_time
12517     eval $setvar
12518 fi
12519
12520 : see what type uids are declared as in the kernel
12521 echo " "
12522 echo "Looking for the type for user ids returned by getuid()."
12523 set uid_t uidtype xxx stdio.h sys/types.h
12524 eval $typedef
12525 case "$uidtype" in
12526 xxx)
12527         xxx=`./findhdr sys/user.h`
12528         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
12529         case $1 in
12530         unsigned) dflt="$1 $2" ;;
12531         *) dflt="$1" ;;
12532         esac
12533         ;;
12534 *) dflt="$uidtype";;
12535 esac
12536 case "$uidtype" in
12537 uid_t)  echo "uid_t found." ;;
12538 *)      rp="What is the type for user ids returned by getuid()?"
12539         . ./myread
12540         uidtype="$ans"
12541         ;;
12542 esac
12543
12544 echo " "
12545 case "$uidtype" in
12546 *_t) zzz="$uidtype"     ;;
12547 *)   zzz="uid"          ;;
12548 esac
12549 echo "Checking the sign of $zzz..." >&4
12550 cat > try.c <<EOCP
12551 #include <sys/types.h>
12552 #include <stdio.h>
12553 int main() {
12554         $uidtype foo = -1;
12555         if (foo < 0)
12556                 printf("-1\n");
12557         else
12558                 printf("1\n");
12559 }
12560 EOCP
12561 set try
12562 if eval $compile; then
12563         yyy=`./try`
12564         case "$yyy" in
12565         '')     uidsign=1
12566                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12567                 ;;
12568         *)      uidsign=$yyy
12569                 case "$uidsign" in
12570                  1) echo "Your $zzz is unsigned." ;;
12571                 -1) echo "Your $zzz is signed."   ;;
12572                 esac
12573                 ;;
12574         esac
12575 else
12576         uidsign=1
12577         echo "(I can't compile the test program--guessing unsigned.)" >&4
12578 fi
12579
12580
12581 : see if dbm.h is available
12582 : see if dbmclose exists
12583 set dbmclose d_dbmclose
12584 eval $inlibc
12585
12586 case "$d_dbmclose" in
12587 $define)
12588         set dbm.h i_dbm
12589         eval $inhdr
12590         case "$i_dbm" in
12591         $define)
12592                 val="$undef"
12593                 set i_rpcsvcdbm
12594                 eval $setvar
12595                 ;;
12596         *)      set rpcsvc/dbm.h i_rpcsvcdbm
12597                 eval $inhdr
12598                 ;;
12599         esac
12600         ;;
12601 *)      echo "We won't be including <dbm.h>"
12602         val="$undef"
12603         set i_dbm
12604         eval $setvar
12605         val="$undef"
12606         set i_rpcsvcdbm
12607         eval $setvar
12608         ;;
12609 esac
12610
12611 : see if this is a sys/file.h system
12612 val=''
12613 set sys/file.h val
12614 eval $inhdr
12615
12616 : do we need to include sys/file.h ?
12617 case "$val" in
12618 "$define")
12619         echo " "
12620         if $h_sysfile; then
12621                 val="$define"
12622                 echo "We'll be including <sys/file.h>." >&4
12623         else
12624                 val="$undef"
12625                 echo "We won't be including <sys/file.h>." >&4
12626         fi
12627         ;;
12628 *)
12629         h_sysfile=false
12630         ;;
12631 esac
12632 set i_sysfile
12633 eval $setvar
12634
12635 : see if fcntl.h is there
12636 val=''
12637 set fcntl.h val
12638 eval $inhdr
12639
12640 : see if we can include fcntl.h
12641 case "$val" in
12642 "$define")
12643         echo " "
12644         if $h_fcntl; then
12645                 val="$define"
12646                 echo "We'll be including <fcntl.h>." >&4
12647         else
12648                 val="$undef"
12649                 if $h_sysfile; then
12650         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12651                 else
12652                         echo "We won't be including <fcntl.h>." >&4
12653                 fi
12654         fi
12655         ;;
12656 *)
12657         h_fcntl=false
12658         val="$undef"
12659         ;;
12660 esac
12661 set i_fcntl
12662 eval $setvar
12663
12664 : see if locale.h is available
12665 set locale.h i_locale
12666 eval $inhdr
12667
12668 : see if mach cthreads are available
12669 if test "X$usethreads" = "X$define"; then
12670         set mach/cthreads.h i_machcthr
12671         eval $inhdr
12672 else
12673         i_machcthr="$undef"
12674 fi
12675
12676
12677
12678 : see if this is a math.h system
12679 set math.h i_math
12680 eval $inhdr
12681
12682 : see if this is a mntent.h system
12683 set mntent.h i_mntent
12684 eval $inhdr
12685
12686 : see if ndbm.h is available
12687 set ndbm.h t_ndbm
12688 eval $inhdr
12689 case "$t_ndbm" in
12690 $define)
12691         : see if dbm_open exists
12692         set dbm_open d_dbm_open
12693         eval $inlibc
12694         case "$d_dbm_open" in
12695         $undef)
12696                 t_ndbm="$undef"
12697                 echo "We won't be including <ndbm.h>"
12698                 ;;
12699         esac
12700         ;;
12701 esac
12702 val="$t_ndbm"
12703 set i_ndbm
12704 eval $setvar
12705
12706 : see if net/errno.h is available
12707 val=''
12708 set net/errno.h val
12709 eval $inhdr
12710
12711 : Unfortunately, it causes problems on some systems.  Arrgh.
12712 case "$val" in
12713 $define)
12714         cat > try.c <<'EOM'
12715 #include <stdio.h>
12716 #include <errno.h>
12717 #include <net/errno.h>
12718 int func()
12719 {
12720         return ENOTSOCK;
12721 }
12722 EOM
12723         if $cc $ccflags -c try.c >/dev/null 2>&1; then
12724                 echo "We'll be including <net/errno.h>." >&4
12725         else
12726                 echo "We won't be including <net/errno.h>." >&4
12727                 val="$undef"
12728         fi
12729         $rm -f try.* try
12730         ;;
12731 esac
12732 set i_neterrno
12733 eval $setvar
12734
12735 : see if netinet/tcp.h is available
12736 set netinet/tcp.h i_netinettcp
12737 eval $inhdr
12738
12739 : see if this is a poll.h system
12740 set poll.h i_poll
12741 eval $inhdr
12742
12743 : get C preprocessor symbols handy
12744 echo " "
12745 $echo $n "Hmm... $c"
12746 echo $al | $tr ' ' $trnl >Cppsym.know
12747 $cat <<EOSS >Cppsym
12748 $startsh
12749 case "\$1" in
12750 -l) list=true
12751         shift
12752         ;;
12753 esac
12754 unknown=''
12755 case "\$list\$#" in
12756 1|2)
12757         for sym do
12758                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
12759                         exit 0
12760                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
12761                         :
12762                 else
12763                         unknown="\$unknown \$sym"
12764                 fi
12765         done
12766         set X \$unknown
12767         shift
12768         ;;
12769 esac
12770 case \$# in
12771 0) exit 1;;
12772 esac
12773 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
12774 #ifdef \1\\
12775 exit 0; _ _ _ _\1\\      \1\\
12776 #endif\\
12777 /' >Cppsym\$\$
12778 echo "exit 1; _ _ _" >>Cppsym\$\$
12779 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
12780 case "\$list" in
12781 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
12782 *)
12783         sh Cppsym2\$\$
12784         status=\$?
12785         ;;
12786 esac
12787 $rm -f Cppsym\$\$ Cppsym2\$\$
12788 exit \$status
12789 EOSS
12790 chmod +x Cppsym
12791 $eunicefix Cppsym
12792 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
12793
12794 : now check the C compiler for additional symbols
12795 postprocess_cc_v=''
12796 case "$osname" in
12797 aix) postprocess_cc_v="|$tr , ' '" ;;
12798 esac
12799 $cat >ccsym <<EOS
12800 $startsh
12801 $cat >tmp.c <<EOF
12802 extern int foo;
12803 EOF
12804 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
12805 do
12806         case "\$i" in
12807         -D*) echo "\$i" | $sed 's/^-D//';;
12808         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
12809         esac
12810 done
12811 $rm -f try.c
12812 EOS
12813 postprocess_cc_v=''
12814 chmod +x ccsym
12815 $eunicefix ccsym
12816 ./ccsym > ccsym1.raw
12817 if $test -s ccsym1.raw; then
12818        $sort ccsym1.raw | $uniq >ccsym.raw
12819 else
12820        mv ccsym1.raw ccsym.raw
12821 fi
12822
12823 $awk '/\=/ { print $0; next }
12824         { print $0"=1" }' ccsym.raw >ccsym.list
12825 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
12826 $comm -13 ccsym.true ccsym.list >ccsym.own
12827 $comm -12 ccsym.true ccsym.list >ccsym.com
12828 $comm -23 ccsym.true ccsym.list >ccsym.cpp
12829 also=''
12830 if $test -z ccsym.raw; then
12831         echo "Your C compiler doesn't seem to define any symbols!" >&4
12832         echo " "
12833         echo "However, your C preprocessor defines the following symbols:"
12834         $cat Cppsym.true
12835         ccsymbols=''
12836         cppsymbols=`$cat Cppsym.true`
12837         cppsymbols=`echo $cppsymbols`
12838         cppccsymbols="$cppsymbols"
12839 else
12840         if $test -s ccsym.com; then
12841                 echo "Your C compiler and pre-processor define these symbols:"
12842                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
12843                 also='also '
12844                 symbols='ones'
12845                 cppccsymbols=`$cat ccsym.com`
12846                 cppccsymbols=`echo $cppccsymbols`
12847                 $test "$silent" || sleep 1
12848         fi
12849         if $test -s ccsym.cpp; then
12850                 $test "$also" && echo " "
12851                 echo "Your C pre-processor ${also}defines the following symbols:"
12852                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
12853                 also='further '
12854                 cppsymbols=`$cat ccsym.cpp`
12855                 cppsymbols=`echo $cppsymbols`
12856                 $test "$silent" || sleep 1
12857         fi
12858         if $test -s ccsym.own; then
12859                 $test "$also" && echo " "
12860                 echo "Your C compiler ${also}defines the following cpp symbols:"
12861                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
12862                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
12863                 ccsymbols=`$cat ccsym.own`
12864                 ccsymbols=`echo $ccsymbols`
12865                 $test "$silent" || sleep 1
12866         fi
12867 fi
12868 $rm -f ccsym*
12869
12870 : see if this is a termio system
12871 val="$undef"
12872 val2="$undef"
12873 val3="$undef"
12874 if $test `./findhdr termios.h`; then
12875         set tcsetattr i_termios
12876         eval $inlibc
12877         val3="$i_termios"
12878 fi
12879 echo " "
12880 case "$val3" in
12881 "$define") echo "You have POSIX termios.h... good!" >&4;;
12882 *) if ./Cppsym pyr; then
12883                 case "`/bin/universe`" in
12884                 ucb) if $test `./findhdr sgtty.h`; then
12885                                 val2="$define"
12886                                 echo "<sgtty.h> found." >&4
12887                         else
12888                                 echo "System is pyramid with BSD universe."
12889                                 echo "<sgtty.h> not found--you could have problems." >&4
12890                         fi;;
12891                 *) if $test `./findhdr termio.h`; then
12892                                 val="$define"
12893                                 echo "<termio.h> found." >&4
12894                         else
12895                                 echo "System is pyramid with USG universe."
12896                                 echo "<termio.h> not found--you could have problems." >&4
12897                         fi;;
12898                 esac
12899         elif ./usg; then
12900                 if $test `./findhdr termio.h`; then
12901                         echo "<termio.h> found." >&4
12902                         val="$define"
12903                 elif $test `./findhdr sgtty.h`; then
12904                         echo "<sgtty.h> found." >&4
12905                         val2="$define"
12906                 else
12907 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
12908                 fi
12909         else
12910                 if $test `./findhdr sgtty.h`; then
12911                         echo "<sgtty.h> found." >&4
12912                         val2="$define"
12913                 elif $test `./findhdr termio.h`; then
12914                         echo "<termio.h> found." >&4
12915                         val="$define"
12916                 else
12917 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
12918                 fi
12919         fi;;
12920 esac
12921 set i_termio; eval $setvar
12922 val=$val2; set i_sgtty; eval $setvar
12923 val=$val3; set i_termios; eval $setvar
12924
12925 : see if this is a shadow.h system
12926 set shadow.h i_shadow
12927 eval $inhdr
12928
12929 : see if this is a socks.h system
12930 set socks.h i_socks
12931 eval $inhdr
12932
12933 : see if stdarg is available
12934 echo " "
12935 if $test `./findhdr stdarg.h`; then
12936         echo "<stdarg.h> found." >&4
12937         valstd="$define"
12938 else
12939         echo "<stdarg.h> NOT found." >&4
12940         valstd="$undef"
12941 fi
12942
12943 : see if varags is available
12944 echo " "
12945 if $test `./findhdr varargs.h`; then
12946         echo "<varargs.h> found." >&4
12947 else
12948         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
12949 fi
12950
12951 : set up the varargs testing programs
12952 $cat > varargs.c <<EOP
12953 #ifdef I_STDARG
12954 #include <stdarg.h>
12955 #endif
12956 #ifdef I_VARARGS
12957 #include <varargs.h>
12958 #endif
12959
12960 #ifdef I_STDARG
12961 int f(char *p, ...)
12962 #else
12963 int f(va_alist)
12964 va_dcl
12965 #endif
12966 {
12967         va_list ap;
12968 #ifndef I_STDARG
12969         char *p;
12970 #endif
12971 #ifdef I_STDARG
12972         va_start(ap,p);
12973 #else
12974         va_start(ap);
12975         p = va_arg(ap, char *);
12976 #endif
12977         va_end(ap);
12978 }
12979 EOP
12980 $cat > varargs <<EOP
12981 $startsh
12982 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12983         echo "true"
12984 else
12985         echo "false"
12986 fi
12987 $rm -f varargs$_o
12988 EOP
12989 chmod +x varargs
12990
12991 : now check which varargs header should be included
12992 echo " "
12993 i_varhdr=''
12994 case "$valstd" in
12995 "$define")
12996         if `./varargs I_STDARG`; then
12997                 val='stdarg.h'
12998         elif `./varargs I_VARARGS`; then
12999                 val='varargs.h'
13000         fi
13001         ;;
13002 *)
13003         if `./varargs I_VARARGS`; then
13004                 val='varargs.h'
13005         fi
13006         ;;
13007 esac
13008 case "$val" in
13009 '')
13010 echo "I could not find the definition for va_dcl... You have problems..." >&4
13011         val="$undef"; set i_stdarg; eval $setvar
13012         val="$undef"; set i_varargs; eval $setvar
13013         ;;
13014 *) 
13015         set i_varhdr
13016         eval $setvar
13017         case "$i_varhdr" in
13018         stdarg.h)
13019                 val="$define"; set i_stdarg; eval $setvar
13020                 val="$undef"; set i_varargs; eval $setvar
13021                 ;;
13022         varargs.h)
13023                 val="$undef"; set i_stdarg; eval $setvar
13024                 val="$define"; set i_varargs; eval $setvar
13025                 ;;
13026         esac
13027         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13028 esac
13029 $rm -f varargs*
13030
13031 : see if stddef is available
13032 set stddef.h i_stddef
13033 eval $inhdr
13034
13035 : see if sys/access.h is available
13036 set sys/access.h i_sysaccess
13037 eval $inhdr
13038
13039 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
13040 set sys/filio.h i_sysfilio
13041 eval $inhdr
13042 echo " "
13043 if $test `./findhdr sys/ioctl.h`; then
13044         val="$define"
13045         echo '<sys/ioctl.h> found.' >&4
13046 else
13047         val="$undef"
13048         if $test $i_sysfilio = "$define"; then
13049             echo '<sys/ioctl.h> NOT found.' >&4
13050         else
13051                 $test $i_sgtty = "$define" && xxx="sgtty.h"
13052                 $test $i_termio = "$define" && xxx="termio.h"
13053                 $test $i_termios = "$define" && xxx="termios.h"
13054 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
13055         fi
13056 fi
13057 set i_sysioctl
13058 eval $setvar
13059
13060 : see if sys/resource.h has to be included
13061 set sys/resource.h i_sysresrc
13062 eval $inhdr
13063
13064 : see if sys/security.h is available
13065 set sys/security.h i_syssecrt
13066 eval $inhdr
13067
13068 : see if this is a sys/statvfs.h system
13069 set sys/statvfs.h i_sysstatvfs
13070 eval $inhdr
13071
13072 : see if this is a sys/uio.h system
13073 set sys/uio.h i_sysuio
13074 eval $inhdr
13075
13076 echo "Checking to see if your system supports struct iovec..." >&4
13077 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
13078 eval $hasfield
13079 case "$d_iovec_s" in
13080 "$define")      echo "Yup, it does." >&4
13081                 ;;
13082 *)              echo "Nope, it doesn't." >&4
13083                 ;;
13084 esac
13085
13086 : see if this is a sys/un.h system
13087 set sys/un.h i_sysun
13088 eval $inhdr
13089
13090 : see if this is a syswait system
13091 set sys/wait.h i_syswait
13092 eval $inhdr
13093
13094 : see if this is a ustat.h system
13095 set ustat.h i_ustat
13096 eval $inhdr
13097
13098 : see if this is an utime system
13099 set utime.h i_utime
13100 eval $inhdr
13101
13102 : see if this is a values.h system
13103 set values.h i_values
13104 eval $inhdr
13105
13106 : see if this is a vfork system
13107 case "$d_vfork" in
13108 "$define")
13109         set vfork.h i_vfork
13110         eval $inhdr
13111         ;;
13112 *)
13113         i_vfork="$undef"
13114         ;;
13115 esac
13116
13117 : see if gdbm.h is available
13118 set gdbm.h t_gdbm
13119 eval $inhdr
13120 case "$t_gdbm" in
13121 $define)
13122         : see if gdbm_open exists
13123         set gdbm_open d_gdbm_open
13124         eval $inlibc
13125         case "$d_gdbm_open" in
13126         $undef)
13127                 t_gdbm="$undef"
13128                 echo "We won't be including <gdbm.h>"
13129                 ;;
13130         esac
13131         ;;
13132 esac
13133 val="$t_gdbm"
13134 set i_gdbm
13135 eval $setvar
13136
13137 echo " "
13138 echo "Looking for extensions..." >&4
13139 : If we are using the old config.sh, known_extensions may contain
13140 : old or inaccurate or duplicate values.
13141 known_extensions=''
13142 nonxs_extensions=''
13143 : We do not use find because it might not be available.
13144 : We do not just use MANIFEST because the user may have dropped
13145 : some additional extensions into the source tree and expect them
13146 : to be built.
13147
13148 : Function to recursively find available extensions, ignoring DynaLoader
13149 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
13150 find_extensions='
13151     for xxx in *; do
13152        case "$xxx" in
13153            DynaLoader|dynaload) ;;
13154            *)
13155            if $test -f $xxx/$xxx.xs; then
13156                known_extensions="$known_extensions $1$xxx";
13157            elif $test -f $xxx/Makefile.PL; then
13158                nonxs_extensions="$nonxs_extensions $1$xxx";
13159            else
13160                if $test -d $xxx -a $# -lt 10; then
13161                    set $1$xxx/ $*;
13162                    cd $xxx;
13163                    eval $find_extensions;
13164                    cd ..;
13165                    shift;
13166                fi;
13167            fi
13168            ;;
13169        esac;
13170     done'
13171 tdir=`pwd`
13172 cd $rsrc/ext
13173 set X
13174 shift
13175 eval $find_extensions
13176 set X $nonxs_extensions
13177 shift
13178 nonxs_extensions="$*"
13179 set X $known_extensions
13180 shift
13181 known_extensions="$*"
13182 cd $tdir
13183
13184 : Now see which are supported on this system.
13185 avail_ext=''
13186 for xxx in $known_extensions ; do
13187         case "$xxx" in
13188         DB_File|db_file)
13189                 case "$i_db" in
13190                 $define) avail_ext="$avail_ext $xxx" ;;
13191                 esac
13192                 ;;
13193         GDBM_File|gdbm_fil)
13194                 case "$i_gdbm" in 
13195                 $define) avail_ext="$avail_ext $xxx" ;;
13196                 esac
13197                 ;;
13198         NDBM_File|ndbm_fil)
13199                 case "$i_ndbm" in
13200                 $define) avail_ext="$avail_ext $xxx" ;;
13201                 esac
13202                 ;;
13203         ODBM_File|odbm_fil) 
13204                 case "${i_dbm}${i_rpcsvcdbm}" in
13205                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
13206                 esac
13207                 ;;
13208         POSIX|posix)
13209                 case "$useposix" in
13210                 true|define|y) avail_ext="$avail_ext $xxx" ;;
13211                 esac
13212                 ;;
13213         Opcode|opcode)
13214                 case "$useopcode" in
13215                 true|define|y) avail_ext="$avail_ext $xxx" ;;
13216                 esac
13217                 ;;
13218         Socket|socket)
13219                 case "$d_socket" in 
13220                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
13221                 esac
13222                 ;;
13223         Thread|thread)
13224                 case "$usethreads" in 
13225                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
13226                 esac
13227                 ;;
13228         IPC/SysV|ipc/sysv)
13229                 : XXX Do we need a useipcsysv variable here
13230                 case "${d_msg}${d_sem}${d_shm}" in 
13231                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
13232                 esac
13233                 ;;
13234         *)      avail_ext="$avail_ext $xxx"
13235                 ;;
13236         esac
13237 done
13238
13239 set X $avail_ext
13240 shift
13241 avail_ext="$*"
13242
13243 : Now see which nonxs extensions are supported on this system.
13244 : For now assume all are.
13245 nonxs_ext=''
13246 for xxx in $nonxs_extensions ; do
13247         case "$xxx" in
13248         *)      nonxs_ext="$nonxs_ext $xxx"
13249                 ;;
13250         esac
13251 done
13252
13253 set X $nonxs_ext
13254 shift
13255 nonxs_ext="$*"
13256
13257 case $usedl in
13258 $define)
13259         $cat <<EOM
13260 A number of extensions are supplied with $package.  You may choose to
13261 compile these extensions for dynamic loading (the default), compile
13262 them into the $package executable (static loading), or not include
13263 them at all.  Answer "none" to include no extensions.
13264 Note that DynaLoader is always built and need not be mentioned here.
13265
13266 EOM
13267         case "$dynamic_ext" in
13268         '') dflt="$avail_ext" ;;
13269         *)      dflt="$dynamic_ext"
13270                 # Perhaps we are reusing an old out-of-date config.sh.
13271                 case "$hint" in
13272                 previous)
13273                         if test X"$dynamic_ext" != X"$avail_ext"; then
13274                                 $cat <<EOM
13275 NOTICE:  Your previous config.sh list may be incorrect. 
13276 The extensions now available to you are 
13277         ${avail_ext}
13278 but the default list from your previous config.sh is
13279         ${dynamic_ext} 
13280
13281 EOM
13282                         fi
13283                         ;;
13284                 esac
13285                 ;;
13286         esac
13287         case "$dflt" in
13288         '')     dflt=none;;
13289         esac
13290         rp="What extensions do you wish to load dynamically?"
13291         . ./myread
13292         case "$ans" in
13293         none) dynamic_ext=' ' ;;
13294         *) dynamic_ext="$ans" ;;
13295         esac
13296
13297         case "$static_ext" in
13298         '')
13299                 : Exclude those already listed in dynamic linking
13300                 dflt=''
13301                 for xxx in $avail_ext; do
13302                         case " $dynamic_ext " in
13303                         *" $xxx "*) ;;
13304                         *) dflt="$dflt $xxx" ;;
13305                         esac
13306                 done
13307                 set X $dflt
13308                 shift
13309                 dflt="$*"
13310                 ;;
13311         *)  dflt="$static_ext" 
13312                 ;;
13313         esac
13314
13315         case "$dflt" in
13316         '')     dflt=none;;
13317         esac
13318         rp="What extensions do you wish to load statically?"
13319         . ./myread
13320         case "$ans" in
13321         none) static_ext=' ' ;;
13322         *) static_ext="$ans" ;;
13323         esac
13324         ;;
13325 *)
13326         $cat <<EOM
13327 A number of extensions are supplied with $package.  Answer "none" 
13328 to include no extensions. 
13329 Note that DynaLoader is always built and need not be mentioned here.
13330
13331 EOM
13332         case "$static_ext" in
13333         '') dflt="$avail_ext" ;;
13334         *)      dflt="$static_ext"
13335                 # Perhaps we are reusing an old out-of-date config.sh.
13336                 case "$hint" in
13337                 previous)
13338                         if test X"$static_ext" != X"$avail_ext"; then
13339                                 $cat <<EOM
13340 NOTICE:  Your previous config.sh list may be incorrect. 
13341 The extensions now available to you are 
13342         ${avail_ext}
13343 but the default list from your previous config.sh is
13344         ${static_ext} 
13345
13346 EOM
13347                         fi
13348                         ;;
13349                 esac
13350                 ;;
13351         esac
13352         : Exclude those that are not xs extensions
13353         case "$dflt" in
13354         '')     dflt=none;;
13355         esac
13356         rp="What extensions do you wish to include?"
13357         . ./myread
13358         case "$ans" in
13359         none) static_ext=' ' ;;
13360         *) static_ext="$ans" ;;
13361         esac
13362         ;;
13363 esac
13364
13365 set X $dynamic_ext $static_ext $nonxs_ext
13366 shift
13367 extensions="$*"
13368
13369 : Remove build directory name from cppstdin so it can be used from
13370 : either the present location or the final installed location.
13371 echo " "
13372 : Get out of the UU directory to get correct path name.
13373 cd ..
13374 case "$cppstdin" in
13375 `pwd`/cppstdin)
13376         echo "Stripping down cppstdin path name"
13377         cppstdin=cppstdin
13378         ;;
13379 esac
13380 cd UU
13381
13382 : end of configuration questions
13383 echo " "
13384 echo "End of configuration questions."
13385 echo " "
13386
13387 : back to where it started
13388 if test -d ../UU; then
13389         cd ..
13390 fi
13391
13392 : configuration may be patched via a 'config.over' file
13393 if $test -f config.over; then
13394         echo " "
13395         dflt=y
13396         rp='I see a config.over file.  Do you wish to load it?'
13397         . UU/myread
13398         case "$ans" in
13399         n*) echo "OK, I'll ignore it.";;
13400         *)      . ./config.over
13401                 echo "Configuration override changes have been loaded."
13402                 ;;
13403         esac
13404 fi
13405
13406 : in case they want portability, strip down executable paths
13407 case "$d_portable" in
13408 "$define")
13409         echo " "
13410         echo "Stripping down executable paths..." >&4
13411         for file in $loclist $trylist; do
13412                 eval temp=\$$file
13413                 eval $file=`basename $temp`
13414         done
13415         ;;
13416 esac
13417
13418 : create config.sh file
13419 echo " "
13420 echo "Creating config.sh..." >&4
13421 $spitshell <<EOT >config.sh
13422 $startsh
13423 #
13424 # This file was produced by running the Configure script. It holds all the
13425 # definitions figured out by Configure. Should you modify one of these values,
13426 # do not forget to propagate your changes by running "Configure -der". You may
13427 # instead choose to run each of the .SH files by yourself, or "Configure -S".
13428 #
13429
13430 # Package name      : $package
13431 # Source directory  : $src
13432 # Configuration time: $cf_time
13433 # Configured by     : $cf_by
13434 # Target system     : $myuname
13435
13436 Author='$Author'
13437 Date='$Date'
13438 Header='$Header'
13439 Id='$Id'
13440 Locker='$Locker'
13441 Log='$Log'
13442 Mcc='$Mcc'
13443 RCSfile='$RCSfile'
13444 Revision='$Revision'
13445 Source='$Source'
13446 State='$State'
13447 _a='$_a'
13448 _exe='$_exe'
13449 _o='$_o'
13450 afs='$afs'
13451 alignbytes='$alignbytes'
13452 ansi2knr='$ansi2knr'
13453 aphostname='$aphostname'
13454 apiversion='$apiversion'
13455 ar='$ar'
13456 archlib='$archlib'
13457 archlibexp='$archlibexp'
13458 archname64='$archname64'
13459 archname='$archname'
13460 archobjs='$archobjs'
13461 awk='$awk'
13462 baserev='$baserev'
13463 bash='$bash'
13464 bin='$bin'
13465 bincompat5005='$bincompat5005'
13466 binexp='$binexp'
13467 bison='$bison'
13468 byacc='$byacc'
13469 byteorder='$byteorder'
13470 c='$c'
13471 castflags='$castflags'
13472 cat='$cat'
13473 cc='$cc'
13474 cccdlflags='$cccdlflags'
13475 ccdlflags='$ccdlflags'
13476 ccflags='$ccflags'
13477 ccsymbols='$ccsymbols'
13478 cf_by='$cf_by'
13479 cf_email='$cf_email'
13480 cf_time='$cf_time'
13481 chgrp='$chgrp'
13482 chmod='$chmod'
13483 chown='$chown'
13484 clocktype='$clocktype'
13485 comm='$comm'
13486 compress='$compress'
13487 contains='$contains'
13488 cp='$cp'
13489 cpio='$cpio'
13490 cpp='$cpp'
13491 cpp_stuff='$cpp_stuff'
13492 cppccsymbols='$cppccsymbols'
13493 cppflags='$cppflags'
13494 cpplast='$cpplast'
13495 cppminus='$cppminus'
13496 cpprun='$cpprun'
13497 cppstdin='$cppstdin'
13498 cppsymbols='$cppsymbols'
13499 crosscompile='$crosscompile'
13500 cryptlib='$cryptlib'
13501 csh='$csh'
13502 d_Gconvert='$d_Gconvert'
13503 d_PRIEldbl='$d_PRIEldbl'
13504 d_PRIFldbl='$d_PRIFldbl'
13505 d_PRIGldbl='$d_PRIGldbl'
13506 d_PRIX64='$d_PRIX64'
13507 d_PRId64='$d_PRId64'
13508 d_PRIeldbl='$d_PRIeldbl'
13509 d_PRIfldbl='$d_PRIfldbl'
13510 d_PRIgldbl='$d_PRIgldbl'
13511 d_PRIi64='$d_PRIi64'
13512 d_PRIo64='$d_PRIo64'
13513 d_PRIu64='$d_PRIu64'
13514 d_PRIx64='$d_PRIx64'
13515 d_access='$d_access'
13516 d_accessx='$d_accessx'
13517 d_alarm='$d_alarm'
13518 d_archlib='$d_archlib'
13519 d_atolf='$d_atolf'
13520 d_atoll='$d_atoll'
13521 d_attribut='$d_attribut'
13522 d_bcmp='$d_bcmp'
13523 d_bcopy='$d_bcopy'
13524 d_bincompat5005='$d_bincompat5005'
13525 d_bsd='$d_bsd'
13526 d_bsdgetpgrp='$d_bsdgetpgrp'
13527 d_bsdsetpgrp='$d_bsdsetpgrp'
13528 d_bzero='$d_bzero'
13529 d_casti32='$d_casti32'
13530 d_castneg='$d_castneg'
13531 d_charvspr='$d_charvspr'
13532 d_chown='$d_chown'
13533 d_chroot='$d_chroot'
13534 d_chsize='$d_chsize'
13535 d_closedir='$d_closedir'
13536 d_const='$d_const'
13537 d_crypt='$d_crypt'
13538 d_csh='$d_csh'
13539 d_cuserid='$d_cuserid'
13540 d_dbl_dig='$d_dbl_dig'
13541 d_difftime='$d_difftime'
13542 d_dirnamlen='$d_dirnamlen'
13543 d_dlerror='$d_dlerror'
13544 d_dlopen='$d_dlopen'
13545 d_dlsymun='$d_dlsymun'
13546 d_dosuid='$d_dosuid'
13547 d_drand48proto='$d_drand48proto'
13548 d_dup2='$d_dup2'
13549 d_eaccess='$d_eaccess'
13550 d_endgrent='$d_endgrent'
13551 d_endhent='$d_endhent'
13552 d_endnent='$d_endnent'
13553 d_endpent='$d_endpent'
13554 d_endpwent='$d_endpwent'
13555 d_endsent='$d_endsent'
13556 d_endspent='$d_endspent'
13557 d_eofnblk='$d_eofnblk'
13558 d_eunice='$d_eunice'
13559 d_fchmod='$d_fchmod'
13560 d_fchown='$d_fchown'
13561 d_fcntl='$d_fcntl'
13562 d_fd_macros='$d_fd_macros'
13563 d_fd_set='$d_fd_set'
13564 d_fds_bits='$d_fds_bits'
13565 d_fgetpos='$d_fgetpos'
13566 d_flexfnam='$d_flexfnam'
13567 d_flock='$d_flock'
13568 d_fork='$d_fork'
13569 d_fpathconf='$d_fpathconf'
13570 d_fpos64_t='$d_fpos64_t'
13571 d_fs_data_s='$d_fs_data_s'
13572 d_fseeko='$d_fseeko'
13573 d_fsetpos='$d_fsetpos'
13574 d_fstatfs='$d_fstatfs'
13575 d_fstatvfs='$d_fstatvfs'
13576 d_ftello='$d_ftello'
13577 d_ftime='$d_ftime'
13578 d_getgrent='$d_getgrent'
13579 d_getgrps='$d_getgrps'
13580 d_gethbyaddr='$d_gethbyaddr'
13581 d_gethbyname='$d_gethbyname'
13582 d_gethent='$d_gethent'
13583 d_gethname='$d_gethname'
13584 d_gethostprotos='$d_gethostprotos'
13585 d_getlogin='$d_getlogin'
13586 d_getmnt='$d_getmnt'
13587 d_getmntent='$d_getmntent'
13588 d_getnbyaddr='$d_getnbyaddr'
13589 d_getnbyname='$d_getnbyname'
13590 d_getnent='$d_getnent'
13591 d_getnetprotos='$d_getnetprotos'
13592 d_getpbyname='$d_getpbyname'
13593 d_getpbynumber='$d_getpbynumber'
13594 d_getpent='$d_getpent'
13595 d_getpgid='$d_getpgid'
13596 d_getpgrp2='$d_getpgrp2'
13597 d_getpgrp='$d_getpgrp'
13598 d_getppid='$d_getppid'
13599 d_getprior='$d_getprior'
13600 d_getprotoprotos='$d_getprotoprotos'
13601 d_getpwent='$d_getpwent'
13602 d_getsbyname='$d_getsbyname'
13603 d_getsbyport='$d_getsbyport'
13604 d_getsent='$d_getsent'
13605 d_getservprotos='$d_getservprotos'
13606 d_getspent='$d_getspent'
13607 d_getspnam='$d_getspnam'
13608 d_gettimeod='$d_gettimeod'
13609 d_gnulibc='$d_gnulibc'
13610 d_grpasswd='$d_grpasswd'
13611 d_hasmntopt='$d_hasmntopt'
13612 d_htonl='$d_htonl'
13613 d_index='$d_index'
13614 d_inetaton='$d_inetaton'
13615 d_int64t='$d_int64t'
13616 d_iovec_s='$d_iovec_s'
13617 d_isascii='$d_isascii'
13618 d_killpg='$d_killpg'
13619 d_lchown='$d_lchown'
13620 d_ldbl_dig='$d_ldbl_dig'
13621 d_link='$d_link'
13622 d_llseek='$d_llseek'
13623 d_locconv='$d_locconv'
13624 d_lockf='$d_lockf'
13625 d_longdbl='$d_longdbl'
13626 d_longlong='$d_longlong'
13627 d_lstat='$d_lstat'
13628 d_mblen='$d_mblen'
13629 d_mbstowcs='$d_mbstowcs'
13630 d_mbtowc='$d_mbtowc'
13631 d_memchr='$d_memchr'
13632 d_memcmp='$d_memcmp'
13633 d_memcpy='$d_memcpy'
13634 d_memmove='$d_memmove'
13635 d_memset='$d_memset'
13636 d_mkdir='$d_mkdir'
13637 d_mkfifo='$d_mkfifo'
13638 d_mktime='$d_mktime'
13639 d_msg='$d_msg'
13640 d_msg_ctrunc='$d_msg_ctrunc'
13641 d_msg_dontroute='$d_msg_dontroute'
13642 d_msg_oob='$d_msg_oob'
13643 d_msg_peek='$d_msg_peek'
13644 d_msg_proxy='$d_msg_proxy'
13645 d_msgctl='$d_msgctl'
13646 d_msgget='$d_msgget'
13647 d_msgrcv='$d_msgrcv'
13648 d_msgsnd='$d_msgsnd'
13649 d_mymalloc='$d_mymalloc'
13650 d_nice='$d_nice'
13651 d_off64_t='$d_off64_t'
13652 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
13653 d_oldpthreads='$d_oldpthreads'
13654 d_oldsock='$d_oldsock'
13655 d_open3='$d_open3'
13656 d_pathconf='$d_pathconf'
13657 d_pause='$d_pause'
13658 d_phostname='$d_phostname'
13659 d_pipe='$d_pipe'
13660 d_poll='$d_poll'
13661 d_portable='$d_portable'
13662 d_pthread_yield='$d_pthread_yield'
13663 d_pwage='$d_pwage'
13664 d_pwchange='$d_pwchange'
13665 d_pwclass='$d_pwclass'
13666 d_pwcomment='$d_pwcomment'
13667 d_pwexpire='$d_pwexpire'
13668 d_pwgecos='$d_pwgecos'
13669 d_pwpasswd='$d_pwpasswd'
13670 d_pwquota='$d_pwquota'
13671 d_readdir='$d_readdir'
13672 d_readlink='$d_readlink'
13673 d_rename='$d_rename'
13674 d_rewinddir='$d_rewinddir'
13675 d_rmdir='$d_rmdir'
13676 d_safebcpy='$d_safebcpy'
13677 d_safemcpy='$d_safemcpy'
13678 d_sanemcmp='$d_sanemcmp'
13679 d_sched_yield='$d_sched_yield'
13680 d_scm_rights='$d_scm_rights'
13681 d_seekdir='$d_seekdir'
13682 d_select='$d_select'
13683 d_sem='$d_sem'
13684 d_semctl='$d_semctl'
13685 d_semctl_semid_ds='$d_semctl_semid_ds'
13686 d_semctl_semun='$d_semctl_semun'
13687 d_semget='$d_semget'
13688 d_semop='$d_semop'
13689 d_setegid='$d_setegid'
13690 d_seteuid='$d_seteuid'
13691 d_setgrent='$d_setgrent'
13692 d_setgrps='$d_setgrps'
13693 d_sethent='$d_sethent'
13694 d_setlinebuf='$d_setlinebuf'
13695 d_setlocale='$d_setlocale'
13696 d_setnent='$d_setnent'
13697 d_setpent='$d_setpent'
13698 d_setpgid='$d_setpgid'
13699 d_setpgrp2='$d_setpgrp2'
13700 d_setpgrp='$d_setpgrp'
13701 d_setprior='$d_setprior'
13702 d_setpwent='$d_setpwent'
13703 d_setregid='$d_setregid'
13704 d_setresgid='$d_setresgid'
13705 d_setresuid='$d_setresuid'
13706 d_setreuid='$d_setreuid'
13707 d_setrgid='$d_setrgid'
13708 d_setruid='$d_setruid'
13709 d_setsent='$d_setsent'
13710 d_setsid='$d_setsid'
13711 d_setspent='$d_setspent'
13712 d_setvbuf='$d_setvbuf'
13713 d_sfio='$d_sfio'
13714 d_shm='$d_shm'
13715 d_shmat='$d_shmat'
13716 d_shmatprototype='$d_shmatprototype'
13717 d_shmctl='$d_shmctl'
13718 d_shmdt='$d_shmdt'
13719 d_shmget='$d_shmget'
13720 d_sigaction='$d_sigaction'
13721 d_sigsetjmp='$d_sigsetjmp'
13722 d_socket='$d_socket'
13723 d_sockpair='$d_sockpair'
13724 d_sqrtl='$d_sqrtl'
13725 d_statblks='$d_statblks'
13726 d_statfs_f_flags='$d_statfs_f_flags'
13727 d_statfs_s='$d_statfs_s'
13728 d_statvfs='$d_statvfs'
13729 d_stdio_cnt_lval='$d_stdio_cnt_lval'
13730 d_stdio_ptr_lval='$d_stdio_ptr_lval'
13731 d_stdio_stream_array='$d_stdio_stream_array'
13732 d_stdiobase='$d_stdiobase'
13733 d_stdstdio='$d_stdstdio'
13734 d_strchr='$d_strchr'
13735 d_strcoll='$d_strcoll'
13736 d_strctcpy='$d_strctcpy'
13737 d_strerrm='$d_strerrm'
13738 d_strerror='$d_strerror'
13739 d_strtod='$d_strtod'
13740 d_strtol='$d_strtol'
13741 d_strtoul='$d_strtoul'
13742 d_strtoull='$d_strtoull'
13743 d_strxfrm='$d_strxfrm'
13744 d_suidsafe='$d_suidsafe'
13745 d_symlink='$d_symlink'
13746 d_syscall='$d_syscall'
13747 d_sysconf='$d_sysconf'
13748 d_sysernlst='$d_sysernlst'
13749 d_syserrlst='$d_syserrlst'
13750 d_system='$d_system'
13751 d_tcgetpgrp='$d_tcgetpgrp'
13752 d_tcsetpgrp='$d_tcsetpgrp'
13753 d_telldir='$d_telldir'
13754 d_telldirproto='$d_telldirproto'
13755 d_time='$d_time'
13756 d_times='$d_times'
13757 d_truncate='$d_truncate'
13758 d_tzname='$d_tzname'
13759 d_umask='$d_umask'
13760 d_uname='$d_uname'
13761 d_union_semun='$d_union_semun'
13762 d_ustat='$d_ustat'
13763 d_vendorbin='$d_vendorbin'
13764 d_vendorlib='$d_vendorlib'
13765 d_vfork='$d_vfork'
13766 d_void_closedir='$d_void_closedir'
13767 d_voidsig='$d_voidsig'
13768 d_voidtty='$d_voidtty'
13769 d_volatile='$d_volatile'
13770 d_vprintf='$d_vprintf'
13771 d_wait4='$d_wait4'
13772 d_waitpid='$d_waitpid'
13773 d_wcstombs='$d_wcstombs'
13774 d_wctomb='$d_wctomb'
13775 d_xenix='$d_xenix'
13776 date='$date'
13777 db_hashtype='$db_hashtype'
13778 db_prefixtype='$db_prefixtype'
13779 defvoidused='$defvoidused'
13780 direntrytype='$direntrytype'
13781 dlext='$dlext'
13782 dlsrc='$dlsrc'
13783 doublesize='$doublesize'
13784 drand01='$drand01'
13785 dynamic_ext='$dynamic_ext'
13786 eagain='$eagain'
13787 ebcdic='$ebcdic'
13788 echo='$echo'
13789 egrep='$egrep'
13790 emacs='$emacs'
13791 eunicefix='$eunicefix'
13792 exe_ext='$exe_ext'
13793 expr='$expr'
13794 extensions='$extensions'
13795 fflushNULL='$fflushNULL'
13796 fflushall='$fflushall'
13797 find='$find'
13798 firstmakefile='$firstmakefile'
13799 flex='$flex'
13800 fpostype='$fpostype'
13801 freetype='$freetype'
13802 full_ar='$full_ar'
13803 full_csh='$full_csh'
13804 full_sed='$full_sed'
13805 gccversion='$gccversion'
13806 gidtype='$gidtype'
13807 glibpth='$glibpth'
13808 grep='$grep'
13809 groupcat='$groupcat'
13810 groupstype='$groupstype'
13811 gzip='$gzip'
13812 h_fcntl='$h_fcntl'
13813 h_sysfile='$h_sysfile'
13814 hint='$hint'
13815 hostcat='$hostcat'
13816 huge='$huge'
13817 i_arpainet='$i_arpainet'
13818 i_bsdioctl='$i_bsdioctl'
13819 i_db='$i_db'
13820 i_dbm='$i_dbm'
13821 i_dirent='$i_dirent'
13822 i_dld='$i_dld'
13823 i_dlfcn='$i_dlfcn'
13824 i_fcntl='$i_fcntl'
13825 i_float='$i_float'
13826 i_gdbm='$i_gdbm'
13827 i_grp='$i_grp'
13828 i_inttypes='$i_inttypes'
13829 i_limits='$i_limits'
13830 i_locale='$i_locale'
13831 i_machcthr='$i_machcthr'
13832 i_malloc='$i_malloc'
13833 i_math='$i_math'
13834 i_memory='$i_memory'
13835 i_mntent='$i_mntent'
13836 i_ndbm='$i_ndbm'
13837 i_netdb='$i_netdb'
13838 i_neterrno='$i_neterrno'
13839 i_netinettcp='$i_netinettcp'
13840 i_niin='$i_niin'
13841 i_poll='$i_poll'
13842 i_pthread='$i_pthread'
13843 i_pwd='$i_pwd'
13844 i_rpcsvcdbm='$i_rpcsvcdbm'
13845 i_sfio='$i_sfio'
13846 i_sgtty='$i_sgtty'
13847 i_shadow='$i_shadow'
13848 i_socks='$i_socks'
13849 i_stdarg='$i_stdarg'
13850 i_stddef='$i_stddef'
13851 i_stdlib='$i_stdlib'
13852 i_string='$i_string'
13853 i_sysaccess='$i_sysaccess'
13854 i_sysdir='$i_sysdir'
13855 i_sysfile='$i_sysfile'
13856 i_sysfilio='$i_sysfilio'
13857 i_sysin='$i_sysin'
13858 i_sysioctl='$i_sysioctl'
13859 i_sysmount='$i_sysmount'
13860 i_sysndir='$i_sysndir'
13861 i_sysparam='$i_sysparam'
13862 i_sysresrc='$i_sysresrc'
13863 i_syssecrt='$i_syssecrt'
13864 i_sysselct='$i_sysselct'
13865 i_syssockio='$i_syssockio'
13866 i_sysstat='$i_sysstat'
13867 i_sysstatfs='$i_sysstatfs'
13868 i_sysstatvfs='$i_sysstatvfs'
13869 i_systime='$i_systime'
13870 i_systimek='$i_systimek'
13871 i_systimes='$i_systimes'
13872 i_systypes='$i_systypes'
13873 i_sysuio='$i_sysuio'
13874 i_sysun='$i_sysun'
13875 i_sysvfs='$i_sysvfs'
13876 i_syswait='$i_syswait'
13877 i_termio='$i_termio'
13878 i_termios='$i_termios'
13879 i_time='$i_time'
13880 i_unistd='$i_unistd'
13881 i_ustat='$i_ustat'
13882 i_utime='$i_utime'
13883 i_values='$i_values'
13884 i_varargs='$i_varargs'
13885 i_varhdr='$i_varhdr'
13886 i_vfork='$i_vfork'
13887 ignore_versioned_solibs='$ignore_versioned_solibs'
13888 incpath='$incpath'
13889 inews='$inews'
13890 installarchlib='$installarchlib'
13891 installbin='$installbin'
13892 installman1dir='$installman1dir'
13893 installman3dir='$installman3dir'
13894 installprefix='$installprefix'
13895 installprefixexp='$installprefixexp'
13896 installprivlib='$installprivlib'
13897 installscript='$installscript'
13898 installsitearch='$installsitearch'
13899 installsitebin='$installsitebin'
13900 installsitelib='$installsitelib'
13901 installstyle='$installstyle'
13902 installusrbinperl='$installusrbinperl'
13903 installvendorbin='$installvendorbin'
13904 installvendorlib='$installvendorlib'
13905 intsize='$intsize'
13906 known_extensions='$known_extensions'
13907 ksh='$ksh'
13908 large='$large'
13909 ld='$ld'
13910 lddlflags='$lddlflags'
13911 ldflags='$ldflags'
13912 ldlibpthname='$ldlibpthname'
13913 less='$less'
13914 lib_ext='$lib_ext'
13915 libc='$libc'
13916 libperl='$libperl'
13917 libpth='$libpth'
13918 libs='$libs'
13919 libswanted='$libswanted'
13920 line='$line'
13921 lint='$lint'
13922 lkflags='$lkflags'
13923 ln='$ln'
13924 lns='$lns'
13925 locincpth='$locincpth'
13926 loclibpth='$loclibpth'
13927 longdblsize='$longdblsize'
13928 longlongsize='$longlongsize'
13929 longsize='$longsize'
13930 lp='$lp'
13931 lpr='$lpr'
13932 ls='$ls'
13933 lseeksize='$lseeksize'
13934 lseektype='$lseektype'
13935 mail='$mail'
13936 mailx='$mailx'
13937 make='$make'
13938 make_set_make='$make_set_make'
13939 mallocobj='$mallocobj'
13940 mallocsrc='$mallocsrc'
13941 malloctype='$malloctype'
13942 man1dir='$man1dir'
13943 man1direxp='$man1direxp'
13944 man1ext='$man1ext'
13945 man3dir='$man3dir'
13946 man3direxp='$man3direxp'
13947 man3ext='$man3ext'
13948 medium='$medium'
13949 mips_type='$mips_type'
13950 mkdir='$mkdir'
13951 models='$models'
13952 modetype='$modetype'
13953 more='$more'
13954 multiarch='$multiarch'
13955 mv='$mv'
13956 myarchname='$myarchname'
13957 mydomain='$mydomain'
13958 myhostname='$myhostname'
13959 myuname='$myuname'
13960 n='$n'
13961 netdb_hlen_type='$netdb_hlen_type'
13962 netdb_host_type='$netdb_host_type'
13963 netdb_name_type='$netdb_name_type'
13964 netdb_net_type='$netdb_net_type'
13965 nm='$nm'
13966 nm_opt='$nm_opt'
13967 nm_so_opt='$nm_so_opt'
13968 nonxs_ext='$nonxs_ext'
13969 nroff='$nroff'
13970 o_nonblock='$o_nonblock'
13971 obj_ext='$obj_ext'
13972 old_pthread_create_joinable='$old_pthread_create_joinable'
13973 optimize='$optimize'
13974 orderlib='$orderlib'
13975 osname='$osname'
13976 osvers='$osvers'
13977 package='$package'
13978 pager='$pager'
13979 passcat='$passcat'
13980 patchlevel='$patchlevel'
13981 path_sep='$path_sep'
13982 perl='$perl'
13983 perladmin='$perladmin'
13984 perlpath='$perlpath'
13985 pg='$pg'
13986 phostname='$phostname'
13987 pidtype='$pidtype'
13988 plibpth='$plibpth'
13989 pm_apiversion='$pm_apiversion'
13990 pmake='$pmake'
13991 pr='$pr'
13992 prefix='$prefix'
13993 prefixexp='$prefixexp'
13994 privlib='$privlib'
13995 privlibexp='$privlibexp'
13996 prototype='$prototype'
13997 ptrsize='$ptrsize'
13998 randbits='$randbits'
13999 randfunc='$randfunc'
14000 randseedtype='$randseedtype'
14001 ranlib='$ranlib'
14002 rd_nodata='$rd_nodata'
14003 rm='$rm'
14004 rmail='$rmail'
14005 runnm='$runnm'
14006 sPRIEldbl='$sPRIEldbl'
14007 sPRIFldbl='$sPRIFldbl'
14008 sPRIGldbl='$sPRIGldbl'
14009 sPRIX64='$sPRIX64'
14010 sPRId64='$sPRId64'
14011 sPRIeldbl='$sPRIeldbl'
14012 sPRIfldbl='$sPRIfldbl'
14013 sPRIgldbl='$sPRIgldbl'
14014 sPRIi64='$sPRIi64'
14015 sPRIo64='$sPRIo64'
14016 sPRIu64='$sPRIu64'
14017 sPRIx64='$sPRIx64'
14018 sched_yield='$sched_yield'
14019 scriptdir='$scriptdir'
14020 scriptdirexp='$scriptdirexp'
14021 sed='$sed'
14022 seedfunc='$seedfunc'
14023 selectminbits='$selectminbits'
14024 selecttype='$selecttype'
14025 sendmail='$sendmail'
14026 sh='$sh'
14027 shar='$shar'
14028 sharpbang='$sharpbang'
14029 shmattype='$shmattype'
14030 shortsize='$shortsize'
14031 shrpenv='$shrpenv'
14032 shsharp='$shsharp'
14033 sig_count='$sig_count'
14034 sig_name='$sig_name'
14035 sig_name_init='$sig_name_init'
14036 sig_num='$sig_num'
14037 sig_num_init='$sig_num_init'
14038 signal_t='$signal_t'
14039 sitearch='$sitearch'
14040 sitearchexp='$sitearchexp'
14041 sitebin='$sitebin'
14042 sitebinexp='$sitebinexp'
14043 sitelib='$sitelib'
14044 sitelibexp='$sitelibexp'
14045 siteprefix='$siteprefix'
14046 siteprefixexp='$siteprefixexp'
14047 sizetype='$sizetype'
14048 sleep='$sleep'
14049 smail='$smail'
14050 small='$small'
14051 so='$so'
14052 sockethdr='$sockethdr'
14053 socketlib='$socketlib'
14054 sort='$sort'
14055 spackage='$spackage'
14056 spitshell='$spitshell'
14057 split='$split'
14058 src='$src'
14059 ssizetype='$ssizetype'
14060 startperl='$startperl'
14061 startsh='$startsh'
14062 static_ext='$static_ext'
14063 stdchar='$stdchar'
14064 stdio_base='$stdio_base'
14065 stdio_bufsiz='$stdio_bufsiz'
14066 stdio_cnt='$stdio_cnt'
14067 stdio_filbuf='$stdio_filbuf'
14068 stdio_ptr='$stdio_ptr'
14069 stdio_stream_array='$stdio_stream_array'
14070 strings='$strings'
14071 submit='$submit'
14072 subversion='$subversion'
14073 sysman='$sysman'
14074 tail='$tail'
14075 tar='$tar'
14076 tbl='$tbl'
14077 tee='$tee'
14078 test='$test'
14079 timeincl='$timeincl'
14080 timetype='$timetype'
14081 touch='$touch'
14082 tr='$tr'
14083 trnl='$trnl'
14084 troff='$troff'
14085 uidsign='$uidsign'
14086 uidtype='$uidtype'
14087 uname='$uname'
14088 uniq='$uniq'
14089 use64bits='$use64bits'
14090 usedl='$usedl'
14091 uselargefiles='$uselargefiles'
14092 uselongdouble='$uselongdouble'
14093 usemorebits='$usemorebits'
14094 usemultiplicity='$usemultiplicity'
14095 usemymalloc='$usemymalloc'
14096 usenm='$usenm'
14097 useopcode='$useopcode'
14098 useperlio='$useperlio'
14099 useposix='$useposix'
14100 usesfio='$usesfio'
14101 useshrplib='$useshrplib'
14102 usesocks='$usesocks'
14103 usethreads='$usethreads'
14104 usevendorprefix='$usevendorprefix'
14105 usevfork='$usevfork'
14106 usrinc='$usrinc'
14107 uuname='$uuname'
14108 vendorbin='$vendorbin'
14109 vendorbinexp='$vendorbinexp'
14110 vendorlib='$vendorlib'
14111 vendorlibexp='$vendorlibexp'
14112 vendorprefix='$vendorprefix'
14113 vendorprefixexp='$vendorprefixexp'
14114 version='$version'
14115 vi='$vi'
14116 voidflags='$voidflags'
14117 xlibpth='$xlibpth'
14118 xs_apiversion='$xs_apiversion'
14119 zcat='$zcat'
14120 zip='$zip'
14121 EOT
14122
14123 : Add in command line options if available
14124 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
14125
14126 : add special variables
14127 $test -f $src/patchlevel.h && \
14128 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
14129 echo "CONFIGDOTSH=true" >>config.sh
14130
14131 : propagate old symbols
14132 if $test -f UU/config.sh; then
14133         <UU/config.sh sort | uniq >UU/oldconfig.sh
14134         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
14135         sort | uniq -u >UU/oldsyms
14136         set X `cat UU/oldsyms`
14137         shift
14138         case $# in
14139         0) ;;
14140         *)
14141                 cat <<EOM
14142 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
14143 EOM
14144                 echo "# Variables propagated from previous config.sh file." >>config.sh
14145                 for sym in `cat UU/oldsyms`; do
14146                         echo "    Propagating $hint variable "'$'"$sym..."
14147                         eval 'tmp="$'"${sym}"'"'
14148                         echo "$tmp" | \
14149                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
14150                 done
14151                 ;;
14152         esac
14153 fi
14154
14155 : Finish up by extracting the .SH files
14156 case "$alldone" in
14157 exit)
14158         $rm -rf UU
14159         echo "Done."
14160         exit 0
14161         ;;
14162 cont)
14163         ;;
14164 '')
14165         dflt=''
14166         nostick=true
14167         $cat <<EOM
14168
14169 If you'd like to make any changes to the config.sh file before I begin
14170 to configure things, do it as a shell escape now (e.g. !vi config.sh).
14171
14172 EOM
14173         rp="Press return or use a shell escape to edit config.sh:"
14174         . UU/myread
14175         nostick=''
14176         case "$ans" in
14177         '') ;;
14178         *) : in case they cannot read
14179                 sh 1>&4 -c "$ans";;
14180         esac
14181         ;;
14182 esac
14183
14184 : if this fails, just run all the .SH files by hand
14185 . ./config.sh
14186
14187 echo " "
14188 exec 1>&4
14189 . ./UU/extract
14190
14191 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
14192         dflt=y
14193         case "$silent" in
14194         true) ;;
14195         *)
14196                 $cat <<EOM
14197
14198 Now you need to generate make dependencies by running "$make depend".
14199 You might prefer to run it in background: "$make depend > makedepend.out &"
14200 It can take a while, so you might not want to run it right now.
14201
14202 EOM
14203                 ;;
14204         esac
14205         rp="Run $make depend now?"
14206         . UU/myread
14207         case "$ans" in
14208         y*)
14209                 $make depend && echo "Now you must run a $make."
14210                 ;;
14211         *)
14212                 echo "You must run '$make depend' then '$make'."
14213                 ;;
14214         esac
14215 elif test -f [Mm]akefile; then
14216         echo " "
14217         echo "Now you must run a $make."
14218 else
14219         echo "Done."
14220 fi
14221
14222 if $test -f Policy.sh; then
14223     $cat <<EOM
14224
14225 If you compile $package on a different machine or from a different object
14226 directory, copy the Policy.sh file from this object directory to the
14227 new one before you run Configure -- this will help you with most of
14228 the policy defaults.
14229
14230 EOM
14231 fi
14232 if $test -f config.msg; then
14233     echo "Hmm.  I also noted the following information while running:"
14234     echo " "
14235     $cat config.msg >&4
14236     $rm -f config.msg
14237 fi
14238 $rm -f kit*isdone ark*isdone
14239 $rm -rf UU
14240
14241 : End of Configure
14242